SetTempList HM-CC-TC

Begonnen von AbeamStart, 13 Oktober 2013, 12:50:59

Vorheriges Thema - Nächstes Thema

matriedel

Hi

Ich habe mir einen Webschalter gebastelt bei dem ich die Heizung ein und ausschalten kann.
Das funktioniert aber die Zeitdauer bis das Kommando umgesetzt wird dauert einige Zeit.
Gibt es eine Möglichkeit die sofortige Befehlsausführung zu erzwingen?

Als weitere Optimierung würde ich beim Einschalten der Heizung gerne wieder die Temperatur einstellen in der Temperaturliste im Thermostat hinterlegt ist. Momentan wird bei meiner Implementierung immer der gleiche Wert zugewiesen. Ist so etwas möglich?

Viele Grüße

Matthias


define SchalterHeizungMatthias dummy
attr SchalterHeizungMatthias alias Heizung Matthias
attr SchalterHeizungMatthias eventMap on:on off:off
attr SchalterHeizungMatthias room Matthias

define HeizungEinMatthias notify SchalterHeizungMatthias.on {fhem ("set Heizung_nSW_Matthias_ClimRT_tr desired-temp 21 ;; set Heizung_sSW_Matthias_ClimRT_tr desired-temp 21;; set Heizung_sSW_Matthias_ClimRT_tr set_burstXmit ;; set Heizung_nSW_Matthias_ClimRT_tr set_burstXmit")}
define HeizungAusMatthias notify SchalterHeizungMatthias.off {fhem ("set Heizung_nSW_Matthias_ClimRT_tr desired-temp 5 ;; set Heizung_sSW_Matthias_ClimRT_tr desired-temp 5 ;; set Heizung_sSW_Matthias_ClimRT_tr set_burstXmit ;; set Heizung_nSW_Matthias_ClimRT_tr set_burstXmit")}

martinp876

define HeizungEinMatthias notify SchalterHeizungMatthias.on {
fhem ("
set Heizung_nSW_Matthias_ClimRT_tr desired-temp 21 ;;
set Heizung_sSW_Matthias_ClimRT_tr desired-temp 21;;
set Heizung_sSW_Matthias_ClimRT_tr set_burstXmit ;;
set Heizung_nSW_Matthias_ClimRT_tr set_burstXmit")}

define HeizungAusMatthias notify SchalterHeizungMatthias.off {fhem ("
set Heizung_nSW_Matthias_ClimRT_tr desired-temp 5 ;;
set Heizung_sSW_Matthias_ClimRT_tr desired-temp 5 ;;
set Heizung_sSW_Matthias_ClimRT_tr set_burstXmit ;;
set Heizung_nSW_Matthias_ClimRT_tr set_burstXmit")}

was soll das Kommando set Heizung_nSW_Matthias_ClimRT_tr set_burstXmit ?
hast du es einmal probiert?
warum steht alles 2-mal drin? hat das einen besonderen sinn?

wäre
define HeizungAusMatthias notify SchalterHeizungMatthias.off {fhem ("\
set Heizung_nSW_Matthias_ClimRT_tr desired-temp 5 ;; \
set Heizung_nSW_Matthias_ClimRT_tr burstXmit")}

sinnvoll?
tip: probiere einmal die kommandos, die du in ein notify steckst

matriedel

>was soll das Kommando set Heizung_nSW_Matthias_ClimRT_tr set_burstXmit ?
>hast du es einmal probiert?

Meine Hoffnung war, dass die Kommandos damit schneller bzw. umgehend abgearbeitet werden.

>warum steht alles 2-mal drin? hat das einen besonderen sinn?
Ich habe zwei Thermostate mit der Bezeichnung ..._nSW... und ..._sSW...

matriedel

>was soll das Kommando set Heizung_nSW_Matthias_ClimRT_tr set_burstXmit ?
>hast du es einmal probiert?

Meine Hoffnung war, dass die Kommandos damit schneller bzw. umgehend abgearbeitet werden.

>warum steht alles 2-mal drin? hat das einen besonderen sinn?
Ich habe zwei Thermostate mit der Bezeichnung ..._nSW... und ..._sSW...

matriedel

> tip: probiere einmal die kommandos, die du in ein notify steckst

Beide Thermostate werden werden jetzt innerhalb von 30 sec umgestellt - das ist schon ganz gut.
Bis das Webinterface vollständig aktualisiert ist vergehen aber einige Minuten.

Das Attribut autoReadReg auf "3_onChange" gesetzt scheint nicht viel zu helfen.

martinp876

beim RT kann man die aktuelle Temp nicht auslesen -man muss warten, bis der RT sie meldet. Das passiert so alle 2,5 min.

30sec ist mir burstXmit eine lange zeit.

matriedel

O.K. vielen Dank

Hast du eventuell auch noch einen Tipp wie man beim Einschalten der Heizung wieder die Temperatur einstellt die in der Temperaturliste im Thermostat hinterlegt ist?
Momentan wird bei meiner Implementierung immer der gleiche fest codierte Wert zugewiesen.
Gibt es eine Funktion die in Abhängigkeit von Tag und Uhrzeit aus der Temperaturliste die entsprechende Temperatur zurückliefert?

martinp876

nicht klar, was du meinst.

am web-interface sollte immer die eingestellte temp zu sehen sein.
wenn du im auto-mode bist und jemand hat die temp verstellt sollte wieder die entsprechende temp eingestellt werden indem du auf auto-mode schaltest.

FHEM wertet die temp-list nicht aus, das macht der TC

matriedel

Vielen Dank - das klappt

Ich muss einfach mit ,,set Heizung_nSW_Matthias_ClimRT_tr controlMode auto" nochmals auf  auto-mode schalten (auch wenn ich den ,,auto-mode" gar nicht verlassen habe) und schon läuft wieder alles nach der Temperaturkurve.

marac

Zitat von: martinp876 am 28 Oktober 2013, 17:22:56
habe es gerade nich einmal getestet, keine Probleme bei mir.
Nachdem ich meine Fritzbox wieder zum Laufen gekriegt, das aktuelle Fhem-Firmware-Image eingespielt, ein Update über die Weboberfläche gefahren und meine kürzlich gesicherte fhem.cfg wieder restauriert habe, habe auch ich keine Fehlermeldung mehr beim Absetzen des Kommandos - was auch immer jetzt anders sein soll als vorher...

matriedel

Hi
Ich habe festgestellt, dass bei mir die Temperaturlisten nicht zuverlässig übertragen werden.
Mit meinem Skript SetTempList_Heizung_Ein() übertrage ich Temeraturlisten für die gesamte Woche an zwei Thermostate.
Das Logfile zeigt dass die Kommandos erfolgreich abgesetzt wurden. Hier im Beispiel wurden die Einträge für Samstag, Sonntag, und Freitag verändert. Die anderen Tage hatten bereits die entsprechenden Einträge.

2013-10-31_10:23:09 Heizung_sSW_Matthias_ClimRT_tr tempList_State: set
2013-10-31_10:23:09 Heizung_sSW_Matthias_ClimRT_tr tempListSat: set_  08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0
2013-10-31_10:23:09 Heizung_sSW_Matthias_ClimRT_tr tempListSun: set_  08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0
2013-10-31_10:23:09 Heizung_sSW_Matthias_ClimRT_tr tempListMon:   08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0
2013-10-31_10:23:09 Heizung_sSW_Matthias_ClimRT_tr tempListTue:   08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0
2013-10-31_10:23:09 Heizung_sSW_Matthias_ClimRT_tr tempListWed:   08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0
2013-10-31_10:23:09 Heizung_sSW_Matthias_ClimRT_tr tempListThu:   08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0
2013-10-31_10:23:09 Heizung_sSW_Matthias_ClimRT_tr tempListFri: set_  08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0
2013-10-31_10:23:10 Heizung_sSW_Matthias_ClimRT_tr set_burstXmit

Nach einigen Minuten zeigt sich aber, dass nur der Eintrag für Freitag übernommen wurde. Samstag und Sonntag wurde nicht aktualisiert

2013-10-31_10:30:16 Heizung_sSW_Matthias_ClimRT_tr tempList_State: verified
2013-10-31_10:30:16 Heizung_sSW_Matthias_ClimRT_tr tempListSat:   08:00 21.0 09:00 21.0 15:00 21.0 22:00 17.0 24:00 17.0
2013-10-31_10:30:16 Heizung_sSW_Matthias_ClimRT_tr tempListSun:   08:00 21.0 09:00 21.0 15:00 21.0 22:00 17.0 24:00 17.0
2013-10-31_10:30:16 Heizung_sSW_Matthias_ClimRT_tr tempListMon:   08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0
2013-10-31_10:30:16 Heizung_sSW_Matthias_ClimRT_tr tempListTue:   08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0
2013-10-31_10:30:16 Heizung_sSW_Matthias_ClimRT_tr tempListWed:   08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0
2013-10-31_10:30:16 Heizung_sSW_Matthias_ClimRT_tr tempListThu:   08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0
2013-10-31_10:30:16 Heizung_sSW_Matthias_ClimRT_tr tempListFri:   08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0

Woran kann das liegen?

Viele Grüße

Matthias

package main;
use strict;
use warnings;
use POSIX;
sub

MyUtils_Initialize($$)
{
my ($hash) = @_;
}
1;
sub

SetTempList_Heizung_Ein()
{
   { fhem ("set Heizung_sSW_Matthias_ClimRT_tr tempListMon 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_sSW_Matthias_ClimRT_tr tempListTue 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_sSW_Matthias_ClimRT_tr tempListWed 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_sSW_Matthias_ClimRT_tr tempListThu 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_sSW_Matthias_ClimRT_tr tempListFri 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_sSW_Matthias_ClimRT_tr tempListSat 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_sSW_Matthias_ClimRT_tr tempListSun 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_sSW_Matthias_ClimRT_tr burstXmit")};
   { fhem ("set Heizung_nSW_Matthias_ClimRT_tr tempListMon 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_nSW_Matthias_ClimRT_tr tempListTue 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_nSW_Matthias_ClimRT_tr tempListWed 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_nSW_Matthias_ClimRT_tr tempListThu 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_nSW_Matthias_ClimRT_tr tempListFri 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_nSW_Matthias_ClimRT_tr tempListSat 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_nSW_Matthias_ClimRT_tr tempListSun 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_nSW_Matthias_ClimRT_tr burstXmit")};
}
# End SetTempList_Heizung_Ein

martinp876

Hallo Matthias,

wie mehrfach beschrieben ist es ein Problem, dass der RT nach dem schreiben eine Pause haben will. Das stört eigentich immens, da er nicht anzeigt, wann die Brotzeit beendet ist.
Ohne roh-messages deinerseits gehe ich davon aus, dass es daran leigt.

Wie ebenso mehrfach beschrieben sollte man die settings "en-block" schicken, als nur einmal schreiben lassen:

SetTempList_Heizung_Ein()
{
   { fhem ("set Heizung_sSW_Matthias_ClimRT_tr tempListMon prep 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_sSW_Matthias_ClimRT_tr tempListTue prep 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_sSW_Matthias_ClimRT_tr tempListWed prep 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_sSW_Matthias_ClimRT_tr tempListThu prep 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_sSW_Matthias_ClimRT_tr tempListFri prep 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_sSW_Matthias_ClimRT_tr tempListSat prep 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_sSW_Matthias_ClimRT_tr tempListSun exec 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_sSW_Matthias_ClimRT_tr burstXmit")};
   { fhem ("set Heizung_nSW_Matthias_ClimRT_tr tempListMon prep 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_nSW_Matthias_ClimRT_tr tempListTue prep 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_nSW_Matthias_ClimRT_tr tempListWed prep 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_nSW_Matthias_ClimRT_tr tempListThu prep 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_nSW_Matthias_ClimRT_tr tempListFri prep 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_nSW_Matthias_ClimRT_tr tempListSat prep 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_nSW_Matthias_ClimRT_tr tempListSun exec 08:00 17.0 09:00 17.0 15:00 21.0 22:00 21.0 24:00 17.0")};
   { fhem ("set Heizung_nSW_Matthias_ClimRT_tr burstXmit")};
}

Gruss Martin

matriedel


lopez1de

Zitat von: CQuadrat am 29 Oktober 2013, 11:02:05
Du interpretierst das falsch.
Deine Einstellung der Temperaturliste bewirkt folgendes:

  • von 00:00 bis 06:00 ist die Temperatur auf 17°C gesetzt
  • von 06:00 bis 09:00 ist die Temperatur auf 21°C gesetzt
  • von 09:00 bis 17:00 ist die Temperatur auf 17°C gestzt
  • und so weiter

Wenn ab 09:00 (bis 17:00) die Zieltemperatur 21°C sein soll, muss es heißen:
tempListTue 09:00 17.0 17:00 21.0 24:00 17.0
Ab 17:00 ist dann bis 24:00 wieder eine Zieltemperatur von 17°C eingestellt.

Ist das richtig? Ich verstehe es immer noch nicht. Auch nicht mit dem Beispiel. Wo ist denn da die Logik?  :o

Rohan

Hi lopez1de,

Zitat von: lopez1de am 29 November 2013, 22:21:23
Ist das richtig? Ich verstehe es immer noch nicht. Auch nicht mit dem Beispiel. Wo ist denn da die Logik?  :o

Es muss einen definierten Start- und Ende-Zeitpunkt für Listen geben.

In dem Beispiel


tempListTue 09:00 17.0 17:00 21.0 24:00 17.0


Ist der (vom Hersteller) vorgegebene Startzeitpunkt eben 00:00 Uhr (der aber nicht extra angegeben werden muss). Ab da bis eben um  09:00 Uhr soll die Temperatur 17.0 °C betragen usw. etc. pp.

Man muss sich nur daran gewöhnen.

Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor