RandomTimer - neues Modul

Begonnen von Dietmar63, 28 Juli 2013, 15:52:40

Vorheriges Thema - Nächstes Thema

Dietmar63

Zitat von: oelidoc am 08 Dezember 2015, 18:32:57
Also das Problem ist und bleibt, dass die RT zu Beginn ihrer Laufzeit nicht oder nicht zuverlässig die entsprechenden Geräte einschalten. Und wenn man den Switchmode so eingestellt hat, dass das Licht häufiger an bleibt als aus geht, so bleibt es so lange dunkel, bis der RT einmal aus und dann wieder eingeschaltet hat. Und das ist mir für einen Einbruchschutz meist zu spät....
Hat denn keiner eine Idee woran dies Verhalten liegt bzw. wie ich es abstellen könnte?

Gruß

oelidoc  (langsam verzweifelt....)

Das ist eigentlich sogar so Absicht. Ich will nicht, dass am Startzeit Punkt irgendjemand erkennen kann, dass eine Art Agent immer zur gleichen Zeit die Lampe ein/ausschaltet. Außerdem ist intern der Algorithmus verändert worden, dass ein RT auch on the fly(presence)  gestartet werden kann. Die erste Schaltung erfolgt im DefinitionsZeitraum + (secondsToSwitch+-10%)/2.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

oelidoc

#316
Auch auf die Gefahr hin zu nerven:
Zitat von: Dietmar63 am 09 Dezember 2015, 01:42:23
Das ist eigentlich sogar so Absicht. Ich will nicht, dass am Startzeit Punkt irgendjemand erkennen kann, dass eine Art Agent immer zur gleichen Zeit die Lampe ein/ausschaltet. Außerdem ist intern der Algorithmus verändert worden, dass ein RT auch on the fly(presence)  gestartet werden kann. Die erste Schaltung erfolgt im DefinitionsZeitraum + (secondsToSwitch+-10%)/2.
Das ist soweit alles verstanden und auch o.k.
Aber: meine RT starten und gehen fälschlicherweise von "Zustand:on" aus obwohl das Device "off" ist: 2015.12.09 16:09:44 3: [zufall_wohnzimmer_abends] starting RandomTimer on Dimmer_Wohnzimmer: 16:09:44(09) - 21:32:00(09)
2015.12.09 16:09:44 4: [zufall_wohnzimmer_abends] Zustand:on sigma:50 random:534->
2015.12.09 16:09:44 5: [zufall_wohnzimmer_abends] removing Timer: zufall_wohnzimmer_abends_Exec
2015.12.09 16:09:44 5: [zufall_wohnzimmer_abends] setting  Timer: zufall_wohnzimmer_abends_Exec 2015-12-09 16:13:44
2015.12.09 16:11:24 3: [zufall_kueche_abends] starting RandomTimer on Dimmer_Kueche: 16:11:24(09) - 21:36:00(09)
2015.12.09 16:13:44 4: [zufall_wohnzimmer_abends] Zustand:on sigma:50 random:779->
2015.12.09 16:13:44 5: [zufall_wohnzimmer_abends] removing Timer: zufall_wohnzimmer_abends_Exec
2015.12.09 16:13:44 5: [zufall_wohnzimmer_abends] setting  Timer: zufall_wohnzimmer_abends_Exec 2015-12-09 16:17:53
2015.12.09 16:17:53 4: [zufall_wohnzimmer_abends] Zustand:on sigma:50 random:511->
2015.12.09 16:17:53 5: [zufall_wohnzimmer_abends] removing Timer: zufall_wohnzimmer_abends_Exec
2015.12.09 16:17:53 5: [zufall_wohnzimmer_abends] setting  Timer: zufall_wohnzimmer_abends_Exec 2015-12-09 16:21:52
2015.12.09 16:21:52 4: [zufall_wohnzimmer_abends] Zustand:on sigma:50 random:452->
2015.12.09 16:21:52 5: [zufall_wohnzimmer_abends] removing Timer: zufall_wohnzimmer_abends_Exec
2015.12.09 16:21:52 5: [zufall_wohnzimmer_abends] setting  Timer: zufall_wohnzimmer_abends_Exec 2015-12-09 16:26:10
2015.12.09 16:26:10 4: [zufall_wohnzimmer_abends] Zustand:on sigma:50 random:239->
2015.12.09 16:26:10 5: [zufall_wohnzimmer_abends] removing Timer: zufall_wohnzimmer_abends_Exec
2015.12.09 16:26:10 5: [zufall_wohnzimmer_abends] setting  Timer: zufall_wohnzimmer_abends_Exec 2015-12-09 16:30:07
2015.12.09 16:30:07 4: [zufall_wohnzimmer_abends] Zustand:on sigma:50 random:775->
2015.12.09 16:30:07 5: [zufall_wohnzimmer_abends] removing Timer: zufall_wohnzimmer_abends_Exec
2015.12.09 16:30:07 5: [zufall_wohnzimmer_abends] setting  Timer: zufall_wohnzimmer_abends_Exec

Das Problem steht in der zweiten Zeile: Zustand:on aber Licht ist aus! Und es bleibt entsprechend meiner 250 secondsToSwitch und einem SwitchMode von 900/50 oder auch 800/200 teilweise über 30 Minuten bis Stunden aus. Bis zum ersten zufallsbedingtem Aus- und wieder Einschalten: 2015.12.09 16:34:26 4: [zufall_wohnzimmer_abends] Zustand:on sigma:50 random:31->1
2015.12.09 16:34:26 4: [zufall_wohnzimmer_abends] command: {fhem ("set Dimmer_Wohnzimmer off")}
2015.12.09 16:34:26 3: CUL_HM set Dimmer_Wohnzimmer off
2015.12.09 16:34:26 5: [zufall_wohnzimmer_abends] removing Timer: zufall_wohnzimmer_abends_Exec
2015.12.09 16:34:26 5: [zufall_wohnzimmer_abends] setting  Timer: zufall_wohnzimmer_abends_Exec 2015-12-09 16:38:37
2015.12.09 16:38:37 4: [zufall_wohnzimmer_abends] Zustand:off sigma:900 random:367->1
2015.12.09 16:38:37 4: [zufall_wohnzimmer_abends] command: {fhem ("set Dimmer_Wohnzimmer pct 70")}
2015.12.09 16:38:37 3: CUL_HM set Dimmer_Wohnzimmer pct 70

Um 16:38:37 ist das Licht heute zum ersten Mal angegangen, obwohl der RT schon um 16:09:44 gestartet wurde. Erstes Licht an also nach knapp 30 Minuten. Hätten aber zufallsbedingt auch 60 oder 90 Minuten sein können. Das ist doch nicht im Sinne des Erfinders, oder?
Wo liegt bei mir "in drei Gottes Namen" der Fehler?

Gruß

oelidoc

Dietmar63

Ich habe eine Vermutung, warum der RT bei dir dieses Verhalten zeigt. Muss ich aber leider in Test noch genauer untersuchen.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

oelidoc

Hallo Dietmar63,
vielen Dank, dass du dich weiter um mein Problem kümmerst - wirklich toller support von Dir!
Dann wart ich mal ab, was du rausfindest. Wenn du noch mehr Angaben brauchst, sag Bescheid.
Gruß
oelidoc

Dietmar63

Meine Überlegungen gehen in folgende Richtung:

RTs prüfen nicht wirklich den Zustand des zu schaltenden Gerätes, sondern gehen davon aus, dass nur sie allein an/abschalten. In meinem Anwendungsszenario ist das auch so ok, weil ich die RTs nur nutze, wenn ich wirklich an Wochendenden verreise.  Zum Start des RT ist der Zustand "off". Danach wird je nach Einstellung ein- oder ausgeschaltet.

Problematisch wird es dann wenn jemand von Hand schaltet. Dann stimmt der intern von den RTs protokollierte Zustandswert nicht mehr und es kommt besonders bei extemen Weren von switchmode zu merkwürdigem Verhalten.

Da ich mit 800/200 fahre, wirkt sich das nicht wirklich problematisch aus, weil der RT nach einiger Zeit in Tritt kommt und sich mit dem tatsächlichen Zustand synchronisiert. Bei dir passiert das erst sehr spät.

Wenn es stimmt, habe ich dafür noch keine Lösung.

Es könnte so gehen, dass ich versuche immer den echten Zustand des zu schaltenden Geräts zu ermitteln, und nicht nur intern Protokoll zu führen. Mal sehen was meine Tests ergeben.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

oelidoc

#320
Hallo Dietmar 63,
um das ganze noch etwas zu komplizieren, habe ich noch weitere RT überprüft, die das von mir beobachtete Verhalten überraschender Weise nicht zeigen. Sie schalten immer morgens, wenn wir das Haus verlassen haben. Einziger für mich erkennbarer Unterschied ist, daß die TimeSpec_Stop keine Perl-Funktion ist:

Internals:
   COMMAND    off
   DEF        *{sunrise_abs(+1140,"06:44","07:29")} Dimmer_Kueche +01:50:00 300
   DEVICE     Dimmer_Kueche
   NAME       zufall_kueche_morgens
   NR         140
   REL
   REP        *
   SIGMAOFF   900
   SIGMAON    50
   STARTTIME  13.12.2015  07:29:00
   STATE      disabled
   STOPTIME   13.12.2015  09:19:00
   SWITCHMODE 900/50
   S_REL      +
   S_REP
   TIMESPEC_START *{sunrise_abs(+1140,"06:44","07:29")}
   TIMESPEC_STOP +01:50:00
   TIMETOSWITCH 300
   TYPE       RandomTimer
   active     0
   startTime  1449988140
   stopTime   1449994740
   Timer:
     Zufall_kueche_morgens_exec:
       HASH       zufall_kueche_morgens
       MODIFIER   Exec
       NAME       zufall_kueche_morgens_Exec
     Zufall_kueche_morgens_settimer:
       HASH       zufall_kueche_morgens
       MODIFIER   SetTimer
       NAME       zufall_kueche_morgens_SetTimer
Attributes:
   disable    1
   offCmd     {fhem ("set Dimmer_Kueche off")}
   onCmd      {fhem ("set Dimmer_Kueche on")}
   room       Kueche
   switchmode 900/50


Das Log zu diesen RTs sieht ganz anders aus - hier wird immer sofort eingeschaltet:

2015.12.11 07:49:01 3: [zufall_kueche_morgens] starting RandomTimer on Dimmer_Kueche: 07:29:00(11) - 09:19:00(11)
2015.12.11 07:49:01 3: CUL_HM set Dimmer_Kueche on
2015.12.11 07:49:12 3: [zufall_arbeitszimmer_morgens] starting RandomTimer on Licht_Arbeitszimmer: 07:29:00(11) - 09:14:00(11)
2015.12.11 07:49:12 3: CUL_HM set Licht_Arbeitszimmer on
2015.12.11 07:49:43 3: [zufall_wohnzimmer_morgens] starting RandomTimer on Dimmer_Wohnzimmer: 07:29:00(11) - 09:19:00(11)
2015.12.11 07:49:43 3: CUL_HM set Dimmer_Wohnzimmer pct 70
2015.12.11 08:08:46 3: CUL_HM set Dimmer_Kueche off
2015.12.11 08:13:49 3: CUL_HM set Dimmer_Kueche on
2015.12.11 08:18:35 3: CUL_HM set Dimmer_Kueche off
2015.12.11 08:23:39 3: CUL_HM set Dimmer_Kueche on
2015.12.11 08:24:25 3: CUL_HM set Licht_Arbeitszimmer off
2015.12.11 08:29:14 3: CUL_HM set Licht_Arbeitszimmer on
2015.12.11 08:34:01 3: CUL_HM set Licht_Arbeitszimmer off
2015.12.11 08:39:10 3: CUL_HM set Licht_Arbeitszimmer on
2015.12.11 09:09:33 3: CUL_HM set Licht_Arbeitszimmer off
2015.12.11 09:14:24 3: [zufall_arbeitszimmer_morgens] ending   RandomTimer on Licht_Arbeitszimmer: 07:29:00(11) - 09:14:00(11)
2015.12.11 09:14:24 3: CUL_HM set Licht_Arbeitszimmer off
2015.12.11 09:20:39 3: [zufall_wohnzimmer_morgens] ending   RandomTimer on Dimmer_Wohnzimmer: 07:29:00(11) - 09:19:00(11)
2015.12.11 09:20:39 3: CUL_HM set Dimmer_Wohnzimmer off
2015.12.11 09:22:32 3: [zufall_kueche_morgens] ending   RandomTimer on Dimmer_Kueche: 07:29:00(11) - 09:19:00(11)
2015.12.11 09:22:32 3: CUL_HM set Dimmer_Kueche off


Hier scheint unabhängig vom Zustand des Devices immer erst mal eingeschaltet zu werden.
Vielleicht kannst du ja mit diesen Zusatzinformationen was anfangen...

Gruß und einen schönen III. Advent

oelidoc

Dietmar63

Ich habe eine Version eingecheckt, die versucht den Status des zu schaltenden Gerätes zu berücksichtigen.

@oelidoc:
Prüf mal bitte, ob  damit ein großer Teil deines Problems gelöst ist. Mit verose 4 bekommt du weiteres detailiertes logging:


2015.12.14 20:49:30 4: [ZufallsTimer999050] defintion RandomTimer on StehlampeTisch: 19:55:00(14) - 20:45:00(14)
2015.12.14 20:49:30 4: [ZufallsTimer999050] RandomTimer on StehlampeTisch timer disabled - no switch
2015.12.14 20:44:36 4: [ZufallsTimer999050] RandomTimer on StehlampeTisch timer disabled - no switch
2015.12.14 20:39:27 3: [ZufallsTimer999050] ending   RandomTimer on StehlampeTisch: 19:55:00(14) - 20:45:00(14)
2015.12.14 20:34:33 3: FS20 set StehlampeTisch off
2015.12.14 20:34:33 4: [ZufallsTimer999050] command: set StehlampeTisch off
2015.12.14 20:34:33 3: [ZufallsTimer999050] SollZustand------------>off
2015.12.14 20:34:33 4: [ZufallsTimer999050] IstZustand:on sigma-on:500 random:31->true
2015.12.14 20:34:33 3: [ZufallsTimer999050] IstZustand------------>on
2015.12.14 20:29:30 3: FS20 set StehlampeTisch on
2015.12.14 20:29:30 4: [ZufallsTimer999050] command: set StehlampeTisch on
2015.12.14 20:29:30 3: [ZufallsTimer999050] SollZustand------------>on
2015.12.14 20:29:30 4: [ZufallsTimer999050] IstZustand:off sigma-off:500 random:31->true
2015.12.14 20:29:30 3: [ZufallsTimer999050] IstZustand------------>off
2015.12.14 20:24:30 4: [ZufallsTimer999050] IstZustand:off sigma-off:500 random:680->false
2015.12.14 20:24:30 3: [ZufallsTimer999050] IstZustand------------>off
2015.12.14 20:19:44 4: [ZufallsTimer999050] IstZustand:off sigma-off:500 random:547->false
2015.12.14 20:19:44 3: [ZufallsTimer999050] IstZustand------------>off
2015.12.14 20:14:48 3: FS20 set StehlampeTisch off
2015.12.14 20:14:48 4: [ZufallsTimer999050] command: set StehlampeTisch off
2015.12.14 20:14:48 3: [ZufallsTimer999050] SollZustand------------>off
2015.12.14 20:14:48 4: [ZufallsTimer999050] IstZustand:on sigma-on:500 random:46->true
2015.12.14 20:14:48 3: [ZufallsTimer999050] IstZustand------------>on
2015.12.14 20:14:48 3: [ZufallsTimer999050] starting RandomTimer on StehlampeTisch: 19:55:00(14) - 20:45:00(14)
2015.12.14 20:09:57 4: [ZufallsTimer999050] RandomTimer on StehlampeTisch timer disabled - no switch
2015.12.14 20:05:07 4: [ZufallsTimer999050] RandomTimer on StehlampeTisch timer disabled - no switch
2015.12.14 20:00:11 4: [ZufallsTimer999050] RandomTimer on StehlampeTisch timer disabled - no switch
2015.12.14 19:55:00 4: [ZufallsTimer999050] RandomTimer on StehlampeTisch timer disabled - no switch
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

oelidoc

Hallo Dietmar63,
vielen Dank für die neue Version. Ich habe gerade ein update fhem gemacht, einen RT auf verbose 4 gesetzt und werde jetzt mal beobachten, was passiert. Bisher sieht es schon mal sehr gut aus...

Gruß

oelidoc

oelidoc

Oh oh,
jetzt geht es etwas drunter und drüber: Der RT schaltet jetzt jedes mal, auch wenn das device bereits an ist:

2015.12.15 17:39:20 4: [zufall_arbeitszimmer_abends] IstZustand------------>an
2015.12.15 17:39:20 4: [zufall_arbeitszimmer_abends] IstZustand:an sigma-an:900 random:393->true
2015.12.15 17:39:20 4: [zufall_arbeitszimmer_abends] SollZustand------------>on
2015.12.15 17:39:20 4: [zufall_arbeitszimmer_abends] command: {fhem ("set Licht_Arbeitszimmer on")}
2015.12.15 17:39:20 3: CUL_HM set Licht_Arbeitszimmer on


Dafür schaltet er nicht aus, wenn er es m.E. müsste:

2015.12.15 17:44:24 4: [zufall_arbeitszimmer_abends] IstZustand------------>an
2015.12.15 17:44:24 4: [zufall_arbeitszimmer_abends] IstZustand:an sigma-an:900 random:953->false
hier kam kein  Schaltbefehl mehr...


Und ein missing ack kam auch schon:

2015.12.15 17:59:17 4: [zufall_arbeitszimmer_abends] IstZustand------------>MISSING ACK
2015.12.15 17:59:17 4: [zufall_arbeitszimmer_abends] IstZustand:MISSING ACK sigma-MISSING ACK:900 random:45->true
2015.12.15 17:59:17 4: [zufall_arbeitszimmer_abends] SollZustand------------>on
2015.12.15 17:59:17 4: [zufall_arbeitszimmer_abends] command: {fhem ("set Licht_Arbeitszimmer on")}
2015.12.15 17:59:17 3: CUL_HM set Licht_Arbeitszimmer on


Ich hoffe, die Logs reichen. Wenn du Fragen hast - immer her damit.

Gruß

oelidoc

Dietmar63

Das liegt daran, dass du dein Gerät als Value() an/aus und nicht on/off liefert. on/off sind fest verdrahtet. Im Moment habe ich keine Lösung.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

oelidoc

#325
Das habe ich jetzt ehrlich gesagt nicht verstanden  :-[

Hier mal das device:

Readings:
     2015-12-15 18:39:20   CommandAccepted yes
     2014-12-17 20:58:46   D-firmware      2.2
     2014-12-17 20:58:46   D-serialNr      KEQ0198884
     2015-08-03 21:58:47   PairedTo        0xF10804
     2014-12-17 21:11:10   R-pairCentral   0xF10804
     2014-12-17 21:11:11   R-sign          off
     2015-08-03 21:58:47   RegL_00:        02:01 0A:F1 0B:08 0C:04 15:FF 18:00 00:00
     2015-08-03 21:58:48   RegL_01:        08:00  30:06 57:24 00:00
     2015-12-15 18:50:25   deviceMsg       on (to virtualCCU)
     2015-12-15 18:50:25   level           100
     2015-09-11 22:56:47   levelMissed     desired:0
     2015-12-15 18:50:25   pct             100
     2015-08-03 21:58:45   powerOn         2015-08-03 21:58:45
     2015-12-15 18:50:25   recentStateType info
     2015-12-15 18:50:25   state           on
     2015-12-15 18:50:25   timedOn         off


Lediglich bei den Attributen habe ich
  subType    switch
   webCmd     an:aus:statusRequest


Gruß

oelidoc

Dietmar63

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

oelidoc

Also Attribut löschen und gut ist?

Dietmar63

Ja, das könntest du erst mal probieren.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

Und sieht es damit besser aus?
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm