HomeMatic HMInfo TempList/Weekplan: Unterschied zwischen den Versionen

Aus FHEMWiki
K (diverse kleine Änderungen)
 
(11 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Todo|Dieser Artikel überschneidet sich inhaltlich mit [[HomeMatic Type Thermostat#Templates]].}}
{{Infobox Modul
{{Infobox Modul
|ModPurpose=Behandlung von Wochenplänen für Thermostate
|ModPurpose=Behandlung von Wochenprogrammen für Thermostate
|ModType=d
|ModType=d
|ModCmdRef=HMinfo Weekplan
|ModCmdRef=HMinfo Weekplan
Zeile 8: Zeile 7:
|ModOwner=martinp876 ({{Link2FU|251|martinp876}} / [[Benutzer Diskussion:Martinp876|Wiki]])
|ModOwner=martinp876 ({{Link2FU|251|martinp876}} / [[Benutzer Diskussion:Martinp876|Wiki]])
}}
}}
'''HMInfo TempList''' ist eine Funktion des Moduls [[HMInfo]], die es erlaubt, Temperaturlisten (Wochenprogramme) von [[HomeMatic Type Thermostat|Thermostaten]] zu verwalten. 


'''HMInfo TempList''' ist eine Funktion des Moduls [[Homematic_HMInfo|HMInfo]] das es erlaubt Temperaturlisten (Wochenpläne) von [[HomeMatic Type Thermostat|Thermostaten]] zu Verwalten.
== Einleitung==
HomeMatic bietet eine Reihe von Heizkörperthermostaten, welche mit einem Wochenprogramm ausgestattet sind. Die Erstellung und Verwaltung dieser Wochenprogramme ist im Device zumindest umständlich, siehe dazu [[HomeMatic Type Thermostat#Templates]].


== Einleitung==
Homematic bietet eine Reihe von Heizkörperthermostaten welche mit einem Wochenplan eigenständig einen Automatikmode unterstützen. Die Erstellung und Verwaltung dieser Pläne ist im Device zumindest umständlich.
Wochenpläne werden in den Devices gespeichert und können über FHEM abgefragt werden.
== Begriffe==
== Begriffe==
Wir müssen strikt 3 Wochenpläne unterscheiden:
Es müssen strikt drei Wochenpläne unterschieden werden:
* ''activeList'' Wochenplan im Device. Dieser, und nur dieser ist '''wirksam'''. Er kann nicht direkt in FHEM dargestellt werden. FHEM muss die Daten auslesen um sie verarbeiten zu können. Siehe hierzu kommandos und attribute des Device:getConfig und autoReagReg.  
* ''activeList'' Wochenplan im Device. Dieser, und nur dieser ist '''wirksam'''. Er kann nicht direkt in FHEM dargestellt werden. FHEM muss die Daten auslesen, um sie verarbeiten zu können. Siehe hierzu Kommandos und Attribute des Device: '''''getConfig''''' und '''''autoReadReg'''''.  
* ''referenceList'' Wochenplan in FHEM. Für jedes Device wird ein Wochenplan (bei einigen Devices können es sogar mehrere sein) dargestellt. Dies ist die aus dem Device gelesene activeList. Es liegt in der Verantwortung des User, die Liste aktuell zu halten.  
* ''referenceList'' Wochenplan in FHEM. Für jedes Device wird ein Wochenplan (bei einigen Devices können es auch mehrere sein) dargestellt. Dies ist die aus dem Device gelesene activeList. Es liegt in der Verantwortung des Benutzers, die Liste aktuell zu halten.  
* ''tempTemplates'' Vorlagen für Wochenpläne. Diese werden in Files erstellt. Man kann Devices eines der tempTemplates zuweisen um es zu prüfen oder einzuspielen.  
* ''tempTemplates'' Vorlagen für Wochenpläne. Diese werden in externen Dateien erstellt. Man kann Devices eines der tempTemplates zuweisen um es zu prüfen oder einzuspielen.


== Wochenplan Files==
== Wochenprogramme ==
=== Mögliche Files===
=== Datei ===
{{Randnotiz|RNTyp=g|RNText=Ab Firmware-Version 1.5 unterstützen die HM-TC-RT-DN nach Angaben eines Forennutzers auch Angaben im 5-Minuten-Raster.}}
Zur Verwendung einer Temperaturliste als Wochenprogramm muss eine Datei mit folgendem Inhalt erzeugt werden:
* Für jede Temperaturliste eine Namensliste in der Form <code>entities:<name1>,<name2>,...</code>
** ein Name darf in einer Datei '''nicht''' doppelt vorkommen.
** der gleiche Name darf in unterschiedlichen Dateien verwendet werden.
* In jeder Temperaturliste eine Zeile pro Tag, beginnend mit <code>tempList<Wochtentag>> ....</code>
** Es muss eine Zeile je Wochentag vorhanden sein
* In jeder Zeile nach dem Wochentagscode eine Liste von Zeit/Wert-Paaren, diese stellen das jeweilige Tagesprogramm dar, z.B. '''08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0''',
** Jedes Tagesprogramm beginnt um 00:00 Uhr.
** Das erste Paar 08:00 14.0 bedeutet also, dass von 00:00 '''bis 08:00''' eine Temperatur von 14.0 eingestellt werden soll.
** Das zweite Paar 15:00 18.0 bedeutet also, dass von 08:00 bis 15:00 18.0 Grad einzustellen sind
** Es sind immer Paare einzutragen
** der Beginn um 00:00 ist nicht einzutragen
** der letzte Eintrag '''muss''' an jedem Tag 24:00 sein
** Uhrzeiten sind auf halbe Stunden beschränkt. Einträge 08:00 und 08:30 sind gültig. 08:20 ist ungültig.
Beispiel:
entities:tempTmpl1
R_0_tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
R_1_tempListSun>08:00 14.0 15:00 18.0 21:30 19.0 24:00 17.0
R_2_tempListMon>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
R_3_tempListTue>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 15.0
R_4_tempListWed>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
R_5_tempListThu>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
R_6_tempListFri>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0
entities:tempTWohnzimmer
R_0_tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 17.0
R_1_tempListSun>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
R_2_tempListMon>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
R_3_tempListTue>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 15.0
R_4_tempListWed>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
R_5_tempListThu>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
R_6_tempListFri>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0
==== Erstellen der ersten Template-Datei====
Um nicht auf der grünen Wiese beginnen zu müssen, empfiehlt es sich, den aktuellen Ist-Zustand (die ''referenceList'') mit dem unten beschriebenen HMInfo-Befehl <code>save</code> in eine Datei zu schreiben. Vorab sollten die HMInfo-Attribute <code>configDir</code> und <code>configTempFile</code> gesetzt sein.
attr <HMInfo> configDir setup
attr <HMInfo> configTempFile myWeekplan.cfg
set <HMInfo> tempList save
Der letzte Befehl speichert die ''referenceList'' jedes Gerätes in der Datei <code>setup/myWeekplan.cfg</code>. Als ''Entity'' wird der Name des Thermostaten verwendet – das Attribut ''tempListTmpl'' wird nicht beachtet. Die Datei kann anschließend mit einem Texteditor bearbeitet werden. Wochenpläne können zusammengefasst und verändert werden.
 
''Achtung'': bei der Verwendung von [[configdb]] wird die Datei nicht in das Dateisystem, sondern gleich in die configDB geschrieben. Mit Hilfe der Befehle
<syntaxhighlight lang="Text">
  configdb filelist
  configdb fileexport myWeekplan.cfg
</syntaxhighlight>
kann diese exportiert, bearbeitet und danach wieder in die configdb eingelesen werden.
 
=== Templates zuweisen===
tempListTemplates werden immer in Files verwaltet. Man kann Templates in mehreren Files verwalten. Ferner gibt es unterschiedliche Methoden, ein File zu spezifizieren.  
tempListTemplates werden immer in Files verwaltet. Man kann Templates in mehreren Files verwalten. Ferner gibt es unterschiedliche Methoden, ein File zu spezifizieren.  
* '''attr tempListTmpl im Device''': hier spezifiziert man das Template. Will man sich von tempaltes entkoppeln sollte man '''tempListTmpl none''' unbedingt setzen.
* '''attr tempListTmpl im Device''': hier spezifiziert man das Template. Will man sich von templates entkoppeln sollte man '''tempListTmpl none''' unbedingt setzen.
** '''Wohnzimmer''': das template '''Wohnzimmer''' wird im default File gesucht
** '''Wohnzimmer''': das template '''Wohnzimmer''' wird im default File gesucht
** '''myWeekplan.cfg:Wohnzimmer''': das template '''Wohnzimmer''' wird im File ''myWeekplan.cfg'' mit relativen Pfad von FHEM home gesucht
** '''myWeekplan.cfg:Wohnzimmer''': das template '''Wohnzimmer''' wird im File ''myWeekplan.cfg'' mit relativen Pfad von FHEM home gesucht
Zeile 31: Zeile 77:
**  '''attr hm configTempFile myWeekPlan.cfg''': FHEM kennt ein File mit Wochenplan. Dies ist auch das Default für alle tempListTmpl in denen kein File spezifiziert.  
**  '''attr hm configTempFile myWeekPlan.cfg''': FHEM kennt ein File mit Wochenplan. Dies ist auch das Default für alle tempListTmpl in denen kein File spezifiziert.  
**  '''attr hm configTempFile mySummerPlan.cfg,myWinterPlan.cfg,myPartyPlan.cfg''': FHEM sind 3 Files bekannt. Der erste Eintrag ''mySummerPlan.cfg'' ist der Default für tempListTmpl .
**  '''attr hm configTempFile mySummerPlan.cfg,myWinterPlan.cfg,myPartyPlan.cfg''': FHEM sind 3 Files bekannt. Der erste Eintrag ''mySummerPlan.cfg'' ist der Default für tempListTmpl .
* '''attr configDir in HMInfo''': spezifiziert einen Pfad, der ''auch'' für configTemplFile genutzt wird. Es erleichtert Konfigurations-Dateien in einem separaten Verzeichnis anzulegen. ''attr hm configDir setup'' wäre ein sinnvoller Eintrag. Das Verzeichnis ''setup'' unter fhem sollte erstellt werden. Ist das Attribut nicht gesetzt ist fhemHome der default.
* '''attr configDir in HMInfo''': spezifiziert einen Pfad, der ''auch'' für configTemplFile genutzt wird. Es erleichtert, Konfigurationsdateien in einem separaten Verzeichnis anzulegen. ''attr hm configDir setup'' wäre ein sinnvoller Eintrag. Das Verzeichnis ''setup'' unter fhem sollte erstellt werden. Ist das Attribut nicht gesetzt ist fhemHome der default.
 
=== Der File Inhalt - Syntax ===
  entities:HK1,HK2
  R_0_tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
  R_1_tempListSun>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
  R_2_tempListMon>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
  R_3_tempListTue>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 15.0
  R_4_tempListWed>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
  R_5_tempListThu>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
  R_6_tempListFri>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0
  entities:HK3
  R_0_tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
  R_1_tempListSun>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
  R_2_tempListMon>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
  R_3_tempListTue>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 15.0
  R_4_tempListWed>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0 
  R_5_tempListThu>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
  R_6_tempListFri>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0
 
* '''entities''': ist der Name des Wochenplans. Eine Liste kann mehrere Namen haben, welche mit Komma separiert werden.
** ein Name darf in einem File '''nicht''' doppelt vorkommen.
** der gleiche Name darf in unterschiedlichen File genutzt werden.
* '''R_0_tempListSat>''': sind die Einträge je Wochentag. Es muss ein Eintrag je Wochentag vorhanden sein.
* '''08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0''': gemäß Homematic Syntax fängt der Plan immer um 00:00 Uhr an. Das erste Paar 08:00 14.0 bedeutet, dass von 00:00 bis 08:00 eine Temperatur von 14.0 eingestellt werden soll. 15:00 18.0 bedeutet das von 08:00 bis 15:00 18.0 Grad einzustellen sind
**Übersetzt könnte man sagen '(00:00) bis '''08:00''' '''14.0'''° | (08:00) bis '''15:00''' '''18.0'''° | (15:00) bis '''21:30''' '''19.0'''° | (21:30) bis '''24:00''' '''14.0'''°'
** es sind immer Paare einzutragen
** der Beginn um 00:00 ist nicht einzutragen
** der Letzte Eintrag '''muss''' 24:00 an jeden Tag sein
** Uhrzeiten sind auf halbe Stunden beschränkt. Einträge 08:00 und 08:30 sind gültig. 08:20 ist ungültig.
==== Erstellen des ersten Files====
 
Um nicht auf der grünen Wiese beginnen zu müssen empfiehlt es sich den aktuellen Ist-Zustand ''(referenceList)'' mit <code>save</code> in eine Datei zu schreiben. Vorab sollten die HMInfo-Attribute <code>configDir</code> und <code>configTempFile</code> gesetzt sein.
 
attr <HMInfo> configDir setup
attr <HMInfo> configTempFile myWeekplan.cfg
set <HMInfo> tempList save
 
Der letzte Befehl speichert die ''referenceList'' jedes Gerätz in der Datei <code>setup/myWeekplan.cfg</code>. Als ''Entity'' wird der Name des Thermostats verwendet – das Attribut ''tempListTmpl'' wird nicht beachtet.
 
Die Datei kann anschließend mit einem Text-Editor bearbeitet werden. Wochenpläne können zusammengefasst und verändert werden.


=== HMInfo Kommandos ===
=== HMInfo Kommandos ===
Die HMInfo-Befehle, die Temperaturlisten verwalten, folgen dem Schema:
Die HMInfo-Befehle, die Temperaturlisten verwalten, folgen dem Schema:
 
:<code>set <HMInfo> tempList <Befehl> [<Dateiname>] </code>
  set <HMInfo> tempList <Befehl>
 
Die verfügbaren Befehle sind:
Die verfügbaren Befehle sind:
; <code>save</code>
; <code>save</code>
: Speichert den aktuellen Zustand der Thermostate (''referenceList'') in der ''tempList''-Datei ab.
: Speichert den aktuellen Zustand der Thermostate (''referenceList'') in der ''tempList''-Datei ab. Zu beachten ist, dass die aktuell in FHEM vorhandenen Werte benutzt werden. Der Benutzer muss selbst sicherstellen, dass diese mit den Werten im Gerät übereinstimmen. Alle eventuell vorher in der Datei vorhandenen Werte werden überschrieben.
; <code>verify</code>
; <code>verify</code>
: Vergleicht den Ist-Zustand (''referenceList'') mit dem Soll-Zustand (dem Wochenplan aus dem ''tempListTmpl''-Attribut). Abweichungen werden angezeigt aber nicht behoben. Diese Prüfung ist auch Teil von HMInfos <code>configCheck</code>.
: Vergleicht den Ist-Zustand (''referenceList'') mit dem Soll-Zustand (dem Wochenplan aus dem ''tempListTmpl''-Attribut). Abweichungen werden angezeigt, aber nicht behoben. Diese Prüfung ist auch Teil von HMInfo <code>configCheck</code>.
; <code>restore</code>
; <code>restore</code>
: Stellt den Soll-Zustand wieder her. Funktioniert im Prinzip wie <code>verify</code>, jedoch werden alle Abweichungen vom Soll-Zustand korrigiert. Zu beachten ist die Verzögerung beim Schreiben (siehe [[HomeMatic HMInfo#protoEvents|HMInfo protoEvents]], Device Status und Beschreibung des Device) und dass nach dem Schreiben die ''referenceList'' neu geladen werden muss. Wir empfehlen <code>autoReadReg</code> auf Level&nbsp;5 zu setzen. Ein Restore kann jederzeit ausgeführt werden. Sind alle Daten aktuell wird ''keine'' Temperaturliste geschrieben; es erfolgt keinerlei Funkverkehr.  
: Stellt den Soll-Zustand wieder her. Funktioniert im Prinzip wie <code>verify</code>, jedoch werden alle Abweichungen vom Soll-Zustand korrigiert. Zu beachten ist die Verzögerung beim Schreiben (siehe [[HMInfo#protoEvents|HMInfo protoEvents]], Device Status und Beschreibung des Device) und, dass nach dem Schreiben die ''referenceList'' neu geladen werden muss. Es wird empfohlen, <code>autoReadReg</code> auf Level&nbsp;5 zu setzen. Ein Restore kann jederzeit ausgeführt werden. Sind alle Daten aktuell, wird ''keine'' Temperaturliste geschrieben; es erfolgt keinerlei Funkverkehr.  
; <code>status</code>
; <code>status</code>
: Gibt eine Übersicht über die genutzten Templates aus.
: Gibt eine Übersicht über die genutzten Templates aus.


Das Web-Frontend verwendet den nahezu identischen Befehl <code>tempListG</code>. Da dieser Befehl keine weiteren Argumente zulässt kann das Frontend ein Pulldown-Menü anzeigen. Das "G" steht für "Global" – da keine Filter unterstützt werden wirken alle Befehle auf alle HomeMatic-Geräte.
Das Web-Frontend verwendet den nahezu identischen Befehl <code>tempListG</code>. Da dieser Befehl keine weiteren Argumente zulässt kann das Frontend ein Pulldown-Menü anzeigen. Das "G" steht für "Global" – da keine Filter unterstützt werden, wirken alle Befehle auf alle HomeMatic-Geräte.


==Nutzungsbeispiele==
==Nutzungsbeispiele==
=== Mehrere Heizkörper in einem Raum===
=== Mehrere Heizkörper in einem Raum===
Wenn sich in einem Raum mehrere Heizkörperthermostate befinden, sollten diese –&nbsp;wie in [[HM-CC-RT-DN]] beschrieben&nbsp;– gepeert werden.
Wenn sich in einem Raum mehrere Heizkörperthermostate befinden, sollten diese – wie in [[HM-CC-RT-DN]] beschrieben – gepeert werden.
HomeMatic geht davon aus, dass alle HM-CC-RT-DNs den selben Wochenplan haben (gilt ggf. auch für einen zugehörigen [[HM-TC-IT-WM-W-EU]]).
HomeMatic geht davon aus, dass alle HM-CC-RT-DNs den selben Wochenplan haben (gilt ggf. auch für einen zugehörigen [[HM-TC-IT-WM-W-EU]]).


Um dies zu erreichen definiert man einen Wochenplan für das Zimmer, beispielsweise <code>Wohnzimmer.cfg</code>. Anschließend wird dieser Wochenplan allen Teammitgliedern zugewiesen:
Um dies zu erreichen, definiert man einen Wochenplan für das Zimmer, beispielsweise <code>Wohnzimmer.cfg</code>. Anschließend wird dieser Wochenplan allen Teammitgliedern zugewiesen:
 
<syntaxhighlight lang="Text">
   attr <HM-CC-RT-DN#1>_Clima tempListTmpl Wohnzimmer
   attr <HM-CC-RT-DN#1>_Clima tempListTmpl Wohnzimmer
   attr <HM-CC-RT-DN#2>_Clima tempListTmpl Wohnzimmer
   attr <HM-CC-RT-DN#2>_Clima tempListTmpl Wohnzimmer
Zeile 104: Zeile 106:
   attr <HM-TC-IT-WM-W-EU>_Climate tempListTmpl Wohnzimmer
   attr <HM-TC-IT-WM-W-EU>_Climate tempListTmpl Wohnzimmer
   set hm tempListG restore
   set hm tempListG restore
</syntaxhighlight>


=== Mehrere Heizkörper mit gleichen Profil===
=== Mehrere Heizkörper mit gleichem Profil===
Will man Wohnräume identisch behandeln im Hinblick auf den Wochenplan weisst man den Thermostaten identische Profile zu.  
Will man Wohnräume im Hinblick auf den Wochenplan identisch behandeln, weist man den Thermostaten identische Profile zu.  
 
<syntaxhighlight lang="Text">
  attr RTSusi_Clima tempListTmpl Kinderzimmer
  attr RTSusi_Clima tempListTmpl Kinderzimmer
  attr RTjonas_Clima tempListTmpl Kinderzimmer
  attr RTjonas_Clima tempListTmpl Kinderzimmer
  attr RTwohnzimmer_Clima tempListTmpl Kinderzimmer
  attr RTwohnzimmer_Clima tempListTmpl Kinderzimmer
  set hm tempListG restore
  set hm tempListG restore
</syntaxhighlight>
=== Wohnungsnutzung umschalten===
=== Wohnungsnutzung umschalten===
Das Heizprofil kann man Zentral umstellen. Verlässt man die Wohnung zum Urlaub, der Sommer naht, man macht die üblich 3-Woche Party... . Alle Thermostate sollen umgestellt werden, zentral mit wenigen Kommandos, einfach zu prüfen. Sinnvoll ist es mehrere tempList.cfg Files anzulegen. Nehmen wir 4 Files an, Winter, Urlaub zu hause UrlaubIn, Urlaub nicht zu hause UrlaubOut sowie Sommer. Ferner hat man (der Einfachheit halber) 3 RTs: RTwohn, RTschlaf, RTkueche.  
Das Heizprofil kann man zentral umstellen. Verlässt man die Wohnung zum Urlaub, der Sommer naht, man macht die üblich 3-Woche Party... . Alle Thermostate sollen umgestellt werden, zentral mit wenigen Kommandos, einfach zu prüfen. Sinnvoll ist es, mehrere tempList.cfg Files anzulegen. Nehmen wir vier Files an, Winter, Urlaub zu hause UrlaubIn, Urlaub nicht zu hause UrlaubOut sowie Sommer. Ferner hat man (der Einfachheit halber) drei RTs: RTwohn, RTschlaf, RTkueche.  
Die RTs haben jeweils ihr attr tempListTmpl gesetzt entsprechend ihrem Namen.  
 
Man legt also die 4 Files an mit entities die man zusammenfassen kann (templisten muss man natürlich befüllen:
Die RTs haben jeweils ihr attr tempListTmpl entsprechend ihrem Namen gesetzt.  
Man legt also die vier Dateien an mit entities, die man zusammenfassen kann (templisten muss man natürlich befüllen:
<syntaxhighlight lang="Text">
  File Winter.cfg
  File Winter.cfg
   entity: RTwohn
   entity: RTwohn
Zeile 144: Zeile 151:
   R_0_tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
   R_0_tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
   ...
   ...
 
</syntaxhighlight>
In HMInfo sollte man nun verwalten:
In HMInfo sollte man nun verwalten:
<syntaxhighlight lang="Text">
  attr RTwohn_Clima tempListTmpl RTwohn
  attr RTwohn_Clima tempListTmpl RTwohn
  attr RTkueche_Clima tempListTmpl RTkueche
  attr RTkueche_Clima tempListTmpl RTkueche
  attr RTschlaf_Clima tempListTmpl RTschlaf
  attr RTschlaf_Clima tempListTmpl RTschlaf
  attr hm configTempFile Winter.cfg,Sommer.cfg,UrlaubIn.cfg,UrlaubOut.cfg
  attr hm configTempFile Winter.cfg,Sommer.cfg,UrlaubIn.cfg,UrlaubOut.cfg
 
</syntaxhighlight>
Winter.cfg ist nun default. Mit set hm tempListG verify kann man prüfen, dass es entsprechend genutzt ist. Nun will man in Urlaub fahren. Man schaltet das Default durch umstellen der Reihenfolge um und aktiviert es durch ein restore:
Winter.cfg ist nun default. Mit <code>set hm tempListG verify</code> kann man sicherstellen, dass es entsprechend genutzt ist. Nun will man in Urlaub fahren. Man schaltet das Default durch Umstellen der Reihenfolge um und aktiviert es durch ein restore:
<syntaxhighlight lang="Text">
  attr hm configTempFile UrlaubOut.cfg,Winter.cfg,Sommer.cfg,UrlaubIn.cfg
  attr hm configTempFile UrlaubOut.cfg,Winter.cfg,Sommer.cfg,UrlaubIn.cfg
  set hm tempListG restore
  set hm tempListG restore
 
</syntaxhighlight>
UrlaubOut.cfg ist default. Alle notwendigen Änderungen werden in die RTs programmiert.
UrlaubOut.cfg ist default. Alle notwendigen Änderungen werden in die RTs programmiert.
Unberührt bleibt Opas Zimmer, der nicht das default file sondern ein dediziertes nutzt.
Unberührt bleibt Opas Zimmer, der nicht das default file sondern ein dediziertes nutzt.
:<code>attr RTopa_Clima tempListTmpl Winter.cfg:RTopa </code>
Das template RTopa muss also nur in der Datei Winter.cfg vorhanden sein:


  attr RTopa_Clima tempListTmpl Winter.cfg:RTopa
=== Vorgehen Winter/Sommerumstellung ===
 
Wenn man von dem einen auf das andere Heizprogramm umschalten möchte (ausgehend davon, dass es Winter.cfg und Sommer.cfg gibt, und man auf Winter umstellen möchte), sind die typischen Befehle die Folgenden:
Das template RTopa muss also nur im File Winter.cfg vorhanden sein:
<syntaxhighlight lang="Text">
  attr hm configTempFile Winter.cfg,Sommer.cfg
  set hm tempListG restore
  set hm tempListG verify
</syntaxhighlight>
Nach einer kurzen Zeit sollten alle Heizkörper ein ''passed'' per verify wiedergeben. Dass sie sofort nach setzen der neuen Konfiguration per ''restore'' ein fail wiedergeben ist normal.


[[Kategorie:HomeMatic Components]]
[[Kategorie:HomeMatic supportDevice]]
[[Kategorie:HOWTOS]]
[[Kategorie:HOWTOS]]

Aktuelle Version vom 18. März 2024, 19:30 Uhr

HMinfo Weekplan
Zweck / Funktion
Behandlung von Wochenprogrammen für Thermostate
Allgemein
Typ Gerätemodul
Details
Dokumentation Weekplan EN / Weekplan DE
Support (Forum) HomeMatic
Modulname 98_HMinfo.pm
Ersteller martinp876 (martinp876 / Wiki)
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!

HMInfo TempList ist eine Funktion des Moduls HMInfo, die es erlaubt, Temperaturlisten (Wochenprogramme) von Thermostaten zu verwalten.

Einleitung

HomeMatic bietet eine Reihe von Heizkörperthermostaten, welche mit einem Wochenprogramm ausgestattet sind. Die Erstellung und Verwaltung dieser Wochenprogramme ist im Device zumindest umständlich, siehe dazu HomeMatic Type Thermostat#Templates.

Begriffe

Es müssen strikt drei Wochenpläne unterschieden werden:

  • activeList Wochenplan im Device. Dieser, und nur dieser ist wirksam. Er kann nicht direkt in FHEM dargestellt werden. FHEM muss die Daten auslesen, um sie verarbeiten zu können. Siehe hierzu Kommandos und Attribute des Device: getConfig und autoReadReg.
  • referenceList Wochenplan in FHEM. Für jedes Device wird ein Wochenplan (bei einigen Devices können es auch mehrere sein) dargestellt. Dies ist die aus dem Device gelesene activeList. Es liegt in der Verantwortung des Benutzers, die Liste aktuell zu halten.
  • tempTemplates Vorlagen für Wochenpläne. Diese werden in externen Dateien erstellt. Man kann Devices eines der tempTemplates zuweisen um es zu prüfen oder einzuspielen.

Wochenprogramme

Datei

Info green.pngAb Firmware-Version 1.5 unterstützen die HM-TC-RT-DN nach Angaben eines Forennutzers auch Angaben im 5-Minuten-Raster.

Zur Verwendung einer Temperaturliste als Wochenprogramm muss eine Datei mit folgendem Inhalt erzeugt werden:

  • Für jede Temperaturliste eine Namensliste in der Form entities:<name1>,<name2>,...
    • ein Name darf in einer Datei nicht doppelt vorkommen.
    • der gleiche Name darf in unterschiedlichen Dateien verwendet werden.
  • In jeder Temperaturliste eine Zeile pro Tag, beginnend mit tempList<Wochtentag>> ....
    • Es muss eine Zeile je Wochentag vorhanden sein
  • In jeder Zeile nach dem Wochentagscode eine Liste von Zeit/Wert-Paaren, diese stellen das jeweilige Tagesprogramm dar, z.B. 08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0,
    • Jedes Tagesprogramm beginnt um 00:00 Uhr.
    • Das erste Paar 08:00 14.0 bedeutet also, dass von 00:00 bis 08:00 eine Temperatur von 14.0 eingestellt werden soll.
    • Das zweite Paar 15:00 18.0 bedeutet also, dass von 08:00 bis 15:00 18.0 Grad einzustellen sind
    • Es sind immer Paare einzutragen
    • der Beginn um 00:00 ist nicht einzutragen
    • der letzte Eintrag muss an jedem Tag 24:00 sein
    • Uhrzeiten sind auf halbe Stunden beschränkt. Einträge 08:00 und 08:30 sind gültig. 08:20 ist ungültig.

Beispiel:

entities:tempTmpl1
R_0_tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
R_1_tempListSun>08:00 14.0 15:00 18.0 21:30 19.0 24:00 17.0
R_2_tempListMon>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
R_3_tempListTue>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 15.0
R_4_tempListWed>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
R_5_tempListThu>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
R_6_tempListFri>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0
entities:tempTWohnzimmer
R_0_tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 17.0
R_1_tempListSun>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
R_2_tempListMon>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
R_3_tempListTue>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 15.0
R_4_tempListWed>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
R_5_tempListThu>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
R_6_tempListFri>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0

Erstellen der ersten Template-Datei

Um nicht auf der grünen Wiese beginnen zu müssen, empfiehlt es sich, den aktuellen Ist-Zustand (die referenceList) mit dem unten beschriebenen HMInfo-Befehl save in eine Datei zu schreiben. Vorab sollten die HMInfo-Attribute configDir und configTempFile gesetzt sein.

attr <HMInfo> configDir setup
attr <HMInfo> configTempFile myWeekplan.cfg
set <HMInfo> tempList save

Der letzte Befehl speichert die referenceList jedes Gerätes in der Datei setup/myWeekplan.cfg. Als Entity wird der Name des Thermostaten verwendet – das Attribut tempListTmpl wird nicht beachtet. Die Datei kann anschließend mit einem Texteditor bearbeitet werden. Wochenpläne können zusammengefasst und verändert werden.

Achtung: bei der Verwendung von configdb wird die Datei nicht in das Dateisystem, sondern gleich in die configDB geschrieben. Mit Hilfe der Befehle

  configdb filelist
  configdb fileexport myWeekplan.cfg

kann diese exportiert, bearbeitet und danach wieder in die configdb eingelesen werden.

Templates zuweisen

tempListTemplates werden immer in Files verwaltet. Man kann Templates in mehreren Files verwalten. Ferner gibt es unterschiedliche Methoden, ein File zu spezifizieren.

  • attr tempListTmpl im Device: hier spezifiziert man das Template. Will man sich von templates entkoppeln sollte man tempListTmpl none unbedingt setzen.
    • Wohnzimmer: das template Wohnzimmer wird im default File gesucht
    • myWeekplan.cfg:Wohnzimmer: das template Wohnzimmer wird im File myWeekplan.cfg mit relativen Pfad von FHEM home gesucht
    • ./setup/myWeekplan.cfg:Wohnzimmer: das template Wohnzimmer wird im File myWeekplan.cfg mit relativen Pfad ./setup gesucht
    • /opt/fhem/myWeekplan.cfg:Wohnzimmer: das template Wohnzimmer wird im File myWeekplan.cfg mit absoluten Pfad /opt/fhem/ gesucht
  • attr configTempFile in HMInfo: spezifiziert weekplan configurationsfiles. Es ist eine Liste Wochenplan Files welche genutzt werden. Ist das Attribut nicht gesetzt wird als default tempList.cfg genutzt.
    • attr hm configTempFile myWeekPlan.cfg: FHEM kennt ein File mit Wochenplan. Dies ist auch das Default für alle tempListTmpl in denen kein File spezifiziert.
    • attr hm configTempFile mySummerPlan.cfg,myWinterPlan.cfg,myPartyPlan.cfg: FHEM sind 3 Files bekannt. Der erste Eintrag mySummerPlan.cfg ist der Default für tempListTmpl .
  • attr configDir in HMInfo: spezifiziert einen Pfad, der auch für configTemplFile genutzt wird. Es erleichtert, Konfigurationsdateien in einem separaten Verzeichnis anzulegen. attr hm configDir setup wäre ein sinnvoller Eintrag. Das Verzeichnis setup unter fhem sollte erstellt werden. Ist das Attribut nicht gesetzt ist fhemHome der default.

HMInfo Kommandos

Die HMInfo-Befehle, die Temperaturlisten verwalten, folgen dem Schema:

set <HMInfo> tempList <Befehl> [<Dateiname>]

Die verfügbaren Befehle sind:

save
Speichert den aktuellen Zustand der Thermostate (referenceList) in der tempList-Datei ab. Zu beachten ist, dass die aktuell in FHEM vorhandenen Werte benutzt werden. Der Benutzer muss selbst sicherstellen, dass diese mit den Werten im Gerät übereinstimmen. Alle eventuell vorher in der Datei vorhandenen Werte werden überschrieben.
verify
Vergleicht den Ist-Zustand (referenceList) mit dem Soll-Zustand (dem Wochenplan aus dem tempListTmpl-Attribut). Abweichungen werden angezeigt, aber nicht behoben. Diese Prüfung ist auch Teil von HMInfo configCheck.
restore
Stellt den Soll-Zustand wieder her. Funktioniert im Prinzip wie verify, jedoch werden alle Abweichungen vom Soll-Zustand korrigiert. Zu beachten ist die Verzögerung beim Schreiben (siehe HMInfo protoEvents, Device Status und Beschreibung des Device) und, dass nach dem Schreiben die referenceList neu geladen werden muss. Es wird empfohlen, autoReadReg auf Level 5 zu setzen. Ein Restore kann jederzeit ausgeführt werden. Sind alle Daten aktuell, wird keine Temperaturliste geschrieben; es erfolgt keinerlei Funkverkehr.
status
Gibt eine Übersicht über die genutzten Templates aus.

Das Web-Frontend verwendet den nahezu identischen Befehl tempListG. Da dieser Befehl keine weiteren Argumente zulässt kann das Frontend ein Pulldown-Menü anzeigen. Das "G" steht für "Global" – da keine Filter unterstützt werden, wirken alle Befehle auf alle HomeMatic-Geräte.

Nutzungsbeispiele

Mehrere Heizkörper in einem Raum

Wenn sich in einem Raum mehrere Heizkörperthermostate befinden, sollten diese – wie in HM-CC-RT-DN beschrieben – gepeert werden. HomeMatic geht davon aus, dass alle HM-CC-RT-DNs den selben Wochenplan haben (gilt ggf. auch für einen zugehörigen HM-TC-IT-WM-W-EU).

Um dies zu erreichen, definiert man einen Wochenplan für das Zimmer, beispielsweise Wohnzimmer.cfg. Anschließend wird dieser Wochenplan allen Teammitgliedern zugewiesen:

  attr <HM-CC-RT-DN#1>_Clima tempListTmpl Wohnzimmer
  attr <HM-CC-RT-DN#2>_Clima tempListTmpl Wohnzimmer
  attr <HM-CC-RT-DN#3>_Clima tempListTmpl Wohnzimmer
  attr <HM-TC-IT-WM-W-EU>_Climate tempListTmpl Wohnzimmer
  set hm tempListG restore

Mehrere Heizkörper mit gleichem Profil

Will man Wohnräume im Hinblick auf den Wochenplan identisch behandeln, weist man den Thermostaten identische Profile zu.

 attr RTSusi_Clima tempListTmpl Kinderzimmer
 attr RTjonas_Clima tempListTmpl Kinderzimmer
 attr RTwohnzimmer_Clima tempListTmpl Kinderzimmer
 set hm tempListG restore

Wohnungsnutzung umschalten

Das Heizprofil kann man zentral umstellen. Verlässt man die Wohnung zum Urlaub, der Sommer naht, man macht die üblich 3-Woche Party... . Alle Thermostate sollen umgestellt werden, zentral mit wenigen Kommandos, einfach zu prüfen. Sinnvoll ist es, mehrere tempList.cfg Files anzulegen. Nehmen wir vier Files an, Winter, Urlaub zu hause UrlaubIn, Urlaub nicht zu hause UrlaubOut sowie Sommer. Ferner hat man (der Einfachheit halber) drei RTs: RTwohn, RTschlaf, RTkueche.

Die RTs haben jeweils ihr attr tempListTmpl entsprechend ihrem Namen gesetzt. Man legt also die vier Dateien an mit entities, die man zusammenfassen kann (templisten muss man natürlich befüllen:

 File Winter.cfg
  entity: RTwohn
   R_0_tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
   ...
  entity: RTschlaf
   R_0_tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
   ...
  entity: RTkueche
   R_0_tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
   ...

 File UrlaubIn.cfg
  entity: RTwohn,RTkueche
   R_0_tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
   ...
  entity: RTschlaf
   R_0_tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
   ...

 File UrlaubOut.cfg
  entity: RTwohn,RTschlaf,RTkueche
   R_0_tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
   ...

 File Sommer.cfg
  entity: RTwohn,RTschlaf,RTkueche
   R_0_tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
   ...

In HMInfo sollte man nun verwalten:

 attr RTwohn_Clima tempListTmpl RTwohn
 attr RTkueche_Clima tempListTmpl RTkueche
 attr RTschlaf_Clima tempListTmpl RTschlaf
 attr hm configTempFile Winter.cfg,Sommer.cfg,UrlaubIn.cfg,UrlaubOut.cfg

Winter.cfg ist nun default. Mit set hm tempListG verify kann man sicherstellen, dass es entsprechend genutzt ist. Nun will man in Urlaub fahren. Man schaltet das Default durch Umstellen der Reihenfolge um und aktiviert es durch ein restore:

 attr hm configTempFile UrlaubOut.cfg,Winter.cfg,Sommer.cfg,UrlaubIn.cfg
 set hm tempListG restore

UrlaubOut.cfg ist default. Alle notwendigen Änderungen werden in die RTs programmiert. Unberührt bleibt Opas Zimmer, der nicht das default file sondern ein dediziertes nutzt.

attr RTopa_Clima tempListTmpl Winter.cfg:RTopa

Das template RTopa muss also nur in der Datei Winter.cfg vorhanden sein:

Vorgehen Winter/Sommerumstellung

Wenn man von dem einen auf das andere Heizprogramm umschalten möchte (ausgehend davon, dass es Winter.cfg und Sommer.cfg gibt, und man auf Winter umstellen möchte), sind die typischen Befehle die Folgenden:

  attr hm configTempFile Winter.cfg,Sommer.cfg
  set hm tempListG restore
  set hm tempListG verify

Nach einer kurzen Zeit sollten alle Heizkörper ein passed per verify wiedergeben. Dass sie sofort nach setzen der neuen Konfiguration per restore ein fail wiedergeben ist normal.