Jahreszeitabhängige Heizungssteuerung

Begonnen von BeckerAA, 20 Mai 2013, 09:15:43

Vorheriges Thema - Nächstes Thema

BeckerAA

Hallo zusammen,

nachdem wir unsere Heizung jetzt vollständig über FHEM steuern, also auch den Brenner abschalten, wenn keine Anforderung mehr vorhanden ist, springt die Heizung schon ab und zu mal an, wenn die Nacht recht kühl war. Ab April wird es aber in der Regel tagsüber warm genug, um sie aus zu lassen. Das Heizöl wird hier also unnötig verbraucht.

Derzeit sieht die Regel so aus:

FHT-Ventile <20% Heizung aus
FHT-Ventile >50% Heizung an

Meine Idee ist jetzt, den ganzen Schaltzyklus je nach Jahreszeit zu verändern, also z.B. so:

Winter (ab Dezember):

FHT-Ventile <20% Heizung aus
FHT-Ventile >50% Heizung an

Übergangszeit Frühjahr (ab April)

FHT-Ventile <25% Heizung aus
FHT-Ventile >60% Heizung an

Sommer (ab Juni):

FHT-Ventile <30% Heizung aus
FHT-Ventile >80% Heizung an

Herbst (ab Oktober)

FHT-Ventile <25% Heizung aus
FHT-Ventile >60% Heizung an

Könnte man jetzt nicht hergehen und ganze Codezeilen einfach aktiv, oder passiv setzen, je nach Datum?

Hat jemand dazu eine Idee?

Danke schon mal im Voraus!

Viele Grüße
Ruediger









---- FS20 und FHT80b mit FHEM auf Raspberry PI Modell b ----
---- zusätzlich HM-LAN mit diversen HomeMatic-Komponenten ----

Lieber Gott schenke mir doch ein wenig Geduld...
...aber ein bisschen plötzlich!!!!!!

Puschel74

Hallo,

ich hab dazu einfach einen Dummy SommerWinter.

Sobald ich nichtmehr heizen will wird auf Sommer geschaltet und die Heizung fährt komplett runter und ist aus.
Im Herbst/Winter wenn die Heizperiode losgeht wird wieder auf Winter geschaltet und die Heizung fährt im ganzen Haus wieder hoch.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

BeckerAA

Servus Puschel,

danke für Deine Antwort(en).

Schaltest Du den Dummy dann manuell, oder per Datum?

Könnte ich damit auch z.B. die "Soll-Temperatur" aller FHT dann einfach von z.B. 22 Grad auf 19 Grad setzen. Damit wäre das ja auch schon gelöst, wobei ich dann im Bedarfsfall nicht per Holzofen ins System heizen könnte, was aber gehen sollte, wenn es doch morgens mal etwas frisch ist und die Heizung eben noch nicht wieder auf "on" ist.

Viele Grüße
Ruediger

---- FS20 und FHT80b mit FHEM auf Raspberry PI Modell b ----
---- zusätzlich HM-LAN mit diversen HomeMatic-Komponenten ----

Lieber Gott schenke mir doch ein wenig Geduld...
...aber ein bisschen plötzlich!!!!!!

MisterEltako

Oder eine if-Abfrage einbauen oder erweitern.
z.B.

if (($month > 8) && ($month < 11)) {.....

wäre September bis Oktober.

MfG, MisterEltako.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Puschel74

Hallo,

ups. Grad gesehen.
Ich hab ja keinen Dummy sondern einen echten FS20AS4.
Definition sieht so aus:

define SommerWinter FS20 1b39 c1
attr SommerWinter eventMap /on:Sommer/off:Winter/
attr SommerWinter room 00_Bedienung
attr SommerWinter webCmd Sommer:Winter


Und der Code der ausgeführt wird sieht so aus:

define Heizung_Freigabe notify SommerWinter:* {\
  my $SommerWinter_status = ReadingsVal("SommerWinter", "state", "Fehler");;\
  if ($SommerWinter_status eq "Winter") {\
  fhem ("trigger FHT_auto_ein");;\
  fhem ("trigger Heizung_Wasserpumpe");;\
  Log(3,"Heizung Freigabe");;\
  }\
  if ($SommerWinter_status eq "Sommer") {\
  fhem ("attr a_Wasserpumpe disable 1");;\
  fhem ("trigger Heizung_runter");;\
  fhem ("define FHT_manu at +02:00 trigger FHT_manu_ein");;\
  Log(3,"Heizung Ausgeschaltet")\
  }\
  if ($SommerWinter_status eq "Fehler") {\
  Log(3,"Statusfehler")\
  }\
}


Nicht schön aber funktioniert.
Wenn ich auf "Winter" schalte werden
FHT_auto_ein
und Heizung_Wasserpumpe ausgeführt.
Bei Sommer dann Heizung_runter (hier werden die FHT auf desired-temp 12.0 gestellt) und mit FHT_manu_ein werden
die FHT auf mode manual gestellt und die Abfrage der Wasserpumpe wird disabled.
Zwischen Heizung_runter und FHT_manu_ein habe ich eine Zeit von 2 Stunden gesetzt um die Funklast etwas zu verteilen.
Bei uns durchlaufen die beiden Scheifen je 11 FHT.

Per Datum schalte ich hier nichts - das wird durch mich (oder meine Frau) manuell geschaltet.
Per Datum schalten kann auch nach hinten los gehen - ich lege als Datum z.B. den 16.04 fest und am 18.04 wird es nochmal kalt.
Heizung aus und alle frieren.
Das ist mir das bischen Gasverbrauch am Brenner wert das ich die Heizung ein paar Tage länger laufen lassen.

Grüße

Edith: Heizung_runter sieht dann so aus:
Heizung_runter:.* {
  my @@fhts=devspec2array("TYPE=FHT");
      foreach(@@fhts) {
        fhem ("set ".$_." desired-temp 12.0");
    }
}
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

BeckerAA

Hallo nochmals,

für den Tip mit der if-Abfrage bin ich schon mal mehr als offen ;-)

Nachdem ich aber blutiger Anfänger bin, hier mal meinen Code, den wich entsprechend angepasst habe. Wo muss das also hin?



   ###Waermebedarfssteuerung###

define n_Heizungmaster notify n_Heizungmaster {\
my $brauche_hitze=0;;\
my $ventile_im_leerlauf=0;;\
my $Heizungmaster_status=$fs20_c2b{ReadingsVal("Heizungmaster","STATE","off")};;\
my @@fhts=devspec2array("TYPE=FHT");;\
foreach(@@fhts) {\
my $ventil=ReadingsVal($_, "actuator", "101%");;\
$ventil=(substr($ventil, 0, (length($ventil)-1)));;\
if ($ventil > 50) {\
$brauche_hitze=1\
}\
if ($ventil < 20) {\
$ventile_im_leerlauf++\
}\
}\
if ($brauche_hitze != 0) {\
Log(3,"Hitze benoetigt. Heizungmaster EIN");;\
fhem("set Heizungmaster on")\
}\
else {\
if ($ventile_im_leerlauf == @@fhts) {\
Log(3,"Keine Hitze mehr benoetigt. Heizungmaster AUS");;\
fhem("set Heizungmaster off")\
}\
else {\
Log(3,"Heizbedarf: " . $ventile_im_leerlauf . " von " . @@fhts . "Heizkoerper im Leerlauf.")\
}\
}\
}

define a_Heizungmaster at +*00:02:00 trigger n_Heizungmaster
attr a_Heizungmaster fp_Heizung 500,190,0,



Letztlich geilt es diesen Code eben in den verschiedenen Jahreszeiten entsprechend zu schalten, oder zu verändern.

Insgesamt funktioniert alles perfekt, eben nur nicht Jahreszeitenabhängig.

Viele Grüße
Ruediger
---- FS20 und FHT80b mit FHEM auf Raspberry PI Modell b ----
---- zusätzlich HM-LAN mit diversen HomeMatic-Komponenten ----

Lieber Gott schenke mir doch ein wenig Geduld...
...aber ein bisschen plötzlich!!!!!!

BeckerAA

Hallo Puschel,

Dein Beitrag kam parallel zu meinem ;-)

Das ist auch ne gute Idee. Per Datum geht bei uns recht gut, weil wir einen Beistellofen haben, der sich dann per FS20 SA über die Mastersteuerung der Heizung hinwegsetzt. Ich mache also einfach Feuer und die Umwälzpumpe springt an.

Wenn ich aber die FHT's alle runter fahre, geht das leider nicht mehr. Ich sollte das also im Bereich Heizungssteuerung realisieren. Also Brenner aus, wenn Sommer und an, wenn Winter.

Meinen Code habe ich ja ober schon veröffentlicht.

Ich dachte schon mal daran, dass ich das in Subroutinen packe und je nach Datum eben die eine, oder die andere anspreche. Habe aber keinen Plan, wie ich das machen soll.


Viele Grüße
Ruediger
---- FS20 und FHT80b mit FHEM auf Raspberry PI Modell b ----
---- zusätzlich HM-LAN mit diversen HomeMatic-Komponenten ----

Lieber Gott schenke mir doch ein wenig Geduld...
...aber ein bisschen plötzlich!!!!!!

Puschel74

Hallo,

ich greife nicht in den Code der Heizungssteuerung_einfach ein.
Im Sommer schalte ich mir nur attr a_Wasserpumpe disabled 1
und die Abfrage ist damit aus.

Wenn du die Parameter für $ventil ändern willst musst du diese in einen dummy "auslagern" und den Dummy entsprechend setzen.
Ich hab sowas ähnliches über die Aussentemperatur realisiert, ändere mir dort aber dann die desired-temp von Wohn- und Schlafzimmer.
Vom Prinzip reicht dir eigentlich sowas in der Art:
define Ventil_Auf dummy
attr Ventil_Auf setList 40.0 50.0 60.0 70.0

define Ventil_Zu dummy
attr Ventil_Auf setList 10.0 15.0 20.0 25.0

Das attr dient hier nur der Möglichkeit die Werte auch von Hand zu setzen.
Nun brauchst du diese Werte "nur" noch in die Heizungssteuerung_Einfach einlesen und passend setzen:
...
my $ventil_auf = (Value("Ventil_Auf"))
my $ventil_zu = (Value("Ventil_Zu"))
...

und dann noch einbauen:
if ($ventil > $ventil_auf)
und
if ($ventil < $ventil_zu)
Schon kannst du "extern" die Ventilstellungen setzen lassen und in der Steuerung abfragen.
Z.B. So
...
if (($month > 8) && ($month < 11)) {
fhem ("set Ventil_Auf 80.0");
fhem ("set Ventil_Zu 30.0");
}
...


Nicht schön und ungetestet und ich hab die Codes auch gemischt - mal mit ; mal ohne.
Soll ja auch nur ein Schubs in die, vielleicht, richtige Richtung sein ;-)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

borsti67

Ich benutze mittlerweile nicht mehr den Code von unten, sondern das HCS-Modul. Dieses regelt nicht über die Ventilöffnung, sondern über den Vergleich der Soll/Ist-Temperaturen. Dadurch habe ich zwar auch jetzt noch ein paar Einschaltungen, die nicht zwingend nötig gewesen wären, aber das ist doch merklich unempfindlicher.
Ich denke, die unnützen Starts wiegen sich mit denen auf, in denen im Winter die Heizung unnütz lief...
cu/2
Borsti
---
FHEM 5.8 auf Synology DS211j (bis 11/17) | FHEM 6.0 auf Raspi Zero W (bis 11/20) | FHEM 6.2 als VM in Synology DS1815+ (ab 11/20)

MisterEltako

Naja, ich poste trotzdem mal meinen Codevorschlag:  ;o)

Fhem.cfg:

define n_Heizungsmaster dummy
define Heizungsmaster dummy

define n_Heizungmaster notify n_Heizungmaster {Jahreszeiten($month)}



sub
Jahreszeiten($)
{
Log 3, "Test läuft";
my $month = shift;
my $ventil=ReadingsVal($_, "actuator", "101%");
$ventil=(substr($ventil, 0, (length($ventil)-1)));
$ventil= 30;

if (($month >= 12) && ($month <= 3) && ($ventil > 20)) {
   fhem("set Heizungmaster on");
   Log 3, "ab Dezember, Ventil: $ventil, Monat: $month";
}elsif
(($month >= 4) && ($month <= 5) && ($ventil > 25)){
   fhem("set Heizungsmaster on");
   Log 3, "ab April, Ventil: $ventil, Monat: $month";
}elsif
(($month >= 6) && ($month <= 9) && ($ventil > 30)) {
   fhem("set Heizungssteuerung on");
   Log 3, "ab Juni, Ventil: $ventil, Monat: $month";
}elsif
(($month >= 10) && ($month <= 11) && ($ventil > 25)) {
   fhem("set Heizungssteuerung on");
   Log 3, "ab Oktober, Ventil: $ventil, Monat: $month";
}else
   {fhem("set Heizungssteuerung aus");}
}


MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

BeckerAA

Hallo zusammen,

Erst mal danke fuer die viele Hilfe!

Ich war gerade mal notfallmaessig mit ner Rohrverstopfung beschaeftigt.

Jetzt bin ich aber wieder da.

Bin wirklich fuer jede Idee sehr dankbar.

Viele Gruesse
Ruediger
---- FS20 und FHT80b mit FHEM auf Raspberry PI Modell b ----
---- zusätzlich HM-LAN mit diversen HomeMatic-Komponenten ----

Lieber Gott schenke mir doch ein wenig Geduld...
...aber ein bisschen plötzlich!!!!!!

MisterEltako

in Fhem.cfg:

define Heizungsmaster dummy
define Heizungskontrolle at *+00:30:00 {Jahreszeiten($month)}

Prüft z.B. alle 30min, ob Heizung verändert werden muss...

in 99_Utils.pm:

sub
Jahreszeiten($)
{
Log 3, "Jahreszeitenabhängige Heizungsschaltung wird aktiviert...";

my $month = shift;
my @@fhts=devspec2array("TYPE=FHT");
 foreach(@@fhts) {
   my $ventil=ReadingsVal($_, "actuator", "101%");
   $ventil=(substr($ventil, 0, (length($ventil)-1)));


if (($month >= 12) && ($month <= 3) {
 Log 3, "ab Dezember, Ventil: $ventil, Monat: $month";
  if ((Value("Heizungsmaster") eq "off") && ($ventil > 50)) {
     fhem("set Heizungsmaster on");
  }elsif ((Value("Heizungsmaster") eq "on") && ($ventil < 20)) {
     fhem("set Heizungsmaster off");
  }
}elsif ($month >= 4) && ($month <= 5) {
 Log 3, "ab April, Ventil: $ventil, Monat: $month";
  if ((Value("Heizungsmaster") eq "off") && ($ventil > 60)) {
     fhem("set Heizungsmaster on");
  }elsif ((Value("Heizungsmaster") eq "on") && ($ventil < 25)) {
     fhem("set Heizungsmaster off");
  }
}elsif (($month >= 6) && ($month <= 9) {
 Log 3, "ab Juni, Ventil: $ventil, Monat: $month";
  if ((Value("Heizungsmaster") eq "off") && ($ventil > 80)) {
     fhem("set Heizungsmaster on");
  }elsif ((Value("Heizungsmaster") eq "on") && ($ventil < 30)) {
     fhem("set Heizungsmaster off");
  }
}elsif (($month >= 10) && ($month <= 11) {
 Log 3, "ab Oktober, Ventil: $ventil, Monat: $month";
  if ((Value("Heizungsmaster") eq "off") && ($ventil > 60)) {
     fhem("set Heizungsmaster on");
  }elsif ((Value("Heizungsmaster") eq "on") && ($ventil < 25)) {
     fhem("set Heizungsmaster off");
  }
}
}



Bin gerade unterwegs und habe auf die schnelle o.g. Idee gehabt. Sind wahrscheinlich noch Syntaxfehler möglich. Einfach Mal testen und berichten.


MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

BeckerAA

Hallo Mister Eltako,

danke fuer die Unterstuetzung und Deine Muehe.

Ich werden den Code heute Abend, wenn ich wieder zu Hausee bin mal einbauen. Dann berichte ich gleich, ob es klappt.

Danke nochmals!

Viele Gruesse
Ruediger
---- FS20 und FHT80b mit FHEM auf Raspberry PI Modell b ----
---- zusätzlich HM-LAN mit diversen HomeMatic-Komponenten ----

Lieber Gott schenke mir doch ein wenig Geduld...
...aber ein bisschen plötzlich!!!!!!

MisterEltako

Hi!

Nach muss noch:
my $ventil=ReadingsVal($_, "actuator", "101%");
   $ventil=(substr($ventil, 0, (length($ventil)-1)));}

MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

BeckerAA

Hallo zusammen,

eingangs möchte ich mich erst einmal entschuldigen, dass ich mich so lange nicht in diesem Threat gemeldet habe.

Derzeit geht hier der Punk ab und ich musste mal die Heizungssteuerung bei Seite legen.

Jetzt soll und kann es aber weiter gehen.

Für die Hilfen sage ich ganz herzlich DANKE! ich versuche das jetzt dann mal richtig einzubauen und zu testen.

Es hat sich zwar gezeigt, dass die Temperaturen im Sommer das eigentlich ganz gut selbst erledigen, doch in der Übergangszeit wird das echt schwierig, wie wir ja im Mai sehen konnten ;-)

Ein nächstes Projekt wird dann die Einbindung der Viessmann-Regelung via Software. Dazu gibt es hier ja schon einen Threat und ich versuche das auch mal umzusetzen.

Vielen Dank nochmals.

Herzliche Grüße
Ruediger

---- FS20 und FHT80b mit FHEM auf Raspberry PI Modell b ----
---- zusätzlich HM-LAN mit diversen HomeMatic-Komponenten ----

Lieber Gott schenke mir doch ein wenig Geduld...
...aber ein bisschen plötzlich!!!!!!