Weekprofile: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Infobox eingefügt + diverse kleine Korrekturen)
Keine Bearbeitungszusammenfassung
Zeile 2: Zeile 2:
{{Infobox Modul
{{Infobox Modul
|ModPurpose=Verwaltung von Wochenprofilen für Heizungssteuerung
|ModPurpose=Verwaltung von Wochenprofilen für Heizungssteuerung
|ModType=d
|ModType=h
|ModForumArea=Frontends
|ModForumArea=Frontends
|ModCmdRef=weekprofile
|ModCmdRef=weekprofile
Zeile 9: Zeile 9:
}}
}}


Das Modul [[weekprofile]] stellt Funktionen zur Verwaltung von Wochenprofilen für Heizkörperthermostate zur Verfügung und unterstützt die folgenden Systeme:
Das Modul [[weekprofile]] stellt Funktionen zur Verwaltung von Wochenprofilen\Wochenplänen für Heizkörperthermostate zur Verfügung. Aktuell werden folgenden Systeme unterstützt:
* [[MAX]]
* [[MAX]]
* [[HomeMatic]]
* [[HomeMatic]]
<br>
Es ist möglich, verschiedene Wochenprofile anzulegen, zu kopieren, zu ändern und zu löschen. Außerdem können die erstellten Profile den entsprechenden Devices zugewiesen werden.
<br>
'''Hinweis:'''<br>
Bei HomeMatic müssen die Kanäle "Clima" bzw. "_Climate" verwendet werden.<br>
Weiterhin ist ein Zusammenspiel mit der [[HomeMatic HMInfo TempList/Weekplan|HMInfo]] in Planung.


Es ist möglich, verschiedene Wochenprofile anzulegen, zu kopieren, zu ändern und zu löschen. Außerdem können die erstellten Profile den entsprechenden Devices zugewiesen werden. Ein Import bestehender Profile aus den Devices ist nicht möglich.


== Eingabeformat für Wochenprofile ==
== FHEMWEB Widget ==
Zur Bedienung des Moduls existiert ein passendes widget für FHEMWEB.
Alle notwendigen Aufgaben wie bspw. Kopieren, Bearbeiten, Zuweisen, etc. können über die FHEMWEB Oberfläche erfolgen.
Ein direkte Verwendung der Befehle für get und set ist somit nicht zwingend erforderlich.
 
== Betriebsarten ==
=== Assoziiertes Master Gerät ===
Bei der Definition des Moduls kann ein unterstütztes Thermostat angegeben werden.
:<code>define <name> weekprofile device</code>
In diesem Fall wird automatisch ein Wochenplan mit dem Namen 'master' angelegt.
Der Wochenplan entspricht dem im device hinterlegtem Profil.
Dieser spezielle Masterplan kann nicht gelöscht werden, da er immer den aktuellen Profil im device entspricht.
Ändert man das Profil direkt über das device, wird der Masterplan automatisch aktualisiert.
Wird der Masterplan über das Modul weekprofile geändert\gespeichert, wird das Profil automatisch zum assoziiertem Device übertragen.
Wird in dieser Betriebsart kein spezielles Device bei den Befehlen angegeben, wird immer das assoziierte Device verwendet. So wird bspw. bei
:<code>set <name> send_to_device urlaub</code>
das Profil 'urlaub' an das bei define angegebene Thermostat übertragen.
 
=== Standard Verwaltung ===
Diese Betriebsart ist für die einfache Verwaltung von Wochenplänen gedacht, welche dann an unterschiedliche Thermostate manuell übertragen werden können.
Für diese Betriebsart sollte kein assoziiertes Master Gerät bei define angegeben werden.
:<code>define <name> weekprofile</code>
In diesem Fall wird beim erstmaligen Anlegen ein Default-Profil mit dem Namen 'default' angelegt.
Dieses bildet die Grundlage zur Erstellung weiterer Pläne durch kopieren.
Existieren mindestens. 2 Profile, kann das Default-Profil gelöscht werden.
Die einzelnen Wochenpläne können mittels send_to_device an ein oder mehrere Thermostate übertragen werden.
 
=== Topics ===
Topics oder Kategorien wie bspw. (Urlaub, Sommer, Winter, Party, etc.) dienen einer komplexeren Verwaltung von Wochenplänen.
Dieses Feature muss mittels dem Atribute <code>useTopics</code> aktiviert werden, sonst ist nur die 'Standard Verwaltung' möglich.
Innerhalb einer Topic kann es mehrere Wochenpläne geben. Sinnvollerweise für jedes Thermostat ein Wochenplan.
Mit dem <code>restore_topic</code> kann man dann zwischen unterschiedlichen Kategorien wechseln. Die Wochenpläne werden automatisch an die Thermostate übertragen. Dazu muss im Thermostat ein User-Attribut 'weekprofile' mit dem Namen des verbundenen Wochenplans hinterlegt sein.
<br>Beispiel:<br>
User-Attribut im Thermostat definieren:<br>
<code>
define WT_Wohnzimmer MAX WallMountedThermostat 0d657f<br>
attr WT_Wohnzimmer userattr weekprofile<br>
attr WT_Wohnzimmer weekprofile Plan_WZ
</code>
<br><br>
Weiter wird angenommen, dass es die Topics Winter und Sommer mit jeweils einem Wochenplan Namens 'Plan_WZ' im Modul 'weekprf' gibt.
<br>
<code>
define weekprf weekprofile<br>
attr weekprf useTopics 1</code>
<br><br>
Die Abfrage mittels <code>get weekprf profile_names *</code> muss ergeben:<br>
''Winter:Plan_WZ,Sommer:Plan_WZ''
<br><br>
Wechselt man nun mit <code>set weekprf restore_topic Sommer</code> auf Sommer, wird der Plan ''Sommer:Plan_WZ'' an das Thermostat ''WT_Wohnzimmer'' übertragen.
<br>
Bei der Verwendung von Topics wird beim ersten Anlegen automatisch die Topic 'default' angelegt.
In dieser kann man beispielsweise Pläne ablegen, die bei mehreren Thermostaten oder anderen Kategorien verwendet werden sollen.
Mittels Referenzierung kann man auf dieser Pläne verweisen.
So könnte bspw. ''Sommer:Plan_WZ'' nur eine Referenz auf ''default:Fest_24h'' sein. <br>
Existiert ''default:Fest_24h'', wird der Verweis so angelegt:
:<code>set weekprf reference_profile default:Fest_24h Sommer:Plan_WZ</code>
Referenzen können nicht bearbeitet werden. Im Beispiel wäre der Plan ''Sommer:Plan_WZ'' nicht bearbeitbar.
 
== Befehle ==
=== Eingabeformat für Wochenprofile ===
Die Wochenprofile werden mit dem Befehl  
Die Wochenprofile werden mit dem Befehl  
:<code>set <name> profile_data <profilename> <json data></code>  
:<code>set <name> profile_data <profilename> <json data></code>  
angelegt. Die eigentlichen Daten liegen dabei in einer [https://de.wikipedia.org/wiki/JavaScript_Object_Notation JSON] Datenstruktur, die wie folgt aussieht:
angelegt. Die eigentlichen Daten müssen dabei in einer [https://de.wikipedia.org/wiki/JavaScript_Object_Notation JSON] Datenstruktur angegeben werden.
Für jeden Tag müssen die Schaltzeiten und die Solltemperaturen in Form von Listen angegeben werden.
Die Datenstruktur sieht bspw. wie folgt aus:


<pre style="width:300px;">{
<pre style="width:350px;">{
   "Sun": {
   "Sun": {
     "time": [
     "time": ["06:00","22:00","24:00"],
      "06:00",
     "temp": ["20.0","22.0","20.0"]
      "22:00",
      "24:00"
    ],
     "temp": [
      "20.0",
      "22.0",
      "20.0"
    ]
   },
   },
   "Sat": {
   "Sat": {
     "time": [
     "time": ["06:00","22:00","24:00"],
      "06:00",
     "temp": ["20.0","22.0","20.0"]
      "22:00",
      "24:00"
    ],
     "temp": [
      "20.0",
      "22.0",
      "20.0"
    ]
   },
   },
   "Thu": {
   "Thu": {
     "time": [
     "time": ["06:00","22:00","24:00"],
      "06:00",
     "temp": ["20.0","22.0","20.0"]
      "22:00",
      "24:00"
    ],
     "temp": [
      "20.0",
      "22.0",
      "20.0"
    ]
   },
   },
   "Fri": {
   "Fri": {
     "time": [
     "time": ["06:00","22:00","24:00"],
      "06:00",
     "temp": ["20.0","22.0","20.0"]
      "22:00",
      "24:00"
    ],
     "temp": [
      "20.0",
      "22.0",
      "20.0"
    ]
   },
   },
   "Tue": {
   "Tue": {
     "time": [
     "time": ["06:00","22:00","24:00"],
      "06:00",
     "temp": ["20.0","22.0","20.0"]
      "22:00",
      "24:00"
    ],
     "temp": [
      "20.0",
      "22.0",
      "20.0"
    ]
   },
   },
   "Wed": {
   "Wed": {
    "time": [
    "time": ["06:00","22:00","24:00"],
      "06:00",
     "temp": ["20.0","22.0","20.0"]
      "22:00",
      "24:00"
    ],
     "temp": [
      "20.0",
      "22.0",
      "20.0"
    ]
   },
   },
   "Mon": {
   "Mon": {
     "time": [
     "time": ["06:00","22:00","24:00"],
      "06:00",
     "temp": ["20.0","22.0","20.0"]
      "22:00",
      "24:00"
    ],
     "temp": [
      "20.0",
      "22.0",
      "20.0"
    ]
   }
   }
}
}

Version vom 31. Januar 2016, 15:27 Uhr


weekprofile
Zweck / Funktion
Verwaltung von Wochenprofilen für Heizungssteuerung
Allgemein
Typ Hilfsmodul
Details
Dokumentation EN / DE
Support (Forum) Frontends
Modulname 98_weekprofile.pm
Ersteller Risiko
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


Das Modul weekprofile stellt Funktionen zur Verwaltung von Wochenprofilen\Wochenplänen für Heizkörperthermostate zur Verfügung. Aktuell werden folgenden Systeme unterstützt:


Es ist möglich, verschiedene Wochenprofile anzulegen, zu kopieren, zu ändern und zu löschen. Außerdem können die erstellten Profile den entsprechenden Devices zugewiesen werden.
Hinweis:
Bei HomeMatic müssen die Kanäle "Clima" bzw. "_Climate" verwendet werden.
Weiterhin ist ein Zusammenspiel mit der HMInfo in Planung.


FHEMWEB Widget

Zur Bedienung des Moduls existiert ein passendes widget für FHEMWEB. Alle notwendigen Aufgaben wie bspw. Kopieren, Bearbeiten, Zuweisen, etc. können über die FHEMWEB Oberfläche erfolgen. Ein direkte Verwendung der Befehle für get und set ist somit nicht zwingend erforderlich.

Betriebsarten

Assoziiertes Master Gerät

Bei der Definition des Moduls kann ein unterstütztes Thermostat angegeben werden.

define <name> weekprofile device

In diesem Fall wird automatisch ein Wochenplan mit dem Namen 'master' angelegt. Der Wochenplan entspricht dem im device hinterlegtem Profil. Dieser spezielle Masterplan kann nicht gelöscht werden, da er immer den aktuellen Profil im device entspricht. Ändert man das Profil direkt über das device, wird der Masterplan automatisch aktualisiert. Wird der Masterplan über das Modul weekprofile geändert\gespeichert, wird das Profil automatisch zum assoziiertem Device übertragen. Wird in dieser Betriebsart kein spezielles Device bei den Befehlen angegeben, wird immer das assoziierte Device verwendet. So wird bspw. bei

set <name> send_to_device urlaub

das Profil 'urlaub' an das bei define angegebene Thermostat übertragen.

Standard Verwaltung

Diese Betriebsart ist für die einfache Verwaltung von Wochenplänen gedacht, welche dann an unterschiedliche Thermostate manuell übertragen werden können. Für diese Betriebsart sollte kein assoziiertes Master Gerät bei define angegeben werden.

define <name> weekprofile

In diesem Fall wird beim erstmaligen Anlegen ein Default-Profil mit dem Namen 'default' angelegt. Dieses bildet die Grundlage zur Erstellung weiterer Pläne durch kopieren. Existieren mindestens. 2 Profile, kann das Default-Profil gelöscht werden. Die einzelnen Wochenpläne können mittels send_to_device an ein oder mehrere Thermostate übertragen werden.

Topics

Topics oder Kategorien wie bspw. (Urlaub, Sommer, Winter, Party, etc.) dienen einer komplexeren Verwaltung von Wochenplänen. Dieses Feature muss mittels dem Atribute useTopics aktiviert werden, sonst ist nur die 'Standard Verwaltung' möglich. Innerhalb einer Topic kann es mehrere Wochenpläne geben. Sinnvollerweise für jedes Thermostat ein Wochenplan. Mit dem restore_topic kann man dann zwischen unterschiedlichen Kategorien wechseln. Die Wochenpläne werden automatisch an die Thermostate übertragen. Dazu muss im Thermostat ein User-Attribut 'weekprofile' mit dem Namen des verbundenen Wochenplans hinterlegt sein.
Beispiel:
User-Attribut im Thermostat definieren:
define WT_Wohnzimmer MAX WallMountedThermostat 0d657f
attr WT_Wohnzimmer userattr weekprofile
attr WT_Wohnzimmer weekprofile Plan_WZ


Weiter wird angenommen, dass es die Topics Winter und Sommer mit jeweils einem Wochenplan Namens 'Plan_WZ' im Modul 'weekprf' gibt.
define weekprf weekprofile
attr weekprf useTopics 1


Die Abfrage mittels get weekprf profile_names * muss ergeben:
Winter:Plan_WZ,Sommer:Plan_WZ

Wechselt man nun mit set weekprf restore_topic Sommer auf Sommer, wird der Plan Sommer:Plan_WZ an das Thermostat WT_Wohnzimmer übertragen.
Bei der Verwendung von Topics wird beim ersten Anlegen automatisch die Topic 'default' angelegt. In dieser kann man beispielsweise Pläne ablegen, die bei mehreren Thermostaten oder anderen Kategorien verwendet werden sollen. Mittels Referenzierung kann man auf dieser Pläne verweisen. So könnte bspw. Sommer:Plan_WZ nur eine Referenz auf default:Fest_24h sein.
Existiert default:Fest_24h, wird der Verweis so angelegt:

set weekprf reference_profile default:Fest_24h Sommer:Plan_WZ

Referenzen können nicht bearbeitet werden. Im Beispiel wäre der Plan Sommer:Plan_WZ nicht bearbeitbar.

Befehle

Eingabeformat für Wochenprofile

Die Wochenprofile werden mit dem Befehl

set <name> profile_data <profilename> <json data>

angelegt. Die eigentlichen Daten müssen dabei in einer JSON Datenstruktur angegeben werden. Für jeden Tag müssen die Schaltzeiten und die Solltemperaturen in Form von Listen angegeben werden. Die Datenstruktur sieht bspw. wie folgt aus:

{
  "Sun": {
    "time": ["06:00","22:00","24:00"],
    "temp": ["20.0","22.0","20.0"]
  },
  "Sat": {
    "time": ["06:00","22:00","24:00"],
    "temp": ["20.0","22.0","20.0"]
  },
  "Thu": {
    "time": ["06:00","22:00","24:00"],
    "temp": ["20.0","22.0","20.0"]
  },
  "Fri": {
    "time": ["06:00","22:00","24:00"],
    "temp": ["20.0","22.0","20.0"]
  },
  "Tue": {
    "time": ["06:00","22:00","24:00"],
    "temp": ["20.0","22.0","20.0"]
  },
  "Wed": {
     "time": ["06:00","22:00","24:00"],
    "temp": ["20.0","22.0","20.0"]
  },
  "Mon": {
    "time": ["06:00","22:00","24:00"],
    "temp": ["20.0","22.0","20.0"]
  }
}

Es handelt sich dabei um eine unsortierte Liste von "Tages-Objekten", die wiederum eine unsortierte Liste von Schlüssel-Werte Paaren enthält. Die beiden verwendeten Schlüssel "time" und "temp" für Zeit und Temperatur verweisen jeweils auf eine sortierte Liste mit Werten.

Der Schlüssel "time" enthält die Liste der gewünschten Zeitpunkte, zu denen ein Temperaturwechsel stattfinden soll. Die Zeitangaben müssen im Format "hh:mm" angegeben werden. Falls für den ganzen Tag nur eine Temperatur verwendet werden soll, so ist als Zeitpunkt "24:00" anzugeben.

Der Schlüssel "temp" enthält die Temperaturen, die zu den in "time" hinterlegten Schaltzeitpunkten eingestellt werden sollen. Dabei entspricht die Reihenfolge der Temperaturen der Reihenfolge der Zeitpunkte in "time".

Zur Übergabe an FHEM sollte die JSON Struktur von sämtlichen Formatierungen (Zeilenumbrüche, Tabs, überflüssige Leerzeichen) bereinigt werden, so dass ein einzeiliger String entsteht. Für das oben angegebene Beispiel würde das dann so aussehen:

{"Sun":{"time":["06:00","22:00","24:00"],"temp":["20.0","22.0","20.0"]},"Sat":{"time":["06:00","22:00","24:00"],"temp":["20.0","22.0","20.0"]},"Thu":{"time":["06:00","22:00","24:00"],"temp":["20.0","22.0","20.0"]},"Fri":{"time":["06:00","22:00","24:00"],"temp":["20.0","22.0","20.0"]},"Tue":{"time":["06:00","22:00","24:00"],"temp":["20.0","22.0","20.0"]},"Wed":{"time":["06:00","22:00","24:00"],"temp":["20.0","22.0","20.0"]},"Mon":{"time":["06:00","22:00","24:00"],"temp":["20.0","22.0","20.0"]}}

Für eine einfache Bearbeitung der JSON Daten empfiehlt sich ein JSON-Editor wie z.B. [1].