Neues Modul: ESPEasy [war: ESPEasy ohne MQTT]

Begonnen von dev0, 18 Juli 2016, 11:53:28

Vorheriges Thema - Nächstes Thema

dev0

Das ESPEasy Modul ermöglicht Daten von einem ESP8266, mit ESPEasy R128+, zu empfangen und den ESP8266 zu steuern ohne einen zusätzlichen MQTT Broker.

Download FHEM Modul: Bestandteil von FHEM seit dem 24.02.2017
Download ESPEasy R128+: https://github.com/ESP8266nu/ESPEasy
Fertig compilierte ESPEasy Images für den ESP8266 gibt es hier: http://www.letscontrolit.com/wiki/index.php/ESPEasy#Loading_firmware (mindestens R140 RC3 benutzen)

Nach dem Flashen des ESP "FHEM HTTP" in der ESPEasy WebGui auswählen und Controler IP/Port einstellen.
Danach muss, auf FHEM Seite, als erstes das Bridge Device definiert werden:
define espBridge ESPEasy bridge 8383

Ist die Bridge einmal definiert, dann werden, beim Empfang der Daten, die entsprechenden FHEM Devices automatisch angelegt.

Das automatische Anlegen von FHEM Devices und das automatische Speichern der Konfiguration wird durch die globalen FHEM Einstellungen aktiviert. Diese Einstellunegn kann man mit den Attributen autocreate/autosave überschreiben.

Die automatisch angelegten FHEM Devices können beliebig umbenannt werden, da die Zuordnung zwischen ESP Daten und FHEM Devices nicht über den FHEM Device Namen, sondern über das Internal IDENT erfolgt. Hinweis: FHEM Devices vom Typ ESPEasy nicht durch Bearbeiten der fhem.cfg umbenennen sondern den Befehl "rename" benutzen. Glaubt mir.

Will man GPIO Ports des ESP schalten, so kann man das durch eine Kombination der Attribute eventMap, stateFormat und devStateIcon vereinfachen. Dieses Beispiel für GPIO15 zeigt einen Schalter in FHEMWEB, der auch die Zustände "absent" und "hat noch keine definierten Zustand" berücksichtigt:

attr <ESP> stateFormat {ReadingsVal($name,"presence","") eq "absent" ? "absent" : ReadingsVal($name,"GPIO15","")}
attr <ESP> devStateIcon on:ios-on-green:off off:ios-off:on absent:10px-kreis-rot:statusRequest .*:ios-NACK:check
attr <ESP> eventMap /gpio 15 on:on/gpio 15 off:off/status gpio 15:check/
attr <ESP> webCmd :


Beispiel für den ESP internen on-for-timer. Damit kann man z.B. "set <ESP> on-for-timer 3" benutzen anstatt "set <ESP> longpulse 15 1 3" schreiben zu müssen.

attr <ESP> eventMap /longpulse 15 on:on-for-timer/longpulse 15 off:off-for-timer/


Getestete Entwicklungsumgebung:
- Arduino IDE 1.6.9
- Boardmanager -> http://arduino.esp8266.com/stable/package_esp8266com_index.json -> esp8266 by ESP8266 Community version 2.3.0
- Libraries aus dem neusten ESPEasy Paket (z.Z R120)
- ab ESPEasy R109 wird die pubsubclient library 2.6+ benötigt -> https://github.com/knolleary/pubsubclient
- ab ESPEasy R120 wird die ArduinoJson library 5.6.4+ benötigt -> https://github.com/bblanchon/ArduinoJson

Edit: (24.02.2017):
- Aktualisiertes Modul v1.0 ins FHEM svn eingecheckt.

** Dieser erste Beitrag wurde grundlegend überarbeitet, da es ursprünglich in diesem Thread nur um die Entwicklung des "FHEM HTTP" ESPEasy Plugins (_C009.ino) ging.

Chris_Worms

Sehr cool! Werde ich die Tage mal testen.
Raspberry Pi 2/HM-CFG-LAN/HM-ES-PMSw1-PI/HM-LC-Sw1-PL/HM-Sec-MDIR-2/JeeLink V3/LaCrosse Temp/Humidity/Bluetooh USB Dongle/PebbleBee Bluetooth Tags

FHEM/MySQL/Apache/SmarVisu

Ranseyer

Danke erst mal für die super Software.

Bis ich mal wieder Libs + IDE +ESP-Easy zusammen hatte das war leider übliche Fluchen.

Aber dann war es wirklich easy:
- dein "AddOn" einkopieren
- ein "define ESP01 dummy" #so heisst der Kerl
- und schon gibt es wie von Zauberhand neue Readings in FHEM:

ZitatHumidity 52
Temperature 26.8


Also wirklich krass einfach. Danke !
FHEM mit FTUI. Homematic-Funk für Thermostate und Licht. MySensors als Basis für eigene HW.
Zentrale ist der MAPLE-CUL mit RFM69+HModUART-AddOn.
Doku zu meinen Projekten: Github/Ranseyer. Platinen falls verfügbar gerne auf Anfrage.
Support: gerne wenn ich Zeit+Lust habe im Forum. Nicht per PN!

fh168

Hallo,

kann man auch zum ESP Daten übertragen?

LG
/robin
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

dev0

Daten werden noch nicht zum ESP übertragen. Kann ich aber bei Gelegenheit versuchen einzubauen. Testen müsstest Du das dann, da ich keine Anwendung dafür habe, ok?

fh168

klar, ich habe noch einige Witty Boards hier liegen. Da könnte ich bspw. eine RGB-Led zum leuchten bringen.
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

spike08122

Jetzt habe ich es gerade mit MTQQ hinbekommen und jetzt gibt's wieder was neues. Echt verrückt
FHEM auf RPI B+, Steuerung von Baumarktsteckdosen (ELRO), Steuerung der Aquariumbeleuchtung mit LD382 in Planung, WLAN Temp-Sensor mit ESP8266 und EPSEasy

dev0

MQTT ist ja nichts schlechtes, ich fande es so nur einfacher... ;)

fh168

eben, man muss nicht wegen einem Sensor einen kompletten MQTT-Broker bauen. Wenn man mehrere Sensoren hat, sieht das ganze schon anders aus. Ich nutze Mosquitto auch.
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

sbiermann

Naja Mosquitto bauen muss man ja nicht unbedingt. Mit Raspbian Jessie kann man auch einen Mosquitto Broker per Docker Image nutzen. Mit Raspbian Wheezy muss man allerdings erst den Kernel neu bauen um die Docker notwendigen Optionen im Kernel zu bekommen. Aber dann geht es dort auch mit Docker.
Die Idee mit ESP Easy direkt an FHEM zu senden ist natürlich die einfachste Art.

amithlon

Hallo,

Mosquitto läßt sich auf dem RasPi unter Jessie recht einfach installieren:
http://blog.wenzlaff.de/?p=6487

Gruß aus Berlin
Michael

eppi

Hallo dev0
Besten Dank für das coole Plugin! Ich habe es heute getestet und musste ein dediziertes FHEM-WEB einrichten ohne Benutzername und Passwort. Der Grund liegt darin, dass meine FHEM-WEB mit komplexen Benutzernamen und Passwörter mit einigen Sonderzeichen (basicAuth) gesichert sind und ESPeasy damit ein Problem hatte.

Besteht die Möglichkeit, dass du ein Plugin schreibst für FHEM-TELNET? Das würde mich sehr freuen.
Danke und viele Grüsse Eppi

dev0

Funktioniert basic auth denn generell oder liegt es an den Sonderzeichen? ich habs noch nicht getestet.
Telnet: habe ich nicht vor, aber Du kannst gerne einen Patch schreiben ;)

eppi

Zitat von: dev0 am 20 Juli 2016, 19:59:39
Funktioniert basic auth denn generell oder liegt es an den Sonderzeichen? ich habs noch nicht getestet.

wenn ich einen einfach user und pwd name eingebe ohne Sonderzeichen, dann scheint es zu funktionieren. Getestet habe ich es nicht, aber nach einem save im Bowser des Espeasy bleibt er korrekt stehen. Beim meinen Username und Passwort setzt er die beiden Wörter zusammen in beide Felder...

Trotzdem Danke für deine Mühe!

dev0

Wenn es generell funktioniert, dann bin ich raus. Dann müsstest du dich an den ESPEasy Autor wenden: http://www.esp8266.nu/forum/