Set magic

Aus FHEMWiki
Wechseln zu: Navigation, Suche

Begriff

Der Begriff set magic[1] steht für die besondere Schreibweise einer Funktion zum Auslesen von Gerätevariablen im Argument einiger FHEM-Befehle. Er ist im Zusammenhang mit der Entstehung dieser Schreibweise geprägt worden.

Verwendungsbereich

Die Schreibweise steht seit Featurelevel 5.7 zur Verfügung. set magic kann verwendet werden für die Befehle

und als Sonderfälle für

dazu zählen auch Module, die Teile der Syntax verwenden

oder Module mit einer erweiterten Anwendung

set magic vereinfacht Schreibweisen wie

 {fhem("setreading <Gerätename> <Readingname> ".ReadingsNum("<Gerätename>","<Readingname>","<Defaultwert>"))}

zu

 setreading <Gerätename> <Readingname> [<Gerätename>,<Readingname>,d]

Syntax 1

 [<Präfix>:<Gerätename>:<Name des Gerätevariable>:<Suffix>]

Der optionale Präfix schränkt die Suche auf bestimmte Gerätevariablen ein.

Es muss ein gültiger Gerätename für ein existierendes Gerät angegeben werden.

Es muss eine existierende, nicht leere Gerätevariable angegeben werden.

Der optionale Suffix extrahiert bestimmte Werte der Gerätevariablen.

  • d extrahiert die erste Zahl.
  • i extrahiert die erste Zahl als Ganzzahl.
  • r<n> extrahiert die erste Zahl, und rundet sie auf n Dezimalstellen, ohne n auf eine Stelle.
  • sec liefert die Zeit in Sekunden seit Änderung des Readings.
  • t liefert den Zeitstempel des Readings

Syntax 2

 {(<Perlausdruck>)}

Der Gerätename kann im Perlausdruck mit $DEV angegeben werden.

Verwendung

Mit Syntax 1 im Gegensatz zu Syntax 2, ist es möglich ohne Perlkenntnis variable Inhalte zu setzen.

Beispiel Syntax 1: Formatieren eines Readingwertes zu einer Ganzzahl

In einem Gerät sensor wird der Wert des Reading brightness zu einer Ganzzahl umgewandelt und in das Reading brightness des Gerätes Anzeige geschrieben.

setreading Anzeige brightness [sensor:brightness:i]

Beispiel Syntax 2: Inkrementieren eines Readingwertes

In einem Gerät PIR wird das Reading Count um den Wert 1 erhöht.

setreading PIR Count {(ReadingsVal("PIR","Count",0) + 1)}

Verweise