Script zur Berechnung des Feuchtegehalts

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

User 17410

Re: Script zur Berechnung des Feuchtegehalts

Beitrag von User 17410 » 24.09.2018, 20:21

Ok also die Luftfeuchtigkeit usw macht dann das Script und zieht sich diese aus den Geräten, korrekt?

Was trage ich denn dann bei der Bedienung am besten ein?

User 17410

Re: Script zur Berechnung des Feuchtegehalts

Beitrag von User 17410 » 25.09.2018, 21:25

@peissl.at welches Gerät und welche Temperatur nehme ich dazu am besten?

Danke!

peissl.at
Beiträge: 1295
Registriert: 16.05.2010, 12:39
Wohnort: Südwestlich von Graz
Danksagung erhalten: 9 Mal

Re: Script zur Berechnung des Feuchtegehalts

Beitrag von peissl.at » 25.09.2018, 21:35

Hallo User,

wenn Du den Auslöser des Programmes meinst, dann ist das eigentlich egal. Ein Temperatursensor sendet ca. alle 3 Minuten einen neuen Wert. Wenn Du auf Aktualisierung triggerst, wird auch das Programm in diesem Zeitabständen ausgeführt.

Also einfach:

Wenn: Temperatur > 0C auf Aktualisierung
Dann: sofort Script

Sonnige Grüße!
Robert

User 17410

Re: Script zur Berechnung des Feuchtegehalts

Beitrag von User 17410 » 25.09.2018, 21:47

Dabei ist es egal ob es das Thermostat für außen oder innen ist?

peissl.at
Beiträge: 1295
Registriert: 16.05.2010, 12:39
Wohnort: Südwestlich von Graz
Danksagung erhalten: 9 Mal

Re: Script zur Berechnung des Feuchtegehalts

Beitrag von peissl.at » 25.09.2018, 22:13

Ja, denn es dient nur als Timer der das Programm auslöst. Wichtig ist, dass Du im Script die richtige TEMPERATURE und HUMIDITY verwendest.

User 17410

Re: Script zur Berechnung des Feuchtegehalts

Beitrag von User 17410 » 26.09.2018, 07:50

Die muss ich da manuell einstellen?

peissl.at
Beiträge: 1295
Registriert: 16.05.2010, 12:39
Wohnort: Südwestlich von Graz
Danksagung erhalten: 9 Mal

Re: Script zur Berechnung des Feuchtegehalts

Beitrag von peissl.at » 26.09.2018, 08:56

Na klar!

User 17410

Re: Script zur Berechnung des Feuchtegehalts

Beitrag von User 17410 » 26.09.2018, 09:00

Oh weia :D welche werten stellt man da am besten ein?

Benutzeravatar
hanan
Beiträge: 222
Registriert: 15.12.2012, 16:00
Danksagung erhalten: 1 Mal

Re: Script zur Berechnung der absoluten Feuchte

Beitrag von hanan » 10.10.2018, 11:49

erledigt...
JPS hat geschrieben:
22.12.2012, 21:00

Hier das korrigierte Beispiel-Script, in dem auch die Lüftungsempfehlung mit 0,5 g/kg und 0,7 K Hysterese eingebaut ist. Wer das Script von oben nutzt, sollte diese korrigierte Version übernehmen:

Code: Alles auswählen

    ! RaumXY Berechnung der Schimmelwarnung und Lüftungsempfehlung 
    object oTHi = dom.GetObject("RaumXY_Raumregler:1");
    object oTi = oTHi.DPByHssDP("TEMPERATURE");
    object oHi = oTHi.DPByHssDP("HUMIDITY");
    object oSchimmel = dom.GetObject("RaumXY_Schimmel");
	object oLueften = dom.GetObject("RaumXY_Lueften");
    object oTHa = dom.GetObject("Aussen_TempFeuSens:1");
    object oTa = oTHa.DPByHssDP("TEMPERATURE");
    object oHa = oTHa.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 = 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,5 g/kg und 0,7 K Hysterese
	if ((afau <= (afin - 0.8)) && (tau <= (tin - 1.0)) && (tin > XX.X))
	{oLueften.Variable(true);}
	else
	{ if ((afau >= (afin - 0.3)) || (tau >= (tin - 0.3)) || (tin <= YY.Y))
	{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 / Z.ZZZ) * (ta - ti)); ! Rges = Z.ZZZ 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);}
        }
Individuell an die eigenen Gegebenheiten anzupassen sind folgende Werte:

Zeile 02 (Name des Sensors innen):
RaumXY_Raumregler

Zeile 05 (Systemvariable für das Lüften - Werteliste: keine Gefahr;Warnung;Alarm):
RaumXY_Schimmel

Zeile 06 (Systemvariable für die Lüftungsempfehlung - Logikwert: wahr = ist wahr, falsch = ist falsch):
RaumXY_Lueften

Zeile 07 (Name des Sensors außen):
Aussen_TempFeuSens

Zeile 35 (oberer Raumtemperaturgrenzwert in °C):
XX.X

Zeile 38 (unterer Raumtemperaturgrenzwert in °C, siehe oben):
YY.Y

Zeile 46 (Mittels eigener Messung ermittelter Gesamtübergangswiderstand Rges, siehe oben):
Z.ZZZ
Hallo zusammen
Ich habe mal das Skript an kopiert und versucht, leider läuft es bei mir nicht durch, da die beiden angelegten SVs nicht beschrieben werden.

Code: Alles auswählen

! RaumXY Berechnung der Schimmelwarnung und Lüftungsempfehlung 
    object oTHi = dom.GetObject("LEQ059xxxx:1");
    object oTi = oTHi.DPByHssDP("TEMPERATURE");
    object oHi = oTHi.DPByHssDP("HUMIDITY");
    object oSchimmel = dom.GetObject("Wohnzimmer_Schimmel");
	object oLueften = dom.GetObject("Wohnzimmer_Lueften");
    object oTHa = dom.GetObject("NEQ164xxxx:1");
    object oTa = oTHa.DPByHssDP("TEMPERATURE");
    object oHa = oTHa.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 = 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,5 g/kg und 0,7 K Hysterese
	if ((afau <= (afin - 0.8)) && (tau <= (tin - 1.0)) && (tin > 25.0))
	{oLueften.Variable(true);}
	else
	{ if ((afau >= (afin - 0.3)) || (tau >= (tin - 0.3)) || (tin <= 16.0))
	{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.555) * (ta - ti)); ! Rges = Z.ZZZ 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);}
        }
SVs.jpg
Hat mir jemand bitte einen Tipp?

Liebe Grüsse aus der Schweiz
Zuletzt geändert von hanan am 12.10.2018, 11:14, insgesamt 1-mal geändert.
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

Benutzeravatar
hanan
Beiträge: 222
Registriert: 15.12.2012, 16:00
Danksagung erhalten: 1 Mal

Re: Script zur Berechnung des Feuchtegehalts

Beitrag von hanan » 11.10.2018, 16:17

erledigt...

Hallo zusammen
Habe jetzt das Skript so angepasst, dass es bei mir durchläuft.
Leider werden die beiden SVs nicht beschrieben.

Hat mir hier jemand bitte noch einen Tipp?

Code: Alles auswählen

! RaumXY Berechnung der Schimmelwarnung und Lüftungsempfehlung 
   
    object oTi = dom.GetObject("BidCos-RF.LEQ059xxxx:1.TEMPERATURE");
    object oHi = dom.GetObject("BidCos-RF.LEQ059xxxx:1.HUMIDITY");
    object oTa = dom.GetObject("BidCos-RF.NEQ164xxxx:1.TEMPERATURE");
    object oHa = dom.GetObject("BidCos-RF.NEQ164xxxx:1.HUMIDITY");
    object oSchimmel = dom.GetObject("Wohnzimmer_Schimmel");
    object oLueften = dom.GetObject("Wohnzimmer_Lueften");

	! 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 = 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,5 g/kg und 0,7 K Hysterese
	if ((afau <= (afin - 0.8)) && (tau <= (tin - 1.0)) && (tin > 25.0))
	{oLueften.Variable(true);}
	else
	{ if ((afau >= (afin - 0.3)) || (tau >= (tin - 0.3)) || (tin <= 16.0))
	{oLueften.Variable(false);}
	}
WriteLine(afau);
	! 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.555) * (ta - ti)); ! Rges = Z.ZZZ 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);}
}
SVs.jpg
Besten Dank imVoraus.
Liebe Grüsse aus der Schweiz
Zuletzt geändert von hanan am 12.10.2018, 11:14, insgesamt 2-mal geändert.
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

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“