Hallo liebe Gemeinde,
fhem ("set Schalter toggle");;
fhem ("
define Get_Switch_State at +00:00:30
set StateDummy ".Value("Schalter").";;
");;
Zielstellung:
nach dem Schalten eines Aktors via toggle soll etwas zeitverzögert der Status des Aktors via "at" zurückgelesen bzw. gespeichert werden.
Problem / Verständnisproblem:
der Status welcher nach 30 Sekunden gespeichert wird, ist immernoch "set toggle" anstelle des gültigen Status "on" oder "off", welcher sich nachweislich spätestens nach 1 bis zwei sekunden eingestellt hat.
Habe ich eine falsche Erwartungshaltung an die at-Funktion? Ich würde erwarten, dass der Status erst ach 30Sekunden gerufen wird statt zum Zeitpunkt,an welchem die "at" Routine definiert wird?
viele Grüße
Hi Muffe
ZitatHabe ich eine falsche Erwartungshaltung an die at-Funktion?
ja
ZitatIch würde erwarten, dass der Status erst ach 30Sekunden gerufen wird statt zum Zeitpunkt,an welchem die "at" Routine definiert wird?
das at wird ja
sofort definiert , mit dem zu diesem Zeitpunkt enthaltenen state des Schalters - , ausführungszeit des inhaltes in 30 sekunden.
zum zeitpunkt der definition hat aber der schalter nunmal den state 'toggle'
gruss Byte09
edit:da war otto schneller, ich wollte es erst ausprobieren . Wie Otto schrieb geht es , wenn du nicht auf die perlebene gehst und den state per setmagic angiebst.
dieses wird erst zum ausführungszeitpunkt ersetzt.
Hi Muffe,
so in der FHEM Kommandozeile mit vorhandenen Dummy getestet.
set Aktor01 toggle ; define Get_Switch_State at +00:00:30 set schalter [Aktor01:state]
Erklärung: Durch dein (unnötiges) Perl Konstrukt, löst Perl die Abfrage schon beim define auf.
Tipp: Mit einem list Get_Switch_State
innerhalb 30 sec siehst Du genau was wirklich im at steht.
Gruß Otto
Byte09 und Otto:
vielen herzlichen Dank für die super schnelle Hilfe!
Es funktioniert nun, unter Berücksichtigung eurer Tipps !!
viele Grüße
Muffe