华为iotda sdk发送消息无法更新quickstartpython问题解决

问题描述:

华为官方智慧路灯python代码: quickstartpython/IoT_device_demo/message_sample.py上报消息时,无法更新设备数据信息。

经过排查和对比后发现:

传递的数据格式与mqtt.fx不一致,导致平台无法解析。

(排查方式: iotda实例网页--设备管理--设备详情--消息跟踪--查看发送的消息内容发现,多了content字段。同时"流转规则触发"失败 )

解决办法:

把IoT_device/client/IoT_client.py中的payload代码改为:payload = device_message

python 复制代码
# 设备发送消息到平台,又用户自定义topic
    def __publish_raw_message(self, topic, device_message):
        # payload = {"content": device_message}
        payload = device_message
        payload = json.dumps(payload)
        self.__publish_result, _ = self.__client.publish(topic, payload, qos=1)

同时,正确的代码实例:

python 复制代码
# 发送用户自定义topic消息 e.g.订阅操作等
iot_client.publish_message(r'$oc/devices/' + str(client_cfg.device_id) + r'/sys/properties/report',
                               {"services": [
                                   {"service_id": "BasicData", "properties": {"luminance": 20}, "event_time": "null"}]}

                               )

即可运行成功:

相关推荐
关于不上作者榜就原神启动那件事13 小时前
Spring Data Redis 中的 opsFor 方法详解
java·redis·spring
其美杰布-富贵-李13 小时前
Java (Spring Boot) 反射完整学习笔记
java·spring boot·学习
春日见13 小时前
眼在手上外参标定保姆级教学(vscode + opencv)
linux·运维·服务器·数码相机·opencv·ubuntu·3d
小许好楠14 小时前
java开发工程师-学习方式
java·开发语言·学习
Halo_tjn14 小时前
基于 IO 流实现文件操作的专项实验
java·开发语言
姓蔡小朋友14 小时前
MySQL事务、InnoDB存储引擎
java·数据库·mysql
岁月宁静14 小时前
MasterGo AI 实战教程:10分钟生成网页设计图(附案例演示)
前端·aigc·视觉设计
业精于勤的牙14 小时前
最长特殊序列(二)
java·开发语言·算法
林shir14 小时前
Java基础1.3-Java基础语法
java
狗头大军之江苏分军14 小时前
快手12·22事故原因的合理猜测
前端·后端