Set magic: Unterschied zwischen den Versionen

Aus FHEMWiki
K (ReadingsVal durch ReadingsNum ersetzt, weil in den Parametern die 0 schon als Zahl eingetragen wurde und es um eine numerische Operation geht.)
 
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt)
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>
* set<ref>{{Link2CmdRef|Anker=set|Lang=de}}</ref>
* [[setreading]]<ref>{{Link2CmdRef|Anker=setreading|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> [[stateFormat]]<ref>{{Link2CmdRef|Anker=stateFormat|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
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 {(ReadingsVal("PIR","Count",0) + 1)}</code>
<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

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 {(ReadingsNum("PIR","Count",0) + 1)}

Verweise