(Python)如何使用MQTT协议订阅Thingspeak.com上的主题并展示?

(Python)How to use MQTT protocol to subscribe topics on Thingspeak.com and display it?

我必须使用 MQTT 协议编写 python 程序来订阅 thingspeak.com 上的主题并将其显示在 Raspberry Pi 的屏幕上。 我发现官方 help/documentation 关于向 thingspeak.com 发布消息和字段提要,但他们没有提供有关如何订阅主题的任何信息,例如主题字符串的形式是什么,该主题字符串包含什么等等。 有人对此有任何线索吗?

根据 Thingspeak 文档:"ThingSpeak supports only publishing to channels using MQTT." (https://www.mathworks.com/help/thingspeak/mqtt-api.html) 所以目前我不相信有订阅频道的方法。这似乎使他们的 MQTT 实现有点毫无意义,但如果您绝对需要使用它来发布数据,它应该仍然可以工作。

如有必要,您可以使用 Python API (https://pypi.python.org/pypi/thingspeak/0.4.1) 实现 ThingSpeak 到 MQTT 的桥接。我使用 API 将多个传感器连接到我更大的 MQTT 网络,并且效果很好。

这是我的意思的一个例子:

import paho.mqtt.client as mqtt
import time
import thingspeak
from ast import literal_eval

MQTT_BROKER =
MQTT_PORT =
MQTT_TOPIC =
THINGSPEAK_CHANNEL =
THINGSPEAK_API = 
UPDATE_INTERVAL = 

client = mqtt.Client()
client.connect(MQTT_BROKER, MQTT_PORT)
client.loop_start()

while True:
    thing = thingspeak.Channel(THINGSPEAK_CHANNEL, THINGSPEAK_API)
    n = literal_eval(thing.get_field_last(field='1'))
    client.publish(MQTT_TOPIC, n)
    time.sleep(UPDATE_INTERVAL)

请注意,该代码仅用于说明,是我随手写下的,没有进行任何修改。它尚未经过测试。但希望它能让您走上正确的道路。

只是更新:ThingSpeak 确实支持(此时)订阅频道的可能性:https://nl.mathworks.com/help/thingspeak/use-desktop-mqtt-client-to-subscribe-to-channel-updates.html

请注意,您需要让主题完全正确才能让订阅正常工作

主题就像频道/[channel_id]/subscribe/json/[api readkey]

用您的频道 ID 替换 [channel_id] 和 [api readkey] 以及该频道的 api 读取密钥

您必须使用您的用户名登录并传递一个 mqtt 密钥,您可以在 ThingSpeak 网站上的帐户>我的个人资料> mqttkey 下设置该密钥。