Temperaturdiffenz aus variabeln berechnen

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

BobBi
Beiträge: 15
Registriert: 19.10.2021, 16:23
System: CCU und Access Point
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Temperaturdiffenz aus variabeln berechnen

Beitrag von BobBi » 15.03.2024, 22:13

Mir geht es darum, dass ich die ePaper Display (1x HM-Dis-EP-WM55 und 1 x HmIP-WRCD) nur mit einem neuen Datenzeile. Nutze dazu das Script aus dem Forum hier für das HM-Dis-EP-WM55

Code: Alles auswählen

https://homematic-forum.de/forum/viewtopic.php?f=31&t=31672
Für das HmIP-WRCD

Code: Alles auswählen

https://homematic-forum.de/forum/viewtopic.php?f=60&t=55269
Damit fütter ich die Displays, aber bitte nur wenn es auch wirklich ein Unterschied gibt. So möchte ich den Funkverkehr möglichst klein halten und wie bereist geschrieben verbrauchen diese Dinger recht viel :-( Die E-Paper Displays sind leider nicht dafür gedacht z.B. eine Temperaturanzeige zu sein :-D

Hier mein nun verwendeter Code, der zum Erfolg geführt hat. Dabei wird die der SV "Außentemperatur" verglichen. Die SV "Außentemperatur" wird in einen anderen Script aus zwei verschiedenen HmIP Temperatursensoren gefüttert (Mittelwert beider Temperaturwerten).

Code: Alles auswählen

real a = dom.GetObject("Außentemperatur").Value();
real b = dom.GetObject("Außentemperatur").LastValue();
dom.GetObject("Außentemperatur_Differenz").Variable(false);

if ((a-b).Abs() > 0.1) {
  dom.GetObject("Außentemperatur_Differenz").Variable(true); 
}
68 Geräten
-----------------
1x HmIPW-DRAP, 1x RPI-RF-MOD, 2x HmIP-HAP, 5x HmIPW-DRI32, 3x HmIPW-FALMOT-C12, 2x HMIP-SWDO, 4x HmIP-SWDO-I, 1x CUX28, 1x HmIP-SLO, 1x HmIPW-STHD, 3x HmIPW-STH, 8x HmIPW-WTH, 4x HmIPW-DRBL4, 2x HmIP-SWDM-B2, 1x HmIP-FSI16, 1x HM-LC-Sw1-FM, 1x HmIP-PS-2, 1x HMIP-PS, 1x HM-LC-Sw2-FM, 6x HmIPW-DRS4, 4x HmIPW-DRS8, 2x HmIP-MOD-OC8, 4x HmIPW-DRD3, 1x HmIP-PDT, 3x HMIP-PSM, 1x HM-OU-LED16, 1x HmIP-STHO, 1x HmIP-RCV-50, 3x HmIP-SWD

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

Re: Temperaturdiffenz aus variabeln berechnen

Beitrag von Matsch » 15.03.2024, 22:23

Übrigens: Wenn du einer SV den Wert per .Variable(x) zuweist, lässt sich diese SV-Änderung nicht protokollieren, mit .State(x) aber schon. Deshalb verwende ich erstere gar nicht.

Benutzeravatar
Henke
Beiträge: 1526
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 141 Mal
Danksagung erhalten: 306 Mal

Re: Temperaturdiffenz aus variabeln berechnen

Beitrag von Henke » 15.03.2024, 23:36

Brrr 8)

Sauber mit Systemvariable, keine Wiederholung, kurz und bündig mit erzwungener Float Zuweisung - egal ob das nötig ist

Code: Alles auswählen

object svOj_list = dom.GetObject(ID_SYSTEM_VARIABLES);
object oAussen = svOj_list.Get("Außentemperatur");
svOj_list.Get("Außentemperatur_Differenz").State((0.0 + oAussen.LastValue() - oAussen.Value()).Abs() > 0.1);
Abgesehen davon würde ich das ganze in das Script zur Ansteuerung des Displays packen.

Logischer Ablauf:
Programm triggert auf die Datenpunkte, die eine Änderung der Anzeige bewirken.

Das Script merkt sich, welche Zeile gesendet wurde und vergleicht vorher, ob ein Update nötig ist. Das kann die Zeile selber oder z.B. eine Hysterese bei den Temperaturwerten sein.

BobBi
Beiträge: 15
Registriert: 19.10.2021, 16:23
System: CCU und Access Point
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Temperaturdiffenz aus variabeln berechnen

Beitrag von BobBi » 16.03.2024, 10:11

Henke hat geschrieben:
15.03.2024, 23:36
Brrr 8)

Sauber mit Systemvariable, keine Wiederholung, kurz und bündig mit erzwungener Float Zuweisung - egal ob das nötig ist

Code: Alles auswählen

object svOj_list = dom.GetObject(ID_SYSTEM_VARIABLES);
object oAussen = svOj_list.Get("Außentemperatur");
svOj_list.Get("Außentemperatur_Differenz").State((0.0 + oAussen.LastValue() - oAussen.Value()).Abs() > 0.1);
Abgesehen davon würde ich das ganze in das Script zur Ansteuerung des Displays packen.

Logischer Ablauf:
Programm triggert auf die Datenpunkte, die eine Änderung der Anzeige bewirken.

Das Script merkt sich, welche Zeile gesendet wurde und vergleicht vorher, ob ein Update nötig ist. Das kann die Zeile selber oder z.B. eine Hysterese bei den Temperaturwerten sein.
Danke für die Tipps, bin noch am Anfang vom Scripten und lerne gerne dazu.

Was macht folgende Zeile?

Code: Alles auswählen

object svOj_list = dom.GetObject(ID_SYSTEM_VARIABLES);
68 Geräten
-----------------
1x HmIPW-DRAP, 1x RPI-RF-MOD, 2x HmIP-HAP, 5x HmIPW-DRI32, 3x HmIPW-FALMOT-C12, 2x HMIP-SWDO, 4x HmIP-SWDO-I, 1x CUX28, 1x HmIP-SLO, 1x HmIPW-STHD, 3x HmIPW-STH, 8x HmIPW-WTH, 4x HmIPW-DRBL4, 2x HmIP-SWDM-B2, 1x HmIP-FSI16, 1x HM-LC-Sw1-FM, 1x HmIP-PS-2, 1x HMIP-PS, 1x HM-LC-Sw2-FM, 6x HmIPW-DRS4, 4x HmIPW-DRS8, 2x HmIP-MOD-OC8, 4x HmIPW-DRD3, 1x HmIP-PDT, 3x HMIP-PSM, 1x HM-OU-LED16, 1x HmIP-STHO, 1x HmIP-RCV-50, 3x HmIP-SWD

Benutzeravatar
Henke
Beiträge: 1526
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 141 Mal
Danksagung erhalten: 306 Mal

Re: Temperaturdiffenz aus variabeln berechnen

Beitrag von Henke » 16.03.2024, 13:13


Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“