schlichi hat geschrieben: ↑12.09.2021, 13:17
Hallo Kai(?),
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());
... 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!
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());