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


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

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

阿里云物联网IOT 首先,准备好阿里云产品设备的创建 (三码)
创建流程可以参考这篇文档 :移远BC35-G配置网络连接阿里云MQTT发送数据
树莓派|Python3树莓派连接阿里云物联网设备发送接收数据
文章图片

代码部分 这里我用的IDE是Pycham 2021.2 (可以移植到spyder,Thonny等树莓派的IDE
库文件 这里我们需要一个阿里云IOT库文件
from linkkit import linkkit

【树莓派|Python3树莓派连接阿里云物联网设备发送接收数据】和两个基础库文件 time,Json
import time import json

Windows下安装环境
打开命令提示符 输入
pip install aliyun-iot-linkkit

树莓派|Python3树莓派连接阿里云物联网设备发送接收数据
文章图片

树莓派安装环境
打开终端
pip install aliyun-iot-linkkit

可能遇到的错误
树莓派|Python3树莓派连接阿里云物联网设备发送接收数据
文章图片

网络延迟问题,重复pip install aliyun-iot-linkkit即可
代码 配置 “ 三码 ”
ProductKey="ProductKey"#阿里云物联网ProductKey DeviceName="DeviceName"#阿里云物联网DeviceName DeviceSecret="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
# 订阅topic def 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=https://www.it610.com/article/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=https://www.it610.com/article/{"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"#阿里云物联网ProductKey DeviceName="DeviceName"#阿里云物联网DeviceName DeviceSecret="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 def 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=https://www.it610.com/article/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_key device_name=DeviceName,#当前设备device_name device_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=https://www.it610.com/article/{"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) pass p_forever()

产品属性上报: /sys/ProductKey/${deviceName}/thing/event/property/post 发布 设备属性上报
树莓派|Python3树莓派连接阿里云物联网设备发送接收数据
文章图片

效果展示 树莓派|Python3树莓派连接阿里云物联网设备发送接收数据
文章图片

模拟数据发送
树莓派|Python3树莓派连接阿里云物联网设备发送接收数据
文章图片

平台发送数据
树莓派|Python3树莓派连接阿里云物联网设备发送接收数据
文章图片

树莓派|Python3树莓派连接阿里云物联网设备发送接收数据
文章图片

树莓派|Python3树莓派连接阿里云物联网设备发送接收数据
文章图片

树莓派同理
祝你顺利!!!

    推荐阅读