Guntamatic Pelletheizung auswerten und per Wettervorhersage steuern

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

Antworten
Andreas81
Beiträge: 13
Registriert: 30.01.2021, 19:53
System: Alternative CCU (auf Basis OCCU)

Guntamatic Pelletheizung auswerten und per Wettervorhersage steuern

Beitrag von Andreas81 » 30.01.2021, 20:58

Hallo zusammen,

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 :D

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);}
Um auf die Guntamatic Therm zugreifen zu können muss man sich von Guntamatic einen Schlüssel/Key generieren lassen, was der Support in Österreich auf eine Mailanfrage sehr zügig gemacht hat. Vielen Dank hierfür nochmals. Mit dazu bekommen habe ich eine Beschreibung der Web-Schnittstelle, was die Umsetzung einfacher gestaltet hat. Über folgendes Skript lässt dich die Anlage ausschalten:

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#"'");
value=0 entspricht dem Heizprogramm AUS und value=1 dem Heizprogramm NORMAL.
Das Homematic-Programm dazu sieht dann folgendermaßen aus, wobei die Variablen beginnend von FC_ die Werte aus dem AccuWeather-Skript sind:
Guntamatic_ausschalten.JPG
Damit ich die Heizung bei doch nicht passender Wettervorhersage wieder anschalten kann, nutze ich folgendes HM-Programm:
Guntamatic_einschalten.JPG
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);
Nach gleichem Schema lese ich auch noch einige andere Werte aus.

Jetzt bin ich gespannt, wie sich das ganze ab dem Frühling bewährt. Im Januar/Februar ist der Vorteil natürlich gleich null. :cry:

Schöne Grüße
Andreas

Antworten

Zurück zu „Projektvorstellungen“