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/ESPEasyFertig 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/ArduinoJsonEdit: (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.