阶段一 云端创建产品:在移远云开发者中心注册账号、创建产品、定义物模型(对应下文“创建产品”“功能定义”)。
阶段二 设备端连云:完成开发板组装、驱动安装、MCU 固件烧录与开发环境搭建后,编写并运行连云脚本,将产品鉴权信息(PK/PS/DK)填入代码,使设备接入平台并上报物模型数据(对应下文“连接平台的产品”)。
阶段三 APP 绑定:在“移联万物”APP 中扫码或配网添加设备,即可在手机上同步查看设备数据(对应下文“APP 使用”)。
一、云端创建产品
1)注册并登录开发者中心
官方网址:https://iot.quectelcn.com/login
2)创建产品
第一步:选择品类,通过品类搜索香薰机。
第二步:选择方案。您可选择系统中已预设的推荐方案完成快速创建,也可以通过自定义方案根据实际需要进行配置,此处我们以自定义方案进行配置。
第三步:选择产品的联网类型与通讯方式。此处我们选择单品设备类型、2G/3G/4G/5G联网方式、数据格式使用物模型类型。
选择物模型数据格式。
第四步:最后上传产品图片、输入产品名称,提交并完成产品创建。
创建成功后平台将为该产品分配ProductKey与ProductSecret,用于后续设备需连接平台时的鉴权,具体的信息会下发到账号的注册邮箱中。
二、功能定义(物模型)
产品创建后可进入产品详情的功能定义页面进行物模型功能定义。
添加自定义功能
拟定物模型文档可点击跳转:https://iot-cloud-docs.quectelcn.com/document/page-0503
三、激活码管理
创建好产品后,第一步进行激活码分配。点击激活码管理后,点击分配激活码对需要分配的产品进行分配激活码。
四、设备端连云
在把上面云端创建产品所得到的鉴权信息填入代码之前,需要先完成设备端的硬件与软件准备。本节以 UniKnect Gen1 Pro 开发套件(板载 EC200U 4G 模组 + NUCLEO-F413ZH 主控板)为例,介绍设备从硬件组装到运行连云脚本的完整步骤:硬件准备 → 安装驱动 → 烧录 MCU 固件 → 搭建开发环境 → 编写并运行连云脚本。
1)硬件准备与开发板组装
将 UniKnect Gen1 Pro 扩展板与 NUCLEO-F413ZH 开发板通过 Arduino UNO 标准接口垂直堆叠插接组装为一体,两板间的 UART、GPIO、电源等关键信号将自动连通,无需额外飞线。组装时注意方向对齐(DC5V 电源输入端与 ST-LINK/V2-1 朝向一致),垂直下压完全插合。为保证板载 4G 模组供电充足,需接入 Type-C 供电线;主控板需连接 ST-LINK/V2-1 侧的 MicroUSB 数据线,用于烧录固件和调试。
2)安装驱动
驱动用于让 PC 与开发板正常通信,请根据需要安装以下驱动:
① 4G 模组驱动(可选):如需通过 USB 对模组收发 AT 命令或抓取 log,安装 Quectel_Windows_USB_DriverU_V1.0.19.zip;安装后连接模组 USB 接口,设备管理器可枚举出对应端口即成功。若无需收发 AT/抓 log 可跳过。
② 调试器驱动(必需):NUCLEO-F413ZH 自带 ST-LINK/V2-1 调试器,用于烧录/调试 MCU,并虚拟出一路 UART 供 MicroPython 交互。下载安装 ST-LINK/V2-1 驱动: STSW-LINK009 | 软件 - 意法半导体
③ 串口驱动(可选):板载 CP2105 USB 转串口芯片,用于捕获 4G 模组 debug log 及查看模组与 MCU 间的 AT 交互,需安装 CP210x Universal Windows Driver。若无需可跳过。
3)烧录 MCU 固件
MCU 固件即 MicroPython 的软件运行环境。安装好 ST-LINK/V2-1 驱动后,按以下步骤烧录:
① 下载并安装烧录工具 STM32CubeProgrammer:https://www.st.com.cn/zh/development-tools/stm32cubeprog.html
② 下载 MCU 固件 UniKnect_MicroPython_F413ZH:https://github.com/quectel-develop/micropython/releases
③ 打开 STM32CubeProgrammer,加载固件 → 连接设备 → 开始烧录 → 等待烧录完成。
4)搭建开发环境(Thonny)
MicroPython 开发需要打通三个环节:运行环境(已烧录的 MicroPython 固件)、通信桥梁(ST-LINK 虚拟串口)与开发环境(IDE)。此处选用 Thonny 作为 IDE:
① 下载并解压 Thonny-4.1.7.zip(内置 Python 3.10,需 Windows 8.1/10/11 64 位),运行 thonny.exe。
② 点击【Tools】→【Options…】→【Interpreter】,在下拉列表选择 MicroPython (generic) 解释器以匹配 NUCLEO 开发板;在【Editor】中勾选前三个 Automatically 以开启代码自动补全;如需可在【General】设置中文、在【Theme & Font】调整主题字体(部分设置需重启生效)。
③ 连接 NUCLEO-F413ZH 的 ST-LINK/V2-1 接口至 PC,打开 Thonny,若 Shell(REPL)窗口显示设备信息即表示设备已连接成功。
5)编写连云脚本
在 Thonny 左侧 MicroPython device 文件区右键【New file…】,新建并命名为 main.py,编写连云脚本。设备端通过云 SDK 模块 Qth 接入平台:先用 setProductInfo 填入产品的 ProductKey/ProductSecret,用 setDK 填入设备 DK(可用模组 IMEI 号),调用 start() 完成注册与登录,连接成功后用 sendTsl 上报物模型数据。参考代码如下:
import Qth
import utime
# ===== 1. 填写云端创建产品后获得的鉴权信息 =====
PK = "your_ProductKey" # 平台产品的 ProductKey
PS = "your_ProductSecret" # 平台产品的 ProductSecret
DK = "your_DeviceKey" # 设备 DK / SN(可用模组 IMEI 号)
# ===== 2. 事件回调 =====
def dev_event(event, errcode):
print("dev event:", event, errcode)
def recv_tsl(data):
print("recv tsl:", data)
# ===== 3. 初始化并连接云平台 =====
Qth.init()
Qth.setProductInfo(PK, PS)
Qth.setDK(DK)
Qth.setServer("mqtt://iot-south.quectelcn.com:1883")
Qth.setEventCb({
"devEvent": dev_event,
"recvTsl": recv_tsl,
})
if Qth.start():
print("Qth start success")
# 等待连接成功
while not Qth.state():
print("connecting ...")
utime.sleep(1)
print("cloud connected")
6)填写PK/PS鉴权信息并运行,设备上线
将要获取到的PK和PS输入在代码中对应的位置,然后点击运行代码
连接成功后,可以在艾络迅云平台看到该台设备为在线状态。
五、物模型数据上下行交互
物模型是开发者中心针对物理设备在平台端建立的数据模型,用于描述产品功能、方便数据解析。设备成功接入平台后,通过构建物模型数据实现与平台的交互:上行使用 Qth.sendTsl() 上报数据,下行通过 readTsl / recvTsl 等回调接收平台下发的读取请求或服务指令,并用 Qth.ackTsl() 应答。
涉及接口:Qth.sendTsl()(发送物模型数据)、Qth.ackTsl()(应答物模型读取请求)。
| 功能ID | 功能类型 | 功能名称 | 数据类型 | 数值范围 | 引用关系 |
|---|---|---|---|---|---|
| 1 | 属性 | 开关 | BOOL | true - 开启; | |
| false - 关闭; | |||||
| 2 | 属性 | 电池电量 | INT | 0~100 | |
| 3 | 属性 | 精油剩余容量 | FLOAT | 0~300 | |
| 4 | 属性 | 工作模式 | ENUM | 1~HPC | |
| 2~CPL | |||||
| 5 | 属性 | 设备编号 | TEXT | 0~20 | |
| 6 | 属性 | 时间 | DATE | -- | |
| 7 | 属性 | 结构体 | STRUCT | -- | 功能ID:8,9 |
| 8(父ID:7) | 参数 | {$参数名称} | BOOL | true - 开启; | |
| false - 关闭; | |||||
| 9(父ID:7) | 参数 | {$参数名称} | INT | 0~100 | |
| 10 | 属性 | 整型数组 | ARRAY | 最大数量:10,元素类型:INT | |
| 11 | 属性 | 结构体数组 | ARRAY | 功能ID:12,13 | |
| 12(父ID:11) | 参数 | {$参数名称} | BOOL | true - 开启; | |
| false - 关闭; | |||||
| 13(父ID:11) | 参数 | {$参数名称} | INT | 0~100 |
1)主动上报物模型数据(上行)
设备读取传感器数据后,将各属性按“物模型ID:值”组织为字典,通过 Qth.sendTsl() 上报到平台。示例:
# 创建一个空字典
my_dict = {}
# 布尔 ID1
my_dict.update({"1": True})
# 整型 ID2
my_dict.update({"2": 100})
# 浮点 ID3
my_dict.update({"3": 25.6})
# 枚举 ID4
my_dict.update({"4": 1})
# 字符串 ID5
my_dict.update({"5": "ZWS"})
# 时间(ms) ID6
my_dict.update({"6": 1659664758817})
# 结构体 ID7(含子参数 8、9)
my_dict.update({"7": {"8": True, "9": 100}})
# 整型数组 ID10
my_dict.update({"10": [10, 20, 30]})
# 结构体数组 ID11(子参数 12、13)
my_dict.update({"11": [{"12": True, "13": 100}, {"12": False, "13": 98}]})
# 发送数据,QoS 模式:1
Qth.sendTsl(1, my_dict)
2)响应平台读取请求(下行读取)
在开发者中心“设备调试”中可点击“批量读取”一键读取物模型属性。模组收到读取指令后会自动触发 readTsl 回调,回调入参为请求的物模型 ID 列表 ids 与包 ID pkgId;按 ids 组织数据后用 Qth.ackTsl() 应答。示例:
def App_cmdReadTslCb(ids, pkgId):
print('readTsl:', ids, pkgId)
my_dict = {}
for id in ids:
if id == 1:
my_dict.update({"1": True})
elif id == 2:
my_dict.update({"2": 100})
elif id == 3:
my_dict.update({"3": 25.6})
elif id == 4:
my_dict.update({"4": 1})
elif id == 5:
my_dict.update({"5": "ZWS"})
elif id == 6:
my_dict.update({"6": 1659664758817})
elif id == 7:
my_dict.update({"7": {"8": True, "9": 100}})
elif id == 10:
my_dict.update({"10": [10, 20, 30]})
elif id == 11:
my_dict.update({"11": [{"12": True, "13": 100}, {"12": False, "13": 98}]})
# 应答读取请求,QoS 模式:0
Qth.ackTsl(0, my_dict, pkgId)
该回调需在 setEventCb 中通过 “readTsl” 字段注册。
3)主动上报告警事件(上行)
事件型物模型(如 ID14 剩余精油不足)可携带输出参数(ID15 电池电量、ID16 精油剩余容量)组成结构体一并上报:
my_dict = {}
# 事件 ID14,携带输出参数 15、16
my_dict.update({"14": {"15": True, "16": 20.5}})
# 发送物模型事件数据至平台
Qth.sendTsl(1, my_dict)
4)接收平台服务下发(下行)
在开发者中心“设备调试→服务调用”中选择物模型服务并发送指令(如 ID17 服务,输入参数 ID18 模式)。模组收到后自动触发 recvTslServer 回调,解析输入参数进行处理:
def App_cmdRecvTslServerCb(serverId, value, pkgId):
print('recvTslServer:', serverId, value, pkgId)
if serverId == 17:
num = value["18"]
print('num:', num)
该回调需在 setEventCb 中通过 “readTslServer” 字段注册;平台下发的属性/透传数据可用 “recvTsl” 回调接收。
提示:更多接口与示例见官方文档
https://iot-cloud-docs.quectelcn.com/document/quecPythonExample01
六、APP 使用
1)为设备创建 SN 码(可用模组 IMEI 号或 自定义字符串)
平台生成二维码后,将把SN列表与设备二维码图片,以压缩包的方式供用户下载,该设备二维码与模组IMEI完成绑定后,App用户即可通过该设备二维码绑定控制设备。
2)下载并登录“移联万物”
微信小程序 (微信搜索对应名称)
toB :移企物联
toC :移块上云
APP:移联万物(手机通过应用商店下载”移联万物” 应用)
3)扫码绑定设备
注册登录移联万物,使用扫码添加设备,即可在手机上同步出设备信息
此时设备若是上传物模型数值,则会在APP界面显示具体数值。




















