starbright hat geschrieben: ↑7. Feb 2024 18:11
Mh, also wenn mein ESP MQTT sendet, dann muss auf meinem openHAB - MiniServer auch noch ein MQTT Server laufen und vom dem holt sich openHAB dann die Daten? So hab ich @udo1toni verstanden.
Ok, das klingt ein bisschen umständlich aber wenn man viele MQTT Sensoren hat macht das es am Ende vermutlich einfacher.
Das ist tatsächlich super einfach. Broker einrichten, abhängig vom verwendeten System:
Windows: Mosquitto-Installer runterladen, installieren, fertig (ok, vielleicht noch einen User anlegen...)
GNU/Linux, mit der passenden Paketverwaltung, z.B. Debian:
sudo apt install mosquitto und gut ist. Auch hier kann man natürlich noch einen User einrichten
Mit openHABian (egal ob nun das Pi Image oder die manuelle Variante):
sudo openhabian-config -> Menüpunkt 20 -> Menüpunkt 23 -> Continue (und danach den Anweisungen folgen...) fertig.
In openHAB wird so oder so immer die Verbindung zum Broker als mqtt Bridge eingerichtet.
Der Punkt bei mqtt ist, dass der Broker die ganze Verwaltung aller Kommunikation übernimmt. mqtt ist sehr komfortabel und lässt sich auch super gut debuggen, dazu verwendet man einen der vielen (meist kostenlosen) mqtt Sniffer, z.B. aus dem Microsoft Store den MQTT Explorer (super schnell runtergeladen, kostenlos und mit gut durchdachter Bedienoberfläche). Auch der Sniffer ist nur ein mqtt Client. Man kann "beliebig viele" Clients gleichzeitig an einem Broker anmelden und mit entsprechender Hardware sind mehrere zehntausend Messages pro Sekunde an Durchsatz möglich. Die ganze Kommunikation ist dabei extrem komfortabel konfigurierbar und weder der Programmierer noch der Anwender muss sich großartig Gedanken machen.
Du kannst natürlich auch vom Device aus per curl Request direkt Nachrichten in openHAB pushen, aber mal ganz platt, was ist einfacher?
Code: Alles auswählen
mqtt.publish("mein/device/topic","Mein Wert",retain=false)
oder
Code: Alles auswählen
curl -X 'POST' \
'https://192.168.178.200:8443/rest/items/meinTopic \
-H 'accept: */*' \
-H 'Content-Type: text/plain' \
-H 'Authorization: Bearer eyJraWQiOm53bGwsImFsZyI9IlJTMjU2In0.eyJpc3MiOiJvcGVuaGFiIiwiYXVkIjoib3BlbmhhYiIsImV4cCI6MTcwNzMzODc5MiwianRpIjoiaVRwZGpSQTJocU55X09FWWFsdTJMUSIsImlhdCI6MTcwNzMzNT5MiwibmJmIjoxNzA3MzM1MDcyLCJzdWIiOiJ1ZG8xdG9uaSIsImNsaWVudF9pZCI6Imh0dHBzOi8vb2g0dGVzdC51ZG8ubG9rYWw6ODQ0MyIsInNjb3BlIjoiYWRtaWE4iLCJyb2xlIjpbImFkbWluaXN0cmF0b3IiXX0.I-vFr4wTQqbpt0SRE-kdC9eBtEhK1RDUfeVfxPa8UM4ASlcPdLF-oEGItDjjyDdXWfFB770X0HV9-iXIa_g6vCueiGZptieoSUHwWz0ArCrQRyIqCy8U8aMzCsjgrJb0Go3C2Hnidajcp1f0z1gHCWBmHOVNC2WwUQTN7YdH7axP1JvxQeijSpqPCHrPIm0ZpGKpX6f3iVs1m2_bcgxiWeDYCtrV7U6nbeFQ3AMFzWWeK9Uem0gtRVCbqr5Q7WsDZs2nN-xz57WTzJOSbRNn0Q_uR-FohnUmXqUG0A4oayHxlEJRXvhEOyvEeTVyHjt0el75AUqcE9LYJe4H-5TTcw' \
-d 'Mein Wert'
Und JA, genau so sieht so ein Aufruf aus, der Authorization Bearer ist NICHT optional (und von System zu System unterschiedlich - Nein, das da oben ist nicht mein Produktivserver).
Immerhin kannst Du aber einen einfacheren Key selbst erzeugen (eigentlich heißt das Ding API-Token).
Und die Kommunikation über mqtt ist nicht weniger sicher
nur findet eine Autorisierung nur optional statt, auf Wunsch können Berechtigungen im Broker aber feingranular konfiguriert werden (nur bestimmte User dürfen bestimmte Topics lesen und/oder schreiben).