Feuchtigkeit in Variable schreiben

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Smudo
Beiträge: 13
Registriert: 05.04.2018, 19:59

Re: Feuchtigkeit in Variable schreiben

Beitrag von Smudo » 04.11.2025, 13:16

Ja, ein paar VBA Kenntnise sind schon vorhanden. Ist lange her aber sind nur Vermutungen. Ich hab halt über Forum und google nicht so viel gefunden und ich hatte es natürlich vorher per wenn/ Dann Funktion versucht. So schwer kann es doch nicht sein eine Luftfeuchtigkeit in eine Variable zu schreiben.

eirin
Beiträge: 663
Registriert: 25.06.2024, 13:34
System: CCU und Access Point
Hat sich bedankt: 3 Mal
Danksagung erhalten: 117 Mal

Re: Feuchtigkeit in Variable schreiben

Beitrag von eirin » 04.11.2025, 13:38

Smudo hat geschrieben:
04.11.2025, 13:16
So schwer kann es doch nicht sein eine Luftfeuchtigkeit in eine Variable zu schreiben.
Schnell und einfach mit der Seriennummer..vorher eine Systemvariable vom Typ: Zahl festlegen..z.B. TESTZA

Code: Alles auswählen

var rF = dom.GetObject("HmIP-RF.000A9xxxxxxx5:1.HUMIDITY").Value();
WriteLine(rF);
dom.GetObject("TESTZA").State(rF);
Wenn dies Deinen Vorstellungen entspricht, kann man dies natürlich auch noch in "Homematic-Schönschrift" erstellen.
VG eirin

Benutzeravatar
MichaelN
Beiträge: 12086
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 826 Mal
Danksagung erhalten: 2081 Mal

Re: Feuchtigkeit in Variable schreiben

Beitrag von MichaelN » 04.11.2025, 13:59

Smudo hat geschrieben:
04.11.2025, 13:16
So schwer kann es doch nicht sein eine Luftfeuchtigkeit in eine Variable zu schreiben.
Ich habe noch nicht verstanden wie Dir das dann weiterhilft. Eine Variable ist erstmal nur ein Datenpunkt, genauso wie der Messwertkanal des Gerätes.
Du brauchst ja immer noch eine Logik dahinter.

Also wie soll der Wokflow nun genau aussehen?

Smudo
Beiträge: 13
Registriert: 05.04.2018, 19:59

Re: Feuchtigkeit in Variable schreiben

Beitrag von Smudo » 04.11.2025, 23:31

Richtig, das ist Neuland für mich aber der Datenpunkt als Zahl ausgewertet bietet ja im Script viel einfachere Vergleichsmöglichkeiten und so langsam muss ich mich ja als Homematic-Fan auch mal ran trauen ;)

4 Raumgruppen mit 4 Feuchtigkeitswerten (Feuchtigkeit=F, also F1;F2;F3;F4)
„F1“ gibt den Wert in SV_Feuchte1
„F2“ gibt den Wert in SV_Feuchte2
usw.

Ein Programm „Fmax“ vergleicht die Werte und schreibt den größten Wert in Systemvariable „SV_Fmax“
Das Programm „Lüftungsstufe“ schaltet darüber die Lüftung auf Stufe 3
wenn SV_Fmax>70%; sonst wenn SV_Fmax zwischen 70% -65% auf Stufe 2; sonst wenn zw. 64%- 55% auf Stufe 1

Damit schmeiße ich die Anlage also mit der richtigen Power an.
Nun muss ich die 4 Szenen der Lüftungsklappen den Räumen zuordnen.

Ein Programm „Klappenstellung“ vergleicht wieder „SV_Feuchte1 bis SV_Feuchte4.
Wenn Maximalwert=SV_Feuchte4, dann Programm „Szene4“; wenn Maximalwert=SV_Feuchte3, dann „Szene3“

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

Re: Feuchtigkeit in Variable schreiben

Beitrag von Xel66 » 05.11.2025, 00:22

Dein Vorhaben hat einen physikalischen Denkfehler. Die relative Luftfeuchtigkeit (das was die Thermostate messen) besitzt allein relativ wenig Aussagekraft und ist nur zielführend, wenn innen und außen annhähernd die gleichen Temperaturen herrschen (temperaturabhängig). Für eine zielführende Lüftung und zum Verhindern, dass Du Dir ggf. noch Luft mit einem viel höheren Wasseranteil durch die Abluft an anderer Stelle ins Haus saugst (Unterdruck) ist es notwendig, den absoluten Wassergehalt (absolute Luftfeuchte in g/m²) in der Luft innen und außen zu berechnen.

Ein Absenken der Luftfeuchte durch Entlüftung in der ggf. innen wärmere Umgebung ist eben nur möglich, wenn von außen Luft mit einem geringeren Gehalt an Wasserdampf (alo nach der Erwärmung mit geringerer relativer Feuchte) nachströmt. Du musst also etwas mehr Mathe machen, als nur die relativen Feuchtegehalte zu vergleichen.

Gruß Xel66
-------------------------------------------------------------------------------------------
617 Kanäle in 166 Geräten und 242 CUxD-Kanäle in 45 CUxD-Geräten:
366 Programme, 357 Systemvariablen und 209 Direktverknüpfungen,
RaspberryMatic Version: 3.75.7.20240420 (rpi3) + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch, Logging von Programmläufen

Smudo
Beiträge: 13
Registriert: 05.04.2018, 19:59

Re: Feuchtigkeit in Variable schreiben

Beitrag von Smudo » 05.11.2025, 11:50

Hi und danke für den Hinweis. Hier wird wirklich vollumfassend mitgedacht. Großes Lob!
Mir ist das als Anlagenbauingenieur schon bewusst. Die Problematik sehe ich da eher im Sommer, die sogenannte Sommerkondensation. Es handelt sich auch wirklich um eine Lüftungsanlage im gewerblichen Bereich und ich habe die Werte auch aktuell verglichen. Die Anlage tut was sie soll. Im Sommer muss ich noch schauen ob es da Sinn macht. Eine Wetterstation hab ich noch nicht. Licht- und Regensensor reicht mir derzeit.

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

Re: Feuchtigkeit in Variable schreiben

Beitrag von Xel66 » 05.11.2025, 12:07

Smudo hat geschrieben:
05.11.2025, 11:50
Hier wird wirklich vollumfassend mitgedacht.
Das Problem stellt sich hier nicht erstmalig. :mrgreen: Außerdem betreibe ich das selbst.
Smudo hat geschrieben:
05.11.2025, 11:50
Eine Wetterstation hab ich noch nicht. Licht- und Regensensor reicht mir derzeit.
Braucht man auch nicht unbedingt. Ein reiner HmIP-Außentemperatursensor reicht völlig und ist deutlich frustfreier als die (HmIP-)Wetterstation. Allerdings ist hier auch eine rechnerische Ermittlung der Absolutwerte notwendig. Alternativ nimmst Du einen CUxD-Wrapper. Damit mache ich das. Ich wähle damit die Trocknungsmethode (Ablüfter oder Raumlufttrockner) für den Waschkeller. Läuft so seit mehreren Jahren.

Gruß Xel66
-------------------------------------------------------------------------------------------
617 Kanäle in 166 Geräten und 242 CUxD-Kanäle in 45 CUxD-Geräten:
366 Programme, 357 Systemvariablen und 209 Direktverknüpfungen,
RaspberryMatic Version: 3.75.7.20240420 (rpi3) + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch, Logging von Programmläufen

Benutzeravatar
Roland M.
Beiträge: 10771
Registriert: 08.12.2012, 15:53
System: CCU
Wohnort: Graz, Österreich
Hat sich bedankt: 303 Mal
Danksagung erhalten: 1688 Mal

Re: Feuchtigkeit in Variable schreiben

Beitrag von Roland M. » 05.11.2025, 12:46

Hallo!
Xel66 hat geschrieben:
05.11.2025, 12:07
Allerdings ist hier auch eine rechnerische Ermittlung der Absolutwerte notwendig.
Das ist auch keine große Kunst.
Ich nutze da eine vereinfachte Formel (hier aus dem Forum? Keine Ahnung mehr... :roll: ), die Abweichung zu ausführlicheren Berechnungsmethoden und zum CUxD-Wrapper sind sehr gering. Vor allem, wenn man ohnehin nur zwei so berechnete Werte vergleicht, wird der Fehler ja ohnehin ausgeglichen.
Screenshot 2025-11-05 123455.png

Code: Alles auswählen

var temp = dom.GetObject("Raumthermostat Kellerzimmer:1").DPByHssDP("TEMPERATURE").Value();
var rLF  = 0.0 + dom.GetObject("Raumthermostat Kellerzimmer:1").DPByHssDP("HUMIDITY").Value();
var aLF = (rLF * 13.245 * ((17.67 * temp)/(temp + 243.5)).Exp()) / (273.15 + temp);
dom.GetObject("Absolute Luftfeuchtigkeit Kellerzimmer").State(aLF);
Läuft so seit mehreren Jahren.
Detto hier.
Als mein Luftentfeuchter in den Kompressorhimmel aufgestiegen ist, habe ich versucht, so die Luftfeuchtigkeit in den Griff zu bekommen, ohne, dass das Werkzeug wieder rostet. Die Steuerung hat funktioniert, nur unser Tropenklima hat nicht mitgespielt (im Frühsommer nahezu tägliche Gewitter, 80 % rLF bei 30°C sind keine Seltenheit). Jetzt steht wieder ein Entfeuchter im Keller... :wink:


Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
  • Bezeichnung (HM-... bzw. HmIP-...) der betroffenen Geräte angeben (nicht Artikelnummer)
  • Kurzbeschreibung des Soll-Zustandes (Was soll erreicht werden?)
  • Kurzbeschreibung des Ist-Zustandes (Was funktioniert nicht?)
  • Fehlermeldungen genau abschreiben, besser noch...
  • Screenshots von Programmen, Geräteeinstellungen und Fehlermeldungen (direkt als jpg/png) einstellen!

-----------------------------------------------------------------------
1. OpenCCU auf Proxmox-Server mit ~110 Geräten (derzeit in Umstellung von CCU2)
2. OpenCCU auf "Charly" per VPN mit ~70 Geräten
3. CCU2 per VPN mit ~40 Geräten (geplant: OpenCCU auf CCU3)
CCU1, (mehrere) CCU2, Raspi 1 mit kleinem Funkmodul, OpenCCU als VM unter Proxmox, Access Point,...

Smudo
Beiträge: 13
Registriert: 05.04.2018, 19:59

Re: Feuchtigkeit in Variable schreiben

Beitrag von Smudo » 05.11.2025, 17:27

Die 4 bzw. mittlerweile 5 Variablen (SV_Feuchte1 bis SV_Feuchte5) sind nun mit den 5 Luftfeuchtigkeiten befüllt und die Anlage läuft korrekt in den 3 Stufen. Nun brauch ich für diesen Teil nochmal eure Hilfe:

Ein Programm „Klappenstellung“ vergleicht wieder „SV_Feuchte1 bis SV_Feuchte5.
Wenn Maximalwert=SV_Feuchte5, dann Programm „Szene5“; wenn Maximalwert=SV_Feuchte4, dann „Szene4“ usw.

Wie kann ich den Maximalwert in einem Script auswerten?

Hier mein Versuch (ChatGPT hat geholfen ;):

Die Systemvariable "SV Lüftung Priorität" habe ich als Zeichenkette definiert!?
Ziel ist es mit dieser Variable alle 30 Minuten mit wenn/dann abzufragen und danach die 4 Szenen zu schalten

Code: Alles auswählen

! Variablen-Namen
string var1 = " SV_Feuchte_UG_Massage ";
string var2 = " SV_Feuchte_UG_Sauna ";
string var3 = " SV_Feuchte_UG_Frauen ";
string var4 = " SV_Feuchte_UG_Kurs ";
string var5 = " SV_Feuchte_UG_Männer ";
! Werte auslesen
real val1 = dom.GetObject(var1).Value();
real val2 = dom.GetObject(var2).Value();
real val3 = dom.GetObject(var3).Value();
real val4 = dom.GetObject(var4).Value();
real val5 = dom.GetObject(var5).Value();

! Startwerte für Vergleich
real maxVal = val1;
string maxName = var1;

! Vergleiche nacheinander
if (val2 > maxVal) { maxVal = val2; maxName = var2; }
if (val3 > maxVal) { maxVal = val3; maxName = var3; }
if (val4 > maxVal) { maxVal = val4; maxName = var4; }
if (val5 > maxVal) { maxVal = val5; maxName = var5; }

! Ergebnis in Systemvariable " SV Lüftung Priorität" schreiben
dom.GetObject("SV Lüftung Priorität").State(maxName);

! Optional: Log-Ausgabe
WriteLine("Maximalwert ist " # maxVal # " in Variable " # maxName);
Derzeit werden keine Fehler im Script gefunden, in der Variable stehen 3 Fragezeichen
Zuletzt geändert von Baxxy am 05.11.2025, 17:44, insgesamt 1-mal geändert.
Grund: Code in CodeTags gesetzt für bessere Lesbarkeit

Benutzeravatar
MichaelN
Beiträge: 12086
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 826 Mal
Danksagung erhalten: 2081 Mal

Re: Feuchtigkeit in Variable schreiben

Beitrag von MichaelN » 05.11.2025, 17:48

Smudo hat geschrieben:
05.11.2025, 17:27
Derzeit werden keine Fehler im Script gefunden,
Läuft es denn bis zum Ende durch?
Wenn du es unter "Skript testen" laufen lässt, kommt die log Ausgabe?

Antworten

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