Freitag, 14. Juli 2017

Elektrodrachen und so

Fertige IoT Module mit dem ESP Modul gibt es mittlerweile Einige. Von SonOff eine ganze Palette, dazu gibt es auch schon Anleitungen im FHEM Wiki.
Eine Alternative mit nicht so breiter Palette liefert Electrodragon. Ich habe mir zwei Module (SPDT und VDC Version ist die Bezeichnung von Electrodragon) von denen bestellt und möchte die Einbindung in FHEM hier kurz vorstellen.
All diesen Modulen gemeinsam ist, dass sie quasi ohne Lötarbeit für FHEM einsatzbereit gemacht werden können, der Interface Stecker zur Programmierung ist schon vorhanden. Die Module enthalten den ESP 12E Baustein mit 4 MB Flash.
Im Gegensatz zu SonOff liefert Electrodragon keine fertige Software und keine App mit. Diese Module sind für den "normalen Anwender" also nicht brauchbar.

Achtung: 

  1. Niemals die Module programmieren oder im offenen Zustand betreiben wenn sie mit dem Stromnetz verbunden sind!
  2. Die Stromversorgung während der Programmierung erfolgt besser durch eine separate 5 V oder 3,3 Volt Spannungsquelle. Sonst ist der Erfolg beim Flashen nicht gewährleistet. Beim Betrieb mit 3,3 Volt funktionieren die Relais nicht sauber! 
  3. Es sind keine Güte- und Prüfsiegel vorhanden! 

Electrodragon liefert derzeit 3 fertige Relais Module, zwei mit SPST Relais (einfacher Schließer) und eines mit SPDT Relais (Umschalter). Leider ist die Beschreibung im Shop relativ dürftig, es sind aber die Schaltpläne verfügbar. Alle Module verfügen über einen bestückten 12 poligen Steckverbinder zum Anschluss der Programmierumgebung und eventuell weitere Komponenten. Sie verfügen weiterhin um einen vorbereiteten Lötanschluss für einen DHT22. Das SPST Modul mit Niederspannungsversorgung hat zusätzlich einen vorbereiteten Lötanschluss für D0-D3 VCC GND.

Verwendungsmöglichkeiten aus meiner Sicht


SPDT Variante
Separates Netzteil zur Speisung 65-250 Volt AC, der Speiseeingang ist nicht mit den Relaiskontakten verbunden! Die Umschaltkontakte der beiden Relais sind separat herausgeführt. Die Kontakte sind damit potentialfrei.

SPST Variante mit Stromversorgung 85-250 Volt AC
Die Schließerkontakte der beiden Relais sind einseitig bereits mit der Speisespannung verbunden. Dieses Modul ist zum Einsatz von Schaltaufgaben mit minimalem Verkabelungsaufwand im Haushalt gedacht. Die Netzspannung kann auf zwei Verbraucher geschaltet werden, sowohl Versorgung als auch Verbraucher haben separate zweipolige Klemmen.

SPST Variante (VDC Version) mit Niederspannung Gleichstromversorgung 5-24 Volt DC
Im Auslieferungszustand sind die Schließerkontakte der beiden Relais einseitig bereits mit der Speisespannung verbunden. Der Pluspol der Speisespannung kann auf zwei Verbraucher geschaltet werden. 
Das Board bietet aber die Möglichkeit den Pluspol der Speisespannung und Schaltspannung zu trennen. Außerdem bietet es die Möglichkeit das Modul separat mit 5 Volt zu versorgen. Dabei ist die Schaltspannung der beiden Relais wählbar (AC oder DC). 
Die Eingangsspannung kann auf zwei Verbraucher geschaltet werden, sowohl Versorgung als auch Verbraucher haben separate zweipolige Klemmen. Man hat damit auch ein Modul mit Niederspannungsversorgung und zwei potentialfreien Schließerkontakten. 
Die Konfiguration der einzelnen Varianten erfolgt mit Jumpern bzw. Lötbrücken.

Praktisches Einsatzbeispiel

Mein Freund Steffen hat mit einem SPST Modul einen Zwischenstecker realisiert. Für kleines Geld gibt es z.B. bei conrad ein universelles Gehäuse (TRU COMPONENTS TC-SG 1022 SW203) und einen Dichtring (TRU COMPONENTS TC-SG 1015 SW203).

Programmierung

Electrodragon hat eine Art Demo Software vorinstalliert, mit der man einen MQTT Server anbinden kann. Ich will das Modul mit ESPEasy flashen und an FHEM anbinden.
Notwendige Hardware: 
Eine serielle Schnittstelle mit 3,3 Volt Logikpegel! (z.B. FTDI USB Adapter)
Eine 5 Volt oder 3,3 Volt Stromversorgung die etwa 300 mA liefern kann. 

Achtung!
Der typische FTDI Adapter kann nur 50 mA liefern und eignet sich nicht zur Stromversorgung! 
Man könnte das Modul über den 5 Volt Anschluss direkt vom USB versorgen, allerdings hat mein FTDI Adapter dafür kein Pin. Mit dem CP2102 Adapter geht das.

Ich verwende ein Breadboard, eine 5 / 3,3 Volt Stromversorgung fürs Breadboard und einen USB/seriell Adapter (mit CP2102 oder FTDI Chip aber unbedingt (3,3 Volt !) sowie ein paar Steckbrücken.
  • Spannungsversorgung aus!
  • Alle Masseanschlüsse werden verbunden, Spannungsanschlüsse am USB/Seriell Wandler werden nicht mit der separaten Versorgung verbunden
  • Stromversorgung an das Modul, Aufpassen! Entweder -> 5 V an 5 V ODER 3,3, V an 3,3 V
  • RX von der seriellen Schnittstelle an TX vom Modul
  • TX  von der seriellen Schnittstelle an RX vom Modul
  • USB Stecker an USB seriell Adapter
  • Spannungsversorgung ein.
Wird die allgemeine Spannungsversorgung mit verbundenem TX RX aber spannungslosem USB/seriell Wandler hergestellt, kann es sein, dass der ESP nicht richtig startet oder sogar "Factory Reset" durchführt.

Zum flashen muss beim Einschalten der Spannungsversorgung, der BTN2 (BTN) Knopf gedrückt  werden. Als Quittung leuchtet die Status LED dauerhaft. Die Bezeichnung der Knöpfe im Plan und Aufdruck ist nicht ganz konsistent.
Man muss beim Aufbau dafür sorgen, dass man leicht mit einer Hand die Stromversorgung stecken kann (Breadboard und Steckbrücke).
Im Detail ist der Flashvorgang hier beschrieben 

Auf dem SPST/VDC Board ist der zweite Knopf (RST) wirklich der Reset Knopf.
Auf dem SPST (Netzteilversion) /SPDT Board ist der zweite Knopf (BTN1) mit GPIO-02 verbunden. Hier muss der Reset also durch kurze Spannungsunterbrechung erfolgen.

Die Einbindung in FHEM zeige ich in diesem Artikel

Montag, 10. Juli 2017

Einbindung von ESPEasy Schaltern in FHEM

Die aktuellen Informationen findet man in der Doku  und im Forum.
Hier habe ich schon mal die Einbindung beschrieben.
ESPEasy kennt kein Relais Gerät als Output. Es kennt nur einen Switch Input. Ein GPIO Pin wird in dem Moment, wo man einen logischen Zustand setzt, einfach auf Ausgang gesetzt. Beispiel
in der ESPEasy Weboberfläche gpio,12,1
in FHEM set <ESPEasy Device Name> gpio 12 on
Genau genommen bräuchte man in ESPEasy für FHEM nichts definieren, allerdings würde das ESPEasy Modul dann auch kein Gerät erzeugen. Da man von seinem Schalter ja auch Lebenszeichen erhalten will, konfigurieren wir die Übertragung der Feldstärke (rssi) und als Status Rückmeldung einen Switch Input. Der eigentliche Schaltvorgang wird über eine eventMap erzeugt.
Durch die Wahl des Namen auf den Deviceseiten erzeugt man in FHEM ein oder mehrere Geräte. Der Name muss also nicht Unikat sein und soll es für diesen Fall auch nicht! Bei gleichen Namen erzeugt FHEM einfach ein weiteres Reading. Der Name im Feld Value bestimmt den Namen des Reading.

ESPEasy konfigurieren

Nach der WLAN Konfiguration mit dem Smartphone (mit ESP_0 verbinden) kommt man mit http://newdevice auf die Weboberfläche. Ich habe diesmal mit der Version 2.0.0 dev10 gearbeitet.
Die einzelnen Konfigurationsschritte (Seiten) immer mit Submit abschicken und das Häkchen bei Enabled nicht vergessen!

Config
Den Namen setzen: EDSPST1
Der neue Name ist im Browser sofort sichtbar, wirkt als Hostname aber erst nach dem nächsten Neustart.

Controllers
Hier ist ein Wert per default vorkonfiguriert, den ändern wir mit Edit.
Hinweis: Das Feld für Controller User und Password wird nur ausgefüllt wenn in FHEM bei der espBridge das Attribute authentication auf 1 gesetzt ist und die Werte für user und pass übergeben wurden!

Hardware
Keine Änderung.

Devices
Hier konfiguriert man zunächst zwei Geräte für die Relais, welche mit GPIO-12 und GPIO-13 verdrahtet sind.


Zusätzlich konfiguriert man noch den RSSI Wert, damit hat man eine Information über den WiFi Empfang des Moduls und dieser Wert sorgt für permanente Status Updates. Dieses Gerät erzeugt man zweimal, nur der Name wird unterschiedlich SW1 bzw. SW2.

Zum Schluss sieht die Konfiguration so aus

Pro vergebenen Device Namen (Name Spalte) wird von der espBridge ein Gerät erzeugt. Der Value Name (Value Spalte) erzeugt je ein Reading.
In FHEM sind durch diese Konfiguration zwei Geräte mit je zwei Readings entstanden.

FHEM konfigurieren

Durch die Übertragung der rssi Werte hat die espBridge in FHEM zwei Geräte erzeugt mit dem Namen ESPEasy_EDSPST1_SW1 und ESPEasy_EDSPST1_SW2. Diese muss man jetzt noch so konfigurieren, das die Schalter auch bedient werden können. Das wichtigste ist eine eventMap:
attr ESPEasy_EDSPST1_SW1 eventMap /gpio 12 on:on/gpio 12 off:off/
attr ESPEasy_EDSPST1_SW2 eventMap /gpio 13 on:on/gpio 13 off:off/
Damit entstehen on und off Kommandos für den set Befehl und für webCmd. Jetzt kann man die Schaltfunktion prüfen.

Damit der Status richtig angezeigt wird, braucht man noch ein angepasstes stateFormat

attr ESPEasy_EDSPST1_SW1 stateFormat {ReadingsVal($name,"presence","") eq "absent" ? "absent" : ReadingsVal($name,"Switch","")}

Das sieht jetzt schon mal gut aus, ist aber noch nicht perfekt.

Nur mal zur Vollständigkeit die bis hierher komplette Definition, also das automatisch Erzeugte und Ergänzungen/Änderungen:
defmod ESPEasy_ED230V_SW1 ESPEasy 192.168.178.107 80 espBridge ED230V_SW1
attr ESPEasy_ED230V_SW1 IODev espBridge
attr ESPEasy_ED230V_SW1 Interval 300
attr ESPEasy_ED230V_SW1 eventMap /gpio 12 on:on/gpio 12 off:off/
attr ESPEasy_ED230V_SW1 group ESPEasy Device
attr ESPEasy_ED230V_SW1 presenceCheck 1
attr ESPEasy_ED230V_SW1 readingSwitchText 1
attr ESPEasy_ED230V_SW1 room ESPEasy
attr ESPEasy_ED230V_SW1 setState 3
attr ESPEasy_ED230V_SW1 stateFormat {ReadingsVal($name,"presence","") eq "absent" ? "absent" : ReadingsVal($name,"Switch","")}


Mit attr <> setState 0 kann man die interne Erzeugung des state Readings ausschalten. Nun kann man mit verschiedenen Methoden z.B. einem userReadings sein eigenes state erzeugen.
state {ReadingsVal($name,"Switch","") }

Noch die Idee aus dem Forum für on-for-timer muss ich noch probieren

attr <deinEsp> eventMap /longpulse 5 on:on-for-timer/longpulse 5 off:off-for-timer/gpio 5 on:on/gpio 12 off:off/status gpio 15:check/

Hier wird noch gearbeitet ...