ESP in OpenHAB

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

starbright
Beiträge: 71
Registriert: 16. Jan 2023 19:27
Answers: 0

ESP in OpenHAB

Beitrag von starbright »

Bin noch neu mit diesen kleinen Boards (D1 Mini, ESP8266), bisher nur mal ein Blink-Example hochgeladen. Finde die Hardware aber spannend und plane einen Temp/Luftfeuchte/CO2 Sensor (angebunden an I2C) in mein openHAB Netz zu bekommen. Da bin ich doch vermutlich nicht der erste. Hat jemand damit schon Erfahrungen die man teilen möchte?
Ja, das gibts vermutlich alles schon fertig, aber ich möchte basteln und lernen. Aber ich muss dabei ja nicht jeden Fehler machen ;) Und das soll ja nur der Anfang sein, ich finde diese winzigen Boards faszinierend.

Also wie macht man das? Einen Webserver aufsetzen der die Messwerte anzeigt? Damit würde man auch ohne openHAB was sehen können. Und dann ein Binding das diese Daten vom Webserver liest? Oder ganz anders?

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: ESP in OpenHAB

Beitrag von peter-pan »

Ich habe meine ESP's, D1 Minis, etc. alle mit Tasmota geflasht. Damit kann ich bequem über MQTT und dem dazugehörigen openHAB-Binding kommunizieren. Den Einstig dazu findest du hier.

Code: Alles auswählen

Open source firmware for ESP devices~
Total local control with quick setup and updates. Control using MQTT, Web UI, HTTP or serial. Automate using timers, rules or scripts. Integration with home automation solutions. Incredibly expandable and flexible.
Eine weitere Möglichkeit gibt es mit ESPEasy, einem andern Flashing-Tool. Es gibt sicherlich auch noch andere Möglichkeiten.

Hier ein Beispiel-SetUp:
setup.jpg
An diesem ESP32 sind mehrere Sensoren angeschlossen (Thermostat/Luftfeuchtigkeit, Ultraschall-Entfernung, Kohlenmonoxyd.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

starbright
Beiträge: 71
Registriert: 16. Jan 2023 19:27
Answers: 0

Re: ESP in OpenHAB

Beitrag von starbright »

Danke schön, schau ich mir an.
Ist das richtig, das MQTT Messages an den Server sendet? Könnte man den D1 Mini dann (im Gegensatz zu einem Webserver auf dem D1) zwischen den Messungen in den Sleep Mode gehen - zum Energiesparen/Akkubetrieb? Temp/Luftfeuchte reicht doch alle 5min.
Welchen CO2 Sensor nutzt du? Zufrieden?

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: ESP in OpenHAB

Beitrag von peter-pan »

Schau am besten mal hier rein und da.

MQTT hat eine Server/Client Architektur und es gibt einen "Broker" der alle Verbindungen behandelt. Aber das kannst du dir ja aus den Tutorials erarbeiten bzw. die Details erlernen. In Tasmota gibt es auch so etwas wie einen Sleep Mode (DeepSleepTime) für die jeweiligen (einzelnen) Sensoren. Da kann ich dir aber nichts dazu sagen, da meine Sensoren und ESP's alle mit Netzteil bzw. die Steckdosen (Gosund, Sonoff) durch den Netzstrom versorgt werden.

Ich habe MQ-2 Sensoren. Zufrieden !? - Geht so ;) . Aber Achtung mit den Spannungswerten; falsch angeschlossen, futsch :lol: :( . Aber zum Basteln geht's. Veränderungen werden auch angezeigt. Ich benutze die ja nur im Innenbereich.
Ich habe mir aber zu Weihnachten noch von Amazon so einen AirQualityMonitor angeschafft. Da wird halt ein bisschen mehr angezeigt und die Werte werden auch etwas anders dargestellt.
ESP32:
esp32.jpg
ESP32 als Widget:
esp321.jpg
Air Quality Monitor:
airquality.jpg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

Benutzeravatar
udo1toni
Beiträge: 13986
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: ESP in OpenHAB

Beitrag von udo1toni »

mqtt ist ein Server-client-basiertes Protokoll.
Das heißt, alle Clients verbinden sich mit einem zentralen Server (in mqtt-Sprech heißt der "Broker") Jegliche Kommunikation läuft immer und ausschließlich über den Broker. Auch openHAB ist "nur" ein Client.
Unter openHAB2 gab es mal ein Addon, welches einen embedded Broker zur Verfügung stellte, das wurde aber wieder entfernt, weil der darunter laufende Dienst (Moquette) nicht weiter entwickelt wird und es diverse Sicherheitslecks gibt.

Gewöhnlich setzt man Mosquitto als Broker ein, es gibt aber auch andere Implementierungen. Mosquitto ist halt extrem bequem installierbar, da es von allen "wichtigen" Betriebssystemen direkt mitgebracht wird (Debian, Ubuntu, CentOS... eigentlich alle großen GNU/Linux Derivate... aber auch FreeBSD...)
Ob das mit dem Schlafen klappt, weiß ich nicht.
Grundsätzlich sollte Tasmota dazu in der Lage sein, für reine Sensoren müsste man damit auch ordentlich Strom sparen können.
Für alles, was irgendwie steuerbar sein soll, scheidet das natürlich aus.

Und natürlich ist Tasmota irgendwie ein Cheat :) Du hast ja oben geschrieben, dass Du from Scratch entwickeln willst, das wäre am ehesten mit PlatformIO oder auch der Arduino Entwicklungsumgebung gegeben, da hast Du bare Metal - aber trotzdem eine unüberschaubare Anzahl an fertigen Modulen, aus denen Du auswählen und in kürzester Zeit ein funktionierendes Programm "ganz ohne Cheating" erstellen kannst.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

starbright
Beiträge: 71
Registriert: 16. Jan 2023 19:27
Answers: 0

Re: ESP in OpenHAB

Beitrag von starbright »

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.
Bei @peter-pan klang es etwas einfacher. Auch da D1 Mini mit MQTT Output, aber an ein Binding in openHAB direkt? Hattest du den Schritt mit dem Broker nur vergessen oder ist das Binding ein Broker?

Ja, Steuern ist erst mal noch aussen vor, sollte aber auch gehen, dann gibt es ein paar Latenzen ;) Aber erst mal nur Überwachung.
Hatte auch eine CO2 Monitor, aber ohne Akku (also hin un her tragen in div Räume ging nicht, ohne Anbindung zum Verlauf aufzeichnen). Daher die Frage.

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: ESP in OpenHAB

Beitrag von peter-pan »

starbright hat geschrieben: 7. Feb 2024 18:11 Bei @peter-pan klang es etwas einfacher. Auch da D1 Mini mit MQTT Output, aber an ein Binding in openHAB direkt? Hattest du den Schritt mit dem Broker nur vergessen oder ist das Binding ein Broker?
...eigentlich nicht anders als Udo das auch beschrieben hat. Mosquitto(MQTT-Dienst/Broker) muss natürlich auf dem Rechner (oder einem anderen Rechner) laufen.

Code: Alles auswählen

hab3@oh3ssd:~ $ sudo systemctl status mosquitto
[sudo] Passwort für hab3:
● mosquitto.service - Mosquitto MQTT Broker
     Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2024-02-07 14:57:04 CET; 3h 30min ago
       Docs: man:mosquitto.conf(5)
             man:mosquitto(8)
    Process: 498 ExecStartPre=/bin/mkdir -m 740 -p /var/log/mosquitto (code=exited, status=0/SUCCESS)
    Process: 503 ExecStartPre=/bin/chown mosquitto /var/log/mosquitto (code=exited, status=0/SUCCESS)
    Process: 512 ExecStartPre=/bin/mkdir -m 740 -p /run/mosquitto (code=exited, status=0/SUCCESS)
    Process: 515 ExecStartPre=/bin/chown mosquitto /run/mosquitto (code=exited, status=0/SUCCESS)
   Main PID: 516 (mosquitto)
      Tasks: 1 (limit: 4531)
        CPU: 8.999s
     CGroup: /system.slice/mosquitto.service
             └─516 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

Feb 07 14:57:04 oh3ssd systemd[1]: Starting Mosquitto MQTT Broker...
Feb 07 14:57:04 oh3ssd mosquitto[516]: 1707314224: Loading config file /etc/mosquitto/conf.d/peter.conf
Feb 07 14:57:04 oh3ssd systemd[1]: Started Mosquitto MQTT Broker.
hab3@oh3ssd:~ $
Das Binding stellt nur die Verbindung zum Client/Server-System her.

Eigentlich läuft ja auf jedem "Gerät" so ein MQTT-Client und der Broker managt das Ganze.
udo1toni hat geschrieben: 5. Feb 2024 23:18 Auch openHAB ist "nur" ein Client.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

Benutzeravatar
udo1toni
Beiträge: 13986
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: ESP in OpenHAB

Beitrag von udo1toni »

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).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

EmptySoft
Beiträge: 188
Registriert: 7. Jan 2020 14:45
Answers: 2
Kontaktdaten:

Re: ESP in OpenHAB

Beitrag von EmptySoft »

starbright hat geschrieben: 5. Feb 2024 21:13 Ist das richtig, das MQTT Messages an den Server sendet? Könnte man den D1 Mini dann (im Gegensatz zu einem Webserver auf dem D1) zwischen den Messungen in den Sleep Mode gehen - zum Energiesparen/Akkubetrieb? Temp/Luftfeuchte reicht doch alle 5min.
ich verwende ESPeasy für die ESPs und bin damit sehr zufrieden. Den ESP schlafen zu schicken ist kein Problem. Bedenke aber, dass bei den ESP Entwicklerboards (zum Beispiel ESP D1 mini) die USB-RS232 Schnittstelle am meisten Strom benötigt. Wenn Du wirklich lange Acculaufzeiten haben willst auf jeden Fall kein Entwicklerboard sondern einen "blanken" ESP verwenden (und die ESP32 sind noch stromsparender)
BYe
Harald

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: ESP in OpenHAB

Beitrag von peter-pan »

EmptySoft hat geschrieben: 8. Feb 2024 13:52 einen "blanken" ESP
Hab gerade mal gesucht, aber nichts in der Richtung gefunden. Hast du da einen Link ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

Antworten