ESP Easy Sensoren in FHEM einbinden

Mit ESP Easy lassen sich Sensoren schnell und ohne Programmierkenntnisse konfigurieren. Es steht eine große Anzahl an Devices zur Verfügung. Ein kleines Problem gibt es jedoch. Um die Sensordaten auszulesen, muss man auf die Weboberfläche jedes einzelnen Sensors gehen. Sehr komfortabel klingt das nicht. Da liegt es doch nahe, die Sensordaten an FHEM zu senden. In diesem Beitrag erkläre ich euch, wie ihr eure ESP Easy-Sensoren in FHEM einbindet. Verwendet wird dazu das MQTT-Protokoll.

Nachtrag: Seit der ESPEasy-Version R120 lässt sich der Sensor direkt in FHEM einbinden, ohne den Umweg über MQTT machen zu müssen.

Einrichtung für Versionen kleiner als R120 – MQTT

Vorbereitung auf dem Raspberry Pi

Damit der Raspberry mit dem MQTT-Protokoll umgehen kann, muss das entsprechende Paket installiert werden. Folgende Erklärung bezieht sich auf den MQTT-Broker „Mosquitto“. Für die Installation muss zuerst der Paket-Sanierungs-Key importiert werden:

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/

Nun kann die Paketliste heruntergeladen werden.

sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list

Vor dem eigentlichen Installieren sollten nun die Updateinformationen aktualisiert werden:

sudo apt-get update

Nun kann mit dem eigentlichen Installieren von „Mosquitto“ begonnen werden:

sudo apt-get install mosquitto mosquitto-clients python-mosquitto

Die Client-Befehle und die Python-Unterstützung werden direkt mitinstalliert. Ob die Installation erfolgreich war, kann man mit folgendem Befehl testen:

ps -A | grep mosq

Mosquitto wird nun nach jeden Neustarten des Raspberrys automatisch mit gestartet. Gesteuert kann Mosquitto über folgende Befehle:

sudo service mosquitto restart
sudo service mosquitto stop
sudo service mosquitto start

Test von Mosquitto

Um sich etwas mit dem MQTT-Protokoll vertraut zu machen, kann man einen kleinen Test durchführen. Dazu werden zwei SSH-Verbindungen zum Raspberry aufgebaut. Das eine Fenster dient zum Senden von MQTT-Topics (Nachrichten). Das zweite Fenster soll die gesendeten Nachrichten anzeigen.

Das erste Fenster wird auf „zuhören“ gesetzt:

mosquitto_sub -h 127.0.0.1 -t TestMOSQUITTO/#

In diesem Fenster wird ab sofort auf Nachrichten gelauscht, die mit dem Präfix „Test/“ abgesendet wurden. Im zweiten Fenster kann nun eine Nachricht gesendet werden:

mosquitto_pub -h 127.0.0.1 -t TestMOSQUITTO/Temp -m "23.7"

Mosquitto Server

Mit dem „Temp“ lässt sich die Herkunft der Nachricht noch etwas einschränken. Zum Beispiel kann der Sensor 1 mit „/Temp1“ senden und der zweite Sensor mit „/Temp2“. In diesem kleinen Beispiel jetzt relativ uninteressant, aber später in Verbindung mit FHEM sehr nützlich.

Im Fenster 1 sollte nun die gesendete Nachricht angezeigt werden:

Mosquitto Client

Konfiguration von ESP Easy

Damit ESP Easy nun seine Werte an den MOSQUITTO-Broker auf den Raspberry sendet, sind einige Konfigurationen notwendig. Zuerst muss auf der Config-Seite das Protokoll „PiDome MQTT“ eingestellt werden. Die „Controller IP“ ist auf die IP-Adresse des Raspberrys zu setzen. Der MQTT-Brocker hört auf den Port 1883. Mit „Sensor Delay“ lässt sich der Intervall einstellen in Sekunden, in der Daten gesendet werden sollen. Des Weiteren ist es wichtig, dass eine einmalige individuelle „UnitNr“ vergeben wird.

EasyESP Config FHEM

Unter Devices muss nun der Sensor selber konfiguriert werden. Ich tue dies am Bespiel eines WeMos-DHT22-Sensors (Device: Temperature & Humidity – DHT). Der Sensor ist an Pin GPIO-2 angeschlossen. Der DHT Type ist entsprechend auf DHT 22 eingestellt. Der Name kann frei gewählt werden. Wichtig ist jedoch der „IDX/VAR“ Eintrag. Dieser muss einmalig und eindeutig sein. Mit dieser Nummer werden später die Sensordaten ausgelesen. Des Weiteren sollten die „Value Namen“ so angepasst werden, dass man erkennt, welche Werte dahinter stecken. Diese werden später gebraucht, um die Werte in FHEM anzeigen zu lassen.

WeMos DeviceDHT EasyESP

Bevor man mit dem Einrichten unter FHEM beginnt, sollte man unter „Tools“ in die Advanced-Einstellunge gehen. Hier sieht man unter „Publish Template“ die Syntax mit der die Daten gesendet werden.

EasyESP Advanced

Die „id“ ist die „IDX/Var“ die dem Sensor unter „Devices“ zugewisen wurde. Der „valname“ beschreibt den Namen des Sensorwertes.

Sollten alle Einstellungen korrekt sein, kann man mit folgendem Befehl den „Verkehr“ beobachten:

mosquitto_sub -d -v -t \#

Sobald der Sensor Daten sendet werden diese angezeigt. Hier erkennt man nun sehr gut den Syntax des Sensors.

MOSQUITTO Log

In diesem Fall sendet der Sensor die Werte mit folgendem Syntax:

/hooks/devices/11/SensorData/Luftfeuchtigkeit
/hooks/devices/11/SensorData/Temperatur

Diese sind später wichtig für Konfiguration unter FHEM. Mit ihr werden die Readings definiert.

Einrichtung in FHEM

Der Sensor sendet nun fleißig seine Daten ins Netzwerk. Diese werden vom MQTT-Broker auf dem Raspberry empfangen. Diese Nachrichten können wir nun in FHEM mitlesen und als Readings definieren.

Dazu wird erstmal der MQTT-Broker als Device definiert. Er bildet das Bindeglied zwischen dem MQTT-Broker auf dem Raspberry und der FHEM-Installation.

define Mosquitto MQTT 192.168.2.125:1883

Die IP-Adresse ist der Adresse des Raspberrys auf dem Mosquitto eingerichtet ist.

MosquittoBroker FHEM

Nachdem der Broker definiert wurde, kann man sich an das Definieren des Sensors selber machen. Dieser wird als MQTT-Device definiert:

define WeMos_WZ MQTT_DEVICE

Der Name „WeMos_WZ“ kann beliebig angepasst werden. Damit das Device nun die Sensorwerte empfängt müssen noch einige Attribute hinzugefügt werden.

attr WeMos_WZ IODev Mosquitto
attr WeMos_WZ subscribeReading_Luftfeuchtigkeit /hooks/devices/11/SensorData/Luftfeuchtigkeit
attr WeMos_WZ subscribeReading_Temperatur /hooks/devices/11/SensorData/Temperatur
attr WeMos_WZ stateFormat Temperatur °C, Luftfeuchtigkeit %

Das IODev entspricht den oben definierten MQTT-Broker. Die beiden subscribeReadings dienen dazu, die gesendeten MQTT-Nachrichten als Reading anzuzeigen. Dabei kann der Name des Readings „subscribeReading_NAME“ beliebig gewählt werden. Der anschließend angegebener Syntax muss jedoch dem entsprechend, welcher unter ESP Easy Eeangegeben wurde. Das stateFormat kann natürlich je nach Wunsch angepasst werden.

MQTT Device EasyESP WeMos FHEM

Die Sensordaten werden nun über den MQTT-Broker auf dem Raspberry an die FHEM-Installation gesendet. So lassen sich auch die kompakten WeMos-Sensoren leicht in FHEM einbinden. In meinem Alltagseinsatz haben die WeMos-Sensoren immer mehr die MySensors-Sensoren abgelöst. Ihre kompakte Bauweise und der schnelle Zusammenbau haben mich überzeugt. Des Weiteren laufen sie auf Dauer zuverlässiger. Bei meinen MySensors-Sensoren kommt es alle paar Wochen zu einem „einfrieren“ der Sensoren, der nur durch einen reboot des Sensors behoben werden kann. Ich bin gespannt was uns WeMos in der Zukunft noch an Sensoren bietet und bleibe diesbezüglich am Ball 😉

Einrichtung ab Version 120 – espBridge und ESPEasy

Solltet die verwendete ESPEasy Version noch nicht auf die aktuelle Version aktualisiert worden sein. Dann solltet ihr dies zunächst nachholen. Dazu einfach die aktuelle Version von der ESPEasy-Homepage downloaden. Stand Februar 2017: R147.

Nachdem man die Hardware (z.B. ein WeMos-Chip) an den Computer angeschlossen hat, kann man über die Datei „Flash.cmd“ den Flash-Vorgang starten und die Version R147 auf den Chip laden. Mehr Infos dazu auf meinem Blog-Beitrag zu ESPEasy.

Loggt man sich nun auf die Web-Oberfläche von ESPEasy ein, kann mit der Konfiguration begonnen werden.

Anstelle MQTT als Protokoll zu verwenden, kann man nun direkt FHEM auswählen.

Unter „Devices“ kann nun der Sensor selbst definiert werden. Mehr Infos dazu weiter oben. Beim verwendeten FHEM-Protokoll ist jedoch der IDX-Eintrag nicht mehr wichtig. Es ist nur notwendig die Readings einen Namen zu vergeben. Diese Namen werden später auch in FHEM für die Readings verwendet.

Einrichtung in FHEM

Die Einrichtung in FHEM erfolgt nun über ein Gateway-Device.

define espBridge ESPEasy bridge 8383

Befinden sich nun ESPEasy-Sensoren im Netzwerk, so werden diese automatisch in FHEM eingerichtet.

Nützliche ESP-Bausteine: WeMos

Letzte Aktualisierung am 21.09.2017 / Affiliate Links / Bilder von der Amazon Product Advertising API

Hinterlasse einen Kommentar

9 Kommentare auf "ESP Easy Sensoren in FHEM einbinden"

Benachrichtige mich zu:
avatar
Fotos und Bilder
 
 
 
sonstiges Dateiformat
 
 
 
Sortiert nach:   neuste | älteste | beste Bewertung
Alec
Gast
Alec

Hi, eine kurze Frage

ist in deinem Beispiel die MQTT Instanz und die FHEM Installation auf dem gleichen Gerät?
Meines Wissens sind zusätzlich noch CPAN Pakete zu installieren damit das MQTT Modul in FHEM läuft.

Mein Problem Aktuell ist das ich eine MQTT Instanz auf einem separaten Server habe und ich es nicht hin bekomme das sich das FHEM Modul damit connected.

Flo
Gast
Flo

Hallo Daniel, ist es denn möglich, die Kommunikation ereignisbasiert zu modellieren? Möchte gerne einen Magnetsensor installieren, der nur beim Wechsel zwischen 1/0 an FHEM sendet.

Gruß Flo

Marcel
Gast
Marcel

Hallo Daniel,

ist es auch möglich eine 4-Kanal Relaiskarte über den ESP8266 zu triggern?

Ich würde gerne meine Leinwand (Rauf/Stop/Runter) über FHEM automatisieren.

Gruß Marcel

Andreas Noll
Gast
Andreas Noll

Hallo,

die Net::MQTT Pakete müssen auf dem Raspberry, auf dem FHEM läuft, installiert werden. In der commandref zu MQTT und MQTT_DEVICE steht das auch so drinnen. Habe mich an die Anleitung hier gehalten. Damit funktioniert es auch.

Gruß
Andreas

Christian Laufs
Gast
Christian Laufs

Kann man mit der neuen Methode (espeasy) auch direkt Daten an ein Relais oder Display schicken?

Philipp
Gast
Philipp

Hi Christian,

dieser Forumsbeitrag behandelt genau die Idee mit dem Display:
https://forum.fhem.de/index.php/topic,64066.0.html

Und dieser Wiki-Eintrag sagt, wie du die Relais schalten kannst:
https://www.letscontrolit.com/wiki/index.php/Relais

Mfg
Philipp

Christian
Gast
Christian
Hallo, ich hab einen Wemos D1 mini und einen DHT22 Shield. Beide habe ich miteinander verlötet. Mein Ziel ist diese Kombi in FHEM einzubinden. Das würde ich gerne ohne den Umweg über MQTT machen. Beim Flashen der Firmware 147 scheint es bei mir schon nicht zu klappen. Es wird kein WLAN wie beschrieben aufgebaut und es hat auch keinen Passwortschutz. Ich kann ins WLAN gehen, aber es gibt weder über den PC noch über das iPhone eine Möglichkeit die Konfiguration zu starten. Muss ich vor dem Flashen der Firmware noch weitere Schritte durchführen. Ich hab den Wemos einfach aus der… weiterlesen »
wpDiscuz