智能插座

来自Jack's Lab
(版本间的差异)
跳转到: 导航, 搜索
(注册验证)
(模块与云通信)
第34行: 第34行:
  
 
== 模块与云通信 ==
 
== 模块与云通信 ==
 +
 +
=== 概述 ===
  
 
模块固件从 flash 中读出 SN 和 KEY,SN + 当前时间戳用 KEY 加密(AES) 运算后生成的串作为 Token
 
模块固件从 flash 中读出 SN 和 KEY,SN + 当前时间戳用 KEY 加密(AES) 运算后生成的串作为 Token
  
 
云端验证 SN 和 Token
 
云端验证 SN 和 Token
 +
 +
<br><br>
 +
 +
=== 检查 ===
 +
 +
APP 通过写 (POST) 这个值,来完成远程控制
  
 
   /v2/node/state
 
   /v2/node/state
 +
 +
1s GET 一次,取回的数据为一个 JSON 结构,解析得到 value (on/off, 0x55/0xaa),与本地状态不一致,就改变自己的状态
  
 
<br><br>
 
<br><br>

2015年4月24日 (五) 22:25的版本

目录

1 概述

SN: 字符串,19个字符,唯一编号,对应一个插座

KEY: 字符串,8个字符,注意保护,用于生成每次通信的 Token

MAC: 6字节,12个字符,MAC地址


云端入口:

http://cos.icamgo.com:998



2 制造

工具脚本批量生成 SN, KEY, MAC

通过专用接口批量导入云端

同时写入插座 WiFi 模块的 Flash 中

$ ./nodid -t p1 -k -m -n 3
DFA4E18D228D5771FKA     SGP8M5R2        18FE343A2480
206758F4D4042DC2AZP     OQUBTVFX        18FE3443A6E7
10C1D47FB8390A5DB5K     RGCB962D        18FE3481DF4E



3 模块与云通信

3.1 概述

模块固件从 flash 中读出 SN 和 KEY,SN + 当前时间戳用 KEY 加密(AES) 运算后生成的串作为 Token

云端验证 SN 和 Token



3.2 检查

APP 通过写 (POST) 这个值,来完成远程控制

 /v2/node/state

1s GET 一次,取回的数据为一个 JSON 结构,解析得到 value (on/off, 0x55/0xaa),与本地状态不一致,就改变自己的状态



3.3 心跳/Beacon

 /v2/node/beacon




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: 14
Content-Type: text/html
Connection: close

{"devsn":"SN"}



4.4 计划任务

 /v2/node/state
POST /v2/node/state HTTP/1.1
Accept: */ *
nodid: comcat@icamgo.com00
token: 15F7E14203AD318B0AB05514A6BD5B072830A076267C66E2X
Content-Length: 14
Content-Type: text/html
Connection: close

{"devsn":"SN"}



5 微信公众号

5.1 扫描配置WiFi

用户手机和插座在同一无线路由下,直接使用微信 airkiss 为插座配置上无线路由的SSID和密码



5.2 注册验证

用户扫一扫带参二维码即完成注册且关联插座的过程



5.3 控制

微信菜单“控制”,系统自动呈现出当前用户关联的控制端设备(一个动态HTML页面),插座自动呈现为带当前状态的切换按钮



5.4 计划任务

微信菜单“控制”,系统自动呈现出当前用户关联的控制端设备(一个动态HTML页面),点插座,进入设置计划任务界面(定时设置)

Task.jpg



5.5 用户管理

第一个扫二维码的是主帐号(管理员),后面扫的是普通用户

Users.jpg















个人工具
名字空间

变换
操作
导航
工具箱