[Gelöst] Moquitto/MQTT benutzen...wie?

Darkyputz

Aktives Mitglied
Mitglied seit
27 Jul 2005
Beiträge
2,324
Punkte für Reaktionen
0
Punkte
36
Hallo...
Is nen paar Tage das ich an meiner Fritte geschraubt habe, aber nu habe ich mal wieder eine Frage...
Ich habe eine dieser "Smarten" Steckdosen und habe sie auf tasmota geflashed...will ja nicht das das gute Stueck nach haus telefoniert...
Nu hatte ich es per json script am laufen das wenn ich eine addresse nicht anpingen konnte, der schalter aus und wieder an geschaltet wurde...
Naja...lange rede kurzer Sinn...
Dachte, das das mit tasmota auch der Fall iss und habe dann mal fix Mosquitto auf die Fritte geflashed...
Aber was auch immer ich suche, ich finde weder eine syntax noch eine brauchbare Erklaerung wie ich MQTT nutzen kann um dem Schalter nen befehl zu geben.
Hat jemand das am Luafen und kann mir mal nen Beispiel geben wie ich nem Geraet mit IP 192.168.178.65 per MQTT sagen soll das er Toggled?
Aud fer Wiki Siete von MQTT steht man soll: cmnd/tasmota/power on schicken...super...aber wie?
Habe es mal so in Rudishell gepackt und ESSIG... Dachte es mir auch schon, da es keine "wohin" info gibt und so...
HILFEEE!!
 

PeterPawn

IPPF-Urgestein
Mitglied seit
10 Mai 2006
Beiträge
12,475
Punkte für Reaktionen
839
Punkte
113
Mosquitto ist hier nur der "Message Broker" ... bei ihm registrieren sich Interessenten an bestimmten Ereignissen (MQTT-Clients mit "subscriptions") und erhalten von ihm dann eine Nachricht, wenn ein solches Ereignis eingetreten ist. Auf der anderen Seite gibt es dann wieder andere Clients, die ihrerseits solche Ereignisse an den Broker melden (publishing) - das können Zustandmeldungen sein oder auch Requests, eine bestimmte Aktion auszulösen (z.B. eben den (Power-)Switch XYZ einzuschalten).

Der Broker hat jetzt nur die Aufgabe, allen für ein gemeldetes Ereignis registrierten Interessenten die Nachricht zukommen zu lassen, daß dieses Ereignis eingetreten ist ... Deine Steckdose mit Tasmota kommuniziert (bei Verwendung von MQTT) also nicht direkt mit all den anderen Programmen/Instanzen/Geräten, die an der Nachricht "Ich - die Steckdose XYZ - wurde gerade eingeschaltet." irgendein Interesse haben könnten, sondern meldet das nur an den Broker (auch die aktuellen Verbrauchswerte, wenn es eine mit diesen Fertigkeiten ist).

Der führt dann seinerseits "Listen" der Clients, die ihm angesagt haben: "Halte mich über Zustandänderungen der Steckdose XYZ auf dem Laufenden." - damit dient der Broker sowohl zum Verteilen der Nachrichten, als auch zum "Speichern" der aktuellen Zustände - und er kann die Kommunikation im LAN deutlich sicherer machen ... einmal durch Verschlüsselung der Kommunikation (weil alle nur mit dem Broker reden (sollen), ist das einfacher zu konfigurieren) und zweitens durch "Zugriffsrechte". Dann darf nicht jeder Client einen Request für einen anderen senden - z.B. eben die Türklingel (auch wenn die gehackt wurde) nicht die Waschmaschine im Keller ausschalten - bzw. der Broker sendet dann solche "unerlaubten Nachrichten" einfach nicht weiter.

Solange Du nicht tatsächlich mehr als eine Steckdose hast und nur die FRITZ!Box "die Kommandos" geben soll, brauchst Du MQTT eigentlich nicht ... da empfiehlt sich dann wohl das HTTP-Interface eher:


und wenn Du etwas wie ein "Restart" (Off, Delay, On) realisieren willst, bietet sich "Backlog" für "Kommandoketten" an.

Spannend (und dann auch mit MQTT sinnvoll) wird das alles erst, wenn da mehrere Sensoren bzw. Aktoren miteinander arbeiten sollen - z.B. wenn die FRITZ!Box automatisch neu starten soll, wenn ein Anruf von einer bestimmten Nummer eingeht. Wobei dann irgendjemand die MQTT-Message der Box über den eingehenden Anruf erst mal erzeugen müßte, denn die FRITZ!Box bietet von sich aus keine MQTT-Funktionalität an und alles, was ich so kenne, um die Box per MQTT zu integrieren, arbeitet mit einem zusätzlichen Rechner, der dann mit der Box per TR-064 und/oder Callmonitor-Port und/oder GUI kommuniziert, z.B. das hier: https://github.com/twam/fritzbox2mqtt

EDIT: Die notwendigen HTTP-Requests kann man auf der FRITZ!Box einfach mit "wget" absetzen ... will man es sicherer (und HTTPS benutzen), braucht man entweder eine BusyBox mit einem TLS-fähigen "wget" oder gleich "curl" oder ähnliches. Das "httpsdl" von AVM funktioniert (mit unbekannten bzw. selbst signierten Zertifikaten) eher suboptimal - warum man das nicht längst zugunsten der TLS-Version von "wget" in der BusyBox hat sterben lassen, wissen auch nur die AVM-Götter. Selbst ein "curl" könnte man heute problemlos auf die Box bringen ... die "Platzfrage" ist ja längst nicht mehr so akut wie früher.
 
Zuletzt bearbeitet:

Darkyputz

Aktives Mitglied
Mitglied seit
27 Jul 2005
Beiträge
2,324
Punkte für Reaktionen
0
Punkte
36
Hallo...Danke fuer die Antwort...
Denek dann wohl auch das MQTT nix fuer mich iss...
Wollte das semi complizierte python script gegen nen simplen string ersetzen...nix weiter...
Via web request klappt das auch ganz gut
http://<ip>/cm?cmnd=Power%20TOGGLE
Laueft wie geschmiert...schaue jetzt wie ich das in nen script geschraubt krieg...
Hast du ne ahnung ob das mit curl laufen koennte?
Oder muss ich da jetzt erst nen apachen befeuern?
Danke!!
 

Darkyputz

Aktives Mitglied
Mitglied seit
27 Jul 2005
Beiträge
2,324
Punkte für Reaktionen
0
Punkte
36
WORKED!!! Du bist der beste!! hatte mir extra curl druff gespeilt, aber wegt tut es perfekt!!

DANKE!!!!!
 

3CX PBX - GRATIS
Linux / Win / Cloud

Statistik des Forums

Themen
233,773
Beiträge
2,038,251
Mitglieder
352,707
Neuestes Mitglied
Rantantan