Seite 1 von 1
mqtt mit anderer ip
Verfasst: Samstag 18. April 2020, 10:27
von egon11
Ich habe auf meinen Ubuntu Rechner per "pip3 install paho-mqtt" das mqtt Modul installiert.
Hier die die beiden minimal Scripte:
push-sender
Code: Alles auswählen
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
ip="
client = mqtt.Client()
client.connect("rpicloud.de", 1883, 60)
client.publish("t", "25 C")
client.disconnect()
client:
Code: Alles auswählen
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
def on_message(client, userdata, msg):
print(msg.topic + " " + str(msg.payload))
client = mqtt.Client()
client.on_message = on_message
client.connect("rpicloud.de",1883,60)
client.subscribe("t")
client.loop_forever()
Wenn ich aber jetzt die ip statt "rpicloud.de" durch "localhost" ersetze, kommt bei mir als Ausgabe immer "ConnectionRefusedError: [Errno 111] Connection refused".
Was läuft da falsch?
Möchte es später auch per dyndns erreichbar machen.
Re: mqtt mit anderer ip
Verfasst: Samstag 18. April 2020, 10:59
von nezzcarth
egon11 hat geschrieben: Samstag 18. April 2020, 10:27
Was läuft da falsch?
Läuft lokal denn ein Broker? Wenn ja, welcher und ist der korrekt konfiguriert?
Re: mqtt mit anderer ip
Verfasst: Samstag 18. April 2020, 12:36
von egon11
nezzcarth hat geschrieben: Samstag 18. April 2020, 10:59
Läuft lokal denn ein Broker?
Ich habe das ganze so ausgeführt, wie die Script Beispiele oben und es hat funktioniert.
Edit:
habe gerade gesehen, mir ist oben ein Fehler unterlaufen, die Zeile ' ip=" 'gehört nicht dahin.
Re: mqtt mit anderer ip
Verfasst: Samstag 18. April 2020, 13:10
von nezzcarth
Wenn du eine Variable, die nicht verwendet wird, entfernst, macht das keinen Unterschied. Wenn du dich allerdings zu einem Server verbinden möchtest, den es nicht gibt, dann schon.

Du kannst dich nicht "einfach so" per mqtt mit localhost verbinden, wenn da kein passender Server-Prozess, also ein mqtt-Broker, läuft. Wenn die Beispiele so, wie du sie gezeigt hast, funktionieren, dann tun sie das, weil sie sich mit fremden Servern verbinden, auf denen ein entsprechender Broker läuft.
Re: mqtt mit anderer ip
Verfasst: Samstag 18. April 2020, 13:14
von egon11
Ahh ok. Habe gerade gelesen, dass man einen broker erst installieren muss.
Welcher wäre gut?
Re: mqtt mit anderer ip
Verfasst: Samstag 18. April 2020, 17:41
von egon11
Muss ich den mqtt-Broker extra installieren?
Re: mqtt mit anderer ip
Verfasst: Samstag 18. April 2020, 17:49
von __deets__
Ja.
Re: mqtt mit anderer ip
Verfasst: Samstag 18. April 2020, 20:15
von egon11
Welchen würdet ihr mir empfehlen?
Re: mqtt mit anderer ip
Verfasst: Sonntag 19. April 2020, 08:17
von egon11
Ich habe jetzt "mosquitto" installiert und getestet, funktioniert.
Wenn ich aber permanent push Nachrichten verschicken möchte, muss ich das Client Script permanent laufen lassen, hoffe das frisst nicht so viel ressourcen.
Kann man die Nachrichten auch an anderen Diensten verschicken? Wie z.b. Pushbullet aufs Handy?
Re: mqtt mit anderer ip
Verfasst: Freitag 24. April 2020, 21:19
von egon11
Ich muss leider nochmal Fragen, ich möchte dass mqtt client py als Modul laufen lassen, heißt ich baue es mir als Modul, würde es als Variable speichern wollen und bei Bedarf auf das Modul zuzugreifen um an die Aktuellen Daten zu gelangen, die als letztes an den mqtt geschickt wurde.
Das Modul kann ja immer laufen, aber mein eigentliches Script braucht nur die aktuelle Variable.
So sieht mein Modul gerade aus:
Code: Alles auswählen
import paho.mqtt.client as mqtt
import time
def on_message(client, userdata, msg):
print(str(msg.payload))
client = mqtt.Client()
client.on_message = on_message
client.connect("ip", port)
client.subscribe("temperatur")
def aussentemperatur():
client.loop_forever()
# client.loop_start()
# time.sleep(5)
# client.loop_stop()
Wenn ich jetzt mit ein Script das Modul `temperatur.aussentemperatur()` aufrufe, läuft durch das "loop", also Endlosschleife durch.
Es gibt ja noch 'client.loop_start()' und 'client.loop_stop()', aber das ist nicht was ich suche.