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

Temperaturdiffenz aus variabeln berechnen

Beitrag von BobBi » 11.03.2024, 10:33

Hallo,
leider habe ich mit folgenden Script, dass mir aus zwei Temperaturvariablen die Differenz berechnen soll, ein Problem. Die Variablen habe ich mithilfe anderer Programme gefüllt. Die Variablen haben in den SV z.B. folgende Werte:
a=0
b=9.35
c=9.00

Ich erwarte nun das a den Wert 0.35 annimmt, dem ist leider nicht so, es wird 9,35 geschrieben. Ich habe herausgefunden das immer die erste Variabel bei der Bedingung als Wert genommen wird für c.
Woran liegt es?

Schreibe ich die Werte in die Variabel mit festen wert im Script, klappt die Berechnung. Wo liegt denn da mein Fehler??

Code: Alles auswählen

var a = dom.GetObject("Außentemperatur_Differenz").Value();
var b = dom.GetObject("Außentemperatur").Value();
var c = dom.GetObject("DisplayTemp").Value();
 
if (b > c) {
a = (b - c);
  dom.GetObject("Außentemperatur_Differenz").State(a);

}
 
 
if (c > b) {
a = (c - b);
  dom.GetObject("Außentemperatur_Differenz").State(a);
}
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

MichaelN
Beiträge: 9684
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: Temperaturdiffenz aus variabeln berechnen

Beitrag von MichaelN » 11.03.2024, 10:37

String vs. Zahl?

Im übrigen gibt es auch die Absolut Funktion

Da gibt es auch fertige Lösungen:
viewtopic.php?f=26&p=732824#p732824
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 +++

Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: Temperaturdiffenz aus variabeln berechnen

Beitrag von Tyfys » 11.03.2024, 11:15

Wie MichealN schrieb:
Im übrigen gibt es auch die Absolut Funktion
siehe:

Code: Alles auswählen

real a;
real b=9.35;
real c=9.00;
real a = (b-c).Abs();
WriteLine(a);

real b=9.00;
real c=9.35;
real a = (b-c).Abs();
WriteLine(a);
Gruß
Harry

Matsch
Beiträge: 5452
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 » 11.03.2024, 13:01

Warum weist du a am Anfang einen (bisherigen) Wert zu, wenn du ihn gar nicht verwendest? Kann es sein, dass du eigentlich mit a vergleichen wolltest?

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 » 13.03.2024, 08:51

Hintergrund ist, dass ich die Außentemperatur in eine Variable schreibe, diese dann 5 min später wieder auslesen möchte und dann wissen will ob es eine Differenz gibt. Dazu muss ich die neue aktuelle Temperatur mit der Variable TemperaturDifferenz (Temp in der Vergangenheit) vergleichen.

Wenn ja, so soll die neue Temperatur auf mein ePaper (HM Komponente) Display gesendet werden. Dadurch möchte ich Funkverkehr vermeiden.
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: 5452
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 » 13.03.2024, 10:39

BobBi hat geschrieben:
13.03.2024, 08:51
Dazu muss ich die neue aktuelle Temperatur mit der Variable TemperaturDifferenz (Temp in der Vergangenheit) vergleichen.
Ja, und warum weist du dann a einen Wert zu? Braucht es doch gar nicht.

Im übrigen haben es real-Zahlen-Berechnungen so an sich (wenn es denn um solche geht), dass durch intern bedingte Rundungsabweichungen es ungünstig ist, diese direkt zu vergleichen ( b == c ), weil sie letztlich in der 12. Stelle nach dem Komma dann doch nicht gleich sind.
Hier sollte man mit Hysterese arbeiten, also z.B.

Code: Alles auswählen

real a;
real b = dom.GetObject("Außentemperatur").Value();
real c = dom.GetObject("DisplayTemp").Value();
 
if ((b-c).Abs() > 0.1) {
  ! Anweisung
}

Benutzeravatar
Baxxy
Beiträge: 10847
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 610 Mal
Danksagung erhalten: 2229 Mal

Re: Temperaturdiffenz aus variabeln berechnen

Beitrag von Baxxy » 13.03.2024, 10:49

Den Umweg über die SysVar kann man sich sparen.
Datenpunkte "beinhalten" immer 2 Werte, .Value() und .LastValue().

Auch die fixen 5min sind nicht sinnvoll. "Besser" ist es einfach auf Aktualisierung des Sensorwertes zu triggern. Bei HM ca. alle 3min, bei IP variabel und abhängig von den Einstellungen der zykl. Meldungen.

Benutzeravatar
robbi77
Beiträge: 13864
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 182 Mal
Danksagung erhalten: 739 Mal

Re: Temperaturdiffenz aus variabeln berechnen

Beitrag von robbi77 » 13.03.2024, 12:05

Warum nicht einfach die aktuelle temp immer aufs Display schreiben? Sooo viel Funkverkehr ist da auch nicht.

Benutzeravatar
Baxxy
Beiträge: 10847
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 610 Mal
Danksagung erhalten: 2229 Mal

Re: Temperaturdiffenz aus variabeln berechnen

Beitrag von Baxxy » 13.03.2024, 12:17

Die Displays nuckeln ordentlich am DC, erst recht wenn sie im 3min Aktualisierungsintervall eines HM-Sensors beschrieben werden.
Nur geänderte Daten zu übertragen ist daher nicht verkehrt.

Matsch
Beiträge: 5452
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 » 13.03.2024, 12:34

Noch ein Thema:
Du weist a im Test a = 0; zu und investierst damit a zu einer integer. Du solltest 0.0 zuweisen, damit es eine real bleibt.

Antworten

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