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

时间:2017-05-18 11:22:27

标签: python mqtt grovepi+

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

2 个答案:

答案 0 :(得分:2)

根据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)

请注意,代码纯粹是为了说明而写的,并没有修改。它尚未经过测试。但希望它会让你走上正确的道路。

答案 1 :(得分:2)

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

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

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

将[channel_id]替换为您的频道ID 和[api readkey]使用该频道的api读取密钥

您必须使用您的用户名登录,并且您可以在帐户> my profile>下设置mqtt密钥。在ThingSpeak网站上的mqttkey。