Hallo,
ich habe folgendes doif
([heatDemand.Heizung] eq "off" or [Aussentemp] eq "warm") {
{Heizkoerper_off("1")};
fhem {"define Heizkoerper_off_wait at +00:10:00 {Heizkoerper_off(\"2\")}"};
}
Das erste SUB {Heizkoerper_off("1")}; wird durchgeführt.
Dann soll zeitverzögert das SUB mit einem anderen Parameter aufgerufen werden ( {Heizkoerper_off("2")}; ). Dieses habe ich mit einem at versucht.
Dieser Aufruf wird mit einem Fehler quittiert.
Was ist falsch? Gibt es eine bessere Möglichkeit?
Danke
Hi,
ZitatWas ist falsch? Gibt es eine bessere Möglichkeit?
"falsch", oder eher ungünstig und fehlerträchtig, ist Dein Versuch, DOIF-Syntax mit fhem-Syntx zu vermischen. Das geht zwar (irgendwie immer), aber es gibt im DOIF (Perl-Modus, den Du ja offensichtlich nutzt) eigentlich alles, was Du für Dein Ansinnen brauchst.
Siehe:
Zitathttps://fhem.de/commandref_modular_DE.html#DOIF_Ausführungstimer
Viel Erfolg!
Hi,
versuch doch deinen Syntax von innen heraus in der FHEM Kommandozeile zu prüfen.
Funktioniert das?
{fhem {"define Heizkoerper_off_wait at +00:00:10 {}"}}
Funktioniert das?
{fhem ("define Heizkoerper_off_wait at +00:00:10 {}")}
Perlmodus vom DOIF brauchst Du hier nicht wirklich, nimm einfach FHEM Befehle.
Gruß Otto
Hallo,
das ist was funktioniert.
([heatDemand.Heizung] eq "off" or [Aussentemp] eq "warm") {
{Heizkoerper_off("1")};
{fhem ("define Heizkoerper_off_wait at +00:10:00 {Heizkoerper_off(\"2\")}")};
}
Gruss
DOIF ([heatDemand.Heizung] eq "off" or [Aussentemp] eq "warm")
(fhem'Heizkoerper_off("1")')
(fhem'Heizkoerper_off("2")')
attr wait 0,10
so würde es im FHEM-Modus funktionieren, evtl. brauchst du noch ein do always Attribut
Meines Wissens werden bei wait Sekunden angegeben, dann muss es attr <device> wait 0,600 heißen.
Gruss
Werner
Zitat von: McShire am 14 Juni 2021, 03:31:05
Meines Wissens werden bei wait Sekunden angegeben, dann muss es attr <device> wait 0,600 heißen.
Gruss
Werner
Das ist richtig, da habe ich wohl auf die falsche Lösung von Otto geschaut ;)
Zitat von: Damian am 14 Juni 2021, 13:41:12
Das ist richtig, da habe ich wohl auf die falsche Lösung von Otto geschaut ;)
War nicht als Lösung sondern als Lernhilfe gedacht. Deswegen hatte ich die Minuten in Sekunden umgemünzt. Aber Du hast ja schnell aufgelöst :P