DOIF: seltsamer Fehler bei Rolladensteuerung

Begonnen von Spartacus, 15 Januar 2016, 14:47:45

Vorheriges Thema - Nächstes Thema

Spartacus

Hallo zusammen,
ich weiß mir in diesem Fall nicht mehr zu helfen und hoffe auf einen Tipp:

Hier zunächst mein DOIF:
Internals:
   CFGFN      Config/01-Wohnzimmer.cfg
   DEF        ([?switch.di.02.EG.wz.RO.dum] eq "on" and
(([{sunrise_abs("HORIZON=-2",0,"06:30","08:00")}|12345] and
  ![?state.NRW.Ferien.dum] and [?hl.01.Feiertag:today] eq "none") or
([{sunrise_abs("HORIZON=-2",0,"07:30","08:30")}])))
  (set EG.wz.RO.*:FILTER=STATE!=open auf)
DOELSEIF
([switch.di.02.EG.wz.RO.dum] eq "off")
DOELSE
   NAME       di.02.EG.wz.RO
   NR         859
   NTFY_ORDER 50-di.02.EG.wz.RO
   STATE      on
   TYPE       DOIF
   Readings:
     2016-01-15 08:19:26   cmd_event       timer_2
     2016-01-15 08:19:26   cmd_nr          1
     2016-01-15 08:19:26   state           on
     2016-01-15 08:00:00   timer_1_c1      16.01.2016 08:00:00|12345
     2016-01-15 08:19:26   timer_2_c1      16.01.2016 08:18:37
   Condition:
     0          InternalDoIf('switch.di.02.EG.wz.RO.dum','STATE','') eq "on" and ((DOIF_time_once($hash,$hash->{timer}{0},$wday,"12345") and   !InternalDoIf('state.NRW.Ferien.dum','STATE','') and ReadingValDoIf('hl.01.Feiertag','today','') eq "none") or (DOIF_time_once($hash,$hash->{timer}{1},$wday,"")))
     1          InternalDoIf('switch.di.02.EG.wz.RO.dum','STATE','') eq "off"
   Days:
     0          12345
   Devices:
     1           switch.di.02.EG.wz.RO.dum
     all         switch.di.02.EG.wz.RO.dum
   Do:
     0:
       0          set EG.wz.RO.*:FILTER=STATE!=open auf
     1:
       0
     2:
       0
   Helper:
     globalinit 1
     last_timer 2
     sleeptimer -1
   Internals:
     1           switch.di.02.EG.wz.RO.dum:STATE
     all         switch.di.02.EG.wz.RO.dum:STATE
   Itimer:
   Readings:
   Realtime:
     0          08:00:00
     1          08:18:37
   State:
   Time:
     0          {sunrise_abs("HORIZON=-2",0,"06:30","08:00")}
     1          {sunrise_abs("HORIZON=-2",0,"07:30","08:30")}
   Timecond:
     0          0
     1          0
   Timer:
     0          0
     1          0
   Timerfunc:
   Timers:
     0           0  1
Attributes:
   alias      autom. Rolladen öffnen
   cmdState   on|off|on
   devStateIcon .*on:general_an@lightgreen .*off:general_aus@red
   do         always
   group      Scripte
   icon       fts_shutter_up
   room       01-Wohnzimmer
   sortby     01


Laut DOIF sollen die Rolladen (links und rechts) wektags spätestens um 08:00 Uhr öffnen und an Ferientagen, am WE oder Feiertagen um 08:30 Uhr (bzw. früher, wenn sunrise triggert). Das funktioniert scheinbar auch! Allerdings kommt es von Zeit zu Zeit vor (komischerweise nur freitags, laut Log am 08.01. und am 15.01), dass der Rolladen wieder herunterfährt, nachdem er zuvor um 08:00 richtigerweise geöffnet wurde. Offenbar läuft hier etwas bei dem Trigger auf or
([{sunrise_abs("HORIZON=-2",0,"07:30","08:30")}])))
  (set EG.wz.RO.*:FILTER=STATE!=open auf))
falsch. Es ist aufgrund der Uhrzeit eindeutig demTrigger auf "sunrise" zuzuordnen.

Es ist aber nirgends ein "shutdown/ab" - Kommando in Verbindung mit einem "sunrise" verarbeitet. Es gibt zwar ein shutdown-Kommando für die Rolladen, welches aber von einem anderen Device (Gartenbeleuchtungsautomatik) abhängt.

Shutdown-DOIF:

Internals:
   CFGFN      Config/01-Wohnzimmer.cfg
   DEF        ([?switch.di.02.EG.wz.RO.dum] eq "on" and [?help.01.EG.wz.RO.dum] eq "on" and [GA.ss.SA.Licht] eq "off")
(set help.01.EG.wz.RO.dum off, set EG.wz.RO.* closes)
DOELSEIF
([switch.di.02.EG.wz.RO.dum] eq "off")
DOELSE
   NAME       di.01.EG.wz.RO
   NR         850
   NTFY_ORDER 50-di.01.EG.wz.RO
   STATE      on
   TYPE       DOIF
   Readings:
     2016-01-14 22:00:00   Device          GA.ss.SA.Licht
     2016-01-14 22:02:01   cmd_event       GA.ss.SA.Licht
     2016-01-14 22:02:01   cmd_nr          1
     2016-01-14 22:00:00   e_GA.ss.SA.Licht_STATE off
     2015-12-23 09:58:23   e_switch.di.02.EG.wz.RO.dum_STATE on
     2016-01-14 22:02:01   state           on
     2016-01-14 22:02:00   wait_timer      no timer
   Condition:
     0          InternalDoIf('switch.di.02.EG.wz.RO.dum','STATE','') eq "on" and InternalDoIf('help.01.EG.wz.RO.dum','STATE','') eq "on" and InternalDoIf('GA.ss.SA.Licht','STATE','') eq "off"
     1          InternalDoIf('switch.di.02.EG.wz.RO.dum','STATE','') eq "off"
   Devices:
     0           GA.ss.SA.Licht
     1           switch.di.02.EG.wz.RO.dum
     all         GA.ss.SA.Licht switch.di.02.EG.wz.RO.dum
   Do:
     0:
       0          set help.01.EG.wz.RO.dum off, set EG.wz.RO.* closes
     1:
       0
     2:
       0
   Helper:
     globalinit 1
     last_timer 0
     sleepdevice GA.ss.SA.Licht
     sleepsubtimer -1
     sleeptimer -1
   Internals:
     0           GA.ss.SA.Licht:STATE
     1           switch.di.02.EG.wz.RO.dum:STATE
     all         GA.ss.SA.Licht:STATE switch.di.02.EG.wz.RO.dum:STATE
   Itimer:
   Readings:
   State:
   Trigger:
Attributes:
   alias      autom. Rolladen schließen
   cmdState   on|off|on
   devStateIcon .*on:general_an@lightgreen .*off:general_aus@red
   do         resetwait
   group      Scripte
   icon       fts_shutter_down
   room       01-Wohnzimmer
   wait       120:0:0


Diese beiden Kommandos sind die Einzigen, die den Rolladen steuern!
Da beide Aktoren gleichermassen reagieren, halte ich auch einen Aktorfehler für ausgeschlossen.

Hat jemand eine Idee, wo ich suchen soll? Ich kann mir das nicht erklären. Den einzigen Zusammenhang, den ich erkenne, ist, dass dies offenbar nur freitags passiert!

Danke und Gruß,
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Ellert

Ist das Gartenlicht auch über sunrise gesteuert? Wenn ja, dann könnte wait 120 das verzögerte Runterfahren bewirken.

Spartacus

Hi,
im Prinzip ist Gartenlicht über sunrise getriggert (das ist das dummy device "help.Tageslicht.dum", welches in Abhängigkeit von sunrise auf "hel" bzw. "dunkel" gesetzt wird). Aber das Wait 120 wird gar nicht ausgeführt. Der Rolladen fährt quasi zeitgleich mit dem sunrise hoch. Das zeigen die Uhrzeiten im Log.

Ich habe absolut keinen Plan, was da los ist. Ich versuche gerade die Logs auszuwerten, aber ich kann mir keinen Reim darauf machen....das Komische ist, das das vor genau einer Woche also am 08.01. völlig identisch war!

Zeitgleich zum Sonnenaufgang fährt der Rolladen hoch. Kann es sein, dass irgendwo in fhem noch ein altes Device hängt, was in der Oberfläche nicht sichtbar ist und imn Hintergrund noch läuft? Wie kann man das finden?

Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Spartacus

Hallo,
nochmals ich!

Ich vermute es ist ein enocean Ansteuerproblem! Im fhem.log finde ich diese Einträge (wobei 08:19:26, die sunrise-Zeit ist; der doppelte opens-Befehl ist gewollt und wird gesendet, wenn der Aktor beim ersten Senden nicht quittiert. Das deutet auf ein Empfangsproblem hin, sollte hier aber nicht das Thema sein, da auch der rechte Aktor, ohne Empfangsprobleme, ebenfalls den falschen Befehl versteht, das ist im Aktor.log auch zu sehen):
2016.01.15 08:00:00 3: EnOcean set EG.wz.RO.links opens
2016.01.15 08:00:00 3: EnOcean set EG.wz.RO.rechts opens
2016.01.15 08:01:40 3: EnOcean set EI.ss.SA.Licht off
2016.01.15 08:08:24 3: EnOcean set EI.ss.SA.Licht on
2016.01.15 08:08:24 3: EnOcean set EI.ss.SA.Licht on
2016.01.15 08:11:21 3: EnOcean set EI.ss.SA.Licht off
2016.01.15 08:15:00 3: EnOcean set KG.ss.SA.ZirkuPumpe off
2016.01.15 08:19:26 3: EnOcean set GA.ss.SA.Licht off
2016.01.15 08:19:26 3: EnOcean set EG.wz.RO.links opens
2016.01.15 08:19:26 3: EnOcean set EG.wz.RO.rechts opens
2016.01.15 08:19:27 3: EnOcean set EG.wz.RO.links opens
2016.01.15 08:19:28 3: EnOcean set EG.wz.RO.links opens


Im Aktor-Log sieht das so aus:
2016-01-15_08:00:00 EG.wz.RO.rechts shutterState: auf
2016-01-15_08:00:02 EG.wz.RO.rechts position: 49
2016-01-15_08:00:04 EG.wz.RO.rechts position: 39
2016-01-15_08:00:07 EG.wz.RO.rechts position: 29
2016-01-15_08:00:10 EG.wz.RO.rechts position: 19
2016-01-15_08:00:12 EG.wz.RO.rechts position: 9
2016-01-15_08:00:16 EG.wz.RO.rechts position: 0
2016-01-15_08:00:16 EG.wz.RO.rechts endPosition: open
2016-01-15_08:00:16 EG.wz.RO.rechts open
2016-01-15_08:00:16 EG.wz.RO.rechts shutterState: stopped
2016-01-15_08:19:26 EG.wz.RO.rechts endPosition: not_reached
2016-01-15_08:19:26 EG.wz.RO.rechts not_reached
2016-01-15_08:19:26 EG.wz.RO.rechts shutterState: ab
2016-01-15_08:19:29 EG.wz.RO.rechts position: 10
2016-01-15_08:19:31 EG.wz.RO.rechts position: 20
2016-01-15_08:19:34 EG.wz.RO.rechts position: 30
2016-01-15_08:19:36 EG.wz.RO.rechts position: 41
2016-01-15_08:19:36 EG.wz.RO.rechts shutterState: stopped


Keine Ahnung, ob meine Vermutung richtig ist, aber:

  • im fhem.log steht, was gesendet wird
  • in der Aktor.log steht, was der Aktor verstanden und quittiert hat

Wenn das so zutrifft, dann muss ich mal im enocean Forum weiter recherchieren!

Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Ellert

2016-01-15_08:00:16 EG.wz.RO.rechts open, Aktor sagt Rolladen geöffnet

2016.01.15 08:19:26 3: EnOcean set GA.ss.SA.Licht off, Das Gartenlicht wird ausgeschaltet

Das DOIF "di.01.EG.wz.RO" wird getriggert durch "[GA.ss.SA.Licht] eq "off"" und schaltet mit "set EG.wz.RO.* closes" den Rolladen auf runterfahren.

016-01-15_08:19:26 EG.wz.RO.rechts shutterState: ab, Aktor sagt Ich fahre runter

Interpretiere ich das richtig?

Spartacus

#5
Hallo Ellert,
Das habe ich zunächst auch vermutet, aber:
1. "?help.01.EG.wz.RO.dum" ist zu diesem Zeitpunkt definitiv "off" ( das Modul triggert nicht, die Zeiten und das Datum im Frontend des DOIFs stehen auf gestern 22:02Uhr)
2. DIe Zeitverzögerungen müsste greifen!
3. Warum passiert das nicht täglich?

Oder sehe ich das falsch?
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Ellert

Ja, da muss ich Dir zustimmen, aber beide Zeiten  liegen bei 08:19:26 verdächtig zeitgleich . Es war ein erster Versuch zum Aufwärmen.

Es gab vom DOIF in letzter Zeit Updates, ist Dein DOIF auf dem aktuellen Stand?

ZitatKann es sein, dass irgendwo in fhem noch ein altes Device hängt, was in der Oberfläche nicht sichtbar ist und imn Hintergrund noch läuft? Wie kann man das finden?

Du kannst die fhem.cfg, die 99_My_Utils.pm oder wo auch immer Du noch Code eingebaut hast, nach EG.wz.RO oder anderen damit zusammenhängenden Begriffen durchsuchen und schauen, ob es irgendwo einen verdächtigen set-Befehl gibt.

Ist die codemirror-Erweiterung installiert? Dann kannst Du mit Strg-F im Editor suchen und es werden alle Fundstellen markiert, s. http://forum.fhem.de/index.php/topic,45373.msg371668.html#msg371668

Du könntest auch mit einem notify auf verdächtige Ereignisse lauschen
define lauschen notify .* {Log 1, "Name: $NAME, Ereignis: $EVENT"}

Mit einer entsprechenden Regexp und dem richtigen Zeitpunkt, wird das Logfile auch nicht zu gross.

Mehr fällt mir erstmal nicht ein.





Spartacus

Hallo,
Ich werde Deine Tipps mal umsetzen, und mich melden,
Parallel werde ich mal Klaus im enocean Forum bitten, mal einen Blick auf die Sache zu werfen!
Vielen Dank schon mal!,
Christiwn
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R