HM-MOD-EM-8bit 3-Kanal-Sendemodul mit 8-Bit-Datenkanal

Aus FHEMWiki
(Weitergeleitet von HM-MOD-EM-8bit)
HM-MOD-EM-8bit 3-Kanal-Sendemodul mit 8-Bit-Datenkanal
3-Kanal-Sendemodul mit 8-Bit-Datenkanal
Allgemein
Protokoll HomeMatic
Typ Sender (Sensor oder Remote)
Kategorie HomeMatic
Technische Details
Kommunikation Funk 868MHz
Kanäle 3
Betriebsspannung 2-3,3V bzw. 3,5-12V
Leistungsaufnahme typisch 30 bzw. 60µA, bis 28mA (Sendevorgang)
Versorgung Batterie oder Kleinspannung
Abmessungen 42x22x12mm
Sonstiges
Modulname CUL_HM
Hersteller ELV / eQ-3


HM-MOD-EM-8bit ist ein Modul für eigene Hardware-Entwicklungen (ähnlich dem 8-Kanal-Sendemodul HM-MOD-EM-8) zum Übermitteln von Schaltbefehlen oder Kontaktzuständen

Features

Offenes (gehäuseloses) Einbaumodul mit ingesamt 3 Eingangskanälen. Kanal 1 und 2 sind einkanalige Signaleingänge, anders als beim HM-MOD-EM-8 fest als Taster-Interface (sendet Short- bzw. Long-Trigger) konfiguriert. Kanal 3 besitzt 8 Dateneingänge (Bits), deren Zustand zusammengefasst als ein Byte interpretiert und mit diesem Wert gesendet werden. Wann ein Wert gesendet wird, kann mit sieben verschiedenen Modi eingestellt werden, wahlweise unter Einbeziehung einer weiteren Signalleitung, die als Trigger- oder Freigabeleitung dient.

Alle Einzelleitungen können wahlweise als Taster bzw. Schalter gegen GND und/oder als spannungsempfindlicher Eingang (2-24V) beschaltet werden, ähnlich dem 8-Kanal-Modul HM-MOD-EM-8. Beide Möglichkeiten können gleichzeitig benutzt werden und sind intern ODER-verknüpft. Dabei ist zu beachten, dass im Auslieferungszustand die Datenleitungen wie auch die Freigabeleitung logisch negativ betrachtet werden, d.h. ein offener Anschluss wird als logisch HIGH interpretiert, der übermittelte Wert von 8 offenen Dateneingängen ist also insgesamt "FF". Für die acht Datenleitungen kann jedoch je Leitung festgelegt werden, ob der Signalpegel am Eingang invertiert interpretiert werden soll.

Das Modul ist in Grenzen pinkompatibel zum HM-MOD-EM-8. Dessen acht Eingangskanäle entsprechen nunmehr den Datenleitungen. Für die Datenübernahmeleitung sowie die zusätzlichen Tastereingänge (Kanal 1 und 2) als auch dem ebenfalls von außen steuerbaren Konfigurationstaster wurden zahlreiche bisher intern mit GND verbundenen Pins benutzt, so dass für GND jetzt nur noch Pin12 verfügbar ist. Stromversorgung und die Ausgänge der Statusleitungen (Status_R, Status_G, Status_S) sind unverändert.

Weitere technische Daten:

  • Eingangsimpedanz der Spannungseingänge: 10 kOhm (und eine Basis-Emitter-Strecke eines Transistors)
  • Mindestwerte für Eingänge für ein sicheres Erkennen: 5,6 µA (experimentell ermittelt) / 0,7 V / ca. 780 kOhm bei 5V
  • Höchstwiderstand am Tastereingang: 33 kOhm (experimentell ermittelt)
  • Gewicht: 8 g

Aktuelle Firmware: 1.0 (Stand Mai 2017)

Hinweise zu Inbetriebnahme und Installation

Das Modul ist nur als ARR-Bausatz erhältlich (Stand Mai 2017). Es ist auf einer Leiterplatte mit Steckkontakten untergebracht, das auf eigene Schaltungen gesockelt werden kann. Es verfügt über insgesamt 12 Eingänge für Taster sowie 12 Eingänge für eine Spannung von 2-24V, die über Transistoren die Eingänge des Prozessors parallel zu den Tasteneingängen kurzschließen (ODER-Verknüpfung). Außerdem gibt es Ausgänge für drei Status-LEDs (rot, grün wie für HM als Sendequittung üblich sowie einen dritten Ausgang, der aktiv ist, solange das Modul selbst sendet). Das Gerät besitzt einen Konfigurationstaster und eine onboard-LED, die im Auslieferungszustand jedoch nur den Batteriestatus meldet (bei schwacher Batterie) und keine Sendedaten quittiert, um Strom zu sparen. Die LED kann aber über Register eingeschaltet werden und sendet dann wie üblich mit gelb und ggf. rot oder grün als Quittung.

Die Stromversorgung erfolgt über Batterie (2-3,3 V) oder Kleinspannung 3,5-12 V.

Betrieb mit FHEM

Das Modul muss zur Pairen manuell in den Konfigurationsmodus versetzt werden (onboard-Taster), empfängt dann aber Konfigurationstelegramme im Zusammenhang mit Sendevorgängen, z.B. bei Statusänderungen an den Eingängen (sog. lazyConfig). Dies erleichtert die nachträgliche Konfiguration bereits eingebauter Module. Das Anlernen erfolgt in FHEM wie üblich. Danach stellt das Gerät 3 Kanäle (_Btn_01 und _Btn_02 sowie _Tr) bereit. Alle drei können direkt mit anderen Aktoren gepeert oder FHEM-intern verarbeitet werden.

Der Übermittlungsmodus der Kanäle 1 und 2 ist auf "button" festgelegt und nicht änderbar, für Kanal 3 wird er mit dem Register dataTransCond bestimmt und ggf. mit dem Zeitregister stabFltTime ergänzt. Zu beachten ist, dass der Pegel der Eingänge "ungewohnt" behandelt wird: Ein Eingang wird als HIGH interpretiert, wenn er unbeschaltet ist (Taster offen oder keine Spannung angelegt), und als LOW wenn er mit Taster oder Spannung aktiviert ist.

Modus 1-3: Sendung bei Änderung des Pegels an DU30 (Taster-Eingang, offen=HIGH, geschlossen=LOW) bzw. Spannungseingang DUI30 (offen HIGH, mit Spannung LOW):

  • Modus 1 (lvlChng_H_L): Senden bei Änderung HIGH->LOW
  • Modus 2 (lvlChng_L_H): Senden bei Änderung LOW->HIGH
  • Modus 3 (lvlChng_any): Senden bei HIGH->LOW und LOW->HIGH

Modus 4 und 6: Senden bei Änderungen einer oder mehrerer Datenleitungen, wenn diese länger als die "Datenstabilitätsfilterzeit" (stabFltTime) anliegen (bei kurzen Änderungen erfolgt keine Sendung - ähnlich dem eventFilterTime bei Sensoren: Sendung erst x Sekunden nachdem es eine Änderung gab)

  • Modus 4 (stbl4TimeEnable): Sendung erfolgt wenn Datenübertragungseingang HIGH
  • Modus 6 (stbl4TimeDisable): Sendung erfolgt wenn Datenübertragungseingang LOW

Modus 5 und 7: Senden sofort bei Änderung, danach Mindest-Wartezeit (ebenfalls stabFltTime, ähnlich dem minInterval etwa bei Bewegungsmeldern - Wartezeit nach Meldung einer Bewegung)

  • Modus 5 (sndImmediateEnable): Sendung erfolgt wenn Datenübertragungseingang HIGH (bei LOW erfolgt keine Sendung)
  • Modus 7 (sndImmediateDisable): Sendung erfolgt wenn Datenübertragungseingang LOW (bei HIGH erfolgt keine Sendung)

Beispiel: das Modul soll den Datenzustand 2 Sekunden nach der letzten Datenänderung an den Leitungen senden, wenn der Datenfreigabeeingang (DU30 oder DUI30) unbeschaltet ist (DUI30 darf auch auf GND liegen):
set <Name-des-Datenkanals> regSet dataTransCond stbl4TimeEnable

set <Name-des-Datenkanals> regSet stabFltTime 2.

Die acht Register dInProp0 bis dInProp7 legen zudem fest, ob der Eingang normal (Wert off = 0 bei Tasterbetätigung oder Spannung am Eingang) oder invertiert (Wert on = 1 bei Tasterbetätigung oder Spannung am Eingang) behandelt wird. So kann man zumindest bei den Dateneingängen die eher gewohnte Logik wiederherstellen.

Auf Device-Ebene lässt sich durch Setzen des Registers ledMode die onboard-LED für Sendequittungen ein- bzw. ausschalten: set EM-8-Device regSet ledMode on bzw. off.

Konfigurationen werden wie üblich per set <Name-des-Gerätes-bzw-Kanals> regSet <Registername Wert> durchgeführt, wenn FHEM den aktuellen Status der Register besitzt, wozu ggf. zuvor ein getConfig ausgelöst werden muss. Zudem muss die Konfigurationstaste oder ein Eingang betätigt werden.

Will man eine reine binäre Auflistung der Eingänge, kann man folgendes Attribut für den 3. Kanal setzen:
attr <Name-des-Datenkanals> userReadings inputs {ReadingsVal($name,'state',0)=~/([0-9A-F]{2})/;reverse(sprintf("%08b",abs(hex($1)-255)))}
Dadurch wird ein neues Reading mit dem Namen inputs generiert, das die Zustände als 1 bzw. 0 anzeigt. Anzeige: inputs 11000000 (Eingang 0 und 1 geschlossen)
Die Auflistung erfolgt dabei in Lesereihenfolge, d.h. links ist Eingang 0 und rechts Eingang 7. Somit kann über ein einfaches substr(ReadingsVal(<Name-des-Datenkanals>,'inputs',0),x,1) der Zustand des x-ten Einganges erfragt werden.
(Hinweis: Für eine einfache Lesbarkeit bedeutet 1 verbunden und 0 nicht verbunden, entgegen der Standardlogik des Bausatzes (siehe weiter oben). Die Formel für das UserReading funktioniert so nur, wenn die Standardeinstellungen für dInProp\d noch gelten. Ansonsten muss einfach die Subtraktion mit 255 entfernt werden.)


Bekannte Probleme

Derzeit (Jan 18) ist beim Register stabFltTime nur die Angabe vom Werten größer 10s möglich. Möchte man aber kleinere Werte benutzen, ist dies über ein set <Name-des-Datenkanals> regBulk RegL_01 xxx möglich. Dazu für xxx einfach (bei gesetztem expert 3_allReg+raw) den Inhalt von RegL_01 nehmen und zum Wert von B1 die gewünschte Anzahl an Sekunden addieren/subtrahieren.


Ob die beim HM-MOD-EM-8 vorhandenen Probleme beim Senden an Aktoren mit Burst sowie die hohe Funklast beim Durchkonfigurieren hier ebenfalls zu Problemen führen, muss noch untersucht werden.

Links