查看Cloud Of Smart Home的源代码
←
Cloud Of Smart Home
跳转到:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
== Open API == === Activate === 激活就是告诉云端:生产的设备已经联网并能正常工作了 ;;CamGo 的设计:(X1) ;;方案一: 每个设备都有一个唯一的串号 SN,写在二维码里 扫描二维码,APP会获取 SN,APP自动生成一个密钥对,用私钥将 时间戳和SN 加密后,作为调用 Activate API 的一个参数,另一个参数是生成的公钥 x-key ;;方案二 (实际使用方案): 设备的串号 SN、KEY 和 MAC 写在 eeprom 里 update state 时,用 SN + KEY 生成动态 token,云端检查 token 验证合法身份 用户关注公众号绑定看门狗后(扫描二维码或手工关注后绑定),视为激活,此过程可从 weixin agent 调用 Activate 接口 <source lang=bash> {"weixin":"userid"} 云端收到后,首先解析设备node_row 的meta->activated域,为1视为激活,再解析 trigger 域, 有 weixin->root 则视为激活过,此时添加的 weixin 用户,置于 weixin->user 列表里 </source> --- ;;mini 的设计是这样:(M1) ;;方案一: 启动 APP,APP自动断开原WiFi的连接,搜索 miniCamGo 的AP,自动连接(内置密码),最好能做到将用户手机里存的AP直接配置给mini 配好后,APP自动生成一个密钥对,发给 mini,mini 收到后,保存,向用户返回 SN,APP用此生成一个微信二维码,供用户向家人分享 APP 断开和 mini 的连接,用私钥将时间戳和SN 加密后,作为调用 Activate API 的一个参数 Token,另一个参数是生成的公钥 x-key ;;方案二: 用户启动 APP,APP自动断开原WiFi的连接,搜索 miniCamGo 的AP,自动连接(内置密码,可以设计为无密码),将 AP 的 SSID 和密码配给 miniCamgo miniCamgo 能通过 wifi 第一次访问激活接口,就视为激活 <source lang=bash> {"activate":1} </source> --- 首次调用activate接口的,拥有设备的最高权限,用户设置一个分享码(不设系统默认生成) 随后扫描的,需输入分享码,才能拥有这个设备的使用权(APP 如检测到其和拥有者使用相同的 AP 热点,可不用输入分享码) 激活时以路由的MAC地址为关键字,创建HOME且与SN关联;以用户手机的imsi为关键字,创建USER且与SN关联 <pre> /v2/node/activate </pre> <source lang=bash> # cat post-activate1 POST /v2/node/activate HTTP/1.1 Accept: */ * nodid: BFEB5E8E2BD9A795222 token: 15F7E14203AD318B0AB05514A6BD5B072830A076267C66E2X Content-Length: 19 Content-Type: text/html Connection: close {"weixin":"comcat"} # cat post-activate2 POST /v2/node/activate HTTP/1.1 Accept: */ * nodid: BFEB5E8E2BD9A795222 token: 15F7E14203AD318B0AB05514A6BD5B072830A076267C66E2X Content-Length: 17 Content-Type: text/html Connection: close {"weixin":"gaga"} # cat post-activate3 POST /v2/node/activate HTTP/1.1 Accept: */ * nodid: BFEB5E8E2BD9A795222 token: 15F7E14203AD318B0AB05514A6BD5B072830A076267C66E2X Content-Length: 14 Content-Type: text/html Connection: close {"activate":1} # cat get-activate GET /v2/node/activate HTTP/1.1 Accept: */ * nodid: BFEB5E8E2BD9A795222 token: 15F7E14203AD318B0AB05514A6BD5B072830A076267C66E2X Content-Length: 0 Content-Type: text/html Connection: close # cat post-deactivate POST /v2/node/activate HTTP/1.1 Accept: */ * nodid: BFEB5E8E2BD9A795222 token: 15F7E14203AD318B0AB05514A6BD5B072830A076267C66E2X Content-Length: 14 Content-Type: text/html Connection: close {"activate":0} </source> <br><br> === Node State === <pre> /v2/node/state </pre> Input: <pre> {"value":123} {"value":{"x": 12, "y": 12, "z": 12, "k": 22, "l": 33}, "deliver_to_device": 0} {"coords":{"lat":123, "lng":234}, "cell":{"mcc": 460, "mnc": 0, "lac": 123, "cid": 456}} {"living_room":{"timestamp":"", "illuminance":10, "temperature":20, "humidity": 18}} </pre> <source lang=bash> # cat get-state GET /v2/node/state HTTP/1.1 Accept: */ * x-key: daxuexeprs nodid: BFEB5E8E2BD9A795222 token: 15F7E14203AD318B0AB05514A6BD5B072830A076267C66E2X Content-Length: 0 Content-Type: text/html Connection: close # cat post-msg POST /v2/node/state HTTP/1.1 Accept: */ * x-key: daxuexeprs nodid: BFEB5E8E2BD9A795222 token: 15F7E14203AD318B0AB05514A6BD5B072830A076267C66E2X Content-Length: 16 Content-Type: text/html Connection: close {"value":139225} </source> <br><br> === Node Beacon === /v2/node/beacon <source lang=bash> </source> <br><br> === Node Trigger === /v2/node/trigger <source lang=bash> add new trigger: {"value":12356,"msg":"door opened"} {"value":12356,"msg":"door opened","weixin":"comcat"} update trigger: {"value":12356,"msg":"doorxx opened","weixin":"gaga"} {"value":12356,"weixin":"gaoxiaoduo"} user update trigger: {"alarm":{"all":1,"unknown":0}} {"alarm":{"all":1}} {"alarm":{"unknown":0}} </source> <br><br> === Node CMD === /v2/node/cmd <source lang=bash> meta: { "cmd":{"开庭院灯":{"state":{"value":1} } } meta: { "cmd":{"拉警报":{"state":{"ch2":1} } } } meta: { "cmd":{"升晾衣架":{"state":{"value":"231080FD020043E2", "meta":"0,4,425,64"} } } } meta: { "cmd":{"vo":{"ctrl":17 } } } </source> POST: <source lang=bash> { "cmd":"关庭院灯", "action":{"state":{"ch1":0}} } { "nodid":"XXXXXXXXXX", "cmd":"关庭院灯", "action":{"state":{"ch1":0}} } </source> 写入 meta 域,仅仅是个结构描述,不改变设备云端状态。用户在微信文本输入或者语音输入对应的命令字时,命令关键字匹配,进而取得 "cmd":{} 结构中对应的元数据,解析后,写入相应的位置 state/meta->ctrl GET: 返回整个 { "cmd":{"开庭院灯":{"state":{"value":3} } } } JSON 结构,用户设置时,选择性呈现给用户,这个域默认不可编辑(可开启编辑),可特定生成 <br><br> === ROM Update === <pre> /v2/node/rom/version /v2/node/rom/update?version=xxx </pre> <br><br> === Manufacture === <pre> /v2/nodes </pre> <source lang=bash> {"type":"device", "state":"{}", "uuid":"", "auth":{"pubkey":"XOIO1234", "algo":"xx", "seed":"12345" }, "meta":"", "trig":"{}"} </source> <br><br>
返回到
Cloud Of Smart Home
。
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面