eins vorneweg: ich beschäftige mich erst seit gut 3 Wochen mit Homemativ und bin auch kein Informatiker, daher bin ich bzgl. Verbesserungsvorschlägen offen.
Problemstellung: Die Pelletheizung soll je nach Wettervorhersage für einen Tag ausgeschaltet werden. Sollte es entgegen der Vorhersage doch kein passendes Wetter für die Solarthermieanlage geben, dann soll die Heizung wieder aktiviert werden, damit am Abend alle Duschen gehen können. Ebenso sollen Messwerte der Anlage per CCU-Historian mitgeloggt werden (Pelletverbrauch, Temperaturen, Stati).
Nutzen: Die Heizung läuft am Morgen nicht los -> kein Krach und keine verschwendeten Pellets, v.a. in der Übergangszeit und im Sommer
Systemvoraussetzungen:
- Guntamatic Therm SW: 3.2e
- Solarthermieanlage
- Raspberrymatic incl. Cuxd- und Historian-Addon
Die Wettervorhersage habe ich mit dem genialen Skript von MichaelN umgesetzt. Vielen Dank für die super Arbeit! Hier habe ich lediglich noch ein Errorflag generiert, welches aktiv wird, sobald die 12-h-Vorhersage in der Nacht nicht aktualisiert werden konnte. Ich aktiviere die Heizung dann lieber, als auf die Wettervorhersage von Vortag zu vertrauen. Das habe ich wie folgt umgesetzt:
Code: Alles auswählen
!Am Anfang des Sktipts einfügen!!!
!Timestamp vom Vortag nach SysVar FC-Timestamp-von-Vortag wegspeichern
var Alter_Wert = dom.GetObject("FC-Timestamp-von").Value();
dom.GetObject("FC-Timestamp-von-Vortag").State(Alter_Wert);
!Errorflag SysVar FC-Errorflag auf 1 setzen
dom.GetObject("FC-Errorflag").State(1);
!Nach der Zeile "WriteLine("MichaelN Script AccuWeather V1.2: keine Antwort vom Wetter-Server!");" einfügen!!!
dom.GetObject("FC-Errorflag").State(1);
!Am Ende des Skripts einfügen!!!
!Errorflag auf 0 setzen falls aktuelle Timestamp größer als Timestamp vom Vortag
var Neuer_Wert = dom.GetObject("FC-Timestamp-von").Value();
if ( Neuer_Wert > Alter_Wert )
{dom.GetObject("FC-Errorflag").State(0);}
else {dom.GetObject("FC-Errorflag").State(1);}
Code: Alles auswählen
string Progrmm_AUS="http://XXXIP-Adresse-der-HeizungXXX/ext/parset.cgi?syn=PR001&value=0&key=XXXKex-von-GuntamaticXXX";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - '"#Progrmm_AUS#"'");
Das Homematic-Programm dazu sieht dann folgendermaßen aus, wobei die Variablen beginnend von FC_ die Werte aus dem AccuWeather-Skript sind: Damit ich die Heizung bei doch nicht passender Wettervorhersage wieder anschalten kann, nutze ich folgendes HM-Programm: Um an die Daten der Pelletheizung zu kommen, nutze ich folgendes Skript, welches zyklisch alle 10 Minuten ausgeführt wird:
Code: Alles auswählen
var abfrageurl = "http://XXXIP-AdresseXXX/ext/daqdata.cgi?key=XXXKey-von-GuntamaticXXX";
dom.GetObject("CUxD.CUX2801001:15.CMD_SETS").State("wget -q -O - '"#abfrageurl#"'");
dom.GetObject("CUxD.CUX2801001:15.CMD_QUERY_RET").State(1);
string srueck = dom.GetObject("CUxD.CUX2801001:15.CMD_RETS").State();
!Warmwasser
string Warmwasser_Str = srueck.StrValueByIndex(",", 8);
real Warmwasser_real = Warmwasser_Str.ToFloat();
!WriteLine(Warmwasser_real);
dom.GetObject("GT_Warmwasser Speicher").State(Warmwasser_real);
!Progamm
string Programm_Str = srueck.StrValueByIndex(",", 39);
string Programm_Str_cut = Programm_Str.Trim("\"");
!WriteLine (Programm_Str_cut);
dom.GetObject("GT_Programm").State(Programm_Str_cut);
Jetzt bin ich gespannt, wie sich das ganze ab dem Frühling bewährt. Im Januar/Februar ist der Vorteil natürlich gleich null.
Schöne Grüße
Andreas