第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > Python3树莓派连接阿里云物联网设备发送接收数据

Python3树莓派连接阿里云物联网设备发送接收数据

时间:2022-02-15 01:27:05

相关推荐

Python3树莓派连接阿里云物联网设备发送接收数据

Python3连接阿里云物联网设备发送接收数据(树莓派)

阿里云物联网IOT代码部分库文件Windows下安装环境树莓派安装环境可能遇到的错误代码效果展示

阿里云物联网IOT

首先,准备好阿里云产品设备的创建 (三码)

创建流程可以参考这篇文档 :移远BC35-G配置网络连接阿里云MQTT发送数据

代码部分

这里我用的IDE是Pycham .2(可以移植到spyder,Thonny等树莓派的IDE)

库文件

这里我们需要一个阿里云IOT库文件

from linkkit import linkkit

和两个基础库文件timeJson

import time import json

Windows下安装环境

打开命令提示符输入

pip install aliyun-iot-linkkit

树莓派安装环境

打开终端

pip install aliyun-iot-linkkit

可能遇到的错误

网络延迟问题,重复pip install aliyun-iot-linkkit即可

代码

配置 “三码

ProductKey="ProductKey" #阿里云物联网ProductKeyDeviceName="DeviceName" #阿里云物联网DeviceNameDeviceSecret="DeviceSecret"#阿里云物联网DeviceSecret

连接与取消阿里云设备

#连接阿里云设备def on_connect(session_flag, rc, userdata):print("on_connect:%d,rc:%d,userdata:" % (session_flag, rc))pass#取消连接阿里云def on_disconnect(rc, userdata):print("on_disconnect:rc:%d,userdata:" % rc)

订阅topic

# 订阅topicdef on_subscribe_topic(mid, granted_qos, userdata):print("on_subscribe_topic mid:%d, granted_qos:%s" %(mid, str(','.join('%s' % it for it in granted_qos))))pass

接收与停止阿里云的数据

#接收阿里云的数据def on_topic_message(topic, payload, qos, userdata):print("阿里云发布数据:", str(payload))#拿到接收来的数据data=str(payload)[2:-1]print("阿里云发布数据:",data)dataDict=json.loads(data)# 切片左闭右开 取头不取尾print("阿里云发布数据:",type(dataDict))#多层解析{"temp":{"value":32}}print(dataDict["temp"]["value"]) #temp是温度标识符,value模拟温度数据pass#停止订阅云端数据def on_unsubscribe_topic(mid, userdata):print("取消订阅topic mid:%d" % mid)pass

发布消息的结果,判断是否成功调用发布函数

#发布消息的结果,判断是否成功调用发布函数def on_publish_topic(mid, userdata):print("发布公共topic mid:%d" % mid)

发布主题

#发布主题while True:data={"RoomTemp":28}#产品属性上报: /sys/a1TbSHGVD5F/${deviceName}/thing/event/property/post 发布 设备属性上报rc, mid = lk.publish_topic(lk.to_full_topic("/sys/ProductKey/deviceName/thing/event/property/post"),str(data))time.sleep(2)passp_forever()

完整代码

from linkkit import linkkit #阿里云aliyun-iot-linkkit库import time #python延时库import json #发送json数据ProductKey="ProductKey" #阿里云物联网ProductKeyDeviceName="DeviceName" #阿里云物联网DeviceNameDeviceSecret="DeviceSecret"#阿里云物联网DeviceSecret#连接阿里云设备def on_connect(session_flag, rc, userdata):print("on_connect:%d,rc:%d,userdata:" % (session_flag, rc))pass#取消连接阿里云def on_disconnect(rc, userdata):print("on_disconnect:rc:%d,userdata:" % rc)# 订阅topicdef on_subscribe_topic(mid, granted_qos, userdata):print("on_subscribe_topic mid:%d, granted_qos:%s" %(mid, str(','.join('%s' % it for it in granted_qos))))pass#接收阿里云的数据def on_topic_message(topic, payload, qos, userdata):print("阿里云发布数据:", str(payload))#拿到接收来的数据data=str(payload)[2:-1]print("阿里云发布数据:",data)dataDict=json.loads(data)# 切片左闭右开 取头不取尾print("阿里云发布数据:",type(dataDict))#多层解析{"temp":{"value":29.8}}print(dataDict["temp"]["value"]) #temp是温度标识符,value模拟温度数据pass#停止订阅云端数据def on_unsubscribe_topic(mid, userdata):print("取消订阅topic mid:%d" % mid)pass#发布消息的结果,判断是否成功调用发布函数def on_publish_topic(mid, userdata):print("发布公共topic mid:%d" % mid)#初始化连接参数,阿里云三码设置lk = linkkit.LinkKit(host_name="cn-shanghai",#当前设备服务器(上海-华东二)product_key=ProductKey,#当前设备product_keydevice_name=DeviceName,#当前设备device_namedevice_secret=DeviceSecret)#当前设备device_secret#注册接收到云端数据的方法lk.on_connect = on_connect#注册取消接收到云端数据的方法lk.on_disconnect = on_disconnect#注册云端订阅的方法lk.on_subscribe_topic = on_subscribe_topic#注册当接受到云端发送的数据的时候的方法lk.on_topic_message = on_topic_message#注册向云端发布数据的时候顺便所调用的方法lk.on_publish_topic = on_publish_topic#注册取消云端订阅的方法lk.on_unsubscribe_topic = on_unsubscribe_topic#连接阿里云的函数(异步调用)lk.connect_async()time.sleep(2) #延时设置#订阅主题rc, mid = lk.subscribe_topic(lk.to_full_topic("user/get"))#发布主题while True:data={"RoomTemp":28}#产品属性上报: /sys/ProductKey/${deviceName}/thing/event/property/post 发布 设备属性上报rc, mid = lk.publish_topic(lk.to_full_topic("/sys/ProductKey/deviceName/thing/event/property/post"),str(data))time.sleep(2)passp_forever()

产品属性上报: /sys/ProductKey/${deviceName}/thing/event/property/post 发布 设备属性上报

效果展示

模拟数据发送

平台发送数据

树莓派同理

祝你顺利!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。