Moin Moin,
ich hab ein tagesaktuelles FHEM und folgendes Problem: ändere ich ein DOIF mit DOIFReadings und drücke danach checkall, schmiert FHEM komplett ab.
Die einzige Fehlermeldung im Logfile ist:
Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/98_DOIF.pm line 2218.
Das fragliche DOIF ist dieses:
Internals:
DEF (([$SELF:MyWindowsStatus] eq "open") and [$SELF:MyDewStatus] >= 110)
## Fenster offen, Innenfeuchte groesser als Aussenfeuchte, STATUS = Gruen, offen
()
DOELSEIF (([$SELF:MyWindowsStatus] eq "open") and [$SELF:MyDewStatus] < 95)
## Fenster offen, Innenfeuchte kleiner als Aussenfeuchte, STATUS = Rot, offen
()
DOELSEIF (([$SELF:MyWindowsStatus] eq "closed") and [$SELF:MyDewStatus] >= 110)
## Fenster zu, Innenfeuchte groesser als Aussenfeuchte, STATUS = Rot, zu
()
DOELSEIF (([$SELF:MyWindowsStatus] eq "closed") and [$SELF:MyDewStatus] < 95)
## Fenster zu, Innenfeuchte groesser als Aussenfeuchte, STATUS = Gruen, zu
()
DOELSEIF (([$SELF:MyWindowsStatus] eq "closed") and [$SELF:MyDewStatus] >= 95 and [$SELF:MyDewStatus] < 110)
()
DOELSEIF (([$SELF:MyWindowsStatus] eq "open") and [$SELF:MyDewStatus] >= 95 and [$SELF:MyDewStatus] < 110)
()
FUUID 5d7610e2-f33f-4ba1-8ae5-f51b537a02fe7685
FVERSION 98_DOIF.pm:0.201630/2019-09-15
MODEL FHEM
NAME DI_FensterAdviceGrossesBad
NOTIFYDEV global,DI_FensterAdviceGrossesBad,HM_OG.BADEZM_FensterLinks,HM_OG.BADEZM_FensterRechts,HM_OG.BADEZMR_Wandthermostat_Weather,HM_AUSSEN.Scheune_Weather,HM_OG.BADEZMR_Wandthermostat_Climate
NR 472
NTFY_ORDER 50-DI_FensterAdviceGrossesBad
STATE cmd_5
TYPE DOIF
VERSION 20163 2019-09-15 16:48:42
DOIF_Readings:
MyDewFallout ((::ReadingValDoIf($hash,'HM_OG.BADEZMR_Wandthermostat_Weather','dewpoint')+2 <= ::ReadingValDoIf($hash,'HM_OG.BADEZMR_Wandthermostat_Climate','measured-temp')) ? "ok" : "alarm")
MyDewStatus (int((::ReadingValDoIf($hash,'HM_OG.BADEZMR_Wandthermostat_Weather','absHumidity')/::ReadingValDoIf($hash,'HM_AUSSEN.Scheune_Weather','absHumidity'))*100))
MyWindowsStatus ((::InternalDoIf($hash,'HM_OG.BADEZM_FensterLinks','STATE') eq "open" or ::InternalDoIf($hash,'HM_OG.BADEZM_FensterRechts','STATE') eq "open") ? "open" : "closed")
Helper:
DBLOG:
state:
DBLOG:
TIME 1568992179.3601
VALUE cmd_5
READINGS:
2019-09-20 15:46:24 MyDewFallout ok
2019-09-20 17:09:39 MyDewStatus 107
2019-09-20 15:02:46 MyWindowsStatus closed
2019-09-20 17:09:39 cmd 5
2019-09-20 17:09:39 cmd_event DI_FensterAdviceGrossesBad
2019-09-20 17:09:39 cmd_nr 5
2019-09-20 17:09:39 e_DI_FensterAdviceGrossesBad_MyDewStatus 107
2019-09-20 17:04:33 mode enabled
2019-09-20 17:09:39 state cmd_5
Regex:
DOIF_Readings:
DI_FensterAdviceGrossesBad:
HM_AUSSEN.Scheune_Weather:
MyDewStatus:
absHumidity ^HM_AUSSEN.Scheune_Weather$:^absHumidity:
HM_OG.BADEZMR_Wandthermostat_Climate:
MyDewFallout:
measured-temp ^HM_OG.BADEZMR_Wandthermostat_Climate$:^measured-temp:
HM_OG.BADEZMR_Wandthermostat_Weather:
MyDewFallout:
dewpoint ^HM_OG.BADEZMR_Wandthermostat_Weather$:^dewpoint:
MyDewStatus:
absHumidity ^HM_OG.BADEZMR_Wandthermostat_Weather$:^absHumidity:
HM_OG.BADEZM_FensterLinks:
MyWindowsStatus:
&STATE ^HM_OG.BADEZM_FensterLinks$
HM_OG.BADEZM_FensterRechts:
MyWindowsStatus:
&STATE ^HM_OG.BADEZM_FensterRechts$
accu:
cond:
DI_FensterAdviceGrossesBad:
0:
MyDewStatus ^DI_FensterAdviceGrossesBad$:^MyDewStatus:
MyWindowsStatus ^DI_FensterAdviceGrossesBad$:^MyWindowsStatus:
1:
MyDewStatus ^DI_FensterAdviceGrossesBad$:^MyDewStatus:
MyWindowsStatus ^DI_FensterAdviceGrossesBad$:^MyWindowsStatus:
2:
MyDewStatus ^DI_FensterAdviceGrossesBad$:^MyDewStatus:
MyWindowsStatus ^DI_FensterAdviceGrossesBad$:^MyWindowsStatus:
3:
MyDewStatus ^DI_FensterAdviceGrossesBad$:^MyDewStatus:
MyWindowsStatus ^DI_FensterAdviceGrossesBad$:^MyWindowsStatus:
4:
MyDewStatus ^DI_FensterAdviceGrossesBad$:^MyDewStatus:
MyWindowsStatus ^DI_FensterAdviceGrossesBad$:^MyWindowsStatus:
5:
MyDewStatus ^DI_FensterAdviceGrossesBad$:^MyDewStatus:
MyWindowsStatus ^DI_FensterAdviceGrossesBad$:^MyWindowsStatus:
attr:
cmdState:
wait:
waitdel:
condition:
0 (::ReadingValDoIf($hash,'DI_FensterAdviceGrossesBad','MyWindowsStatus') eq "open") and ::ReadingValDoIf($hash,'DI_FensterAdviceGrossesBad','MyDewStatus') >= 110
1 (::ReadingValDoIf($hash,'DI_FensterAdviceGrossesBad','MyWindowsStatus') eq "open") and ::ReadingValDoIf($hash,'DI_FensterAdviceGrossesBad','MyDewStatus') < 95
2 (::ReadingValDoIf($hash,'DI_FensterAdviceGrossesBad','MyWindowsStatus') eq "closed") and ::ReadingValDoIf($hash,'DI_FensterAdviceGrossesBad','MyDewStatus') >= 110
3 (::ReadingValDoIf($hash,'DI_FensterAdviceGrossesBad','MyWindowsStatus') eq "closed") and ::ReadingValDoIf($hash,'DI_FensterAdviceGrossesBad','MyDewStatus') < 95
4 (::ReadingValDoIf($hash,'DI_FensterAdviceGrossesBad','MyWindowsStatus') eq "closed") and ::ReadingValDoIf($hash,'DI_FensterAdviceGrossesBad','MyDewStatus') >= 95 and ::ReadingValDoIf($hash,'DI_FensterAdviceGrossesBad','MyDewStatus') < 110
5 (::ReadingValDoIf($hash,'DI_FensterAdviceGrossesBad','MyWindowsStatus') eq "open") and ::ReadingValDoIf($hash,'DI_FensterAdviceGrossesBad','MyDewStatus') >= 95 and ::ReadingValDoIf($hash,'DI_FensterAdviceGrossesBad','MyDewStatus') < 110
do:
0:
0
1:
0
2:
0
3:
0
4:
0
5:
0
6:
helper:
DOIF_Readings_events
event MyDewStatus: 107
globalinit 1
last_timer 0
sleeptimer -1
timerdev DI_FensterAdviceGrossesBad
timerevent MyDewStatus: 107
triggerDev DI_FensterAdviceGrossesBad
DOIF_eventas:
cmd_nr: 5
cmd: 5
cmd_event: DI_FensterAdviceGrossesBad
state: cmd_5
timerevents:
MyDewStatus: 107
e_DI_FensterAdviceGrossesBad_MyDewStatus: 107
timereventsState:
MyDewStatus: 107
triggerEvents:
MyDewStatus: 107
e_DI_FensterAdviceGrossesBad_MyDewStatus: 107
triggerEventsState:
MyDewStatus: 107
internals:
perlblock:
readings:
all DI_FensterAdviceGrossesBad:MyWindowsStatus DI_FensterAdviceGrossesBad:MyDewStatus
trigger:
uiState:
uiTable:
Attributes:
DOIF_Readings MyWindowsStatus:(([HM_OG.BADEZM_FensterLinks] eq "open" or [HM_OG.BADEZM_FensterRechts] eq "open") ? "open" : "closed"),
MyDewStatus:(int(([HM_OG.BADEZMR_Wandthermostat_Weather:absHumidity]/[HM_AUSSEN.Scheune_Weather:absHumidity])*100)),
MyDewFallout:(([HM_OG.BADEZMR_Wandthermostat_Weather:dewpoint]+2 <= [HM_OG.BADEZMR_Wandthermostat_Climate:measured-temp]) ? "ok" : "alarm")
devStateIcon cmd_1:fts_window_roof_open_2@green cmd_2:fts_window_roof_open_2@red cmd_3:fts_window_roof@red cmd_4:fts_window_roof@green cmd_5:fts_window_root_open_2 cmd_6:fts_window_roof
room R_GrossesBad,SYS_Events
Danke, -MN
98_DOIF.pm:0.201630/2019-09-15 ist nicht aktuell, wie versprochen.
Das Problem ist mit der aktuellen Version behoben.
Erledigt, habe die vorherige Version in einem Backup gefunden.
Hallo, ich bin Anfänger und habe seit einem fhem-Update erhebliche Probleme mit set doif_XXX checkall. Ich verwende den Befehl bei einigen Modulen. Seit dem Update stürzt fhem komplett ab. Im Log habe ich folgenden Eintrag gefunden:
Can't use an undefined value as an ARRAY reference at ./FHEM/98_DOIF.pm line 2221.
Ich habe alle Geräte gelöscht, sie checkall verwenden. Eines hatte folgenden Inhalt:
defmod at_GWH_Schaltverzoergerung at +*00:15:00 set doif_GWH_FensterOben enable;;set doif_GWH_FensterOben checkall;;set doif_GWH_FensterUnten enable;;set doif_GWH_FensterUnten checkall;;define at1 at +00:03:00 set doif_GWH_FensterOben disable;;define at3 at +00:03:10 set doif_GWH_FensterUnten disable
attr at_GWH_Schaltverzoergerung DbLogExclude .*
attr at_GWH_Schaltverzoergerung comment DOIF Module zu Fenstersteuerung ueber disable deaktivieren und checkall aktivieren um Schaltzyklen hintereinander zu reduzieren.
attr at_GWH_Schaltverzoergerung event-on-change-reading .*
attr at_GWH_Schaltverzoergerung room GWH,Logik
Verwendet wird: 98_DOIF.pm 20202 2019-09-19 21:12:51Z Damian
Könnte mir bitte jemand mittteilen, wo ich die vorherige Version von 98_DOIF.pm herbekommen kann.
Danke....
Das ist aber leider keine dauerhafte Lösung.
Teste bitte die angehängte Version.
Edit: neue Version wurde eingecheckt
Danke,
Ich bin mir sicher, heute ein Update gemacht zu haben. Nun noch eines.
Danke, -MN
Ich hänge mich hier mal dran. Seit dem letzten und vorletzten update habe ich auch Probleme mit einigen DOIF's. Ich habe 3FHEM Installationen. 2 davon auf raspis und eine auf nem debian / esxi. An den Raspis sind nur Aktoren und Sensoren angeschlossen. Informationen werden via fhem2fhem mit dem (MAIN) debian fhem ausgetauscht. Auf diesem befinden sich auch alle Regeln.
Eine Regel, die nicht funktioniert ist z.B. das einschalten des Lichtes in der Garage sobald das Tor hoch fährt:
defmod Licht_Garage DOIF ([TasterLichtGarage] eq "Longpress: on") (IF ([rpi2rel4:state] eq "on") (set rpi2rel4 off) ELSE (set rpi2rel4 on))
attr Licht_Garage do always
attr Licht_Garage room Rules
Folgendes Ereignis kommt im Event Monitor des debian an:
2019-09-20 22:58:06 RPI_GPIO GaragentorState Longpress: on
Es sieht so aus als bekommt das DOIF das Event nicht mit.
Im log kommt es zu keinen Fehlern.
Der Aktor ( rpi2rel4) lässt sich vom debian schalten.
Doif VERSION
20202 2019-09-19 21:12:51
Ich befürchte, meine Testabteilung ist zu klein für das umfangreiche Update auf NOTIFYDEV-Filter. >:(
Ich habe noch einige intensive Tests vorgenommen (Selbsttrigger, DOIF_Readings, event_Readings, disable-Attribute), die weitere Korrekturen erforderten - eine neue Version wurde eben eingecheckt.
Alle, die seit dem 13.09.2019 Update gemacht haben, sollten morgen ein neues Update machen.
Zitat von: Damian am 20 September 2019, 19:26:08
Teste bitte die angehängte Version.
Die von Dir zurückgezogene V 0.3 hat bei mit 12 Stunden ohne Probleme die Nacht überstanden. Ich teste jetzt weiter mit der heute im Repository abzurufenden Version eingescheckten 20210.
Christian
Zitat von: hackepeter am 20 September 2019, 23:15:47
Ich hänge mich hier mal dran. Seit dem letzten und vorletzten update habe ich auch Probleme mit einigen DOIF's. Ich habe 3FHEM Installationen. 2 davon auf raspis und eine auf nem debian / esxi. An den Raspis sind nur Aktoren und Sensoren angeschlossen. Informationen werden via fhem2fhem mit dem (MAIN) debian fhem ausgetauscht. Auf diesem befinden sich auch alle Regeln.
Eine Regel, die nicht funktioniert ist z.B. das einschalten des Lichtes in der Garage sobald das Tor hoch fährt:
defmod Licht_Garage DOIF ([TasterLichtGarage] eq "Longpress: on") (IF ([rpi2rel4:state] eq "on") (set rpi2rel4 off) ELSE (set rpi2rel4 on))
attr Licht_Garage do always
attr Licht_Garage room Rules
Folgendes Ereignis kommt im Event Monitor des debian an:
2019-09-20 22:58:06 RPI_GPIO GaragentorState Longpress: on
Es sieht so aus als bekommt das DOIF das Event nicht mit.
Im log kommt es zu keinen Fehlern.
Der Aktor ( rpi2rel4) lässt sich vom debian schalten.
Doif VERSION
20202 2019-09-19 21:12:51
Ich kann bei mir kein Problem erkennen
DEF ([TasterLichtGarage] eq "Longpress: on") (set bla on)
MODEL FHEM
NAME Licht_Garage
NOTIFYDEV global,TasterLichtGarage
NR 732
NTFY_ORDER 50-Licht_Garage
STATE cmd_1
TYPE DOIF
READINGS:
2019-09-21 10:41:14 Device TasterLichtGarage
2019-09-21 10:41:14 cmd 1
2019-09-21 10:41:14 cmd_event TasterLichtGarage
2019-09-21 10:41:14 cmd_nr 1
2019-09-21 10:41:14 e_TasterLichtGarage_STATE Longpress: on
2019-09-21 10:38:25 mode enabled
2019-09-21 10:41:14 state cmd_1
...
mit
Internals:
CFGFN
NAME TasterLichtGarage
NR 729
STATE Longpress: on
TYPE dummy
READINGS:
2019-09-21 10:41:14 state Longpress: on
getestet mit der heutigen Version.
Ich hoffe, dass dir bewusst ist, dass du einen Status abfragst und kein Event.
Vielen Dank für die Arbeit.
Ich habe es jetzt noch einmal geprüft. Das doif hing auf Initialize. Ich habe es einmal auf enabled gesetzt - dann lief es. Ich habe aber noch ein anderes doif gefunden, welches nach dem update nicht mehr funktioniert aber davor über 2 Jahre funktioniert hat:
Internals:
DEF ([GaragentorState] eq "Longpress: on") (set rpi2rel3 Offen) (set rpi2rel2 on) (set rpi2rel4 on) (set rpi2rel2 off, set rpi2rel4 off) DOELSE (set rpi2rel3 Zu) (set rpi2rel4 off) (set rpi2rel2 off)
FUUID 5c4a019d-f33f-cd6f-c6a0-bc015d493e15f5c2
MODEL FHEM
NAME Garagentor_State
NOTIFYDEV global,GaragentorState
NR 158
NTFY_ORDER 50-Garagentor_State
STATE cmd_2
TYPE DOIF
VERSION 20210 2019-09-20 21:37:33
READINGS:
2019-09-21 19:50:56 Device GaragentorState
2019-09-21 19:51:01 cmd 2.3
2019-09-21 19:51:01 cmd_event GaragentorState
2019-09-21 19:51:01 cmd_nr 2
2019-09-21 19:51:01 cmd_seqnr 3
2019-09-21 19:50:56 e_GaragentorState_STATE Longpress: off
2019-09-21 19:50:28 mode enabled
2019-09-21 19:51:01 state cmd_2
2019-09-21 19:51:01 wait_timer no timer
Regex:
accu:
cond:
GaragentorState:
0:
&STATE ^GaragentorState$
attr:
cmdState:
wait:
0:
0
0
0
200
200
1:
0
0
5
200
waitdel:
condition:
0 ::InternalDoIf($hash,'GaragentorState','STATE') eq "Longpress: on"
do:
0:
0 set rpi2rel3 Offen
1 set rpi2rel2 on
2 set rpi2rel4 on
3 set rpi2rel2 off, set rpi2rel4 off
1:
0 set rpi2rel3 Zu
1 set rpi2rel4 off
2 set rpi2rel2 off
helper:
event Longpress: off
globalinit 1
last_timer 0
sleepdevice GaragentorState
sleepsubtimer -1
sleeptimer -1
timerdev GaragentorState
timerevent Longpress: off
triggerDev GaragentorState
DOIF_eventa:
cmd_nr: 2
cmd_seqnr: 3
cmd_event: GaragentorState
cmd_2
DOIF_eventas:
cmd_nr: 2
cmd_seqnr: 3
cmd_event: GaragentorState
state: cmd_2
timerevents:
Longpress: off
timereventsState:
Longpress: off
triggerEvents:
Longpress: off
triggerEventsState:
Longpress: off
internals:
all GaragentorState:STATE
perlblock:
readings:
trigger:
uiState:
uiTable:
Attributes:
do always
room Rules
wait 0,0,0,200,200:0,0,5,200
Damit ich nicht nochmal so blöd dastehe, hab ich das Verhalten mal als Video festgehalten:
https://youtu.be/EfgveSk8ZTI
Zitat von: hackepeter am 21 September 2019, 20:29:29
Vielen Dank für die Arbeit.
Ich habe es jetzt noch einmal geprüft. Das doif hing auf Initialize. Ich habe es einmal auf enabled gesetzt - dann lief es. Ich habe aber noch ein anderes doif gefunden, welches nach dem update nicht mehr funktioniert aber davor über 2 Jahre funktioniert hat:
Internals:
DEF ([GaragentorState] eq "Longpress: on") (set rpi2rel3 Offen) (set rpi2rel2 on) (set rpi2rel4 on) (set rpi2rel2 off, set rpi2rel4 off) DOELSE (set rpi2rel3 Zu) (set rpi2rel4 off) (set rpi2rel2 off)
FUUID 5c4a019d-f33f-cd6f-c6a0-bc015d493e15f5c2
MODEL FHEM
NAME Garagentor_State
NOTIFYDEV global,GaragentorState
NR 158
NTFY_ORDER 50-Garagentor_State
STATE cmd_2
TYPE DOIF
VERSION 20210 2019-09-20 21:37:33
READINGS:
2019-09-21 19:50:56 Device GaragentorState
2019-09-21 19:51:01 cmd 2.3
2019-09-21 19:51:01 cmd_event GaragentorState
2019-09-21 19:51:01 cmd_nr 2
2019-09-21 19:51:01 cmd_seqnr 3
2019-09-21 19:50:56 e_GaragentorState_STATE Longpress: off
2019-09-21 19:50:28 mode enabled
2019-09-21 19:51:01 state cmd_2
2019-09-21 19:51:01 wait_timer no timer
Regex:
accu:
cond:
GaragentorState:
0:
&STATE ^GaragentorState$
attr:
cmdState:
wait:
0:
0
0
0
200
200
1:
0
0
5
200
waitdel:
condition:
0 ::InternalDoIf($hash,'GaragentorState','STATE') eq "Longpress: on"
do:
0:
0 set rpi2rel3 Offen
1 set rpi2rel2 on
2 set rpi2rel4 on
3 set rpi2rel2 off, set rpi2rel4 off
1:
0 set rpi2rel3 Zu
1 set rpi2rel4 off
2 set rpi2rel2 off
helper:
event Longpress: off
globalinit 1
last_timer 0
sleepdevice GaragentorState
sleepsubtimer -1
sleeptimer -1
timerdev GaragentorState
timerevent Longpress: off
triggerDev GaragentorState
DOIF_eventa:
cmd_nr: 2
cmd_seqnr: 3
cmd_event: GaragentorState
cmd_2
DOIF_eventas:
cmd_nr: 2
cmd_seqnr: 3
cmd_event: GaragentorState
state: cmd_2
timerevents:
Longpress: off
timereventsState:
Longpress: off
triggerEvents:
Longpress: off
triggerEventsState:
Longpress: off
internals:
all GaragentorState:STATE
perlblock:
readings:
trigger:
uiState:
uiTable:
Attributes:
do always
room Rules
wait 0,0,0,200,200:0,0,5,200
Damit ich nicht nochmal so blöd dastehe, hab ich das Verhalten mal als Video festgehalten:
https://youtu.be/EfgveSk8ZTI
Dann filme mal das GaragentorState-Device während Longpress: on kommt.
ZitatDann filme mal das GaragentorState-Device während Longpress: on kommt.
Das ist kein device. Es kommt von dem Modul fhem2fhem
https://ibb.co/RvMhskX (https://ibb.co/RvMhskX)
Zitat von: hackepeter am 21 September 2019, 21:16:38
Das ist kein device. Es kommt von dem Modul fhem2fhem
https://ibb.co/RvMhskX (https://ibb.co/RvMhskX)
Du fragst den Status des Devices GaragentorState nach "Longpress: on" ab, wenn das Devices keinen richtigen Status hat (hier: connected), dann kannst du den auch nicht abfragen, sondern lediglich die produzierten Events. z. B.
[GaragentorState:"Longpress: on"]
Mit der Änderung tut das doif auch nicht:
Internals:
DEF ([GaragentorState:"Longpress: on"]) (set rpi2rel3 Offen) (set rpi2rel2 on) (set rpi2rel4 on) (set rpi2rel2 off, set rpi2rel4 off) DOELSE (set rpi2rel3 Zu) (set rpi2rel4 off) (set rpi2rel2 off)
FUUID 5c4a019d-f33f-cd6f-c6a0-bc015d493e15f5c2
MODEL FHEM
NAME Garagentor_State
NOTIFYDEV global,GaragentorState
NR 158
NTFY_ORDER 50-Garagentor_State
STATE cmd_2
TYPE DOIF
VERSION 20210 2019-09-20 21:37:33
READINGS:
2019-09-21 21:33:47 cmd 2.3
2019-09-21 21:33:47 cmd_event Garagentor_State
2019-09-21 21:33:47 cmd_nr 2
2019-09-21 21:33:47 cmd_seqnr 3
2019-09-21 21:33:45 mode enabled
2019-09-21 21:33:47 state cmd_2
2019-09-21 21:33:47 wait_timer no timer
Regex:
accu:
cond:
GaragentorState:
0:
&STATE ^GaragentorState$
attr:
cmdState:
wait:
0:
0
0
0
200
200
1:
0
0
5
200
waitdel:
condition:
0 ::EventDoIf('GaragentorState',$hash,'Longpress: on',1)
do:
0:
0 set rpi2rel3 Offen
1 set rpi2rel2 on
2 set rpi2rel4 on
3 set rpi2rel2 off, set rpi2rel4 off
1:
0 set rpi2rel3 Zu
1 set rpi2rel4 off
2 set rpi2rel2 off
helper:
event
globalinit 1
last_timer 0
sleepdevice Garagentor_State
sleepsubtimer -1
sleeptimer -1
timerdev
timerevent
timerevents
timereventsState
triggerDev
triggerEvents
triggerEventsState
DOIF_eventa:
cmd_nr: 2
cmd_seqnr: 3
cmd_event: Garagentor_State
cmd_2
trigger:
all GaragentorState
uiState:
uiTable:
Attributes:
do always
room Rules
wait 0,0,0,200,200:0,0,5,200
Dann teste mal mit: trigger TasterLichtGarage Longpress: on
Bei mir kommt dann:
Internals:
CFGFN
DEF ([TasterLichtGarage:"Longpress:.on"]) (set bla on)DOELSE
MODEL FHEM
NAME Licht_Garage
NOTIFYDEV global,TasterLichtGarage
NR 732
NTFY_ORDER 50-Licht_Garage
STATE cmd_1
TYPE DOIF
READINGS:
2019-09-21 22:33:02 Device TasterLichtGarage
2019-09-21 22:33:02 cmd 1
2019-09-21 22:33:02 cmd_event TasterLichtGarage
2019-09-21 22:33:02 cmd_nr 1
2019-09-21 22:33:02 e_TasterLichtGarage_events Longpress: on
2019-09-21 22:31:33 mode enabled
2019-09-21 22:33:02 state cmd_1
...
Zitat von: Damian am 21 September 2019, 22:35:08
Dann teste mal mit: trigger TasterLichtGarage Longpress: on
Bei mir kommt dann:
Internals:
CFGFN
DEF ([TasterLichtGarage:"Longpress:.on"]) (set bla on)DOELSE
MODEL FHEM
NAME Licht_Garage
NOTIFYDEV global,TasterLichtGarage
NR 732
NTFY_ORDER 50-Licht_Garage
STATE cmd_1
TYPE DOIF
READINGS:
2019-09-21 22:33:02 Device TasterLichtGarage
2019-09-21 22:33:02 cmd 1
2019-09-21 22:33:02 cmd_event TasterLichtGarage
2019-09-21 22:33:02 cmd_nr 1
2019-09-21 22:33:02 e_TasterLichtGarage_events Longpress: on
2019-09-21 22:31:33 mode enabled
2019-09-21 22:33:02 state cmd_1
...
Das geht leider nicht, da es dieses device nicht gibt:
Please define TasterLichtGarage first
Wie gesagt, ich nutze Fhem2Fhem.
Fhem2Fhem greift nur die Events von den entfernten hosts ab und reicht diese dann an die lokale FHEM Instanz zur Weiterverarbeitung weiter.
Vor ein paar Jahren, als es doif noch nicht gab, hatte ich diese Regeln mit notify gelöst. Später hab ich fast alle notify's durch doif's ersetzt.
Zitat von: hackepeter am 21 September 2019, 22:51:24
Das geht leider nicht, da es dieses device nicht gibt:
Please define TasterLichtGarage first
Wie gesagt, ich nutze Fhem2Fhem.
Fhem2Fhem greift nur die Events von den entfernten hosts ab und reicht diese dann an die lokale FHEM Instanz zur Weiterverarbeitung weiter.
Vor ein paar Jahren, als es doif noch nicht gab, hatte ich diese Regeln mit notify gelöst. Später hab ich fast alle notify's durch doif's ersetzt.
Was vorher ging, muss auch jetzt gehen. DOIF kennt nur Events, Readings und Status des eigenen Systems. Dein angegebenes Device heißt doch GaragentorState, dann musst du natürlich mit deinem testen, also
trigger GaragentorState Longpress: on
Guten Abend,
ich habe leider auch ein ähnliches Problem: https://forum.fhem.de/index.php/topic,103904.0.html
Allerdings mit "echten" Devices ohne FHEM2FHEM etc.
Patrick
Zitat von: Damian am 20 September 2019, 19:26:08
Das ist aber leider keine dauerhafte Lösung.
Teste bitte die angehängte Version.
Edit: neue Version wurde eingecheckt
[/quote
Ich habe gestern das aktuelle Update mit "doif" übernommen und ausprobiert. Bei mir funktioniert es.
Von mir aktuell verwendetes Modul: 98_DOIF.pm 20210 2019-09-20 21:37:33Z Damian
Vielen Dank für die Mühen.
Zitat von: PatrickR am 22 September 2019, 03:18:37
Guten Abend,
ich habe leider auch ein ähnliches Problem: https://forum.fhem.de/index.php/topic,103904.0.html
Allerdings mit "echten" Devices ohne FHEM2FHEM etc.
Patrick
Wenn es manchmal geht und manchmal nicht, dann wird ggf. intern etwas nicht zurückgesetzt.
Wichtig für mich ist eine Konfiguration zum Nachstellen, die reproduzierbar ist.
Golgendes konnte ich heute Morgen bei meinem Garagentor-Taster auch reproduzieren, mit dem Unterschied dass ein checkall nicht geholfen hat - aber ein initialize schon.
Aus dem Thread https://forum.fhem.de/index.php/topic,103904.0.html
Zitat
- Ein neu definiertes DOIF funktioniert nicht.
- Nach dem senden von checkall funktioniert das DOIF dauerhaft.
- Ändert man die Definition des DOIF funktioniert es wieder nicht mehr.
Ich konnte das Problem nachstellen.
Wenn nach der Definition sofort ein Event erzeugt wird, dann kommt nur das modify-Event von global beim DOIF an aber nicht das eigentliche. Erst wenn andere Events dazwischen kommen, kommen auch die eigentlichen Events an.
Ich befürchte, da muss ich in der Entwicklungsabteilung nachfragen, denn z. Zt. kann ich keine Lösung präsentieren.
Zitat von: Damian am 22 September 2019, 09:56:16
Wichtig! für mich ist eine Konfiguration zum Nachstellen, die reproduzierbar ist.
Die Raw definition aus meinem Thread sollte Dir helfen. Direkt nach der Definition ist es bei mir immer kaputt.
Von unterwegs gesendet.
Zitat von: Damian am 22 September 2019, 11:16:45
Ich konnte das Problem nachstellen.
Wenn nach der Definition sofort ein Event erzeugt wird, dann kommt nur das modify-Event von global beim DOIF an aber nicht das eigentliche. Erst wenn andere Events dazwischen kommen, kommen auch die eigentlichen Events an.
Ich befürchte, da muss ich in der Entwicklungsabteilung nachfragen, denn z. Zt. kann ich keine Lösung präsentieren.
Sehr gut! Ich werde vorerst entweder auf notify ausweichen oder zur alten doif Version zurück wechseln.
Ich habe das Problem im Development-Board geschildert: https://forum.fhem.de/index.php/topic,103917.0.htm
Danke schonmal!
Von unterwegs gesendet.
Neue Version im Anhang. Bitte testen.
Nach erfolgreichen Tests habe ich die neue Version bereits eingecheckt. Ich hoffe, dass der Update-Spuk langsam ein Ende nimmt. >:(
Leider musste ich etwas an fhem.pl vorbei arbeiten, dafür werden im DOIF auch NOTIFDEV-Filter gesetzt, die im notify nicht gesetzt werden. ;)
Edit: Version eingecheckt
Zitat von: Damian am 22 September 2019, 20:42:15
Neue Version im Anhang. Bitte testen.
Nach erfolgreichen Tests habe ich die neue Version bereits eingecheckt. Ich hoffe, dass der Update-Spuk langsam ein Ende nimmt. >:(
Leider musste ich etwas an fhem.pl vorbei arbeiten, dafür werden im DOIF auch NOTIFDEV-Filter gesetzt, die im notify nicht gesetzt werden. ;)
Die Version im Anhang funktionierte bei mir noch nicht immer :( Hier nochmal ein Video vom verhalten:
https://youtu.be/EfgveSk8ZTI
Zitat von: hackepeter am 22 September 2019, 22:59:25
Die Version im Anhang funktionierte bei mir noch nicht immer :( Hier nochmal ein Video vom verhalten:
https://youtu.be/EfgveSk8ZTI
Ich bin der Meinung, dass diese Definition nie richtig funktionieren konnte (wenn dann eher zufällig), da du einen Status abfragst, den es offenbar nicht gibt. Stell das bitte auf Eventabfrage um: [GaragentorState:"Longpress: on"]
Zitat von: Damian am 22 September 2019, 23:05:48
Ich bin der Meinung, dass diese Definition nie richtig funktionieren konnte (wenn dann eher zufällig), da du einen Status abfragst, den es offenbar nicht gibt. Stell das bitte auf Eventabfrage um: [GaragentorState:"Longpress: on"]
Sorry, es war der falsche Link...
https://youtu.be/guNdmmsnUM8
Ich probiere es aber trotzdem morgen früh nochmal...
Moin,
ich muss mich hier vermutlich auch mal ranhängen:
Mein DOIF
(["^OWX_1D_18DC84000003$:^A_rate"] && ([{sunrise()}-{sunset("3600")}]))
triggert nicht mehr auf die FHEM2FHEM-Events:
Zitat2019-09-23 11:51:37.206 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133334074334592
Ist seit ein paar Tagen so, hab mich aber erstmal nur gewundert, nicht gesucht. Heute hatte ich Zeit, und auch ein minimal-DOIF, was nur auf ["^OWX_1D_18DC84000003$:^A_rate"] triggern soll, tut nichts.
komplettes DOIF ist unten anbei, ich habe jetzt gerade ein update gemacht:
Zitat98_DOIF.pm 20229 2019-09-22 18:55:46Z Damian
Bin ich von dem Problem betroffen oder muss ich woanders suchen? Das DOIF hat jahrelang einwandfrei funktioniert.
Danke und Grüße,
Stephan
Internals:
DEF (["^OWX_1D_18DC84000003$:^A_rate"] && ([{sunrise()}-{sunset("3600")}]))
({
my ($a1,$b1) = split(" ", "$EVENT");
fhem("setreading $SELF rate $b1");
my $power = [$SELF:power];
my $power_sec = [$SELF:power:sec];
my $work = [$SELF:work];
my $deltawork = (( $power * $power_sec ) / 3600 / 1000 );
my $totalwork = $deltawork + $work;
fhem("setreading $SELF lastdeltawork $deltawork");
fhem("setreading $SELF work $totalwork");
})
DOELSEIF([23:59])
(
setreading $SELF solarerwartung_heute [wetter_prop:fc0_prg_ges],
setreading $SELF solarerwartung_morgen [wetter_prop:fc1_prg_ges],
setreading $SELF solarerwartung_uebermorgen [wetter_prop:fc2_prg_ges],
setreading $SELF workDay [$SELF:work],
setreading $SELF work 0
)
DOELSE
(
setreading $SELF rate 0
)
FUUID 5c844715-f33f-4040-d4c8-602d2be86c1a37b3
MODEL FHEM
NAME DF_WMZ_Solar
NOTIFYDEV global,OWX_1D_18DC84000003,RE_TEMP_Vorlauf_Solar,RE_TEMP_Ruecklauf_Solar,DF_WMZ_Solar
NR 476
NTFY_ORDER 50-DF_WMZ_Solar
STATE 0 W
TYPE DOIF
VERSION 20229 2019-09-22 18:55:46
DOIF_Readings:
RL (::ReadingValDoIf($hash,'RE_TEMP_Ruecklauf_Solar','temperature'))
VL (::ReadingValDoIf($hash,'RE_TEMP_Vorlauf_Solar','temperature'))
deltaT (::ReadingValDoIf($hash,'DF_WMZ_Solar','VL')-::ReadingValDoIf($hash,'DF_WMZ_Solar','RL'))
lastdeltawork (::ReadingValDoIf($hash,'DF_WMZ_Solar','rate')*1.05*::ReadingSecDoIf('DF_WMZ_Solar','work'))
literpromin (::ReadingValDoIf($hash,'DF_WMZ_Solar','rate')*60)
literprosec (::ReadingValDoIf($hash,'DF_WMZ_Solar','rate'))
p1 (::ReadingValDoIf($hash,'DF_WMZ_Solar','rate')*3600*1.05*::ReadingValDoIf($hash,'DF_WMZ_Solar','deltaT'))
power (::ReadingValDoIf($hash,'DF_WMZ_Solar','p1','','d0'))
READINGS:
2019-09-21 09:13:57 Device OWX_1D_18DC84000003
2019-09-23 11:53:59 RL 35.31
2019-09-23 11:54:02 VL 38.56
2019-09-23 06:39:29 cmd 3
2019-09-23 06:39:29 cmd_event timer_1
2019-09-23 06:39:29 cmd_nr 3
2019-09-23 11:54:02 deltaT 3.25
2019-09-21 09:13:57 lastdeltawork 0
2019-09-21 21:00:11 literpromin 0
2019-09-21 21:00:11 literprosec 0
2019-09-21 21:00:11 p1 0
2019-09-21 21:00:27 power 0
2019-09-23 06:39:29 rate 0
2019-09-22 23:59:00 solarerwartung_heute 33
2019-09-22 23:59:00 solarerwartung_morgen 19
2019-09-22 23:59:00 solarerwartung_uebermorgen 25
2019-09-23 06:39:29 state cmd_3
2019-09-23 11:49:31 timer_01_c01 24.09.2019 06:41:01
2019-09-23 11:49:31 timer_02_c01 23.09.2019 20:55:42
2019-09-23 11:49:31 timer_03_c02 23.09.2019 23:59:00
2019-09-22 23:59:00 work 0
2019-09-22 23:59:00 workDay 0
Regex:
DOIF_Readings:
DF_WMZ_Solar:
deltaT:
RL ^DF_WMZ_Solar$:^RL:
VL ^DF_WMZ_Solar$:^VL:
lastdeltawork:
rate ^DF_WMZ_Solar$:^rate:
work ^DF_WMZ_Solar$:^work:
literpromin:
rate ^DF_WMZ_Solar$:^rate:
literprosec:
rate ^DF_WMZ_Solar$:^rate:
p1:
deltaT ^DF_WMZ_Solar$:^deltaT:
rate ^DF_WMZ_Solar$:^rate:
power:
p1 ^DF_WMZ_Solar$:^p1:
RE_TEMP_Ruecklauf_Solar:
RL:
temperature ^RE_TEMP_Ruecklauf_Solar$:^temperature:
RE_TEMP_Vorlauf_Solar:
VL:
temperature ^RE_TEMP_Vorlauf_Solar$:^temperature:
accu:
cond:
:
0:
"^OWX_1D_18DC84000003$:^A_rate" ^OWX_1D_18DC84000003$:^A_rate
condition:
0 ::EventDoIf('^OWX_1D_18DC84000003$',$hash,'^A_rate',0) && (::DOIF_time($hash,0,1,$wday,$hms))
1 ::DOIF_time_once($hash,2,$wday)
days:
do:
0:
0 { my ($a1,$b1) = split(" ", "$EVENT"); fhem("setreading DF_WMZ_Solar rate $b1"); my $power = [DF_WMZ_Solar:power]; my $power_sec = [DF_WMZ_Solar:power:sec]; my $work = [DF_WMZ_Solar:work]; my $deltawork = (( $power * $power_sec ) / 3600 / 1000 ); my $totalwork = $deltawork + $work; fhem("setreading DF_WMZ_Solar lastdeltawork $deltawork"); fhem("setreading DF_WMZ_Solar work $totalwork"); }
1:
0 setreading DF_WMZ_Solar solarerwartung_heute [wetter_prop:fc0_prg_ges], setreading DF_WMZ_Solar solarerwartung_morgen [wetter_prop:fc1_prg_ges], setreading DF_WMZ_Solar solarerwartung_uebermorgen [wetter_prop:fc2_prg_ges], setreading DF_WMZ_Solar workDay [DF_WMZ_Solar:work], setreading DF_WMZ_Solar work 0
2:
0 setreading DF_WMZ_Solar rate 0
helper:
event deltaT: 3.44,VL: 38.56,deltaT: 3.25
globalinit 1
last_timer 3
sleeptimer -1
triggerDev DF_WMZ_Solar
DOIF_Readings_events:
deltaT: 3.25
DOIF_Readings_eventsState:
deltaT: 3.25
triggerEvents:
deltaT: 3.44
VL: 38.56
deltaT: 3.25
triggerEventsState:
deltaT: 3.44
VL: 38.56
interval:
0 -1
1 0
intervalfunc:
localtime:
0 1569300061
1 1569264942
2 1569275940
perlblock:
realtime:
0 06:41:01
1 20:55:42
2 23:59:00
time:
0 {sunrise()}
1 {sunset("3600")}
2 23:59:00
timeCond:
0 0
1 0
2 1
timer:
0 0
1 0
2 0
timers:
0 0 1
1 2
triggertime:
1569264942:
localtime 1569264942
hash:
1569275940:
localtime 1569275940
hash:
1569300061:
localtime 1569300061
hash:
uiState:
uiTable:
Attributes:
DOIF_Readings VL:([RE_TEMP_Vorlauf_Solar:temperature]),
RL:([RE_TEMP_Ruecklauf_Solar:temperature]),
deltaT:([$SELF:VL]-[$SELF:RL]),
p1:([$SELF:rate]*3600*1.05*[$SELF:deltaT]),
power:([$SELF:p1:d0]),
lastdeltawork:([$SELF:rate]*1.05*[$SELF:work:sec]),
literprosec:([$SELF:rate]),
literpromin:([$SELF:rate]*60)
DbLogInclude power,literpromin
do always
room Counter,FHEM2FHEM,Solar,_doif
selftrigger all
stateFormat power W
Dann teste mal das DOIF erst mal mit einem Trigger:
trigger OWX_1D_18DC84000003 A_rate: 0.1
Wenn das funktioniert, dann haben wir ein grundsätzliches Problem.
Edit: Ich habe kein fhem2fhem laufen, daher kann ich nur mit einem Dummy namens OWX_1D_18DC84000003 testen
trigger OWX_1D_18DC84000003 A_rate: 0.1
funktioniert bei mir wie gewünscht:
Internals:
CFGFN
DEF (["^OWX_1D_18DC84000003$:^A_rate"]) (set bla on)
MODEL FHEM
NAME di_fhem2fhem
NOTIFYDEV global,OWX_1D_18DC84000003
NR 1485
NTFY_ORDER 50-di_fhem2fhem
STATE cmd_1
TYPE DOIF
READINGS:
2019-09-23 13:10:40 Device OWX_1D_18DC84000003
2019-09-23 13:10:40 cmd 1
2019-09-23 13:10:40 cmd_event OWX_1D_18DC84000003
2019-09-23 13:10:40 cmd_nr 1
2019-09-23 13:10:37 mode enabled
2019-09-23 13:10:40 state cmd_1
Reg ...
Hi,
ich schmeiss mal mit Infos:
Raspi namens hzfhem, hat ein FIRMATA-Device, über welches ein one-Wire-Zählerbaustein angeschlossen ist:
Internals:
ASYNC 0
DEF DS2423 18DC84000003
ERRCOUNT 0
FUUID 5c84483f-f33f-0aaa-2585-a81d237b121ac4e7
INTERVAL 10
IODev OWIO_13
NAME OWX_1D_18DC84000003
NOTIFYDEV global
NR 22
NTFY_ORDER 50-OWX_1D_18DC84000003
OW_FAMILY 1D
OW_ID 18DC84000003
PRESENT 1
ROM_ID 1D.18DC84000003.73
STATE A: 986227.00 cts A_r: 0.20 cts/s B: 680447866.00 cts B_r: 24.30 cts/s
TYPE OWCOUNT
DATA:
memory
READINGS:
2019-09-23 16:26:57 A 986227
2019-09-23 16:26:57 A_rate 0.133656717947117
2019-09-23 16:26:57 B 680447866
2019-09-23 16:26:57 B_rate 24.2189391933888
2019-09-23 16:26:57 memory
2019-09-23 16:26:57 state A: 986227.00 cts A_r: 0.20 cts/s B: 680447866.00 cts B_r: 24.30 cts/s
owg_midnight:
0
0
owg_str:
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
undef
owg_val:
986227
680447866
Attributes:
APeriod second
BPeriod second
IODev OWIO_13
comment A=Solar Zähler;B=HZG Haus Zähler
event-aggregator A_rate:10:linear:mean:60,B_rate:10:linear:mean:60
event-on-change-reading A_rate,B_rate
interval 10
model DS2423
room Firmata
Aktualisierung (durch pollen von FHEM) alle 10 Sekunden.
New-Fhem (weil es der Nachfolger von Main-Fhem ist;) erhält folgende Events per FHEM2FHEM:
2019-09-23 16:29:17.200 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133334906953266
2019-09-23 16:29:27.197 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133334873573312
2019-09-23 16:29:37.198 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133334576898752
2019-09-23 16:29:47.265 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133334198358463
2019-09-23 16:29:57.196 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133335681344216
2019-09-23 16:30:07.277 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133336753098428
2019-09-23 16:30:17.197 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133337033115783
2019-09-23 16:30:28.203 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133337809402779
2019-09-23 16:30:37.274 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133338078744586
2019-09-23 16:30:47.195 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133337991547122
2019-09-23 16:30:57.193 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133335702941549
2019-09-23 16:31:07.196 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133334698678674
2019-09-23 16:31:17.196 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333999741996
2019-09-23 16:31:27.196 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133332569598988
2019-09-23 16:31:37.196 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133332587613646
2019-09-23 16:31:47.193 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133332588209718
2019-09-23 16:31:57.378 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133332625561136
2019-09-23 16:32:07.196 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133332623044387
2019-09-23 16:32:17.229 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.13333266920673
2019-09-23 16:32:27.196 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133332766426641
2019-09-23 16:32:37.196 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133332764770899
2019-09-23 16:32:47.196 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133332757220712
2019-09-23 16:32:57.186 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133332674305579
2019-09-23 16:33:07.196 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133331986744543
2019-09-23 16:33:17.604 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133332573436819
2019-09-23 16:33:27.272 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133332417408669
2019-09-23 16:33:37.196 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.13333242078645
2019-09-23 16:33:47.245 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133332418269672
2019-09-23 16:33:57.290 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133332419329281
2019-09-23 16:34:07.218 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.13333304684448
2019-09-23 16:34:09.354 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.1
2019-09-23 16:34:17.214 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133332446815105
2019-09-23 16:34:27.197 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.141666819982979
2019-09-23 16:34:37.196 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.141666796108391
2019-09-23 16:34:47.243 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.13333360354143
2019-09-23 16:34:57.196 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.14166677547872
2019-09-23 16:35:07.196 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.141666810777455
2019-09-23 16:35:17.363 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333007964648
2019-09-23 16:35:27.205 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333264922857
2019-09-23 16:35:37.240 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133332722122445
2019-09-23 16:35:47.930 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133332879873504
2019-09-23 16:35:57.197 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333239623415
2019-09-23 16:36:07.198 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133332851196159
2019-09-23 16:36:17.351 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333498905635
2019-09-23 16:36:27.198 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333200277047
2019-09-23 16:36:37.562 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333831166206
2019-09-23 16:36:47.206 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333784541344
2019-09-23 16:36:57.250 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333462545698
2019-09-23 16:37:07.204 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333770104126
2019-09-23 16:37:17.217 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133331663510811
2019-09-23 16:37:27.221 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133331514889333
2019-09-23 16:37:37.202 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133331232077329
2019-09-23 16:37:47.223 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133331634308046
2019-09-23 16:37:57.202 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133331654376513
2019-09-23 16:38:07.527 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133331719350328
2019-09-23 16:38:17.203 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333493276561
2019-09-23 16:38:27.236 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333810239867
2019-09-23 16:38:37.205 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333434664182
2019-09-23 16:38:47.200 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133329962612454
2019-09-23 16:38:57.239 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133328596983189
2019-09-23 16:39:07.524 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133328943512263
2019-09-23 16:39:17.203 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133329864494052
2019-09-23 16:39:27.202 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.13333000479359
Wie man sehen kann, schön alle 10 Sekunden.
das doif DF_WMZ_Solar berechnet die DOIF_Readings zuverlässig, wenn sich einer der Lieferanten-Werte ändert - so wie es sein soll.
Das Reading "rate" hingegen hat um 14:50 das letzte mal ein update erhalten. (Korrektur: es gab ein weiteres update um 16:28; jetzt ist es bereits 16:33 ohne dass sich der Zeitstempel verändert hätte)
Internals:
DEF (["^OWX_1D_18DC84000003$:^A_rate"] && ([{sunrise()}-{sunset("3600")}]))
({
my ($a1,$b1) = split(" ", "$EVENT");
fhem("setreading $SELF rate $b1");
my $power = [$SELF:power];
my $power_sec = [$SELF:power:sec];
my $work = [$SELF:work];
my $deltawork = (( $power * $power_sec ) / 3600 / 1000 );
my $totalwork = $deltawork + $work;
fhem("setreading $SELF lastdeltawork $deltawork");
fhem("setreading $SELF work $totalwork");
})
DOELSEIF([23:59])
(
setreading $SELF solarerwartung_heute [wetter_prop:fc0_prg_ges],
setreading $SELF solarerwartung_morgen [wetter_prop:fc1_prg_ges],
setreading $SELF solarerwartung_uebermorgen [wetter_prop:fc2_prg_ges],
setreading $SELF workDay [$SELF:work],
setreading $SELF work 0
)
DOELSE
(
setreading $SELF rate 0
)
FUUID 5c844715-f33f-4040-d4c8-602d2be86c1a37b3
MODEL FHEM
NAME DF_WMZ_Solar
NOTIFYDEV global,OWX_1D_18DC84000003,RE_TEMP_Vorlauf_Solar,RE_TEMP_Ruecklauf_Solar,DF_WMZ_Solar
NR 476
NTFY_ORDER 50-DF_WMZ_Solar
STATE 882 W
TYPE DOIF
VERSION 20229 2019-09-22 18:55:46
DOIF_Readings:
RL (::ReadingValDoIf($hash,'RE_TEMP_Ruecklauf_Solar','temperature'))
VL (::ReadingValDoIf($hash,'RE_TEMP_Vorlauf_Solar','temperature'))
deltaT (::ReadingValDoIf($hash,'DF_WMZ_Solar','VL')-::ReadingValDoIf($hash,'DF_WMZ_Solar','RL'))
lastdeltawork (::ReadingValDoIf($hash,'DF_WMZ_Solar','rate')*1.05*::ReadingSecDoIf('DF_WMZ_Solar','work'))
literpromin (::ReadingValDoIf($hash,'DF_WMZ_Solar','rate')*60)
literprosec (::ReadingValDoIf($hash,'DF_WMZ_Solar','rate'))
p1 (::ReadingValDoIf($hash,'DF_WMZ_Solar','rate')*3600*1.05*::ReadingValDoIf($hash,'DF_WMZ_Solar','deltaT'))
power (::ReadingValDoIf($hash,'DF_WMZ_Solar','p1','','d0'))
Helper:
DBLOG:
literpromin:
logdb:
TIME 1569248897.29532
VALUE 7.99998529334802
power:
logdb:
TIME 1569248897.29532
VALUE 1008
READINGS:
2019-09-23 16:28:17 Device OWX_1D_18DC84000003
2019-09-23 16:29:49 RL 37.81
2019-09-23 16:30:21 VL 39.50
2019-09-23 16:28:17 cmd 1
2019-09-23 16:28:17 cmd_event OWX_1D_18DC84000003
2019-09-23 16:28:17 cmd_nr 1
2019-09-23 16:30:21 deltaT 1.69
2019-09-23 16:28:17 lastdeltawork 0
2019-09-23 16:28:17 literpromin 7.99998529334802
2019-09-23 16:28:17 literprosec 0.133333088222467
2019-09-23 16:29:52 p1 881.998378591619
2019-09-23 16:29:52 power 882
2019-09-23 16:28:17 rate 0.133333088222467
2019-09-22 23:59:00 solarerwartung_heute 33
2019-09-22 23:59:00 solarerwartung_morgen 19
2019-09-22 23:59:00 solarerwartung_uebermorgen 25
2019-09-23 16:28:17 state cmd_1
2019-09-23 11:49:31 timer_01_c01 24.09.2019 06:41:01
2019-09-23 11:49:31 timer_02_c01 23.09.2019 20:55:42
2019-09-23 11:49:31 timer_03_c02 23.09.2019 23:59:00
2019-09-23 16:28:17 work 0.0420019444444445
2019-09-22 23:59:00 workDay 0
Regex:
DOIF_Readings:
DF_WMZ_Solar:
deltaT:
RL ^DF_WMZ_Solar$:^RL:
VL ^DF_WMZ_Solar$:^VL:
lastdeltawork:
rate ^DF_WMZ_Solar$:^rate:
work ^DF_WMZ_Solar$:^work:
literpromin:
rate ^DF_WMZ_Solar$:^rate:
literprosec:
rate ^DF_WMZ_Solar$:^rate:
p1:
deltaT ^DF_WMZ_Solar$:^deltaT:
rate ^DF_WMZ_Solar$:^rate:
power:
p1 ^DF_WMZ_Solar$:^p1:
RE_TEMP_Ruecklauf_Solar:
RL:
temperature ^RE_TEMP_Ruecklauf_Solar$:^temperature:
RE_TEMP_Vorlauf_Solar:
VL:
temperature ^RE_TEMP_Vorlauf_Solar$:^temperature:
accu:
cond:
:
0:
"^OWX_1D_18DC84000003$:^A_rate" ^OWX_1D_18DC84000003$:^A_rate
attr:
cmdState:
wait:
waitdel:
condition:
0 ::EventDoIf('^OWX_1D_18DC84000003$',$hash,'^A_rate',0) && (::DOIF_time($hash,0,1,$wday,$hms))
1 ::DOIF_time_once($hash,2,$wday)
days:
do:
0:
0 { my ($a1,$b1) = split(" ", "$EVENT"); fhem("setreading DF_WMZ_Solar rate $b1"); my $power = [DF_WMZ_Solar:power]; my $power_sec = [DF_WMZ_Solar:power:sec]; my $work = [DF_WMZ_Solar:work]; my $deltawork = (( $power * $power_sec ) / 3600 / 1000 ); my $totalwork = $deltawork + $work; fhem("setreading DF_WMZ_Solar lastdeltawork $deltawork"); fhem("setreading DF_WMZ_Solar work $totalwork"); }
1:
0 setreading DF_WMZ_Solar solarerwartung_heute [wetter_prop:fc0_prg_ges], setreading DF_WMZ_Solar solarerwartung_morgen [wetter_prop:fc1_prg_ges], setreading DF_WMZ_Solar solarerwartung_uebermorgen [wetter_prop:fc2_prg_ges], setreading DF_WMZ_Solar workDay [DF_WMZ_Solar:work], setreading DF_WMZ_Solar work 0
2:
0 setreading DF_WMZ_Solar rate 0
helper:
event VL: 39.50
globalinit 1
last_timer 3
sleeptimer -1
timerdev OWX_1D_18DC84000003
timerevent A_rate: 0.133333088222467
triggerDev DF_WMZ_Solar
DOIF_Readings_events:
deltaT: 1.69
DOIF_Readings_eventsState:
deltaT: 1.69
timerevents:
A_rate: 0.133333088222467
timereventsState:
A_rate: 0.133333088222467
triggerEvents:
VL: 39.50
deltaT: 1.69
triggerEventsState:
VL: 39.50
internals:
interval:
0 -1
1 0
intervalfunc:
localtime:
0 1569300061
1 1569264942
2 1569275940
perlblock:
readings:
realtime:
0 06:41:01
1 20:55:42
2 23:59:00
time:
0 {sunrise()}
1 {sunset("3600")}
2 23:59:00
timeCond:
0 0
1 0
2 1
timer:
0 0
1 0
2 0
timers:
0 0 1
1 2
trigger:
triggertime:
1569264942:
localtime 1569264942
hash:
1569275940:
localtime 1569275940
hash:
1569300061:
localtime 1569300061
hash:
uiState:
uiTable:
Attributes:
DOIF_Readings VL:([RE_TEMP_Vorlauf_Solar:temperature]),
RL:([RE_TEMP_Ruecklauf_Solar:temperature]),
deltaT:([$SELF:VL]-[$SELF:RL]),
p1:([$SELF:rate]*3600*1.05*[$SELF:deltaT]),
power:([$SELF:p1:d0]),
lastdeltawork:([$SELF:rate]*1.05*[$SELF:work:sec]),
literprosec:([$SELF:rate]),
literpromin:([$SELF:rate]*60)
DbLogInclude power,literpromin
do always
room Counter,FHEM2FHEM,Solar,_doif
selftrigger all
stateFormat power W
Jetzt hab ich mal ein
trigger OWX_1D_18DC84000003 A_rate: 0.1
ausgeführt, auf hzfhem, weil es auf New-Fhem die Fehlermeldung
ZitatPlease define OWX_1D_18DC84000003 first
wirft.
Das ganze kommt im Event-Monitor auch einwandfrei an:
Zitat2019-09-23 16:34:09.354 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.1
Leider aber nicht im DOIF:
Zitatrate 0.133333088222467 2019-09-23 16:28:17
Als nächstes werde ich in NewFHEM ein dummy namens OWX_1D_18DC84000003 erstellen. Dieses sollte dann ja automatisch alle Werte über FHEM2FHEM erhalten. Dann kann ich auch lokal auf NewFHEM ein "trigger .." ausführen. Melde mich.
Danke dir und Grüße,
Stephan
So, das ging schnell:
define OWX_1D_18DC84000003 dummy
und die aktualisierungen im DF_WMZ_Solar brummen wieder wie gewünscht.
Was mir dabei aufgefallen ist:
Ich hab noch so ein DOIF. Das macht im Prinzip genau das gleiche, nur nicht beschränkt auf den Tageszeitraum:
Internals:
DEF (["^OWX_1D_18DC84000003$:^B_rate"])({
my ($a1,$b1) = split(" ", "$EVENT");
$b1 = $b1/52;
fhem("setreading $SELF rate $b1");
my $power = [$SELF:power:d];
my $lastdeltawork_sec = [$SELF:lastdeltawork:sec];
fhem("setreading $SELF _lastdeltawork_sec $lastdeltawork_sec");
my $work = [$SELF:work:d];
my $deltawork = (( $power * $lastdeltawork_sec ) / 3600 / 1000 );
my $totalwork = $deltawork + $work;
fhem("setreading $SELF lastdeltawork $deltawork");
fhem("setreading $SELF work $totalwork");
})
DOELSEIF([23:59])
(
setreading $SELF workDay [$SELF:work],
setreading $SELF work 0
)
FUUID 5c844715-f33f-4040-7cd6-92841e952dc0661d
MODEL FHEM
NAME DF_WMZ_HZG_main
NOTIFYDEV global,OWX_1D_18DC84000003,RE_TEMP_VorlaufHK,RE_TEMP_RuecklaufHK,DF_WMZ_HZG_main
NR 477
NTFY_ORDER 50-DF_WMZ_HZG_main
STATE 956 W
TYPE DOIF
VERSION 20229 2019-09-22 18:55:46
CHANGED:
power: 956
CHANGEDWITHSTATE:
power: 956
DOIF_Readings:
RL (::ReadingValDoIf($hash,'RE_TEMP_RuecklaufHK','temperature'))
VL (::ReadingValDoIf($hash,'RE_TEMP_VorlaufHK','temperature'))
deltaT (::ReadingValDoIf($hash,'DF_WMZ_HZG_main','VL')-::ReadingValDoIf($hash,'DF_WMZ_HZG_main','RL'))
literpromin (::ReadingValDoIf($hash,'DF_WMZ_HZG_main','rate')*60)
literprosec (::ReadingValDoIf($hash,'DF_WMZ_HZG_main','rate'))
p1 (::ReadingValDoIf($hash,'DF_WMZ_HZG_main','rate')*3600*1.16*::ReadingValDoIf($hash,'DF_WMZ_HZG_main','deltaT'))
power (::ReadingValDoIf($hash,'DF_WMZ_HZG_main','p1','','d0'))
Helper:
DBLOG:
lastdeltawork:
logdb:
TIME 1569249787.40592
VALUE 0.00266388888888889
literpromin:
logdb:
TIME 1569249787.34286
VALUE 27.4711678186731
READINGS:
2019-09-23 16:43:07 Device OWX_1D_18DC84000003
2019-09-23 16:31:22 RL 25.00
2019-09-23 16:35:26 VL 25.50
2019-09-23 16:43:07 _lastdeltawork_sec 10
2019-09-23 16:43:07 cmd 1
2019-09-23 16:43:07 cmd_event OWX_1D_18DC84000003
2019-09-23 16:43:07 cmd_nr 1
2019-09-23 16:35:26 deltaT 0.5
2019-09-23 16:43:07 lastdeltawork 0.00266388888888889
2019-09-23 16:43:07 literpromin 27.4711678186731
2019-09-23 16:43:07 literprosec 0.457852796977885
2019-09-23 16:43:07 p1 955.996640089824
2019-09-23 16:43:07 power 956
2019-09-23 16:43:07 rate 0.457852796977885
2019-09-23 16:43:07 state cmd_1
2019-09-23 11:49:31 timer_01_c02 23.09.2019 23:59:00
2019-09-23 16:43:07 work 30.2372997222223
2019-09-22 23:59:00 workDay 41.0245616666663
Regex:
DOIF_Readings:
DF_WMZ_HZG_main:
deltaT:
RL ^DF_WMZ_HZG_main$:^RL:
VL ^DF_WMZ_HZG_main$:^VL:
literpromin:
rate ^DF_WMZ_HZG_main$:^rate:
literprosec:
rate ^DF_WMZ_HZG_main$:^rate:
p1:
deltaT ^DF_WMZ_HZG_main$:^deltaT:
rate ^DF_WMZ_HZG_main$:^rate:
power:
p1 ^DF_WMZ_HZG_main$:^p1:
RE_TEMP_RuecklaufHK:
RL:
temperature ^RE_TEMP_RuecklaufHK$:^temperature:
RE_TEMP_VorlaufHK:
VL:
temperature ^RE_TEMP_VorlaufHK$:^temperature:
accu:
cond:
:
0:
"^OWX_1D_18DC84000003$:^B_rate" ^OWX_1D_18DC84000003$:^B_rate
attr:
cmdState:
wait:
waitdel:
condition:
0 ::EventDoIf('^OWX_1D_18DC84000003$',$hash,'^B_rate',0)
1 ::DOIF_time_once($hash,0,$wday)
days:
do:
0:
0 { my ($a1,$b1) = split(" ", "$EVENT"); $b1 = $b1/52; fhem("setreading DF_WMZ_HZG_main rate $b1"); my $power = [DF_WMZ_HZG_main:power:d]; my $lastdeltawork_sec = [DF_WMZ_HZG_main:lastdeltawork:sec]; fhem("setreading DF_WMZ_HZG_main _lastdeltawork_sec $lastdeltawork_sec"); my $work = [DF_WMZ_HZG_main:work:d]; my $deltawork = (( $power * $lastdeltawork_sec ) / 3600 / 1000 ); my $totalwork = $deltawork + $work; fhem("setreading DF_WMZ_HZG_main lastdeltawork $deltawork"); fhem("setreading DF_WMZ_HZG_main work $totalwork"); }
1:
0 setreading DF_WMZ_HZG_main workDay [DF_WMZ_HZG_main:work], setreading DF_WMZ_HZG_main work 0
2:
helper:
event p1: 955.996640089824,literpromin: 27.4711678186731,literprosec: 0.457852796977885
globalinit 1
last_timer 1
sleeptimer -1
timerdev OWX_1D_18DC84000003
timerevent B_rate: 23.80834544285
triggerDev DF_WMZ_HZG_main
timerevents:
B_rate: 23.80834544285
timereventsState:
B_rate: 23.80834544285
triggerEvents:
p1: 955.996640089824
literpromin: 27.4711678186731
literprosec: 0.457852796977885
triggerEventsState:
p1: 955.996640089824
literpromin: 27.4711678186731
literprosec: 0.457852796977885
internals:
intervalfunc:
localtime:
0 1569275940
perlblock:
readings:
realtime:
0 23:59:00
time:
0 23:59:00
timeCond:
0 1
timer:
0 0
timers:
1 0
trigger:
triggertime:
1569275940:
localtime 1569275940
hash:
uiState:
uiTable:
Attributes:
DOIF_Readings VL:([RE_TEMP_VorlaufHK:temperature]),
RL:([RE_TEMP_RuecklaufHK:temperature]),
deltaT:([$SELF:VL]-[$SELF:RL]),
p1:([$SELF:rate]*3600*1.16*[$SELF:deltaT]),
power:([$SELF:p1:d0]),
literprosec:([$SELF:rate]),
literpromin:([$SELF:rate]*60)
DbLogInclude literpromin,power,lastdeltawork,workDay
do always
event-on-change-reading power:10,.*
room Counter,FHEM2FHEM,Heizung,_doif
selftrigger all
stateFormat power W
Das wiederum funktioniert einwandfrei...
Leider nicht! Habe die Datenbank gewälzt, gleiches Problem.
Kann von mir aus erstmal so bleiben (mit dem Dummy) aber imho ist das nicht die gewünsche Verhaltensweise?
Edit: Die Event-Monitor-Liste sieht jetzt anders aus:
2019-09-23 16:35:57.197 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333239623415
2019-09-23 16:36:07.198 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133332851196159
2019-09-23 16:36:17.351 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333498905635
2019-09-23 16:36:27.198 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333200277047
2019-09-23 16:36:37.562 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333831166206
2019-09-23 16:36:47.206 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333784541344
2019-09-23 16:36:57.250 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333462545698
2019-09-23 16:37:07.204 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333770104126
2019-09-23 16:37:17.217 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133331663510811
2019-09-23 16:37:27.221 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133331514889333
2019-09-23 16:37:37.202 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133331232077329
2019-09-23 16:37:47.223 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133331634308046
2019-09-23 16:37:57.202 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133331654376513
2019-09-23 16:38:07.527 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133331719350328
2019-09-23 16:38:17.203 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333493276561
2019-09-23 16:38:27.236 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333810239867
2019-09-23 16:38:37.205 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133333434664182
2019-09-23 16:38:47.200 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133329962612454
2019-09-23 16:38:57.239 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133328596983189
2019-09-23 16:39:07.524 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133328943512263
2019-09-23 16:39:17.203 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133329864494052
2019-09-23 16:39:27.202 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.13333000479359
2019-09-23 16:39:37.199 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133330690491819
2019-09-23 16:39:47.201 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133334836629386
2019-09-23 16:39:57.646 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133336613913656
2019-09-23 16:40:07.198 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133336294561514
2019-09-23 16:40:17.201 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133336332314559
2019-09-23 16:40:27.200 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133336358933193
2019-09-23 16:40:37.200 OWCOUNT OWX_1D_18DC84000003 A_rate: 0.133336294439143
2019-09-23 16:40:47.354 dummy OWX_1D_18DC84000003 A_rate: 0.133336236551109
2019-09-23 16:40:57.284 dummy OWX_1D_18DC84000003 A_rate: 0.133336459298852
2019-09-23 16:41:07.256 dummy OWX_1D_18DC84000003 A_rate: 0.133336182386221
2019-09-23 16:41:17.422 dummy OWX_1D_18DC84000003 A_rate: 0.133336114695782
2019-09-23 16:41:27.624 dummy OWX_1D_18DC84000003 A_rate: 0.133335881742548
2019-09-23 16:41:37.276 dummy OWX_1D_18DC84000003 A_rate: 0.133335829496031
2019-09-23 16:41:47.257 dummy OWX_1D_18DC84000003 A_rate: 0.133334432287637
2019-09-23 16:41:57.255 dummy OWX_1D_18DC84000003 A_rate: 0.133334046802573
2019-09-23 16:42:07.274 dummy OWX_1D_18DC84000003 A_rate: 0.133334024021245
2019-09-23 16:42:17.295 dummy OWX_1D_18DC84000003 A_rate: 0.133333510092142
2019-09-23 16:42:27.683 dummy OWX_1D_18DC84000003 A_rate: 0.133333453998614
2019-09-23 16:42:37.412 dummy OWX_1D_18DC84000003 A_rate: 0.13333323538257
2019-09-23 16:42:47.313 dummy OWX_1D_18DC84000003 A_rate: 0.133330778258477
2019-09-23 16:42:57.616 dummy OWX_1D_18DC84000003 A_rate: 0.13332964440543
2019-09-23 16:43:07.340 dummy OWX_1D_18DC84000003 A_rate: 0.133330259240789
2019-09-23 16:43:17.569 dummy OWX_1D_18DC84000003 A_rate: 0.133330645168244
2019-09-23 16:43:27.294 dummy OWX_1D_18DC84000003 A_rate: 0.13333012751529
2019-09-23 16:43:37.292 dummy OWX_1D_18DC84000003 A_rate: 0.133330146724995
2019-09-23 16:43:47.279 dummy OWX_1D_18DC84000003 A_rate: 0.133333571909748
2019-09-23 16:43:57.275 dummy OWX_1D_18DC84000003 A_rate: 0.133334882567266
2019-09-23 16:44:07.275 dummy OWX_1D_18DC84000003 A_rate: 0.133334630054895
2019-09-23 16:44:17.379 dummy OWX_1D_18DC84000003 A_rate: 0.133334079007102
2019-09-23 16:44:27.408 dummy OWX_1D_18DC84000003 A_rate: 0.133334313444433
2019-09-23 16:44:37.271 dummy OWX_1D_18DC84000003 A_rate: 0.133334832295695
2019-09-23 16:44:47.769 dummy OWX_1D_18DC84000003 A_rate: 0.133334081539366
2019-09-23 16:44:57.293 dummy OWX_1D_18DC84000003 A_rate: 0.133333638173481
2019-09-23 16:45:07.270 dummy OWX_1D_18DC84000003 A_rate: 0.133333874262957
2019-09-23 16:45:17.402 dummy OWX_1D_18DC84000003 A_rate: 0.13333657890949
2019-09-23 16:45:27.276 dummy OWX_1D_18DC84000003 A_rate: 0.133337489025421
2019-09-23 16:45:37.257 dummy OWX_1D_18DC84000003 A_rate: 0.133337281054982
Grüße,
Stephan
Vorhin kamen mal ein paar Werte durch:
2019-09-23 14:51:17
DF_WMZ_HZG_main
DOIF
literpromin
28.0288311213623
2019-09-23 14:51:17
DF_WMZ_Solar
DOIF
literpromin
8.00019400078092
2019-09-23 14:42:17
DF_WMZ_HZG_main
DOIF
literpromin
27.8461548305526
2019-09-23 14:42:17
DF_WMZ_Solar
DOIF
literpromin
8.00001300580158
2019-09-23 14:41:07
DF_WMZ_HZG_main
DOIF
literpromin
27.8365259158843
2019-09-23 14:41:07
DF_WMZ_Solar
DOIF
literpromin
8.0002407113076
2019-09-23 14:40:57
DF_WMZ_HZG_main
DOIF
literpromin
27.778840664693
2019-09-23 14:40:57
DF_WMZ_Solar
DOIF
literpromin
8.00007609003144
2019-09-23 14:40:56
KNX10.I05_Zaehler_Holzvergaser
KNX
literpromin
0.00
l/min
2019-09-23 14:40:47
DF_WMZ_HZG_main
DOIF
literpromin
27.7980708400324
2019-09-23 14:40:47
DF_WMZ_Solar
DOIF
literpromin
8.00007700388382
2019-09-23 14:40:38
DF_WMZ_HZG_main
DOIF
literpromin
27.8269159655512
2019-09-23 14:40:37
DF_WMZ_Solar
DOIF
literpromin
8.00005915564686
2019-09-23 14:40:37
KNX10.I05_Zaehler_Holzvergaser
KNX
literpromin
0.00
l/min
2019-09-23 14:40:27
DF_WMZ_HZG_main
DOIF
literpromin
27.8365290316149
2019-09-23 14:40:27
DF_WMZ_Solar
DOIF
literpromin
8.0000605146744
2019-09-23 14:40:17
DF_WMZ_HZG_main
DOIF
literpromin
27.8750001001051
2019-09-23 14:40:17
DF_WMZ_Solar
DOIF
literpromin
8.00006296228704
Ich weiss aber nicht, was ich da gemacht haben könnte, damit es mal funktioniert hat...
Was ich jetzt verstanden habe ist, dass Events vom NOTIFYDEV-Filter geschluckt werden, wenn kein passendes Device existiert. Das sind aber Dinge außerhalb von DOIF. Dann dürfte auch ein notify damit nicht klar kommen, weil es ja auch den NOTFYDEV-Filter nutzt.
Hm. Das verstehe ich wiederum nicht. Dann dürfte es ja nie funktioniert haben - oder?
Zitat von: abc2006 am 23 September 2019, 18:01:40
Hm. Das verstehe ich wiederum nicht. Dann dürfte es ja nie funktioniert haben - oder?
Ich habe gerade die Antwort im Development-Board erhalten. NOTFYDEV-Filter wird im notify nicht gesetzt, wenn es das Device nicht gibt. Da muss ich mir noch was überlegen.
Ich weiss nicht, obs auch noch dazugehört, aber gerade stelle ich fest, dass ein DOIF-Reading nicht aktualisiert wird. Selbes Device wie oben.
Ich kann mal probieren, ob resetten, initialize, set cmd, DEF oder shutdown restart irgendwas dran ändern ...
p1 1794.23229204803 2019-09-24 13:40:36
power 0 2019-09-23 20:56:01
DOIF_Readings:
[...]
p1:([$SELF:rate]*3600*1.05*[$SELF:deltaT]),
power:([$SELF:p1:d0]),
[...]
Edit: Ändern und speichern der DOIF_Readings (durch klicken auf "attr") aktualisiert "power" einmalig. Danach veraltet es wieder.
Die angehängte Version sollte jetzt auch mit FHEM2FHEM klarkommen.
Edit: neue Version eingecheckt
Hi,
danke für das mega schnelle update!
ja, funktioniert jetzt auch ohne den Dummy.
Leider werden die DOIF-Readings aber noch nicht aktualisiert.
Ich poste auch gerne noch mal ein list.
Die Readings p1 und power sollen alle 10 Sekunden (wenn ein Event kommt) aktualisiert werden und müssten somit den gleichen Timestamp bekommen wie "rate". Oder zumindest fast gleich. Und rot werden. Oder lieg ich falsch?
grüße,
Stephan
Internals:
DEF (["^OWX_1D_18DC84000003$:^A_rate"] && ([{sunrise()}-{sunset("3600")}]))
({
my ($a1,$b1) = split(" ", "$EVENT");
fhem("setreading $SELF rate $b1");
my $power = [$SELF:power];
my $power_sec = [$SELF:power:sec];
my $work = [$SELF:work];
my $deltawork = (( $power * $power_sec ) / 3600 / 1000 );
my $totalwork = $deltawork + $work;
fhem("setreading $SELF lastdeltawork $deltawork");
fhem("setreading $SELF work $totalwork");
})
DOELSEIF([23:59])
(
setreading $SELF solarerwartung_heute [wetter_prop:fc0_prg_ges],
setreading $SELF solarerwartung_morgen [wetter_prop:fc1_prg_ges],
setreading $SELF solarerwartung_uebermorgen [wetter_prop:fc2_prg_ges],
setreading $SELF workDay [$SELF:work],
setreading $SELF work 0
)
DOELSE
(
setreading $SELF rate 0
)
FUUID 5c844715-f33f-4040-d4c8-602d2be86c1a37b3
MODEL FHEM
NAME DF_WMZ_Solar
NR 476
NTFY_ORDER 50-DF_WMZ_Solar
STATE 786 W
TYPE DOIF
CHANGED:
RL: 37.63
CHANGEDWITHSTATE:
RL: 37.63
DOIF_Readings:
RL (::ReadingValDoIf($hash,'RE_TEMP_Ruecklauf_Solar','temperature'))
VL (::ReadingValDoIf($hash,'RE_TEMP_Vorlauf_Solar','temperature'))
deltaT (::ReadingValDoIf($hash,'DF_WMZ_Solar','VL')-::ReadingValDoIf($hash,'DF_WMZ_Solar','RL'))
lastdeltawork (::ReadingValDoIf($hash,'DF_WMZ_Solar','rate')*1.05*::ReadingSecDoIf('DF_WMZ_Solar','work'))
literpromin (::ReadingValDoIf($hash,'DF_WMZ_Solar','rate')*60)
literprosec (::ReadingValDoIf($hash,'DF_WMZ_Solar','rate'))
p1 int(::ReadingValDoIf($hash,'DF_WMZ_Solar','rate')*3600*1.05*::ReadingValDoIf($hash,'DF_WMZ_Solar','deltaT'))
power (::ReadingValDoIf($hash,'DF_WMZ_Solar','p1','','d0'))
READINGS:
2019-09-24 15:39:26 Device OWX_1D_18DC84000003
2019-09-24 15:39:27 RL 37.63
2019-09-24 15:38:31 VL 41.19
2019-09-24 15:39:26 cmd 1
2019-09-24 15:39:26 cmd_event OWX_1D_18DC84000003
2019-09-24 15:39:26 cmd_nr 1
2019-09-24 15:30:56 deltaT 1.56
2019-09-24 15:39:26 lastdeltawork 0.108511666666667
2019-09-24 13:40:36 literpromin 7.99996563245958
2019-09-24 13:40:36 literprosec 0.133332760540993
2019-09-24 15:30:56 p1 786
2019-09-24 15:31:09 power 786
2019-09-24 15:39:26 rate 0.0166663856517311
2019-09-23 23:59:00 solarerwartung_heute 25
2019-09-23 23:59:00 solarerwartung_morgen 31
2019-09-23 23:59:00 solarerwartung_uebermorgen 23
2019-09-24 15:39:26 state cmd_1
2019-09-24 15:31:22 timer_01_c01 25.09.2019 06:42:34
2019-09-24 15:31:22 timer_02_c01 24.09.2019 20:53:28
2019-09-24 15:31:22 timer_03_c02 24.09.2019 23:59:00
2019-09-24 15:39:26 work 2.910165
2019-09-23 23:59:00 workDay 0.361130833333333
Regex:
DOIF_Readings:
DF_WMZ_Solar:
deltaT:
RL ^DF_WMZ_Solar$:^RL:
VL ^DF_WMZ_Solar$:^VL:
lastdeltawork:
rate ^DF_WMZ_Solar$:^rate:
work ^DF_WMZ_Solar$:^work:
literpromin:
rate ^DF_WMZ_Solar$:^rate:
literprosec:
rate ^DF_WMZ_Solar$:^rate:
p1:
deltaT ^DF_WMZ_Solar$:^deltaT:
rate ^DF_WMZ_Solar$:^rate:
power:
p1 ^DF_WMZ_Solar$:^p1:
RE_TEMP_Ruecklauf_Solar:
RL:
temperature ^RE_TEMP_Ruecklauf_Solar$:^temperature:
RE_TEMP_Vorlauf_Solar:
VL:
temperature ^RE_TEMP_Vorlauf_Solar$:^temperature:
accu:
cond:
:
0:
"^OWX_1D_18DC84000003$:^A_rate" ^OWX_1D_18DC84000003$:^A_rate
attr:
cmdState:
wait:
waitdel:
condition:
0 ::EventDoIf('^OWX_1D_18DC84000003$',$hash,'^A_rate',0) && (::DOIF_time($hash,0,1,$wday,$hms))
1 ::DOIF_time_once($hash,2,$wday)
days:
do:
0:
0 { my ($a1,$b1) = split(" ", "$EVENT"); fhem("setreading DF_WMZ_Solar rate $b1"); my $power = [DF_WMZ_Solar:power]; my $power_sec = [DF_WMZ_Solar:power:sec]; my $work = [DF_WMZ_Solar:work]; my $deltawork = (( $power * $power_sec ) / 3600 / 1000 ); my $totalwork = $deltawork + $work; fhem("setreading DF_WMZ_Solar lastdeltawork $deltawork"); fhem("setreading DF_WMZ_Solar work $totalwork"); }
1:
0 setreading DF_WMZ_Solar solarerwartung_heute [wetter_prop:fc0_prg_ges], setreading DF_WMZ_Solar solarerwartung_morgen [wetter_prop:fc1_prg_ges], setreading DF_WMZ_Solar solarerwartung_uebermorgen [wetter_prop:fc2_prg_ges], setreading DF_WMZ_Solar workDay [DF_WMZ_Solar:work], setreading DF_WMZ_Solar work 0
2:
0 setreading DF_WMZ_Solar rate 0
helper:
DEVFILTER ^global$|^OWX_1D_18DC84000003$|^RE_TEMP_Vorlauf_Solar$|^RE_TEMP_Ruecklauf_Solar$|^DF_WMZ_Solar$
NOTIFYDEV global|OWX_1D_18DC84000003|RE_TEMP_Vorlauf_Solar|RE_TEMP_Ruecklauf_Solar|DF_WMZ_Solar
event temperature: 41.19
globalinit 1
last_timer 3
sleeptimer -1
timerdev OWX_1D_18DC84000003
timerevent A_rate: 0.0166663856517311
triggerDev RE_TEMP_Vorlauf_Solar
timerevents:
A_rate: 0.0166663856517311
timereventsState:
A_rate: 0.0166663856517311
triggerEvents:
temperature: 41.19
triggerEventsState:
temperature: 41.19
internals:
interval:
0 -1
1 0
intervalfunc:
localtime:
0 1569386554
1 1569351208
2 1569362340
perlblock:
readings:
realtime:
0 06:42:34
1 20:53:28
2 23:59:00
time:
0 {sunrise()}
1 {sunset("3600")}
2 23:59:00
timeCond:
0 0
1 0
2 1
timer:
0 0
1 0
2 0
timers:
0 0 1
1 2
trigger:
triggertime:
1569351208:
localtime 1569351208
hash:
1569362340:
localtime 1569362340
hash:
1569386554:
localtime 1569386554
hash:
uiState:
uiTable:
Attributes:
DOIF_Readings VL:([RE_TEMP_Vorlauf_Solar:temperature]),
RL:([RE_TEMP_Ruecklauf_Solar:temperature]),
deltaT:([$SELF:VL]-[$SELF:RL]),
p1:int([$SELF:rate]*3600*1.05*[$SELF:deltaT]),
power:([$SELF:p1:d0]),
lastdeltawork:([$SELF:rate]*1.05*[$SELF:work:sec]),
literprosec:([$SELF:rate]),
literpromin:([$SELF:rate]*60)
DbLogInclude power,literpromin
do always
room Counter,FHEM2FHEM,Solar,_doif
selftrigger all
stateFormat p1 W
Es war noch ein Tippfehler in der letzten Version. Lade noch mal neu.
Edit: DOIF_Readings selbst produzieren keine Events, daher werden sie nie rot. Man muss schon den Browser aktualisieren.
Hast du schon eingecheckt? Bin unterwegs und kann es manuell schlecht testen.
Bei mir siehts gut aus. Auch ein anderes Problem, was ich gerade formuliert habe, scheint behoben.
Neue Version eingecheckt.
Zitat von: Damian am 25 September 2019, 00:01:24
Neue Version eingecheckt.
Bei mir scheint wieder alles zu laufen! Gute Arbeit! Wo soll ich den Kasten Rhönbier hinschicken? 🍻
Zitat von: hackepeter am 26 September 2019, 12:10:15
Bei mir scheint wieder alles zu laufen! Gute Arbeit! Wo soll ich den Kasten Rhönbier hinschicken? 🍻
Für eine stabile Version, stehe ich mit meinem Namen - das reicht schon :)
Moin Damian,
ich hätte da leider noch einen. Weiss nicht, ob das an dem Update liegt - aber da ich gestern (vorgestern) die aktuelle version per update geholt habe, vermute ich, dass es in die Richtung geht:
Hier ist ein list des DF auf meinem raspi "hzfhem":
Internals:
DEF (["^PID_HZFHEM$"])
({
Log3(undef, 4, "DF_F2F_PID Event: $EVENT");
my ($reading,$value) = split(/ /,"$EVENT");
chop $reading;
if($reading eq "actuation"){
fhem("setreading $SELF _event $EVENT");
fhem("setreading $SELF _events $EVENTS");
fhem("setreading $SELF _device $DEVICE");
fhem("setreading $SELF _value $value");
fhem("setreading $SELF _reading $reading");
Log3(undef, 0, "DF_F2F_PID Reading: $reading");
my $order;
if($value >=0 && $value <=270){
$order = "set Mischer_HZG position $value";
Log3(undef, 0, "DF_F2F_PID Order fhem(): $order");
fhem($order);
}elsif($value == 0){
##&& ReadingsNum("Mischer_HZG","state",1) == 0 && ReadingsNum("Mischer_HZG","state",1) ne "reset"){
## das reicht eigentlich, wegen event-on-change-reading sollte hier keine Wiederholung auftreten
$order = "set Relais2_FUBO_kalt on-for-timer 20";
Log3(undef, 0, "DF_F2F_PID Order autoreset: $order");
fhem($order);
}elsif($value != int($value)){
Log3(undef, 0, "DF_F2F_PID Fehler. Value: $value");
}
}
})
FUUID 5c844841-f33f-0aaa-2408-991d2c0374888f87
MODEL FHEM
NAME DF_F2F_PID
NR 42
NTFY_ORDER 50-DF_F2F_PID
STATE cmd_1
TYPE DOIF
VERSION 20241 2019-09-24 22:00:09
READINGS:
2019-09-27 00:14:08 Device PID_HZFHEM
2019-09-27 00:14:08 _device PID_HZFHEM
2019-09-27 00:14:08 _event actuation: 13
2019-09-27 00:14:08 _events actuation: 13
2019-09-27 00:14:08 _reading actuation
2019-09-27 00:14:08 _value 13
2019-09-27 00:14:08 cmd 1
2019-09-27 00:14:08 cmd_event PID_HZFHEM
2019-09-27 00:14:08 cmd_nr 1
2019-09-27 00:14:45 error { Log3(undef, 4, "DF_F2F_PID Event: actuation: 6"); my ($reading,$value) = split(/ /,"actuation: 6"); chop $reading; if($reading eq "actuation"){ fhem("setreading DF_F2F_PID _event actuation: 6"); fhem("setreading DF_F2F_PID _events actuation: 6"); fhem("setreading DF_F2F_PID _device PID_HZFHEM"); fhem("setreading DF_F2F_PID _value $value"); fhem("setreading DF_F2F_PID _reading $reading"); Log3(undef, 0, "DF_F2F_PID Reading: $reading"); my $order; if($value >=0 && $value <=270){ $order = "set Mischer_HZG position $value"; Log3(undef, 0, "DF_F2F_PID Order fhem(): $order"); fhem($order); }elsif($value == 0){ $order = "set Relais2_FUBO_kalt on-for-timer 20"; Log3(undef, 0, "DF_F2F_PID Order autoreset: $order"); fhem($order); }elsif($value != int($value)){ Log3(undef, 0, "DF_F2F_PID Fehler. Value: $value"); } } }: Device is locked, try again later. Your command is discarded.
2019-09-27 00:12:28 mode enabled
2019-09-27 00:14:08 state cmd_1
Regex:
accu:
cond:
:
0:
"^PID_HZFHEM$" ^PID_HZFHEM$
attr:
cmdState:
wait:
waitdel:
condition:
0 ::EventDoIf('^PID_HZFHEM$',$hash,'',0)
do:
0:
0 { Log3(undef, 4, "DF_F2F_PID Event: $EVENT"); my ($reading,$value) = split(/ /,"$EVENT"); chop $reading; if($reading eq "actuation"){ fhem("setreading DF_F2F_PID _event $EVENT"); fhem("setreading DF_F2F_PID _events $EVENTS"); fhem("setreading DF_F2F_PID _device $DEVICE"); fhem("setreading DF_F2F_PID _value $value"); fhem("setreading DF_F2F_PID _reading $reading"); Log3(undef, 0, "DF_F2F_PID Reading: $reading"); my $order; if($value >=0 && $value <=270){ $order = "set Mischer_HZG position $value"; Log3(undef, 0, "DF_F2F_PID Order fhem(): $order"); fhem($order); }elsif($value == 0){ $order = "set Relais2_FUBO_kalt on-for-timer 20"; Log3(undef, 0, "DF_F2F_PID Order autoreset: $order"); fhem($order); }elsif($value != int($value)){ Log3(undef, 0, "DF_F2F_PID Fehler. Value: $value"); } } }
1:
helper:
DEVFILTER ^global$|^PID_HZFHEM$
NOTIFYDEV global|PID_HZFHEM
event delta: 0.940000000000001
globalinit 1
last_timer 0
sleeptimer -1
timerdev PID_HZFHEM
timerevent delta: 0.940000000000001
triggerDev PID_HZFHEM
DOIF_eventa:
cmd_nr: 1
cmd: 1
cmd_event: PID_HZFHEM
cmd_1
DOIF_eventas:
cmd_nr: 1
cmd: 1
cmd_event: PID_HZFHEM
state: cmd_1
timerevents:
delta: 0.940000000000001
timereventsState:
delta: 0.940000000000001
triggerEvents:
delta: 0.940000000000001
triggerEventsState:
delta: 0.940000000000001
internals:
readings:
trigger:
uiState:
uiTable:
Attributes:
do always
room FHEM2FHEM,STELLMOTOR,_doif
Das schreibt mir das Log voll mit :
Zitat27 00:09:30.572 DOIF DF_F2F_PID error: { Log3(undef, 4, "DF_F2F_PID Event: actuation: 6"); my ($reading,$value) = split(/ /,"actuation: 6"); chop $reading; if($reading eq "actuation"){ fhem("setreading DF_F2F_PID _event actuation: 6"); fhem("setreading DF_F2F_PID _events actuation: 6"); fhem("setreading DF_F2F_PID _device PID_HZFHEM"); fhem("setreading DF_F2F_PID _value $value"); fhem("setreading DF_F2F_PID _reading $reading"); Log3(undef, 0, "DF_F2F_PID Reading: $reading"); my $order; if($value >=0 && $value <=270){ $order = "set Mischer_HZG position $value"; Log3(undef, 0, "DF_F2F_PID Order fhem(): $order"); fhem($order); }elsif($value == 0){ $order = "set Relais2_FUBO_kalt on-for-timer 20"; Log3(undef, 0, "DF_F2F_PID Order autoreset: $order"); fhem($order); }elsif($value != int($value)){ Log3(undef, 0, "DF_F2F_PID Fehler. Value: $value"); } } }: Device is locked, try again later. Your command is discarded.
2019-09-27 00:09:30.582 DOIF DF_F2F_PID error: { Log3(undef, 4, "DF_F2F_PID Event: actuation: 11"); my ($reading,$value) = split(/ /,"actuation: 11"); chop $reading; if($reading eq "actuation"){ fhem("setreading DF_F2F_PID _event actuation: 11"); fhem("setreading DF_F2F_PID _events actuation: 11"); fhem("setreading DF_F2F_PID _device PID_HZFHEM"); fhem("setreading DF_F2F_PID _value $value"); fhem("setreading DF_F2F_PID _reading $reading"); Log3(undef, 0, "DF_F2F_PID Reading: $reading"); my $order; if($value >=0 && $value <=270){ $order = "set Mischer_HZG position $value"; Log3(undef, 0, "DF_F2F_PID Order fhem(): $order"); fhem($order); }elsif($value == 0){ $order = "set Relais2_FUBO_kalt on-for-timer 20"; Log3(undef, 0, "DF_F2F_PID Order autoreset: $order"); fhem($order); }elsif($value != int($value)){ Log3(undef, 0, "DF_F2F_PID Fehler. Value: $value"); } } }: Device is locked, try again later. Your command is discarded.
2019-09-27 00:09:30.595 DOIF DF_F2F_PID error: { Log3(undef, 4, "DF_F2F_PID Event: actuation: 6"); my ($reading,$value) = split(/ /,"actuation: 6"); chop $reading; if($reading eq "actuation"){ fhem("setreading DF_F2F_PID _event actuation: 6"); fhem("setreading DF_F2F_PID _events actuation: 6"); fhem("setreading DF_F2F_PID _device PID_HZFHEM"); fhem("setreading DF_F2F_PID _value $value"); fhem("setreading DF_F2F_PID _reading $reading"); Log3(undef, 0, "DF_F2F_PID Reading: $reading"); my $order; if($value >=0 && $value <=270){ $order = "set Mischer_HZG position $value"; Log3(undef, 0, "DF_F2F_PID Order fhem(): $order"); fhem($order); }elsif($value == 0){ $order = "set Relais2_FUBO_kalt on-for-timer 20"; Log3(undef, 0, "DF_F2F_PID Order autoreset: $order"); fhem($order); }elsif($value != int($value)){ Log3(undef, 0, "DF_F2F_PID Fehler. Value: $value"); } } }: Device is locked, try again later. Your command is discarded.
2019-09-27 00:09:30.
Für mich sieht es so aus, als würde das DOIF zu oft triggern.
Eigentlich soll es auf Events vom PID_HZFHEM reagieren, der auf dem Newfhem-System läuft. Weil dann zu viele Kommandos kommen, blockt STELLMOTOR das dann ab.
Könntest du da bitte mal drüberschauen und deine Meinung äussern?
Ich versuch das dann solange mal umzubauen, damit meine Heizung wieder läuft :)
lg,
Stephan
Mit downgrade auf version 60d38d5b29c4f51e6a4f3048fdcfbf37e5dc2eb2 ist zumindest das Log erstmal wieder schmaler. Jetzt versuch ich meine Heizung wieder zur mitarbeit zu überreden ;) - mit der alten Version läufts sofort wieder wie vorher.
Ich warte dann jetzt mal auf dich und teste gerne neue Versionen.
Danke für deine Hilfe,
Stephan
Naja, das Modul soll lt. Definition auf alle Events von PID_HZFHEM reagieren, das tut es offensichtlich auch. Du könntest $device mitloggen, wenn da etwas ungleich PID_HZFHEM kommt, dann wäre was faul.
Zitat von: abc2006 am 27 September 2019, 00:19:41Hier ist ein list des DF auf meinem raspi "hzfhem":
Das sieht aber prädestiniert für den Perl-Mode aus ;)
Möglicherweise handelt es sich um diesen Sachverhalt https://wiki.fhem.de/wiki/DOIF/Tools_und_Fehlersuche#Besonderheit_des_Error-Reading
Zitat von: Per am 27 September 2019, 13:06:05
Das sieht aber prädestiniert für den Perl-Mode aus ;)
Ja, jetzt wo du es sagst :) Ich glaube aber, das Doif selbst ist noch aus Zeiten vor dem Perl-Modus... und solange es funktioniert, hatte ich nie das Bedürfnis, das zu ändern :) der Raspi langweilt sich eh :P
Zitat von: Ellert am 27 September 2019, 15:22:36
Möglicherweise handelt es sich um diesen Sachverhalt https://wiki.fhem.de/wiki/DOIF/Tools_und_Fehlersuche#Besonderheit_des_Error-Reading
Danke für den Tipp,
tatsächlich habe ich gestern herausgefunden, dass es sich um eine Art FHEM2FHEM-Schleife handelte. Da die beiden Regexe unterschiedlich waren, ist mir nicht aufgefallen, dass beide auf das gleiche Event triggern. Ein Rätsel ist mir aber noch, warum es dann erst nach dem DOIF-Update Fehler produziert hat...
Danke euch, mittlerweile läuft alles (was ich im Blick habe) wieder stabil :)
Stephan
Zitat von: Damian am 24 September 2019, 15:04:18
Die angehängte Version sollte jetzt auch mit FHEM2FHEM klarkommen.
Edit: neue Version eingecheckt
Hallo Damian, ich habe heute seit einiger Zeit (ca. 1-2mon) wieder ein Update gemacht und wieder das gleiche Problem wie damals, das doif nicht mehr auf FHEM2FHEM Triggert. Hast du eine Idee?
Zitat von: hackepeter am 27 Februar 2022, 12:56:29
Hallo Damian, ich habe heute seit einiger Zeit (ca. 1-2mon) wieder ein Update gemacht und wieder das gleiche Problem wie damals, das doif nicht mehr auf FHEM2FHEM Triggert. Hast du eine Idee?
Schau mal hier: https://forum.fhem.de/index.php/topic,103401.msg1209234.html#msg1209234
Ich hoffe, du kannst die fehlenden Devices bei dir anlegen.
Danke, nach anlegen der Dummys funktioniert es.