Hallo zusammen,
Ich schalte über folgendes DOIF meine Zirkulationspumpe.
Internals:
DEF (([06:15-22:00|8] or [07:00-22:30|7]) and [Bewohner] eq "zuhause" and [Shelly_3:temp_zirkulation] < 29) (set Shelly_3 on) DOELSEIF ([Shelly_3:temp_zirkulation] > 40)(set Shelly_3 off) DOELSE
FUUID 61781906-f33f-000f-9638-5e53b545e4a6639f
MODEL FHEM
NAME di_Zirkulation
NOTIFYDEV Shelly_3,Bewohner,global
NR 277
NTFY_ORDER 50-di_Zirkulation
STATE cmd_2
TYPE DOIF
VERSION 24905 2021-09-01 18:35:54
Helper:
DBLOG:
state:
DBLogging:
TIME 1635337060.52675
VALUE cmd_3
READINGS:
2021-10-27 14:20:54 Device Shelly_3
2021-10-27 14:20:44 cmd 2
2021-10-27 14:20:44 cmd_event Shelly_3
2021-10-27 14:20:44 cmd_nr 2
2021-10-27 14:20:40 e_Bewohner_STATE zuhause
2021-10-27 14:20:54 e_Shelly_3_temp_zirkulation 40.2
2021-10-27 13:48:27 mode enabled
2021-10-27 14:20:44 state cmd_2
2021-10-27 13:48:27 timer_01_c01 28.10.2021 06:15:00|8
2021-10-27 13:48:27 timer_02_c01 27.10.2021 22:00:00|8
2021-10-27 13:48:27 timer_03_c01 28.10.2021 07:00:00|7
2021-10-27 13:48:27 timer_04_c01 27.10.2021 22:30:00|7
Regex:
accu:
collect:
cond:
Bewohner:
0:
&STATE ^Bewohner$
1:
Shelly_3:
0:
temp_zirkulation ^Shelly_3$:^temp_zirkulation:
1:
temp_zirkulation ^Shelly_3$:^temp_zirkulation:
attr:
cmdState:
wait:
waitdel:
condition:
0 (::DOIF_time($hash,0,1,$wday,$hms,"8") or ::DOIF_time($hash,2,3,$wday,$hms,"7")) and ::InternalDoIf($hash,'Bewohner','STATE') eq "zuhause" and ::ReadingValDoIf($hash,'Shelly_3','temp_zirkulation') < 29
1 ::ReadingValDoIf($hash,'Shelly_3','temp_zirkulation') > 40
days:
0 8
1 8
2 7
3 7
do:
0:
0 set Shelly_3 on
1:
0 set Shelly_3 off
2:
0
helper:
DEVFILTER ^global$|^Bewohner$|^Shelly_3$
NOTIFYDEV global|Bewohner|Shelly_3
event temp_zirkulation: 40.2
globalinit 1
last_timer 4
sleeptimer -1
timerdev Shelly_3
timerevent temp_zirkulation: 40.2
triggerDev Shelly_3
timerevents:
temp_zirkulation: 40.2
timereventsState:
temp_zirkulation: 40.2
triggerEvents:
temp_zirkulation: 40.2
triggerEventsState:
temp_zirkulation: 40.2
internals:
all Bewohner:STATE
interval:
0 -1
1 0
2 -1
3 2
intervalfunc:
localtime:
0 1635394500
1 1635364800
2 1635397200
3 1635366600
readings:
all Shelly_3:temp_zirkulation
realtime:
0 06:15:00
1 22:00:00
2 07:00:00
3 22:30:00
time:
0 06:15:00
1 22:00:00
2 07:00:00
3 22:30:00
timeCond:
0 0
1 0
2 0
3 0
timer:
0 0
1 0
2 0
3 0
timers:
0 0 1 2 3
trigger:
triggertime:
1635364800:
localtime 1635364800
hash:
1635366600:
localtime 1635366600
hash:
1635394500:
localtime 1635394500
hash:
1635397200:
localtime 1635397200
hash:
uiState:
uiTable:
Attributes:
DbLogExclude .*
alias di_Zirkulation
room DOIFtools,Keller
Der zu schaltende Shelly sieht so aus:
Internals:
FUUID 617847e9-f33f-000f-7afe-22f7a54e03719132
IODev Mosquitto
NAME Shelly_3
NR 279
STATE off
TYPE MQTT_DEVICE
Helper:
DBLOG:
state:
DBLogging:
TIME 1635337058.85042
VALUE on
temp_zirkulation:
DBLogging:
TIME 1635337414.16753
VALUE 39.5
READINGS:
2021-10-27 13:22:32 IODev Mosquitto
2021-10-27 14:23:39 state off
2021-10-27 14:23:39 temp_kaltwasser 16.8
2021-10-27 14:23:39 temp_warmwasser 47.1
2021-10-27 14:23:39 temp_zirkulation 39.5
2021-10-27 14:23:39 transmission-state incoming publish received
message_ids:
publishSets:
:
topic shellies/shelly1-E8DB84AB955C/relay/0/command
values:
on
off
sets:
off
on
subscribe:
shellies/shelly1-E8DB84AB955C/relay/0
shellies/shelly1-E8DB84AB955C/ext_temperature/2
shellies/shelly1-E8DB84AB955C/ext_temperature/1
shellies/shelly1-E8DB84AB955C/ext_temperature/0
subscribeExpr:
^shellies\/shelly1-E8DB84AB955C\/relay\/0$
^shellies\/shelly1-E8DB84AB955C\/ext_temperature\/2$
^shellies\/shelly1-E8DB84AB955C\/ext_temperature\/1$
^shellies\/shelly1-E8DB84AB955C\/ext_temperature\/0$
subscribeQos:
shellies/shelly1-E8DB84AB955C/ext_temperature/0 0
shellies/shelly1-E8DB84AB955C/ext_temperature/1 0
shellies/shelly1-E8DB84AB955C/ext_temperature/2 0
shellies/shelly1-E8DB84AB955C/relay/0 0
subscribeReadings:
shellies/shelly1-E8DB84AB955C/ext_temperature/0:
cmd
name temp_zirkulation
shellies/shelly1-E8DB84AB955C/ext_temperature/1:
cmd
name temp_warmwasser
shellies/shelly1-E8DB84AB955C/ext_temperature/2:
cmd
name temp_kaltwasser
shellies/shelly1-E8DB84AB955C/relay/0:
cmd
name state
Attributes:
IODev Mosquitto
alias Zirkulationspumpe
devStateIcon on:sani_earth_source_heat_pump@green off:sani_earth_source_heat_pump
event-on-change-reading .*
genericDeviceType switch
group Shelly
icon sani_boiler_temp
publishSet on off shellies/shelly1-E8DB84AB955C/relay/0/command
room Homekit,Keller,MQTT-Devices
siriName Zirkulationspumpe
subscribeReading_state shellies/shelly1-E8DB84AB955C/relay/0
subscribeReading_temp_kaltwasser shellies/shelly1-E8DB84AB955C/ext_temperature/2
subscribeReading_temp_warmwasser shellies/shelly1-E8DB84AB955C/ext_temperature/1
subscribeReading_temp_zirkulation shellies/shelly1-E8DB84AB955C/ext_temperature/0
useSetExtensions 1
Wenn ich den Shelly manuell schalte, wird ein Eintrag im DbLog erzeugt, so wie es sein soll.
Wenn das DOIF den Shelly schaltet, egal ob on oder off wird nichts im Log abgelegt.
Kann mir das jemand erklären?
DOIF benutzt die gleichen Mechanismen, die auch für die Kommandozeile gelten, daher sollte es keine Unterschiede geben.
Du kannst mal im DOIF per set cmd_1 die Ausführung von "set Shelly_3 on" provozieren und gleichzeitig im Eventmonitor schauen, ob du das dazugehörige Event siehst.
Das hab ich bereits getan, das Event wird sauber erzeugt und findet sich auch im Log wieder.
Löst das DOIF den Befehl aus, passiert nichts im Log.
Hab auch schonmal alles neu angelegt und neu gestartet, keine Änderung.
Helfe mir momentan mit nem Dummy, aber es muss ja auch direkt gehen.
Zitat von: Feinfinger am 27 Oktober 2021, 21:45:24
Das hab ich bereits getan, das Event wird sauber erzeugt und findet sich auch im Log wieder.
Löst das DOIF den Befehl aus, passiert nichts im Log.
Hab auch schonmal alles neu angelegt und neu gestartet, keine Änderung.
Helfe mir momentan mit nem Dummy, aber es muss ja auch direkt gehen.
ja, aber ich wollte wissen, ob über DOIF ein entsprechendes Event (nicht Log) generiert wird - das hast du hier nicht geschrieben