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?
WeekdayTimer hat ein Attribut switchInThePast.
Grüße
igami
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.
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
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.
Gerade sehe ich, dass beim Command ein "}" fehlt... hab ich ergänzt, geht trotzdem nix
Hab die "}" im vorherigen Post ergänzt.
Kann erst morgen Abend genauer prüfen
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.
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.
Ich glaube es gibt einen Befehl dafür - schau mal in der comnandref nach. Ist dort erklärt
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
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.
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 ;)
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
Denke das würde es komfortabler machen, ja.
Danke Dir!