Heizungsthermostatscript V2.0

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

chka
Beiträge: 2484
Registriert: 13.02.2012, 20:23
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 302 Mal
Danksagung erhalten: 116 Mal

Re: Heizungsthermostatscript V2.0

Beitrag von chka » 04.04.2019, 22:23

Bei den neueren reicht das dann:

Code: Alles auswählen

if(dom.GetObject("Anwesenheit").State())
{
dom.GetObject("BidCos-RF.MEQ0181942:2.AUTO_MODE").State(true);
!WriteLine("Auto!");
} else{
dom.GetObject("BidCos-RF.MEQ0181942:2.MANU_MODE").State(true);
dom.GetObject("BidCos-RF.MEQ0181942:2.SET_TEMPERATURE").State("18");
!WriteLine("Manuell");
}
In Abhängigkeit und Auslösung von der System Variable Anwesenheit


Danke wieder was dazu gelernt :D GN8
RaspberryMatic - CuL 868mHz- CuxDemon - PioTek Tracker - Velux mit KLF200 und Somfy Anbindung- io.Broker auf Proxmox NUC6I3SYH i3-6100U RAM: 40Gig Crucial 8GB DDR4 CT2K8G4SFS824A + 32GB DDR4CT32G4SFD8266

bernd_roll
Beiträge: 41
Registriert: 04.10.2017, 20:46
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal

Re: Heizungsthermostatscript V2.0

Beitrag von bernd_roll » 20.12.2019, 10:31

Hallo Zusammen,

seit geraumer Zeit verfolge ich den Beitrag hier und hab leider schon fast einen Knoten im Hirn. Homematic bzw. Raspberrymatic benutze ich schon seit vielen Jahren, aber ohne Script.

Eigentlich habe ich genau das selbe Problem, dass ich meine Raumtemperaturen bei Anwesenheit / Urlaub steuern möchte. Aber ich möchte nicht am Wandthermostat oder am Heizungsthermostat die Temp ändern, sondern ich möchte das Wochenprogramm ändern. Kann mir da jmd behilflich sein?

Danke + Grüße Bernd
Raspi 4 8GB; Raspberrymatic, Homematic wired
Fritzbox 7590 mesh
Synology RS818RP+

Xel66
Beiträge: 14170
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 587 Mal
Danksagung erhalten: 1501 Mal

Re: Heizungsthermostatscript V2.0

Beitrag von Xel66 » 20.12.2019, 14:52

bernd_roll hat geschrieben:
20.12.2019, 10:31
...meine Raumtemperaturen bei Anwesenheit / Urlaub steuern möchte.
Was genau soll passieren? Willst Du nur dauerhaft eine Absenktemperatur setzen? Was anderes wäre eher nicht zielführend. Für das dauerhafte Setzen der ECO (oder einer anderen Solltemperatur) stellt man die Thermostate einfach auf manuell mit der gewünschten Temperatur. Fertig. Kein Wochenprogram, kein Profilwechsel und alles ohne Script und mit den Mitteln der WebUI.
bernd_roll hat geschrieben:
20.12.2019, 10:31
... sondern ich möchte das Wochenprogramm ändern.
Warum? Was genau ist das Ziel der Änderung? Dieses Script ist eigentlich ein Relikt aus alten Zeiten, als die Thermostate noch viel weniger Funktionen hatten und war spätestens mit der aktuellen Geräteserie überflüssig. Aus Nostalgie setzen es immer noch einige Leute ein (vermutlich, weil sie die Möglichkeiten der WebUI und der implementierten Funktionen nicht (er)kennen). Wirklich notwendig ist es nicht.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

bernd_roll
Beiträge: 41
Registriert: 04.10.2017, 20:46
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal

Re: Heizungsthermostatscript V2.0

Beitrag von bernd_roll » 20.12.2019, 15:26

Danke für die ausführliche Antwort. Ich bin generell immer für neue Vorschläge offen...

Kurz zur Erklärung: Im Wohn- und Esszimmer habe ich je einen Wandthermostat. Wenn ich/wir Urlaub haben oder aus anderen Gründen zuhause sind, sollte natürlich die Tagabsenkung nicht erfolgen.
Ich habe die geänderte Situation im Wochenprogramm 2 gespeichert und suche nun nach einem Weg, dieses Wochenprogramm zu aktivieren, wenn jmd zuhause ist.

Grüsse Bernd
Raspi 4 8GB; Raspberrymatic, Homematic wired
Fritzbox 7590 mesh
Synology RS818RP+

Xel66
Beiträge: 14170
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 587 Mal
Danksagung erhalten: 1501 Mal

Re: Heizungsthermostatscript V2.0

Beitrag von Xel66 » 20.12.2019, 15:59

bernd_roll hat geschrieben:
20.12.2019, 15:26
Wenn ich/wir Urlaub haben oder aus anderen Gründen zuhause sind, sollte natürlich die Tagabsenkung nicht erfolgen.
Die einfachste Methode für diesen Anwendungsfall ist, die Komforttemperatur nach der eigentlichen Schaltzeit für die Absenkung zu setzen. In meiner Installation wird morgens per Profil zum Aufstehen in den benutzten Räumen Bad und Küche von 05:30 bis 07:00 Uhr geheizt. Bin ich durch Urlaub/Schichtarbeit/Feiertag usw. zu Hause, wird einfach um 7:30 Uhr (ich stehe ich gewönlich gegen 8:00 Uhr auf) die Solltemperatur auf Komforttemperatur gesetzt, ohne irgendein Profil anzufassen oder den Betriebsmodus (Automatik) der Thermostate zu verändern. Diese Temperatur wird dann bis zur Abendabsenkung gehalten. Das war es schon.

Sind wir länger abwesend (Urlaub etc.) werden alle Thermostate per Programm in den manuellen Modus versetzt und die Absenktemperatur als Solltemperatur gesetzt. Auch fertig. Funktioniert seit Jahren problemlos. Seit dieser Heizperiode habe die die verschiedenen Modi auf virtuelle Tasten der CCU als Direktverknüpfung gelegt. Brauche also keine einzelnen Programmaufrufe mehr, sondern betätige nur die virtuelle Taste in Programmen. Dann wissen die Thermostate, was zu tun ist. Es gibt mehrere virtuelle Tasten (alle manuell ECO, alle Automatik, alle Komforttemperatur, alle OFF). Zugegeben, die Anlage der notwendigen Direktverknüpfungen ist einmalig eine elende Klickarbeit, die sich so einfach nicht automatisieren lässt (es gäbe oder externe Unterstützung - geht aber auch ohne). Ist eben eine einmalige Fleißarbeit und es ist für jeden nachvollziehbar - auch ohne jegliche Scriptkenntnisse.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

bernd_roll
Beiträge: 41
Registriert: 04.10.2017, 20:46
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal

Re: Heizungsthermostatscript V2.0

Beitrag von bernd_roll » 20.12.2019, 16:28

ok, hört sich auch plausibel an, aber das würde sich bei mir mit anderen Programmen überschneiden.

Es muss doch eine einfache Möglichkeit geben, zwischen den Wochenprogrammen wechseln zu können?

Grüße
Raspi 4 8GB; Raspberrymatic, Homematic wired
Fritzbox 7590 mesh
Synology RS818RP+

Xel66
Beiträge: 14170
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 587 Mal
Danksagung erhalten: 1501 Mal

Re: Heizungsthermostatscript V2.0

Beitrag von Xel66 » 20.12.2019, 16:42

bernd_roll hat geschrieben:
20.12.2019, 16:28
ok, hört sich auch plausibel an, aber das würde sich bei mir mit anderen Programmen überschneiden.
Wieso das? Wenn die Programme auf geänderte Solltemperaturen reagieren würden, würden sie das auch bei einem anderen Wochenprogramm machen. Für den Wechsel des Profils der alten Wandthermostate gibt es eine Scriptlösung, die einmalig aufgerufen werden muss. Bei den IP-Wandthermostaten kann man das per Programm tun. Aber der Wechsel ist trotzdem unnötig. Im Normalfall bringt das andere Programme auch nicht durcheinander (außer wenn diese auf die Solltemperatur reagieren, was Du aber auch auf anderem Wege nicht abfangen kannst, weil auch andere Profile die Solltemperatur ändern. Das Setzen der Solltemperaturen am Vormittag geschieht an allen anderen Programmen vorbei. Da kommt eigentlich nichts durcheinander.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Slice
Beiträge: 1203
Registriert: 03.02.2016, 14:44
System: Alternative CCU (auf Basis OCCU)
Wohnort: irgendwo aus Süd BaWü
Hat sich bedankt: 141 Mal
Danksagung erhalten: 85 Mal

Re: Heizungsthermostatscript V2.0

Beitrag von Slice » 20.12.2019, 22:29

Hallo Bernd

zu Deiner Frage:
bernd_roll hat geschrieben:
20.12.2019, 16:28
Es muss doch eine einfache Möglichkeit geben, zwischen den Wochenprogrammen wechseln zu können?
Ich stand auch mal vor dem gleichen Problem und habe folgende Notiz bei mir abgelegt:
viewtopic.php?f=26&t=35699#p343038
Die Wochenprogramme haben im Script nicht die Nr. 1,2,3 sondern 0,1,2

Code: Alles auswählen

object obj = devices.Get("Thermostat-Geräte-Name");
xmlrpc.PutParamset (obj.Interface(), obj.Address(), "MASTER", "WEEK_PROGRAM_POINTER", "2");
Danke an alchy an dieser Stelle!

Das sollte Dir weiter helfen.

Grüße und schöne Weihnachten,
Slice

EDIT:
P.S.: Hab den gleichen geposteten Link von Xel66 nicht gesehen.. :wink:
----------------------------------------------------------------------------------------
Raspi3B+ Bullseye mit HB-RF-ETH und RPI-RF-MOD auf piVCCU-FW 3.75.7 / Addons: CuxD v2.11 - E-Mail v1.7.6 - Patcher v1.0.0 - Philips Hue v3.2.5 - Programme drucken v2.6 - Scriptparser v1.11 - XML-API v2.3
Geräte: 141 / Kanäle: 791 / Datenpunkte: 6080 / SysVars: 275 / Programme: 161 / Regadom IDs: 14010 / 48 CUxD-Kanäle in 3 CUxD-Geräten
Intel NUC i3-5010U @ 2,1 GHz mit 16 GB RAM & 512 GB SSD für Proxmox mit ioBroker VM und CCU-Historian/InfluxDB/Grafana VM
----------------------------------------------------------------------------------------
Projekte im Forum: HomeHub v4.1 / Fritzbox-Anruferliste für HomeHub
----------------------------------------------------------------------------------------

Xel66
Beiträge: 14170
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 587 Mal
Danksagung erhalten: 1501 Mal

Re: Heizungsthermostatscript V2.0

Beitrag von Xel66 » 20.12.2019, 22:34

Slice hat geschrieben:
20.12.2019, 22:29
...folgende Notiz bei mir abgelegt:
Nur fürs Protokoll: habe ich doch oben schon verlinkt!

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

ash
Beiträge: 3
Registriert: 12.11.2020, 15:25
System: CCU

Re: Heizungsthermostatscript V2.0

Beitrag von ash » 08.12.2020, 10:44

Hallo Bernd,

es ist schon eine Weile her. Vielleicht hilft es dir. Das Wochenprogramm kannst du ändern zum Bsb. in dem du das über eine Systemvariable löst. Ich hatte das mal eine Zeit lang gemacht. Das hat ohne Probleme funktioniert:

Code: Alles auswählen

integer leiste = 1;   ! Welche Zeitleiste aktiv ist

integer home = (dom.GetObject('Zuhause').State());
integer nachmittag = (dom.GetObject('NachmittagZuhause').State());

! Wenn jemand Zuhause ist und nachmittags frei hat, dann Leiste 3 setzen
if ((home == true) && (nachmittag == true)) {leiste = 3;}

! Wenn keiner Zuhause ist und nachmittags kein frei hat, dann Leiste 1 setzen
if ((home == false) && (nachmittag == false)) {leiste = 1;}

! Wenn keiner Zuhause ist und nachmittags frei hat, dann Leiste 2 setzen
if ((home == false) && (nachmittag == true)) {leiste = 2;}

! Wenn jemand Zuhause ist und nachmittags kein frei hat, dann Leiste 3 setzen
if ((home == true) && (nachmittag == false)) {leiste = 3;}

if (leiste == 1){
! Zeitleiste 1
! Uhrzeit                0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2|
!                        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3|
string zeitleiste_mon = "111111111111122222222222222222223333333333331111";
string zeitleiste_die = "111111111111122222222222222222223333333333331111";
string zeitleiste_mit = "111111111111122222222222222222223333333333331111";
string zeitleiste_don = "111111111111122222222222222222223333333333331111";
string zeitleiste_fre = "111111111111122222222222222222223333333333333111";
string zeitleiste_sam = "111111111111111133333333333333333333333333333111";
string zeitleiste_son = "111111111111111133333333333333333333333333333111";
};
if (leiste == 2){
! Zeitleiste 2 nachmittags jemand da
! Uhrzeit                0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2|
!                        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3|
string zeitleiste_mon = "222222222333333333333333333333333333333333332222";
string zeitleiste_die = "222222222333333333333333333333333333333333332222";
string zeitleiste_mit = "222222222333333333333333333333333333333333332222";
string zeitleiste_don = "222222222333333333333333333333333333333333332222";
string zeitleiste_fre = "222222222333333333333333333333333333333333333222";
string zeitleiste_sam = "222222222222222233333333333333333333333333333333";
string zeitleiste_son = "222222222222222233333333333333333333333333333222";
};
if (leiste == 3){
! Zeitleiste 3 jemand ist Zuhause
! Uhrzeit                0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2|
!                        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3|
string zeitleiste_mon = "222222222333333333333333333333333333333333332222";
string zeitleiste_die = "222222222333333333333333333333333333333333332222";
string zeitleiste_mit = "222222222333333333333333333333333333333333332222";
string zeitleiste_don = "222222222333333333333333333333333333333333332222";
string zeitleiste_fre = "222222222333333333333333333333333333333333333222";
string zeitleiste_sam = "222222222222222233333333333333333333333333333333";
string zeitleiste_son = "222222222222222233333333333333333333333333333222";

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“