[GELÖST] Dritter set Befehl wird im DOIF Reading nicht mehr aktualisiert

Begonnen von Burny4600, 17 Juni 2018, 09:56:54

Vorheriges Thema - Nächstes Thema

Burny4600

Seit kurzer Zeit habe ich den Fehler das der dritte set Befehl (set OG1_BK_MA_LOCK UNLOCK) nicht mehr unter dem DOIF Reading aktualisiert wird, wodurch das DOIF sich selbst blockiert.
list OG1_BK_MAST
Internals:
   CFGFN      /media/hdd/fhem/myprogram/markise_rasp01.pm
   DEF        ([M_OG1_BAL_P:desired_position] != 100 and [OG1_BK_MA_LOCK] ne "LOCK" and
[OG1_BK_SSSS_MD] eq "HELL" and
[ZOBRMD] eq "TROCKEN" and [ZOBWM100D] eq "WINDSTILL" and [bmp180:temperatureof] > 18)
(set OG1_BK_MA_LOCK LOCK)(set M_OG1_BAL_P position 100)(set OG1_BK_MA_LOCK UNLOCK)
DOELSEIF
([M_OG1_BAL_P:desired_position] != 0 and [OG1_BK_MA_LOCK] ne "LOCK" and
([ZOBRMD] eq "REGEN" or [ZOBWM100D] eq "WIND"))
(set OG1_BK_MA_LOCK LOCK)(set M_OG1_BAL_P position 0)(set OG1_BK_MA_LOCK UNLOCK)
DOELSEIF
([M_OG1_BAL_P:desired_position] != 0 and [OG1_BK_MA_LOCK] ne "LOCK" and
[OG1_BK_SSSS_MD] eq "DUNKEL")
(set OG1_BK_MA_LOCK LOCK)(set M_OG1_BAL_P position 0)(set OG1_BK_MA_LOCK UNLOCK)
   MODEL      FHEM
   NAME       OG1_BK_MAST
   NR         5637
   NTFY_ORDER 50-OG1_BK_MAST
   STATE      P100
   TYPE       DOIF
   READINGS:
     2018-06-17 09:45:22   Device          OG1_BK_SSSS_MD
     2018-06-17 09:45:20   cmd             1.3
     2018-06-17 09:45:20   cmd_event       set_cmd_1
     2018-06-17 09:45:20   cmd_nr          1
     2018-06-17 09:45:20   cmd_seqnr       3
     2018-06-17 09:44:46   e_M_OG1_BAL_P_desired_position 100
     2018-06-17 09:44:45   e_OG1_BK_MA_LOCK_STATE LOCK
     2018-06-17 09:45:22   e_OG1_BK_SSSS_MD_STATE HELL
     2018-06-17 09:45:17   e_bmp180_temperatureof 22.3
     2018-06-17 09:44:25   mode            enabled
     2018-06-17 09:45:20   state           cmd_1
     2018-06-17 09:45:20   wait_timer      no timer
   Regex:
   attrtimer:
     wait:
       0:
         0
         0
         35
       1:
         0
         0
         35
       2:
         600
         0
         35
     waitdel:
   condition:
     0          ReadingValDoIf($hash,'M_OG1_BAL_P','desired_position') != 100 and InternalDoIf($hash,'OG1_BK_MA_LOCK','STATE') ne "LOCK" and  InternalDoIf($hash,'OG1_BK_SSSS_MD','STATE') eq "HELL" and  InternalDoIf($hash,'ZOBRMD','STATE') eq "TROCKEN" and InternalDoIf($hash,'ZOBWM100D','STATE') eq "WINDSTILL" and ReadingValDoIf($hash,'bmp180','temperatureof') > 18
     1          ReadingValDoIf($hash,'M_OG1_BAL_P','desired_position') != 0 and InternalDoIf($hash,'OG1_BK_MA_LOCK','STATE') ne "LOCK" and (InternalDoIf($hash,'ZOBRMD','STATE') eq "REGEN" or InternalDoIf($hash,'ZOBWM100D','STATE') eq "WIND")
     2          ReadingValDoIf($hash,'M_OG1_BAL_P','desired_position') != 0 and InternalDoIf($hash,'OG1_BK_MA_LOCK','STATE') ne "LOCK" and  InternalDoIf($hash,'OG1_BK_SSSS_MD','STATE') eq "DUNKEL"
   devices:
     0           M_OG1_BAL_P OG1_BK_MA_LOCK OG1_BK_SSSS_MD ZOBRMD ZOBWM100D bmp180
     1           M_OG1_BAL_P OG1_BK_MA_LOCK ZOBRMD ZOBWM100D
     2           M_OG1_BAL_P OG1_BK_MA_LOCK OG1_BK_SSSS_MD
     all         M_OG1_BAL_P OG1_BK_MA_LOCK OG1_BK_SSSS_MD ZOBRMD ZOBWM100D bmp180
   do:
     0:
       0          set OG1_BK_MA_LOCK LOCK
       1          set M_OG1_BAL_P position 100
       2          set OG1_BK_MA_LOCK UNLOCK
     1:
       0          set OG1_BK_MA_LOCK LOCK
       1          set M_OG1_BAL_P position 0
       2          set OG1_BK_MA_LOCK UNLOCK
     2:
       0          set OG1_BK_MA_LOCK LOCK
       1          set M_OG1_BAL_P position 0
       2          set OG1_BK_MA_LOCK UNLOCK
     3:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      HELL
     globalinit 1
     last_timer 0
     sleepdevice set_cmd_1
     sleepsubtimer -1
     sleeptimer -1
     triggerDev OG1_BK_SSSS_MD
     triggerEvents:
       HELL
     triggerEventsState:
       state: on
   internals:
     0           OG1_BK_MA_LOCK:STATE OG1_BK_SSSS_MD:STATE ZOBRMD:STATE ZOBWM100D:STATE
     1           OG1_BK_MA_LOCK:STATE ZOBRMD:STATE ZOBWM100D:STATE
     2           OG1_BK_MA_LOCK:STATE OG1_BK_SSSS_MD:STATE
     all         OG1_BK_MA_LOCK:STATE OG1_BK_SSSS_MD:STATE ZOBRMD:STATE ZOBWM100D:STATE
   itimer:
   readings:
     0           M_OG1_BAL_P:desired_position bmp180:temperatureof
     1           M_OG1_BAL_P:desired_position
     2           M_OG1_BAL_P:desired_position
     all         M_OG1_BAL_P:desired_position bmp180:temperatureof
   trigger:
   uiState:
   uiTable:
Attributes:
   alias      OG1 Balkon - Markise - Automatic
   checkReadingEvent 0
   devStateIcon initialize.*:control_minus P100:fts_sunblind P0:fts_sunblind_0
   eventMap   cmd_1:P100 cmd_1_1:P100 cmd_1_2:P100 cmd_1_3:P100
cmd_2:P0 cmd_2_1:P0 cmd_2_2:P0 cmd_2_3:P0
cmd_3:P0 cmd_3_1:P0 cmd_3_2:P0 cmd_3_3:P0
   group      OG1 Balkon - Markise
   icon       fts_sunblind
   room       OG1-Balkon,OG1-Kueche,Rolllaeden
   sortby     08
   wait       0,0,35:0,0,35:600,0,35

Im dummy sieht man aber das die Verriegelung aber gesetzt wird.
list OG1_BK_MA_LOCK
Internals:
   CFGFN      /media/hdd/fhem/myprogram/markise_rasp01.pm
   NAME       OG1_BK_MA_LOCK
   NR         5635
   STATE      UNLOCK
   TYPE       dummy
   READINGS:
     2018-06-17 09:45:20   state           off
Attributes:
   alias      OG1 Balkon - Markise - Automatic Sperre
   devStateIcon LOCK:time_manual_mode@red UNLOCK:time_manual_mode@0CFB0C
   eventMap   on:LOCK off:UNLOCK
   group      OG1 Balkon - Markise
   icon       fts_sunblind
   room       OG1-Balkon,OG1-Kueche,Rolllaeden
   sortby     07

Das DOIF an sich funktioniert, nur das eine Reading wird unter diesem DOIF nicht aktualisiert.
Was eigenartig daran ist, weil es nicht bei jedem gleich aufgebauten DOIF der Fall ist.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

amenomade

#1
Seit kurzer Zeit? M.W. ist es immer so gewesen:
Zitat von: CommandRefTriggerung durch selbst ausgelöste Events
Standardmäßig unterbindet das DOIF-Modul Selbsttriggerung. D. h. das Modul reagiert nicht auf Events, die es selbst direkt oder indirekt auslöst. Dadurch werden Endlosschleifen verhindert.
https://fhem.de/commandref_DE.html#DOIF_selftrigger

Die Readings e_etwas sind die triggernde Events. Die Befehle "set OG1_BK_MA_LOCK LOCK/UNLOCK" in den Zweigen des DOIFs triggern nicht den DOIF.

OG1_BK_MA_LOCK wird aber richtig auf UNLOCK gesetzt, und das sollte den DOIF nicht blockieren: beim nächsten triggern (z.B. wegen bmp temperatur), wir die Bedingung "[OG1_BK_MA_LOCK] ne "LOCK"" richtig bewertet (wahr)

Wenn set OG1_BK_MA_LOCK UNLOCK triggern würde, würde das DOIF wieder die Bedingungen bewerten, und die Reihenfolge von Befehlen ausführen. Und das ohne Ende.

Mich wundert eher 2018-06-17 09:44:45   e_OG1_BK_MA_LOCK_STATE LOCK. Hast Du hier was manuell gesetzt?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Burny4600

set OG1_BK_MA_LOCK UNLOCK wird nur bei einem Neustart von FHEM gesetzt und wird nicht zum Triggern benötigt.
set OG1_BK_MA_LOCK LOCK/UNLOCK dient nur als Verriegelung.
Ebenso wird e_M_OG1_BAL_P_desired_position nicht zum Triggern benötigt sondern nur als Bedienung.

Nach deinem Hinweis, wenn ich es richtig verstanden habe, würde eigentlich nur das Attribut selftrigger wait und wait 0,0,35:0,0,35:600,0,35 ausreichend sein.
e_bmp180_temperatureof, e_OG1_BK_SSSS_MD_STATE, e_ZOBRMD_STATE,e_ZOBWM100D_STATE lösen ohnehin einen Trigger aus.

Es ist mir nur ein Rätsel das es früher funktioniert hatte.
Ich werde mir nochmal den Ablauf testen.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

Per

Zitat von: Burny4600 am 17 Juni 2018, 19:43:51Ebenso wird e_M_OG1_BAL_P_desired_position nicht zum Triggern benötigt sondern nur als Bedienung.
Dann stell doch nen Fragezeichen davor.

Burny4600

#4
ZitatDann stell doch nen Fragezeichen davor.
Danke für den Hinweis mit dem Fragezeichen.
Das habe ich bisher übersehen.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT