python - mqtt json数据打印
问题描述
当我收到 MQTT 消息时尝试打印出单个温度值。目前发生的事情是只打印完整的 MQTT 消息,但不打印值。“测试”也不打印。
代码:
import context
import paho.mqtt.client as mqtt
from influxdb import InfluxDBClient
import json
def on_message(mqttc, obj, msg):
print(msg.payload)
stuff = json_dumps(str(msg.payload))
print(msg.payload['HTU21']['Temperature'])
print ("Test")
输出:
{"Time":"2018-12-15T03:02:34","HTU21":{"Temperature":18.8,"Humidity":71.2},"TempUnit":"C"}
解决方案
msg.payload
它正在停止,因为当您尝试访问(仍然是字符串)中的字段时,它会引发错误(并且 MQTT 库正在捕获并隐藏错误)。
如果您使用stuff
json 对象,那么它应该可以工作。
def on_message(mqttc, obj, msg):
print(msg.payload)
stuff = json_dumps(str(msg.payload))
print(stuff['HTU21']['Temperature'])
print ("Test")
推荐阅读
- python - 使用 python/COM 实现 Windows 应用程序自动化
- unix - 我无法弄清楚 ls -alF 在 unix 中给出了什么?
- c# - 无法使用 OpenxmlSDK 从 DOCX 文件中读取形状
- java - OLP Protobuf 模式的命名约定
- outlook - 无法在 Outlook 插件中访问带有数字签名的电子邮件?
- visual-studio-code - Visual Studio Code 的自定义代码完成?
- android - Android 应用程序在三星设备上因 SIGABRT 错误而崩溃
- ruby - Ruby 和 .irbrc :查找是否定义了方法。
- asynchronous - Xamarin.Android - 如何在应用程序最小化或屏幕锁定时继续进程
- ruby-on-rails - Rails 5.2(升级)- Active Storage 不显示图像