Set magic: Unterschied zwischen den Versionen
Justme (Diskussion | Beiträge) |
K (Link auf nicht existierende Seite(n) entfernt) |
||
Zeile 5: | Zeile 5: | ||
Die Schreibweise steht seit Featurelevel 5.7 zur Verfügung. | Die Schreibweise steht seit Featurelevel 5.7 zur Verfügung. | ||
[[set magic]] kann verwendet werden für die Befehle | [[set magic]] kann verwendet werden für die Befehle | ||
* | * set<ref>{{Link2CmdRef|Anker=set|Lang=de}}</ref> | ||
* | * setreading<ref>{{Link2CmdRef|Anker=setreading|Lang=de}}</ref> | ||
und als Sonderfälle für | und als Sonderfälle für | ||
* [[attr]]<ref>{{Link2CmdRef|Anker=attr|Lang=de}}</ref> | * [[attr]]<ref>{{Link2CmdRef|Anker=attr|Lang=de}}</ref> stateFormat<ref>{{Link2CmdRef|Anker=stateFormat|Lang=de}}</ref> | ||
* [[attr]] wu_dataValues im [[Modul]] [[HP1000]]<ref>{{Link2CmdRef|Anker=HP1000|Lang=de}}</ref> | * [[attr]] wu_dataValues im [[Modul]] [[HP1000]]<ref>{{Link2CmdRef|Anker=HP1000|Lang=de}}</ref> | ||
dazu zählen auch [[Modul|Module]], die Teile der Syntax verwenden | dazu zählen auch [[Modul|Module]], die Teile der Syntax verwenden |
Version vom 3. Dezember 2021, 13:11 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 {(ReadingsVal("PIR","Count",0) + 1)}