### 请勿随意分发和转售 |微信小程序|安卓|IOS|H5|Vue2| |:---:|:---:|:---:|:---:|:---:| |√|√|√|√|√| ### 一、项目介绍 1. 项目使用uniapp开发,适配微信小程序、安卓、IOS和H5,其他平台未测试。 2. UI框架使用uView2.0。 3. 组件使用easycom模式,只要组件安装在项目的components目录下或uni_modules目录下,并符合components/组件名称/组件名称.vue目录结构。就可以不用引用、注册,直接在页面中使用。 4. 开发工具为Hbuilder3.3以上版本。 5. 近期在开发项目升级过程中会逐步优化项目结构,由于旧代码比较庞大需要很多时间优化,所以项目结构目录这块暂时没有更新,希望谅解。 ### 二、项目结构 ``` ├─apis // 接口管理 │ ├─modules // api模块化目录 │ │ └─device.js // 设备接口地址 │ ├─http.api.js // 接口定义文件 │ └─http.interceptor // 拦截器 ├─common // 公共文件 │ ├─mqttTool // mqtt工具 │ ├─extend // 扩展原型方法 │ ├─filters // 全局过滤器 │ └─tools // 全局公共方法 ├─components // 项目组件库,组件放置这里,其他页面可直接使用 │ ├─cl-test // easycom测试组件 │ ├─cl-icon // iconfont图标组件 │ ├─deviceMonitor // 设备实时监测组件 │ └─other... // 使用的其他组件等等 ├─pages // 页面目录 │ ├─public // 公共页面 │ └─tarbar // 底部导航栏页面 │ ├─home // 首页的所有页面 │ ├─scene // 场景联动页面 │ ├─trend // 新闻动态页面 │ └─user // 个人中心页面 ├─static // 图片目录 ├─store // vuex │ ├─$u.mixin // store全局混入方法 │ └─index // vuex 组件全局状态管理 ├─uni_modules // 插件市场插件目录 │ └─uview-ui // uview-ui ├─env.config.js // 接口地址和mqtt地址配置文件 ├─mainfest.json // 各个平台的配置信息 ``` ### 三、基本配置 1. 打开根目录的mainfest.json文件, 基础配置中 AppId改为自己的 [uni-app应用标识](https://ask.dcloud.net.cn/article/35907),微信小程序配置中,AppId改为自己的 [微信小程序AppId](https://mp.weixin.qq.com/) 。 2. 打开根目录的 `env.config.js` 文件,修改服务端接口地址和emqx消息服务器地址 ``` // H5端开发和生产环境协议 let protocalDev = "ws://"; let protocalProd = "wss://"; // 条件编译,微信端和App端使用wxs协议 // #ifdef MP-WEIXIN || APP-PLUS protocalDev = 'wxs://'; protocalProd = 'wxs://'; // #endif const CONFIG = { // 开发环境配置 development: { baseUrl: 'http://localhost:8080', mqttServer: protocalDev + 'localhost:8083/mqtt', }, // 生产环境配置 production: { baseUrl: 'https://domain.com/prod-api/', mqttServer: protocalProd + 'domain.com/mqtt', } } ``` * 小程序调用接口必须使用https协议,可以去阿里、腾讯、百度等平台申请免费证书,Nginx配置https和wss参考 [官网文档](https://fastbee.cn/doc/pages/applet/) * H5端使用ws(未加密)或者wss(加密)协议 * 微信小程序和App端使用wxs协议,同时需要配置域名,App端使用wss连接失败,可能跟mqtt.js版本有关系。 ### 四、Mqtt协议 |协议 |一般使用端口 |说明 | |:-----|:----------|:------------------| | mqtt | 1883端口 | 未加密 TCP 连接,硬件端和服务端使用| | mqtts| 8883端口 | 加密 TCP 连接,硬件端和服务端使用| | ws | 8083端口 | 未加密 WebSocket 连接,前端和移动端使用| | wss | 8084端口 | 加密 WebSocket 连接,前端和移动端使用,通过代理访问8083端口| | wxs | 8084端口 | 微信小程序连接,微信小程序端使用,通过代理访问8083端口| | alis | 8084端口 | 支付宝小程序连接,支付宝小程序端使用,通过代理访问8083端口| ### 五、使用说明 1. 项目使用uChart图表,部分图标启用canvas2d模式,解决小程序层级过高及拖拽卡顿问题。微信开发工具中图表显示会有问题,发布后正常显示。 2. 微信小程序支持多设备配网,mainfest.json微信小程序配置中要启用位置接口才能使用。微信小程序端配网需要使用真机调试。 3. 微信小程序视频需要向微信官方申请权限,Android 和 IOS 需要用Wap2App 方式打包,播放器暂时不支持原生App。 4. 项目天气预报使用的是心知天气API需要自行前往官网申请(小程序配置心知天气域名),也可以使用其他天气API,但需要调整一下weather的数据(已自定义组件),由于某些浏览器原因,为保证H5正常运行,可以申请腾讯地图key来定位。 ### 六、设备配网 / 扫码添加设备 1. 有两种情况:第一种是系统不存在该设备,配网或扫码后会新建设备到用户账号下;第二种是系统已存在该设备,配网或扫码后是关联设备到用户账号下。 2. 设备配网:通过配网可以把wifi信息配置到设备,以及新建设备到用户账号下。目前H5、微信小程序、安卓和IOS都支持单设备配网,多设备配网只有微信小程序支持。单设备配网时用户手动切换手机wifi为设备热点,然后进行配网。 3. 扫码添加设备:用户通过扫码新建设备到自己账号下。系统中的每个设备都有二维码,在设备详情摘要中查看。二维码固定为下面JSON格式: ``` # type固定值为1,代表扫码添加设备 # type、deviceNumber、productId 为必填项,productName为可选项 # 如果系统中还不存在该设备,设备编号使用一个唯一性编码即可,不能包含特殊字符 { "type": 1, "deviceNumber": "D888666", "productId": 5, "productName": "智能插座" } ``` ### 七、相关文档 [uView2.0文档 >>](https://www.uviewui.com/components/intro.html)
[uniapp文档 >>](https://uniapp.dcloud.io/tutorial/)
[easycom说明 >>](https://uniapp.dcloud.io/component/#easycom%E7%BB%84%E4%BB%B6%E8%A7%84%E8%8C%83)
[uChart2.0文档 >>](https://www.ucharts.cn/v2/#/guide/index)
[Wap2App打包](https://code.wumei.live/ultimate/wumei-smart/-/wikis/Wap2App打包) ### 八、项目运行 运行前先跑 npm install 下载所需要的依赖包!