Script für mehrere Aktoren funktioniert nur bei einem Aktor

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
fietje
Beiträge: 14
Registriert: 18.10.2016, 09:25
Wohnort: Berlin
Hat sich bedankt: 1 Mal

Script für mehrere Aktoren funktioniert nur bei einem Aktor

Beitrag von fietje » 30.11.2019, 19:57

Hallo zusammen.

Ich habe ein Problem mit einem Script.
In einem Programm werden alle Fensterkontakte abgefragt und damit die entsprechenden Heizungsaktoren per Script gesteuert.
Beim Öffnen wird der Modus und die SET-Temperatur abgefragt und in einer Variable gespeichert.
Nach dem Schließen werden die Variablen ausgelesen und wieder in den entsprechenden Aktor geschrieben.
Das funktioniert nur beim ersten Aktor/Zimmer. Bei den anderen leider nicht :-(

Sieht jemand evtl. den Fehler?

Vielen Dank euch.

Bad funktioniert:
Auslesen und Heizung aus stellen.

Code: Alles auswählen

!Badezimmerfenster offen;
var set_temp = dom.GetObject("BidCos-RF.NEQ0876022:4.SET_TEMPERATURE").Value();
var mode = dom.GetObject("BidCos-RF.NEQ0876022:4.CONTROL_MODE").Value();
dom.GetObject("aktBadT").State(set_temp);
dom.GetObject("aktBadS").State(mode);
dom.GetObject("BidCos-RF.NEQ0876022:4.MANU_MODE").State(4.5);
Aktor wieder beschreiben.

Code: Alles auswählen

!Badezimmerfenster gechlossen;
var set_temp = dom.GetObject("aktBadT");
var mode = dom.GetObject("aktBadS");
if (mode == 0) {
dom.GetObject("BidCos-RF.NEQ0876022:4.AUTO_MODE").State(true);
dom.GetObject("BidCos-RF.NEQ0876022:4.SET_TEMPERATURE").State(set_temp);
}
if (mode == 1) {
dom.GetObject("BidCos-RF.NEQ0876022:4.MANU_MODE").State(set_temp);
}
if (mode == 2) {
dom.GetObject("BidCos-RF.NEQ0876022:4.AUTO_MODE").State(true);
dom.GetObject("BidCos-RF.NEQ0876022:4.SET_TEMPERATURE").State(set_temp);
}
if (mode == 3) {
dom.GetObject("BidCos-RF.NEQ0876022:4.BOOST_MODE").State(true);
}
Das nächste Zimmer will dann schon nicht mehr mitspielen. :(
Auslesen und Heizung aus.

Code: Alles auswählen

!Fenster Pia offen;
var set_tempp = dom.GetObject("BidCos-RF.PEQ1629412:4.SET_TEMPERATURE").Value();
var modep = dom.GetObject("BidCos-RF.PEQ1629412:4.CONTROL_MODE").Value();
dom.GetObject("aktPiaT").State(set_tempp);
dom.GetObject("aktPiaS").State(modep);
dom.GetObject("BidCos-RF.PEQ1629412:4.MANU_MODE").State(4.5);
Schreiben.

Code: Alles auswählen

!Fenster Pia geschlossen;
var set_tempp = dom.GetObject("aktPiaT");
var modep = dom.GetObject("aktPiaS");
if (modep == 0) {
dom.GetObject("BidCos-RF.PEQ1629412:4.AUTO_MODE").State(true);
dom.GetObject("BidCos-RF.PEQ1629412:4.SET_TEMPERATURE").State(set_tempp);
}
if (modep == 1) {
dom.GetObject("BidCos-RF.PEQ1629412:4.MANU_MODE").State(set_tempp);
}
if (modep == 2) {
dom.GetObject("BidCos-RF.PEQ1629412:4.AUTO_MODE").State(true);
dom.GetObject("BidCos-RF.PEQ1629412:4.SET_TEMPERATURE").State(set_tempp);
}
if (modep == 3) {
dom.GetObject("BidCos-RF.PEQ1629412:4.BOOST_MODE").State(true);
}
LG
fietje

Ich übernehme keine Haftung für Skripte oder entstehende Schäden durch solche. Bitte immer einen Fachmann zu Rate ziehen. Nutzung alles angegebenen Programmteile oder Hinweise auf eigene Gefahr!

dondaik
Beiträge: 12929
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1604 Mal
Danksagung erhalten: 222 Mal

Re: Script für mehrere Aktoren funktioniert nur bei einem Aktor

Beitrag von dondaik » 30.11.2019, 20:09

3te zeile im 2ten "kurzen " prg ... modep <<<<<< ?

beim ersten prg

......var mode ....
Zuletzt geändert von dondaik am 01.12.2019, 12:37, insgesamt 1-mal geändert.
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

Benutzeravatar
Black
Beiträge: 5483
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: Script für mehrere Aktoren funktioniert nur bei einem Aktor

Beitrag von Black » 30.11.2019, 20:18

warum keine DV ?
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

ABE2000
Beiträge: 290
Registriert: 06.02.2019, 00:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 4 Mal
Danksagung erhalten: 21 Mal

Re: Script für mehrere Aktoren funktioniert nur bei einem Aktor

Beitrag von ABE2000 » 30.11.2019, 21:15

Ja, warum eigentlich keine Direktverknüpfung, da lässt sich das alles schon komfortabler steuern und einstellen...

Womöglich eine Zahl der Seriennummer vertauscht?

MfG René
Tinkerboard S mit HM-MOD-RPI-PCB (vorher Raspberry Pi3+) RaspberryMatic
HomeMatic Gateway
HomeMatic CCU2 Gateway

80 angelernte wireless Geräte
287 Kanäle
137 Programme

--------------------------------------------
264 Kanäle in 78 Geräten
65 CUxD-Kanäle in 5 CUxD-Geräten
--------------------------------------------

fietje
Beiträge: 14
Registriert: 18.10.2016, 09:25
Wohnort: Berlin
Hat sich bedankt: 1 Mal

Re: Script für mehrere Aktoren funktioniert nur bei einem Aktor

Beitrag von fietje » 01.12.2019, 12:10

dondaik hat geschrieben:
30.11.2019, 20:09
3te zeile im 2ten "kurzen " prg ... modep <<<<<< ?
Ich hatte in jedem Script die variable mode verwendet. Da es nicht ging, habe ich jeweils einen Buchstaben dahinter gesetzt um zu verhindern, dass eine Variable in einem anderen Script eventuell stört.
LG
fietje

Ich übernehme keine Haftung für Skripte oder entstehende Schäden durch solche. Bitte immer einen Fachmann zu Rate ziehen. Nutzung alles angegebenen Programmteile oder Hinweise auf eigene Gefahr!

fietje
Beiträge: 14
Registriert: 18.10.2016, 09:25
Wohnort: Berlin
Hat sich bedankt: 1 Mal

Re: Script für mehrere Aktoren funktioniert nur bei einem Aktor

Beitrag von fietje » 01.12.2019, 12:12

ABE2000 hat geschrieben:
30.11.2019, 21:15
Ja, warum eigentlich keine Direktverknüpfung, da lässt sich das alles schon komfortabler steuern und einstellen...

Womöglich eine Zahl der Seriennummer vertauscht?

MfG René
Seriennummern haben ich mehrfach kontrolliert. Direktverknüpfung fällt aus, da das Thermostat gleich anfängt zu heizen sobald das Fenster geschlossen wird. Ist unwirtschaftlich. Nur über normale Programme fällt auch aus, da du ja nicht darauf eingehen kannst, dass das Thermostat wieder in den vorherigen Status geht. Es geht ja nur "nach Fenster zu in den Auto oder Manu-Modus.
LG
fietje

Ich übernehme keine Haftung für Skripte oder entstehende Schäden durch solche. Bitte immer einen Fachmann zu Rate ziehen. Nutzung alles angegebenen Programmteile oder Hinweise auf eigene Gefahr!

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

Re: Script für mehrere Aktoren funktioniert nur bei einem Aktor

Beitrag von Xel66 » 01.12.2019, 13:04

fietje hat geschrieben:
01.12.2019, 12:12
da du ja nicht darauf eingehen kannst, dass das Thermostat wieder in den vorherigen Status geht.
Warum soll das nicht gehen? Ich mache ähnliches bei meiner Haustür und dem Flurheizkörper, da ich verhindern will, dass beim Öffnen der Tür der Heizkörper sofort die Solltemperatur absenkt (und das Ventil zufährt). Das soll erst passieren, wenn die Tür länger als für einen normalen Verlassen-/Betretenvorgang offensteht, sonst die die Batterien für die dazu notwendigen weiten Stellvorgänge des Ventilantriebs ruckzuck leer. Allerdings erfolgt dieses bei mir ohne jegliches Script. Beim Öffnen der Tür wird die aktuelle Solltemperatur unverzögert in eine Sytemvariable geschrieben (weißer Zettel). Steht die Tür "länger" offen, wird die Absenktemperatur (12°C) gesetzt. Nach dem Schließen wird verzögert um ein paar Sekunden wieder die vorher gespeicherte Solltemperatur gesetzt (wenn diese größer als 12°C ist).

Das Setzen des manuellen Modus in Deinem Script halte ich für überflüssig. Es reicht, die Solltemperatur zu setzen. Zur Sicherheit könnte man noch ein Info-Programm realisieren, welches informiert, wenn eine Solltemperatur größer Abesenktemperatur bei offenem Fenster gesetzt wird, falls doch mal das Fenster über einen Zeitpunkt einer im Profil hinterlegten Schaltzeit offen stehen sollte (oder jemand die Solltemperatur manuell hochdreht :-) ). Für Deine Variante würde es übrigens reichen, nach dem Schließen des Fensters, das Thermostat wieder auf Automatik zu schalten. Dann wird wieder die für den aktuellen Zeitraum im Heizprofil hinterlegte Solltemperatur gesetzt.

Diese ganzen Winkelzüge könnte man sich mit einer Direktverknüpfung sparen. Hierbei laufen alle Vorgänge automatisch ab und auch Solltemperaturänderungen laut Profil werden erst beim Schließen des Fensters gemacht. Unwirtschaftlich ist auch bei einem "sofortigen" Heizvorgang nach dem Schließen des Fensters nichts. Du verlierst durch das Lüften eine gewisse Wärmenge. Die musst Du zum Erreichen der Solltemperatur wieder hinzufügen. Ob dieses aus der Speicherwärme der Baustruktur oder durch direktes Nachheizen erfolgt, ist physikalisch und energetisch unerheblich. Ziehst du nach dem Lüften durch verzögertes Nachheizen diese Wärmemenge aus der Baustruktur, musst Du die trotzdem später durch wieder einspeichern (und sei es durch das Nachheizen im Nachbarraum). Von der Energiebilanz macht das keinen Unterschied. Aber jeder wie er will.

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

fietje
Beiträge: 14
Registriert: 18.10.2016, 09:25
Wohnort: Berlin
Hat sich bedankt: 1 Mal

Re: Script für mehrere Aktoren funktioniert nur bei einem Aktor

Beitrag von fietje » 01.12.2019, 15:54

Ja, das klingt logisch. Ok, dann eben wieder per DV. :-)

Vielen Dank für alle eure Hinweise oder Anregungen.

Gruß
Fietje
LG
fietje

Ich übernehme keine Haftung für Skripte oder entstehende Schäden durch solche. Bitte immer einen Fachmann zu Rate ziehen. Nutzung alles angegebenen Programmteile oder Hinweise auf eigene Gefahr!

Antworten

Zurück zu „HomeMatic allgemein“