Hallo,
möchte für meine HM-CC-RT-DN eine Templist für Urlaub erstellen. Dabei soll die Temperatur immer auf 18 Grad bleiben.
Jedes Tagesprogramm beginnt ja mit 0:00 (muß nicht angegeben werden) und soll mit 24:00 enden.
Hier mal als Beispiel der Samstag, so wie ich es gemacht hätte:
R_0_tempListSat> 18.0 24:00 18.0
Wird hierbei zweimal pro Tag der Temperaturwert an die Thermostate gesendet oder nur einmal?
Kann man es auch manchen, dass nach Umstellung auf die Templist "Urlaub" der Temperaturwert nur einmal gesendet und dann so lange gehalten wird, bis ich z.B. auf die Templist "Winter" umschalte?
Muss ich die Templist für Sommer dann auch auf diese Art erstellen und z.B. 10 Grad einstellen (was es im Sommer normalerweise nicht erreicht wird) und somit die Thermostate den Sommer über nicht regeln müssen? Oder gibt es für den Sommer eine elegantere Möglichkeit?
Vielen Dank
Ruggy
Diese Templiste ist (so ich das sehe) ungültig.
Gibt das keinen Fehler?
Es reicht doch einfach 24:00 18.0 ?
Es funktioniert doch so: bis Uhrzeit Temperatur einstellen
Dann wird um 24:00/00:00 eben die 18.0 eingestellt (die aber ja schon sind) und gut...
EDIT: https://wiki.fhem.de/wiki/HomeMatic_Type_Thermostat#Temperaturlisten
Du kannst auch einfach set HKT_Clima controlManu 18.0
Damit ist die Automatik gar nicht mehr wirksam und es bleibt bei 18.0 Grad bis jemand etwas anderes einstellt...
Zitat
Wird hierbei zweimal pro Tag der Temperaturwert an die Thermostate gesendet oder nur einmal?
Es wird da überhaupt nichts gesendet!
Die Templiste wird EINMAL auf den HKT übertragen, dort im Flash abgelegt und wenn auto-Modus eingestellt ist "abgearbeitet", Punkt.
Wenn du verschiedene Templisten willst, dann musst du verschiedene in fhem "vorhalten" und nach Bedarf "umschalten", im Sinne von: an den HKT senden.
Ab dann ist die eben neu gesendete TempList aktiv.
Schau dir mal Templist-Templates an...
Und auch wie dein HKT eigentlich funktioniert: Bedienungsanleitung lesen ;)
(überall wo dort Zentrale steht einfach durch "fhem ersetzen" ;) )
Oder auch mal hier: https://wiki.fhem.de/wiki/HM-CC-RT-DN_Funk-Heizk%C3%B6rperthermostat (also sofern eingebunden per CUL_HM bei HMCCU->keine Ahnung)
Gruß, Joachim
Zitat von: Ruggy am 09 Februar 2022, 19:28:42möchte für meine HM-CC-RT-DN eine Templist für Urlaub erstellen. Dabei soll die Temperatur immer auf 18 Grad bleiben.
So habe ich auch angefangen: sechs TempListen definiert (Sommer, Herbst/Frühling, Winter und dann jeweils Ab/Anwesend) und dann immer wieder neu übertragen und in den flash schreiben lassen. Da hat MadMax-FHEM schon genügend zu geschrieben.
Aber das ist viel zu kompliziert. Nutze stattdessen lieber den
PartyModus (https://wiki.fhem.de/wiki/HM-CC-RT-DN_Funk-Heizk%C3%B6rperthermostat#Modus_Party_.28Urlaub.29):
ZitatModus Party (Urlaub)
Die eingestellte Temperatur gilt bis zu einem gegebenen Endzeitpunkt, anschließend wechselt das Thermostat in den Auto-Modus.
[...]
Auch der Urlaubsmodus ist einsetzbar, so kann beispielsweise bei Abwesenheit ein niedrigeres Temperaturprofil eingestellt werden, ohne dass eventuell vorhandene Temperaturlisten verändert werden müssen.
set <HM-CC-RT-DN>_Clima controlParty 16 06.12.13 16:30 09.12.13 05:00
Dadurch wird
von 06.12.2013, 16:30 Uhr
bis 09.12.2013, 05:00 Uhr
die gewünschte Raumtemperatur auf 16 °C eingestellt.
Die dort vorgeschlagene Funktion für die myUtils habe ich für meine Bedürfnisse etwas angepasst:
##HeizungUrlaub
# https://wiki.fhem.de/wiki/HM-CC-RT-DN_Funk-Heizk%C3%B6rperthermostat#Modus_Party_.28Urlaub.29
# HeizungUrlaub("19","01.12.20","15:30","05.12.20","10:00")
# temp startdate -time enddate -time
# fhem-cmd:
# {HeizungUrlaub("19","28.03.21","12:00","02.04.21","12:00")}
#
sub HeizungUrlaub {
my $temp = shift;
my $startDate = shift;
my $startTime = shift;
my $endDate = shift;
my $endTime = shift;
# HM-CC-RT-DN akzeptiert nur Zeiten, die auf Minute 00 oder 30 enden.
# Daher $startTime und $endTime abrunden
$startTime =~ s/\:[0-2].$/:00/;
$startTime =~ s/\:[3-5].$/:30/;
$endTime =~ s/\:[0-2].$/:00/;
$endTime =~ s/\:[3-5].$/:30/;
#list TYPE=CUL_HM:FILTER=model=HM-CC-RT-DN:FILTER=chanNo=04
my @thermostate = devspec2array("TYPE=CUL_HM:FILTER=model=HM-CC-RT-DN:FILTER=chanNo=04");
# controlParty bei jedem HM-CC-RT-DN setzen.
foreach my $rtclima (@thermostate) {
Log(3,"HeizungUrlaub: set $rtclima controlParty $temp $startDate $startTime $endDate $endTime");
fhem("set $rtclima controlParty $temp $startDate $startTime $endDate $endTime");
}
}
Aufruf in FHEM-cmd dann via
{HeizungUrlaub("19","28.03.21","12:00","02.04.21","12:00")}
(setze für alle HM-CC-RT-DN den PartyModus mit 19°C vom 28.03.2021 12:00 Uhr bis zum 02.04.2021 12:00Uhr)
Zitat von: Ruggy am 09 Februar 2022, 19:28:42Kann man es auch manchen, dass nach Umstellung auf die Templist "Urlaub" der Temperaturwert nur einmal gesendet und dann so lange gehalten wird, bis ich z.B. auf die Templist "Winter" umschalte?
Der RT-DN schaltet automatisch in das hinterlegte Heizprofil zurück wenn der PartyModus beendet ist.
Zitat von: Ruggy am 09 Februar 2022, 19:28:42Muss ich die Templist für Sommer dann auch auf diese Art erstellen und z.B. 10 Grad einstellen (was es im Sommer normalerweise nicht erreicht wird) und somit die Thermostate den Sommer über nicht regeln müssen? Oder gibt es für den Sommer eine elegantere Möglichkeit?
Eleganter? Imho nicht, du könntest hier allerdings den PartyModus dafür missbrauchen. Ich regel das mit einer eigenen SommerTempList (es kann ja auch mal kalt iSv die Heizung wird benötigt werden im Sommer ;)).
Ich probiere auch schon länger einige Varianten aus, um die Heizung während des Urlaubs einfach einzustellen.
Die Methode mit Partymodus und myUtils Funktion trifft meine Anforderungen voll...
Zum setzen von Urlausbeginn und Ende habe ich zwei Dummies. Ich würde gern den Aufruf bzw. die Ausführung so ändern, dass die Werte der beiden Dummies verwendet werden.
Internals:
CFGFN ./FHEM/60_Kalender.cfg
FUUID 6123c7ff-f33f-b425-6d83-a269152414edf0c0
NAME Urlaubsbeginn
NR 560
STATE
TYPE dummy
READINGS:
2022-02-09 13:01:56 state 16.02.2022 12:28
Attributes:
alias Urlaubsbeginn am:
group Bedienung
icon time_calendar
room 000Wohnung
setList state:datetime,timepicker:false
sortby 08
stateFormat {ReadingsVal($name,'TT','')}
userReadings differenz:state:.* {daysToTargetDay("Urlaubsbeginn","state")}
webCmd state
Internals:
CFGFN ./FHEM/60_Kalender.cfg
FUUID 60cb3eb4-f33f-b425-3187-70615cc6ce90f365
NAME Urlaubsende
NR 558
STATE
TYPE dummy
READINGS:
2022-02-12 11:00:00 date 25.02.2022
2022-02-09 13:02:14 state 25.02.2022 12:28
Attributes:
alias Urlaubsende am:
group Bedienung
icon time_calendar
room 000Wohnung
setList state:datetime,timepicker:false
sortby 08
stateFormat {ReadingsVal($name,'TT','')}
userReadings differenz:state:.* {daysToTargetDay("Urlaubsende","state")}
webCmd state
Erstelle userReadings im dummy für startDate, startTime, endDate und endTime und kannst es ersetzen in der Funktion:
my $temp = shift;
my $startDate = ReadingsVal("Urlaubsbeginn","startDate",""); #zB 16.02.22
my $startTime = ReadingsVal("Urlaubsbeginn","startTime",""); #zB 12:30
my $endDate = ReadingsVal("Urlaubsende","endDate",""); #zB 25.02.22
my $endTime = ReadingsVal("Urlaubsende","endTime",""); #zB 12:30
Oder du kramst dir die Daten aus dem state raus. Müsste unelegant mit substr gehen.
Dann nur noch den Funktionsaufruf mit der Temperatur:
{HeizungUrlaub("19")}
Danke @yersinia, das ist eine schöne und einleuchtende Lösung. Sie wird in der kommenden Woche zur Anwendung kommen...
Hallo,
ich bin leider erst heute zum Testen dazu gekommen. Danke schon mal für die bisherigen Antworten
@MadMax-FHEM
Danke, so hat es funktioniert.
R_0_tempListSat> 24:00 19.0
Das mit dem Partymodus wäre evtl. auch eine Möglichkeit. Denke aber für mein Vorhaben wäre es doch nicht so günstig.
Die Templist für "Wochenende" benötige ich öfters mal. Ich möchte hier nicht immer das Datum eingeben müssen.
Habe es jetzt folgendermaßen versucht und es klappt noch nicht ganz.
Habe ein Dummy mit Sommer:Winter:Wochenende erstellt.
Internals:
CFGFN
FUUID 62092ac4-f33f-194f-5c07-68b7e35639ebd652
NAME Heizung_Schalten
NR 46644
STATE Winter
TYPE dummy
Helper:
DBLOG:
state:
DbLog:
TIME 1644785989.28667
VALUE Winter
READINGS:
2022-02-13 21:59:49 state Winter
Attributes:
room Heizung
webCmd Sommer:Winter:Wochenende
Zum Schalten habe ich vorerst jeweils ein Notify für Wochenende und für Winter erstellt (Sommer würde ich erst später machen; auch die tempListSommer.cfg habe ich noch nicht erstellt.
Wochenende:
Internals:
CFGFN
DEF Heizung_Schalten:Wochenende {fhem("attr hm configTempFile tempListWE.cfg,tempList.cfg,tempListSommer.cfg ;; set hm tempListG restore ;; set hm tempListG verify")}
FUUID 62092cd1-f33f-194f-cfc3-b22e31504297b9e4
NAME Heizung_Wochenende
NOTIFYDEV Heizung_Schalten
NR 46705
NTFY_ORDER 50-Heizung_Wochenende
REGEXP Heizung_Schalten:Wochenende
STATE 2022-02-13 21:59:44
TRIGGERTIME 1644785984.39215
TYPE notify
Helper:
DBLOG:
state:
DbLog:
TIME 1644785908.84272
VALUE active
READINGS:
2022-02-13 21:58:28 state active
2022-02-13 21:59:44 triggeredByDev Heizung_Schalten
2022-02-13 21:59:44 triggeredByEvent Wochenende
Attributes:
room Heizung
Winter:
Internals:
CFGFN
DEF Heizung_Schalten:Winter {fhem("attr hm configTempFile tempList.cfg,tempListWE.cfg,tempListSommer.cfg ;; set hm tempListG restore ;; set hm tempListG verify")}
FUUID 62092d27-f33f-194f-f829-f697595ad623b02d
NAME Heizung_Winter
NOTIFYDEV Heizung_Schalten
NR 46719
NTFY_ORDER 50-Heizung_Winter
REGEXP Heizung_Schalten:Winter
STATE 2022-02-13 21:59:49
TRIGGERTIME 1644785989.29441
TYPE notify
Helper:
DBLOG:
state:
DbLog:
TIME 1644785894.83953
VALUE active
READINGS:
2022-02-13 21:58:14 state active
2022-02-13 21:59:49 triggeredByDev Heizung_Schalten
2022-02-13 21:59:49 triggeredByEvent Winter
Attributes:
room Heizung
Leider funktioniert das Umschalten zwischen den Templist nicht.
Wenn ich im Dummy z.B. Wochenende anklicke, wird im hm richig umgeschalten. D.h. die Templist für Wochenende steht jetzt vorne. Wenn ich im Dummy Winter auswähle wird es auch richtig umgeschalten.
Die Temperaturwerte im _Clima vom HM-CC-RT-DN ändern sich aber nicht.
Anscheinend werden die folgenden Befehle nicht gesendet
set hm tempListG restore ;; set hm tempListG verify
Wahrscheinlich habe ich im notify im Def einen Fehler
Ich komme leider immer noch nicht mit bzw. ohne Perl Befehlen zurecht obwohl ich die Hilfen (Wiki, Commandref) gelesen hätte. Irgenwie stehe ich dabei auf dem Schlauch...
Wann brache ich () oder {} oder [].
Du brauchst keine { } und somit auch kein fhem(" ") du kannst attr und set einfach nutzen.
https://wiki.fhem.de/wiki/Klammerebenen
Und wenn du es in DEF eingibst, dann brauchst du auch nur einen Strichpunkt...
EDIT: unschön an der Lösung ist allerdings, dass du das rote Fragezeichen kriegst UND wenn fhem neu gestartet wird ist die Änderung des Attributs hinfällig, da nicht gespeichert... Daher würde ich es ja NUR mittels hminfo-Kommandos machen: https://wiki.fhem.de/wiki/HomeMatic_HMInfo_TempList/Weekplan#HMInfo_Kommandos (so ich das lese kannst du doch beim restore einen Namen mitgeben)
Gruß, Joachim
Vielleicht ein paar ergänzende Anmerkungen:
U.a. wegen der besseren Kompabilität zu anderen Modulen/anderer Hardware finde ich zwischenzeitlich die Variante der Wochen-Profilverwaltung über weekprofile deutlich eleganter und zuzkunftssicherer (allerdings ohne verify, aber auch in dieser Variante werden zur Reduzierung des Funkverkehrs nur Abweichungen zum "ISt" gesendet). Dass es bei Ruggy uU. noch so aussah, dass es nicht geklappt hat, kann auch an Funkproblemen/Timings usw. gelegen haben, dazu bräuchte man Infos über das Gesamtsystem (VCCU? Modulversionen, IOs, ...)
Den Party-Modus könnte man übrigens auch "errechnen" lassen.
Mehr Infos zu meiner aktuellen Lösung (jedenfalls so in etwa) sowie der Code für den "erweiterten Party-Modus" wären rund um diesen Beitrag zu finden: https://forum.fhem.de/index.php/topic,97430.msg906576.html#msg906576
Also folgendes hat jetzt funktioniert:
define Heizung_Wochenende notify Heizung_Schalten:Wochenende attr hm configTempFile tempListWE.cfg,tempList.cfg,tempListSommer.cfg ; set hm tempListG restore ; set hm tempListG verify
define Heizung_Winter notify Heizung_Schalten:Winter attr hm configTempFile tempList.cfg,tempListWE.cfg,tempListSommer.cfg ; set hm tempListG restore ; set hm tempListG verify
Bevor die HM-CC-RT-DN die geänderte Temperatur einstellen dauert es aber ein paar Minuten. Es ändert sich auch nicht der Wert auf allen Thermostaten gleichzeitig sondern hintereinander.
Für die Sommerzeit überlege ich mir noch, wie ich es am besten mache. Wahrscheinlich aber über manuell und eine bestimmte Temperatur einstellen um die Entkalkungsfahrten zu machen.
@MadMax-FHEM
Was meintest Du mit den "roten Fragezeichen"?
Meinst Du mit dem Attributs, welches beim Neustart vom FHEM hinfällig wird das bzgl. "configTempFile"?
Wäre es eine Lösung, wenn ich in das notify noch mit einem save
ergänze, um das Attributs beim Neustart vom FHEM zu erhalten?
Wäre es aber eigentlich schlimm, welches Attribut dort steht, weil es doch erst nach dem Befehl set hm tempListG restore
aktiviert wird?
@Beta-User
Deinen verlinkten Beitrag habe ich mir angesehen.
Evlt. kann ich es mal für mein UI brauchen, da ich momentan damit angefangen habe, mal eine schöne Seite fürs Tablet zu bekommen. Jedoch mache ich es mit FTUI, weil es für meine "FHEM-Kenntnisse" leichter ist.
Naja, wenn du ein Attribut änderst, kommt norm. das "rote Fragezeichen" und wenn du nicht speicherst, ist die Änderung bei einem Neustart halt weg...
Klar, wenn es nur für den kurzen Moment des Umstellens ist, ist das (bis auf das unschöne rote Fragezeichen / da gibt's doch was dagegen, irgendwie "silent") irrelevant...
Aber kann man denn keinen Namen übergeben? IM Wiki steht das ja so: set hm templist restore Dateiname
Damit gibt es kein rotes Fragezeichen etc.
Aber wenn es (für dich) tut is gut ;)
Gruß, Joachim
Das mit dem roten ? habe ich bis jetzt noch nicht entdeckt. Ich suche mal nicht danach. Dann ist es für mich in Ordnung, bis ich es mal entdecke ;)
Bezgl. dem Dateinamen habe ich im wiki auch gelesen.
Wenn ich aber im Device "hm" tempListG auswähle (im Dropdown) wird mir nur ein Dropdown mit den Möglichkeiten verify, status, save, restore genPlo angezeigt.
Wenn ich tempList (ohne G) auswähle kann ich selber etwas hinein schreiben. In der Erklärung, welche hierzu dann angezeigt wird, finde ich nichts bzgl. Dateinamen.
Habe deshalb auch nichts dazu gefunden, welchen Dateinamen ich angeben müsste.
Ich interpretiere den Wiki-Eintrag (https://wiki.fhem.de/wiki/HomeMatic_HMInfo_TempList/Weekplan#HMInfo_Kommandos) so, dass du den Dateinamen des Tempfiles eingibst - im gleichen Format wie im Attribut
configTempFile (nur halt nicht mehrere, kommaseparierte Dateinamen).
Den Ordner, welcher die Tempfiles enthält, müsstest du über
configDir (https://wiki.fhem.de/wiki/HMinfo#Attribute) angegeben haben.
Der Unterschied zwischen
tempList und
tempListG ist dort auch erwähnt:
ZitatDas 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.
Etwas mehr Details zu
tempList gibt es in der commandref (https://fhem.de/commandref_DE.html#HMinfo):
ZitattempList [filter] [save|restore|verify|status|genPlot] [<file>]
Diese Funktion ermöglicht die Verarbeitung von temporären Temperaturlisten für Thermostate. Die Listen können in Dateien abgelegt, mit den aktuellen Werten verglichen und an das Gerät gesendet werden.
save speichert die aktuellen tempList Werte des Systems in eine Datei.
Zu beachten ist, dass die aktuell in FHEM vorhandenen Werte benutzt werden. Der Benutzer muss selbst sicher stellen, dass diese mit den Werten im Gerät überein stimmen.
Der Befehl arbeitet nicht kummulativ. Alle evtl. vorher in der Datei vorhandenen Werte werden überschrieben.
restore in der Datei gespeicherte Termperaturliste wird direkt an das Gerät gesendet.
verify vergleicht die Temperaturliste in der Datei mit den aktuellen Werten in FHEM. Der Benutzer muss selbst sicher stellen, dass diese mit den Werten im Gerät überein stimmen.
status gibt einen Ueberblick aller genutzten template files. Ferner werden vorhandene templates in den files gelistst.
genPlot erzeugt einen Satz Daten um temp-templates graphisch darzustellen Aus den gegebenen template-file wird ein .log erweitertes file erzeugt welches log-formatierte daten beinhaltet. Zeitmarken sind auf Beginn 2000 terminiert.
Ein .gplot file wird in der gplt directory erzeugt.
Eine Logfile-entity _Log, falls nicht vorhanden, wird erzeugt.
Eine SVG-entity _SVG, falls nicht vorhanden, wird erzeugt.
filename Name der Datei. Vorgabe ist tempList.cfg
Beispiel für einen Dateiinhalt:
entities:HK1_Climate,HK2_Clima
tempListFri>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0
tempListMon>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
tempListSun>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
tempListThu>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
tempListTue>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 15.0
tempListWed>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
entities:hk3_Climate
tempListFri>06:00 17.0 12:00 21.0 23:00 20.0 24:00 19.5
tempListMon>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0
tempListSat>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0
tempListSun>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0
tempListThu>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0
tempListTue>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0
tempListWed>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0
Datei Schlüsselwörter
entities mittels Komma getrennte Liste der Instanzen für die die nachfolgende Liste bestimmt ist. Es muss die tatsächlich für die Temperaturliste zuständige Instanz angegeben werden. Bei RTs ist das der Kanal 04, bei TCs der Kanal 02.
tempList... Zeiten und Temperaturen sind genau wie im Befehl "set tempList" anzugeben