我必须使用 MQTT 协议编写一个 python 程序来订阅 thingspeak.com 上的主题并将其显示在 Raspberry Pi 的屏幕上。我找到了有关向 thingspeak.com 发布消息和字段提要的官方帮助/文档,但它们没有提供有关如何订阅主题的任何信息,例如主题字符串的形式是什么,该主题字符串的包含内容是什么等有没有人对此有任何线索?
2 回答
只是一个更新:ThingSpeak 确实支持(此时)订阅频道的可能性:https ://nl.mathworks.com/help/thingspeak/use-desktop-mqtt-client-to-subscribe-to-channel-updates .html
请注意,您需要完全正确地获取主题才能使订阅正常工作
主题就像频道/[channel_id]/subscribe/json/[api readkey]
将 [channel_id] 替换为您的频道 ID,将 [api readkey] 替换为该频道的 api 读取密钥
您必须使用您的用户名登录并传递一个 mqtt 密钥,您可以在 ThingSpeak 网站上的帐户>我的个人资料 > mqttkey 下设置该密钥。
根据 Thingspeak 文档:“ThingSpeak 仅支持使用 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)
请注意,该代码纯粹是为了说明,并且是在我的脑海中写下的,没有进行任何修改。它尚未经过测试。但希望它能让你走上正确的道路。