完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
] 在之前的教程中,学习过如何使用MQTT协议接入OneNET平台,同时获取该平台下发的命令实现远程控制的功能。若之前没有接触过MQTT协议和OneNET平台的朋友,建议先学习之前的教程,点击链接进入: 本次教程,将要学习如何在OneNET平台上新建数据流,同时使用MQTT协议中publish报文格式上传数据点。 ] TPYBoard v202开发板(33元某宝可以买到) USB数据线 电脑 NotePad ++ 软件(其他编辑工具也可以) MicroPython File Uploader(MFU)软件 浏览器(谷歌浏览器为例) ] OneNET平台官网地址: 若没有使用过的该平台的,可以参考上面前言中的教程,先进行产品和设备的添加。 在数据点上报之前,我们需要在OneNET云平台上添加一个数据流模板。步骤如下: 1、进入[开发者中心]的[设备管理]页面,在左侧菜单栏中选择[数据流模板],点击[添加数据流]。 ] 3、添加成功后,对话框会自动关闭。数据流展示列表会自动增加刚才新添加的数据流信息。 到此,数据流模块就建立完成了。 ] 接下来就要进行数据点的上传了。上传数据点时需要参考协议规则说明,大家可以去OnetNET平台文档中心上下载,OnetNET平台文档中心地址:https://open.iot.10086.cn/doc/art431.html#118。 找到[1.1 说明文档]找到关于MQTT项目中的设备终端接入协议-MQTT进行下载。 ] 数据类型采用JSON格式,主要看[数据类型1(type == 1)格式说明]。 ] 程序下载地址: https://github.com/TPYBoard/developmentBoard/tree/master/TPYBoard-v20x-master/TPYBoard v202 典型实例/09.MQTT协议接入OneNET平台。 ] from simple importMQTTClient from machine import Pin import machine import micropython import json #选择G4引脚 g4 = Pin(4, Pin.OUT,value=0) # MQTT服务器地址域名为:183.230.40.39,不变 SERVER ="183.230.40.39" #设备ID CLIENT_ID ="deviceID" #随便起个名字 TOPIC =b"TurnipRobot" #产品ID username='productiD' #产品APIKey: password='APIKey' state = 0 #要上报的数据点 message ={'datastreams':[{ 'id':'temperature', 'datapoints':[{'value':35}]} ]} def pubdata(data): j_d = json.dumps(data) j_l = len(j_d) arr = bytearray(j_l + 3) arr[0] = 1 #publish数据类型为json arr[1] = int(j_l / 256) # json数据长度 高位字节 arr[2] = j_l % 256 # json数据长度 低位字节 arr[3:] = j_d.encode('ascii') # json数据 return arr def sub_cb(topic, msg): global state print((topic, msg)) if msg == b"on": g4.value(1) state = 1 print("1") elif msg == b"off": g4.value(0) state = 0 print("0") elif msg == b"toggle": state = 1 - state g4.value(state) defmain(server=SERVER): #端口号为:6002 c = MQTTClient(CLIENT_ID,server,6002,username,password) c.set_callback(sub_cb) c.connect() c.subscribe(TOPIC) print("Connected to %s, subscribed to%s topic" % (server, TOPIC)) #publish报文上传数据点 c.publish('$dp',pubdata(message)) print('publish message:',message) try: while 1: c.wait_msg() finally: c.disconnect() ] def pubdata(data): j_d = json.dumps(data) j_l = len(j_d) arr = bytearray(j_l + 3) arr[0] = 1 #publish数据类型为json arr[1] = int(j_l / 256) # json数据长度 高位字节 arr[2] = j_l % 256 # json数据长度 低位字节 arr[3:] = j_d.encode('ascii') # json数据 return arr ] 运行结果: |
|
相关推荐
|
|
1129 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1075 浏览 2 评论
2175 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1269 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1693 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 02:07 , Processed in 0.599761 second(s), Total 69, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号