Das ist so richtig, wenn
- das Programm "Garagenlüftung" bei Aktualisierung ausgelöst wird
- das Programm "Aktor" bei Änderung ausgelöst wird
- hinter Dann... das Häkchen für "Vor dem Ausführen alle laufenden Verzögerungen für diese Aktivitäten beenden (z.B. Retriggern)." gesetzt ist
- hinter Sonst... das Häkchen für "Vor dem Ausführen alle laufenden Verzögerungen für diese Aktivitäten beenden (z.B. Retriggern)." gesetzt ist
Taupunktsteuerung
Moderator: Co-Administratoren
Re: Taupunktsteuerung
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: Taupunktsteuerung
Anmerkung: Das Programm sollte nicht den Namen "Garagenlüftung" tragen, wenn eine Systemvariable den Namen "Garagenlueftung" hat. Das kann zur Verwirrung führen, obwohl sich beide Namen unterscheiden (Wichtig !!!).
Besserer Name für das Programm z.B. "Steuerung_Garagenluefter".
Besserer Name für das Programm z.B. "Steuerung_Garagenluefter".
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: Taupunktsteuerung
Hallo an alle.. Vielleicht kann mir auch jemand helfen. Habe das obige script kopiert und angepasst aber irgendwas stimmt wohl nicht. Das Ergebnis sieht aus wie ein Zeitstempel Kann wer sagen was da falsch läuft ?
! Badlüftung
! Lokale Variablen
object lueftDP; ! Systemvariable "BadLueftung"
real ti; ! Innentemperatur in °C
integer rfi; ! rel. Feuchte innen in %
real tpa; ! Taupunkttemperatur aussen in °C
real tpi; ! Taupunkttemperatur innen in °C
! Werte einlesen
lueftDP = dom.GetObject("Badlueftung");
rfi = dom.GetObject("CUxD.CUX9002001:1.HUMIDITY").Value();
ti = dom.GetObject("CUxD.CUX9002001:1.TEMPERATURE").Value();
tpi = dom.GetObject("CUxD.CUX9002001:1.DEW_POINT").Value();
tpa = dom.GetObject("CUxD.CUX9002002:1.DEW_POINT").Value();
! Lüftung steuern mit Hysterese von 5 % rH und 1,0 Grad
if ((tpa <= (tpi - 1.5)) && (rfi >= 60) && (ti >= 4.0))
{lueftDP.State(true);}
else
{ if ((tpa >= (tpi - 0.5)) || (rfi <= 55) || (ti <= 3.0))
{lueftDP.State(false);}
}
WriteLine("ti=");
WriteLine(("ti").Value());
WriteLine("rfi=");
WriteLine(("rfi").Value());
WriteLine("tpa=");
WriteLine(("tpa").Value());
WriteLine("tpi=");
WriteLine(("tpi").Value());
Als Ergebnis der WriteLine:
ti=
1970-01-01 00:59:59
rfi=
1970-01-01 01:00:00
tpa=
1970-01-01 01:00:00
tpi=
1970-01-01 01:00:00
Die Systemvariable ist erstellt und heisst "BadLueftung" als Logikvar. Der CuxD Aussenfühler ist bei mir CUxD9002002, der im Bad CuxD9002001.
Dank schon mal für die Mühe.
! Badlüftung
! Lokale Variablen
object lueftDP; ! Systemvariable "BadLueftung"
real ti; ! Innentemperatur in °C
integer rfi; ! rel. Feuchte innen in %
real tpa; ! Taupunkttemperatur aussen in °C
real tpi; ! Taupunkttemperatur innen in °C
! Werte einlesen
lueftDP = dom.GetObject("Badlueftung");
rfi = dom.GetObject("CUxD.CUX9002001:1.HUMIDITY").Value();
ti = dom.GetObject("CUxD.CUX9002001:1.TEMPERATURE").Value();
tpi = dom.GetObject("CUxD.CUX9002001:1.DEW_POINT").Value();
tpa = dom.GetObject("CUxD.CUX9002002:1.DEW_POINT").Value();
! Lüftung steuern mit Hysterese von 5 % rH und 1,0 Grad
if ((tpa <= (tpi - 1.5)) && (rfi >= 60) && (ti >= 4.0))
{lueftDP.State(true);}
else
{ if ((tpa >= (tpi - 0.5)) || (rfi <= 55) || (ti <= 3.0))
{lueftDP.State(false);}
}
WriteLine("ti=");
WriteLine(("ti").Value());
WriteLine("rfi=");
WriteLine(("rfi").Value());
WriteLine("tpa=");
WriteLine(("tpa").Value());
WriteLine("tpi=");
WriteLine(("tpi").Value());
Als Ergebnis der WriteLine:
ti=
1970-01-01 00:59:59
rfi=
1970-01-01 01:00:00
tpa=
1970-01-01 01:00:00
tpi=
1970-01-01 01:00:00
Die Systemvariable ist erstellt und heisst "BadLueftung" als Logikvar. Der CuxD Aussenfühler ist bei mir CUxD9002002, der im Bad CuxD9002001.
Dank schon mal für die Mühe.
Re: Taupunktsteuerung
Bitte Code in die dafür vergesehenen Code-Tags betten.
Was soll das werden?
Du versuchst auf einen String, hier "ti", die Methode .Value(), welche es für Strings nicht gibt, anzuwenden.
Hätte man einen Blick in das Fehlerlog gewagt, dann hätte man gesehen, dass dort ein ungültiger Zugriff 11622 hinterlegt wurde.
In etwa wie dieser:
ti ist ein real und enthält bereits den Temperatur-Wert.
Daher reicht für eine Ausgabe dieses:
oder aufgrund der automatischen Typumwandlung zur Not auch dieses
oder falls Du noch die auszugebenden Nachkommastellen berücksichtigen möchtest:
Und dies verhält sich bei allen anderen Werten in Deinem Skript genauso.
.
Was soll das werden?
Code: Alles auswählen
WriteLine(("ti").Value());
Hätte man einen Blick in das Fehlerlog gewagt, dann hätte man gesehen, dass dort ein ungültiger Zugriff 11622 hinterlegt wurde.
In etwa wie dieser:
Code: Alles auswählen
homematic-ccu2 local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 97 0x61 [1] 0 0x00 [2] 99 0x63 [3] 0 0x00 [4] 100 0x64 [../Platform/DOM/iseESPexec.cpp (11622)]
Daher reicht für eine Ausgabe dieses:
Code: Alles auswählen
WriteLine(ti.ToString());
Code: Alles auswählen
WriteLine(ti);
Code: Alles auswählen
WriteLine(ti.ToString(2));
.
Re: Taupunktsteuerung
Hallo BadenPower,
danke für deine Tips und Hinweise. Ich versuch mich gerade in die Script-Programmierung einzuarbeiten und bin noch ziemlich am Anfang..
Das mit dem Fehlerlog ist eine gute Idee, aber ich glaube ausser Error hätte ich da nichts weiter interpretieren können
Aber schön das die erfahrenen hier so schnell und hilfreich reagieren.
Danke dafür.
Gruss Mario
danke für deine Tips und Hinweise. Ich versuch mich gerade in die Script-Programmierung einzuarbeiten und bin noch ziemlich am Anfang..
Das mit dem Fehlerlog ist eine gute Idee, aber ich glaube ausser Error hätte ich da nichts weiter interpretieren können
Aber schön das die erfahrenen hier so schnell und hilfreich reagieren.
Danke dafür.
Gruss Mario