Absolute Luftfeuchtigkeit und Taupunkt ermitteln

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

dandoo
Beiträge: 9
Registriert: 01.06.2009, 01:16
System: CCU
Danksagung erhalten: 1 Mal

Re: Absolute Luftfeuchtigkeit und Taupunkt ermitteln

Beitrag von dandoo » 18.05.2021, 12:50

MichaelN hat geschrieben:
18.05.2021, 12:41
dandoo hat geschrieben:
18.05.2021, 12:24
hat noch jemand Probleme mit dem berechnen mit CuxD
Und was hat das mit dem Beitrag von mir zu tun, den Du zitiert hast?
Du schriebst ja das du auch den CuxD benutzt.
Genau dieser klappt bei mir nicht mehr und ich frage mich ob es noch andere gibt die seit dem Update der CCU3 dieses Problem haben oder ich der einzige bin.
In diesem Forum bin ich ein Newbie und hab mich eventuel falsch verhalten oder falsch gedrückt.
Wenn ja tut es mir Leid.
613 Kanäle in 145 Geräten:
1x HM-PB-6-WM55, 2x HM-PB-2-WM55-2, 7x HM-ES-PMSw1-Pl, 10x HM-CC-VG-1, 1x HM-LC-Sw1-DR, 2x HmIP-FSM, 1x HM-Sen-MDIR-SM, 1x HmIP-FSM16, 11x HM-Sec-RHS, 1x HM-Sen-MDIR-O-2, 2x HmIP-SMO-A, 2x HmIP-SMI, 18x HM-Sec-SCo, 2x HM-RC-19, 1x HmIP-BSL, 3x HM-LC-RGBW-WM, 2x HmIP-SCI, 2x HMIP-PSM, 4x HM-WDS30-OT2-SM, 1x HmIP-FCI6, 2x HM-RC-4-3, 1x HM-Sec-SC-2, 1x HmIP-SWDO-I, 13x HM-CC-RT-DN, 1x HM-LC-Sw4-Ba-PCB, 1x HM-RC-P1, 1x HM-WDS100-C6-O, 1x HmIP-PCBS2, 1x HmIP-RCV-50, 1x HmIP-MP3P, 3x HmIP-STH, 17x HM-WDS10-TH-O, 1x HmIP-DSD-PCB, 1x HM-Sen-EP, 1x HM-Sen-DB-PCB, 1x HM-ES-TX-WM, 2x HM-WDS40-TH-I, 1x HM-WDS30-OT2-SM-2, 10x HM-TC-IT-WM-W-EU, 1x HM-LC-Sw1-FM, 1x VIR-HUE-GTW, 1x VIR-LG-RGBW-DIM, 3x HM-Sec-WDS-2, 1x HmIP-SWO-PR, 1x HM-LC-Sw1-Pl-CT-R1

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

Re: Absolute Luftfeuchtigkeit und Taupunkt ermitteln

Beitrag von MichaelN » 18.05.2021, 12:56

In keinem Forum der Welt sind Vollquote und dann auch noch unpassende gerne gesehen.
Und nein, ich habe keine Probleme.
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 +++

Organist
Beiträge: 124
Registriert: 31.08.2018, 15:21
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wülfrath
Hat sich bedankt: 39 Mal
Danksagung erhalten: 5 Mal

Re: Absolute Luftfeuchtigkeit und Taupunkt ermitteln

Beitrag von Organist » 06.07.2021, 22:56

schlichi hat geschrieben:
09.06.2020, 12:26
Hallo Michael,

ich war der Meinung, daß der Programmausschnitt für diejenigen welche das Programm kennen, ausreichend wäre.
Aber hier das komplette Testprogramm !

Code: Alles auswählen

! Berechnung mit e-funktion testen
!https://smart-wohnen.org/homematic-raumklimaueberwachung-und-entfeuchtung/
!by paul53
! Berechnung der Lüftungsempfehlung 01.06.2020 / schlichi
!
object oTHi = (dom.GetObject(ID_CHANNELS)).Get("Dein Sensorkanal innen, :1");
object oTi = oTHi.DPByHssDP("ACTUAL_TEMPERATURE");
object oHi = oTHi.DPByHssDP("HUMIDITY");
.......
Hallo,
ich versuche auch gerade, das Programm zu übernehmen. Leider wird mir kein Wert ausgegeben.
Bei mir ist ein HM-Funkwandthermostat in Verwendung und eine Weatherman-Edition 2 Wetterstation. Da wird ja auch schon die absolute Luftfeuchtigkeit in Systemvariablen angegeben. Testweise habe ich dann mal nur die ersten Abschnitte des Scripts verwendet, um mir die Daten anzeigen zu lassen.

Code: Alles auswählen

WriteLine("Wann kommt hier was?");
! Berechnung mit e-funktion testen
!https://smart-wohnen.org/homematic-raumklimaueberwachung-und-entfeuchtung/
!by paul53
! Berechnung der Lüftungsempfehlung 01.06.2020 / schlichi
!
object oTHi = (dom.GetObject(ID_CHANNELS)).Get("OEQ1571xxx:1");
object oTi = oTHi.DPByHssDP("ACTUAL_TEMPERATURE");
object oHi = oTHi.DPByHssDP("HUMIDITY");
object oLueften = dom.GetObject("Keller_lueften"); ! Name der Systemvariablen für die Lüftungsempfehlung (Logikwert: wahr = ist wahr, falsch = ist falsch)
!
! WriteLine(oTHi)
! WriteLine(oHi)
!
 object oTa = dom.GetObject("w_temperatur");
 object oHa = dom.GetObject("w_feuchte_rel");
 WriteLine(oTa)
 WriteLine(oHa)
 WriteLine(oLueften)
 
Wenn ich ersten drei Zeilen mit dem Thermostat deaktiviere, läuft dieser Test durch und die WriteLine unten angezeigt. Habe aber den Eindruck, dass da was mit dem Thermostat etwas nicht läuft. Ein Test das Gerät anzusteuern (hier auch im Thread empfohlen) funktioniert und alle Paramater werden angezeigt.
Leider werden bei writeline(oTa) leider der Name der Systemvariable geschrieben und nicht der Wert der Variable. Welche Fehler mache ich?

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

Re: Absolute Luftfeuchtigkeit und Taupunkt ermitteln

Beitrag von MichaelN » 06.07.2021, 23:05

Ist OEQ1571xxx:1 wirklich der Kanal! Name?
Die Variablen mit o sind Objekte! Denen musst du noch sagen, was du von ihren willst. Zum Beispiel:.Value()

Tipps zum debugging siehe Signatur.
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 +++

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

Re: Absolute Luftfeuchtigkeit und Taupunkt ermitteln

Beitrag von Baxxy » 06.07.2021, 23:11

Organist hat geschrieben:
06.07.2021, 22:56
Welche Fehler mache ich?
Für ein HM Wandthermostat (HM-TC-IT-WM-W-EU ?) heißt der Datenpunkt "TEMPERATURE", also...

Code: Alles auswählen

object oTi = oTHi.DPByHssDP("TEMPERATURE");
Da du in deinem Skiptausschnitt nur Objekte deklarierst musst du natürlich in den WriteLines den Wert des Objektes ausgeben.
Beispiel:

Code: Alles auswählen

WriteLine(oTa.Value());

Organist
Beiträge: 124
Registriert: 31.08.2018, 15:21
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wülfrath
Hat sich bedankt: 39 Mal
Danksagung erhalten: 5 Mal

Re: Absolute Luftfeuchtigkeit und Taupunkt ermitteln

Beitrag von Organist » 06.07.2021, 23:42

Das ist die Seriennummer mit Kanal 1 des HM-TC-IT-WM-W-EU.

Das Script habe ich nur zum Test gemacht, ob die Werte überhaupt angenommen und ausgegeben werden können.

Organist
Beiträge: 124
Registriert: 31.08.2018, 15:21
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wülfrath
Hat sich bedankt: 39 Mal
Danksagung erhalten: 5 Mal

Re: Absolute Luftfeuchtigkeit und Taupunkt ermitteln

Beitrag von Organist » 09.07.2021, 20:46

Danke ihr beiden für eure Hilfe. Habe beide Fehler gefunden. Habe mich durch "Debugging" durchgewurschtelt. Ich musste nicht die Seriennummer sondern den Namen des Thermostates eingeben. Und es musste "TEMPERATURE" heißen! Habe dabei noch etwas gelernt.

Organist
Beiträge: 124
Registriert: 31.08.2018, 15:21
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wülfrath
Hat sich bedankt: 39 Mal
Danksagung erhalten: 5 Mal

Re: Absolute Luftfeuchtigkeit und Taupunkt ermitteln

Beitrag von Organist » 09.07.2021, 23:48

Nun habe ich doch eine Frage:
Das Skript rechnet die Werte für innen und außen korrekt aus. Die Absolute Luftfeuchtigkeit ist in meinem Test gerade einiges niedriger als innen und leider springt meine Systemvariable nicht auf "Lüften" um, stattdessen wird sie immer auf "nicht lüften" umgeschaltet (wenn ich sie per Hand mal auf Lüften umgeschaltet habe). Das Skript läuft auch bis zur letzten durch, die Variable wird nur immer als "nicht wahr" geschaltet.

Zudem habe ich in der vorletzten (deaktivierten) Zeile noch ein den Wunsch, die absolute Innenluftfeuchtigkeit in die Variable zu schreiben. Der Satz wird durchgeführt, leider werden nachfolgende Teile des Programms nicht weiter ausgeführt. Ich hatte zunächst die Zeile weiter oben im Programm, welches dann allerdings das Skript nicht durchlaufen lies. Was ist daran falsch?
Die WriteLine zwischendrinn sind zum debuggen drin...

Code: Alles auswählen

! Luftfeuchtigkeit innen und aussen berechnen und vergleichen
! Berechnung mit e-funktion testen
!https://smart-wohnen.org/homematic-raumklimaueberwachung-und-entfeuchtung/
!by paul53
! Berechnung der Lüftungsempfehlung 01.06.2020 / schlichi
!
WriteLine("8");
object oTHi = (dom.GetObject(ID_CHANNELS)).Get("Raumthermostat:1"); ! Name des Innenthermometer eingeben
WriteLine("10");
object oTi = oTHi.DPByHssDP("TEMPERATURE"); ! Kanal HM = TEMPERATURE  - HMIP = ACTUAL_TEMPERATURE
WriteLine("12");
object oHi = oTHi.DPByHssDP("HUMIDITY");
object oLueften = dom.GetObject("Keller_Lueften"); ! Name der Systemvariablen für die Lüftungsempfehlung (Logikwert: wahr = ist wahr, falsch = ist falsch)
object oLuftfeuchte = dom.GetObject("Keller_Innenfeuchte"); ! Name der Systemvariablen für die Absolute Luftfeuchtigkeit
!
WriteLine("13");
!
object oTa = dom.GetObject("w_temperatur"); ! Systemvariable der Wetterstation
object oHa = dom.GetObject("w_feuchte_rel"); ! Systemvariable der Wetterstation
WriteLine(oTa)
WriteLine(oHa)
! object oTHa = (dom.GetObject(ID_CHANNELS)).Get("OEQ1571953:1"); ! Name des Aussenthermometer eingeben (Falls nicht oben Variable der Wetterstation)
! object oTa = oTHa.DPByHssDP("ACTUAL_TEMPERATURE");
! object oHa = oTHa.DPByHssDP("HUMIDITY");
WriteLine("22");
!
! Programmteil Lüftungsempfehlung
! Lokale Variablen
real tin = oTi.Value(); ! Temperatur in °C innen
integer rfin = oHi.Value(); ! relative Feuchte in % innen 
real afin;  ! absolute Feuchte in g/kg innen
real tau = oTa.Value(); ! Temperatur in °C außen
integer rfau = oHa.Value(); ! relative Feuchte in % außen
real afau; ! absolute Feuchte in g/kg außen
! xxx
! https://homematic-forum.de/forum/viewtopic.php?p=528541#p528541
!
real r = (17.62 * tin) / (243.12 + tin);
real e = r.Exp()*611.2;
real eSat = e * rfin;
real afin = ((eSat / 461.51 * (tin+273.15))*10).ToString(2);
WriteLine("abs. Feuchte innen e*: " + afin);



! xxx
! xxx
! https://homematic-forum.de/forum/viewtopic.php?p=528541#p528541
!
real r = (17.62 * tau) / (243.12 + tau);
real e = r.Exp()*611.2;
real eSat = e * rfau;
real afau = ((eSat / 461.51 * (tau+273.15))*10).ToString(2);
WriteLine("abs. Feuchte aussen e*: " + afau);
! xxx
WriteLine(afau)
!
! Berechnung der absoluten Feuchte innen
    if (tin < 0.0) {tin = 0.0;}
    if (tin < 10.0)
    { afin = (3.78 + (0.29 * tin) + (0.0046 * tin * tin) + (0.00051 * tin * tin * tin)) * 0.01 * rfin;
    }
    else
    { afin = (7.62 + (0.51 * (tin-10.0)) + (0.0143 * (tin-10.0) * (tin-10.0)) + (0.00045 * (tin-10.0) * (tin-10.0) * (tin-10.0))) * 0.01 * rfin;
    }
! Berechnung der absoluten Feuchte außen
	if (tau < 0.0) {tau = 0.0;}
    if (tau < 10.0)
    { afau = (3.78 + (0.29 * tau) + (0.0046 * tau * tau) + (0.00051 * tau * tau * tau)) * 0.01 * rfau;
    }
    else
    { afau = (7.62 + (0.51 * (tau-10.0)) + (0.0143 * (tau-10.0) * (tau-10.0)) + (0.00045 * (tau-10.0) * (tau-10.0) * (tau-10.0))) * 0.01 * rfau;
    }
!
WriteLine(" ");
WriteLine("Parameter für Test");
WriteLine("Temperatur innen: " + tin);
WriteLine("rel. Feuchte innen %: " + rfin);
WriteLine("abs. Feuchte innen: " + afin);
WriteLine("Temperatur aussen: " + tau);
WriteLine("rel. Feuchte aussen %: " + rfau);
WriteLine("abs. Feuchte aussen: " + afau);

! Berechnung der Lüftungsempfehlung mit 0,5 g/kg und 0,7 K Hysterese
if ((afau <= (afin - 0.8)) && (tau <= (tin - 1.0)) && (tin > 20.7))
{oLueften.Variable(true);}
else
{ if ((afau >= (afin - 0.3)) || (tau >= (tin - 0.3)) || (tin <= 20.0))
{oLueften.Variable(false);}
}
WriteLine(oLueften); ! Sollte eigentlich den Status der Systemvariable wiedergeben
WriteLine("94 ");
! oLuftfeuchte.State(afin.Value()); ! Errechnete absolute Innenfeuchte in Systemvariable schreiben
WriteLine("95 ");

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

Re: Absolute Luftfeuchtigkeit und Taupunkt ermitteln

Beitrag von Baxxy » 10.07.2021, 00:08

Organist hat geschrieben:
09.07.2021, 23:48
Nun habe ich doch eine Frage:
Du kannst einen gut bei Laune halten... :mrgreen:
Damit Lüften "WAHR" wird müssen 3 Bedingungen gleichzeitig zutreffen.

Code: Alles auswählen

if ((afau <= (afin - 0.8)) && (tau <= (tin - 1.0)) && (tin > 20.7))
Also...
Abs. Feuchte Aussen <= Abs. Feuchte Innen - 0.8 | <--- ausrechnen bei deinen Werten
UND
Temp. Aussen <= Temp. Innen - 1.0 | <--- ausrechnen bei deinen Werten
UND
Temp. Innen > 20.7

Je nachdem wie bei dir das Wetter ist könnte die mittlere Bedingung falsch sein.
Organist hat geschrieben:
09.07.2021, 23:48
Was ist daran falsch?
afin ist eine deklarierte Scriptvariable vom typ real, sprich eine Zahl mit möglicher Kommastelle. Lass das .Value() weg und dann passt das.

Grüße
Baxxy

Organist
Beiträge: 124
Registriert: 31.08.2018, 15:21
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wülfrath
Hat sich bedankt: 39 Mal
Danksagung erhalten: 5 Mal

Re: Absolute Luftfeuchtigkeit und Taupunkt ermitteln

Beitrag von Organist » 10.07.2021, 10:35

Perfekte Antwort. Habe ich verstanden. Klingt logisch, dass es nicht funktioniert auf "bitte Lüften" zu schalten.

Antworten

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