IoT Platform Python SDK 开发指南

物联网 · 03-15 · 171 人浏览

目录

SDK 版本

版本说明
1.00提供对接 IoT Platform 平台的能力。

SDK 简介

SDK 提供对接 IoT Platform 的能力,开发者通过调用 SDK 接口,便可实现设备与平台之间的上下行通讯。
当前SDK支持的功能有:

  • 支持设备消息、属性上报、命令下发

准备工作

  • 已安装 Python 3.9 及以上
  • 已安装 paho-mqtt 库,且版本为 1.6.0 (必需)
  • 已安装 schedule 库 (必需)

创建产品模型并注册设备

  • 访问 IoT Platform,进入设备接入控制台。
  • 查看 MQTT 设备接入地址,保存该地址。
    pFgTwLV.md.png
  • 在设备接入控制台选择“产品”,单击“创建产品”按钮,在弹出的对话框中,填写“产品名称”、“协议类型”、“数据格式”、“设备类型”等信息,创建产品。

    • 协议类型选择 MQTT。
    • 数据格式选择 JSON。

    pFgT3dS.md.png

  • 产品创建成功后,单击“详情”进入产品详情,在模型定义页面,定义相关属性和命令。

pFg7pFg.md.png

  • 在左侧导航栏选择“设备”,单击“注册设备”,在弹出的对话框中,填写设备信息,注册设备。

pFgT5dO.md.png

设备初始化

设备接入平台时,需要进行认证,请确保运行目录下存有 ca.crt 证书文件。

# 从 SDK 导入
from SDK.iot_device import IoTDevice
from SDK.client.connect_auth_info import ConnectAuthInfo
from SDK.client.mqtt_connect_conf import MQTTConnectConf

# 初始化 ConnectAuthInfo 实例,用于填写连接信息。
connect_auth_info = ConnectAuthInfo()

connect_auth_info.server_uri = "iotda.scott-sloan.cn"  # 接入地址
connect_auth_info.device_id = "< Device ID >"  # 设备ID
connect_auth_info.port = 8883  # 端口
connect_auth_info.secret = "< Secret >" # 密钥
connect_auth_info.auth_type = 1 # 认证类型
connect_auth_info.iot_cert_path = os.path.join(os.getcwd(), "ca.crt") # 证书路径

# 初始化 MQTT 连接配置,使用默认配置即可,无需修改。
mqtt_connect_info = MQTTConnectConf()

# 初始化 IoTDevice 实例
device = IoTDevice(connect_auth_info, mqtt_connect_info)

# 连接平台
device.connect()

命令下发

示例代码位于 /Sample/command_sample.py。

# 从 SDK 导入
from SDK.client.request.command import Command
from SDK.client.request.command_resp import CommandResp

# 定义一个函数,处理特定的命令
def on_command(command: Command):
    '''
    在此处理命令
    '''

    # 响应命令下发
    command_resp = CommandResp()
    command_resp.stauts_success()
    command_resp.request_id = command.request_id
    command_resp.params = {"content": "Hello, World!"}

    device.response_command(command_resp)

# 注册一个命令监听器
# 请确保 service_id 和 command_name 填写正确,否则设备无法接收到平台下发的命令
device.register_on_command_listener("service_id", "command_name", on_command)

平台消息下发

示例代码位于 /Sample/device_message_sample.py。

# 从 SDK 导入
from SDK.client.request.message import Message
from SDK.client.listener.device_message_listener import DeviceMessageListener

# 继承 DeviceMessageListener 对象
class MessageListener(DeviceMessageListener):
    def on_device_message(message: Message):
        '''
        在此处理平台下发消息
        '''

# 实例化 DeviceMessageListener
message_listener = MessageListener()

# 设置消息监听器
device.set_on_device_message_listener(message_listener)

属性上报

示例代码位于 /Sample/report_properties_sample.py。

# 从 SDK 导入
from SDK.client.request.property import Property

# 实例化 Property 对象
device_property = Property()

# 设置 service_id
# 请确保 service_id 和 properties 参数名称填写正确,否则属性无法上报到平台
device_property.service_id = "service_id"

# 设置上报属性值
device_property.properties = {
    "temperature": 23,
    "humidity": 52
}

# 上报属性
device.report_properties(device_property)
Python 物联网
Theme Jasmine by Kent Liao