Ich habe ein Problem dessen Ursache ich in DOIF bzw. meiner falschen Nutzung desselben vermute. Dabei bin ich mir sicher, dass das ganze schon mal in ähnlicher Version funktionierte.
Das ganze habe ich nun die letzten Tage in unterschiedlichster Zusammensetzung probiert, bis ich heute eine wesentlich komplexere Abfragefolge auf dieses Minimum reduziert habe. Daher habe ich den Verdacht, dass mein DOIF hier nicht getriggert wird, obwohl im Eventmonitor ein Ereignis zu sehen ist.
Zunächst habe ich einen dummy PV_Gartenhaus_Cubie dessen Inhalt mittels FHEM2FHEM und notify aus einer anderen Instanz von FHEM befüllt wird. Das erzeugt mir auch das folgende im Eventmonitor:
2018-05-23 15:24:47.154 dummy PV_Gartenhaus_Cubie Spannung_B: 13.82 Ladestrom_5Min: 0.3412 Tagesertrag: 130.00 Tagesverbrauch: 45.9913782776795 Laststrom: 0.70 Max._Tagesleistung: 33.00 Ladezustand: 5 Panelspannung: 18.19 Paneleistung: 14.00 Power: 4.56
2018-05-23 15:24:47.154 dummy PV_Gartenhaus_Cubie Spannung_B: 13.82
2018-05-23 15:24:47.154 dummy PV_Gartenhaus_Cubie Ladestrom_5Min: 0.34
2018-05-23 15:24:47.154 dummy PV_Gartenhaus_Cubie Tagesertrag: 130.00
2018-05-23 15:24:47.154 dummy PV_Gartenhaus_Cubie Tagesverbrauch: 45.99
2018-05-23 15:24:47.154 dummy PV_Gartenhaus_Cubie Laststrom: 0.70
2018-05-23 15:24:47.154 dummy PV_Gartenhaus_Cubie Max_Tagesleistung: 33.00
2018-05-23 15:24:47.154 dummy PV_Gartenhaus_Cubie Ladezustand: 5
2018-05-23 15:24:47.154 dummy PV_Gartenhaus_Cubie Panelspannung: 18.19
2018-05-23 15:24:47.154 dummy PV_Gartenhaus_Cubie Panelleistung: 14.00
2018-05-23 15:24:47.154 dummy PV_Gartenhaus_Cubie Power: 4.56
Das zugehörige Listing (etwas zeitversetzt, daher die abweichenden Werte):
Internals:
NAME PV_Gartenhaus_Cubie
NR 1599
STATE Spannung_B: 13.83 Ladestrom_5Min: 0.331433333333329 Tagesertrag: 140.00 Tagesverbrauch: 46.3732604165685 Laststrom: 0.70 Max._Tagesleistung: 33.00 Ladezustand: 5 Panelspannung: 18.21 Paneleistung: 14.00 Power: 4.29
TYPE dummy
READINGS:
2018-05-23 15:29:47 Ladestrom_5Min 0.33
2018-05-23 15:29:47 Ladezustand 5
2018-05-23 15:29:47 Laststrom 0.70
2018-05-23 15:29:47 Max_Tagesleistung 33.00
2018-05-23 15:29:47 Panelleistung 14.00
2018-05-23 15:29:47 Panelspannung 18.21
2018-05-23 15:29:47 Power 4.29
2018-05-23 15:29:47 Spannung_B 13.83
2018-05-23 15:29:47 Tagesertrag 140.00
2018-05-23 15:29:47 Tagesverbrauch 46.37
2018-05-23 15:29:47 state Spannung_B: 13.83 Ladestrom_5Min: 0.331433333333329 Tagesertrag: 140.00 Tagesverbrauch: 46.3732604165685 Laststrom: 0.70 Max._Tagesleistung: 33.00 Ladezustand: 5 Panelspannung: 18.21 Paneleistung: 14.00 Power: 4.29
Attributes:
Damit sollten doch die Voraussetzungen erfüllt sein, mittels einer Änderung eines Readings dieses dummy ein DOIF zu Triggern, beispielsweise folgendes:
define DI_Luefterschaltung_1 DOIF ([PV_Gartenhaus_Cubie:Ladezustand] == 5 and [?PV_Gartenhaus_Cubie:Spannung_B] > 13.5 and [?HS_Luefterschaltung] ne "off")(set Luefterschaltung 5)
mit dem Listing:
Internals:
DEF ([PV_Gartenhaus_Cubie:Ladezustand] == 5 and [?PV_Gartenhaus_Cubie:Spannung_B] > 13.5 and [?HS_Luefterschaltung] ne "off")(set Luefterschaltung 5)
MODEL FHEM
NAME DI_Luefterschaltung_1
NR 1532
NTFY_ORDER 50-DI_Luefterschaltung_1
STATE ???
TYPE DOIF
READINGS:
2018-05-23 15:34:47 Device PV_Gartenhaus_Cubie
Regex:
condition:
0 ReadingValDoIf($hash,'PV_Gartenhaus_Cubie','Ladezustand') == 5 and ReadingValDoIf($hash,'PV_Gartenhaus_Cubie','Spannung_B') > 13.5 and InternalDoIf($hash,'HS_Luefterschaltung','STATE') ne "off"
devices:
0 PV_Gartenhaus_Cubie
all PV_Gartenhaus_Cubie
do:
0:
0 set Luefterschaltung 5
1:
helper:
DOIF_Readings_events
DOIF_eventas
event Spannung_B: 13.83 Ladestrom_5Min: 0.329533333333332 Tagesertrag: 140.00 Tagesverbrauch: 46.7529512221238 Laststrom: 0.70 Max._Tagesleistung: 33.00 Ladezustand: 5 Panelspannung: 18.08 Paneleistung: 14.00 Power: 4.56
globalinit 1
last_timer 0
sleeptimer -1
triggerDev PV_Gartenhaus_Cubie
triggerEvents:
Spannung_B: 13.83 Ladestrom_5Min: 0.329533333333332 Tagesertrag: 140.00 Tagesverbrauch: 46.7529512221238 Laststrom: 0.70 Max._Tagesleistung: 33.00 Ladezustand: 5 Panelspannung: 18.08 Paneleistung: 14.00 Power: 4.56
Spannung_B: 13.83
Ladestrom_5Min: 0.33
Tagesertrag: 140.00
Tagesverbrauch: 46.75
Laststrom: 0.70
Max_Tagesleistung: 33.00
Ladezustand: 5
Panelspannung: 18.08
Panelleistung: 14.00
Power: 4.56
triggerEventsState:
state: Spannung_B: 13.83 Ladestrom_5Min: 0.329533333333332 Tagesertrag: 140.00 Tagesverbrauch: 46.7529512221238 Laststrom: 0.70 Max._Tagesleistung: 33.00 Ladezustand: 5 Panelspannung: 18.08 Paneleistung: 14.00 Power: 4.56
internals:
0 HS_Luefterschaltung:STATE
all HS_Luefterschaltung:STATE
itimer:
perlblock:
readings:
0 PV_Gartenhaus_Cubie:Ladezustand
all PV_Gartenhaus_Cubie:Ladezustand
trigger:
uiState:
uiTable:
Attributes:
Leider passiert aber gar nichts. Ändere ich das ganze in der Form, dass ich einen tatsächlichen Schalter zum Triggern verwende, dann geht das ganze.
Ich vermute, dass Ladezustand kein Event erzeugt. Mit der aktuellen Version von DOIF musst du in diesem Fall das Attribut checkReadingEvent 0 setzen, siehe https://forum.fhem.de/index.php/topic,82523.0.html
Edit: Ich sehe gerade, dass Ladezustand ein Event produziert.
Du musst auf jeden Fall die aktuelle DOIF-Version verwenden, dann sollte es auch ohne checkReadingEvent funktionieren.
Ok, habe ich eingebaut (0 ist richtig?). Mal sehen, was bei Sonnenuntergang passiert👍.
EDIT (ohne Deine Ergänzung gelesen zu haben, also mit "altem (?)" DOIF und mit Attribut checkReadingEvent 0)
Ist alles wieder gut. Ich habe dieses Attribut eingebaut und nun hat das zumindest in einem ähnlich gelagerten DOIF funktioniert. In diesem habe ich nicht den Ladezustand sondern die Batteriespannung als Reading aus dem gleichen dummy verwendet. Wenn es da geht, wird es hoffentlich auch beim anderen Reading gehen. Leider muss ich jetzt warten bis genau dieser Zustand irgendwann eintritt, um das bestätigen zu können.
EDIT (nach dem Lesen Deiner letzten Ergänzung)
Ich habe die letzte Woche ein Update von FHEM gemacht. Ist das dann schon die neue Version von DOIF? Und wenn es jetzt mit Attribut funktioniert, macht es dann Sinn, dieses wieder zu entfernen?
Leider treten die Ereignisse nur recht selten ein, daher sind Versuche diesbezüglich recht langwierig.