[gelöst] SUB verzögert aus DOIF starten

Begonnen von Beetle2003, 12 Juni 2021, 22:29:39

Vorheriges Thema - Nächstes Thema

Beetle2003

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

Sany

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!
fhem auf Zotac ZBox nano als LXC auf Proxmox, weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

Otto123

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
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

Beetle2003

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

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

McShire

Meines Wissens werden bei wait Sekunden angegeben, dann muss es attr <device> wait 0,600 heißen.
Gruss
Werner

Damian

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 ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Otto123

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
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