readingsChange

Aus FHEMWiki


readingsChange
Zweck / Funktion
Formatieren von Readings
Allgemein
Typ Hilfsmodul
Details
Dokumentation EN / DE
Support (Forum) Automatisierung
Modulname 33_readingsChange.pm
Ersteller rudolfkoenig (Forum / Wiki)
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


Eventuell ist es nötig, die Readings eines Gerätes zu formatieren, Ihnen also Nachkommastellen abzuschneiden oder Textinhalte zu entfernen, hinzufügen oder umzustellen.

Hierzu dient das FHEM-Hilfsmodul readingsChange. Sobald ein Reading vom Device erzeugt wird, dass dem RegEX des Moduls entspricht, wird die Formatierung, z.B. von 27.2852 zu 27.3 vorgenommen.

Definition

Die Definition ist vom Modulautor in der Referenz beschrieben.

Besonderheiten

ReadingsChange ist abhängig von der Reihenfolge der Events und deren interner Verarbeitung. In dieser "Nahrungskette" steht es ziemlich weit hinten, mit dem Ergebnis, dass zum Beispiel Devices mit Attributen wie event-on-Change-reading fallweise nicht formatiert werden. Dies erklärt dieser und sein folgender Forumseintrag: readingsChange funktioniert nicht mehr


Hier spielt eine wichtige Rolle die Notify-Order, die man mit list .* NTFY_ORDER sich vor Augen führen kann.

Beispiele

Es soll das Reading "battery" für den Batteriestatus mehrerer HUE-Devices (Bewegungsmelder), welche einen numerischen Wert zwischen 0 und 100 liefern, in "ok" oder "low" übersetzt werden. Die Schwelle von 30% für "low" ist an dieser Stelle nur beispielhaft.

define rc_battState readingsChange HUEMotion. ^battery$ (\d+) {$1 > 30 ? "ok" : "low"}

Beim Homematic-Zähler HM-ES-TX-WM wird der übermittelte Wert von powerIEC nicht als "signed integer() (-2.147.4483.648 ... 2.147.483.647)" sondern als "unsigned integer() oder DWORD ( 0... 4294967295 )" interpretiert und damit entsprechend falsch angezeigt. Sofern der Zähler nur für den Bezug von Energie genutzt wird, tritt der Fehler nicht auf, um jedoch negative Leistungswerte (z.B. durch Einspeisung Balkonkraftwerk) richtig anzuzeigen, wird folgende Zeile helfen:

define rc_Zaehler_neg readingsChange HM_3BD456_IEC_01 powerIEC (\d+) { $1 > 400000000 ? $1-4294967295 : $1}

Links