HMCCU Best Practice

Aus FHEMWiki
Zur Navigation springen Zur Suche springen

Neue Geräte anlernen

Um ein neues Gerät an die CCU anzulernen und in FHEM zu nutzen, kann man wie folgt vorgehen:

  1. Gerät in CCU2 anlernen
  2. Im WebUI der CCU2 den Menübefehl Einstellungen → Geräte aufrufen. Das neu angelernte Gerät in der Liste suchen und nacheinander das Gerät selbst sowie die einzelnen Kanäle nach eigenen Wünschen umbenennen. Dabei sind folgende Regeln zu beachten:
    • CCU2 weit Keine Namen doppelt vergeben, z.B. darf ein Raum nicht den gleichen Namen haben wie ein Gerät.
    • Keine Umlaute verwenden.
    • Wenn möglich keine Leerzeichen verwenden (funktioniert zwar, erschwert aber das Handling in FHEM).
  3. In FHEM für das I/O Device den Befehl get devicelist ausführen, um das neue Gerät in FHEM bekannt zu machen.
  4. Für das I/O Device den Befehl get deviceinfo CCU2-Devicename ausführen. Die Ausgabe zeigt die für das Gerät verfügbaren Kanäle und Datenpunkte sowie die möglichen Operationen (R=Read, W=Write, E=Event) an, die ausgeführt werden können. Anhand dieser Informationen kann man entscheiden, ob man im nächsten Schritt besser HMCCUCHN oder HMCCUDEV für die weiteren Definitionen verwendet. Falls sich aus den Namen der Datenpunkte nicht ihr Verwendungszweck ergibt, findet man in der EQ3-Doku eine detaillierte Beschreibung der Datenpunkte aller Geräte.
  5. Ein FHEM Device für das neue Gerät und/oder seine Kanäle definieren:
    • Das Modul HMCCUCHN verwenden, wenn lediglich ein Kanal des Geräts in FHEM eingebunden werden soll oder die Kanäle separat verwendet werden sollen (z.B. bei einem 4-fach Aktor).
    • Das Modul HMCCUDEV verwenden, wenn das komplette Gerät mit allen Kanälen in FHEM eingebunden werden soll oder bei Sonderfällen wie Rauchmeldergruppen oder virtuelle Gerätegruppen.
  6. Für das neue Device in FHEM den Befehl set defaults ausführen, um einige Attribute zu setzen. Hinweis: Default-Attribute sind nicht für alle Gerätetypen verfügbar. Grundsätzlich sollten folgende Attribute gesetzt werden:
    • ccureadingfilter - Einschränkung auf die tatsächlich benötigten Datenpunkte bzw. Readings
    • ccureadingformat - Bessere Lesbarkeit der Readings durch das Format datapoint
    • event-on-change-reading bzw. event-on-update-reading - Wenn ein Schalter oder Taster über Datenpunkte wie PRESSED_xxx verfügt, sollte event-on-update-reading auf ".*" gesetzt werden. Bei allen anderen Geräten event-on-change-reading.
    • statedatapoint - Legt den Kanal und den Datenpunkt fest, über den ein Gerät oder ein Kanal geschaltet wird bzw. dessen Wert in STATE des FHEM Devices übernommen wird. Bei HMCCUCHN Devices wird nur der Datenpunkt angegeben.
    • statevals - Legt sprechende Namen für Schaltzustände fest. Die Angaben hier stehen dann als Set-Befehle zur Verfügung.
    • substitute - Ersetzt Datenpunktwerte durch Texte bevor sie in Readings gespeichert werden

Readingnames anpassen

Format von Readingnames

In HMCCUDEV und HMCCUCHN werdent Readingnames aus den Kanalnamen oder den Kanaladressen sowie den Datenpunktnamen gebildet. Das Format der Readingnames kann über das Attribut ccureadingformat eingestellt werden. Die Vorgabe ist 'datapoint' Die folgende Tabelle enthält eine Übersicht der Formate:

Datenpunktname oder -adresse ccureadingformat Readingname
BidCos-RF.1234567:1.STATE datapoint 1.STATE
BidCos-RF.1234567:1.STATE datapointlc 1.state
BidCos-RF.1234567:1.LEVEL name MeinKanal.1.LEVEL
BidCos-RF.1234567:1.LEVEL address 1234567.1.LEVEL

Readingnames ändern oder ergänzen

Mit dem Attribut ccureadingname können einzelne Readings umbenannt oder neue Readings als Kopie vorhandener Readings hinzugefügt werden. Die Syntax des Attributs sieht wie folgt aus:

ccureadingname Ausdruck:[+]NewReading[;...]

Der Parameter Ausdruck gibt den Teil eines Readingnames an, der ersetzt werden soll. Mit NewReading wird der Name des zusätzlichen Readings (führendes '+') oder der Ersetzungstext für den vorhandenen Readingname festgelegt. Beispiele:

Readingname alt ccureadingname Readingname(s) neu
1.LEVEL LEVEL:pct 1.pct
1.LEVEL [0-9]{1,2}\.LEVEL:pct pct
1.LEVEL 1.LEVEL:+pct;1.LEVEL:level pct, level
1.LEVEL 1.LEVEL:pct;1.LEVEL:level pct

Wichtig! Die Regeln werden von links nach rechts abgearbeitet. Daher greift die 2. Regel in der letzten Zeile nicht mehr (1.LEVEL wurde zuvor durch pct ersetzt).

Readingnames zusammenfassen

Mit dem Attribut ccureadingname können auch mehrere Readings zu einem neuen Reading zusammengefasst werden. Beispiel: Ein Taster liefert je nach Dauer des Tastendrucks im Kanal 1 ein Event PRESS_SHORT oder PRESS_LONG. Normalerweise würden dabei auch zwei Readings "1.PRESS_SHORT" und "1.PRESS_LONG" entstehen. Diese beiden Readings können mit folgendem Befehl in einem Reading PRESSED zusammengefasst werden:

attr mydev ccureadingname ^1.PRESS_(SHORT|LONG)$:PRESSED

Wenn ein Taster über mehrere Kanäle (hier vier) verfügt, können auch diese zu einem einzigen Reading zusammengefasst werden:

attr mydev ccureadingname ^[1-4].PRESS_(SHORT|LONG)$:PRESSED