华为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"}]}

                               )

即可运行成功:

相关推荐
烟袅几秒前
一文搞懂 useRef:它到底在“存”什么?
前端·react.js
Coder_Boy_几秒前
Java调用Python实现FAISS向量操作(两种方式完整实战)
java·python·faiss
Knight_AL4 分钟前
Vue + Spring Boot 项目统一添加 `/wvp` 访问前缀实践
前端·vue.js·spring boot
transitory_truth8 分钟前
Apollo使用记录
java·中间件
前端er小芳12 分钟前
前端虚拟列表滚动功能实现与核心知识点详解
前端
wuhen_n12 分钟前
Promise状态机与状态流转
前端
3秒一个大12 分钟前
React 中的 useMemo 与 useCallback:性能优化的利器
前端·react.js
cj814013 分钟前
Node.js基本概念理解
前端·node.js
ohyeah14 分钟前
React 缓存三剑客:useMemo、useCallback 与 memo 的正确打开方式
前端·react.js
程序员爱钓鱼16 分钟前
Node.js 编程实战:JWT身份验证与权限管理
前端·后端·node.js