|
|
3 ani în urmă | |
|---|---|---|
| .. | ||
| OneNet_API.py | 3 ani în urmă | |
| board.py | 3 ani în urmă | |
| communicate-RaspberryPi.py | 3 ani în urmă | |
| communicate.py | 3 ani în urmă | |
| connect.py | 3 ani în urmă | |
| mqtt_onenet.py | 3 ani în urmă | |
| mylib.py | 3 ani în urmă | |
| pyboard.py | 3 ani în urmă | |
| readme.md | 3 ani în urmă | |
| test.py | 3 ani în urmă | |
| test2.py | 3 ani în urmă | |
参考安信可官网: https://docs.ai-thinker.com/esp8266/boards/nodemcu
https://docs.ai-thinker.com/_media/esp8266/boards/nodemcu8266_v1.2_e8_a7_84_e6_a0_bc_e4_b9_a6.pdf
https://open.iot.10086.cn/doc/mqtt/book/device-develop/mqtt-c-demo.html
https://open.iot.10086.cn/doc/mqtt/book/manual/auth/token.html
在 OneNet_communicate-RaspberryPi.py 中有代码示例,但这是关于树莓派的,还需要移植一下,详见:OneNet_communicate.py
这是成功发布"订阅设备数据点上报结果"的消息:
topic_publish: $sys/522417/esp8266/dp/post/json
topic_publish: $sys/522417/esp8266/dp/post/json
payload: b"{'id': 160, 'dp': {'count': [{'v': 114}], 'random': [{'v': 224}], 'talk': [{'v': 'fuck you bitch!166'}]}}"
一般来说,只要用户名、密码正确,发布的topic协议如上,均能正常送达 topic格式规范参考:https://open.iot.10086.cn/doc/v5/develop/detail/251
{
"id": 123,
"dp": {
"temperatrue": [{
"v": 30,
"t": 1552289676
}],
"power": [{
"v": 4.5,
"t": 1552289676
}],
"status": [{
"v": {
"color": "blue"
},
"t": 1552289677
},
{
"v": {
"color": "red"
},
"t": 1552289678
}
]
}
}
总结:格式仅支持json,必须要有id、dp、v参数,t可选,方括号也是必须的
设备与服务端要双向通信,必须要订阅相关topic,如果不订阅,设备将只能发消息而收不到任何内容。
see:https://open.iot.10086.cn/doc/v5/develop/detail/247
例如订阅一个accepted的topic:$sys/{pid}/{device-name}/dp/post/json/accepted,此后任何发送给服务端的消息,都会收到一个应答,没有订阅则收不到应答消息。
注意 :在 {pid}/{device-name}中,哪台设备要订阅topic,就填写哪台设备的id和device-name,不能填写别人的,
如果进行设备管理,数据查询,设备命令交互等操作,需要用到平台提供的API see:https://open.iot.10086.cn/doc/v5/develop/detail/255
因为设备无法通过mqtt方式直接告诉代理要转发给谁,只能通过https协议调用代理的API,由服务器执行消息转发、应答设备、下发消息等等
在文件 Onet_API_https.py -> get_device_info 中,通过发送API查询指令得到设备信息
TODO
假设有esp8266开发板、服务端、电脑端,如果开发板要远程发消息给电脑,步骤如下:
服务端记录设备状态的信息,例如 device id、device name 、创建时间、网络状态等等,用户也可以增加一些自定义属性如:版本号、地理位置、剩余电量、存储空间、上次更新时间、传感器状态、环境温度等等。总的来说设备镜像就是设备的信息或工作状态。