|
|
第39行: |
第39行: |
| | | |
| <br><br> | | <br><br> |
− |
| |
− | == FW设计 ==
| |
− |
| |
− | SN: 字符串,19个字符,唯一编号,对应一个庭院监控设备
| |
− |
| |
− | KEY: 字符串,8个字符,注意保护,用于生成每次通信的 Token
| |
− |
| |
− | MAC: 6字节,12个字符,MAC地址
| |
− |
| |
− | <br><br>
| |
− |
| |
− | == FW 逻辑 ==
| |
− |
| |
− | user_init() ---> cos_init()
| |
− |
| |
− | 判断 activeflag,出厂状态(未激活,即用户没有给其设置家里路由的 ssid & password),则设置为 SOFTAP / STATIONAP,方便用户直连以配置 ssid&password
| |
− |
| |
− | 如果 wifi opmode 不为 SOFTAP,100ms 定时检查 cos_check_ip(),如能获得 IP,且 connect (TCP / UDP) 云 OK,则执行 connected 回调函数
| |
− |
| |
− |
| |
− | 100ms 一次的 connected 的回调,逻辑上讲,应该是心跳 (Beacon),但 100ms HTTP 请求写一次 DB,资源开销太大,建议为 1 分钟左右,且应该被 1s 左右一次的 /v2/node/state checking 替代,云端判断是否时间到了要去更新 DB 里的 Beacon 字段
| |
− |
| |
− |
| |
− | --
| |
− | 恢复出厂状态,即将 activeflag 清零,目前实现为向 /v2/node/state POST: {"activate":0}
| |
− |
| |
− | FW 每 1.2s check 这个 /v2/node/state 时,解析到 activate = 0 则将 activeflag 清零,设备重启后,即恢复为出厂状态
| |
− |
| |
− | <br><br>
| |
− |
| |
− | == 模块与云通信 ==
| |
− |
| |
− | === 概述 ===
| |
− |
| |
− | 模块固件从 flash 中读出 SN 和 KEY,SN + 当前时间戳用 KEY 加密(AES) 运算后生成的串作为 Token
| |
− |
| |
− | 云端验证 SN 和 Token
| |
− |
| |
− | <br><br>
| |
− |
| |
− | === 激活 ===
| |
− |
| |
− | 用户关联(添加)设备,视为激活设备
| |
− |
| |
− | 实现为:直接在 WeiXin / APP 里扫码添加
| |
− |
| |
− | WeiXin / APP 扫描二维码后,解析出 ID / UUID,作为调用如下 cloud api 的参数:
| |
− |
| |
− | /v2/node/activate
| |
− |
| |
− | <br><br>
| |
− |
| |
− | === Beacon ===
| |
− |
| |
− | /v2/node/beacon
| |
− |
| |
− | polling 方式实现时,定时 GET 实际就是一次心跳汇报
| |
− |
| |
− | TCP 长链接,为维护链接,也会定时心跳,貌似不用更高协议的心跳汇报
| |
− |
| |
− | <br><br>
| |
− |
| |
− | === 状态检查 ===
| |
− |
| |
− | ;;1. Polling 方案
| |
− |
| |
− | /v2/node/state
| |
− |
| |
− |
| |
− | 模块 1s GET 一次,取回的数据为一个 JSON 结构,解析得到 value (on/off, 55/99),与本地状态不一致,就改变自己的状态、
| |
− |
| |
− | APP 通过写 (POST) 这个值,来完成远程控制
| |
− |
| |
− | APP 也需要定时 (2s ?) GET 一下,以防其他用户改变该值导致插座状态改变而与另一个用户APP状态不一致
| |
− |
| |
− |
| |
− | 现有实现为 RESTFul,实际为 HTTP + TCP 开销略大
| |
− |
| |
− |
| |
− | ;;2. TCP 长链接方案
| |
− |
| |
− | <pre>
| |
− | </pre>
| |
− |
| |
| <br><br> | | <br><br> |
| <br><br> | | <br><br> |
2016年6月23日 (四) 09:05的版本
1 概述
- 30W 防水铝壳 LED 射灯 (220V 电源)
微信远程控制云台、LED 灯、报警喇叭和 WiFi 摄像头的电源
2 HW设计
四路 5V 继电器,带光藕隔离,高电平触发;CH1 ~ CH4 分别控制 LED大灯、警告喇叭、云台和 WiFi摄像头的电源
继电器只是控制这些设备的电源(LED大灯、警告喇叭、云台的电压为 220V,WiFi 摄像头电压为 5V)
云台的转向和俯仰通过传统 315MHz 遥控器控制
WiFi 模块的 GPIO5, GPIO4, GPIO14, GPIO12 分别用于 CH1 ~ CH4,高电平有效(通)