创建时间: | 2022/3/1 16:19 |
更新时间: | 2022/5/5 14:07 |
作者: | gi51wa2j |
标签: | bingo, RTOS训练营, 基于HAL的智能家居, 正文 |
K1控制红灯:松开后改变LED状态
K2控制绿灯:松开后改变LED状态
PC或者微信小程序可以给板子发送网络数据,控制板上设备。
控制灯:
dev可设为: lamp1、lamp2、lamp3
命令如下
状态 | 命令 |
---|---|
开 | {"dev":"lamp1","status":"1"} |
关 | {"dev":"lamp1","status":"0"} |
反转 | {"dev":"lamp1","status":"2"} |
控制风扇
状态 | 命令 |
---|---|
顺时针旋转 | {"dev":"fan","status":"1"} |
逆时针旋转 | {"dev":"fan","status":"-1"} |
停止 | {"dev":"fan","status":"0"} |
离家&回家模式
离家:把3个LED、1个风扇都关闭
回家:把3个LED、1个风扇都打开
状态 | 命令 |
---|---|
回家 | {"dev":"home","status":"1"} |
离家 | {"dev":"home","status":"0"} |
底层由按键、网卡发出InputEvent
最上层用来控制设备
根据底层发来的参数控制设备
应该屏蔽底层设备细节及它发来的数据:我关心底下的是按键、遥控器还是网络数据,告诉我做什么就可以
使用统一的参数:使用Json格式的参数,比如:
{"dev":"lamp1","status":"1"}
网络数据也是使用Json格式的数据
由于不想由于底层设备的添加而更改最上层程序的控制逻辑,就需要对中间数据进行处理转换为统一的参数,然后使用统一的参数在最上层的控制逻辑程序中进行处理。
因此需要中间层:把各类InputEvent转换为Json格式的参数
JSON是以“名称 : 值”对的方式存储数据,名称和值之间是以冒号间隔:
JSON数据由花括号括起来,可以包含多个“名称:值”对,以逗号隔开:
本节源码:在GIT仓库中
把InputEvent转换为Json格式的参数。
初始化各类设备
连接WIFI
在OLED上显示IP、端口
读取InputEvent
转换为Json格式的参数
控制设备
本节源码:在GIT仓库中
使用"Beyond Compare"比较工具比较这2个程序:10_27_smarthome_not_tested和10_28_smarthome_ok。
修改了这些地方:
使用定时器消除按键抖动
增加风扇设备
修改LED设备,增加反转状态的功能
输入系统扩大缓冲区: 网络数据比较大
修改文本系统的BUG
在头文件里把WIFI热点信息用宏表示
修改编译错误:编译、修改反复进行
去修改smartdevice\smarthome\smarthome.h,比如:
观察OLED屏幕信息,确定IP、Port。
使用微信小程序:搜"百问网嵌入式物联网"
使用微信小程序:扫码
除了微信小程序,
还可以在PC上使用sscom5.13.1给板子发送信息,一样可以控制设备。
控制灯:
dev可设为: lamp1、lamp2、lamp3
命令如下
状态 | 命令 |
---|---|
开 | {"dev":"lamp1","status":"1"} |
关 | {"dev":"lamp1","status":"0"} |
{"dev":"lamp1","status":"2"} |
控制风扇
状态 | 命令 |
---|---|
顺时针旋转 | {"dev":"fan","status":"-1"} |
逆时针旋转 | {"dev":"fan","status":"1"} |
停止 | {"dev":"fan","status":"0"} |
离家&回家模式
离家:把3个LED、1个风扇都关闭
回家:把3个LED、1个风扇都打开
状态 | 命令 |
---|---|
回家 | {"dev":"home","status":"0"} |
离家 | {"dev":"home","status":"1"} |