首页 > 解决方案 > 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"}

标签: pythonjsonmqtt

解决方案


msg.payload它正在停止,因为当您尝试访问(仍然是字符串)中的字段时,它会引发错误(并且 MQTT 库正在捕获并隐藏错误)。

如果您使用stuffjson 对象,那么它应该可以工作。

def on_message(mqttc, obj, msg):
    print(msg.payload)
    stuff = json_dumps(str(msg.payload))
    print(stuff['HTU21']['Temperature'])
    print ("Test")

推荐阅读