kleiner Helfer set desiredTemperature

Begonnen von Wzut, 07 Oktober 2017, 18:07:34

Vorheriges Thema - Nächstes Thema

Wzut

Die Idee entstand durch einen Wunsch im Anfängerforum ( https://forum.fhem.de/index.php/topic,77340.0.html ) im Webfrontend eine Zeitbegrenzung für 
desiredTemperature zu setzen.
Der kleine Helfer ist recht kompakt, kann definiert werden für einzelne MAX! Geräte oder aber für alle HTs / WTs bzw HT&WT und macht das manuelle Anlegen von extra dummys, notifys und ats überflüssig.
Installation : angehängte Datei 98_MAX_temp.pm herunterladen und in den FHEM Ordner zu den anderen Modulen kopieren.
Anschliessend in der FHEM Kommandozeile "reload 98_MAX_Temp" eingeben oder FHEM neu starten.

DEFINE :
define <name> MAX_temp  ( alle MAX! HTs und WTs )
define <name> MAX_temp  HT ( alle MAX! HTs )
define <name> MAX_temp  WT ( alle MAX! WTs )
define <name> MAX_temp  123456 (ein MAX! Device , 123456 = MAX ID )

Legt das neue Device mit einigen vordefinierten Attributen an.

ATTRIBUTE
maxHour - 6,12,24,48 max Zeit in Stunden für die Until Liste in der Zukunft
createAT 0,1 - Legt bei 1 ein zusätzliches temporäres at an um das Gerät wieder in den mode auto zu schalten.
autoAT_room - Legt den Raum für das temporäre at fest , default ist Unsorted

STATE
Wird ein Device ausgewählt, werden von diesem Werte abgerufen und in state abgelegt und in der Übersicht angezeigt , dies sind :
reading mode / attr keepAuto / reading temperature / reading  desiredTemperature   

BEDIENUNG
1. als erstes ist immer das enstsprechende MAX! Device auszuwählen ( ausser das Modul wurde nur für ein einzelnes Device definiert )
2. die gewünschte neue desiredTemperature auswählen
3. in der zweiten DropDown Liste ein Datum/Zeit auswählen
4. send drücken , die gewählte Temperatur wird übertragen , der  Wert wird mit --- überschrieben und der state ändert sich nach ein paar Sekunden sobald das Device den neuen Wert übernommen hat.
Ist das Attribut createAt auf 1 gesetzt so wird zusätzlich ein at erzeugt das nach Ablauf das Device wieder in den mode auto schaltet.
I.d.R sollte das ohne das zusätzliche at gehen, testet es einfach mal mit und ohne

Schritt 3 kann auch übersprungen werden, dann hat man die gleiche Funktion wie wenn man die neue Temperatur direkt am MAX Device setzt.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

hopgeq

wow, funktioniert super und ist eine tolle Einstellmöglichkeit für die Max-Ventile! Danke! Wär was fürs Wiki.

hopgeq

Hallo Wzut,
ich würde gerne das DropDown zum Vorwählen der Zeit noch etwas verändern. Kann ich einfach diesen Teil

  for ($i=0;$i<$maxHour;$i++)
  {
   (undef, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, undef, undef, undef) = localtime(time+($i*3600)+($m*60)-$Sekunden);
   $t .= sprintf("%02d.%02d.%02d.%02d\:%02d",$Monatstag,$Monat+1,$Jahr+1900,$Stunden,$Minuten).",";
  }

nach Belieben verändern oder hätte das irgendwelche Nebenwirkungen?
Mir schwebt sowas vor:


29.11.2017 09:00 # am Anfang stündlich
29.11.2017 10:00
29.11.2017 11:00
..
30.11.2017 00:00 # ab dem Folgedatum alle 3 Stunden
30.11.2017 03:00 # (nachts brauche ich nicht so eine zeitliche Genauigkeit)
30.11.2017 06:00
..
03.12.2017 12:00 # das ganze für ein paar Tage in die Zukunft
03.12.2017 15:00


Wurde maxHour von 48 auf 24 Stunden reduziert? Hatte das Probleme gemacht?

Wzut

natürlich kannst du dir $t so zusammen bauen wie es für dich am sinnvollsten ist.
D.h. die erste Schleife z.B. 24 x 1 laufen lassen und dann einfach eine weitere darunter mit einer anderen Schrittweite.
for ($i=0;$i<24;$i++)
  {
   (undef, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, undef, undef, undef) = localtime(time+($i*3600)+($m*60)-$Sekunden);
   $t .= sprintf("%02d.%02d.%02d.%02d\:%02d",$Monatstag,$Monat+1,$Jahr+1900,$Stunden,$Minuten).",";
  }
for ($i=24;$i<48;$i++)
  {
   (undef, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, undef, undef, undef) = localtime(time+($i*10800)+($m*60)-$Sekunden);
   $t .= sprintf("%02d.%02d.%02d.%02d\:%02d",$Monatstag,$Monat+1,$Jahr+1900,$Stunden,$Minuten).",";
  }
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

bismosa

Hallo,

auch von mir ein Danke für dieses Modul! Echt eine tolle Möglichkeit die Thermostate einzustellen!
Richtig gut finde ich, das bei dieser Einstellung die Temperatur der Thermostate erhalten bleibt auch wenn ein Fenster zwischendurch geöffnet wurde! (Während es offen ist, wird die windowOpenTemperature genommen, aber danach wieder auf den temporären Sollwert gestellt)

Folgendes ist mir aber noch aufgefallen:
Setzt man eine neue Temperatur für einen bestimmten Zeitraum und ändert diese nachträglich ohne Zeitraum, wechselt das Thermostat (trotz keepAuto 1) auf Modus "manual".
Dies tritt auf, wenn nur ein
set WT_xy desiredTemperature 22
gesetzt wird. Wir ein
set WT_xy desiredTemperature auto 22
gesetzt, bleibt der Thermostat schön im Automatikbetrieb.

Wäre also vielleicht besser, wenn es die Auswahlmöglichkeit für Auto|Manual zusätzlich gibt?

Vielen Dank!

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

bismosa

#5
Hallo,

mich hat es nun doch gereizt. Daher habe ich mich mal intensiver mit dem Modul auseinandergesetzt. Vieles ist sehr neu für mich. Daher bitte ich um Verzeihung wenn ich irgendwas nicht berücksichtigt habe.

Ich habe das Modul jetzt mal angepasst. Setzen kann man:
HT/WT | <auto|manual> | <temp|eco|comfort|boost|off|on> | <until>
Daher habe ich jetzt den Modus in ein extra DropDown Feld genommen. Standardmäßig ist hier "auto" gesetzt.

Wenn ein <until> ausgewählt wird, wird auto|manual ignoriert, da der Thermostat eh in den temporary-Modus geht.

Möglich ist es auch, einen Thermostaten nur in den Modus "manual" oder "auto" zu setzen. Die Temperatur ist dabei nur optional.

Da ich einen Wandthermostaten einsetze, möchte ich bestimmte Heizkörper (die von dem Thermostaten gesteuert werden) einfach ausblenden. Daher habe ich das Attribut "ignoreDevices" hinzugefügt. Diese Geräte tauchen dann nicht mehr in der Auswahl auf.

Sobald ein Thermostat gewählt wird, wird die desiredTemperature gleich ausgewählt. Dann muss man bei kleineren Temperaturänderungen nicht mehr so viel scrollen.

@Wzut
Ich würde es begrüßen, wenn Du die Änderungen übernimmst und das ganze vielleicht auch global verfügbar machst und eincheckst. Ich könnte mir vorstellen, das auch andere dieses Hilfsmodul sehr nützlich finden könnten!

Gruß
Bismosa

[edit]
Bild mit eingefügt
[/edit]
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

bismosa

Hallo,

da ich gerade für eine Woche einige Heizungen runterdrehen wollte habe ich das Modul noch etwas angepasst.
Ich habe jetzt Datum und Uhrzeit getrennt. Dadurch kann man jetzt auch für einen längeren Zeitraum den Urlaubsmodus aktivieren.
Dafür ist ein neues Attribut "maxDay" hinzugekommen. Hier lässt sich steuern für welchen Zeitraum die Datumsauswahl erfolgen soll.
Nur wenn eine Uhrzeit ausgewählt wird, wird die Zeit berücksichtigt.

Solltet ihr das Modul bereits im Einsatz haben...einfach die Datei austauschen, "reload 98_MAX_Temp" ausführen und das WebCmd anpassen: "device:mode:desTemperature:untilDay:until:send"

Viel Spaß damit.

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

ichauch

Hallo,
erstmal vielen Dank an all die fleißigen Helfer und Entwickler in Fhem. Bisher habe ich im Forum, Wiki und Doku alles ( wenn auch nicht auf Anhieb) gefunden. Doch jetzt muss ich doch mal Fragen.
Ich habe meine Heizungssteuerung auf Max WT und HT mit Anbindung über einen Cul umgestellt.
Nun habe ich dieses Modul ausprobiert, da immer bei Temperaturänderung über Fhem die Max-Komponenten in den Manual-Mode gehen. Ich möchte aber trotzdem die vordefinierten Schaltzeitenbehalten. Bei Umstellen auf Comfort-Temperatur an den Max-Komponenten funktioniert das.

Das Modul hier funktioniert bei den ersten Tests ohne Probleme.

Aber wie bekomme ich in das 1. Auswahlfeld die Alias-Namen der Max Komponenten? Die Max-ID kann ich nicht auseinanderhalten (meine Familie schon garnicht) .

Nochmals vielen Dank für die Entwicklung.

Gruß Micstra

bismosa

Hallo,

du kannst das Verhalten ändern indem du das Attribut "keepAuto" setzt.  Dann bleiben die Thermostate auch im Automatikbetrieb und ändern sich automatisch beim nächsten Zeitschaltpunkt zurück.

Die Thermostate lassen sich einfach umbenennen.

rename MAX_1ab326 Max_HT_Buero

Wie Du die Benennung machst ist Dir überlassen. GGf. könnte man noch über Alias was machen.

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

ichauch

Hallo und vielen Dank für die schnelle Antwort.

"rename" hat mir gefehlt. Ich muss halt meine Komponenten jetz neu Umbenennen, aber das bekomme ich hin.

Nochmals Danke und schönen Gruß

Micstra

Georges

#10
Hello
Zu Hause ist der zwölfte Parameter noch in? auf staatlicher Ebene

bismosa

Hello,
i hope i have understood your question...

This are only readings from the selected Device.
mode / keepAuto / temperature / desiredTemperature

If you have keepAuto not selected, the value is "?".

Regards
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

Georges

#12
But how to KeepAuto select this mode that's what I can not do ?


bismosa

Hello,

keepAuto is an attribut from the Max device. Not from this helper.
If you have keepAuto set and you change the temperature from the HeatingThermostat the mode "Auto" will be kept and the temperature will change on next week-programm point.
Zitat
f the keepAuto attribute is 1 and the device is currently in auto mode, 'desiredTemperature <value>' behaves as 'desiredTemperature auto <value>'. If the 'manual' keyword is used, the keepAuto attribute is ignored and the device goes into manual mode.

For this helper this attribut is not relevant. You set auto/manual in the options.

Regards
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

Georges

Thanks for those quick answers

More questions
Is it possible to define:
            an alias
            titles