FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: rico5588 am 12 Januar 2026, 17:13:10

Titel: Doif all-in-one
Beitrag von: rico5588 am 12 Januar 2026, 17:13:10
Hallo Ihr,

ich wollte gern ein Doif mit internem Button erstellen.
Dieses läuft soweit auch ganz gut. Nun habe ich einen effect der mich stört. Wenn ich den Turbo_MODE (cmd3) nutze wirkt wait nicht ausreichend sodass, obwohl der Timer noch läuft, wird das doif auf den cmd5 umgeschaltet und bricht das Heizen ab.
Könnt ihr mir einen Tipp geben was ich falsch mache? Ich wollte es vermeiden über ein externes Device dieses doif zurück zusetzen.
defmod SmartGrid_doif DOIF (([[$SELF:P_my1begin,"00:00"]-[$SELF:P_my1end,"00:01"]|[$SELF:P_my1tag,0]] \
or [[$SELF:P_my2begin,"00:00"]-[$SELF:P_my2end,"00:01"]|[$SELF:P_my2tag,0]])\
and [?$SELF:P_button] eq "Auto"\
and [?Anwesendheit_doif] eq "present"\
and [?DimplexWPManager:dimhp_temperature_dhw:d] < 48\
or [$SELF:P_button] eq "Auto")\
(set DimplexWPManager dimhp_temperature_dhwset 48)\
(set DimplexWPManager dimhp_input_sgready_green on) \
(set DimplexSmartGrid_green on,set Turbo_MODE off)\
DOELSEIF\
(([[$SELF:P_my3begin,"00:00"]-[$SELF:P_my3end,"00:01"]|[$SELF:P_my3tag,0]]\
and [?Anwesendheit_doif] eq "present"\
and [?$SELF:P_button] eq "Auto")\
or ([AktuelleLeistungJSON:state:d] > 2600 )\
and [?$SELF:P_button] eq "Auto")\
(set DimplexWPManager dimhp_temperature_dhwset 60)\
(set DimplexWPManager dimhp_input_sgready_green on)\
(set DimplexSmartGrid_green on)\
DOELSEIF \
(([00:01]-[23:59]|0123456) and [$SELF:P_button] eq "Turbo_MODE")\
(set DimplexWPManager dimhp_temperature_dhwset 60)\
(set DimplexWPManager dimhp_input_sgready_green on,set DimplexSmartGrid_green on,set Turbo_MODE on)\
(set SmartGrid_doif P_button Auto,set Turbo_MODE off)\
DOELSEIF \
([$SELF:P_button] eq "Aus") \
(set DimplexWPManager dimhp_temperature_dhwset 48)\
(set DimplexWPManager dimhp_input_sgready_green off)\
(set DimplexSmartGrid_green off)\
DOELSE\
(set DimplexWPManager dimhp_input_sgready_green off)\
(set DimplexSmartGrid_green off)
attr SmartGrid_doif comment cmdstate Automatik,Automatik,Automatik,Automatik|Manuell An,Manuell An,Manuell An,Manuell An|Manuell Aus,Manuell Aus,Manuell Aus,Manuell Aus|Aus,Aus,Aus,Aus\
\
DOELSE\
(set DimplexWPManager dimhp_input_sgready_green off)\
(set DimplexSmartGrid_green off)
attr SmartGrid_doif devStateIcon cmd_1:general_auto_an@green cmd_2:general_auto_an@green cmd_3.2|cmd_3.1:general_an@yellow cmd_4|initialized:general_aus@red cmd_5:general_auto_aus@green
attr SmartGrid_doif do always
attr SmartGrid_doif group Smardgrid
attr SmartGrid_doif icon helper_doif
attr SmartGrid_doif readingList P_button P_my1begin P_my1end P_my1tag P_my2begin P_my2end P_my2tag P_my3begin P_my3end P_my3tag P_Timer1
attr SmartGrid_doif room Technik--Dimplex
attr SmartGrid_doif setList P_my1tag:12345,0123456,06 \
P_my2tag:12345,0123456,06\
P_my3tag:12345,0123456,06\
P_my1begin:time \
P_my1end:time \
P_my2begin:time \
P_my2end:time\
P_my3begin:time \
P_my3end:time\
P_button:uzsuSelectRadio,Auto,Turbo_MODE,Aus\
P_Timer1:slider,9,600,18000,1
attr SmartGrid_doif wait 0:0:0,0,[$SELF:P_Timer1]:0:600
attr SmartGrid_doif webCmd P_button:Manuelle Timer in Sek:P_Timer1

setstate SmartGrid_doif cmd_1
setstate SmartGrid_doif 2026-01-11 18:43:37 Device AktuelleLeistungJSON
setstate SmartGrid_doif 2026-01-11 18:58:51 P_Timer1 17409
setstate SmartGrid_doif 2026-01-11 18:44:44 P_button Auto
setstate SmartGrid_doif 2025-04-14 19:07:13 P_my1begin 05:00
setstate SmartGrid_doif 2025-04-14 19:26:15 P_my1end 16:45
setstate SmartGrid_doif 2025-04-14 19:26:25 P_my1tag 12345
setstate SmartGrid_doif 2025-04-14 19:26:44 P_my2begin 07:00
setstate SmartGrid_doif 2025-04-14 19:27:00 P_my2end 16:45
setstate SmartGrid_doif 2025-04-14 19:26:34 P_my2tag 06

Danke und gruß vorab.
Titel: Aw: Doif all-in-one
Beitrag von: Damian am 12 Januar 2026, 18:43:56
DOIF ist so programmiert, dass ein Wechsel des Zweiges immer einen laufenden Wait-Timer unterbricht, damit es nicht zur Ausführung des ursprünglichen Zweiges kommt. Soll die Ausführung dennoch stattfinden, dann kannst du vor den Befehl einen FHEM-SLEEP-Befehl setzen. Dieser wird nicht unterbrochen.
Titel: Aw: Doif all-in-one
Beitrag von: rico5588 am 12 Januar 2026, 19:04:19
Hallo Damian,

ich denke du meinst das so? Ist sleep nicht blockierend?
DOELSEIF
(([00:01]-[23:59]|0123456) and [$SELF:P_button] eq "Ulli-Mode")
(set DimplexWPManager dimhp_temperature_dhwset 60)
(set DimplexWPManager dimhp_input_sgready_green on,set DimplexSmartGrid_green on,set Ulli_MODE on)
(sleep [$SELF:P_Timer1], set SmartGrid_doif P_button Auto,set Ulli_MODE off)

Titel: Aw: Doif all-in-one
Beitrag von: Damian am 12 Januar 2026, 19:13:26
Das FHEM-SLEEP blockiert nicht. Normalerweise wird der in Großbuchstaben geschrieben und mit Semikolon zum folgenden Befehl abgegrenzt.
Titel: Aw: Doif all-in-one
Beitrag von: rico5588 am 12 Januar 2026, 19:31:32
Danke so geh's

DOELSEIF
(([00:01]-[23:59]|0123456) and [$SELF:P_button] eq "Turbo-Mode")
(set DimplexWPManager dimhp_temperature_dhwset 60)
(set DimplexWPManager dimhp_input_sgready_green on,set DimplexSmartGrid_green on,set Turbo_MODE on)
(Sleep [$SELF:P_Timer1]; set SmartGrid_doif P_button Auto; set Turbo_MODE off)
Titel: Aw: [gelöst] - Doif all-in-one
Beitrag von: Per am 12 Januar 2026, 22:16:25
Du kannst auch abfragen, in welchem Sub Cmd sich das DOIF befindet.
Außerdem hast du 2x DOELSE verwendet...
Titel: Aw: [gelöst] - Doif all-in-one
Beitrag von: rico5588 am 13 Januar 2026, 12:17:24
Hallo Per, Damian

leider geht es doch noch nicht.
Das mit dem 2x DOELSE täuscht da ich dies im attr comment stehen habe.
Habe ich den Sleep richtig angewandt?