Temperatur mit Wert in Systemvariable vergleichen

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
HMUser2022
Beiträge: 83
Registriert: 19.01.2022, 10:41
System: CCU
Danksagung erhalten: 1 Mal

Temperatur mit Wert in Systemvariable vergleichen

Beitrag von HMUser2022 » 01.05.2023, 15:47

Hallo zusammen,

ich habe derzeit folgendes Problem:
Sobalb meine Aussentemperatur unter einen bestimmten Grenzwert fällt sollen mehrere Programm unter anderem auch Scripte darauf reagieren.
Wenn Temp. wieder über dem Grenzwert natürlich nicht mehr.
Da der Grenzwert sicherlich mal geändert wird habe ich diesen in eine Systemvariable platziert um nicht durch die unterschiedlichen Programme und Scripte zu editieren.
Tja, im Script kann ich ja problemlos den aktuellen Temperaturwert und die Systemvariable auslesen und vergleichen.
Wenn ich das aber richtig sehe, kann man in einem Programm den aktuellen Temperaturwert nicht mit einem Wert in einer Systemvariablem vergleichen.
Ich könnte, theoretisch, alle Programme auf Scripte umrüsten, müsste dann aber die Aussentemperatur zyklich abfragen um eine Unterschreitung festzustellen, da das dann im Minuten Bereich liegt geht der DutyCycle wieder hoch...

Wie würde man so etwas möglichst elegant angehen ? Mir fehlt gerade eine zündende Idee...

VG
Uwe
Zuletzt geändert von alchy am 01.05.2023, 21:30, insgesamt 1-mal geändert.
Grund: Titel angepasst

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Tempeartur mit Wert in Systemvariable vergleichen

Beitrag von MichaelN » 01.05.2023, 15:54

Meine Idee einer WebUI konformen Lösung:
viewtopic.php?f=31&t=75757

Hierbei wird das Skript nur aufgerufen, wenn sich der Soll Wert ändert.
Zuletzt geändert von MichaelN am 01.05.2023, 16:23, insgesamt 2-mal geändert.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Matsch
Beiträge: 5359
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 113 Mal
Danksagung erhalten: 722 Mal

Re: Tempeartur mit Wert in Systemvariable vergleichen

Beitrag von Matsch » 01.05.2023, 16:14

HMUser2022 hat geschrieben:
01.05.2023, 15:47
Ich könnte, theoretisch, alle Programme auf Scripte umrüsten, müsste dann aber die Aussentemperatur zyklich abfragen um eine Unterschreitung festzustellen, da das dann im Minuten Bereich liegt geht der DutyCycle wieder hoch...
Da du innerhalb der CCU nicht wirklich den Sensor abfragst, sondern den letzten gesendeten Wert in einem Speicher der CCU, kannst du so oft du willst abfragen, ohne dass sich dabei der DC ändert. Zudem kannst du ja die Entscheidungsgrenze in der WENN-Bedingung zum Script als Trigger "Bei Änderung" definieren und das Script nur dann aufrufen, wenn die Unterschreitung passiert, nicht zyklisch.

HMUser2022
Beiträge: 83
Registriert: 19.01.2022, 10:41
System: CCU
Danksagung erhalten: 1 Mal

Re: Tempeartur mit Wert in Systemvariable vergleichen

Beitrag von HMUser2022 » 01.05.2023, 16:37

@Matsch
D. h. wenn ich das richtig verstehe, wird im Programm
Aussentemp.png
Aussentemp.png (6.71 KiB) 398 mal betrachtet
nur ein in der CCU abgespeicherter Wert der Aussentemperatur gelesen und nicht direkt vom Sensor ?
Das heißt dann aber auch, im Script sollte ich praktisch auch nicht direkt auf den Sensor zugreifen.
Und gehe ich recht in der Annahme, dass die letzten Werte immer die der letzten Änderung und/oder der letzten Rückmeldung sind ?

Gibt es denn da eine Möglichkeit im Script auf die in der CCU als letztes gespeicherten Werte zurück zu greifen ?
Dann könnte ich wirklich ein Minütlich getriggertes Script aufrufen welches dann die CCU Werte prüft...

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Tempeartur mit Wert in Systemvariable vergleichen

Beitrag von MichaelN » 01.05.2023, 17:02

Du kannst (Batterie betriebene) Sensoren nicht aktiv abfragen. Du bist immer darauf angewiesen, das sie senden.

Aber wenn du Sorgen wegen dem DC hast, hast du dir meine Lösung denn mal angesehen? Die macht doch, was du willst.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

HMUser2022
Beiträge: 83
Registriert: 19.01.2022, 10:41
System: CCU
Danksagung erhalten: 1 Mal

Re: Tempeartur mit Wert in Systemvariable vergleichen

Beitrag von HMUser2022 » 01.05.2023, 18:28

Sorry MichaelN, bin erst gerade dazu gekommen.
Ich denke das sollte passen, scheint ja ähnlich dem "Zeitbereich Manipulationsscript" zu sein.
Mich erstaunt immer wo ihr an die Infos kommt, wie man z.B. die Programmparameter manipuliert, bzw. wie diese Strukturen aufgebaut sind...

Nichtsdestotrotz schließe ich mich dem Ruf nach vergleichbaren Systemvariablen in Rasberrymatic an und hoffe es wird erhört.

dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Temperatur mit Wert in Systemvariable vergleichen

Beitrag von dtp » 02.05.2023, 11:28

Also du könntest auch - wie oben bereits angedeutet - ein Programm mit "bei Aktualisierung auslösen" triggern, um ein Script im Wenn-Zweig mit dem zugehörigen $src$-Wert aufzurufen, das diesen mit einem in einer Systemvariablen hinterlegten Wert vergleicht. Der Wertebereich des Sensors sollte dann so gewählt werden, dass das Programm möglichst bei jeder Aktualisierung auslöst.

Somit kannst du den Wert in der Systemvariablen verändern, um damit dann ggf. weiterführende Schritte innerhalb des Skripts zu beeinflussen.

Hier mal ein mögliches Beispielskript.

Code: Alles auswählen

string svName = "Name der Systemvariablen";

var source;
source = dom.GetObject("$src$");

if(source.Value() >= (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svName)).Value()){
...
}
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

rentier-s
Beiträge: 355
Registriert: 19.06.2017, 09:24
Hat sich bedankt: 20 Mal
Danksagung erhalten: 63 Mal

Re: Temperatur mit Wert in Systemvariable vergleichen

Beitrag von rentier-s » 02.05.2023, 12:34

HMUser2022 hat geschrieben:
01.05.2023, 15:47
Sobalb meine Aussentemperatur unter einen bestimmten Grenzwert fällt sollen mehrere Programm unter anderem auch Scripte darauf reagieren.
Da der Grenzwert sicherlich mal geändert wird habe ich diesen in eine Systemvariable platziert um nicht durch die unterschiedlichen Programme und Scripte zu editieren.
[...]
Ich könnte, theoretisch, alle Programme auf Scripte umrüsten, müsste dann aber die Aussentemperatur zyklich abfragen um eine Unterschreitung festzustellen
Also bei der doch relativ überschaubaren Anforderung würde ich eine Systemvariable Typ Logik "Temp_Warm" anlegen,
ein Programm mit

Temperatur < 20°, bei Änderung auslösen
Dann
Temp_Warm sofort falsch
Sonst
Temp_Warm sofort wahr

So braucht man den Entscheidungswert bei Bedarf nur in diesem einen Programm ändern.
Temp_Warm kann dann als Trigger oder Bedingung für Programme dienen und in Skripten ausgewertet werden.

HMUser2022 hat geschrieben:
01.05.2023, 16:37
Gibt es denn da eine Möglichkeit im Script auf die in der CCU als letztes gespeicherten Werte zurück zu greifen ?
Ja, LastValue() von $src$, brauchst Du in der Konstellation aber ebenso wenig wie eine zyklische Abfrage.

HMUser2022
Beiträge: 83
Registriert: 19.01.2022, 10:41
System: CCU
Danksagung erhalten: 1 Mal

Re: Temperatur mit Wert in Systemvariable vergleichen

Beitrag von HMUser2022 » 05.05.2023, 14:14

Vielen Dank für die Anregungen,
ich werde mir eine Lösung daraus zusammenbauen.
Vielleicht gibt es doch irgendwann eine Möglichkeit die Systemvariablen zu vergleichen :-)

Vielen Dank

Antworten

Zurück zu „HomeMatic allgemein“