[gelöst] Frage zu WeekdayTimer in Verbindung mit Anwesenheitserkennung

Begonnen von AndyMu, 22 Oktober 2016, 11:34:26

Vorheriges Thema - Nächstes Thema

AndyMu

Hallo *,

ich habe jetzt mal ein wenig was anderes probiert in meiner Heizungssteuerung:
WeekdayTimer-Pläne in Verbindung mit Anwesenheit/Abwesenheitssteuerung.
Dabei schalte ich je nach Anwesenheit über eine PRESENCE Struktur entweder auf den Abwesend-WeekdayTimer oder Anwesend-Weekdaytimer per disable/enable und Notify
Das funktioniert alles auch soweit gut, es wird der richtige WeekdayTimer gezogen... aber, der Befehl zum Setzen der Temperatur am Thermostaten erfolgt erst mit dem nächsten Schaltzeitpunkt.

Gibt es da keine Möglichkeit, dass bei Aktivierung eines WeekdayTimers das Kommando auch sofort ausgeführt wird?

igami

WeekdayTimer hat ein Attribut switchInThePast.

Grüße
igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

AndyMu

Zitat von: igami am 22 Oktober 2016, 11:40:48
WeekdayTimer hat ein Attribut switchInThePast.
Das habe ich ausprobiert, funktioniert leider nicht wie gewollt.
Ich muss das jedesmal per Hand setzen, wenn die Umschaltung erfolgen sollte. Trotz dass das attr gesetzt ist, schaltet nichts automatisch... eben erst, wenn ich das attr nochmal bestätige.
Klar kann ich das jetzt als Befehl mit in mein Notify nehmen, aber eigentlich sollte das doch der WeekdayTimer automatisch machen, wenn er aktiviert wird.

Dietmar63

Prüf mal mit verbose 5 was passiert.
Veröffentliche bitte das Protokoll, ggf kann ich etwas nachbessern

Für Heizungen ist Heating_Control gedacht. Dort gilt switchinthepast standardmäßig
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

AndyMu

#4
Ich lade Dir mal alles hier rein, was ich habe... das mit verbose auf 5 habe ich gesetzt, bekomme aber im EventMonitor nur folgendes angezeigt:

2016-10-22 12:29:09 Heating_Control ug_gast_thermostat_Zuhause disabled: 1
2016-10-22 12:29:09 Global global ATTR ug_gast_thermostat_Zuhause disable 1
2016-10-22 12:29:09 Heating_Control ug_gast_thermostat_Weg disabled: 0
2016-10-22 12:29:09 Global global ATTR ug_gast_thermostat_Weg disable 0
2016-10-22 12:29:09 WeekdayTimer ug_bad_thermostat_Zuhause disabled: 1
2016-10-22 12:29:09 Global global ATTR ug_bad_thermostat_Zuhause disable 1
2016-10-22 12:29:09 WeekdayTimer ug_bad_thermostat_Weg disabled: 0
2016-10-22 12:29:09 Global global ATTR ug_bad_thermostat_Weg disable 0
2016-10-22 12:29:09 structure UG_Anwesenheit absent
2016-10-22 12:29:09 dummy Gaeste absent

Es wird eigentlich korrekt ug_gast_thermostat_Zuhause disabled, das ...Weg enabled.

Also, was habe ich gemacht:
Zwei notify zum Schalten eingerichtet, die von einem Anwesenheitsdummy "Gaeste" (present/absent) angetriggert werden:
Internals:
   CFGFN
   DEF        Gaeste:absent.* {
fhem("set ug_gast_thermostat_Zuhause disable");
fhem("set ug_gast_thermostat_Weg enable");
}
   NAME       UGGastWeg
   NOTIFYDEV  Gaeste
   NR         274793
   NTFY_ORDER 50-UGGastWeg
   REGEXP     Gaeste:absent.*
   STATE      2016-10-22 12:29:09
   TYPE       notify
   Readings:
     2016-10-22 12:11:44   state           active
Attributes:

Internals:
   CFGFN
   DEF        Gaeste:present.* {
fhem("set ug_gast_thermostat_Zuhause enable");
fhem("set ug_gast_thermostat_Weg disable");
}
   NAME       UGGastZuhause
   NOTIFYDEV  Gaeste
   NR         274804
   NTFY_ORDER 50-UGGastZuhause
   REGEXP     Gaeste:present.*
   STATE      2016-10-22 12:27:43
   TYPE       notify
   Readings:
     2016-10-22 12:11:51   state           active
Attributes:

Das funktioniert auch, siehe oben.

Die heating_control Devices sehen so aus:
Internals:
   CFGFN
   COMMAND    {fhem("set $NAME desired-temp $EVENT")}
   CONDITION
   DEF        ug_gast_thermostat_Clima de 00:00|18.0 {fhem("set $NAME desired-temp $EVENT")}
   DEVICE     ug_gast_thermostat_Clima
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       ug_gast_thermostat_Weg
   NR         275054
   Profil 0: Sonntag 00:00:00 18.0
   Profil 1: Montag 00:00:00 18.0
   Profil 2: Dienstag 00:00:00 18.0
   Profil 3: Mittwoch 00:00:00 18.0
   Profil 4: Donnerstag 00:00:00 18.0
   Profil 5: Freitag 00:00:00 18.0
   Profil 6: Samstag 00:00:00 18.0
   STATE      18.0
   STILLDONETIME 0
   TYPE       Heating_Control
   Readings:
     2016-10-22 12:32:48   currValue       18.0
     2016-10-22 12:29:09   disabled        0
     2016-10-22 12:32:48   nextUpdate      2016-10-23 00:00:00
     2016-10-22 12:32:48   nextValue       18.0
     2016-10-22 12:32:48   state           18.0
   SWITCHINGTIMES:
     00:00|18.0
   Timer:
     Ug_gast_thermostat_weg_1:
       HASH       ug_gast_thermostat_Weg
       MODIFIER   1
       NAME       ug_gast_thermostat_Weg_1
       immerSchalten 1
     Ug_gast_thermostat_weg_settimerofday:
       HASH       ug_gast_thermostat_Weg
       MODIFIER   SetTimerOfDay
       NAME       ug_gast_thermostat_Weg_SetTimerOfDay
       SETTIMERATMIDNIGHT 1
     Ug_gast_thermostat_weg_delayed:
       HASH       ug_gast_thermostat_Weg
       MODIFIER   delayed
       NAME       ug_gast_thermostat_Weg_delayed
   Daynumber:
     !$we       8
     $we        7
     di         2
     do         4
     fr         5
     mi         3
     mo         1
     sa         6
     so         0
   Helper:
     daysRegExp (so|mo|di|mi|do|fr|sa|\$we|\!\$we)
     daysRegExpMessage (so|mo|di|mi|do|fr|sa|$we|!$we)
     Switchingtime:
       0:
         00:00:00   18.0
       1:
         00:00:00   18.0
       2:
         00:00:00   18.0
       3:
         00:00:00   18.0
       4:
         00:00:00   18.0
       5:
         00:00:00   18.0
       6:
         00:00:00   18.0
   Longdays:
     de:
       Sonntag
       Montag
       Dienstag
       Mittwoch
       Donnerstag
       Freitag
       Samstag
       Wochenende
       Werktags
     en:
       Sunday
       Monday
       Tuesday
       Wednesday
       Thursday
       Friday
       Saturday
       weekend
       weekdays
     fr:
       Dimanche
       Lundi
       Mardi
       Mercredi
       Jeudi
       Vendredi
       Samedi
       weekend
       jours de la semaine
   Profil:
     1:
       EPOCH      1477087200
       PARA       18.0
       TIME       00:00
       TAGE:
         0
         1
         2
         3
         4
         5
         6
   Profile_idx:
     0:
       00:00:00   1
     1:
       00:00:00   1
     2:
       00:00:00   1
     3:
       00:00:00   1
     4:
       00:00:00   1
     5:
       00:00:00   1
     6:
       00:00:00   1
   Shortdays:
     de:
       so
       mo
       di
       mi
       do
       fr
       sa
       $we
       !$we
     en:
       su
       mo
       tu
       we
       th
       fr
       sa
       $we
       !$we
     fr:
       di
       lu
       ma
       me
       je
       ve
       sa
       $we
       !$we
Attributes:
   disable    0
   verbose    5

Internals:
   CFGFN
   COMMAND    {fhem("set $NAME desired-temp $EVENT")}
   CONDITION
   DEF        ug_gast_thermostat_Clima de 00:00|20.0 {fhem("set $NAME desired-temp $EVENT")}
   DEVICE     ug_gast_thermostat_Clima
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       ug_gast_thermostat_Zuhause
   NR         275070
   Profil 0: Sonntag 00:00:00 20.0
   Profil 1: Montag 00:00:00 20.0
   Profil 2: Dienstag 00:00:00 20.0
   Profil 3: Mittwoch 00:00:00 20.0
   Profil 4: Donnerstag 00:00:00 20.0
   Profil 5: Freitag 00:00:00 20.0
   Profil 6: Samstag 00:00:00 20.0
   STATE      20.0
   STILLDONETIME 0
   TYPE       Heating_Control
   Readings:
     2016-10-22 12:20:45   currValue       20.0
     2016-10-22 12:29:09   disabled        1
     2016-10-22 12:20:45   nextUpdate      2016-10-23 00:00:00
     2016-10-22 12:20:45   nextValue       20.0
     2016-10-22 12:20:45   state           20.0
   SWITCHINGTIMES:
     00:00|20.0
   Timer:
     Ug_gast_thermostat_zuhause_1:
       HASH       ug_gast_thermostat_Zuhause
       MODIFIER   1
       NAME       ug_gast_thermostat_Zuhause_1
       immerSchalten 1
     Ug_gast_thermostat_zuhause_settimerofday:
       HASH       ug_gast_thermostat_Zuhause
       MODIFIER   SetTimerOfDay
       NAME       ug_gast_thermostat_Zuhause_SetTimerOfDay
       SETTIMERATMIDNIGHT 1
     Ug_gast_thermostat_zuhause_delayed:
       HASH       ug_gast_thermostat_Zuhause
       MODIFIER   delayed
       NAME       ug_gast_thermostat_Zuhause_delayed
   Daynumber:
     !$we       8
     $we        7
     di         2
     do         4
     fr         5
     mi         3
     mo         1
     sa         6
     so         0
   Helper:
     daysRegExp (so|mo|di|mi|do|fr|sa|\$we|\!\$we)
     daysRegExpMessage (so|mo|di|mi|do|fr|sa|$we|!$we)
     Switchingtime:
       0:
         00:00:00   20.0
       1:
         00:00:00   20.0
       2:
         00:00:00   20.0
       3:
         00:00:00   20.0
       4:
         00:00:00   20.0
       5:
         00:00:00   20.0
       6:
         00:00:00   20.0
   Longdays:
     de:
       Sonntag
       Montag
       Dienstag
       Mittwoch
       Donnerstag
       Freitag
       Samstag
       Wochenende
       Werktags
     en:
       Sunday
       Monday
       Tuesday
       Wednesday
       Thursday
       Friday
       Saturday
       weekend
       weekdays
     fr:
       Dimanche
       Lundi
       Mardi
       Mercredi
       Jeudi
       Vendredi
       Samedi
       weekend
       jours de la semaine
   Profil:
     1:
       EPOCH      1477087200
       PARA       20.0
       TIME       00:00
       TAGE:
         0
         1
         2
         3
         4
         5
         6
   Profile_idx:
     0:
       00:00:00   1
     1:
       00:00:00   1
     2:
       00:00:00   1
     3:
       00:00:00   1
     4:
       00:00:00   1
     5:
       00:00:00   1
     6:
       00:00:00   1
   Shortdays:
     de:
       so
       mo
       di
       mi
       do
       fr
       sa
       $we
       !$we
     en:
       su
       mo
       tu
       we
       th
       fr
       sa
       $we
       !$we
     fr:
       di
       lu
       ma
       me
       je
       ve
       sa
       $we
       !$we
Attributes:
   disable    1
   verbose    5


Die reagieren eigentlich auch... bis auf dass sie eben keinen "set ...." Befehl absetzen.

AndyMu

Gerade sehe ich, dass beim Command ein "}" fehlt... hab ich ergänzt, geht trotzdem nix
Hab die "}" im vorherigen Post ergänzt.

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

AndyMu

Zitat von: Dietmar63 am 22 Oktober 2016, 12:46:22
Kann erst morgen Abend genauer prüfen
Kein Problem... da mit dem verbose 5 musst du mir kurz nochmal erklären, wo ich die für dich nötigen Infos herbekomme.

AndyMu

Auch bei heating_control wird sofort geschaltet, wenn ich SwitchInThePast manuell auf "1" stelle... also eigentlich müssten die Befehle und Abhängigkeiten eigentlich alles passen, nur dass eben bei Deaktivierung des einen heating_control und dem Aktivieren das anderen eben keine sofortiges Auslösen des Befehls beim aktivierten heating_control erfolgt.

Dietmar63

Ich glaube es gibt einen Befehl dafür - schau mal in der comnandref nach. Ist dort erklärt 
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

AndyMu

Internals:
   CFGFN
   DEF        4CF0B704
   NAME       ug_gast_thermostat_Clima
   NOTIFYDEV  global
   NR         218441
   STATE      T: 18.2 desired: 18.0 valve: 13
   STILLDONETIME 0
   TYPE       CUL_HM
   chanNo     04
   device     ug_gast_thermostat
   Readings:
     2016-10-22 14:52:14   CommandAccepted yes
     2016-10-16 20:01:29   R-boostPos      80 %
     2016-10-16 20:01:29   R-btnNoBckLight off
     2016-10-16 20:01:29   R-dayTemp       21 C
     2016-10-16 20:01:29   R-daylightSaveTime on
     2016-10-16 20:01:29   R-modePrioManu  all
     2016-10-16 20:01:29   R-modePrioParty all
     2016-10-16 20:01:29   R-nightTemp     17 C
     2016-10-16 20:01:29   R-noMinMax4Manu off
     2016-10-16 20:01:29   R-regAdaptive   on
     2016-10-16 20:01:29   R-showInfo      time
     2016-10-16 20:01:25   R-sign          off
     2016-10-16 20:01:29   R-tempOffset    0.0K
     2016-10-16 20:01:29   R-valveOffsetRt 0 %
     2016-10-16 20:01:29   R-winOpnBoost   off
     2016-10-16 20:24:27   R_0_tempListSat  24:00 18.0
     2016-10-16 20:24:27   R_1_tempListSun  24:00 18.0
     2016-10-16 20:24:27   R_2_tempListMon  24:00 18.0
     2016-10-16 20:24:27   R_3_tempListTue  24:00 18.0
     2016-10-16 20:24:27   R_4_tempListWed  24:00 18.0
     2016-10-16 20:24:27   R_5_tempListThu  24:00 18.0
     2016-10-16 20:24:27   R_6_tempListFri  24:00 18.0
     2016-10-16 20:24:27   R_tempList_State verified
     2016-10-16 20:24:23   RegL_01.          08:00 00:00
     2016-10-16 20:24:27   RegL_07.         01:2A 02:22 03:09 04:3D 05:18 06:03 07:00 08:16 09:07 0A:30 0B:00 0C:64 0D:0F 0E:05 0F:00 10:00 11:00 12:09 13:8E 14:49 15:20 16:55 17:08 18:45 19:20 1A:45 1B:20 1C:45 1D:20 1E:45 1F:20 20:45 21:20 22:45 23:20 24:45 25:20 26:45 27:20 28:45 29:20 2A:45 2B:20 2C:45 2D:20 2E:49 2F:20 30:55 31:08 32:45 33:20 34:45 35:20 36:45 37:20 38:45 39:20 3A:45 3B:20 3C:45 3D:20 3E:45 3F:20 40:45 41:20 42:45 43:20 44:45 45:20 46:45 47:20 48:49 49:20 4A:54 4B:6C 4C:44 4D:CC 4E:55 4F:08 50:45 51:20 52:45 53:20 54:45 55:20 56:45 57:20 58:45 59:20 5A:45 5B:20 5C:45 5D:20 5E:45 5F:20 60:45 61:20 62:49 63:20 64:54 65:6C 66:44 67:CC 68:55 69:08 6A:45 6B:20 6C:45 6D:20 6E:45 6F:20 70:45 71:20 72:45 73:20 74:45 75:20 76:45 77:20 78:45 79:20 7A:45 7B:20 7C:49 7D:20 7E:54 7F:6C 80:44 81:CC 82:55 83:08 84:45 85:20 86:45 87:20 88:45 89:20 8A:45 8B:20 8C:45 8D:20 8E:45 8F:20 90:45 91:20 92:45 93:20 94:45 95:20 96:49 97:20 98:54 99:6C 9A:44 9B:CC 9C:55 9D:08 9E:45 9F:20 A0:45 A1:20 A2:45 A3:20 A4:45 A5:20 A6:45 A7:20 A8:45 A9:20 AA:45 AB:20 AC:45 AD:20 AE:45 AF:20 B0:49 B1:20 B2:54 B3:6C B4:44 B5:CC B6:55 B7:08 B8:45 B9:20 BA:45 BB:20 BC:45 BD:20 BE:45 BF:20 C0:45 C1:20 C2:45 C3:20 C4:45 C5:20 C6:45 C7:20 C8:45 C9:20 CA:0F CB:1E CC:1E CD:0F CE:1E CF:1E 00:00
     2016-10-22 15:07:17   ValvePosition   13
     2016-10-22 15:07:17   boostTime       -
     2016-10-22 15:07:17   controlMode     auto
     2016-10-22 15:07:17   desired-temp    18.0
     2016-10-22 15:07:17   measured-temp   18.2
     2016-10-22 15:07:17   partyEnd        -
     2016-10-22 15:07:17   partyStart      -
     2016-10-22 15:07:17   partyTemp       -
     2016-10-22 14:52:14   recentStateType ack
     2016-10-22 15:07:17   state           T: 18.2 desired: 18.0 valve: 13
   Templist:
     Fri:
       0:
         HOUR       24
         MINUTE     00
         TEMP       18.0
     Mon:
       0:
         HOUR       24
         MINUTE     00
         TEMP       18.0
     Sat:
       0:
         HOUR       24
         MINUTE     00
         TEMP       18.0
     Sun:
       0:
         HOUR       24
         MINUTE     00
         TEMP       18.0
     Thu:
       0:
         HOUR       24
         MINUTE     00
         TEMP       18.0
     Tue:
       0:
         HOUR       24
         MINUTE     00
         TEMP       18.0
     Wed:
       0:
         HOUR       24
         MINUTE     00
         TEMP       18.0
   Helper:
     peerIDsRaw ,00000000
     Expert:
       def        1
       det        0
       raw        1
       tpl        0
     Role:
       chn        1
     Shregr:
       07         00
     Shadowreg:
     Tmpl:
Attributes:
   alias      UG Gästezimmer Thermostat
   group      Heizung
   model      HM-CC-RT-DN
   peerIDs    00000000,
   room       Heizungssteuerung,UG Gästezimmer
   tempListTmpl none

Hier mal noch das List vom _Clima

AndyMu

#11
Lösung gefunden... hoffe ich.
Zum "anstubsen" der neuen Temperatur muss man noch einen Befehl anhängen:
Internals:
   CFGFN
   DEF        Gaeste:present.* {
fhem("set ug_gast_thermostat_Zuhause enable");
fhem("set ug_gast_thermostat_Weg disable");
{Heating_Control_SetAllTemps()}
}
   NAME       UGGastZuhause
   NOTIFYDEV  Gaeste
   NR         274804
   NTFY_ORDER 50-UGGastZuhause
   REGEXP     Gaeste:present.*
   STATE      2016-10-22 15:52:45
   TYPE       notify
   Readings:
     2016-10-22 15:52:26   state           active
Attributes:

Damit funktioniert es zwar, aber es werden doch für alle heating_control devices dann überall die Temperaturen neu gesetzt... irgendwie ein ordentlicher Overhead, oder? Zumal ich damit evtl. manuelle Veränderungen wieder überschreibe.

AndyMu

#12
So, und auch das Problem ist erledigt... hab den einzelnen Befehl gefunden:
Gaeste:present.* {
fhem("set ug_gast_thermostat_Zuhause enable");
fhem("set ug_gast_thermostat_Weg disable");
{Heating_Control_SetTemp("ug_gast_thermostat_Zuhause");; return 0}
}

Damit hat sich das Ganze aufgelöst, keiner muss noch was gucken ;)

Dietmar63

Man könnte noch darüber nachdenken, ob es sinnvoll ist bei einem Wechsel des Status enable/disable bei Heizung und switchinthepast die Temperatur der Vergangenheit zu setzen. Ich meine, dass ich das schaffen könnte. Logisch wäre das jedenfalls
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

AndyMu