2017-05-18 122 views
2

我必須編寫一個使用MQTT協議的python程序來訂閱thingspeak.com上的主題並將其顯示在Raspberry Pi的屏幕上。 我發現了關於發佈消息和fieldpeed到thingspeak.com的官方幫助/文檔,但他們沒有提供任何關於如何訂閱主題的信息,例如,主題字符串的形式是什麼,主題字符串的內容是什麼等等。 有沒有人有任何線索?(Python)如何使用MQTT協議在Thingspeak.com上訂閱主題並顯示它?

回答

1

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

注意,代碼純粹是指用於說明和被註銷了我的頭頂,沒有修訂。它沒有經過測試。但希望它會把你放在正確的道路上。

+0

非常感謝。 – Auck

1

只是一個更新:ThingSpeak不支持(此時)訂閱渠道的可能性:https://nl.mathworks.com/help/thingspeak/use-desktop-mqtt-client-to-subscribe-to-channel-updates.html

要知道,你需要得到的話題完全正確拿到的TE訂閱正常工作

主題是像頻道/ [CHANNEL_ID] /訂閱/ JSON/[API readkey]

與您更換[CHANNEL_ID]信道ID和 與API [API readkey]讀取該信道的鍵

您必須使用您的用戶名和密碼登錄,您可以在ThingSpeak網站的帳戶>我的個人資料> mqttkey上設置mqtt密鑰。