nach stundenlanger Probiererei muss ich jetzt trotzdem den Thread hier ausgraben...
Ich möchte eigentlich genau die gleiche Funktion des Garagenlüftens wie "leilei" und habe mir das Script von "schlichi" eingefügt. Leider werden meine Systemvariablen nicht beschrieben. Was mach ich verkehrt?
Hier das Script:
Code: Alles auswählen
! xxx Berechnung der Lüftungsempfehlung xxxxxx
! Quelle: https://homematic-forum.de/forum/viewtopic.php?p=71326#p71326
! (C) basierend auf paul53
! 10.03.2022 / GS
! xxx Name des Datenkanals des Innensensors
object oTHi = dom.GetObject("Luftqualität Garage"); ! xxx Kanal innen HmIPW-WTH (Thermostat, WoZi-, :1 ersetzen)
object oTi = oTHi.DPByHssDP("ACTUAL_TEMPERATURE");
object oHi = oTHi.DPByHssDP("ACTUAL_HUMIDITY");
! xxx Name der SysVar
object oLueften = dom.GetObject("Garage lüften"); ! xxx SysVar (Garage lüften, muss angelegt sein, ggf. ersetzen)
! xxx Name des Datenkanals des Aussensensors
object oTHa = dom.GetObject("Luftqualität Außen"); ! xxx Kanal aussen HmIPW-STHO (Sensor, LFT-, :1 ersetzen)
object oTa = oTHa.DPByHssDP("ACTUAL_TEMPERATURE");
object oHa = oTHa.DPByHssDP("ACTUAL_HUMIDITY");
! xxx Programmteil Lüftungsempfehlung xxxxxx
! 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
! 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; }
! Berechnung der Lüftungsempfehlung mit 0,8 g/kg Hysterese und update der SysVar
if ( afau <= ( afin - 0.8 ) )
{ oLueften.State(true); }
else
{ oLueften.State(false); }
!Die absolute Luftfeuchte drinnen und draußen in eine Variable schreiben
dom.GetObject("Luftfeuchte Garage").State(afin); !Innen
dom.GetObject("Luftfeuchte Außen").State(afau); !Außen
! xxx Programmende xxxxxxx
Und hier das Programm, Geräte und Variablen:
Das Programm hat nur zum Testen den Taster als Auslöser. Wenn das Script funktioniert, dann soll er tagsüber alle 15 Minuten testen, ob gelüftet werden kann.
Vielen Dank für eure Hilfe!
Viele Grüße
Julian