Set magic: Unterschied zwischen den Versionen
K (Link auf nicht existierende Seite(n) entfernt) |
K (ReadingsVal durch ReadingsNum ersetzt, weil in den Parametern die 0 schon als Zahl eingetragen wurde und es um eine numerische Operation geht.) |
||
Zeile 53: | Zeile 53: | ||
In einem [[Gerät]] ''PIR'' wird das [[Readings|Reading]] ''Count'' um den Wert 1 erhöht. | In einem [[Gerät]] ''PIR'' wird das [[Readings|Reading]] ''Count'' um den Wert 1 erhöht. | ||
<code>setreading PIR Count {( | <code>setreading PIR Count {(ReadingsNum("PIR","Count",0) + 1)}</code> | ||
== Verweise == | == Verweise == |
Aktuelle Version vom 7. August 2023, 09:40 Uhr
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
- readingsGroup[7] verwendet Präfix und Suffix
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.
- a beschränkt die Suche auf Attribute
- i beschränkt die Suche auf Internals
- r beschränkt die Suche auf Readings
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 {(ReadingsNum("PIR","Count",0) + 1)}