DOIF triggert nicht auf dummy-Ereignis

Begonnen von duke-f, 23 Mai 2018, 15:47:16

Vorheriges Thema - Nächstes Thema

duke-f

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.
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

Damian

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

duke-f

#2
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.
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite