2016-08-03 28 views
2

Ich versuche, ein Raspberry Pi (Raspbian, Jessie) zu konfigurieren, um Temperaturdaten von einem DS18B20-Sensor an meinen MQTT-Broker zu senden.Veröffentlichen von MQTT-Nachrichten aus einem Python-Skript auf einem Raspberry Pi

Ich habe Moskitos, Moskitokunden und Python-Moskitos installiert. Ich habe auch paho-mqtt installiert.

Mosquitto scheint gut zu funktionieren; Ich kann über die Befehlszeile veröffentlichen, aber ich kann kein Python-Skript, das ich geschrieben oder gefunden habe, veröffentlichen oder abonnieren.

Warum diese Arbeit von der Kommandozeile,

mosquitto_pub -h 192.168.0.21 -d -t test/test -m "Hello world!" 

während dieses Skript nicht der Fall ist?

#!/usr/bin/env python 

import paho.mqtt.client as mqtt 

# set up the mqtt client 
mqttc = mqtt.Client("python_pub") 

# the server to publish to, and corresponding port 
mqttc.connect("192.168.0.21", 1883) 

# the topic to publish to, and the message to publish 
mqttc.publish("test/test", "Hello world!") 

# establish a two-second timeout 
mqttc.loop(2) 

Vielen Dank im Voraus!

EDIT: Experimentieren, ich fand, dass durch Ändern der IP im Skript zu dem des Pi selbst, ich MQTT veröffentlichen kann, die vom Pi empfangen wird. Der Pi kann auch Nachrichten empfangen, die ihm veröffentlicht wurden. Ich kann jedoch immer noch nicht von einem Skript zu einem externen Broker veröffentlichen. So, jetzt ich denke, es ist ein Broker Ausgabe ...

+0

was meinst du Das Skript funktioniert nicht? Was genau passiert? – Nik

+0

Der Code wie gepostet funktioniert für mich (es ist nicht großartig, aber es funktioniert). Bitte aktualisieren Sie die Frage mit weiteren Details darüber, was nicht funktioniert, wenn Sie es versuchen – hardillb

+0

Beim Veröffentlichen über die Befehlszeile wird die Nachricht von meinem MQTT-Broker empfangen. Beim Versuch, von diesem (oder einem anderen) Skript zu veröffentlichen, werden jedoch keine Nachrichten von meinem Broker empfangen. Auch wenn "mosquitto_sub -h 192.168.0.21 -d -t test/test" von einem separaten SSH-Fenster ausgeführt wird, empfängt das Raspberry Pi selbst die Nachrichten von den Skripten nicht. – KingOfSleep

Antwort

3

Wie im Kommentar erwähnt, ist der Code, den Sie geschrieben funktioniert, aber für die Veröffentlichung einer single Nachricht diese Form besser ist

#!/usr/bin/env python 
import paho.mqtt.publish as publish 

publish.single("test/test", "Hello world!", hostname="192.168.0.21") 
+0

Gute Sachen, ich werde es meinen Notizen hinzufügen. Mit meinem derzeitigen Setup hängt dieses Skript jedoch, und weder von meinem Broker noch von dem Raspberry Pi selbst wird eine Nachricht empfangen. – KingOfSleep