Ich habe auf meinem Raspberry folgendes Testprogramm am Laufen: https://www.dinotools.de/2015/04/12/mqtt-mit-python-nutzen Dies läuft auf meinem Raspberry lokal und ich kann die Nachrichten auch empfangen. Nun habe ich beim Broker statt "localhost" die IP meines Windows-Rechners angegeben und auf dem Windows-Rechner MQTTBox installiert. Beim Client habe ich unter Host die IP des Raspberry eingegeben und unter Will-Topic: test/temperature Als Protokoll: mqtt/tcp Nun bekomme ich die Verbindung als "Connected" angezeigt, aber ich sehe keine Nachrichten :-( Ich hab's ebenso mit meinem Android Handy versucht und in der App (IoT MQTT Dashboard) die Settings entsprechend eingestellt. Doch egal was ich in der App einstelle, so erhalte ich beim Start des Python Skriptes nur die Meldung "[Errno 111] Connection refused. Könnt ihr euch vorstellen, was ich noch falsch mache?
Sollte beim broker nicht "local host" stehen bleiben?
H. C. schrieb: > Nun habe ich beim Broker statt "localhost" die IP meines > Windows-Rechners angegeben und auf dem Windows-Rechner MQTTBox > installiert. Meinst du "bind_address <windows-pc-ip>" statt "bind_address localhost"? Da musst die IP des Raspberrys (des Moquito-Broker Rechners) rein.
:
Bearbeitet durch User
H. C. schrieb: > Nun habe ich beim Broker statt "localhost" die IP meines > Windows-Rechners angegeben und auf dem Windows-Rechner MQTTBox > installiert. Was genau meinst du mit "beim Broker"? Wo hast du das angegeben? Hast du in der Konfiguration des Brokers irgendwo was angegeben? Wenn ja, warum? Oder hast du deinem Client gesagt, der Broker sei jetzt auf dem Windows-Rechner? Dann muss da auch einer laufen. MQTTBox ist soweit ich das verstehe keiner. > Beim Client habe ich unter Host die IP des Raspberry eingegeben und > unter Will-Topic: test/temperature > Als Protokoll: mqtt/tcp Und beim anderen Client? Vielleicht hast du die Architektur noch nicht ganz verstanden? Der Broker ist ein zentraler Server, mit dem sich Clients verbinden können. Willst du eine Kommunikation aufbauen, dann brauchst du auf deinem Raspi einen Client und auf deinem Windows-PC, und auf einem der beiden Geräte (oder irgendeinem anderen im Netzwerk) muss der Broker laufen. Die beiden Clients müssen sich jeweils mit dem Broker verbinden. Ein Client kann dann Nachrichten mit einem bestimmten Topic an den Broker senden, und der verteilt diese an alle verbundenen Clients, die sich für diesen Topic interessieren. Dem Broker selber muss man keine IP-Adressen nennen, die ergeben sich automatisch durch die verbundenen Clients.
Hallo, habe im Moment wenig Zeit: möglichst die Version Version 1.4.5 installieren, ich weiß nicht ob die inzwischen direkt angeboten wird. Unter Windows habe ich zum Test mqtt.fx installiert, gibt es wohl für etliche andere System auch. Dann zum Test alles abbonieren, also subscribe # angeben. Wenn dann unter publish irgendwas geschickt wird z.B. an test, sollte das im subscribe-Window ankommen. In der config von Mosquitto habe ich nicht geändert, glaube ich zumindest... Wenn dor eine IP angebunden wird statt localhost muß es natürlich die vom RasPi sein, auf dem Mosquitto läuft.
1 | # Optional, wer den aktuellsten 1.4.5 MQTT Broker haben will, muss ihn wie folgt aus dem mosquitto Repo installieren: |
2 | wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key |
3 | sudo apt-key add mosquitto-repo.gpg.key |
4 | cd /etc/apt/sources.list.d/ |
5 | sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list |
6 | # oder für jessie |
7 | sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list |
8 | sudo apt-get update |
9 | sudo apt-get install mosquitto |
aus http://blog.wenzlaff.de/?p=6487 Gruß aus Berlin Michael
Also ich hab auf dem Broker (meinem Raspberry) das Python Skript laufen mit
1 | ...
|
2 | |
3 | client.connect("localhost", 1883, 60) |
4 | ...
|
5 | client.publish("test/temperature", "test") |
Muss ich hier jetzt der Connect-Funktion "localhost" oder die IP-Adresse des Empfängers angeben. Heißt das, dass jeder im Netzwerk die Nachrichten abfangen kann, der das Topic und die IP des Sender=Brokers weiß? Ich möchte ja, dass die Nachrichten innerhalb des Netzwerks versendet werden, ohne dass das Internet funktioniert, geht das dann automatisch oder muss ich was beachten?
H. C. schrieb: > Muss ich hier jetzt der Connect-Funktion "localhost" oder die IP-Adresse > des Empfängers angeben. > Heißt das, dass jeder im Netzwerk die Nachrichten abfangen kann, der das > Topic und die IP des Sender=Brokers weiß? Das ist doch der Sinn des Brokers (Nachrichten-Verteiler): der ist Zentral und bekommt alles. Und wenn sich jemand für die Nachrichten interessiert kann er die abonnieren. Also z.B. genau wie der Twitter Dienst, nur das der Broker nicht im Internet sein muss sondern in deinem lokalen Netz. Aus Sicherheitsgründen wohl meist eher nicht im Internet... Und zum Test erstmal einfach mit dem Wildcard '#' alles abonnieren. Sogar fürs Smartphone gibt es MQTT Clients die dir jede Message im Netz melden können.
Super, es läuft nun bei mir!! Am PC sowie auf dem Handy! Ist das nun per default nur im LAN? Was müsste ich umstellen / ändern, wenn ich die Nachrichten auch übers Internet bekommen möchte? Kennt ihr ne App bzw. Win-Software, die ständig im Hintergrund lauscht und die mich im Alarmfall lautstark benachrichtigt?
H. C. schrieb: > Was müsste ich umstellen / ändern, wenn ich die Nachrichten auch übers > Internet bekommen möchte? Du musst bei deiner FritzBox bzw. DSL-Router eine Dyn-DNS konfigurieren (dafür brauchst du wiederum eine Domain, z.B. von Strato), damit du deinen Internet-Anschluss von außen erreichen kannst. Dann musst du Port-Forwardung auf der FritzBox/DSL-Router einrichten für den TCP-Port von MQTT und auf die IP deines MQTT-Brokers. Dann kannst du im Handy den DNS-Namen deines Anschlusses eingeben und es sollte laufen. Geh aber sicher, dass du Authentifizierung bei MQTT aktivierst, sonst kann da jeder alles Abfragen und ggf. den MQTT-Broker hacken wenn da Exploits bekannt sind. Man kann auch ein VPN einrichten, das müsste man aber vorher aufm Handy aktivieren. EDIT: Hacken könnte man theoretisch natürlich auch mit Authentifizierung, je nach Sicherheitslücke beim Broker-Server.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.