Luxtronik 2.0: Unterschied zwischen den Versionen

Aus FHEMWiki
Zeile 137: Zeile 137:
  define Strom_NT_Sa at *13:00 { if ( $wday == 6 ) {fhem( "set Heizung activeTariff 2" );;} }
  define Strom_NT_Sa at *13:00 { if ( $wday == 6 ) {fhem( "set Heizung activeTariff 2" );;} }


==Verhalten der Steuerung (Firmware)==
==Firmware==
===Verhalten der Steuerung===
Leider ist die Beschreibung des Steuerungsverhaltens in den Bedienungsanleitungen meist sehr oberflächlich gehalten. Die folgenden weiterführenden Erläuterungen benutzen die Abkürzungen im der Webapplikation der Steuerung.
Leider ist die Beschreibung des Steuerungsverhaltens in den Bedienungsanleitungen meist sehr oberflächlich gehalten. Die folgenden weiterführenden Erläuterungen benutzen die Abkürzungen im der Webapplikation der Steuerung.
HRW-Zeit - Heizungsregler Mehr-Zeit:
HRW-Zeit - Heizungsregler Mehr-Zeit:

Version vom 15. Oktober 2016, 09:45 Uhr

LUXTRONIK2
Zweck / Funktion
Anbindung der Heizungssteuerung Luxtronik 2.0
Allgemein
Typ Gerätemodul
Details
Dokumentation EN / DE
Support (Forum) Sonstiges
Modulname 23_LUXTRONIK2.pm
Ersteller tupol
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!

Die Luxtronik 2.0 ist eine Heizungssteuerung der Firma Alpha Innotec, die in Wärmepumpen von Alpha Innotec, Siemens Novelan (WPR NET), Roth (ThermoAura®, ThermoTerra), Elco und Wolf Heiztechnik (BWL/BWS) verbaut ist. Sie besitzt einen Ethernet Anschluss, so dass sie direkt in lokale Netzwerke (LAN) integriert werden kann.

Hinweise zum Betrieb mit FHEM

Definition in fhem.cfg:

define <name> LUXTRONIK2 <IP-Adresse[:Port]> [Abfrageinterval]

Die Angabe der Portnummer ist grundsätzlich optional. Bei alpha-innotec Wärmepumpen muss der Port 8889 angegeben werden.

Link auf FHEM commandref

Zusätzliche Perl-Module

Das FHEM-Modul benutzt das CPAN-Modul "net::Telnet". Dieses ist standardmäßig auf Fritz!Boxen installiert. Auf anderen Servern muss es eventuell nachinstalliert werden. Unter Debian z.B. mit

sudo apt-get install libnet-telnet-perl

Erläuterung der Readings

Allgemeine Wärmepumpenwerte

  • ambientTemperature - Temperatur des Außensensors in °C
  • averageAmbientTemperature - Gemittelte Außentemperatur der letzten 24 h in °C (für Heizgrenze im Sommer)
  • heatSourceIN - Wärmequelle Eingangstemperatur in °C
  • heatSourceOUT - Wärmequelle Ausgangstemperatur in °C
  • hotGasTemperature - Heißgastemperatur in °C, Temperatur, die hinter dem Kompressor der Wärmepumpe anfällt
  • flowTemperature - Vorlauftemperatur (Rücklauf plus Spreizung) in °C
  • returnTemperature - Rücklauftemperatur in °C
  • flowRate - Durchfluss in l/h
  • thermalPower - aktuelle Heizleistung (berechnet) in kW
  • COP - Coefficient Of Performance, Wirkungsgrad der Wärmepumpe (Leistungszahl ε). Eine Leistungszahl von z.B. 4,2 bedeutet, dass von der eingesetzten elektrischen Leistung des Kompressors das 4,2- fache an Wärmeleistung bereitgestellt wird. Anders formuliert, kann mit dieser Wärmepumpe aus einem Kilowatt elektrischer Leistung 4,2 kW Wärmeleistung zur Verfügung gestellt werden. Bei der Berechnung des COPs wird die elektrische Leistung aus dem Attribut "heatPumpElectricalPowerWatt" benutzt.
  • deviceTimeCalc - Beim Abrufen der Gerätewerte wird von der Luxtronik-Steuerung auch der Zeitpunkt der internen Ermittlung übergeben.
  • delayDeviceTimeCalc - Abweichung Gerätesystemzeit zur FHEM-Zeit. Dieser kann bis zu 2 s in der Vergangenheit liegen. Höhere Werte weisen auf eine ungenaue Systemzeit in der Steuerung hin.
  • durationFetchReadings - Dauer (in s) des Abrufes der Gerätewerte von der Steuerung

Heizung

  • returnTemperatureTarget - Rücklaufsolltemperatur (wird durch Heizkurve und Außensensor bestimmt, kann über in der Steuerung eingegebene Zeiten und auch manuell gezielt abgesenkt)
  • heatingLimit - Heizgrenze wird ausgewertet (on, off)
  • thresholdHeatingLimit - Heizgrenze in °C, überschreitet die gemittelte Außentemperatur diesen Wert, wird nicht mehr geheizt
  • thresholdTemperatureSetBack - unterschreitet die Außentemperatur diesen Wert, wird die Heizungssolltemperatur nicht mehr abgesenkt

Warmwasserbereitung

  • hotWaterTemperature - aktuelle Warmwasser-Boiler-Temperatur in °C (Achtung, die Temperatur im Boiler ist sehr unterschiedliche, es wird also nur die Temperatur am Sensor angezeigt. Typischerweise sackt die Temperaturkurve beim Aufheizen des Boilers etwas ab, weil es durch den Wärmeeintrag zu Strömungen kommt.)
  • hotWaterTemperatureTarget - obere Solltemperatur des Boilers

Solarthermie

  • solarBufferTemperature
  • solarCollectorTemperature

Zähler

  • counterHours2ndHeatSource1 - Betriebsstunden der zweite Wärmequelle (normalerweise elektrische Heizstäbe)
  • counterHoursHeatPump - Betriebsstunden des Wärmepumpenkompressors
  • counterHoursHeating - Betriebsstunden des Wärmepumpenkompressors die zur Heizung benutzt wurden
  • counterHoursHotWater - Betriebsstunden des Wärmepumpenkompressors die zur Warmwasserbereitung benutzt wurden
  • counterHeatQHeating - von der Wärmepumpe produzierte Wärmemenge (kWh) zur Heizung
    (nur bei vorhandenem Wärmemengenzähler und ohne Wärmeeintrag durch zweite Wärmequelle wie z.B. Heizstäbe)
  • counterHeatQHotWater - von der Wärmepumpe produzierte Wärmemenge (kWh) zur Warmwasserbereitung
    (nur bei vorhandenem Wärmemengenzähler und ohne Wärmeeintrag durch zweite Wärmequelle wie z.B. Heizstäbe)
  • counterHeatQTotal - von der Wärmepumpe produzierte Wärmemenge (kWh) insgesam
    (nur bei vorhandenem Wärmemengenzähler und ohne Wärmeeintrag durch zweite Wärmequelle wie z.B. Heizstäbe)

Ein- und Ausgänge

  • heatingSystemCircPump - Umlaufpumpe in der Wärmepumpe
  • hotWaterCircPumpExtern - Zirkulationspumpe im Warmwasserstrang des Hauses (wenn genutzt)
  • hotWaterSwitchingValve - Ventil zur Umschaltung auf die Heizspirale im Boiler

Sonstiges

  • Firmware
  • typeHeatpump

Tipps zum ökonomischen Betrieb

Grundlage eines ökonomischen Betriebs einer Wärmepumpe ist in erster Linie ein guter hydraulischer Abgleich der Heizwasserverteilung und eine genaue Einstellung der aussentemperaturgesteuerten Heizkurve. Beides ist sowohl von den Bedürfnissen und dem Nutzungsverhalten der Bewohner als auch von der Dämmung des Hauses abhängig. Interessant ist hier der Ansatz, die Einzelraumregelung und das Überströmventil der Wärmepumpe komplett ausser Betrieb zu nehmen und damit alle Heizkreise als ein "Heizkörper" zu betrachten. Diverse Foreneinträge (z.B. [1]) erzählen von bedeutenden Einsparungen und Wärmepumpen-freundlichen Betriebszyklen (lange Taktzeiten) und gehen auch detailiert auf durch die Luxtronik2 betriebene Wärmepumpen ein.

Durch FHEM können die Heizkosten jedoch noch weiter optimiert werden.

Sperrzeiten

Die Luxtronik 2.0 erlaubt es, sich mit Hilfe von Sperrzeiten an zeitabhängige Strompreise anzupassen. Die Uhr der Steuerung geht jedoch sehr ungenau. Durch Setzen des Attributes "autoSynchClock" wird die Uhr der Steuerung regelmäßig mit der FHEM-Zeit abgeglichen. Die Funktion muss über das Attribut "allowSetParameter" freigegeben werden.

attr <device> allowSetParameter 1
attr <device> autoSynchClock 10

Warmwasserbereitung bei Luft-Wasser-Wärmepumpen

Die Kosten der Warmwasserbereitung durch Luft-Wasser-Wärmepumpen hängen von zwei Faktoren ab:

  1. den Energiekosten: Bei Zweitarifzählern ist der Strom im Nebentarif (z.B. Mo-Fr von 22:00 - 06:00, Sa ab 13:00 und den ganzen So) billiger als im Haupttarif.
  2. der Lufttemperatur: Die Heizleistung der Wärmepumpe steigt bei höherer Lufttemperatur trotz konstantem Stromverbrauchs.
    Die Außentemperatur erreicht ihr Maximum an einem sonnigen Durchschnittstag gegen 15:00 Uhr. Ihr Minimum hat sie kurz vor Sonnenaufgang.

Das FHEM Modul erlaubt es, durch zeitweises Anheben der Solltemperatur ein Aufheizen des Boilers auszulösen.

set <device> hotWaterTemperaturTarget 50

Es gilt nun den kostengünstigsten Zeitpunkt für diesen Vorgang zu bestimmen. Die nachfolgenden Ausführungen setzen voraus, dass Aufgrund der Boilerisolierung und der Boilergrösse nur ein- oder zweimal pro Tag aufgeheizt werden muss. Zur Vereinfachung wird die Abhängigkeit der Wärmeverluste von der Boilertemperatur vernachlässigt.

Bei den aktuellen Wärmepumpentarifen ist der Strom des Haupttarifes etwa 17 % teurer als der des Nebentarifes. Es liegt also nahe, den Boiler in der Woche zu Beginn des Nebentarifes gleich für die nächsten 24 h aufzuheizen, weil dann die Aussentemperatur höher ist und man dann am billigsten und effizientesten die entsprechende Wärme produziert.

# Sollwert 5 K über Standardwert setzen
 define Boilertemperatur_hoch at *22:05:00 {\
  if ($we != 1) { fhem ("set WP hotWaterTemperaturTarget 47");; }\
 }
# Sollwert auf Standwert zurücksetzen
 define Boilertemperatur_normal at *23:00:00 set WP hotWaterTemperaturTarget 42

Detailliertere Berücksichtigung der Temperaturabhängigkeit

Damit die Warmwasserbereitung vor 6 Uhr nicht startet, muss die Warmwassertemperatur um 22 Uhr eigentlich nur ausreichend hoch über der Auslöseschwelle liegen. Bei einer Auslöseschwelle von 40 °C und einem Wärmeverlust (statBoilerGradientCoolDownMin) von 0,25 K/h sind dies z.B. 42 °C. Beträgt die Solltemperatur-Hysterese 2 K, so muss um 22 Uhr die Solltemperatur kurzzeitig auf 44 °C angehoben werden bzw. eigentlich nur 2 K oberhalb der aktueller Warmwassertemperatur.

Die obigen 47 °C machen zudem nur Sinn, wenn tagsüber die Effektivitätsverbesserung durch die höheren Außentemperaturen den höheren Strompreis nicht wieder ausgleicht. Zudem muss berücksichtigt werden, dass sich bei höherer Vorlauftemperatur auch die Leistungsaufnahme der Wärmepumpe und damit ihre Arbeitszahl ändert. Diese Veränderung beträgt üblicherweise 2 %/K.
Geht man von einer durchschnittlichen Erhöhung der Vorlauftemperatur von 4 K aus, so erhält man dadurch eine Verschlechterung der Arbeitszahl um 8 %. Das heißt, die 17 % Preisunterschied müssen um den Effektivitätsverlust von 8 % korrigiert werden (1,17/1,08=1,08). In unserem Fall reicht also die Temperaturdifferenz aus, die zu einer 8 % höheren Heizleistung führt.

Die ungefähre, theoretische Temperaturabhängigkeit der Heizleistung erhält man am schnellsten aus den Grafiken der Betriebsanleitung der Wärmepumpe. Empirisch und genauer lassen sich die Wert durch Loggen der Werte thermalPower oder besser statThermalPowerBoiler bestimmen. Liest man die Log-Datei in ein Tabellenkalkulationsprogramm (MS Excel, OO Calc), kann man mit diesem auch gleich eine Regressionsgrade berechnen. Auf diesem Wege erhält man für jede Temperaturdifferenz die prozentuale Änderung der Heizleistung. Nehmen wir an, sie beträgt für 8 % 4 K.

Über das Wettermodul von FHEM kann man nun Mo-Fr um 22:00 die aktuelle Aussentemperatur ambientTemperature mit der maximalen Aussentemperatur des nächsten Tages vergleichen. Rechnen wir noch eine Sicherheit von 2 K hinzu, dann kann man z.B. festlegen, dass ab 5 K Temperaturunterschied und jeden Samstag der Boiler nur noch so weit aufgeheizt wird, dass er bis 06:00 nicht mehr auslöst.

define Boilertemperatur_hoch at *22:05:00 {\
  my $delta = ReadingsVal("Wetter","fc2_high_c",0) - ReadingsVal("Heizung","ambientTemperature",0);;\
  if ($delta >=5.0 || $wday == 6) {}
  my $newTemp = int(ReadingsVal("Heizung","hotWaterTemperature",42)*2+5)/2;;\
  if ($newTemp<42.0) {$newTemp = 42;;}\
  if ($newTemp>44.0) {$newTemp = 44;;}\
  fhem( "set Heizung hotWaterTemperatureTarget $newTemp" );;\
}\
  else { fhem( "set Heizung hotWaterTemperatureTarget 47" );; }\
}

Mit Hilfe der Sperrzeitensteuerung der Luxtronik 2.0 kann man die nächste, zweite Aufheizung dann erst wieder um 15:00 erlauben, da dann Aufgrund der hohen Aussentemperaturen der Strompreisunterschied mehr als ausgeglichen wird. Natürlich kann das Aufheizen auch hier durch ein gezieltes Anheben der Solltemperatur erreicht werden (z.B. am Wochenende).

define Boilertemperatur_WE_Hoch at *15:00:00 {\
   if ($we == 1) {fhem( "set Heizung hotWaterTemperatureTarget 47" );; }\
}
define Boilertemperatur_WE_Normal at *16:00:00 {\
   if ( ReadingsVal("Heizung","hotWaterTemperatureTarget", 42 ) != 42.0 ) {fhem ("set Heizung hotWaterTemperatureTarget 42");;}\
}

Frostschutz bei Erreichen der Heizungsgrenze

Wenn die mittlere Temperatur "averageAmbientTemperature" die Heizgrenze "thresholdHeatingLimit" überschreitet, so schaltet die Anlage in den Sommermodus, indem sie die Rücklaufsolltemperatur "returnTemperatureTarget" auf 15 °C absenkt.

Allerding gibt es ein undokumentiertes Anheben der Rücklaufsolltemperatur auf 20 °C, sobald die Außentemperatur "ambientTemperature" 10 °C unterschreitet. Ob es bei eine abgekühlten Haus (z.B. wegen Urlaub oder Nachts) dann auch zum ungewollten Heizen kommen kann, ist noch nicht geklärt.

Abschätzung des elektrischen Verbrauches

Über die Attribute "heatPumpElectricalPowerWatt", "heatPumpElectricalPowerFactor" und "heatRodElectricalPowerWatt" wird der elektrische Verbrauch während der Wärmeerzeugungen (Kompressormotor, Motor(en) der Wärmequelle) und der Heizstäbe festgelegt. Ist zudem das Attribute "doStatistics" auf 1 und der Werte "activeTariff" auf einen Wert zwischen 1 und 9 gesetzt, so berechnet das Modul anhand der Betriebsstunden automatisch den elektrischen Verbrauch innerhalb des angegebenen Stromtarifes.

Normalerweise wird eine Wärmepumpe mit einem zeitabhängigen Stromtarif betrieben (Doppeltarifzähler). Hierbei muss der Werte "activeTariff" zum jeweiligen Zeitpunkt über ein FHEM-Script gesetzt werden. Beispiel:

define Strom_HT_W at *06:00 { if ( $wday != 0 ) {fhem( "set Heizung activeTariff 1" );;} }
define Strom_NT_W at *22:00 set Heizung activeTariff 2
define Strom_NT_Sa at *13:00 { if ( $wday == 6 ) {fhem( "set Heizung activeTariff 2" );;} }

Firmware

Verhalten der Steuerung

Leider ist die Beschreibung des Steuerungsverhaltens in den Bedienungsanleitungen meist sehr oberflächlich gehalten. Die folgenden weiterführenden Erläuterungen benutzen die Abkürzungen im der Webapplikation der Steuerung. HRW-Zeit - Heizungsregler Mehr-Zeit: Die Zeit, während der TRL > (TRLSoll + Hysterese)

HRM-Zeit - Heizungsregler Weniger-Zeit: Die Zeit, während der TRL < (TRLSoll - Hysterese)

- im Aufbau, bitte ergänzen -

Firmware Bugs

- im Aufbau, bitte ergänzen -

Aktuelle Firmware

Die aktuelle Firmware gibt es hier