Script zur Berechnung des Feuchtegehalts
Moderator: Co-Administratoren
Re: Script zur Berechnung des Feuchtegehalts
Hallo zusammen
Die beiden vorhergehenden Anfragen sind erledigt.
Habe den Fehler gefunden...
Liebe Grüsse aus der Schweiz
Die beiden vorhergehenden Anfragen sind erledigt.
Habe den Fehler gefunden...
Liebe Grüsse aus der Schweiz
Liebe Grüsse aus der Schweiz
Andy
_________________________________________________________________________________________________
Raspberrymatic auf NUC unter Proxmox mit RPI-RF-MOD Funkmodul und Antenne Aurel GP868, ca. 19x BidCos-RF und ca. 46x HmIP-RF, ioBroker auf NUC unter Proxmox, 4x Wiffi 3.0, Pulsecounter, Weatherman-Edition
Andy
_________________________________________________________________________________________________
Raspberrymatic auf NUC unter Proxmox mit RPI-RF-MOD Funkmodul und Antenne Aurel GP868, ca. 19x BidCos-RF und ca. 46x HmIP-RF, ioBroker auf NUC unter Proxmox, 4x Wiffi 3.0, Pulsecounter, Weatherman-Edition
Re: Script zur Berechnung des Feuchtegehalts
Hallo.....
nachdem ich auch Probleme mit Schimmel im Keller habe, hätte ich auch gerne eine Lüftungssteuerung. Nun bin ich auch nicht so der Profi in diesem Gebiet
Leider werden meine Systemvariablen nicht geschrieben. Folgendes wurde übernommen:
Wenn ich das Script manuel laufen lasse sollte doch eigentlich was geschrieben werden oder? Der Außensensor ist ein Homematic IP Sensor und innen ein normales Homematic Wandthermostat
Lg
nachdem ich auch Probleme mit Schimmel im Keller habe, hätte ich auch gerne eine Lüftungssteuerung. Nun bin ich auch nicht so der Profi in diesem Gebiet
Leider werden meine Systemvariablen nicht geschrieben. Folgendes wurde übernommen:
Code: Alles auswählen
! Garage Berechnung der Schimmelwarnung und Lüftungsempfehlung
object oTHi = dom.GetObject("Thermostat_Keller:1");
object oTi = oTHi.DPByHssDP("TEMPERATURE");
object oHi = oTHi.DPByHssDP("HUMIDITY");
object oSchimmel = dom.GetObject("Keller_Schimmel");
object oLueften = dom.GetObject("Keller_Lueften");
object oTHa = dom.GetObject("Außentemperatursensor:1");
object oTa = oTHa.DPByHssDP("TEMPERATURE");
object oHa = oTHi.DPByHssDP("HUMIDITY");
! 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 = oHi.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
if (afau < afin - 0.8) {oLueften.Variable(true);}
else
{ if (afau >= afin - 0.3) {oLueften.Variable(false);}
}
! Programmteil Schimmelwarnung
! Berechnung der Oberflächentemperatur der Außenwandecke
real tw; ! Oberfächentemperatur der Außenwandecke in °C
real ta = oTa.Value(); ! Außentemperatur in °C
real ti = oTi.Value(); ! Raumtemperatur in °C
tw = ti + ((0.13 / 0.268) * (ta - ti)); ! Rges = 0.268 empirisch ermittelt
! Lokale Variablen
real t; ! Temperatur in °C
integer rf; ! relative Feuchte in %
real afw; ! Schimmelwarn-Grenzfeuchte in g/kg
real afa; ! Schimmelalarm-Grenzfeuchte in g/kg
t = tw;
! Berechnung Warn-Grenzfeuchte
rf = 70;
if (t < 0.0) {t = 0.0;}
if (t < 10.0)
{ afw = (3.78 + (0.29 * t) + (0.0046 * t * t) + (0.00051 * t * t * t)) * 0.01 * rf;
}
else
{ afw = (7.62 + (0.51 * (t-10.0)) + (0.0143 * (t-10.0) * (t-10.0)) + (0.00045 * (t-10.0) * (t-10.0) * (t-10.0))) * 0.01 * rf;
}
! Berechnung Alarm-Grenzfeuchte
rf = 80;
if (t < 0.0) {t = 0.0;}
if (t < 10.0)
{ afa = (3.78 + (0.29 * t) + (0.0046 * t * t) + (0.00051 * t * t * t)) * 0.01 * rf;
}
else
{ afa = (7.62 + (0.51 * (t-10.0)) + (0.0143 * (t-10.0) * (t-10.0)) + (0.00045 * (t-10.0) * (t-10.0) * (t-10.0))) * 0.01 * rf;
}
! Schimmelwarnung
! 0 - keine Gefahr
! 1 - Warnung
! 2 - Alarm
if (afin > afa) {oSchimmel.Variable(2);}
else {
if (afin > afw) {oSchimmel.Variable(1);}
else {oSchimmel.Variable(0);}
}
Lg
-
- Beiträge: 10756
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 674 Mal
Re: Script zur Berechnung des Feuchtegehalts
Für den Anfang würde ich erstmal die ersten paar Zeilen klären.
Die Objektnamen werden da schon mit ziemlicher Sicherheit nicht stimmen.
Thermostat_Keller:1 ist der Kanalname von welcher KanalNr. eines welchen Gerätes?
Der Name suggeriert Kanal 1 - Welcher Art ist also das Thermostat?
Wenn dein Kellerthermostat ein HM-TC-IT-WM-W-EU ist sollte der Teil funktionieren.
Handelt es ich z.B. dagegen z.B. um ein HmIP-WTH-2 wird es so nicht funktionieren, da der Datenpunkt dann ACTUAL_TEMPERATURE statt TEMPERATURE heißen muss.
Ist das gelöst geht es mit Außentemperatursensor:1 weiter, die Fragen sind dieselben.
Siehe auch hier:
viewtopic.php?f=31&t=30127#p273730
Alchy
Die Objektnamen werden da schon mit ziemlicher Sicherheit nicht stimmen.
Thermostat_Keller:1 ist der Kanalname von welcher KanalNr. eines welchen Gerätes?
Der Name suggeriert Kanal 1 - Welcher Art ist also das Thermostat?
Wenn dein Kellerthermostat ein HM-TC-IT-WM-W-EU ist sollte der Teil funktionieren.
Handelt es ich z.B. dagegen z.B. um ein HmIP-WTH-2 wird es so nicht funktionieren, da der Datenpunkt dann ACTUAL_TEMPERATURE statt TEMPERATURE heißen muss.
Ist das gelöst geht es mit Außentemperatursensor:1 weiter, die Fragen sind dieselben.
Siehe auch hier:
viewtopic.php?f=31&t=30127#p273730
Alchy
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.
Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
Re: Script zur Berechnung des Feuchtegehalts
Hallo.... das Gerät im Keller ist ein HM-TC-IT-WM-W-EU . Ist es so wie ich es eingetragen habe dann ok ?
Der Außentemperaturfühler ist folgender
was genau muss ich da ändern?
Der Außentemperaturfühler ist folgender
was genau muss ich da ändern?
-
- Beiträge: 10756
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 674 Mal
Re: Script zur Berechnung des Feuchtegehalts
Ja, hatte ich ja geschrieben, die ersten 3 Zeilen deines Scriptes sollten also passen.
Da musst du schon selber nachschauen, ich habe so ein Teil nicht.
lt. Doku sollte der den Datenpunkt ACTUAL_TEMPERATURE besitzen.
Was dann theoretisch zu den ersten Zeilen führen sollte:
Code: Alles auswählen
! Garage Berechnung der Schimmelwarnung und Lüftungsempfehlung
object oTHi = dom.GetObject("Thermostat_Keller:1");
object oTi = oTHi.DPByHssDP("TEMPERATURE");
object oHi = oTHi.DPByHssDP("HUMIDITY");
object oSchimmel = dom.GetObject("Keller_Schimmel");
object oLueften = dom.GetObject("Keller_Lueften");
object oTHa = dom.GetObject("Außentemperatursensor:1");
object oTa = oTHa.DPByHssDP("ACTUAL_TEMPERATURE");
object oHa = oTHi.DPByHssDP("HUMIDITY");
Stellt sich nun die Frage, warum ich dir den Link gepostet habe?
Da ist am Ende ein Script, wo du nur die Seriennummer deines Gerätes eingeben brauchst und nach Ausführen z.B. unter script testen werden dir die Datenpunkte des Gerätes angezeigt.
Alchy
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.
Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
Re: Script zur Berechnung des Feuchtegehalts
Hey Alchy.....
durch dein Script hab ich die Datenpunkte auslesen können....
daraus ergibt sich dann folgendes Script
Die Systemvariablen sind auch genau wie im Script angelegt
leider wird in den Variablen nichts geschrieben beim durchlaufen des Scripts... Fehleranalyse im Script zeigt keine Fehler an
durch dein Script hab ich die Datenpunkte auslesen können....
daraus ergibt sich dann folgendes Script
Code: Alles auswählen
! Garage Berechnung der Schimmelwarnung und Lüftungsempfehlung
object oTHi = dom.GetObject("Thermostat_Keller:1");
object oTi = oTHi.DPByHssDP("TEMPERATURE");
object oHi = oTHi.DPByHssDP("HUMIDITY");
object oSchimmel = dom.GetObject("Keller_Schimmel");
object oLueften = dom.GetObject("Keller_Lueften");
object oTHa = dom.GetObject("Außentemperatursensor:1");
object oTa = oTHa.DPByHssDP("ACTUAL_TEMPERATURE");
object oHa = oTHi.DPByHssDP("HUMIDITY");
! 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 = oHi.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
if (afau < afin - 0.8) {oLueften.Variable(true);}
else
{ if (afau >= afin - 0.3) {oLueften.Variable(false);}
}
! Programmteil Schimmelwarnung
! Berechnung der Oberflächentemperatur der Außenwandecke
real tw; ! Oberfächentemperatur der Außenwandecke in °C
real ta = oTa.Value(); ! Außentemperatur in °C
real ti = oTi.Value(); ! Raumtemperatur in °C
tw = ti + ((0.13 / 0.268) * (ta - ti)); ! Rges = 0.268 empirisch ermittelt
! Lokale Variablen
real t; ! Temperatur in °C
integer rf; ! relative Feuchte in %
real afw; ! Schimmelwarn-Grenzfeuchte in g/kg
real afa; ! Schimmelalarm-Grenzfeuchte in g/kg
t = tw;
! Berechnung Warn-Grenzfeuchte
rf = 70;
if (t < 0.0) {t = 0.0;}
if (t < 10.0)
{ afw = (3.78 + (0.29 * t) + (0.0046 * t * t) + (0.00051 * t * t * t)) * 0.01 * rf;
}
else
{ afw = (7.62 + (0.51 * (t-10.0)) + (0.0143 * (t-10.0) * (t-10.0)) + (0.00045 * (t-10.0) * (t-10.0) * (t-10.0))) * 0.01 * rf;
}
! Berechnung Alarm-Grenzfeuchte
rf = 80;
if (t < 0.0) {t = 0.0;}
if (t < 10.0)
{ afa = (3.78 + (0.29 * t) + (0.0046 * t * t) + (0.00051 * t * t * t)) * 0.01 * rf;
}
else
{ afa = (7.62 + (0.51 * (t-10.0)) + (0.0143 * (t-10.0) * (t-10.0)) + (0.00045 * (t-10.0) * (t-10.0) * (t-10.0))) * 0.01 * rf;
}
! Schimmelwarnung
! 0 - keine Gefahr
! 1 - Warnung
! 2 - Alarm
if (afin > afa) {oSchimmel.Variable(2);}
else {
if (afin > afw) {oSchimmel.Variable(1);}
else {oSchimmel.Variable(0);}
}
leider wird in den Variablen nichts geschrieben beim durchlaufen des Scripts... Fehleranalyse im Script zeigt keine Fehler an
-
- Beiträge: 10756
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 674 Mal
Re: Script zur Berechnung des Feuchtegehalts
Wenn du damit den Button Fehlerprüfung meinst, der ist kaum relevant. Ich habe etwas anderes verlinkt.
Es ist weder mein Script noch habe ich es getestet. Mein Ansinnen war die die wahrscheinlichsten Fehler aufzuzeigen was wohl auch erstmal gelungen ist.
Wenn ich mir den Code so anschaue, wirst du nur denken, es wird nix geschrieben, da der Zeitstempel der Variablen sich nicht ändert.
Mal die Variablen auf andere Werte gesetzt ud dann das Script ausgeführt?
Im Script wird die "falsche" Methode benutzt um Werte in die Systemvariablen zu schreiben.
Statt .Variable() sollte besser .State() verwendet werden.
Hier mal dein gepostetes Script entsprechend korrigiert:
Code: Alles auswählen
! Garage Berechnung der Schimmelwarnung und Lüftungsempfehlung
object oTHi = dom.GetObject("Thermostat_Keller:1");
object oTi = oTHi.DPByHssDP("TEMPERATURE");
object oHi = oTHi.DPByHssDP("HUMIDITY");
object oSchimmel = dom.GetObject("Keller_Schimmel");
object oLueften = dom.GetObject("Keller_Lueften");
object oTHa = dom.GetObject("Außentemperatursensor:1");
object oTa = oTHa.DPByHssDP("ACTUAL_TEMPERATURE");
object oHa = oTHi.DPByHssDP("HUMIDITY");
! 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 = oHi.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
if (afau < afin - 0.8) {oLueften.State(true);}
else
{ if (afau >= afin - 0.3) {oLueften.State(false);}
}
! Programmteil Schimmelwarnung
! Berechnung der Oberflächentemperatur der Außenwandecke
real tw; ! Oberfächentemperatur der Außenwandecke in °C
real ta = oTa.Value(); ! Außentemperatur in °C
real ti = oTi.Value(); ! Raumtemperatur in °C
tw = ti + ((0.13 / 0.268) * (ta - ti)); ! Rges = 0.268 empirisch ermittelt
! Lokale Variablen
real t; ! Temperatur in °C
integer rf; ! relative Feuchte in %
real afw; ! Schimmelwarn-Grenzfeuchte in g/kg
real afa; ! Schimmelalarm-Grenzfeuchte in g/kg
t = tw;
! Berechnung Warn-Grenzfeuchte
rf = 70;
if (t < 0.0) {t = 0.0;}
if (t < 10.0)
{ afw = (3.78 + (0.29 * t) + (0.0046 * t * t) + (0.00051 * t * t * t)) * 0.01 * rf;
}
else
{ afw = (7.62 + (0.51 * (t-10.0)) + (0.0143 * (t-10.0) * (t-10.0)) + (0.00045 * (t-10.0) * (t-10.0) * (t-10.0))) * 0.01 * rf;
}
! Berechnung Alarm-Grenzfeuchte
rf = 80;
if (t < 0.0) {t = 0.0;}
if (t < 10.0)
{ afa = (3.78 + (0.29 * t) + (0.0046 * t * t) + (0.00051 * t * t * t)) * 0.01 * rf;
}
else
{ afa = (7.62 + (0.51 * (t-10.0)) + (0.0143 * (t-10.0) * (t-10.0)) + (0.00045 * (t-10.0) * (t-10.0) * (t-10.0))) * 0.01 * rf;
}
! Schimmelwarnung
! 0 - keine Gefahr
! 1 - Warnung
! 2 - Alarm
if (afin > afa) {oSchimmel.State(2);}
else {
if (afin > afw) {oSchimmel.State(1);}
else {oSchimmel.State(0);}
}
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.
Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
Re: Script zur Berechnung des Feuchtegehalts
Also jetzt wird auf alle Fälle die Variable aktualisiert und es scheint zu laufen
Jetzt wäre natürlich noch perfekt wenn ich die absolute Luftfeuchte drinnen und draußen in eine Variable schreiben könnte. Wäre das möglich
Jetzt wäre natürlich noch perfekt wenn ich die absolute Luftfeuchte drinnen und draußen in eine Variable schreiben könnte. Wäre das möglich
Re: Script zur Berechnung des Feuchtegehalts
Code: Alles auswählen
dom.GetObject("Name_der_SV_Keller").State(afin);
dom.GetObject("Name_der_SV_Außen").State(afau);
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)
Re: Script zur Berechnung des Feuchtegehalts
Vielen Dank euch.... scheinbar läuft jetzt alles so wie es soll
Jetzt kann ich den Lüfter steuern und sicher sein das es auch was bringt. Danke!!!!
Jetzt kann ich den Lüfter steuern und sicher sein das es auch was bringt. Danke!!!!