Probleme Lüftersteuerung über die Absolute Luftfeuchte

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

schlichi
Beiträge: 387
Registriert: 26.08.2016, 19:26
System: Alternative CCU (auf Basis OCCU)
Wohnort: Erding
Hat sich bedankt: 60 Mal
Danksagung erhalten: 28 Mal

Re: Probleme Lüftersteuerung über die Absolute Luftfeuchte

Beitrag von schlichi » 13.09.2021, 16:05

Hallo Kai,

hast Du alles gelesen und verstanden?
Falls Schaltaktor nicht gebraucht, oder anders gelöst, einfach auskommentieren "!"
Suche mal in deinem Script nach "Dein Schaltaktor Kanal" und mach mal das, was zuvor zitiert steht!
Auskommentieren meint, ein ! in die erste Spalte der Zeile setzen!!

Übrigens die Fehler kannst in der Log-Datei (Einstellungen->Systemsteuerung->Zentrale-Wartung->Log-Datei herunterladen) wiederfinden. Schon mal reingeschaut?

Gruß
schlichi

Nachtrag: die Rundung .ToString(2) in der Berechnung ist an der Stelle Unsinn, wenn anschließend rechnerisch verglichen wird, deshalb entfernen!
siehe auch hier.
Das korrigierte Script ist hier zu finden!
... inzwischen autodidakter, fortgeschrittener Anfänger mit bestandener Einstiegsprüfung für den Expertenmodus Teil 3 (erfahrener Anwender) :roll:

R.Thümer
Beiträge: 33
Registriert: 16.02.2020, 13:40
System: CCU
Hat sich bedankt: 9 Mal

Re: Probleme Lüftersteuerung über die Absolute Luftfeuchte

Beitrag von R.Thümer » 26.10.2022, 20:08

schlichi hat geschrieben:
12.09.2021, 13:17
Hallo Kai(?),

hier mal, da auch mir geholfen wurde, flugfähige, gebratene Tauben 8)

Code: Alles auswählen

! xxx Lüftung-Keller - 1.61 Berechnung der Parameter für Lüftung, incl. Schaltung xxxxxx
! mit direktem Schalten, "Dein Schaltaktor Kanal" (Umgehung der SysVar "Keller Lüften")
! Stand: 14.09.2021 / GS
!
! absolute Feuchte in g/m³ Luftvolumen
!
! https://homematic-forum.de/forum/viewtopic.php?p=71326#p71326
! by paul53
!
  object oTHi = (dom.GetObject(ID_CHANNELS)).Get("Dein Keller-Thermostat Kanal"); 	! xxx innen xxxx
  object oTi = oTHi.DPByHssDP("ACTUAL_TEMPERATURE");
  object oHi = oTHi.DPByHssDP("HUMIDITY");
!
  object oLueften = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Keller lüften"); 		! xxx SysVar xxxx
!
  object oTHa = (dom.GetObject(ID_CHANNELS)).Get("Dein Aussen-Thermostat Kanal"); 	! xxx außen xxxx
  object oTa = oTHa.DPByHssDP("ACTUAL_TEMPERATURE");
  object oHa = oTHa.DPByHssDP("HUMIDITY");
!
! xxx Programmteil Lüftungsempfehlung
! Lokale Variablen
	real tin = oTi.Value(); 	! Temperatur in °C innen
	integer rfin = oHi.Value(); ! relative Feuchte in % innen
	real afVin; 				! absolute Feuchte in g/m³ LuftVolumen innen
!
	real tau = oTa.Value(); 	! Temperatur in °C außen
	integer rfau = oHa.Value(); ! relative Feuchte in % außen
	real afVau; 				! absolute Feuchte in g/m³ LuftVolumen außen
! xxx
!
! xxx Berechnung der absoluten Feuchte innen (in g/m³ Luftvolumen)
! https://homematic-forum.de/forum/viewtopic.php?f=26&t=69549&p=678384#p678382
!
    real afVin = (0.0 + (rfin * 13.245 * ((17.67 * tin)/(tin + 243.5)).Exp()) / (273.15 + tin));
! xxx
!
! xxx Berechnung der absoluten Feuchte außen (in g/m³ Luftvolumen)
!
	real afVau = (0.0 + (rfau * 13.245 * ((17.67 * tau)/(tau + 243.5)).Exp()) / (273.15 + tau));
! xxx
!
! xxx Berechnung der Lüftungsempfehlung in g/m³ Luftvolumen
! true Faktor; 0.8 bis 1.5; false Faktor; 0.3 bis 0.5; 	Hysterese mind 0.5
    if (afVau < afVin - 1.2) {oLueften.Variable(1);}
     else { 
        if (afVau >= afVin - 0.5) {oLueften.Variable(0);}
          }
! xxx
  dom.GetObject(ID_SYSTEM_VARIABLES).Get("Keller lüften").State(oLueften.Variable()); 					! xxx für Anzeige xxxxx
! xxx
!
! xxx Direktes ein-/ausschalten des Aktors/Kanal "Dein Schaltaktor Kanal" wegen Nachsteuerung
	if (oLueften.Variable() == 0 )
		{(dom.GetObject(ID_CHANNELS).Get("Dein Schaltaktor Kanal")).DPByHssDP("STATE").State(0.0);} 	! nicht lüften
	if (oLueften.Variable() == 1 )
		{(dom.GetObject(ID_CHANNELS).Get("Dein Schaltaktor Kanal")).DPByHssDP("STATE").State(1.0);} 	! lüften
! xxx
! xxx Parameter für Testprogramm Keller xxxx
!WriteLine(" xxx Parameter für Testprogramm Keller xxxx ");
!WriteLine(" ");
!WriteLine("Temperatur innen: 	" # tin.ToString(2)   # " °C ");
!WriteLine("abs. Feuchte innen: 	" # afVin.ToString(2) # " g/m³ ");
!WriteLine("Temperatur außen: 	" # tau.ToString(2)   # " °C ");
!WriteLine("abs. Feuchte außen: 	" # afVau.ToString(2) # " g/m³");
!WriteLine("abs. Feuchte außen < innen - 1.2, lüften : 			" # afVau.ToString(2) # " g/m³ <  " # (afVin - 1.2).ToString(2));
!WriteLine("abs. Feuchte außen >= innen - 0.5, nicht lüften : 	" # afVau.ToString(2) # " g/m³ >= " # (afVin - 0.5).ToString(2));
!WriteLine(" ");
!WriteLine("Lüftungsempfehlung: 	" # oLueften.Variable());
... also entsprechend Deine Daten einsetzen, SysVar anlegen

SysVar Keller.JPG

(Umlaute kein Problem)

Falls Schaltaktor nicht gebraucht, oder anders gelöst, einfach auskommentieren "!"

.. das Essen steht auf dem Tisch! :wink:

Gruß
schlichi

edit: Formel bereits geändert, siehe Beitrag von Roland; und auch unsinnige Rundung in der Rechenformel entfernt
Hallo,

ich habe mich mal an dem Script versucht, komme aber nicht weiter. Sollte ich nicht eine Ausgabe von Daten erhalten wenn ich das Script ausführe? Wie kann ich denn erkennen das es korrekt funktioniert? Die Fehlerprüfung sagt: kein Fehler. Die Systemvariable "HWR lüften" habe ich angelegt und die Datenpunkte habe ich über XML-API geholt d.h. ich habe den ersten Name genommen.

Hier der Sensor außen:

<device name="Funk-Temperatur-/ Feuchtesensor außen" address="MEQ0833325" ise_id="2228" interface="BidCos-RF" device_type="HM-WDS10-TH-O" ready_config="true">
<channel name="Funk-Temperatur-/ Feuchtesensor außen Holzunterstand" type="22" address="MEQ0833325:1" ise_id="2248" direction="SENDER" parent_device="2228" index="1" group_partner="" aes_available="false" transmission_mode="DEFAULT" visible="true" ready_config="true" operate="true"/>

Hier der Innen:

<device name="Thermostat Hauswirtschaftsraum" address="000A9569A3A102" ise_id="45011" interface="HmIP-RF" device_type="HmIP-WTH-2" ready_config="true">
<channel name="Thermostat Hauswirtschaftsraum 0" type="30" address="000A9569A3A102:0" ise_id="45012" direction="UNKNOWN" parent_device="45011" index="0" group_partner="" aes_available="false" transmission_mode="AES" visible="true" ready_config="true" operate="true"/>
<channel name="Thermostat Hauswirtschaftsraum:1" type="17" address="000A9569A3A102:1" ise_id="45035" direction="SENDER" parent_device="45011" index="1" group_partner="" aes_available="false" transmission_mode="AES" visible="true" ready_config="true" operate="true"/>
<channel name="HmIP-WTH-2 000A9569A3A102:2" type="17" address="000A9569A3A102:2" ise_id="45057" direction="RECEIVER" parent_device="45011" index="2" group_partner="" aes_available="false" transmission_mode="AES" visible="true" ready_config="true" operate="true"/>
<channel name="HmIP-WTH-2 000A9569A3A102:3" type="17" address="000A9569A3A102:3" ise_id="45058" direction="SENDER" parent_device="45011" index="3" group_partner="" aes_available="false" transmission_mode="AES" visible="true" ready_config="true" operate="true"/>
<channel name="Thermostat Hauswirtschaftsraum:4" type="37" address="000A9569A3A102:4" ise_id="45059" direction="RECEIVER" parent_device="45011" index="4" group_partner="" aes_available="false" transmission_mode="AES" visible="true" ready_config="true" operate="true"/>
<channel name="Thermostat Hauswirtschaftsraum:5" type="26" address="000A9569A3A102:5" ise_id="45060" direction="SENDER" parent_device="45011" index="5" group_partner="" aes_available="false" transmission_mode="AES" visible="true" ready_config="true" operate="true"/>
<channel name="HmIP-WTH-2 000A9569A3A102:6" type="17" address="000A9569A3A102:6" ise_id="45061" direction="RECEIVER" parent_device="45011" index="6" group_partner="" aes_available="false" transmission_mode="AES" visible="true" ready_config="true" operate="true"/>
<channel name="HmIP-WTH-2 000A9569A3A102:7" type="17" address="000A9569A3A102:7" ise_id="45062" direction="SENDER" parent_device="45011" index="7" group_partner="" aes_available="false" transmission_mode="AES" visible="true" ready_config="true"

Hier der Schaltaktor:

device name="Lüfter HWR" address="LEQ0264630" ise_id="46236" interface="BidCos-RF" device_type="HM-LC-Sw1-FM" ready_config="true">
<channel name="Lüfter HWR:1" type="26" address="LEQ0264630:1" ise_id="46261" direction="RECEIVER" parent_device="46236" index="1" group_partner="" aes_available="true" transmission_mode="DEFAULT" visible="true" ready_config="true" operate="true"/>
</device>

Gruß Ronny


Hier mal das Script mit den von mir eingetragenen Daten:

Code: Alles auswählen

! xxx Lüftung-Keller - 1.61 Berechnung der Parameter für Lüftung, incl. Schaltung xxxxxx
! mit direktem Schalten, "Dein Schaltaktor Kanal" (Umgehung der SysVar "Keller Lüften")
! Stand: 14.09.2021 / GS
!
! absolute Feuchte in g/m³ Luftvolumen
!
! https://homematic-forum.de/forum/viewtopic.php?p=71326#p71326
! by paul53
!
  object oTHi = (dom.GetObject(ID_CHANNELS)).Get("Thermostat Hauswirtschaftsraum 0"); 	! xxx innen xxxx
  object oTi = oTHi.DPByHssDP("ACTUAL_TEMPERATURE");
  object oHi = oTHi.DPByHssDP("HUMIDITY");
!
  object oLueften = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("HWR lüften"); 		! xxx SysVar xxxx
!
  object oTHa = (dom.GetObject(ID_CHANNELS)).Get("Funk-Temperatur-/ Feuchtesensor außen Holzunterstand"); 	! xxx außen xxxx
  object oTa = oTHa.DPByHssDP("ACTUAL_TEMPERATURE");
  object oHa = oTHa.DPByHssDP("HUMIDITY");
!
! xxx Programmteil Lüftungsempfehlung
! Lokale Variablen
	real tin = oTi.Value(); 	! Temperatur in °C innen
	integer rfin = oHi.Value(); ! relative Feuchte in % innen
	real afVin; 				! absolute Feuchte in g/m³ LuftVolumen innen
!
	real tau = oTa.Value(); 	! Temperatur in °C außen
	integer rfau = oHa.Value(); ! relative Feuchte in % außen
	real afVau; 				! absolute Feuchte in g/m³ LuftVolumen außen
! xxx
!
! xxx Berechnung der absoluten Feuchte innen (in g/m³ Luftvolumen)
! https://homematic-forum.de/forum/viewtopic.php?f=26&t=69549&p=678384#p678382
!
    real afVin = (0.0 + (rfin * 13.245 * ((17.67 * tin)/(tin + 243.5)).Exp()) / (273.15 + tin));
! xxx
!
! xxx Berechnung der absoluten Feuchte außen (in g/m³ Luftvolumen)
!
	real afVau = (0.0 + (rfau * 13.245 * ((17.67 * tau)/(tau + 243.5)).Exp()) / (273.15 + tau));
! xxx
!
! xxx Berechnung der Lüftungsempfehlung in g/m³ Luftvolumen
! true Faktor; 0.8 bis 1.5; false Faktor; 0.3 bis 0.5; 	Hysterese mind 0.5
    if (afVau < afVin - 1.2) {oLueften.Variable(1);}
     else { 
        if (afVau >= afVin - 0.5) {oLueften.Variable(0);}
          }
! xxx
  dom.GetObject(ID_SYSTEM_VARIABLES).Get("HWR lüften").State(oLueften.Variable()); 					! xxx für Anzeige xxxxx
! xxx
!
! xxx Direktes ein-/ausschalten des Aktors/Kanal "Dein Schaltaktor Kanal" wegen Nachsteuerung
	if (oLueften.Variable() == 0 )
		{(dom.GetObject(ID_CHANNELS).Get("Lüfter HWR:1")).DPByHssDP("STATE").State(0.0);} 	! nicht lüften
	if (oLueften.Variable() == 1 )
		{(dom.GetObject(ID_CHANNELS).Get("Lüfter HWR:1")).DPByHssDP("STATE").State(1.0);} 	! lüften
! xxx
! xxx Parameter für Testprogramm Keller xxxx
WriteLine(" xxx Parameter für Testprogramm Keller xxxx ");
WriteLine(" ");
WriteLine("Temperatur innen: 	" # tin.ToString(2)   # " °C ");
WriteLine("abs. Feuchte innen: 	" # afVin.ToString(2) # " g/m³ ");
WriteLine("Temperatur außen: 	" # tau.ToString(2)   # " °C ");
WriteLine("abs. Feuchte außen: 	" # afVau.ToString(2) # " g/m³");
WriteLine("abs. Feuchte außen < innen - 1.2, lüften : 			" # afVau.ToString(2) # " g/m³ <  " # (afVin - 1.2).ToString(2));
WriteLine("abs. Feuchte außen >= innen - 0.5, nicht lüften : 	" # afVau.ToString(2) # " g/m³ >= " # (afVin - 0.5).ToString(2));
WriteLine(" ");
WriteLine("Lüftungsempfehlung: 	" # oLueften.Variable());

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

Re: Probleme Lüftersteuerung über die Absolute Luftfeuchte

Beitrag von Henke » 26.10.2022, 20:16

"Thermostat Hauswirtschaftsraum 0"
sieht falsch aus. Ersetzen durch "Thermostat Hauswirtschaftsraum:1" oder besser noch "000A9569A3A102:1".

Bei den anderen Kanälen bestimmt das gleiche.

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

Re: Probleme Lüftersteuerung über die Absolute Luftfeuchte

Beitrag von Baxxy » 26.10.2022, 20:20

Genau. Kanal:1 vom IP-Thermostat nehmen.

Außerdem ist dein Außensensor HM (nicht IP), da würde ich mal sagen der Temperatur-Datenpunkt heißt "TEMPERATURE" und nicht "ACTUAL_TEMPERATURE". Bin aber nicht 100%ig sicher weil es bei HM beide Namen gibt, und zu faul bin die Doku zu wälzen. Ausprobieren!

R.Thümer
Beiträge: 33
Registriert: 16.02.2020, 13:40
System: CCU
Hat sich bedankt: 9 Mal

Re: Probleme Lüftersteuerung über die Absolute Luftfeuchte

Beitrag von R.Thümer » 27.10.2022, 10:52

Henke hat geschrieben:
26.10.2022, 20:16
"Thermostat Hauswirtschaftsraum 0"
sieht falsch aus. Ersetzen durch "Thermostat Hauswirtschaftsraum:1" oder besser noch "000A9569A3A102:1".

Bei den anderen Kanälen bestimmt das gleiche.
Hallo, danke für den Tip. Hat leider keine Besserung gebracht. Unverändert keine Ausgabe beim Ausführen des Scriptes.

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

Re: Probleme Lüftersteuerung über die Absolute Luftfeuchte

Beitrag von Henke » 27.10.2022, 16:08

Das neue Script bitte.


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

Re: Probleme Lüftersteuerung über die Absolute Luftfeuchte

Beitrag von Henke » 27.10.2022, 16:22

Glaskugel sagt... 80% 8)

R.Thümer
Beiträge: 33
Registriert: 16.02.2020, 13:40
System: CCU
Hat sich bedankt: 9 Mal

Re: Probleme Lüftersteuerung über die Absolute Luftfeuchte

Beitrag von R.Thümer » 28.10.2022, 20:18

Henke hat geschrieben:
27.10.2022, 16:08
Das neue Script bitte.
Hallo, hier das Script mit den Änderungen.

Code: Alles auswählen

! xxx Lüftung-Keller - 1.61 Berechnung der Parameter für Lüftung, incl. Schaltung xxxxxx
! mit direktem Schalten, "Dein Schaltaktor Kanal" (Umgehung der SysVar "Keller Lüften")
! Stand: 14.09.2021 / GS
!
! absolute Feuchte in g/m³ Luftvolumen
!
! https://homematic-forum.de/forum/viewtopic.php?p=71326#p71326
! by paul53
!
  object oTHi = (dom.GetObject(ID_CHANNELS)).Get("000A9569A3A102:1"); 	! xxx innen xxxx
  object oTi = oTHi.DPByHssDP("TEMPERATURE");
  object oHi = oTHi.DPByHssDP("HUMIDITY");
!
  object oLueften = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("HWR lüften"); 		! xxx SysVar xxxx
!
  object oTHa = (dom.GetObject(ID_CHANNELS)).Get("MEQ0833325:1"); 	! xxx außen xxxx
  object oTa = oTHa.DPByHssDP("TEMPERATURE");
  object oHa = oTHa.DPByHssDP("HUMIDITY");
!
! xxx Programmteil Lüftungsempfehlung
! Lokale Variablen
	real tin = oTi.Value(); 	! Temperatur in °C innen
	integer rfin = oHi.Value(); ! relative Feuchte in % innen
	real afVin; 				! absolute Feuchte in g/m³ LuftVolumen innen
!
	real tau = oTa.Value(); 	! Temperatur in °C außen
	integer rfau = oHa.Value(); ! relative Feuchte in % außen
	real afVau; 				! absolute Feuchte in g/m³ LuftVolumen außen
! xxx
!
! xxx Berechnung der absoluten Feuchte innen (in g/m³ Luftvolumen)
! https://homematic-forum.de/forum/viewtopic.php?f=26&t=69549&p=678384#p678382
!
    real afVin = (0.0 + (rfin * 13.245 * ((17.67 * tin)/(tin + 243.5)).Exp()) / (273.15 + tin));
! xxx
!
! xxx Berechnung der absoluten Feuchte außen (in g/m³ Luftvolumen)
!
	real afVau = (0.0 + (rfau * 13.245 * ((17.67 * tau)/(tau + 243.5)).Exp()) / (273.15 + tau));
! xxx
!
! xxx Berechnung der Lüftungsempfehlung in g/m³ Luftvolumen
! true Faktor; 0.8 bis 1.5; false Faktor; 0.3 bis 0.5; 	Hysterese mind 0.5
    if (afVau < afVin - 1.2) {oLueften.Variable(1);}
     else { 
        if (afVau >= afVin - 0.5) {oLueften.Variable(0);}
          }
! xxx
  dom.GetObject(ID_SYSTEM_VARIABLES).Get("HWR lüften").State(oLueften.Variable()); 					! xxx für Anzeige xxxxx
! xxx
!
! xxx Direktes ein-/ausschalten des Aktors/Kanal "Dein Schaltaktor Kanal" wegen Nachsteuerung
	if (oLueften.Variable() == 0 )
		{(dom.GetObject(ID_CHANNELS).Get("Lüfter HWR")).DPByHssDP("STATE").State(0.0);} 	! nicht lüften
	if (oLueften.Variable() == 1 )
		{(dom.GetObject(ID_CHANNELS).Get("Lüfter HWR")).DPByHssDP("STATE").State(1.0);} 	! lüften
! xxx
! xxx Parameter für Testprogramm Keller xxxx
WriteLine(" xxx Parameter für Testprogramm Keller xxxx ");
WriteLine(" ");
WriteLine("Temperatur innen: 	" # tin.ToString(2)   # " °C ");
WriteLine("abs. Feuchte innen: 	" # afVin.ToString(2) # " g/m³ ");
WriteLine("Temperatur außen: 	" # tau.ToString(2)   # " °C ");
WriteLine("abs. Feuchte außen: 	" # afVau.ToString(2) # " g/m³");
WriteLine("abs. Feuchte außen < innen - 1.2, lüften : 			" # afVau.ToString(2) # " g/m³ <  " # (afVin - 1.2).ToString(2));
WriteLine("abs. Feuchte außen >= innen - 0.5, nicht lüften : 	" # afVau.ToString(2) # " g/m³ >= " # (afVin - 0.5).ToString(2));
WriteLine(" ");!WriteLine("Lüftungsempfehlung: 	" # oLueften.Variable());

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

Re: Probleme Lüftersteuerung über die Absolute Luftfeuchte

Beitrag von Henke » 28.10.2022, 21:40

Teste das mal...
Achtung, Script optimiert.

Code: Alles auswählen

! xxx Lüftung-Keller - 1.61 Berechnung der Parameter für Lüftung, incl. Schaltung xxxxxx
! mit direktem Schalten, "Dein Schaltaktor Kanal" (Umgehung der SysVar "Keller Lüften")
! Stand: 14.09.2021 / GS
!
! absolute Feuchte in g/m³ Luftvolumen
!
! https://homematic-forum.de/forum/viewtopic.php?p=71326#p71326
! by paul53
!
! Anderungen - M. Henke
! Fehlerkontrolle
! Variablen an den Anfang gesetzt
! Systemvariable entfernt - Ziel kann Kanal oder Systemvariable sein
! Formel optimiert
! Mindestluftfeuchte hinzugefügt

! Hier anpassen
var sInnenKanal = "HmIP-WTH-2 U-Büro:1";  ! anpassen
string sInnenDP = "TEMPERATURE";   ! oder "ACTUAL_TEMPERATURE"

var sAussenKanal = "Funk-Temperatur-/ Feuchtesensor außen Holzunterstand"; ! ?
string sAussenDP = "TEMPERATURE";   ! oder "ACTUAL_TEMPERATURE"

var sZielKanal = "Lüfter HWR";   ! evtl. FALSCH
real rMinimumLuftfeuchte = 10.0; ! Darunter lohnt es nicht

! AB hier nichts mehr ändern

  object oTHi = (dom.GetObject(ID_CHANNELS)).Get(sInnenKanal); 	! xxx innen xxxx
  if (  !oTHi ) { WriteLine ( "Kanal Innen falsch!" ); quit; };
  object oTi = oTHi.DPByHssDP(sInnenDP);
  if (  !oTi ) { WriteLine ( "Datenpunkt Innen falsch!" ); quit; };
  object oHi = oTHi.DPByHssDP("HUMIDITY");

!
!  object oLueften = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("HWR lüften"); 		! xxx SysVar xxxx
!
  object oTHa = (dom.GetObject(ID_CHANNELS)).Get(sAussenKanal); 	! xxx außen xxxx
  if (  !oTHa ) { WriteLine ( "Kanal Außen falsch!" ); quit; };
  object oTa = oTHa.DPByHssDP(sAussenDP);
  if (  !oTa ) { WriteLine ( "Datenpunkt Außen falsch!" ); quit; };
  object oHa = oTHa.DPByHssDP("HUMIDITY");

  object oZiel = dom.GetObject(sZielKanal); 	! Zielkanal
  if (  !oZiel ) { WriteLine ( "Kanal Ziel falsch!" ); quit; };

!
! xxx Programmteil Lüftungsempfehlung
! Lokale Variablen
	real tin = oTi.Value(); 	! Temperatur in °C innen
	integer rfin = oHi.Value(); ! relative Feuchte in % innen
	real afVin; 				! absolute Feuchte in g/m³ LuftVolumen innen
!
	real tau = oTa.Value(); 	! Temperatur in °C außen
	integer rfau = oHa.Value(); ! relative Feuchte in % außen
	real afVau; 				! absolute Feuchte in g/m³ LuftVolumen außen
! xxx
!
! xxx Berechnung der absoluten Feuchte innen (in g/m³ Luftvolumen)
! https://homematic-forum.de/forum/viewtopic.php?f=26&t=69549&p=678384#p678382
!
!    real afVin = (0.0 + (13.245 * rfin * ((17.67 * tin)/(tin + 243.5)).Exp()) / (273.15 + tin));
! Einzeiler ok, aber es geht genauer - Topic nicht gelsen :-)
    real afVin = ((6112.0 / 461.51) * rfin * ((17.62 * tin)/(tin + 243.12)).Exp()) / (273.15 + tin);
! xxx
!
! xxx Berechnung der absoluten Feuchte außen (in g/m³ Luftvolumen)
!
	real afVau = ((6112.0 / 461.51) * rfau * ((17.67 * tau)/(tau + 243.5)).Exp()) / (273.15 + tau);
! xxx
!
! xxx Berechnung der Lüftungsempfehlung in g/m³ Luftvolumen
! true Faktor; 0.8 bis 1.5; false Faktor; 0.3 bis 0.5; 	Hysterese mind 0.5
	boolean bLueften = false;
    if ( rMinimumLuftfeuchte <= afVin ) {
    if (afVau < (afVin - 1.2)) {bLueften = true;}
     else {
        if (afVau >= (afVin - 0.5)) {bLueften = false;}
          }
          }
! xxx
!  dom.GetObject(ID_SYSTEM_VARIABLES).Get("HWR lüften").State(oLueften.Variable()); 					! xxx für Anzeige xxxxx
! xxx
!
! xxx Direktes ein-/ausschalten des Aktors/Kanal "Dein Schaltaktor Kanal" wegen Nachsteuerung
if ( oZiel.State() != bLueften)  { oZiel.State(bLueften); }

! xxx
! xxx Parameter für Testprogramm Keller xxxx
WriteLine(" xxx Parameter xxxx ");
WriteLine("Temperatur innen: 	" # tin.ToString(2)   # " °C ");
WriteLine("abs. Feuchte innen: 	" # afVin.ToString(2) # " g/m³ ");
WriteLine("Temperatur außen: 	" # tau.ToString(2)   # " °C ");
WriteLine("abs. Feuchte außen: 	" # afVau.ToString(2) # " g/m³");
WriteLine("abs. Feuchte Minimum <= innen lüften : 			" # rMinimumLuftfeuchte.ToString(2) # " g/m³ <  " # afVin.ToString(2));
WriteLine("abs. Feuchte außen < innen - 1.2, lüften : 			" # afVau.ToString(2) # " g/m³ <  " # (afVin - 1.2).ToString(2));
WriteLine("abs. Feuchte außen >= innen - 0.5, nicht lüften : 	" # afVau.ToString(2) # " g/m³ >= " # (afVin - 0.5).ToString(2));
WriteLine("Lüftungsempfehlung: 	" # bLueften );
Zuletzt geändert von Henke am 28.10.2022, 22:31, insgesamt 1-mal geändert.

Antworten

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