MAX! Temperatur-Scanner: Unterschied zwischen den Versionen
John (Diskussion | Beiträge) |
John (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 5: | Zeile 5: | ||
* kontinuierliche Erfassung von Temperatur und Ventil-Position | * kontinuierliche Erfassung von Temperatur und Ventil-Position | ||
* Berücksichtigung der System-Ressourcen (dutycycle, credits) | * Berücksichtigung der System-Ressourcen (dutycycle, credits) | ||
* | * CUL und CUBE werden unterstützt | ||
* gleichberechtigte zeitliche Bearbeitung der Thermostate (Round-Robin-Prinzip) | * gleichberechtigte zeitliche Bearbeitung der Thermostate (Round-Robin-Prinzip) | ||
* Ermittlung der optimalen Scan-Rate über die Anzahl der eingebundenen Thermostate | * Ermittlung der optimalen Scan-Rate über die Anzahl der eingebundenen Thermostate | ||
* 2 Scan-Modi stehen zur Verfügung (DesiredChange + ModeChange) | |||
== Zielsetzung des WIKI-Artikels == | == Zielsetzung des WIKI-Artikels == | ||
Zeile 15: | Zeile 16: | ||
== Aktuelle Version == | == Aktuelle Version == | ||
Im Anhang zu folgendem Forumsbeitrag [http://forum.fhem.de/index.php/topic,11624.msg100703.html#msg100703 MaxScan Version 1.04c] | <strike> | ||
Im Anhang zu folgendem Forumsbeitrag [http://forum.fhem.de/index.php/topic,11624.msg100703.html#msg100703 MaxScan Version 1.04c]</strike> | |||
ToDo | |||
=== Voraussetzungen === | === Voraussetzungen === | ||
==== Qualität der Funkverbindung ==== | ==== Qualität der Funkverbindung ==== | ||
Zeile 31: | Zeile 33: | ||
Die Ursache hierfür kann neben funktechnischen Problem auch sein, wenn ein anderer Mechanismus ausserhalb des Scanners permanent sendet, ohne Rücksicht auf die Credits. | Die Ursache hierfür kann neben funktechnischen Problem auch sein, wenn ein anderer Mechanismus ausserhalb des Scanners permanent sendet, ohne Rücksicht auf die Credits. | ||
==== | ==== Einrichten des Thermostat-internen Zeitschaltprogrammes ==== | ||
Anders als bei den Vorgängerversionen <=1.04 ist nun ab Version 1.05 zwingend das Thermostat-interne | |||
Zeitschaltprogramm notwendig.<br /><br /> | |||
D.h. dies muss in den Readings des Thermostats erscheinen.<br /> | |||
Der Scanner greift ausgiebig auf diese Informationen zurück.<br /> | |||
Ein manuelles verstellen des Sollwertes ist nur bis zu dem nächsten Schaltzeitpunkt des Wochenprogramms | |||
gültig. <br /> | |||
Danach wird je nach ScanMode das Thermostat selbst oder der Scanner den Sollwert gemäß den | |||
Einstellungen des Wochenprogramms ändern. | |||
<br /><br /> | |||
Das bei früheren Versionen eingesetzte Heating_Control kann somit entfallen. | |||
=== Inbetriebnahme === | === Inbetriebnahme === | ||
Zeile 41: | Zeile 50: | ||
* Bei den Thermostaten, die gescannt werden sollen, das Attribut scanTemp setzen via | * Bei den Thermostaten, die gescannt werden sollen, das Attribut scanTemp setzen via | ||
<pre>attr VT_HW scanTemp 1</pre> | <pre>attr VT_HW scanTemp 1</pre> | ||
* das Wochenprogramm im Thermostat | * das Wochenprogramm im Thermostat nach den Bedürfnissen einstellen | ||
* auf''' keinen''' Fall das Attribut keepAuto setzen | * auf''' keinen''' Fall das Attribut keepAuto setzen | ||
* | * mit dem userReading "onlyAutoMode" kann der Scan-Modus ModeChange festgelegt werden | ||
<pre> | <pre>attr HT.JOHN userReadings onlyAutoMode { return "1";;}</pre> | ||
* ist ein ShutterContact mit dem Thermostat assoziiert, dann muss man dies bekannt machen mit dem UserReading | * ist ein ShutterContact mit dem Thermostat assoziiert, dann muss man dies bekannt machen mit dem UserReading | ||
<pre>attr VT_HW userReadings watchShutter { return "SHUTTER.HW";;}</pre> | <pre>attr VT_HW userReadings watchShutter { return "SHUTTER.HW";;}</pre> | ||
Zeile 52: | Zeile 60: | ||
'''Hinweis'''<br /> | '''Hinweis'''<br /> | ||
Je | Je kleiner der Wert von Attribut verbose, umso weniger Ausgaben erhält man in der Log-Datei. | ||
== Mechanismen == | == Mechanismen == | ||
Zeile 66: | Zeile 72: | ||
=== Der Lösungsansatz === | === Der Lösungsansatz === | ||
==== Triggerung per Mode-Umschaltung (ModeChange) | |||
Hier wird der Ansatz verfolgt, die Betriebsart des Thermostats regelmässig umzuschalten via<br /><br /> | |||
AUTO ==> MANU<br /> | AUTO ==> MANU<br /> | ||
<Wartezeit mindestens 3 Minuten><br /> | <Wartezeit mindestens 3 Minuten><br /> | ||
Zeile 74: | Zeile 81: | ||
'''Allerdings:''' Die Umschaltung des Modes kann nur zusammen mit der Angabe des Sollwertes erfolgen. | '''Allerdings:''' Die Umschaltung des Modes kann nur zusammen mit der Angabe des Sollwertes erfolgen. | ||
==== Triggerung per Sollwert-Umschaltung (DesiredChange) | |||
Durch Änderung des Sollwertes wird kann ebenso die Übertragung des Istwertes am Thermostat initiiert werden.<br /> | |||
Der Scanner ändert den vorgegebenen Sollwert um 0.5 Grad.<br/> | |||
Er wird hierbei die Änderung immer in die Richtung einer sich vergroessernden Regelabweichung durchführen. | |||
''' | |||
Beispiel:''' | |||
Sollwert im Thermostat nach Wochenprofil : 18 | |||
Fall A: | |||
Istwert 17 | |||
Sollwert A von Scanner gesetzt : 18.5 | |||
Sollwert B von Scanner gesetzt : 18.0 | |||
Der Scanner wechselt also von 18 auf 18.5 und zurück. | |||
Fall B: | |||
Istwert 19 | |||
Sollwert A von Scanner gesetzt : 17.5 | |||
Sollwert B von Scanner gesetzt : 18.0 | |||
Der Scanner wechselt also von 18 auf 17.5 und zurück. | |||
=== Ergebnis === | === Ergebnis === |
Version vom 1. Dezember 2013, 18:23 Uhr
Der MAX! Temperatur-Scanner ist ein Perl-Skript, das die kontinuierliche Temperatur-Aufzeichnung von MAX-Thermostaten ermöglicht.
Features
- kontinuierliche Erfassung von Temperatur und Ventil-Position
- Berücksichtigung der System-Ressourcen (dutycycle, credits)
- CUL und CUBE werden unterstützt
- gleichberechtigte zeitliche Bearbeitung der Thermostate (Round-Robin-Prinzip)
- Ermittlung der optimalen Scan-Rate über die Anzahl der eingebundenen Thermostate
- 2 Scan-Modi stehen zur Verfügung (DesiredChange + ModeChange)
Zielsetzung des WIKI-Artikels
Hier werden Fragen und Erkenntnisse zum Thema dargestellt, da der Forums-Eintrag für viele Anwender nicht mehr überschaubar ist.
Der Artikel wird sukzessive erweitert.
Aktuelle Version
Im Anhang zu folgendem Forumsbeitrag MaxScan Version 1.04c
ToDo
Voraussetzungen
Qualität der Funkverbindung
In der Log-Datei sollten möglichst wenig Einträge der nachfolgenden Form auftreten
2013.11.01 02:12:33 2: CUL_MAX_SendQueueHandler: Missing ack from 0905a5 for 0b0b0040123456xxxxxxxxx
Diese weisen auf eine schlechte Funkverbindung hin. In diesem Fall wird der CUL bis zu 3x den Befehl wiederholen und dabei jede Menge Credits verbraten. Damit wird der Scanner inaktiv bleiben, da häufig zu wenig Credits vorhanden sind.
Ausreichend Credits
Der Scanner kann nicht aktiv werden, wenn gehäuft Log-Einträge der nachfolgenden Form auftreten.
2013.11.01 14:12:50 2: CUL_MAX_SendQueueHandler: Not enough credit! credit10ms is 6, but we need 121. Waiting 115 seconds.
Die Ursache hierfür kann neben funktechnischen Problem auch sein, wenn ein anderer Mechanismus ausserhalb des Scanners permanent sendet, ohne Rücksicht auf die Credits.
Einrichten des Thermostat-internen Zeitschaltprogrammes
Anders als bei den Vorgängerversionen <=1.04 ist nun ab Version 1.05 zwingend das Thermostat-interne
Zeitschaltprogramm notwendig.
D.h. dies muss in den Readings des Thermostats erscheinen.
Der Scanner greift ausgiebig auf diese Informationen zurück.
Ein manuelles verstellen des Sollwertes ist nur bis zu dem nächsten Schaltzeitpunkt des Wochenprogramms
gültig.
Danach wird je nach ScanMode das Thermostat selbst oder der Scanner den Sollwert gemäß den
Einstellungen des Wochenprogramms ändern.
Das bei früheren Versionen eingesetzte Heating_Control kann somit entfallen.
Inbetriebnahme
- aktuell freigegebene Version von 99_UtilsMaxScan.pm in das Verzeichnis /opt/fhem/FHEM kopieren.
- Bei den Thermostaten, die gescannt werden sollen, das Attribut scanTemp setzen via
attr VT_HW scanTemp 1
- das Wochenprogramm im Thermostat nach den Bedürfnissen einstellen
- auf keinen Fall das Attribut keepAuto setzen
- mit dem userReading "onlyAutoMode" kann der Scan-Modus ModeChange festgelegt werden
attr HT.JOHN userReadings onlyAutoMode { return "1";;}
- ist ein ShutterContact mit dem Thermostat assoziiert, dann muss man dies bekannt machen mit dem UserReading
attr VT_HW userReadings watchShutter { return "SHUTTER.HW";;}
- FHEM neu starten
Hinweis
Je kleiner der Wert von Attribut verbose, umso weniger Ausgaben erhält man in der Log-Datei.
Mechanismen
Das Problem
Der Hersteller der MAX-Thermostate hat diese so konzipiert, dass die gemessene Temperatur und Ventilstellung nur übertragen werden, wenn sich Folgendes ändert:
- die Ventilstellung
- die Betriebsart (mode: auto,manu,temporary,boost)
Es kann der Fall eintreten, dass über Stunden keine Temperatur an FHEM übertragen wird.
Der Lösungsansatz
==== Triggerung per Mode-Umschaltung (ModeChange)
Hier wird der Ansatz verfolgt, die Betriebsart des Thermostats regelmässig umzuschalten via
AUTO ==> MANU
<Wartezeit mindestens 3 Minuten>
MANU ==> AUTO
Dies veranlasst das Thermostat regelmässig die gewünschten Werte an FHEM (den gepaarten Transceiver) zu senden.
Allerdings: Die Umschaltung des Modes kann nur zusammen mit der Angabe des Sollwertes erfolgen.
==== Triggerung per Sollwert-Umschaltung (DesiredChange)
Durch Änderung des Sollwertes wird kann ebenso die Übertragung des Istwertes am Thermostat initiiert werden.
Der Scanner ändert den vorgegebenen Sollwert um 0.5 Grad.
Er wird hierbei die Änderung immer in die Richtung einer sich vergroessernden Regelabweichung durchführen.
Beispiel:
Sollwert im Thermostat nach Wochenprofil : 18
Fall A: Istwert 17 Sollwert A von Scanner gesetzt : 18.5 Sollwert B von Scanner gesetzt : 18.0 Der Scanner wechselt also von 18 auf 18.5 und zurück.
Fall B:
Istwert 19
Sollwert A von Scanner gesetzt : 17.5
Sollwert B von Scanner gesetzt : 18.0
Der Scanner wechselt also von 18 auf 17.5 und zurück.
Ergebnis
ohne Scanner
mit Scanner
Ressourcen
Die Sendezeit jedes Teilnehmers ist auf 1% begrenzt.
Konkret bedeutet dies, dass ein CUL ca. 33 Telegramme pro Stunde senden kann. Der MAX-Scanner darf nicht alle Ressourcen für sich beanspruchen, sondern sieht seine Aufgabe als nachrangig.
Erst wenn mehr als 300 Credits (von max. 900 möglichen) zur Verfügung stehen, wird das Skript aktiv.
Fragen und Antworten
Was passiert, wenn der Sollwert am Thermostat manuell verstellt wird ?
Wenn der Sollwert manuell am Thermostat verändert wird, kann es bis zu 3 Minuten dauern, bis dieser an FHEM gemeldet wird. Wenn der Scanner in dieser Wartezeit aktiv wird, wird er den soeben geänderten Sollwert überschreiben.
Wenn HeatingControl (Zeitschaltprogramm von FHEM) oder das Thermostat-interne Zeitschaltprogramm aktiv ist, kann es ebenfalls zum Überschreiben des Sollwerts kommen.
Mehrere Thermostate in einer Gruppe ?
Wenn mehrere Thermostate in einer Gruppe vereinigt sind (Raumlösung nach ELV), dann darf nur ein einziges Thermostat vom Scanner bedient werden, da die anderen Thermostate von diesem synchronisiert werden. Also das Attribut "scanTemp" nur bei einem Repräsentanten der Gruppe aktivieren.
Was ist zu tun wenn, Thermostate zusammen mit einem Wandthermostat eingesetzt werden ?
In diesem Fall ist der Scanner überflüssig, da das Wandthermostat ohnehin eine detaillierte Kurve des Istwertes liefert.
Sind Fensterkontakte sinnvoll ?
Auf den ersten Blick scheinen sie das zu sein, da man meint Energie zu sparen. Hierzu gibt es jedoch auch eine andere Betrachtungsweise wie dieser Link zeigt: Sinn und Unsinn von Fensterkontakten
Das Thermostat ist auch ohne Fensterkontakt mit Hilfe der "Temperatur-Sturz-Erkennung" in der Lage zu festzustellen, dass ein Fenster offen ist. Der zuvor genannte Link präferiert diese Methode.
Aber auch die Temperatur-Sturz-Erkennung stellt hinterher wieder fix die 17 Grad ein.
Ausserdem ist diese wie hier im Beispiel im Hochsommer angesprungen (Tür wurde zum Abkühlen geöffnet).
Diese Problem kann man vermutlich mit einer WindowOpenDuration von 0 beheben, ausserdem ist im Hochsommer die Heizung ohnehin ausgeschalten.
Folgende Nachteile haben die Max-Fensterkontakte:
- es gibt keine Verzögerungszeit, das Thermostat schliesst sofort, wenn das Fenster geöffnet wird. Das mag bei einem normalen Fenster noch akzeptabel sein, nicht aber bei Türen.
- wenn das Thermostat im Auto-Modus ist und der Fensterkontakt geht von aktiv zu inaktiv(Fenster wieder geschlossen), dann stellt das Thermostat fix 17 Grad ein, also nicht den zuvor eingestellten Sollwert (Dieses Verhalten betrachten viele als Design-Fehler)
Kann der Scanner mit Fensterkontakten umgehen ?
Der Scanner versucht das Problem der fixen 17 Grad nach Schliessen des Fensters zu korrigieren. Hierzu braucht er jedoch die Information welcher Fensterkontakt für das jeweilige Thermostat zuständig ist.
Ausserdem wäre es fatal, wenn der Scanner in der Phase des offenen Fenster den Sollwert überschreiben würde. Bei offenen Fenster ist der Scanner inaktiv, er schaltet also den Modus nicht mehr um. Da auch HeatingControl in dieser Phase einen neuen Sollwert setzen könnte, fängt der Scanner auch dieses ab, merkt sich den Sollwert und setzt ihn verzögert, nachdem das Fenster wieder geschlossen wurde.
Was ist denn, wenn ich noch einen zweiten Fensterkontakt habe ?
Derzeit wird nur 1 ShutterContact unterstützt. Möglicherweise wird in einer der nächsten Versionen die Funktionalität erweitert.
Was passiert, wenn der Boost-Mode aktiviert wurde ?
Sobald dies der Scanner erkennt, stellt er seine Aktivität ein, bis wieder der Modus Auto oder Manu erscheint.
Im Kochtopf
Hier gibt es Information zur aktuell bearbeiteten BETA-Version
- Unterstützung für CUBE (erledigt)
- Unterstützung des Thermostat-internen Wochenschaltprogramms (in Arbeit)
Ausblick
Scanner als Modul ausführen
- Scanner wird nicht mehr als Skript, sondern als Modul ausgeführt.
- pro Thermostat ist dann eine Definition in fhem.cfg vorzunehmen.
- Wochenprofil als Attribut
- automatischer Abgleich des Wochenprofils mit dem Thermostat
- Fensterkontakt zuordnen
- ECO-Taster integrieren