From 4fe396998819106f2ac3e488d998898d2539abe0 Mon Sep 17 00:00:00 2001
From: martinp876 <>
Date: Wed, 2 Apr 2014 09:09:17 +0000
Subject: [PATCH] change press options, add german commandref
git-svn-id: https://svn.fhem.de/fhem/trunk@5412 2b470e98-0d58-463d-a4d8-8e2adae1ed80
---
fhem/FHEM/10_CUL_HM.pm | 1121 +++++++++++++++++++++++++++++++++++++++-
fhem/FHEM/HMConfig.pm | 12 +-
2 files changed, 1125 insertions(+), 8 deletions(-)
diff --git a/fhem/FHEM/10_CUL_HM.pm b/fhem/FHEM/10_CUL_HM.pm
index 000da729b..fc2f4bbfb 100755
--- a/fhem/FHEM/10_CUL_HM.pm
+++ b/fhem/FHEM/10_CUL_HM.pm
@@ -3723,7 +3723,7 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
$pId = $dst.sprintf("%02X",(($vChn eq "off")?-1:0) + $chn*2);
}
elsif($vChn){
- $pId = CUL_HM_name2Id($vChn,$devHash).($a[3]?sprintf("%02X",$a[3]):"01");
+ $pId = CUL_HM_name2Id($vChn,$devHash)."01";#01 is default for devices
}
else{
$pId = $dst.sprintf("%02X",$chn);
@@ -6715,7 +6715,7 @@ sub CUL_HM_configUpdate($) {# mark entities with changed data
set actor press long FB_Btn01 # trigger long peer FB button 01
set actor press long FB_chn:8 # trigger long peer FB button 08
set actor press self01 # trigger short of internal peer 01
- set actor press HMLAN1 2 # trigger short of FHEM IO 'HMLAN1' channel 2
+ set actor press fhem02 # trigger short of FHEM channel 2
toggle - toggle the Actor. It will switch from any current
@@ -7579,4 +7579,1121 @@ sub CUL_HM_configUpdate($) {# mark entities with changed data
=end html
+
+=begin html_DE
+
+
+CUL_HM
+
+Unterstützung für eQ-3 HomeMatic Geräte via CUL oder HMLAN.
+
+
+Define
+
+define <name> CUL_HM <6-digit-hex-code|8-digit-hex-code>
+
+
+Eine korrekte Gerätedefinition ist der Schlüssel zur einfachen Handhabung der HM-Umgebung.
+
+
+Hintergrund zur Definition:
+HM-Geräte haben eine 3 Byte (6 stelliger HEX-Wert) lange HMid - diese ist Grundlage
+der Adressierung. Jedes Gerät besteht aus einem oder mehreren Kanälen. Die HMid für einen
+Kanal ist die HMid des Gerätes plus die Kanalnummer (1 Byte, 2 Stellen) in
+hexadezimaler Notation.
+Kanäle sollten für alle mehrkanaligen Geräte definiert werden. Einträge für Kanäle
+können nicht angelegt werden wenn das zugehörige Gerät nicht existiert.
Hinweis: FHEM
+belegt das Gerät automatisch mit Kanal 1 falls dieser nicht explizit angegeben wird. Daher
+ist bei einkanaligen Geräten keine Definition nötig.
+
+Hinweis: Wird ein Gerät gelöscht werden auch die zugehörigen Kanäle entfernt.
Beispiel einer
+vollständigen Definition eines Gerätes mit 2 Kanälen:
+
+define livingRoomSwitch CUL_HM 123456
+define LivingroomMainLight CUL_HM 12345601
+define LivingroomBackLight CUL_HM 12345602
+
+
+livingRoomSwitch bezeichnet das zur Kommunikation verwendete Gerät. Dieses wird
+vor den Kanälen definiert um entsprechende Verweise einstellen zu können.
+LivingroomMainLight hat Kanal 01 und behandelt den Lichtstatus, Kanal-Peers
+sowie zugehörige Kanalregister. Falls nicht definiert wird Kanal 01 durch die Geräteinstanz
+abgedeckt.
LivingRoomBackLight ist der zweite "Kanal", Kanal 02. Seine
+Definition ist verpflichtend um die Funktion ausführen zu können.
+
+Sonderfall Sender: HM behandelt jeden Knopf einer Fernbedienung, Drucktaster und
+ähnliches als Kanal . Es ist möglich (nicht notwendig) einen Kanal pro Knopf zu
+definieren. Wenn alle Kanäle definiert sind ist der Zugriff auf Pairing-Informationen
+sowie auf Kanalregister möglich. Weiterhin werden Verknüpfungen durch Namen besser
+lesbar.
+
+define kann auch durch das autocreate
+Modul aufgerufen werden, zusammen mit dem notwendigen subType Attribut.
+Normalerweise erstellt man hmPairForSec und drückt dann den
+zugehörigen Knopf am Gerät um die Verknüpfung herzustellen oder man verwendet hmPairSerial falls das Gerät ein Empfänger und die Seriennummer
+bekannt ist. Autocreate wird dann ein FHEM-Gerät mit allen notwendigen Attributen anlegen.
+Ohne Pairing wird das Gerät keine Befehle von FHEM akzeptieren. Selbst wenn das Pairing
+scheitert legt FHEM möglicherweise das Gerät an. Erfolgreiches Pairen wird
+durch den Eintrag CommandAccepted in den Details zum CUL_HM Gerät angezeigt.
+
+Falls autocreate nicht verwendet werden kann muss folgendes spezifiziert werden:
+
+- Der <6-stellige-Hex-Code>oder HMid+ch <8-stelliger-Hex-Code>
+Das ist eine einzigartige, festgelegte Geräteadresse die nicht geändert werden kann (nein,
+man kann sie nicht willkürlich auswählen wie z.B. bei FS20 Geräten). Man kann sie feststellen
+indem man das FHEM-Log durchsucht.
+- Das subType Attribut
+Dieses lautet: switch dimmer blindActuator remote sensor swi
+pushButton threeStateSensor motionDetector keyMatic winMatic
+smokeDetector
+- Das model Attribut
+ist entsprechend der HM Nomenklatur zu vergeben
+
+Ohne diese Angaben kann FHEM nicht korrekt mit dem Gerät arbeiten.
+
+Hinweise
+
+- Falls das Interface ein Gerät vom Typ CUL ist muss rfmode
+des zugehörigen CUL/CUN Gerätes auf HomeMatic gesetzt werden.
+Achtung: Dieser Modus ist nur für BidCos/Homematic. Nachrichten von FS20/HMS/EM/S300
+werden durch diese Gerät nicht empfangen. Bereits definierte FS20/HMS
+Geräte müssen anderen Eingängen zugeordnet werden (CUL/FHZ/etc).
+
+
+Nachrichten eines Geräts werden nur richtig interpretiert wenn der Gerätetyp
+bekannt ist. FHEM erhält den Gerätetyp aus einer"pairing request"
+Nachricht, selbst wenn es darauf keine Antwort erhält (siehe hmPairSerial und hmPairForSec um Parinig zu ermöglichen).
+Alternativ, setzen des richtigen subType sowie Modelattributes, für eine Liste der
+möglichen subType-Werte siehe "attr hmdevice ?".
+
+Die sogenannte "AES-Verschlüsselung" ist eigentlich eine Signaturanforderung: Ist sie
+aktiviert wird ein Aktor den erhaltenen Befehl nur ausführen falls er die korrekte
+Antwort auf eine zuvor durch den Aktor gestellte Anfrage erhält. Das bedeutet:
+
+- Die Reaktion auf Befehle ist merklich langsamer, da 3 Nachrichten anstatt einer übertragen
+werden bevor der Befehl vom Aktor ausgeführt wird.
+- Jeder Befehl sowie seine Bestätigung durch das Gerät wird in Klartext übertragen, ein externer
+Beobachter kennt somit den Status jedes Geräts.
+- Die eingebaute Firmware ist fehlerhaft: Ein "toggle" Befehl wir ausgeführt bevor die
+entsprechende Antwort auf die Signaturanforderung empfangen wurde, zumindest bei einigen Schaltern
+(HM-LC-Sw1-Pl und HM-LC-SW2-PB-FM).
+- Der HMLAN Konfigurator beantwortet Signaturanforderungen selbstständig,
+ist dabei die 3-Byte-Adresse einer anderen CCU eingestellt welche noch immer das Standardpasswort hat,
+kann dieser Signaturanfragen korrekt beantworten.
+- AES-Verschlüsselung kann nicht bei einem CUL als Interface eingesetzt werden, wird allerdings
+durch HMLAN unterstützt. Aufgrund dieser Einschränkungen ist der Einsatz der Homematic-Verschlüsselung
+nicht zu empfehlen!
+
+
+
+
+
+
+Set
+
+Hinweis: Geräte die normalerweise nur senden (Fernbedienung/Sensor/etc.) müssen in den
+Pairing/Lern-Modus gebracht werden um die folgenden Befehle zu empfangen.
+
+
+
+Allgemeine Befehle (verfügbar für die meisten HM-Geräte):
+
+- clear <[readings|register|msgEvents]>
+Eine Reihe von Variablen kann entfernt werden.
+
+readings: Alle Messwerte werden gelöscht, neue Werte werden normal hinzugefügt. Kann benutzt werden um alte Daten zu entfernen
+register: Alle in FHEM aufgezeichneten Registerwerte werden entfernt. Dies hat KEINEN Einfluss auf Werte im Gerät.
+msgEvents: Alle Anchrichtenzähler werden gelöscht. Ebenso wird der Befehlsspeicher zurückgesetzt.
+rssi: gesammelte RSSI-Werte werden gelöscht.
+
+
+- getConfig
+Liest die Hauptkonfiguration eines HM_Gerätes aus. Angewendet auf einen Kanal
+erhält man Pairing-Information, List0, List1 und List3 des ersten internen Peers.
+Außerdem erhält man die Liste der Peers für den gegebenen Kanal. Wenn auf ein Gerät
+angewendet so bekommt man mit diesem Befehl die vorherigen Informationen für alle
+zugeordneten Kanäle. Ausgeschlossen davon sind Konfigurationen zusätzlicher Peers.
+
Der Befehl ist eine Abkürzung für eine Reihe anderer Befehle.
+
+- getRegRaw [List0|List1|List2|List3|List4|List5|List6]
+<peerChannel>
+Auslesen der Rohdaten des Registersatzes. Eine Beschreibung der Register sprengt
+den Rahmen dieses Dokuments.
+
+Die Register sind in sog. Listen strukturiert welche einen Satz Register enthalten.
+
+List0: Geräteeinstellungen z.B: Einstellungen für CUL-Pairing Temperaturlimit eines Dimmers.
+
+List1: Kanaleinstellungen z.B. benötigte Zeit um Rollo hoch und runter zu fahren.
+
+List3: "link" Einstellungen - d.h. Einstellungen für Peer-Kanal. Das ist eine große Datenmenge!
+Steuert Aktionen bei Empfang eines Triggers vom Peer.
+
+List4: Einstellungen für den Kanal (Taster) einer Fernbedienung.
+
+<PeerChannel> verknüpfte HMid+ch, z.B. 4 byte (8 stellige) Zahl wie
+'12345601'. Ist verpflichtend für List3 und List4 und kann ausgelassen werden
+für List0 und 1.
+
+'all' kann verwendet werden um Daten von jedem mit einem Kanal verknüpften Link zu bekommen.
+
+'selfxx' wird verwendet um interne Kanäle zu adressieren (verbunden mit den eingebauten Schaltern
+falls vorhanden). xx ist die Kanalnummer in dezimaler Notation.
+
+Hinweis 1: Ausführung ist abhängig vom Entity. Wenn List1 für ein Gerät statt einem Kanal
+abgefragt wird gibt der Befehl List1 für alle zugehörigen Kanäle aus.
+List3 mit 'peerChannel = all' gibt alle Verbindungen für alle Kanäle eines Gerätes zurück.
+
+Hinweis 2: für 'Sender' siehe auch remote
+
+Hinweis 3: Das Abrufen von Informationen kann dauern - besonders für Geräte
+mit vielen Kanälen und Verknüpfungen. Es kann nötig sein das Webinterface manuell neu zu laden
+um die Ergebnisse angezeigt zu bekommen.
+
+Hinweis 4: Direkte Schalter eines HM-Geräts sind standardmäßig ausgeblendet.
+Dennoch sind sie genauso als Verknüpfungen implemetiert. Um Zugriff auf 'internal links'
+zu bekommen ist es notwendig folgendes zu erstellen:
+'set <name> regSet intKeyVisib visib'
+oder
+'set <name> regBulk RegL_0: 2:81'
+Zurücksetzen lässt es sich indem '81' mit '01' ersetzt wird.
example:
+
+
+set mydimmer getRegRaw List1
+set mydimmer getRegRaw List3 all
+
+
+- getSerial
+Auslesen der Seriennummer eines geräts und speichern in Attribut serialNr.
+
+- inhibit [on|off]
+Blockieren/Zulassen aller Kanaländerungen eines Aktors, d.h. Zustand des Aktors ist
+eingefroren bis 'inhibit' wieder deaktiviert wird. 'Inhibit' kann für jeden Aktorkanal
+ausgeführt werden aber natürlich nicht für Sensoren - würde auch keinen Sinn machen.
+Damit ist es praktischerweise möglich Nachrichten ebenso wie verknüpfte Kanalaktionen
+temporär zu unterdrücken ohne sie löschen zu müssen.
+Beispiele:
+
+# Ausführung blockieren
+set keymatic inhibit on
+
+
+
+- pair
+Verbinden eines Geräts bekannter Seriennummer (z.b. nach einem Reset)
+mit einer FHEM-Zentrale. Diese Zentrale wird normalerweise durch CUL/CUNO,
+HMLAN,... hergestellt.
+Wenn verbunden melden Geräte ihren Status and FHEM.
+Wenn nicht verbunden wird das Gerät auf bestimmte Anfragen nicht reagieren
+und auch bestimmte Statusinformationen nicht melden. Pairing geschieht auf
+Geräteebene. Kanäle können nicht unabhängig von einem Gerät mit der Zentrale
+verbunden werden.
+Siehe auch getPair und
+unpair.
+Nicht das Verbinden (mit einer Zentrale) mit verknüpfen (Kanal zu Kanal) oder
+peerChan verwechseln.
+
+- peerBulk <peerch1,peerch2,...> [set|unset]
+peerBulk fügt Peer-Kanäle zu einem Kanal hinzu. Alle Peers einer Liste werden
+dabei hinzugefügt.
+Peering setzt die Einstellungen einer Verknüpfung auf Standardwerte. Da Peers nicht in Gruppen
+hinzugefügt werden werden sie durch HM standardmäßig als'single' für dieses Gerät
+angelegt.
+Eine ausgeklügeltere Funktion wird gegeben durch
+peerChan.
+peerBulk löscht keine vorhandenen Peers sondern bearbeitet nur die Peerliste.
+Andere bereits angelegt Peers werden nicht verändert.
+peerBulk kann verwendet werden um Peers zu löschen indem die unset Option
+mit Standardeinstellungen aufgerufen wird.
+
+Verwendungszweck dieses Befehls ist hauptsächlich das Wiederherstellen
+von Daten eines Geräts.
+Empfehlenswert ist das anschließende Wiederherstellen der Registereinstellung
+mit regBulk.
+Beispiel:
+
+set myChannel peerBulk 12345601,
+set myChannel peerBulk self01,self02,FB_Btn_04,FB_Btn_03,
+set myChannel peerBulk 12345601 unset # entferne Peer 123456 Kanal 01
+
+
+- regBulk <reg List>:<peer> <addr1:data1> <addr2:data2>...
+
+Dieser Befehl ersetzt das bisherige regRaw. Er erlaubt Register mit Rohdaten zu
+beschreiben. Hauptzweck ist das komplette Wiederherstellen eines zuvor gesicherten
+Registers.
+Werte können mit getConfig ausgelesen werden. Die
+zurückgegebenen Werte können direkt für diesen Befehl verwendet werden.
+<reg List> bezeichnet die Liste in die geschrieben werden soll. Mögliches Format
+'00', 'RegL_00', '01'...
+<peer> ist eine optionale Angabe falls die Liste ein Peer benötigt.
+Der Peer kann als Kanalname oder als 4-Byte (8 chars) HM-Kanal ID angegeben
+werden.
+<addr1:data1> ist die Liste der Register im Hex-Format.
+Beispiel:
+
+set myChannel regBulk RegL_00: 02:01 0A:17 0B:43 0C:BF 15:FF 00:00
+RegL_03:FB_Btn_07
+01:00 02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:44 0C:54 0D:93 0E:00 0F:00 11:C8 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 1A:00 1B:00 1C:00 1D:FF 1E:93 1F:00 81:00 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:21 8B:44 8C:54 8D:93 8E:00 8F:00 91:C8 92:00 93:00 94:00 95:00 96:00 97:00 98:00 99:00 9A:00 9B:00 9C:00 9D:05 9E:93 9F:00 00:00
+set myblind regBulk 01 0B:10
+set myblind regBulk 01 0C:00
+
+myblind setzt die maximale Zeit für das Hochfahren der Rollos auf 25,6 Sekunden
+- regSet [prep|exec] <regName> <value> <peerChannel>
+Für einige Hauptregister gibt es eine lesbarere Version die Registernamen <regName>
+und Wandlung der Werte enthält. Nur ein Teil der Register wird davon unterstützt.
+Der optionale Parameter [prep|exec] erlaubt das Packen von Nachrichten und verbessert damit
+deutlich die Datenübertragung.
+Benutzung durch senden der Befehle mit Parameter "prep". Daten werden dann für das Senden gesammelt.
+Der letzte Befehl muss den Parameter "exec" habe um die Information zu übertragen.
+<value> enthält die Daten in menschenlesbarer Form die in das Register geschrieben werden.
+<peerChannel> wird benötigt falls das Register 'peerChan' basiert definiert wird.
+Kann ansonsten auf '0' gesetzt werden. Siehe getRegRaw für komplette Definition.
+Unterstützte Register eines Geräts können wie folgt bestimmt werden:
+
+Eine verkürzte Beschreibung der Register wird zurückgegeben mit:
+
+
+- reset
+Rücksetzen des Geräts auf Werkseinstellungen. Muss danach erneut verbunden werden um es
+mit FHEM zu nutzen.
+
+- sign [on|off]
+Ein- oder ausschalten der Signierung (auch "AES-Verschlüsselung" genannt, siehe note). Achtung: Wird das Gerät über einen CUL eingebunden ist schalten (oder
+deaktivieren der Signierung) nicht möglich, das Gerät muss direkt zurückgesetzt werden.
+
+- statusRequest
+Aktualisieren des Gerätestatus. Für mehrkanalige Geräte sollte dies kanalbasiert
+erfolgen.
+
+- unpair
+Aufheben des "Pairings", z.B. um das verbinden mit einem anderen Master zu ermöglichen.
+Siehe pair für eine Beschreibung.
+- virtual <Anzahl an Knöpfen>
+Konfiguriert eine vorhandene Schaltung als virtuelle Fernbedienung. Die Anzahl der anlegbaren
+Knöpfe ist 1 - 255. Wird der Befehl für die selbe Instanz erneut aufgerufen werden Knöpfe
+hinzugefügt.
+Beispiel für die Anwendung:
+
+define vRemote CUL_HM 100000 # die gewählte HMid darf nicht in Benutzung sein
+set vRemote virtual 20 # definiere eine Fernbedienung mit 20 Knöpfen
+set vRemote_Btn4 peerChan 0 <actorchannel> # verknüpft Knopf 4 und 5 mit dem gewählten Kanal
+set vRemote_Btn4 press
+set vRemote_Btn5 press long
+
+siehe auch press
+
+
+
+subType abhängige Befehle:
+
+
+- switch
+
+- on - setzt Wert auf 100%
+- off - setzt Wert auf 0%
+- on-for-timer <sec> -
+Schaltet das Gerät für die gewählte Zeit in Sekunden [0-85825945] an.
Hinweis:
+off-for-timer wie bei FS20 wird nicht unterstützt. Kann aber über Kanalregister
+programmiert werden.
+- on-till <time> - einschalten bis zum angegebenen Zeitpunkt.
+set <name> on-till 20:32:10
+Das momentane Maximum für eine Endzeit liegt bei 24 Stunden.
+
+- press <[short|long]><[on|off]>
+press <[short|long]><[noBurst]>
+simuliert den Druck auf einen lokalen Knopf oder direkt verbundenen Knopf des Aktors.
+[short|long] wählt aus ob ein kurzer oder langer Tastendruck simuliert werden soll.
+[on|off] ist relevant für Geräte mit direkter Bedienung pro Kanal.
+Verfügbar für Dimmer und Rollo-Aktoren, normalerweise nicht für Schalter.
+[noBurst] ist relevant für Peers die bedingte Bursts unterstützen.
+Dies bewirkt das der Befehl der Warteliste des Peers zugefügt wird. Ein Burst wird anschließend
+nicht ausgeführt da der Befehl wartet bis der Peer aufgewacht ist. Dies führt zu einer
+Verzögerung des Tastendrucks, reduziert aber Übertragungs- und Performanceaufwand.
+
+- toggle - toggled den Aktor. Schaltet vom aktuellen Level auf
+0% oder von 0% auf 100%
+
+
+
+- dimmer, blindActuator
+Dimmer können virtuelle Kanäle unterstützen. Diese werden automatisch angelegt falls vorhanden.
+Normalerweise gibt es 2 virtuelle Kanäle zusätzlich zum primären Kanal. Virtuelle Dimmerkanäle sind
+standardmäßig deaktiviert, können aber parallel zum ersten Kanal benutzt werden um das Licht zu steuern.
+Die virtuellen Kanäle haben Standardnamen SW<channel>_V<nr> z.B. Dimmer_SW1_V1 and Dimmer_SW1_V2.
+Virtuelle Dimmerkanäle unterscheiden sich komplett von virtuellen Knöpfen und Aktoren in FHEM, sind aber
+Teil des HM-Geräts. Dokumentation und Möglichkeiten würde hier aber zu weit führen.
+
+- 0 - 100 [on-time] [ramp-time]
+Setzt den Aktor auf den gegeben Wert (In Prozent)
+mit einer Auflösung von 0.5.
+Bei Dimmern ist optional die Angabe von "on-time" und "ramp-time" möglich, beide in Sekunden mit 0.1s Abstufung.
+"On-time" verhält sich analog dem "on-for-timer".
+"Ramp-time" beträgt standardmäßig 2.5s, 0 bedeutet umgehend.
+
+- on
+- off
+- press <[short|long]><[on|off]>
+- toggle
+- on-for-timer <sec> - Nur Dimmer!
+- on-till <time> - Nur Dimmer!
+- stop - Stopt Bewegung (Rollo) oder Dimmerrampe
+- pct <level> [<ontime>] [<ramptime>] - setzt Aktor auf gewünschten absolut Wert.
+Optional können für Dimmer "ontime" und "ramptime" angegeben werden.
+"Ontime" kann dabei in Sekunden angegeben werden. Kann auch als Endzeit angegeben werden im Format hh:mm:ss
+
+- up [changeValue] [<ontime>] [<ramptime>] Einen Schritt hochdimmen.
+- down [changeValue] [<ontime>] [<ramptime>] Einen Schritt runterdimmen.
+"changeValue" ist optional und gibt den zu ändernden Wert in Prozent an. Mögliche Abstufung dabei ist 0.5%, Standard ist 10%.
+"ontime" ist optional und gibt an wielange der Wert gehalten werden soll. '0' bedeutet endlos und ist Standard.
+"ramptime" ist optional und definiert die Zeit bis eine Änderung den neuen Wert erreicht. Hat nur für Dimmer Bedeutung.
+
+
+
+
+- remotes, pushButton
+Diese Geräteart reagiert nicht auf Anfragen, außer sie befinden sich im Lernmodus. FHEM reagiert darauf
+indem alle Anfragen gesammelt werden bis der Lernmodus detektiert wird. Manuelles Eingreifen durch
+den Benutzer ist dazu nötig. Ob Befehle auf Ausführung warten kann auf Geräteebene mit dem Parameter
+'protCmdPend' abgefragt werden.
+
+- peerChan <btn_no> <actChan> [single|dual]
+[set|unset] [both|actor|remote]
+"peerChan" richtet eine Verbindung zwischen Sender-Kanal und
+Aktor-Kanal ein, bei HM "link" genannt. "Peering" darf dabei nicht
+mit "pairing" verwechselt werden.
+Pairing bezeichnet das Zuordnen eines Geräts zu einer Zentrale.
+Peering bezeichnet das faktische Verbinden von Kanälen.
+Peering erlaubt die direkte Interaktion zwischen Sender und Aktor ohne den Einsatz einer CCU
+Peering eines Senderkanals veranlaßt den Sender nach dem Senden eines Triggers auf die
+Bestätigung eines - jeden - Peers zu warten. Positives Feedback (z.B. grüne LED)
+gibt es dabei nur wenn alle Peers den Befehl bestätigt haben.
+Peering eines Aktorkanals richtet dabei einen Satz von Parametern ein welche die auszuführenden Aktionen
+definieren wenn ein Trigger dieses Peers empfangen wird. Dies bedeutet:
+- nur Trigger von Peers werden ausgeführt
+- die auszuführende Aktion muss für den zugehörigen Trigger eines Peers definiert werden
+Ein Aktorkanal richtet dabei eine Standardaktion beim Peering ein - diese hängt vom Aktor ab.
+Sie kann ebenfalls davon abhängen ob ein oder zwei Tasten ein einem Befehl gepeert werden.
+Peert man einen Schalter mit 2 Tasten kann eine Taste für 'on' und eine andere für 'off' angelegt werden.
+Wenn nur eine Taste definiert wird ist die Funktion wahrscheinlich 'toggle'.
+Die Funktion kann durch programmieren des Register (vom Aktor abhängig) geändert werden.
+
+Auch wenn der Befehl von einer Fernbedienung oder einem Taster kommt hat er direkten Effekt auf
+den Aktor. Das Peering beider Seiten ist quasi unabhängig und hat unterschiedlich Einfluss auf
+Sender und Empfänger.
+Peering eines Aktorkanals mit mehreren Senderkanälen ist ebenso möglich wie das eines Senderkanals
+mit mehreren Empfängerkanälen.
+
+<actChan> ist der zu verknüpfende Aktorkanal.
+
+<btn_no> ist der zu verknüpfende Senderkanal (Knopf). Wird
+'single' gewählt werden die Tasten von 1 an gezählt. Für 'dual' ist btn_no
+die Nummer des zu verwendenden Tasterpaares. Z.B. ist '3' iim Dualmodus das
+dritte Tasterpaar welches mit Tasten 5 und 6 im Singlemodus übereinstimmt.
+
+Wird der Befehl auf einen Kanal angewendet wird btn_no igroriert.
+Muss gesetzt sein, sollte dabei 0 sein.
+
+[single|dual]: Dieser Modus bewirkt das Standardverhalten des Aktors bei Benutzung eines Tasters. Ein Dimmer
+kann z.B. an einen einzelnen oder ein Paar von Tastern angelernt werden.
+Standardeinstellung ist "dual".
+
+'dual' (default) Schalter verknüpft zwei Taster mit einem Aktor. Bei einem Dimmer
+bedeutet das ein Taster für hoch- und einer für runterdimmen.
+
+'single' benutzt nur einen Taster des Senders. Ist z.B. nützlich für einen einfachen Schalter
+der nur zwischen an/aus toggled. Aber auch ein Dimmer kann an nur einen Taster angelernt werden.
+
+[set|unset]: Wählt aus ob Peer hinzugefügt oder entfernt werden soll.
+Hinzufügen ist Standard.
+'set' stellt Peers für einen Kanal ein.
+'unset' entfernt Peer für einen Kanal.
+
+[actor|remote|both] beschränkt die Ausführung auf Aktor oder Fernbedienung.
+Das ermöglicht dem Benutzer das entfernen des Peers vom Fernbedienungskanal ohne
+die Einstellungen am Aktor zu entfernen.
+Standardmäßig gewählt ist "both" für beides.
+
+Example:
+
+
+set myRemote peerChan 2 mySwActChn single set #Peer zweiten Knopf mit Aktorkanal
+set myRmtBtn peerChan 0 mySwActChn single set #myRmtBtn ist ein Knopf der Fernbedienung. '0' wird hier nicht verarbeitet
+set myRemote peerChan 2 mySwActChn dual set #Verknüpfe Knöpfe 3 und 4
+set myRemote peerChan 3 mySwActChn dual unset #Entferne Peering für Knöpfe 5 und 6
+set myRemote peerChan 3 mySwActChn dual unset aktor #Entferne Peering für Knöpfe 5 und 6 nur im Aktor
+set myRemote peerChan 3 mySwActChn dual set remote #Verknüpfe Knöpfe 5 und 6 nur mit Fernbedienung. Linkeinstellungen mySwActChn werden beibehalten.
+
+
+
+
+
+- virtual
+
+- peerChan siehe remote
+- press [long|short]
+Simuliert einen kurzen (Standard) oder langen Tastendruck. Zu beachten ist dass die momentane
+Implementierung für "long" keine Dauer angibt . Es wird nur ein Trigger vom Typ "long" gesendet.
+
+- virtTemp <[off -10..50]>
+Simuliert ein Thermostat. Wenn mit einem Gerät gepeert wird periodisch eine Temperatur gesendet,
+solange bis "off" gewählt wird. Siehe auch virtHum
+
+- virtHum <[off -10..50]>
+Simuliert den Feuchtigkeitswert eines Thermostats. Wenn mit einem Gerät verknüpft werden periodisch
+Luftfeuchtigkeit undTemperatur gesendet, solange bis "off" gewählt wird. Siehe auch virtTemp
+
+- valvePos <[off 0..100]>
+steuert einen Ventilantrieb
+
+
+
+- smokeDetector
+Hinweis: All diese Befehle funktionieren momentan nur wenn mehr als ein Rauchmelder
+vorhanden ist, und diese gepeert wurden um eine Gruppe zu bilden. Um die Befehle abzusetzen
+muss der Master dieser gruppe verwendet werden, und momentan muss man raten welcher der Master ist.
+smokeDetector kann folgendermaßen in Gruppen eingeteilt werden:
+peerChan. Alle Mitglieder müssen mit dem Master verknüpft werden. Auch der
+Master muss mit peerChan zur Gruppe zugefügt werden - z.B. mit sich selbst verknüpft! Dadurch hat man volle
+Kontrolle über die Gruppe und muss nicht raten.
+
+- teamCall - führt einen Netzwerktest unter allen Gruppenmitgliedern aus
+- alarmOn - löst einen Alarm aus
+- alarmOff - schaltet den Alarm aus
+
+
+- 4Dis (HM-PB-4DIS-WM)
+
+- text <btn_no> [on|off] <text1> <text2>
+Zeigt Text auf dem Display eines Geräts an. Für diesen Zweck muss zuerst ein set-Befehl
+(oder eine Anzahl davon) abgegeben werden, dann können im "teach-in" Menü des 4Dis mit
+"Central" Daten übertragen werden.
+Falls auf einen Kanal angewendet dürfen btn_no und on|off nicht verwendet werden, nur
+reiner Text.
+Beispiel:
+
+
+set 4Dis text 1 on On Lamp
+set 4Dis text 1 off Kitchen Off
+
+set 4Dis_chn4 text Kitchen Off
+
+
+
+
+
+- Climate-Control (HM-CC-TC)
+
+- desired-temp <temp>
+Setzt verschiedene Temperaturen. <temp> muss zwischen 6°C und 30°C liegen, die Auflösung beträgt 0.5°C.
+- tempListSat [prep|exec] HH:MM temp ... 24:00 temp
+- tempListSun [prep|exec] HH:MM temp ... 24:00 temp
+- tempListMon [prep|exec] HH:MM temp ... 24:00 temp
+- tempListTue [prep|exec] HH:MM temp ... 24:00 temp
+- tempListThu [prep|exec] HH:MM temp ... 24:00 temp
+- tempListWed [prep|exec] HH:MM temp ... 24:00 temp
+- tempListFri [prep|exec] HH:MM temp ... 24:00 temp
+Gibt eine Liste mit Temperaturintervallen an. Bis zu 24 Intervall können pro Wochentag definiert werden, die
+Auflösung dabei sind 10 Minuten. Die letzte Zeitangabe muss 24:00 Uhr sein.
+Beispiel: bis 6:00 soll die Temperatur 19°C sein, dann bis 23:00 Uhr 22.5°C, anschließend
+werden bis Mitternacht 19°C gewünscht.
+ set th tempListSat 06:00 19 23:00 22.5 24:00 19
+
+- partyMode <HH:MM><durationDays>
+setzt die Steuerung für die angegebene Zeit in den Partymodus. Dazu ist die Endzeit sowie Anzahl an Tagen
+die er dauern soll anzugeben. Falls er am nächsten Tag enden soll ist '1'
+anzugeben
+- systime
+setzt Zeit des Klimakanals auf die Systemzeit
+
+
+- Climate-Control (HM-CC-RT-DN|HM-CC-RT-DN-BoM)
+
+- controlMode <auto|boost|day|night>
+- controlManu <temp>
+- controlParty <temp><startDate><startTime><endDate><endTime>
+setzt die Steuerung in den Partymodus, definiert Temperatur und Zeitrahmen.
+Beispiel:
+set controlParty 15 03.8.13 20:30 5.8.13 11:30
+- systime
+setzt Zeit des Klimakanals auf die Systemzeit
+- desired-temp <temp>
+Setzt verschiedene Temperaturen. <temp> muss zwischen 6°C und 30°C liegen, die Auflösung beträgt 0.5°C.
+- tempListSat [prep|exec] HH:MM temp ... 24:00 temp
+- tempListSun [prep|exec] HH:MM temp ... 24:00 temp
+- tempListMon [prep|exec] HH:MM temp ... 24:00 temp
+- tempListTue [prep|exec] HH:MM temp ... 24:00 temp
+- tempListThu [prep|exec] HH:MM temp ... 24:00 temp
+- tempListWed [prep|exec] HH:MM temp ... 24:00 temp
+- tempListFri [prep|exec] HH:MM temp ... 24:00 temp
+Gibt eine Liste mit Temperaturintervallen an. Bis zu 24 Intervall können pro Wochentag definiert werden, die
+Auflösung dabei sind 10 Minuten. Die letzte Zeitangabe muss immer 24:00 Uhr sein.
+Der optionale Parameter [prep|exec] erlaubt das packen der Nachrichten und verbessert damit deutlich
+die Datenübertragung. Besonders nützlich wenn das Gerät im "Wakeup"-modus betrieben wird.
+Benutzung durch senden der Befehle mit Parameter "prep". Daten werden dann für das Senden gesammelt.
+Der letzte Befehl muss den Parameter "exec" habe um die Information zu übertragen.
+Beispiel: bis 6:00 soll die Temperatur 19°C sein, dann bis 23:00 Uhr 22.5°C, anschließend
+werden bis Mitternacht 19°C gewünscht.
+ set th tempListSat 06:00 19 23:00 22.5 24:00 19
+
+ set th tempListSat prep 06:00 19 23:00 22.5 24:00 19
+set th tempListSun prep 06:00 19 23:00 22.5 24:00 19
+set th tempListMon prep 06:00 19 23:00 22.5 24:00 19
+set th tempListTue exec 06:00 19 23:00 22.5 24:00 19
+
+
+
+- OutputUnit (HM-OU-LED16)
+
+- led [off|red|green|yellow]
+schaltet die LED des Kanals auf die gewünschte Farbe. Wird der Befehl auf ein Gerät angewandt so
+werden alle LEDs auf diese Farbe gesetzt.
+Experten können die LEDs separat durch eine 8-stellige Hex-Zahl ansteuern.
+- ilum <Helligkeit><Dauer>
+<Helligkeit> [0-15] der Beleuchtung.
+<Dauer> [0-127] in Sekunden, 0 bedeutet dauernd an.
+
+- OutputUnit (HM-OU-CFM-PL)
+
+- led <color>[,<color>..] [<repeat>..]
+Mögliche Farben sind [redL|greenL|yellowL|redS|greenS|yellowS|pause]. Eine Folge von Farben
+kann durch trennen der Farbeinträge mit ',' eingestellt werden.
+Leerzeichen dürfen in der Liste nicht benutzt werden. 'S' bezeichnet kurze und
+'L' lange Beleuchtungsdauer.
+repeat definiert wie oft die Sequenz ausgeführt werden soll. Standard ist 1.
+
+- playTone <MP3No>[,<MP3No>..] [<repeat>..]
+Spielt eine Reihe von Tönen. Die Liste muss mit ',' getrennt werden. Leerzeichen
+dürfen in der Liste nicht benutzt werden.
+replay kann verwendet werden um den zuletzt gespielten Klang zu wiederholen.
+repeat definiert wie oft die Sequenz ausgeführt werden soll. Standard ist 1.
+Beispiel:
+
+set cfm_Mp3 playTone 3 # MP3 Titel 3 einmal
+set cfm_Mp3 playTone 3 3 # MP3 Titel 3 dreimal
+set cfm_Mp3 playTone 3,6,8,3,4 # MP3 Titelfolge 3,6,8,3,4 einmal
+set cfm_Mp3 playTone 3,6,8,3,4 255# MP3 Titelfolge 3,6,8,3,4 255 mal
+set cfm_Mp3 playTone replay # Wiederhole letzte Sequenz
+
+set cfm_Led led redL 4 # rote LED dreimal lang blinken
+set cfm_Led led redS,redS,redS,redL,redL,redL,redS,redS,redS 255 # SOS 255 mal
+
+
+
+
+- HM-RC-19xxx
+
+- alarm <count>
+sendet eine Alarmnachricht an die Steuerung
+- service <count>
+sendet eine Servicenachricht an die Steuerung
+- symbol <symbol> [set|unset]
+aktiviert ein verfügbares Symbol auf der Steuerung
+- beep [off|1|2|3]
+aktiviert Töne
+- backlight [off|on|slow|fast]
+aktiviert Hintergrundbeleuchtung
+- display <text> comma unit tone backlight <symbol(s)>
+
+Steuert das Display der Steuerung
+<text> : bis zu 5 Zeichen
+comma : 'comma' aktiviert das Komma, 'no' läßt es aus
+[unit] : setzt Einheitensymbole.
+[off|Proz|Watt|x3|C|x5|x6|x7|F|x9|x10|x11|x12|x13|x14|x15]. Momentan sind
+x3..x15 nicht getestet.
+tone : aktiviert einen von 3 Tönen [off|1|2|3]
+backlight: läßt die Hintergrundbeleuchtung aufblinken [off|on|slow|fast]
+<symbol(s)> aktiviert die Anzeige von Symbolen. Mehrere Symbole
+können zu selben Zeit aktiv sein, Verknüpfung erfolgt komma-getrennt. Dabei keine
+Leerzeichen verwenden. Mögliche Symbole:
+[bulb|switch|window|door|blind|scene|phone|bell|clock|arrowUp|arrowDown]
+
+Beispiel:
+
+# "Hello" auf dem Display, Symbol bulb an, Hintergrundbeleuchtung, Ton ausgeben
+set FB1 display Hello no off 1 on bulb
+# "1234,5" anzeigen mit Einheit 'W'. Symbole scene,phone,bell und
+# clock sind aktiv. Hintergrundbeleuchtung blinikt schnell, Ausgabe von Ton 2
+set FB1 display 12345 comma Watt 2 fast scene,phone,bell,clock
+
+
+
+
+
+- keyMatic
+Keymatic verwendet eine AES-signierte Kommunikation. Deshalb ist die Steuerung von Keymatic
+nur mit dem HM-LAN möglich. But
+Ein CUL kann aber Statusnachrichten von Keymatic mitlesen und darauf
+reagieren.
+
+- lock
+Schließbolzen fährt in Zu-Position
+- unlock [sec]
+Schließbolzen fährt in Auf-Position.
+[sec]: Stellt die Verzögerung ein nach der sich das Schloss automatisch wieder verschließt.
+0 - 65535 Sekunden
+- open [sec]
+Entriegelt die Tür sodass diese geöffnet werden kann.
+[sec]: Stellt die Verzögerung ein nach der sich das Schloss automatisch wieder
+verschließt.
0 - 65535 Sekunden
+
+- winMatic
+winMatic arbeitet mit 2 Kanälen, einem für die Fenstersteuerung und einem für den Akku.
+
+- level <level> <relockDelay> <speed>
+stellt den Wert ein.
+<level>: Bereich ist 0% bis 100%
+<relockDelay>: Spanne reicht von 0 bis 65535 Sekunden. 'ignore' kann verwendet werden um den Wert zu ignorieren.
+<speed>: Bereich ist 0% bis 100%
+
+- stop
+stopt die Bewegung
+
+
+- HM-Sys-sRP-Pl
+legt Einträge für den Repeater an. Bis zu 36 Einträge können angelegt werden.
+
+- setRepeat <entry> <sender> <receiver> <broadcast>
+<entry> [1..36] Nummer des Eintrags in der Tabelle.
+<sender> Name oder HMid des Senders oder der Quelle die weitergeleitet werden soll
+<receiver> Name oder HMid des Empfängers oder Ziels an das weitergeleitet werden soll
+<broadcast> [yes|no] definiert ob Broadcasts von einer ID weitergeleitet werden sollen.
+
+Kurzanwendung:
+setRepeat setAll 0 0 0
+schreibt die gesamte Liste der Geräte neu. Daten kommen vom Attribut repPeer.
+Das Attribut repPeer hat folgendes Format:
+src1:dst1:[y/n],src2:dst2:[y/n],src2:dst2:[y/n],...
+
+Foramtierte Werte von repPeer:
+Number src dst broadcast verify
+number: Nummer des Eintrags in der Liste
+src: Ursprungsgerät der Nachricht - aus Repeater ausgelesen
+dst: Zielgerät der Nachricht - asu den Attributen abgeleitet
+broadcast: sollen Broadcasts weitergeleitet werden - aus Repeater ausgelesen
+verify: stimmen Attribute und ausgelesen Werte überein?
+
+
+
+
+
+Debugging:
+
+
+
+
+
+Get
+
+- configSave <filename>
+Sichert die Einstellungen eines Eintrags in einer Datei. Die Daten werden in
+einem von der FHEM-Befehlszeile ausführbaren Format gespeichert.
+Die Datei liegt im FHEM Home-Verzeichnis neben der fhem.cfg. Gespeichert wird
+kumulativ- d.h. neue Daten werden an die Datei angehängt. Es liegt am Benutzer das
+doppelte speichern von Einträgen zu vermeiden.
+Ziel der Daten ist NUR die Information eines HM-Gerätes welche IM Gerät gespeichert ist.
+Im Deteil sind das nur die Peer-Liste sowie die Register.
+Durch die Register wird also das Peering eingeschlossen.
+Die Datei ist vom Benutzer les- und editierbar. Zusätzlich gespeicherte Zeitstempel
+helfen dem Nutzer bei der Validierung.
+Einschränkungen:
+Auch wenn alle Daten eines Eintrags in eine Datei gesichert werden so sichert FHEM nur
+die zum Zeitpunkt des Speicherns verfügbaren Daten! Der Nutzer muss also die Daten
+der HM-Hardware auslesen bevor dieser Befehl ausgeführt wird.
+Siehe empfohlenen Ablauf unten.
+Dieser Befehl speichert keine FHEM-Attribute oder Gerätedefinitionen.
+Diese verbleiben in der fhem.cfg.
+Desweiteren werden gesicherte Daten nicht automatisch zurück auf die HM-Hardware geladen.
+Der Benutzer muss die Wiederherstellung auslösen.
+Ebenso wie ander Befehle wird 'configSave' am besten auf ein Gerät und nicht auf einen
+Kanal ausgeführt. Wenn auf ein Gerät angewendet werden auch die damit verbundenen Kanäle
+gesichert.
+
+Empfohlene Arbeitsfolge für ein Gerät 'HMdev':
+set HMdev clear msgEvents # alte Events löschen um Daten besser kontrollieren zu können
+set HMdev getConfig # Geräte- und Kanalinformation auslesen
+# warten bis Ausführung abgeschlossen ist
+# "protState" sollte dann "CMDs_done" sein
+# es sollten keine Warnungen zwischen "prot" und den Variablen auftauchen
+get configSave myActorFile
+
+
+- param <paramName>
+Gibt den Inhalt der relevanten Parameter eines Eintrags zurück.
+Hinweis: wird der Befehl auf einen Kanal angewandt und 'model' abgefragt so wird das Model
+des inhalteanbietenden Geräts zurückgegeben.
+
+- reg <addr> <list> <peerID>
+liefert den Wert eines Registers zurück. Daten werden aus dem Speicher von FHEM und nicht direkt vom Gerät geholt.
+Falls der Registerinhalt nicht verfügbar ist muss "getConfig" sowie anschließend "getReg" verwendet werden.
+
+<addr> Adresse des Registers in HEX. Registername kann alternativ verwendet werden falls in FHEM bekannt.
+"all" gibt alle dekodierten Register eines Eintrags in einer Liste zurück.
+<list> Liste aus der das Register gewählt wird. Wird der REgistername verwendet wird "list" ignoriert und kann auf '0' gesetzt werden.
+<peerID> identifiziert die Registerbänke für "list3" und "list4". Kann als Dummy gesetzt werden wenn nicht benötigt.
+
+- regList
+gibt eine Liste der von FHEM für dieses Gerät dekodierten Register zurück.
+Beachten dass noch mehr Register für ein Gerät implemetiert sein können.
+
+- saveConfig <file>
+speichert Peers und Register in einer Datei.
+Gespeichert werden die Daten wie sie in FHEM verfügbar sind. Es ist daher notwendig vor dem Speichern die Daten auszulesen.
+Der Befehl unterstützt Aktionen auf Geräteebene. D.h. wird der Befehl auf ein Gerät angewendet werden auch alle verbundenen Kanaleinträge gesichert.
+Das Speichern der Datei erfolgt kumulativ. Wird ein Eintrag mehrfach in der selben Datei gespeichert so werden die Daten an diese angehängt.
+Der Nutzer kann den Zeitpunkt des Speichern bei Bedarf auslesen.
+Der Inhalt der Datei kann verwendet werden um die Geräteeinstellungen wiederherzustellen. Er stellt alle Peers und Register des Eintrags wieder her.
+Zwänge/Beschränkungen:
+vor dem zurückschreiben der Daten eines Eintrags muss das Gerät mit FHEM verbunden werden.
+"restore" löscht keine verknüpften Kanäle, es fügt nur neue Peers hinzu.
+
+
+
+Attribute
+
+- eventMap
+- do_not_notify
+- ignore
+- dummy
+- showtime
+- readingFnAttributes
+- actCycle
+actCycle <[hhh:mm]|off>
+Bietet eine 'alive' oder besser 'not alive' Erkennung für Geräte. [hhh:mm] ist die maximale Zeit ohne Nachricht eines Geräts. Wenn innerhalb dieser Zeit keine Nachricht empfangen wird so wird das Event"<device> is dead" generiert.
+Sendet das Gerät wieder so wird die Nachricht"<device> is alive" ausgegeben.
+Diese Erkennung wird durch 'autocreate' für jedes Gerät mit zyklischer Statusmeldung angelegt.
+Die Kontrollinstanz ist ein Pseudo-Gerät "ActionDetector" mit der HMId "000000".
+Aufgrund von Performanceüberlegungen liegt die Antwortverzögerung bei 600 Sekunden (10min). Kann über das Attribut "actCycle" des "ActionDetector" kontrolliert werden.
+Sobald die Überwachung aktiviert wurde hat das HM-Gerät 2 Attribute:
+
+actStatus: Aktivitätsstatus des Geräts
+actCycle: Detektionsspanne [hhh:mm]
+
+Die gesamte Funktion kann über den "ActionDetector"-Eintrag überprüft werden. Der Status aller Instanzen liegt im READING-Bereich.
+Hinweis: Diese Funktion kann ebenfalls für Geräte ohne zyklische Übertragung aktiviert werden. Es obliegt dem Nutzer eine vernünftige Zeitspanne festzulegen.
+
+- expert
+Dieses Attribut steuert die Sichtbarkeit der Werte. Damit wird die Darstellung der Geräteparameter kontrolliert.
+3 Level können gewählt werden:
+
+0_off: Standard. Zeigt die häufigst benutzten Paramter
+1_on: Erweitert. Zeigt alle dekodierten Geräteparameter
+2_full: Alles. Zeigt alle Parameter sowie Registerinformationen im Rohformat.
+
+Wird 'expert' auf ein Gerät angewendet so gilt dies auch für alle verknüpften Kanäle.
+Kann übergangen werden indem das Attribut ' expert' auch für den Gerätekanal gesetzt wird.
+Das Attribut "showInternalValues" bei den globalen Werten muss ebenfalls überprüft werden.
+"expert" macht sich diese Implementierung zu Nutze.
+Gleichwohl setzt "showInternalValues" - bei Definition - 'expert' außer Kraft .
+
+- model,
+subType
+Diese Attribute werden bei erfolgreichem Pairing automatisch gesetzt.
+Sie sollten nicht per Hand gesetzt werden und sind notwendig um Gerätenachrichten
+korrekt interpretieren oder senden zu können.
+- param
+'param' definiert modelspezifische Verhalten oder Funktionen. Siehe "models" für Details.
+- msgRepeat
+Definiert die Nummer an Wiederholungen falls ein Gerät nicht rechtzeitig antwortet.
+Für Geräte die nur den "Config"-Modus unterstützen sind Wiederholungen nicht erlaubt.
+Bei Geräte mit wakeup-Modus wartet das Gerät bis zum nächsten Aufwachen. Eine längere Verzögerung
+sollte in diesem Fall angedacht werden.
+Wiederholen von Bursts hat Auswirkungen auf die HMLAN Übertragungskapazität.
+- burstAccess
+kann für eine Geräteinstanz gesetzt werden falls das Model bedingte Bursts erlaubt.
+Das Attribut deaktiviert den Burstbetrieb (0_off) was die Nachrichtenmenge des HMLAN reduziert
+und damit die Wahrscheinlichkeit einer Überlast von HMLAN verringert.
+Einschalten (1_auto) erlaubt kürzere Reaktionszeiten eines Geräts. Der Nutzer muss nicht warten
+bis das Gerät wach ist.
+Zu beacht ist dass das Register "burstRx" im Gerät ebenfalls gesetzt werden muss.
+- rawToReadable
+Wird verwendet um Rohdaten von KFM100 in ein lesbares Fomrat zu bringen, basierend auf
+den gemessenen Werten. Z.B. langsames Füllen eines Tanks, während die Werte mit inform
+angezeigt werden. Man sieht:
+
+10 (bei 0%)
+50 (bei 20%)
+79 (bei 40%)
+270 (bei 100%)
+
+Anwenden dieser Werte: "attr KFM100 rawToReadable 10:0 50:20 79:40 270:100".
+FHEM für damit eine lineare Interpolation der Werte in den gegebenen Grenzen aus.
+
+- unit
+setzt die gemeldete Einheit des KFM100 falls 'rawToReadable' aktiviert ist. Z.B.
+attr KFM100 unit Liter
+
+- autoReadReg
+'0' autoReadReg wird ignoriert.
+'1' führt ein "getConfig" für ein Gerät automatisch nach jedem Neustart von FHEM aus.
+'2' verhält sich wie '1',zusätzlich nach jedem power_on.
+'3' wie '2', zusätzlich bei jedem Schreiben auf das Gerät
+'4' wie '3' und versucht außerdem den Status abzufragen falls dieser nicht verfügbar erscheint.
+'5' kontrolliert 'reglist' und 'peerlist'. Falls das Auslesen unvollständig ist wird 'getConfig' ausgeführt
+'8_stateOnly' aktualisiert nur Statusinformationen aber keine Konfigurationen wie Daten- oder
+Peerregister.
+Ausführung wird verzögert um eine Überlastung beim Start zu vermeiden . Daher werden Aktualisierung und Anzeige
+von Werten abhängig von der Größe der Datenbank verzögert geschehen.
+Empfehlungen und Einschränkungen bei Benutzung:
+
+Dieses Attribut nur auf ein Gerät oder Kanal 01 anwenden. Nicht auf einzelne Kanäle eines mehrkanaligen
+Geräts anwenden um eine doppelte Ausführung zu vermeiden.
+Verwendung bei Geräten die nur auf den 'config'-Modus reagieren wird nicht empfohlen da die Ausführung
+erst starten wird wenn der Nutzer die Konfiguration vornimmt
+Anwenden auf Geräte mit 'wakeup'-Modus ist nützlich. Zu bedenken ist aber dass die Ausführung
+bis zm "aufwachen" verzögert wird.
+
+
+
+verfügbare Parameter für "param"
+
+- HM-Sen-RD-O
+offAtPon: nur Heizkanäle: erzwingt Ausschalten der Heizung nach einem powerOn
+onAtRain: nur Heizkanäle: erzwingt Einschalten der Heizung bei Status 'rain' und Ausschalten bei Status 'dry'
+
+- virtuals
+noOnOff: eine virtuelle Instanz wird den Status nicht ändern wenn ein Trigger empfangen wird. Ist dieser Paramter
+nicht gegeben so toggled die Instanz ihren Status mit jedem trigger zwischen An und Aus
+msgReduce: falls gesetzt und der Kanal wird für genutzt wird jede Nachricht
+außer die der Ventilstellung verworfen um die Nachrichtenmenge zu reduzieren
+
+
+
+Erzeugte Events:
+
+- Allgemein
+recentStateType:[ack|info] # kann nicht verwendet werden um Nachrichten zu triggern
+ - ack zeigt an das eine Statusinformation aus einer Bestätigung abgeleitet wurde
+- info zeigt eine automatische Nachricht eines Geräts an
+- sabotageAttackId
+Alarmiert bei Konfiguration des Geräts durch unbekannte Quelle
+- sabotageAttack
+Alarmiert bei Konfiguration des Geräts welche nicht durch das System ausgelöst wurde
+
+- HM-CC-TC,ROTO_ZEL-STG-RM-FWT
+T: $t H: $h
+battery:[low|ok]
+measured-temp $t
+humidity $h
+actuator $vp %
+desired-temp $dTemp
+desired-temp-manu $dTemp #Temperatur falls im manuellen Modus
+desired-temp-cent $dTemp #Temperatur falls im Zentrale-Modus
+windowopen-temp-%d %.1f (sensor:%s)
+tempList$wd hh:mm $t hh:mm $t ...
+displayMode temp-[hum|only]
+displayTemp [setpoint|actual]
+displayTempUnit [fahrenheit|celsius]
+controlMode [manual|auto|central|party]
+tempValveMode [Auto|Closed|Open|unknown]
+param-change offset=$o1, value=$v1
+ValveErrorPosition_for_$dname $vep %
+ValveOffset_for_$dname : $of %
+ValveErrorPosition $vep %
+ValveOffset $of %
+time-request
+trig_<src> <value> #channel was triggered by <src> channel.
+Dieses Event hängt vom kompletten Auslesen der Kanalkonfiguration ab, anderenfalls können Daten
+unvollständig oder fehlerhaft sein.
+trigLast <channel> #letzter empfangener Trigger
+
+- HM-CC-RT-DN and HM-CC-RT-DN-BoM
+state:T: $actTemp desired: $setTemp valve: $vp %
+motorErr: [ok|ValveTight|adjustRangeTooLarge|adjustRangeTooSmall|communicationERR|unknown|lowBat|ValveErrorPosition]
+measured-temp $actTemp
+desired-temp $setTemp
+ValvePosition $vp %
+mode [auto|manu|party|boost]
+battery [low|ok]
+batteryLevel $bat V
+measured-temp $actTemp
+desired-temp $setTemp
+actuator $vp %
+time-request
+trig_<src> <value> #Kanal wurde durch <src> Kanal ausgelößt.
+
+- HM-CC-VD,ROTO_ZEL-STG-RM-FSA
+$vp %
+battery:[critical|low|ok]
+motorErr:[ok|blocked|loose|adjusting range too small|opening|closing|stop]
+ValvePosition:$vp %
+ValveErrorPosition:$vep %
+ValveOffset:$of %
+ValveDesired:$vp % # durch Temperatursteuerung gesetzt
+operState:[errorTargetNotMet|onTarget|adjusting|changed] # operative Bedingung
+operStateErrCnt:$cnt # Anzahl fehlgeschlagener Einstellungen
+
+- HM-CC-SCD
+[normal|added|addedStrong]
+battery [low|ok]
+
+- HM-SEC-SFA-SM
+powerError [on|off]
+sabotageError [on|off]
+battery: [critical|low|ok]
+
+- HM-LC-BL1-PB-FM
+motor: [opening|closing]
+
+- HM-LC-SW1-BA-PCB
+battery: [low|ok]
+
+- HM-OU-LED16
+color $value # in Hex - nur für Gerät
+$value # in Hex - nur für Gerät
+color [off|red|green|orange] # für Kanal
+[off|red|green|orange] # für Kanal
+
+- HM-OU-CFM-PL
+[on|off|$val]
+
+- HM-Sen-Wa-Od
+$level%
+level $level%
+
+- KFM100
+$v
+$cv,$unit
+rawValue:$v
+Sequence:$seq
+content:$cv,$unit
+
+- KS550/HM-WDS100-C6-O
+T: $t H: $h W: $w R: $r IR: $ir WD: $wd WDR: $wdr S: $s B: $b
+temperature $t
+humidity $h
+windSpeed $w
+windDirection $wd
+windDirRange $wdr
+rain $r
+isRaining $ir
+sunshine $s
+brightness $b
+unknown $p
+
+- HM-Sen-RD-O
+lastRain: timestamp # kein Trigger wird erzeugt. Anfang des vorherigen Regen-Zeitstempels
+des Messwerts ist Ende des Regens.
+
+- THSensor und HM-WDC7000
+T: $t H: $h AP: $ap
+temperature $t
+humidity $h
+airpress $ap #nur HM-WDC7000
+
+- dimmer
+overload [on|off]
+overheat [on|off]
+reduced [on|off]
+dim: [up|down|stop]
+
+- motionDetector
+brightness:$b
+alive
+motion on (to $dest)
+motionCount $cnt _next:$nextTr"-"[0x0|0x1|0x2|0x3|15|30|60|120|240|0x9|0xa|0xb|0xc|0xd|0xe|0xf]
+cover [closed|open] # nicht bei HM-Sec-MDIR
+sabotageError [on|off] # nur bei HM-Sec-MDIR
+battery [low|ok]
+devState_raw.$d1 $d2
+
+- remote/pushButton/outputUnit
+ (to $dest) wird hinzugefügt wenn der Knopf gepeert ist und keinen Broadcast sendet
+Freigabe ist nur für verknüpfte Kanäle verfügbar
+Btn$x onShort
+Btn$x offShort
+Btn$x onLong $counter
+Btn$x offLong $counter
+Btn$x onLongRelease $counter
+Btn$x offLongRelease $counter
+Btn$x onShort (to $dest)
+Btn$x offShort (to $dest)
+Btn$x onLong $counter (to $dest)
+Btn$x offLong $counter (to $dest)
+Btn$x onLongRelease $counter (to $dest)
+Btn$x offLongRelease $counter (to $dest)
+
+- remote/pushButton
+battery [low|ok]
+trigger [Long|Short]_$no trigger event from channel
+
+- swi
+Btn$x toggle
+Btn$x toggle (to $dest)
+battery: [low|ok]
+
+- switch/dimmer/blindActuator
+$val
+powerOn [on|off|$val]
+[unknown|motor|dim] [up|down|stop]:$val
+timedOn [running|off]
# "An" ist temporär - z.B. mit dem 'on-for-timer' gestartet
+
+- sensRain
+$val
+powerOn
+level
+timedOn [running|off]
# "An" ist temporär - z.B. mit dem 'on-for-timer' gestartet
+trigger [Long|Short]_$no trigger event from channel
+
+- smokeDetector
+[off|smoke-Alarm|alive] # für Gruppen-Master
+[off|smoke-forward|smoke-alarm] # für Gruppenmitglieder
+[normal|added|addedStrong] #HM-CC-SCD
+SDteam [add|remove]_$dname
+battery [low|ok]
+smoke_detect [none|<src>]
+teamCall:from $src
+
+- threeStateSensor
+[open|tilted|closed]
+[wet|damp|dry] #nur HM-SEC-WDS
+cover [open|closed] #HM-SEC-WDS und HM-Sec-RHS
+alive yes
+battery [low|ok]
+contact [open|tilted|closed]
+contact [wet|damp|dry] #nur HM-SEC-WDS
+sabotageError [on|off] #nur HM-SEC-SC
+
+- winMatic
+[locked|$value]
+motorError [no|TurnError|TiltError]
+direction [no|up|down|undefined]
+charge [trickleCharge|charge|dischange|unknown]
+airing [inactiv|$air]
+course [tilt|close]
+airing [inactiv|$value]
+contact tesed
+
+- keyMatic
+unknown:40
+battery [low|ok]
+uncertain [yes|no]
+error [unknown|motor aborted|clutch failure|none']
+lock [unlocked|locked]
+[unlocked|locked|uncertain]
+
+
+
+
+=end html
+
=cut
diff --git a/fhem/FHEM/HMConfig.pm b/fhem/FHEM/HMConfig.pm
index 66dfde8fb..1fd43fab0 100644
--- a/fhem/FHEM/HMConfig.pm
+++ b/fhem/FHEM/HMConfig.pm
@@ -1290,7 +1290,7 @@ $culHmRegChan{"ROTO_ZEL-STG-RM-FWT03"}= $culHmRegChan{"HM-CC-TC03"};
,on =>""
,off =>""
,toggle =>""
- ,press =>"[long|short] [] []..."
+ ,press =>"[long|short] [] ..."
,inhibit =>"[on|off]"
,statusRequest =>""
,peerIODev =>"[IO] [set|unset]..."
@@ -1302,7 +1302,7 @@ $culHmRegChan{"ROTO_ZEL-STG-RM-FWT03"}= $culHmRegChan{"HM-CC-TC03"};
,toggle =>""
,pct =>" ... [] []"
,stop =>""
- ,press =>"[long|short] [on|off|] [] ..."
+ ,press =>"[long|short] [on|off|] ..."
,up =>"[] [] [] ..."
,down =>"[] [] [] ..."
,inhibit =>"[on|off]"
@@ -1314,7 +1314,7 @@ $culHmRegChan{"ROTO_ZEL-STG-RM-FWT03"}= $culHmRegChan{"HM-CC-TC03"};
,toggle =>""
,pct =>"[] ... []"
,stop =>""
- ,press =>"[long|short] [on|off|] [] ..."
+ ,press =>"[long|short] [on|off|] ..."
,up =>"[] [] [] ..."
,down =>"[] [] [] ..."
,inhibit =>"[on|off]"
@@ -1367,7 +1367,7 @@ $culHmSubTypeSets{motionDetector} = $culHmSubTypeSets{threeStateSensor};
,on =>""
,off =>""
,toggle =>""
- ,press =>"[long|short] [] []..."
+ ,press =>"[long|short] [] ..."
,inhibit =>"[on|off]"},
"HM-CC-TC" =>{ burstXmit =>""},
"HM-CC-RT-DN" =>{ burstXmit =>""
@@ -1414,7 +1414,7 @@ $culHmModelSets{"HM-Sen-Wa-Od"} = $culHmModelSets{"HM-SEC-SD"};
,level =>" ..."
,keydef =>" "
,inhibit =>"[on|off]"
- ,press =>"[long|short] [] [] ..."
+ ,press =>"[long|short] [] ..."
,peerIODev =>"[IO] [set|unset]..."
},
"HM-Sen-RD-O02" =>{ "on-for-timer" =>""
@@ -1458,7 +1458,7 @@ $culHmModelSets{"HM-Sen-Wa-Od"} = $culHmModelSets{"HM-SEC-SD"};
,on =>""
,off =>""
,toggle =>""
- ,press =>"[long|short] [] [] ..."
+ ,press =>"[long|short] [] ..."
,inhibit =>"[on|off]"
,statusRequest =>""},
);