目录
SDK 版本
版本 | 说明 |
---|---|
1.00 | 提供对接 IoT Platform 平台的能力。 |
SDK 简介
SDK 提供对接 IoT Platform 的能力,开发者通过调用 SDK 接口,便可实现设备与平台之间的上下行通讯。
当前SDK支持的功能有:
- 支持设备消息、属性上报、命令下发
准备工作
- 已安装 Python 3.9 及以上
- 已安装 paho-mqtt 库,且版本为 1.6.0 (必需)
- 已安装 schedule 库 (必需)
创建产品模型并注册设备
- 访问 IoT Platform,进入设备接入控制台。
- 查看 MQTT 设备接入地址,保存该地址。
在设备接入控制台选择“产品”,单击“创建产品”按钮,在弹出的对话框中,填写“产品名称”、“协议类型”、“数据格式”、“设备类型”等信息,创建产品。
- 协议类型选择 MQTT。
- 数据格式选择 JSON。
- 产品创建成功后,单击“详情”进入产品详情,在模型定义页面,定义相关属性和命令。
- 在左侧导航栏选择“设备”,单击“注册设备”,在弹出的对话框中,填写设备信息,注册设备。
设备初始化
设备接入平台时,需要进行认证,请确保运行目录下存有 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)