Hauptmenü

Reading - Wert berechnen

Begonnen von ag21368, 22 Oktober 2018, 10:17:49

Vorheriges Thema - Nächstes Thema

ag21368

Hallo zusammen,

ich möchte immer um 2:00 Uhr ein Reading setzen welches berechnet werden soll. Zum Beispiel

define at_licht_morgens_an at *02:00:00 {fhem("setreading A_sunrise_sunset_licht licht_an {sunset(-45000)}")
}

Der dort errechnete Wert soll in das reading geschrieben werden Bei mir wird aber nur der Text geschrieben.

Ich möchte dieses reading später nutzen um zu eben der errechneten Zeit etwas zu schalten.

Danke im Voraus

VG
Andreas


Byte09

Warum der Umweg über das at ? Du kannst doch auch direkt schalten . Geht in jedem Fall mit mswitch , mit doif etc.

Gruss Byte09

Gesendet von meinem SM-G900F mit Tapatalk


Otto123

#2
Hallo ag21368,

Du musst Perlausdrücke im Ausführungsteil (set magic genannt) noch mal mit () klammern
{sunset(-45000)} -> {(sunset(-45000))}

Steht so (etwas implizit) in der Doku:D
Zitat
set <devspec> <type-specific>

...

{(perlExpression)} mit dem Ergebnis der perlExpression. $DEV wird dabei mit dem Namen des vom set betroffenen Gerätes ersetzt.
Diese Ersetzungen sind unter dem Namen "set magic" bekannt.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

viegener

Wie oben schon beschrieben, kannst Du auch eine Berechnung zu sunset für Schaltvorgänge nutzen (siehe auch DOIF-Beispiele)

Wenn Du Dein at so erhalten willst, dann ist es nötig die Berechnung auf der perl-Ebene auch ausführen zu lassen, momentan steht sie im String:

define at_licht_morgens_an at *02:00:00 {fhem("setreading A_sunrise_sunset_licht licht_an "+sunset(-45000)) }

Ohne das jetzt im System auf Syntaxfehler überprüft zu haben.
Und eigentlich brauchst Du gar nicht für den setreading-Befehl auf die perl-Ausführungsebene.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

ag21368