智能插座
(→模块与云通信) |
(→制造) |
||
第19行: | 第19行: | ||
工具脚本批量生成 SN, KEY, MAC | 工具脚本批量生成 SN, KEY, MAC | ||
− | |||
− | |||
− | |||
− | |||
<source lang=bash> | <source lang=bash> | ||
− | $ ./nodid -t p1 -k -m -n 3 | + | $ ./nodid -t p1 -k -m -n 100 > P1000100 |
+ | $ head -n 3 P1000100 | ||
DFA4E18D228D5771FKA SGP8M5R2 18FE343A2480 | DFA4E18D228D5771FKA SGP8M5R2 18FE343A2480 | ||
206758F4D4042DC2AZP OQUBTVFX 18FE3443A6E7 | 206758F4D4042DC2AZP OQUBTVFX 18FE3443A6E7 | ||
10C1D47FB8390A5DB5K RGCB962D 18FE3481DF4E | 10C1D47FB8390A5DB5K RGCB962D 18FE3481DF4E | ||
</source> | </source> | ||
+ | |||
+ | |||
+ | 通过专用接口批量导入云端: | ||
+ | |||
+ | <source lang=bash> | ||
+ | $ ./push_nodes -i P1000100 -o P1000100.pushed -t P1 -q | ||
+ | AES key: | ||
+ | Re-type key: | ||
+ | Manufacture Smart Plug (P1) OK! | ||
+ | </source> | ||
+ | |||
+ | 同时写入插座 WiFi 模块的 Flash 中 | ||
<br><br> | <br><br> |
2015年4月26日 (日) 09:32的版本
目录 |
1 概述
SN: 字符串,19个字符,唯一编号,对应一个插座
KEY: 字符串,8个字符,注意保护,用于生成每次通信的 Token
MAC: 6字节,12个字符,MAC地址
云端入口:
http://cos.icamgo.com:998
2 制造
工具脚本批量生成 SN, KEY, MAC
$ ./nodid -t p1 -k -m -n 100 > P1000100 $ head -n 3 P1000100 DFA4E18D228D5771FKA SGP8M5R2 18FE343A2480 206758F4D4042DC2AZP OQUBTVFX 18FE3443A6E7 10C1D47FB8390A5DB5K RGCB962D 18FE3481DF4E
通过专用接口批量导入云端:
$ ./push_nodes -i P1000100 -o P1000100.pushed -t P1 -q AES key: Re-type key: Manufacture Smart Plug (P1) OK!
同时写入插座 WiFi 模块的 Flash 中
3 模块与云通信
3.1 概述
模块固件从 flash 中读出 SN 和 KEY,SN + 当前时间戳用 KEY 加密(AES) 运算后生成的串作为 Token
云端验证 SN 和 Token
3.2 检查
/v2/node/state
模块 1s GET 一次,取回的数据为一个 JSON 结构,解析得到 value (on/off, 55/99),与本地状态不一致,就改变自己的状态、
APP 通过写 (POST) 这个值,来完成远程控制
APP 也需要定时 (2s ?) GET 一下,以防其他用户改变该值导致插座状态改变而与另一个用户APP状态不一致
4 APP 与云通信
4.1 注册验证
APP 第一次运行提示用户注册,输入 email 和 password,调用:
/v2/node
{"email": "EMAIL", "password": "PASSWORD"}
返回 nodid:
{"nodid": "NODE_ID"}
用户 nodid 的生成算法:用户 email 地址作为 nodid,19位,不够补0,多了截掉。如:jiankemeng@gmail.com,nodid 为:jiankemeng@gmail.co
注册成功后,APP 加密 email 和 password 并存入本地,下次启动APP,首先检查本地,如有缓存,直接进入 APP,无需再输入 email 和 password
4.2 添加设备
一个用户可能有多个插座,把插座的 SN 生成为条形码或者二维码,添加设备时,直接在 APP 里扫码添加。
APP 扫描二维码后,解析出 SN ,作为调用如下 cloud api 的参数:
/v2/node/activate
POST /v2/node/activate HTTP/1.1 Accept: */ * nodid: jiankemeng@gmail.co token: 15F7E14203AD318B0AB05514A6BD5B072830A076267C66E2X Content-Length: 14 Content-Type: text/html Connection: close {"devsn":"SN"}
4.3 控制
/v2/node/state
POST /v2/node/state HTTP/1.1 Accept: */ * nodid: jiankemeng@gmail.co token: 15F7E14203AD318B0AB05514A6BD5B072830A076267C66E2X Content-Length: 29 Content-Type: text/html Connection: close {"devsn":"SN","value":55}
{"devsn":"SN", "value":99}
4.4 计划任务
/v2/node/state
POST /v2/node/state HTTP/1.1 Accept: */ * nodid: comcat@icamgo.com00 token: 15F7E14203AD318B0AB05514A6BD5B072830A076267C66E2X Content-Length: 26 Content-Type: text/html Connection: close {"devsn":"SN","timer":"xxxxxxxx"}
5 微信公众号
5.1 扫描配置WiFi
用户手机和插座在同一无线路由下,直接使用微信 airkiss 为插座配置上无线路由的SSID和密码
5.2 注册验证
用户扫一扫带参二维码即完成注册且关联插座的过程
5.3 控制
微信菜单“控制”,系统自动呈现出当前用户关联的控制端设备(一个动态HTML页面),插座自动呈现为带当前状态的切换按钮
5.4 计划任务
微信菜单“控制”,系统自动呈现出当前用户关联的控制端设备(一个动态HTML页面),点插座,进入设置计划任务界面(定时设置)
5.5 用户管理
第一个扫二维码的是主帐号(管理员),后面扫的是普通用户