Probleme Lüftersteuerung über die Absolute Luftfeuchte
Moderator: Co-Administratoren
Probleme Lüftersteuerung über die Absolute Luftfeuchte
Hallo Zusammen,
ich habe aktuelle eine Herrausforderng mit der Lüftungssteuerung. Die Idee ist, die absolute Luftfeuchte zu ermitteln und damit einen Lüfter im Keller anzusteuern um optimalen Luftaustausch zu gewährleisten. Leider muss ich aber bei dem Skript um Hilfe fragen, da die Systemvariable nicht aktualisiert wird:
var rLfi = dom.GetObject("HmIP-STHD 000E9D898AD94A:1.HUMIDITY").Value();
var ti = dom.GetObject("HmIP-STHD 000E9D898AD94A:1.TEMPERATURE").Value();
var ri = (17.62 * t) / (243.12 + t);
var ei = r.Exp()*611.2;
var eSati = e * rLf;
var aLfi = ((eSat / 461.51 * (t+273.15))*10).ToString(2);
var rLfa = dom.GetObject("HmIP-STHO-A 0010DD8989855A:1.HUMIDITY").Value();
var ta = dom.GetObject("HmIP-STHO-A 0010DD8989855A:1.TEMPERATURE").Value();
var ra = (17.62 * t) / (243.12 + t);
var ea = r.Exp()*611.2;
var eSata = e * rLf;
var aLfa = ((eSat / 461.51 * (t+273.15))*10).ToString(2);
if(aLfa>=(aLfi))
{dom.GetObject("Keller").State(false);
}
else{dom.GetObject("Keller").State(true);
}
Vielen Dank für eure Hilfe
ich habe aktuelle eine Herrausforderng mit der Lüftungssteuerung. Die Idee ist, die absolute Luftfeuchte zu ermitteln und damit einen Lüfter im Keller anzusteuern um optimalen Luftaustausch zu gewährleisten. Leider muss ich aber bei dem Skript um Hilfe fragen, da die Systemvariable nicht aktualisiert wird:
var rLfi = dom.GetObject("HmIP-STHD 000E9D898AD94A:1.HUMIDITY").Value();
var ti = dom.GetObject("HmIP-STHD 000E9D898AD94A:1.TEMPERATURE").Value();
var ri = (17.62 * t) / (243.12 + t);
var ei = r.Exp()*611.2;
var eSati = e * rLf;
var aLfi = ((eSat / 461.51 * (t+273.15))*10).ToString(2);
var rLfa = dom.GetObject("HmIP-STHO-A 0010DD8989855A:1.HUMIDITY").Value();
var ta = dom.GetObject("HmIP-STHO-A 0010DD8989855A:1.TEMPERATURE").Value();
var ra = (17.62 * t) / (243.12 + t);
var ea = r.Exp()*611.2;
var eSata = e * rLf;
var aLfa = ((eSat / 461.51 * (t+273.15))*10).ToString(2);
if(aLfa>=(aLfi))
{dom.GetObject("Keller").State(false);
}
else{dom.GetObject("Keller").State(true);
}
Vielen Dank für eure Hilfe
Zuletzt geändert von Roland M. am 11.09.2021, 17:39, insgesamt 1-mal geändert.
Grund: Thema verschoben
Grund: Thema verschoben
-
- Beiträge: 544
- Registriert: 17.04.2021, 17:12
- System: CCU
- Hat sich bedankt: 27 Mal
- Danksagung erhalten: 123 Mal
Re: Probleme Lüftersteuerung über die Absolute Luftfeuchte
Hallo
Skript solltest du normalerweise in Code-Tags posten.
Aber mir ist aufgefallen, daß einige Variablen nicht definert sind z.B "t". oder "eSat"
Daher bricht die Abarbeitung schon mal an der Stelle ab.
Zum anderen werden auch Zwischenergebnisse nicht weiterverwendet, wie z.B. "ei". usw.
Zu letzt vergleichst du Zeichenketten (Strings) auf grösser.
Das wird nicht das gewünschte Ergebnis bringen.
Überprüfe aber noch mal deine Variablen-Benennungen.
Gruß
Harry
Skript solltest du normalerweise in Code-Tags posten.
Aber mir ist aufgefallen, daß einige Variablen nicht definert sind z.B "t". oder "eSat"
Daher bricht die Abarbeitung schon mal an der Stelle ab.
Zum anderen werden auch Zwischenergebnisse nicht weiterverwendet, wie z.B. "ei". usw.
Zu letzt vergleichst du Zeichenketten (Strings) auf grösser.
Das wird nicht das gewünschte Ergebnis bringen.
Überprüfe aber noch mal deine Variablen-Benennungen.
Gruß
Harry
Gruß
Harry
Harry
-
- Beiträge: 9650
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 697 Mal
- Danksagung erhalten: 1617 Mal
Re: Probleme Lüftersteuerung über die Absolute Luftfeuchte
Und du bist sicher, dass es nur ein Objekt mit Namen "Keller" gibt und das dies eine Systemvariable ist?
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 +++
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 +++
- 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
Sehe ich nicht ganz so. Guckt man genauer hin sind alle Skriptvariablen korrekt deklariert, sogar getrennt für innen (mit "Suffix" i) und für außen (mit "Suffix" a). Nur werden in der weiteren Verarbeitung die Suffixe nicht mehr genutzt. Und das kann dann eben nicht funktionieren.
Grüße
Baxxy
-
- Beiträge: 544
- Registriert: 17.04.2021, 17:12
- System: CCU
- Hat sich bedankt: 27 Mal
- Danksagung erhalten: 123 Mal
Re: Probleme Lüftersteuerung über die Absolute Luftfeuchte
Die Idee mit den Suffix hab ich schon gesehen.
Deshalb schrieb ich ja auch :
Gruß
Harry
Deshalb schrieb ich ja auch :
Der Compiler / Interpreter unterscheidet nicht zwischen nicht definiert und anders definiert
Gruß
Harry
Gruß
Harry
Harry
-
- 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
Hallo Kai(?),
hier mal, da auch mir geholfen wurde, flugfähige, gebratene Tauben
... also entsprechend Deine Daten einsetzen, SysVar anlegen
(Umlaute kein Problem)
Falls Schaltaktor nicht gebraucht, oder anders gelöst, einfach auskommentieren "!"
.. das Essen steht auf dem Tisch!
Gruß
schlichi
edit: Formel bereits geändert, siehe Beitrag von Roland; und auch unsinnige Rundung in der Rechenformel entfernt
hier mal, da auch mir geholfen wurde, flugfähige, gebratene Tauben
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());
(Umlaute kein Problem)
Falls Schaltaktor nicht gebraucht, oder anders gelöst, einfach auskommentieren "!"
.. das Essen steht auf dem Tisch!
Gruß
schlichi
edit: Formel bereits geändert, siehe Beitrag von Roland; und auch unsinnige Rundung in der Rechenformel entfernt
Zuletzt geändert von schlichi am 14.09.2021, 13:54, insgesamt 2-mal geändert.
... inzwischen autodidakter, fortgeschrittener Anfänger mit bestandener Einstiegsprüfung für den Expertenmodus Teil 3 (erfahrener Anwender)
- Roland M.
- Beiträge: 9784
- Registriert: 08.12.2012, 15:53
- System: CCU
- Wohnort: Graz, Österreich
- Hat sich bedankt: 252 Mal
- Danksagung erhalten: 1373 Mal
Re: Probleme Lüftersteuerung über die Absolute Luftfeuchte
Hallo!
Formel stammt auch aus den Tiefen des Forums...
Roland
...oder als "Einzeiler" der genäherte Wert (differiert meist nur in der zweiten Kommastelle):Code: Alles auswählen
! xxx Berechnung der absoluten Feuchte innen (in g/m³ Luftvolumen) ! 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 afVin = ((eSat / 461.51 * (tin+273.15))*10).ToString(2);
Code: Alles auswählen
real temp = 30.0;
real rF = 30.0;
real aF = 0.0 + (rF * 13.245 * ((17.67 * temp)/(temp + 243.5)).Exp()) / (273.15 + temp);
WriteLine("Absolute Luftfeuchtigkeit: " # aF);
Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...
- 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. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...
-
- 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
Hallo Roland,
Die Formel werde ich übernehmen, Script wird übersichtlicher.
Gruß
schlichi
besten Dank. Ich habe schon tief gesucht, aber so tief .....Formel stammt auch aus den Tiefen des Forums...
Die Formel werde ich übernehmen, Script wird übersichtlicher.
Gruß
schlichi
... inzwischen autodidakter, fortgeschrittener Anfänger mit bestandener Einstiegsprüfung für den Expertenmodus Teil 3 (erfahrener Anwender)
- 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
Mir ist noch aufgefallen die Zugriffe ala...
Grüße
Baxxy
sind auch falsch. Wenn dann müsste es so aussehen...kai_GRZI hat geschrieben: ↑11.09.2021, 17:28Code: Alles auswählen
var rLfi = dom.GetObject("HmIP-STHD 000E9D898AD94A:1.HUMIDITY").Value();
Code: Alles auswählen
var rLfi = dom.GetObject("HmIP-RF.000E9D898AD94A:1.HUMIDITY").Value();
Baxxy
Re: Probleme Lüftersteuerung über die Absolute Luftfeuchte
Mensch Wahnsinn, das Flattern mit die Taben halb roh in den Mund
Auch wenn ich ein völliger Leihe bin(war) habt Ihr mir mega geholfen, ich habe zwar ein paar sachen angepasst weil es nicht ganz geklappt hat, aber nun läuft es .
DANKE
Auch wenn ich ein völliger Leihe bin(war) habt Ihr mir mega geholfen, ich habe zwar ein paar sachen angepasst weil es nicht ganz geklappt hat, aber nun läuft es .
DANKE
Code: Alles auswählen
! xxx Lüftung-Keller - 1.6 Berechnung der Parameter für Lüftung, incl. Schaltung xxxxxx
! mit direktem Schalten, "Dein Schaltaktor Kanal" (Umgehung der SysVar "Keller Lüften")
! Stand: 12.09.2021 / GS
!
! absolute Feuchte in g/m³ Luftvolumen
!
! https://homematic-forum.de/forum/viewtopic.php?p=71326#p71326
! by paul53
!
object oTi = dom.GetObject("HmIP-RF.000E9D898AD94A:1.ACTUAL_TEMPERATURE").Value();
object oHi = dom.GetObject("HmIP-RF.000E9D898AD94A:1.HUMIDITY").Value();
!WriteLine(oTi);
!WriteLine(oHi);
object oLueften = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Keller lüften"); ! xxx SysVar xxxx
!
object oTa = dom.GetObject("HmIP-RF.0010DD8989855A:1.ACTUAL_TEMPERATURE").Value();
object oHa = dom.GetObject("HmIP-RF.0010DD8989855A:1.HUMIDITY").Value();
!
!WriteLine(oTa);
!WriteLine(oHa);
! xxx Programmteil Lüftungsempfehlung
! Lokale Variablen
real tin = oTi; ! Temperatur in °C innen
integer rfin = oHi; ! relative Feuchte in % innen
real afVin; ! absolute Feuchte in g/m³ LuftVolumen innen
!
real tau = oTa; ! Temperatur in °C außen
integer rfau = oHa; ! 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)).ToString(2);
! 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)).ToString(2);
! 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());