Gas sparen bei Viessmann Heizung mit Solarthermie: Viessmann Challenge gewonnen

Begonnen von gadget, 30 Juni 2022, 16:22:27

Vorheriges Thema - Nächstes Thema

gadget

Hallo,

Ich habe mir schon letztes Jahr vor der aktuellen Gas-Krise überlegt, wie ich ein wenig Gas und damt auch CO2 und Geld einsparen kann und hatte folgende Idee:

Wenn es am Morgen klaren Himmel gibt, wird der Ertrag meiner Solarthermie vermutlich recht gut werden. Dann macht es aber keinen Sinn, den Warmwasser-Speicher schon stark mit Gas zu erhitzen, das erledigt dann ja die Sonne. Falls die Vorhersage falsch war, will ich aber trotzdem mindestens 35 Grad warmes Wasser haben, daher wird der Warmwasser-Betrieb um 6:00 Uhr kurz eingeschaltet, aber eben nur mit 35 Grad wenn die Bewökung niedrig ist. Gegen Mittag wird dann auf 45 Grad aufgeheizt (falls das bis dahin die Sonne nicht eh schon erledigt hat: Die Kollektoren sind auf dem Westdach) und einmal die Woche (bei mir am Dienstag Abend) auf 60 Grad, um die Legionellen-Gefahr zu minimieren.

Technisch ist das so umgesetzt: Die 14 Jahre alte Viessmann Heizung hat nachträglich das Vitoconnect-Modul bekommen, Zugriff dann fhem aus über das https://wiki.fhem.de/wiki/Vitoconnect Modul.

Die Vorhersage über die Bewölkung kommt vom Weather - Modul (via Darksky-API), und dort verwende ich das Reading fc1_cloudCover, das den prozentuellen Bewölkungsgrad ausgibt und somit einfach auszuwerten ist.

Die Zeiten zu denen Warmwasser per Gas produziert werden soll, stelle ich direkt bei der Heizung ein. Über die Viessmann-App geht das recht einfach und muss nur einmal gemacht werden (siehe Anhang).

fhem steuert dann letztendlich nur die WW-Solltemperatur, die sich hierbei nur auf das WW-Aufheizen per Gas bezieht. Die Solarthermie ist davon unabhängig und heizt den WW-Speicher bis maximal 62 Grad auf wenn die Sonne scheint.

Wenn länger niemand zuhause war (z.B. Urlaub) wird die Temperatur weiter reduziert, aber da kann man die Heizung i.d.R. auch ganz ausschalten. Aber da ich eh eine Anwesenheitserkennung laufen habe, ist es hier auch noch berücksichtigt.

Das DOIF hierzu ist fast schon trivial:


defmod di_ww_wetter DOIF ### Wenn Wettervorhersage Bewoelkungsgrad gut, dann nicht so sehr WW heizen\
## da Solarertrag erwartet wird.\
## mit waitsame um Flattern zu vermeiden\
## Dienstag abend 60 Grad Legionellenschutz. Hier auch WW Pumpe an siehe di_WWZirkulation\
\
(([05:00-13:00]) and ( [MyWetter:fc1_cloudCover] < 40 ) and ([?rgr_Residents] ne "gone") )\
  ## mit waitsame 1200\
  (set vitoconnect WW-Haupttemperatur 35)\
DOELSEIF \
([17:01|2])\
  (set vitoconnect WW-Haupttemperatur 60)\
  ## mit wait 2700 = 45 Minuten\
  (set vitoconnect WW-Haupttemperatur 45)\
  \
DOELSEIF (([rgr_Residents] ne "gone") and (([?18:45-23:59]) or ([?00:01-04:59]) or ([?13:01-16:59]) ))\
  (set vitoconnect WW-Haupttemperatur 45)\
\
DOELSEIF (([rgr_Residents] eq "gone") and (([?18:45-23:59]) or ([?00:01-04:59]) or ([?13:01-16:59]) ))\
  (set vitoconnect WW-Haupttemperatur 10)\
\

attr di_ww_wetter DOIF_Readings HeizungWWSoll:[vitoconnect:WW-Haupttemperatur:d], HeizungWWIst:[vitoconnect:WW-Isttemperatur:d]
attr di_ww_wetter cmdState 35GradSonne|60GradLegionellenschutzSet,60GradLegionellenschutz,60GradLegionellenschutzEnd|45GradStandard|10GradGone
attr di_ww_wetter group Heizung
attr di_ww_wetter room Keller
attr di_ww_wetter wait 0:0,2700:0
attr di_ww_wetter waitsame 1200:0:0



Die Warmwasser-Zirkultionspumpe hat auch schon länger einen Sonoff vorgeschaltet bekommen und arbeitet nur wenn der Bewegungsmelder im Bad anspricht oder das Badlicht eingeschaltet wurde. Während der 60-Grad Phase am Dienstag Abend ist natürlich auch die Zirkulation an, damit das 60-Grad heisse Wasser auch durch die Leitungen geht. Spart auch noch ein paar W Strom und Gas, weil die Wärmeverluste bei abgeschalteter Zikulation geringer sind.

Der Gaszähler wird per reed-Kontakt auch protokolliert und per GasCalculator Modul kann ich sehen, ob das Ganze auch tatsächlich was bringt: Ja das bringt was. Vorher hatte ich im Hochsommer bei wolkenlosen Himmel immer wieder mal sinnlosen Gasverbrauch in der Frühe, das passiert jetzt nicht mehr und wenn doch dann deutlich weniger.

Die Firma Viessmann hat in einer Developer Challange dazu aufgerufen, Ideen zum Gas einsparen einzureichen. Ich habe diese Lösung kurz allgemein beschrieben und hab damit tatsächlich einen der beiden Hauptgewinne (1000,- EUR) abgeräumt https://developer.viessmann.com/start/news/letsstartathome-results.html.

Da das ganze  ohne die Grundlage fhem und fhem-Module  gar nicht möglich gewesen werde, habe ich ein Drittel des Preisgeldes  gerade an den fhem e.V. gespendet.

Grüße, gadget.

rudolfkoenig


dancatt

Moin,

cool, werde ich mal integrieren. Bin auch gerade an sowas dran.
Habe bei mir allerdings noch eine Einliegerwohnung dran hängen.
Kann dann leider die Pumpe nicht so schalten wie bei mir im Haus die Abwesenheiten sind :-(

Wärst du so nett und würdest auch mal dein di_WWZirkulation teilen?

Vielen Dank und Gruß Daniel
Cubietruck: FHEM-Server 6.0

Homematic: HM-USB-CFG2, HM-CFG-LAN, HM-LC-SW1-FM, HM-LC-Sw1-Pl-DN-R1, HM-CC-RT-DN, HM-TC-IT-WM-W-EU, HM-SEC-SC-2, HM-SEC-SD, HM-PB-6-WM55

gadget

Klar:


defmod di_WWZirkulation DOIF ## Komlexe Steuerung WW Zirkulation\
## \
## Bei Bedarf an für 3 Minuten:\
## Lampe im Bad oder Küche an oder Bewegung Bad oder Schalter Küche betätigt\
\
( \
  (\
    ([Licht_Bad] ne "off") \
or\
    ( ([Bewegungsmelder_Bad:motion] eq "ON") and ([?Bewegungsmelder_Bad:tamper] eq "false") ) \
or\
    ([Licht_Kueche] eq "on") \
or\
    ([Lichtschalter_Kueche:"trigger"])\
   )\
   and\
   ( [?sonoff_WW_Zirkulation:DS18B20_Temperature:d] < 35.0 )\
   and\
   ([?rgr_Residents] eq "home") \
)  \
  (set sonoff_WW_Zirkulation on) \
  ## mit wait 180 = 3 Minuten\
  (set sonoff_WW_Zirkulation off)\
\
### Bei laengerer Abwesenheit (mehr als 2 Tage = 48h ) \
### laufen lassen\
### dito Dienstag bei Legionellenschutz - siehe di_ww_wetter\
\
DOELSEIF\
  ( \
    ([?rgr_Residents] eq "gone") \
    and \
    ( [17:20|Mo Mi Do Fr Sa So]) \
  ) \
\
  (set sonoff_WW_Zirkulation on)\
  ## mit wait 1200\
  (set sonoff_WW_Zirkulation off)\
\
\
DOELSEIF\
([17:20|Di])\
(set sonoff_WW_Zirkulation on)\
## mit wait 3600\
(set sonoff_WW_Zirkulation off)\
\
\
DOELSEIF\
( ( \
  ([sonoff_WW_Zirkulation:DS18B20_Temperature:d] > 45.0 )  \
  or\
  ([$SELF:diffRohrSpeicher] < 5)\
  ) \
  and\
  ( \
    ([?00:01-16:59])  \
    or \
    ([?19:01-23:59])\
  )\
)\
\
  (set sonoff_WW_Zirkulation off)\
\
\
  \
\
\

attr di_WWZirkulation DOIF_Readings diffRohrSpeicher:([vitoconnect:WW-Isttemperatur:d] - [sonoff_WW_Zirkulation:DS18B20_Temperature:d])
attr di_WWZirkulation cmdState WWZirkAn_Bedarf,WWZirkAus_Bedarf|AbwHAn|Legionellen|WarmGenug
attr di_WWZirkulation do always
attr di_WWZirkulation wait 0,180:0,1200:0,3600:0:0




Die Zirkulationspumpe wird über einen  Sonoff TH16 ein- und ausgeschaltet (ist auf Tasmota geflashed) und der zugehörige Kabel-Temperaturfühler ist mit Kabelbinder am Wasserrohr angebracht.

Evtl. kannst Du in Deiner Einliegerwohnung ja einen Funkschalter beim Ausgang anbringen, mit dem die Bewohner dann beim Verlassen der Wohnung einen Sparmodus aktivieren können.

Grüße, gadget

Elektrolurch

Hallo gadget,

ich hatte so einen änlichen Ansatz bereits seit einigen Jahren in perl gelöst, habe gerade heute mit der Umstellung auf ein DOIF begonnen :-)
.

Ich nutze auch das cloudCover vom Wetter-Modul, allerdings den Mittelwert der 1-3 readings. Grund: meine Solaranlage ist SW ausgerichtet und beginnt erst ab 11 Uhr.
Ich mache mit der Anlage sowohl WW als auch Hz.
Für WW ist in dem Buffer ein Durchlauftauscher vorhanden, so dass ich in dem System so gut wie kein Warmwasser habe und mir den Legionenellenschutz sparen kann.
Ich senke die Vorlauftemperatur der Heizung bei Prognose auf Solareintrag soweit ab, dass sie immer einige Grad unterhalb der Puffertemperatur ist, so dass kein Gas für das Aufwärmen notwendig ist.

Ich habe eine Weisshaupt - Anlage, da kann man Abfragen, ob der Brenner läuft und mit wieviel Prozent (Laststellung).
Daraus kann man sich den Gasverbrauch (nach Kalibrierung) errechnen. Das geht mit einer Genauigkeit von unter 1 %.

Gruß

Elektrolurch
configDB und Windows befreite Zone!

stephan-221

Hi,

ich bin auch gerade dabei meinen (noch nicht gelieferten) Heizstab zu integrieren. Dazu werde ich hier auch noch einen Thread erstellen mit der Variante 3 x 1000 W schaltbar je nach Überschuss.
Aber was mir noch fehlt, ist eben die Wettervorhersage, damit die Gasheizung vorher das Brauchwasser deaktiviert oder runterregelt.
Dabei kam ich auf diesen Thread.

Ich nutze bisher die DWD Variante. Da bekomme ich allerdings nur bei fc0_1_cc einen Code, der ziemlich grob ist. Ein Prozentwert wäre schöner. Allerdings wirkt es so, als wären alle Wettermodule outdated bzw. die APIs "sterben".
Wenn jemand da einen Tipp hat, was derjenige nutzt, wäre ich dankbar.

Viele Grüße
Stephan

Aurel_B

Schau dir mal das Modul "SolarForecast" an. Ist zwar für PV, liefert aber eine sehr brauchbare und einfach nutzbare Vorhersage. Du kannst eine "Fake PV" anlegen und dann anhand der vorhergesagten Wattzahlen wohl abschätzen, wieviel Sonne heute kommt.

ch.eick

Zitat von: stephan-221 am 21 März 2023, 16:50:24Aber was mir noch fehlt, ist eben die Wettervorhersage, damit die Gasheizung vorher das Brauchwasser deaktiviert oder runterregelt.
Hallo zusammen,
hier habe ich einen Ansatz mit KI Prognose begonnen, was als Ablösung zu dieser SolarForecast() Funktion umgesetzt wird.
Die SolarForecast() Funktion war die Basis zum Modul "SolarForecast" allerdings ohne die Eigenverrauchssteuerung und Energiefluss Visualisierung.

Die KI und auch die alte SolarForecast() können Ihre Werte in jedes andere Device schreiben.

Wie bereis vorgeschlagen
ZitatDu kannst eine "Fake PV" anlegen und dann anhand der vorhergesagten Wattzahlen wohl abschätzen, wieviel Sonne heute kommt.
Kann man über den Fake Schwellwerte und Prognose Zeiten berechnen lassen, über die man dann einen Trigger für seine eigene Steuerung bekommt.

VG  Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick