Luxtronik Warmwasser Zirkulation ZIP

Begonnen von westgate, 25 März 2019, 22:34:09

Vorheriges Thema - Nächstes Thema

westgate

Hallo,

ich habe eine Alpha Innotec WZSV92H. Auf dieser läuft der Softwarestand  V3.83.1 (r4366) der Luxtronik.
Hier erkläre ich euch wie ich meine Warmwasser Zirkulation ZIP über FHEM steuere.

Im folgenden Post erkläre ich ein wenig welche Werte man von der Luxtronik auslesen kann.
Dieser Post ist für das weitere Verständnis von Vorteil.
https://forum.fhem.de/index.php/topic,98930.msg922874.html#msg922874


Allgemein

Die Luxtronik Steuerung wird von vielen Herstellern von Wärmepumpen, für viele verschiedene Modell eingesetzt.
Sozusagen ist die Luxtronik das Gehirn vieler Wärmepumpen. Der Rest der Hardware hat keine Intelligenz.
Da die Luxtronik universel für so viele Geräte eingesetzt wird, ist sie eine "Eierlegendewollmilchsau".
Das heißt es existieren unglaublich viele Konfigurationsmöglichkeiten, Eingänge, Ausgänge und vor allem Bezeichnungen.
Es gibt also Parameter und Funktionen die sind für den einen Betreiber interessant aber für den andern vollkommen uninteressant (z.B. Luftwärmepumpe <-> Solewärmepumpe).

Ein direktes Schalten von Ausgängen der Luxtronik ist nicht möglich.
Dies ist kein Bug sondern ein Feature. Die Luxtronik denkt immer mit und hat den Schutz der Anlage im Fokus.
Wäre ein direktes Schalten möglich könnte man z.B. versehentlich die Zusatz Heizstäbe Anschalten aber vergessen die Energie durch Pumpen abzuführen. Dies könnte zu Schäden an der Anlage führen.


Erste Versuche die Warmwasser Zirkulation zu steuern

Zuerst habe ich versucht die Zirkulation mit set hotWaterCircPumpDeaerate on zu steuern. Dieses Kommando wird von Luxtronik FHEM Modul bereit gestellt.
Hier wird der Entlüftungsmodus benutzt, den die Luxtronik bietet, diesen kann man auch am Bedienteil aktivieren.
Leider geht im Entlüftungsmodus nur die Entlüftung. Alle anderen Funktionen der Anlage werden still gesetzt (Schutz der Anlage).
Somit bleibt auch der Kompressor und alles anderen Pumpen stehen und müssen nach dem Entlüften wieder Anlaufen was nicht gut ist.


Zweiter Versuch


Reverse Engineering
Da ich so langsam verstehe wie FHEM aufgebaut ist und jetzt auch vestehe welche Werte die Luxtronik liefert (siehe Link oben), habe ich mich mal an das LUXTRONIK2 FHEM Modul gewagt.
Das Modul ist in Perl geschrieben. Habe vor langer Zeit viel mit Perl gemacht aber eigentlich alles vergessen. Deshalb schaue ich einfach was schon im Modul steht und passe das so gut es geht an.

Das Luxtronik2 Modul befindet sich bei meinem Raspberry Pi unter /opt/fhem/FHEM/23_LUXTRONIK2.pm.
Die Entwickler benutzen ein SVN um die aktuellen Versionen bzw. die Änderungen zu dokumentieren. https://svn.fhem.de/trac/browser/trunk/fhem
Das Luxtronik Modul findet man unter https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/23_LUXTRONIK2.pm

Für mich interessant wurde es so um die Codzeile 310 herum.
Oberhalb findet man den bei den Befeheln set hotWaterCircPumpDeaerate und set heatingSystemCircPumpDeaerate ausgeführten Code.
Unterhalb werden die set Kommandos definiert.

# Einstellung->Entlüftung
   elsif( int(@_)==4 &&
          ( $cmd eq 'hotWaterCircPumpDeaerate' || $cmd eq 'heatingSystemCircPumpDeaerate' ) ) {
        Log3 $name, 3, "set $name $cmd $val";
        return "$name Error: Wrong parameter given - use on,off"     if $val !~ /on|off/;
        $hash->{LOCAL} = 1;
        $resultStr = LUXTRONIK2_SetParameter ($hash, $cmd, $val);
        if( $val eq "on"
            || ReadingsVal( $name, "heatingSystemCircPumpDeaerate", "off" ) eq "on"
            || ReadingsVal( $name, "hotWaterCircPumpDeaerate", "off" ) eq "on" ) {   
          $resultStr .= LUXTRONIK2_SetParameter ($hash, "runDeaerate", 1);   
        }
        # only send "0" if no Deaerate checkbox is selected at all.   
        else {
          $resultStr .= LUXTRONIK2_SetParameter ($hash, "runDeaerate", 0);   
        }
        $hash->{LOCAL} = 0;
        return $resultStr;
   }
   
  my $list = "statusRequest:noArg"
          ." activeTariff:0,1,2,3,4,5,6,7,8,9"
          ." boostHotWater"
          ." heatingCurveEndPoint"
          ." heatingCurveOffset"
          ." heatingSystemCircPumpDeaerate:on,off"
          ." heatSourceDefrostAirEnd"
          ." heatSourceDefrostAirThreshold"
          ." hotWaterCircPumpDeaerate:on,off"
          ." hotWaterTemperatureTarget "
          ." resetStatistics:all,statBoilerGradientCoolDownMin,statAmbientTemp...,statElectricity...,statHours...,statHeatQ..."
          ." returnTemperatureHyst "
          ." returnTemperatureSetBack "
          ." opModeHotWater:Auto,Party,Off"
          ." synchronizeClockHeatPump:noArg"
          ." INTERVAL ";


Bei Zeile 1522 findet man dann heraus was eigentlich hinterLUXTRONIK2_SetParameter ($hash, "runDeaerate", 1) steckt.

   elsif ($parameterName eq "runDeaerate") {
     $setParameter = 158;
     $setValue = $realValue;
   }


Es wird der Paramert mit dem Index 158 ($setParamter) mit dem übergebenen Wert ($setValue) belegt.
Im weiteren wird dieser Wert dann auf die Luxtronik geschrieben Zeile 1450 und fort folgende.

Ok jetzt habe ich verstanden wie Variablen auf der Luxtronik geschrieben werden. Will ich dort etwas schreiben und der betreffende Wert exisitert nicht als Set Befehl muss ich selbst im LUXTRONIK2.pm programmieren.

Wie könnte man also Zirkulation realisieren?
Die Luxtronik (Bedienteil) bietet die Möglichkeit unter Warmwasser -> Pflegeprogramm -> Zirkulation feste Zeiten für die Warmwasser Zirkulation einzustellen.
Unter Schaltuhren hat man verschieden Möglichkeiten diese Zirkulationszeiten einzustellen.
Wichtig hierbei man stellt nicht die Zirkulationszeiten, sondern die Sperrzeiten ein.
Das heißt ein Wert von 08:00 - 22:00 sperrt zwischen 8:00 und 22:00 die Zirkulation. Will ich von 8:00 bis 22:00 Zirkulation muss ich es genau anders herum eintragen 22:00 - 8:00.

Hier könnte was gehen ;-)

Ich bin darauf gekommen das der Wert 00:00 - 00:00 die Zirkulation aus schaltet. Den die Sperrzeit geht ja von 0 Uhr bis 0 Uhr. Also nie an.
Stellt man 00:01 - 00:00 ein läuft die Zirkulation den ganzen Tag nur in der Minute zwischen 0 Uhr und 0:01 Uhr nicht.
Diese Zeitwerte in Minuten werden in der Luxtronik in Sekunden umgerechnet. 00:00 = 0s, 00:01 = 60s, 01:00 = 3600, usw.
Diese Werte sind ein String!
Die ersten belegbaren Werte (Warmwasser -> Pflegeprogramm -> Zirkulation -> Schaltuhren -> Woche ->  1) werden in den HeatpumpParameters 507 und 508 abgelegt.
Man kann also durch setzen von HeatpumpParameters 507 = 0 und HeatpumpParameters 508 = 0 die Zirkulation ausschalten und durch setzen von HeatpumpParameters 507 = 60 und HeatpumpParameters 508 = 0 die Zirkulation einschalten (mit der kurzen Pause zwischen 00:00 und 00:01).

ZitatAktualisierte Infos 9.12.2020
Die Luxtronik besitzt 3 Tabellen für die Zirkulationszeiten.
Die aktive Tabelle wird mit dem Parameter ausgewählt
506 Einst_SuZIP_akt

Woche(Mo-SO)     = 0
5+2(Mo-Fr,Sa-So) = 1
Tage(Mo,Di...)       = 2

Um also die Zeitwerte für die Woche zu nutzen muss beim Einschalten noch gesetzt werden.
506 Einst_SuZIP_akt : 0

Beim Ausschalten werde ich den Wert zukünftig auf die Tabelle Tage (Mo,Di,...) setzen.
Diese Tabelle sollte man dann also in seiner Luxtronik auswählen und dort evtl. gewünschte Taktzeiten eintragen.
506 Einst_SuZIP_akt : 2


Beinflusst wird das ganze noch von der Taktzeit (Warmwasser -> Pflegeprogramm -> Zirkulation -> Taktzeit) hier ist es wichtig das "Zeit aus" auf 0 min steht. Dann bleibt die Zirkulation immer an egal was in "Zeit ein" eingestellt ist.
Diese beiden Werte befinden sich in den HeatpumpParameters 697 und 698.
Mein Vorschlag  HeatpumpParameters 697=1 (Zeit ein 1 Min) HeatpumpParameters 697=0 (Zeit aus 0 Min).

So kann man die Zirkulation steuern  ;D. Jetzt müssen wir das Modul anpassen.

Anpassen des LUXTRONIK2.pm
Jetzt habe ich das Perl Modul angepasst. Im Anhang findet Ihr meine Version 23.LUXTRONIK2_Westgate.pm in die am 25.03.2019 verfügbare Version des SVN eingebaut 23_LUXTRONIK2.pm.

Hinter die Einstellungen->Entlüftung ca. Zeile 310 füge ich folgendes ein (Ergänzungen in Rot):

# Einstellung->Entlüftung
   elsif( int(@_)==4 &&
          ( $cmd eq 'hotWaterCircPumpDeaerate' || $cmd eq 'heatingSystemCircPumpDeaerate' ) ) {
        Log3 $name, 3, "set $name $cmd $val";
        return "$name Error: Wrong parameter given - use on,off"     if $val !~ /on|off/;
        $hash->{LOCAL} = 1;
        $resultStr = LUXTRONIK2_SetParameter ($hash, $cmd, $val);
        if( $val eq "on"
            || ReadingsVal( $name, "heatingSystemCircPumpDeaerate", "off" ) eq "on"
            || ReadingsVal( $name, "hotWaterCircPumpDeaerate", "off" ) eq "on" ) {   
          $resultStr .= LUXTRONIK2_SetParameter ($hash, "runDeaerate", 1);   
        }
        # only send "0" if no Deaerate checkbox is selected at all.   
        else {
          $resultStr = LUXTRONIK2_SetParameter ($hash, "runDeaerate", 0);   
        }
        $hash->{LOCAL} = 0;
        return $resultStr;
   }
# Warmwasser Zirkulation
   elsif( int(@_)==4 && ( $cmd eq 'hotWaterCircPumpRun' ) ) {
        Log3 $name, 3, "set $name $cmd $val";
        $hash->{LOCAL} = 1;
        if( $val eq "on" ) {
                        $resultStr = LUXTRONIK2_SetParameter ($hash, "zirkulation506", $val);
         $resultStr = LUXTRONIK2_SetParameter ($hash, "zirkulation507", $val);
         $resultStr = LUXTRONIK2_SetParameter ($hash, "zirkulation508", $val);
         $resultStr = LUXTRONIK2_SetParameter ($hash, "zirkulation697", $val);
         $resultStr = LUXTRONIK2_SetParameter ($hash, "zirkulation698", $val);
        } 
        elsif( $val eq "off" ) {
                        $resultStr = LUXTRONIK2_SetParameter ($hash, "zirkulation506", $val);
         $resultStr = LUXTRONIK2_SetParameter ($hash, "zirkulation507", $val);
         $resultStr = LUXTRONIK2_SetParameter ($hash, "zirkulation508", $val);         
        }
      else{
         $resultStr = "$name Error: Wrong parameter given - use on,off";
      }
        $hash->{LOCAL} = 0;
        return $resultStr;
   }

   
  my $list = "statusRequest:noArg"
          ." activeTariff:0,1,2,3,4,5,6,7,8,9"
          ." boostHotWater"
          ." heatingCurveEndPoint"
          ." heatingCurveOffset"
          ." heatingSystemCircPumpDeaerate:on,off"
          ." heatSourceDefrostAirEnd"
          ." heatSourceDefrostAirThreshold"
          ." hotWaterCircPumpDeaerate:on,off"
          ." hotWaterTemperatureTarget "
          ." resetStatistics:all,statBoilerGradientCoolDownMin,statAmbientTemp...,statElectricity...,statHours...,statHeatQ..."
          ." returnTemperatureHyst "
          ." returnTemperatureSetBack "
          ." opModeHotWater:Auto,Party,Off"
          ." synchronizeClockHeatPump:noArg"
          ." INTERVAL "
          ." hotWaterCircPumpRun:on,off";


Hinter Zeile 1526 füge ich folgendes ein (Ergänzungen in Rot):

  elsif ($parameterName eq "hotWaterCircPumpDeaerate") { #isVisible(167)
     $setParameter = 684;
     $setValue = $realValue eq "on" ? 1 : 0;
   }
   elsif ($parameterName eq "runDeaerate") {
     $setParameter = 158;
     $setValue = $realValue;
   }
   
   #Zirkulation
   elsif ($parameterName eq "zirkulation506") {
      $setParameter = 506; #Auswahl Zeittabelle bei On Woche, Ansonsten Tage
      $setValue = $realValue eq "on" ? '0' : '2';
   }
   elsif ($parameterName eq "zirkulation507") {
      $setParameter = 507; #Einschaltzeit
      $setValue = $realValue eq "on" ? '60' : '0';
   }
   elsif ($parameterName eq "zirkulation508") {
      $setParameter = 508; #Ausschaltzeit
      $setValue = '0';
   }
   elsif ($parameterName eq "zirkulation697") {
      $setParameter = 697; #Laufzeit Ein
      $setValue = '1';
   }
   elsif ($parameterName eq "zirkulation698") {
      $setParameter = 698; #Laufzeit Aus
      $setValue = '0';
   }


   else {
    return "$name LUXTRONIK2_SetParameter-Error: unknown parameter $parameterName";
  }

############################
# Send new parameter to host
############################


Mit diesen Änderungen habe ich jetzt einen Set Befehl hotWaterCircPumpRun.
Beim Parameter "on" setzt dieser die HeatpumpParameters 506=0, 507=60, 508=0, 697=0, 698=0 und schaltet somit die Zirkulation An.
Beim Parameter "off" setzt dieser die HeatpumpParameters 506=2, 507=0, 508=0, und schaltet somit die Zirkulation Aus und wieder auf die in Luxtronik Tageweise eingestellten Zeiten.

Somit kann ich jetzt die Warmwasser Zirkulation Ein- und Ausschalten ohne den Rest des Systems zu Stören (Alles läuft im Gegensatz zum Entlüftungsmodus weiter) .

Steuerung aus FHEM heraus
Mit diesen Änderungen am LUXTRONIK2.pm ist es möglich die Warmwasser Zirkulation in FHEM ein bzw. aus zu schalten.
set <HeizungName> hotWaterCircPumpRun on oder set <HeizungName> hotWaterCircPumpRun off

Da die Zirkulation meist nur einige Minuten laufen muss um überall warmes Wasser bereitszustellen, habe ich nach Möglichkeiten gesucht um die Zirkulation nur für eine definierte Zeit in s an zu schalten.
Leider unterstützen normale Dummys nicht das Kommand on-for-timer  :-[

Jedoch bieten FS20 Geräte diese Möglichkeit. Wir benutzen also ein FS20 Gerät ohne überhaupt eines zu besitzen (Es funktioniet trotzdem und wir haben on-for-timer zur Verfügung).
Zuerst wird dieses Gerät mit dem Name Zirkulation als FS20 Gerät angelegt. Die 7er mit Leerzeichen sind nötig aber jetzt unwichtig (Näheres in der FS20 Doku).
Dann das Geräte zum dummy erklärt (Es will somit nie senden)
Dann die webCmd on und off definiert (Als Schaltflächen stehen on und off zur Verfügung)
Jetzt werden diese als Schaltflächen angezeigten Wert on und off durch eventMap zu den Befehelen on-for-timer 300 und off (hier ändert sich nichts) geändert. (Die Zirkulation läuft also 300s = 5min)
Damit alles funktioniert müssen wir follow-on-for-timer 1 setzen.

defmod Zirkulation FS20 7777 77
attr Zirkulation dummy 1
attr Zirkulation webCmd on:off
attr Zirkulation eventMap /on-for-timer 300:on/off:off/
attr Zirkulation follow-on-for-timer 1


Änderungen am Gerät Zirkulation besser gesagt die durch sein Schalthandlungen ausgelösten Events müssen wir jetzt noch der Luxtronik mitteilen.
Hierfür legen wir einen Notify an.

defmod n_Zirkulation notify Zirkulation:.* set Heizung hotWaterCircPumpRun $EVENT

Fazit
Jetzt können wir die Zirkulation An und Aus schalten.
Reihenfolge ist: Schalter (FS20) -> Notify -> LUXTRONIK2.pm

@tupol gerne kannst du den Quellcode in das FHEM Modul übernehmen. Ich stehe gern für Tests bereit. Wie auch oben schon geschrieben habe ich eine Luxtronik mit Firmware V3.83.1. Habe schon einige sachen erkannt die hier wahrscheinlich ander sind.

Gruß
Westgate

ch.eick

Hallo westgate,

vielen Dank für die Top Erklärung. Ich verwende ebenfalls den Entlüftungsmodus, war mir jedoch nicht der Nebeneffekte bewusst. Der Umweg über die manipulierte Zeitsteuerung leuchtet mir ein, man nutzt ja nur die Möglichkeiten der Steuerung und kann sich in einem Servicefall nichts vorwerfen lassen.

Sobald ich Zeit habe es bei mir einzubauen werde ich es mal testen.

Ich betreibe eine Novelan LD9 mit Luxtronic 2.0 v 2.84

Gruß
    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

tupol

Hallo Westgate,

Dein Ansatz ist sehr interessant. Es gibt allerdings auch Leute, die die Zeitsteuerung der Zirkulationspumpe nutzen. Diese würde dann jedes Mal überschrieben. Ich würde deshalb empfehlen, dass ganze nicht unter "hotWaterCircPumpRun" laufen zu lassen
, sondern es entsprechend seiner tatsächlichen Umsetzung zu benennen, d.h. dem Setzen einzelner Werte der Zeitsteuerung.

Gruß

Tupol
FHEM 5.5 auf RPi B Rev.2 (mit LCD4Linux, BMP180 und CUL v3 868.35 MHz), FB7490, Fritz!DECT 200, FS20, FHT80TF-2, S300TH, KS300, Homematic, PRESENCE
Modul-Entwickler von: FRITZBOX, statistics, PROPLANTA, OPENWEATHER, JSONMETER, LUXTRONIK2

tupol

Noch eine Frage. Funktioniert in der v2.84 oder  V3.83.1 der Party-Modus der Warmwasseraufbereitung?

In der Version 1.81 war er defekt.
FHEM 5.5 auf RPi B Rev.2 (mit LCD4Linux, BMP180 und CUL v3 868.35 MHz), FB7490, Fritz!DECT 200, FS20, FHT80TF-2, S300TH, KS300, Homematic, PRESENCE
Modul-Entwickler von: FRITZBOX, statistics, PROPLANTA, OPENWEATHER, JSONMETER, LUXTRONIK2

ch.eick

Zitat von: tupol am 29 März 2019, 10:18:07
Noch eine Frage. Funktioniert in der v2.84 oder  V3.83.1 der Party-Modus der Warmwasseraufbereitung?

In der Version 1.81 war er defekt.
Ich habe die 2.84 , jedoch habe ich den Partymodus noch nicht verwendet.
Welchen Test soll ich für Dich durchlaufen um ein korrektes Ergebnis zu bekommen?

Ich habe meine Sperrzeiten sehr eng gesetzt und habe um 14:00 Uhr meine einzige WW Bereitung.

Gruß
   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

ch.eick

#5
Zitat von: tupol am 29 März 2019, 10:13:28
Es gibt allerdings auch Leute, die die Zeitsteuerung der Zirkulationspumpe nutzen. Diese würde dann jedes Mal überschrieben. Ich würde deshalb empfehlen, dass ganze nicht unter "hotWaterCircPumpRun" laufen zu lassen[/font], sondern es entsprechend seiner tatsächlichen Umsetzung zu benennen, d.h. dem Setzen einzelner Werte der Zeitsteuerung.

Ich denke es macht wenig Sinn die Pumpe doppelt anzusteuern. Also entweder FHEM oder Luxtronik Zeitsteuerung.
Im Fall von FHEM wird auch von dort die Zeit getaktet und natürlich auch noch presens und andere tolle Ideen.

Gruß
   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

westgate

Hallo,

die Funktion von hotWaterCircPumpRun müsste man halt in der CommandRef vernünftig erklären, auch das dann die Zirkulation nicht in der Luxtronik eingestellt werden sollte.

Dann sollte man die Zirkulation rein aus FHEM steuern.
Mit einem Timer bekommt man dann auch feste Zeiten z.B. 7:00 bis 9:00 hin.

An Präsenzerkennung hatt ich noch nicht gedacht, aber das kann sich dann sicher jeder mit der Funktion des Luxtronik2.pm verknüpfen.

Ich Arbeite gerade an der temperaturgesteuerten Abschaltung bzw. Anschaltung der Zirkulation.
Hierzu will ich einige ungenutzte Eingänge für die Temperatursensoren der Luxtronik nutzen. Zwei konnte ich schon identifizieren und die nötigen NTCs sind auch schon da.
Es soll dann erkannt werden wann Temperatur x am Ende der Zirkulationsleitung ankommt und dann abgeschalten werden, auch wenn mein Timer noch nicht abgelaufen ist.
Außerdem könnte man durch eine Temeraturänderung am Anfang der Zirkulation erkennen wann jemand versucht Warmwasser zu zapfen.
Würde mir dann vorstellen das die Zirkulation dann startet. So könnte man mit z.B. kurzen Hahn auf die Zirkulation anschalten.
Werde euch auf dem laufenden Halten.

Gruß
Westgate

ch.eick

Hallo westgate,

ich finde das auch sehr spannend. Bei meiner Sanitär Installation wurde eine Zirkulationspumpe eingebaut, die nach 14 Tagen selber erkennen sollte, wann in den Tagen vorher warmes Wasser benötigt wurde und wann nicht. Leider hat das nie funktioniert und der Hersteller konnte auch nicht helfen. Jetzt bin ich auf die Zeitsteuerung mit FHEM umgestiegen und habe das dann mit der Präsenzerkennung verfeinert.

Die Temperaturfühler sollten mindestens einen Meter für Speicher entfernt angebracht werden, da ansonsten der Einfluss über die normale Thermik einen zu großen Einfluss auf die Temperaturänderung hat (Auskunft des Pumpenherstellers).

Das mit dem "kurz den Wasserhahn betätigen" wir Dir bei Kindern im Haushalt ziemlich oft die ZIP einschalten. Jedes kleine Händewaschen mit lauwarmem Wasser anstatt mit kaltem führt dann eventuell zum start der ZIP. Da ist der Spareffekt schnell futsch.

Ich denke ein SMART home Taster in der Küche mit 10min Lauftimer (für das Spülwasser) wird sicherlich bessere Dienste leisten :-)

Gruß
    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

westgate

Diese Pumpe habe ich wahrscheinlich auch  ;)
Funktioniert leider überhaupt nicht.
Hatte auch mit dem Hersteller Kontakt.

Jetzt mach ich das lieber selbst dann funktioniert es auch.

ch.eick

Hallo westgate,

hier kommt dann mal mein Muster...

Es ist entstanden nachdem klar war, dass die Pumpe zu dumm zum lernen war.

PRESENCE mit Fritzbox

defmod Person1 PRESENCE function {checkFritzMACpresent("<Fritzdevice>","<mac_Adresse>")} 180 180
attr Person1 devStateIcon present:10px-kreis-gruen absent:10px-kreis-rot
attr Person1 room FritzBox,Heizung
attr Person1 verbose 0


WeekdayTimer in Kombination mit PRESENCE für zwei Personen

spätes Aufstehen, da wir unterschiedliche Zeiten haben wäre dies für beide

defmod WW_ZIP_Aufstehen WeekdayTimer Heizung de 0123456|08:00|on 0123456|08:15|off 0123456|08:30|on 0123456|08:45|off {if(ReadingsVal("Person1", "state", "") eq "present" || ReadingsVal("Person2", "state", "") eq "present") {fhem("set $NAME hotWaterCircPumpDeaerate $EVENT")}}
attr WW_ZIP_Aufstehen commandTemplate set $NAME  $EVENT
attr WW_ZIP_Aufstehen disable 0
attr WW_ZIP_Aufstehen room Heizung
attr WW_ZIP_Aufstehen stateFormat {sprintf("geplant: %s %s", ReadingsVal("WW_ZIP_Aufstehen","nextUpdate","?"), ReadingsVal("WW_ZIP_Aufstehen","nextValue","?"))}


frühes Aufstehen für Person2

defmod WW_ZIP_Person2 WeekdayTimer Heizung de 23456|05:25|on 23456|05:40|off 23456|05:50|on 23456|06:10|off {if(ReadingsVal("Person2", "state", "") eq "present") {fhem("set $NAME hotWaterCircPumpDeaerate $EVENT")}}
attr WW_ZIP_Person2 commandTemplate set $NAME  $EVENT
attr WW_ZIP_Person2 disable 0
attr WW_ZIP_Person2 room Heizung
attr WW_ZIP_Person2 stateFormat {sprintf("geplant: %s %s", ReadingsVal("WW_ZIP_Person2","nextUpdate","?"), ReadingsVal("WW_ZIP_Person2","nextValue","?"))}


und hier noch der Adend für beide

defmod WW_ZIP_beide WeekdayTimer Heizung de 0123456|18:00|on 0123456|18:15|off 0123456|18:30|on 0123456|18:45|off 0123456|22:30|on 0123456|23:00|off {if(ReadingsVal("Person1", "state", "") eq "present" || ReadingsVal("Person2", "state", "") eq "present") {fhem("set $NAME hotWaterCircPumpDeaerate $EVENT")}}
attr WW_ZIP_beide commandTemplate set $NAME  $EVENT
attr WW_ZIP_beide disable 0
attr WW_ZIP_beide room Heizung
attr WW_ZIP_beide stateFormat {sprintf("geplant: %s %s", ReadingsVal("WW_ZIP_beide","nextUpdate","?"), ReadingsVal("WW_ZIP_beide","nextValue","?"))}


Bei Abwesenheit würde es dann jetzt garnicht mehr zirkulieren.

An dieser Stelle wollte ich dann  noch das YAAHM mit profilen für einzelne Personen und Besucher einsetzen, jedoch fehlte mir die Zeit.

defmod Timer YAAHM
attr Timer room ProfileRoom



Auch ROOMMATE wäre noch zu erroieren.
Zitat
     Mögliche Status und ihre Bedeutung

        Dieses Modul unterscheidet 6 verschiedene Status:

            home - Mitbewohner ist zu Hause und wach
            gotosleep - Mitbewohner ist auf dem Weg ins Bett
            asleep - Mitbewohner schläft
            awoken - Mitbewohner ist gerade aufgewacht
            absent - Mitbewohner ist momentan nicht zu Hause, wird aber bald zurück sein
            gone - Mitbewohner ist für längere Zeit verreist

Viele Grüße
    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

tupol

Zitat von: ch.eick am 31 März 2019, 10:53:39
Ich habe die 2.84 , jedoch habe ich den Partymodus noch nicht verwendet.
Welchen Test soll ich für Dich durchlaufen um ein korrektes Ergebnis zu bekommen?

Der Party-Modus erlaubt es in der Sperrzeit die Warmwasseraufbereitung zu starten. In der v1.81 funktioniert das nicht bzw. wird ignoriert. Auch im Webinterface.
FHEM 5.5 auf RPi B Rev.2 (mit LCD4Linux, BMP180 und CUL v3 868.35 MHz), FB7490, Fritz!DECT 200, FS20, FHT80TF-2, S300TH, KS300, Homematic, PRESENCE
Modul-Entwickler von: FRITZBOX, statistics, PROPLANTA, OPENWEATHER, JSONMETER, LUXTRONIK2

ch.eick

#11
Hallo zusammen,

ich habe gerade mal eben den Partymodus direkt an der Luxtronik 2.0 v2.84 ausprobiert.

Auswahl Wasserhahn; Betriebsart; Party

1) Der Pumpenvorlauf wurde für 1Min gestartet
2) Die LWP wurde gestartet
3) FHEM readings
opModeHotWater      Party                         2019-04-05 10:01:56
opStateHeatPump1   Wärmepumpe läuft     2019-04-05 10:01:56
opStateHeatPump2   seit 00:07:29             2019-04-05 10:01:56
opStateHeatPump3   Brauchwasser             2019-04-05 10:01:56
opStateHeating         Normal                     2019-04-05 10:01:56
opStateHotWater      Aufheizen                  2019-04-05 10:01:56

4) Also manuell sieht es gut aus.


Nach einiger Wartezeit habe ich dann

"set Heizung opModeHeating Auto"     abgesetzt, gefolgt mit einiger Verzögerung von
"set Heizung StatusRequest"               und siehe da, es hat tatsächlich funktioniert.

Hiermit kann ich bestätigen, dass die V2.84 jetzt den Party Modus unterstützt und dieser auch über FHEM ansteuerbar ist.

Viele Grüße
      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

westgate

Hallo Leute,

ich habe meine Modifikation des Luxtronik Moduls nun schon länger im Einsatz.
Das Anfordern von Warmwasser funktioniert sehr gut und komfortabel vom Handy aus.
Und das ohne den Kompressor abzuwürgen durch den Entlüftungsmodu.

@Tupol Wollen wir das nicht doch in das Standardmodul einbauen?

Gruß
westgate

tupol

Hallo westgate,
Du überschreibst mit Deinem Vorgehen die Zeitsteuerung der Zirkulationspumpe. Deine Spezialfunktion "hotWaterCircPumpRun" einfach einzubinden, passt nicht zu dem Konzept, dass die Modul möglichst 1:1 die Funktionialitäten der Geräte abbilden sollten. Man bräuchte erstmal set-Befehle und Readings, die die Zeitsteuerung abbilden und im 2 Schritt könnte man diese Befehle entweder direkt im Sinne Deiner Funktion nutzen (wäre was für die Wiki) oder sie über eine "Spezialfunktion" passend kombiniert ansprechen. Letzters muss man dann in der commandref nochmals erläutern.

Wenn Du das umsetzen möchtest, kann ich es gerne testen und einbinden.

Gruß
Tupol
FHEM 5.5 auf RPi B Rev.2 (mit LCD4Linux, BMP180 und CUL v3 868.35 MHz), FB7490, Fritz!DECT 200, FS20, FHT80TF-2, S300TH, KS300, Homematic, PRESENCE
Modul-Entwickler von: FRITZBOX, statistics, PROPLANTA, OPENWEATHER, JSONMETER, LUXTRONIK2

ch.eick

Hallo zusammen
Ich hätte interesse an einer Erweiterung, da ich auch die Entlüftungsfunktion nutze.

Gruß 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

frober

Dito, nur eine Frage:

In wie weit wird hier das EEPROM belastet? 
Ich denke, dass jedes set in der Luxtronik gespeichert wird, oder?
Ich schreibe schon zweimal am Tag die Warmwassersolltemp.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

ch.eick

#16
Zitat von: frober am 07 November 2019, 10:10:53
Dito, nur eine Frage:

In wie weit wird hier das EEPROM belastet? 
Ich denke, dass jedes set in der Luxtronik gespeichert wird, oder?
Ich schreibe schon zweimal am Tag die Warmwassersolltemp.
Hallo frober,

je nach dem was Du mit der Warmwassersolltemperatur machen möchtest kannst Du eventuell den Photovoltaik Modus verwenden.
Der wird über den Schalteingang SWT aktiviert und bewirkt dann eine Überheizung für die Heizung und das Warmwasser.

Bei mir schalte ich mit einem Shelly das 220V Signal (Wie immer vom Fachpersonal anschließen lassen), da man den Port nicht über die API schalten kann.

Gruß
    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

frober

Ich glaube das hast du falsch verstanden.
Ich benutze die Solltemperatur schon, um das Wasser nur Tagsüber um 14Uhr aufzuheizen (wie Bsp. aus Wiki).

Wenn ich jetzt noch zusätzlich die Zirkulationspumpe über das setzen der Zeit steuere habe ich mehrere Schreibbefehle am Tag aufs EEPROM!?
Meine Befürchtung ist halt, dass ich dadurch vorzeit einen Defekt hervorrufe.

Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

ch.eick

Zitat von: frober am 07 November 2019, 20:00:51
Ich glaube das hast du falsch verstanden.
Ich benutze die Solltemperatur schon, um das Wasser nur Tagsüber um 14Uhr aufzuheizen (wie Bsp. aus Wiki).

Wenn ich jetzt noch zusätzlich die Zirkulationspumpe über das setzen der Zeit steuere habe ich mehrere Schreibbefehle am Tag aufs EEPROM!?
Meine Befürchtung ist halt, dass ich dadurch vorzeit einen Defekt hervorrufe.
Das hatte ich schon verstanden, jedoch noch um eine Idee erweiter :-)

Das mit dem EEProm hatte ich noch nicht berücksichtigt. Wird darin nicht auch das Log geschrieben und hat das nicht viel mehr Schreibzyklen?

Ich habe die WW Solltemperatur fest eingestellt und steuere über die Sperrzeit. Somit wird bei mir auch immer erst um 14:00 Uhr WW gemacht.
Den SWTin Eingang habe ich mit der PV-Anlage gekoppelt und überheize dann bei Eigenstromüberschuss mit dem PV-Modus.
Wenn es bis 14:00 Uhr noch nicht die Solltemperatus hat kommt dann das Sperrzeit Ende.

Somit finden auch keine zusätzlichen EEProm Beschreibungen statt, was die eigentliche Frage war.
Jedoch hilft das nicht bei der Zirkulationspumpe.

Gruß
   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

frober

Danke für die RM. :-)
Das Log, wird mWn nur im Installateurmodus und auf USB-Stick geschrieben. Fehlermeldungen, soweit vorhanden gehen ins EEProm. Ansonsten ka.

Mit dem SWTin kann ich also die Solltemp überheizen!?
Das muss ich mir genauer anschauen.

Mir hat die Hysterese für 24h nicht gereicht. Daher die Tempänderung.

Die Diskussionen bezgl. EEPRom gehen von 10t-100t Schreibzyklen aus.
Bei 100t mache ich mir keine Gedanken, 10t sind in einigen Jahren erreicht.

Gruß Bernd
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

ch.eick

Hallo Bernd
Zitat von: frober am 10 November 2019, 16:46:06
Mit dem SWTin kann ich also die Solltemp überheizen!?
Das muss ich mir genauer anschauen.
Beim PV-Modus wird die Warmwassersolltemperatur einmalig auf 74° gestellt, was natürlich niemals erreicht werden kann. Dann wird ein Maximalwert ermittelt, den die Anlagenkonfiguration erreichen kann. Dieser Maximalwert wird im Anschluss als Warmwassersolltemperatur eingetragen, wenn an SWTin ein Signal der PV-Anlage anliegt. So habe ich es zumindest verstanden.
Der Heizungsbereich im Pufferspeicher wird ebenfalls auf eine höhere Temperatur angehoben, damit nach Möglichkeit weniger Heizzyklen benötigt werden.

Ich befinde mich jedoch auch noch in der Testphase, da bisher ein Problem mit dem Volumenstrom bestanden hat.

Viele Grüße
    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

frober

Danke nochmals, ich wollte aber den Thread nicht kapern. Ist gerade OT.

@westgade: Ich würde deine Funktion gerne nutzen, schön wäre es als offiziellen Bestandteil. So weit schon mal danke für deine Arbeit.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

ch.eick

Hallo westgate,

vielen Dank für Deine Modifikation und Dein unermütliches Forschen mit der Luxtronik :-)

Ich betreibe eine Novelan LAD9 mit Luxtronik v2.84 und kann bisher keine Probleme Feststellen.

Seit gerade ist dann nun Deine Modifikation mit der Zirkulation dazu gekommen, die ich wie folgt in Fhem noch definiert habe.
Maßgeblich habe ich noch eine Statusabfrage ergänzt, um die Einschaltung auch aktuell zu sehen. Über das Heizungsdevice wird die Zirkulation auch ins Log geschrieben,
was nun weitaus aktueller ist.

Internals:
   CFGFN     
   DEF        Zirkulation:.* { fhem "set Heizung hotWaterCircPumpRun $EVENT ; set Heizung statusRequest" }
   FUUID      5dcd6f6b-f33f-81e9-8191-823ef4b24624c115
   NAME       n_Zirkulation
   NOTIFYDEV  Zirkulation
   NR         21397
   NTFY_ORDER 50-n_Zirkulation
   REGEXP     Zirkulation:.*
   STATE      2019-11-14 17:34:04
   TRIGGERTIME 1573749244.07797
   TYPE       notify
   READINGS:
     2019-11-14 17:27:09   state           active
Attributes:
   group      Heizung
   icon       file_manpage
   room       Heizung->System
   sortby     03
   verbose    0


Den Schalter/Timer habe ich so übernommen

Internals:
   BTN        77
   CFGFN     
   DEF        7777 77
   FUUID      5dcd6c5a-f33f-81e9-218d-e160536d9195c833
   IODev      CUN1
   NAME       Zirkulation
   NR         21317
   STATE      off
   TYPE       FS20
   XMIT       7777
   CODE:
     1          7777 77
   READINGS:
     2019-11-14 17:34:04   state           off
Attributes:
   IODev      CUN1
   dummy      1
   eventMap   /on-for-timer 300:on/off:off/
   follow-on-for-timer 1
   group      Heizung
   icon       time_timer
   room       Heizung->System
   sortby     02
   webCmd     on:off


Über den WeekdayTimer habe ich das ganze dann noch mit presence gekoppelt. Vorher hatte ich hier noch die "off" Zeiten mit drin, die ich nun duch das on-for-time einspare.

defmod WW_ZIP_Ina WeekdayTimer Heizung de 23456|05:25|on 23456|05:55|on {if(ReadingsVal("presence_Ina", "state", "") eq "present") {fhem("set $NAME hotWaterCircPumpRun $EVENT")}}
attr WW_ZIP_Ina alias WW_ZIP_Ina
attr WW_ZIP_Ina commandTemplate set $NAME  $EVENT
attr WW_ZIP_Ina disable 0
attr WW_ZIP_Ina group Heizung
attr WW_ZIP_Ina room Heizung->System
attr WW_ZIP_Ina sortby 05
attr WW_ZIP_Ina stateFormat {sprintf("geplant: %s %s", ReadingsVal("WW_ZIP_Ina","nextUpdate","?"), ReadingsVal("WW_ZIP_Ina","nextValue","?"))}



Viele Grüße
     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

westgate

Oh ich war wohl schon lange nicht mehr hier.

Wie schon gesagt ist die Funktion für mich sehr nützlich.
Und wie es aussieht bin ich da ja nicht der einzige.

Das Luxtronik2.pm mit meiner kleinen Änderung auszustatten ging noch ganz gut.
Das ganz in ne set Funktion zu packen fällt mir bissl schwer. Der Aufbau von FHEM und den ganzen Modulen ist für mich nur schwer zu verstehen.
Falls jemand da fit ist kann ich aber gerne Testen.

@Tupol die "alten" Einstellungen der Zirkulationszeiten kann man ja zwischenspeicher und im Nachhinein wieder rein schreiben.

@frober Über die Sache mit den Schreibzyklen des EEProms habe ich auch schon nachgedacht.
Die Log wird wohl darin geschrieben. Beim Einstecken des USB Sticks hat man ja die alten Daten der Anlage. Das dürfte gar nicht so wenig sein. Das ist auf jedenfall nach einam Stromausfall noch da.
Oder sind da vielleicht andere Bauteile dafür verbaut?

frober



Zitat von: westgate am 27 Mai 2020, 14:45:38

@frober Über die Sache mit den Schreibzyklen des EEProms habe ich auch schon nachgedacht.
Die Log wird wohl darin geschrieben. Beim Einstecken des USB Sticks hat man ja die alten Daten der Anlage. Das dürfte gar nicht so wenig sein. Das ist auf jedenfall nach einam Stromausfall noch da.
Oder sind da vielleicht andere Bauteile dafür verbaut?

Soweit ich weiß, wird das Log NUR auf den USB-Stick geschrieben. Es gibt kein "Dauerlog"!

D.h. Stick rein, Log aktivieren, warten so lange man möchte, dann den Wartezeitraum auswerten...

Zu den Schreibzyklen:
Wenn ich es richtig verstanden habe, liegt der Flashspeicher bei ca. 10t und das Eeprom bei ca. 100t.

Normalerweise wird die Konfig. Im Eeprom gespeichert, sollte also kein Problem sein.

Bitte korrigiert mich, wenn es jemand besser weiß[emoji3166]

Grüße Bernd
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

westgate

Eine Log der Betriebszuständige wird in der Luxtronik gespeichert.
Diese kann man dann mit dem USB Stick auslesen.
Das habe ich schon einmal gemacht um die Wärmepumpe zu optimieren.

ch.eick

#26
Es gibt auch ein dtalog lese Programm fuer Windows, das liest jeweils den letzten Tag.
Auf dem USB Dump hatte ich immer die letzten zweite Tage.
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

frober

Hallo zusammen,

erstmal Danke an westgate für die Mühe und Bereitstellung der Funktion.
Endlich bin ich dazu gekommen das umzusetzen, nach dem 3. Anlauf hat es dann funktioniert.

1. Anlauf:
Zitatmy $list = "statusRequest:noArg"
          ." activeTariff:0,1,2,3,4,5,6,7,8,9"
          ." boostHotWater"
          ." heatingCurveEndPoint"
          ." heatingCurveOffset"
          ." heatingSystemCircPumpDeaerate:on,off"
          ." heatSourceDefrostAirEnd"
          ." heatSourceDefrostAirThreshold"
          ." hotWaterCircPumpDeaerate:on,off"
          ." hotWaterTemperatureTarget "
          ." resetStatistics:all,statBoilerGradientCoolDownMin,statAmbientTemp...,statElectricity...,statHours...,statHeatQ..."
          ." returnTemperatureHyst "
          ." returnTemperatureSetBack "
          ." opModeHotWater:Auto,Party,Off"
          ." synchronizeClockHeatPump:noArg"
          ." INTERVAL ";  <- Semikolon übersehen
          ." hotWaterCircPumpRun:on,off";

Ich habe das Semikolon übersehen, das muss entfernt werden, sonst gibt es einen Syntax-Error.  ::)

2.Anlauf:
set Heizung hotWaterCircPumpRun on
Keine Fehlermeldungen, Pumpe läuft aber nicht.
Einstellungen der Luxtronik kontrolliert, scheinbar unverändert. Bei genaueren hinsehen habe ich erkannt, dass die Werte richtig gesetzt wurden.

Das Problem war, dass ich die Zirkulationszeiten in der Luxtronik auf "Tage (Mo,Di...)" gestellt habe und das wird mit dem Code nicht korrigiert. Nachdem ich auf "Woche(Mo-So) gestellt habe hat es dann funktioniert.

Anhand der Raw-Daten vor und nach Änderungen habe ich erkannt, dass man eigentlich noch die 506 setzen müsste.

Vor Änderung:
506 Einst_SuZIP_akt : 2
Nach Änderung:
506 Einst_SuZIP_akt : 0

Wenn ich keinen Denkfehler habe, müsste die Zuordnung so lauten:

Woche(Mo-SO)     = 0
5+2(Mo-Fr,Sa-So) = 1
Tage(Mo,Di...)       = 2

Evtl. könnten wir dies nutzen, um die Funktion doch noch offiziell einzuchecken!?

Grüsse Bernd
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

ch.eick

Moin,
da ich auf Defaults stehe habe ich das noch garnicht bemerkt. Ich würde mich aber freuen, wenn das korrigiert würde.
Könnte man nicht einfach beider Versionen im Repository einchecken, dann hätte der Endanwender die Auswahl?
Oder noch besser, mit einem Attribut, dann hätte man nur eine Code Base :-)
Gruß
    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

frober

Die Anpassung müsste aber westgate im ersten Beitrag vornehmen.

Meine erste Idee war, die Zeitvariante umzuschalten, dann könnte man die Konfiguration in der Luxtronik mitbenutzen. Leider werden _alle_ Zeiten überschrieben.

Die Idee mit dem Attribut finde ich gut, dann könnte man bei setzen darauf hinweisen.

Mal schauen, ob tupol hier noch mitliest...
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

ch.eick

Zitat von: frober am 08 Dezember 2020, 15:15:39
Leider werden _alle_ Zeiten überschrieben.
Das war, wenn ich mich recht erinnere auch der Grund es nicht mit einzubauen.

Hast Du auch mal den Code Part, der mit rein soll?
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

frober

Ok, hier die Änderungen:

ab Zeile 312
Zitat# Warmwasser Zirkulation
   elsif( int(@_)==4 && ( $cmd eq 'hotWaterCircPumpRun' ) ) {
        Log3 $name, 3, "set $name $cmd $val";
        $hash->{LOCAL} = 1;
        if( $val eq "on" ) {
         $resultStr = LUXTRONIK2_SetParameter ($hash, "zirkulation506", $val);
         $resultStr = LUXTRONIK2_SetParameter ($hash, "zirkulation507", $val);
         $resultStr = LUXTRONIK2_SetParameter ($hash, "zirkulation508", $val);
         $resultStr = LUXTRONIK2_SetParameter ($hash, "zirkulation697", $val);
         $resultStr = LUXTRONIK2_SetParameter ($hash, "zirkulation698", $val);
        }
        elsif( $val eq "off" ) {
         $resultStr = LUXTRONIK2_SetParameter ($hash, "zirkulation507", $val);
         $resultStr = LUXTRONIK2_SetParameter ($hash, "zirkulation508", $val);         
        }
      else{
         $resultStr = "$name Error: Wrong parameter given - use on,off";
      }
        $hash->{LOCAL} = 0;
        return $resultStr;
   }

ab Zeile 1525
Zitat#Zirkulation
  elsif ($parameterName eq "zirkulation506") {
      $setParameter = 506; #Umschalten auf Woche(Mo-So)
      $setValue = '0';
   }

   elsif ($parameterName eq "zirkulation507") {
      $setParameter = 507; #Einschaltzeit
      $setValue = $realValue eq "on" ? '60' : '0';
   }
   elsif ($parameterName eq "zirkulation508") {
      $setParameter = 508; #Ausschaltzeit
      $setValue = '0';
   }
   elsif ($parameterName eq "zirkulation697") {
      $setParameter = 697; #Laufzeit Ein
      $setValue = '1';
   }
   elsif ($parameterName eq "zirkulation698") {
      $setParameter = 698; #Laufzeit Aus
      $setValue = '0';
   }

Den Code habe ich gerade angepasst und kurz getestet.

Bezgl. des Attributs bräuchte ich Zeit, so etwas habe ich noch nicht gemacht. Diese Anpassung war wie bei westgate c&p.

P.S. ich habe nur die wesentlichen Zeilen bei mir eingebaut (zirkulatio507 + 508), der Rest verändert sich ja normalerweise nicht mehr.

Grüsse
Bernd
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

Was mir noch aufgefallen ist, die Parameternamen erscheinen als Reading.
Nicht tragisch, aber unschön da nicht aussagekräftig und eigentlich nicht nötig.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

ch.eick

Zitat von: frober am 09 Dezember 2020, 15:02:37
Was mir noch aufgefallen ist, die Parameternamen erscheinen als Reading.
Nicht tragisch, aber unschön da nicht aussagekräftig und eigentlich nicht nötig.
Du kannst sie ja schön formatiert als stateFormat anzeigen, wenn es aber einmal läuft schaut man eh nicht mehr hin :-)
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

frober

Zitat von: ch.eick am 09 Dezember 2020, 15:37:42
Du kannst sie ja schön formatiert als stateFormat anzeigen, wenn es aber einmal läuft schaut man eh nicht mehr hin :-)
Ich brauche diese Readings nicht ;)
War nur eine Anmerkung, falls es doch Mal eingecheckt wird.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

ch.eick

Zitat von: frober am 09 Dezember 2020, 17:41:00
Ich brauche diese Readings nicht ;)
War nur eine Anmerkung, falls es doch Mal eingecheckt wird.
Aber wenn sie verwendet werden, dann sind sie halt auch sichtbar. Beim initialen device Anlegen werden sie nicht abgefragt und auch nicht angezeigt.
Also ist alles so wie es sein soll.
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

westgate

Hallo frober und ch.eick,

ich glaube ihr habt das Problem wirklich gelöst. Ich hatte halt nie etwas anderes als Woche(Mo-SO) genutzt. Deshalb bin ich gar nicht auf diese Idee gekommen.

@Tupol    Jetzt könnte man die Funktion wirklich einbauen!

Der Paramter "506 Einst_SuZIP_akt" wählt in der Tat aus welche Zeittabelle genutzt wird:
Woche(Mo-SO)     = 0
5+2(Mo-Fr,Sa-So) = 1
Tage(Mo,Di...)       = 2

Mann sollte als bei Einschalten 506 Einst_SuZIP_akt : 0 setzen.
Dann könnte man bei Ausschalten aber z.B. auf 506 Einst_SuZIP_akt : 2 wechseln so wären wieder die Tagesgenauen Einstellungen aktiv.

Ich werde mal die erste Seite so aktualisieren.

Gruß Westgate

westgate

Beitrag ist aktualisiert.
Bitte lest mal quer ob alles so stimmt.

frober

#38
Zitat von: westgate am 09 Dezember 2020, 20:11:56

Dann könnte man bei Ausschalten aber z.B. auf 506 Einst_SuZIP_akt : 2 wechseln so wären wieder die Tagesgenauen Einstellungen aktiv.

Das war auch mein Gedanke/ Hoffnung. Die Daten werde jedoch komplett (zumindest war das bei mir so) überschrieben.
Ich habe die Zeitvariablen nicht gezählt, vermute aber dass die Variablen mehrfach für die 3 Zeittabellen verwendet werden.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

ch.eick

Zitat von: frober am 09 Dezember 2020, 20:53:18
Das war auch mein Gedanke/ Hoffnung. Die Daten werde jedoch komplett (zumindest war das bei mir so) überschrieben.
Ich habe die Zeitvariablen nicht gezählt, vermute aber dass die Variablen mehrfach für die 3 Zeittabellen verwendet werden.
Wie wäre den der default? Bei mir hatte ich da nie etwas eingetragen.
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

frober

Zitat von: westgate am 09 Dezember 2020, 20:32:11
Beitrag ist aktualisiert.
Bitte lest mal quer ob alles so stimmt.
Vom Code her passt es, danke für die Aktualisierung.
Bzgl. der Zeittabellen müsste ich nochmals testen...

Eine weitere Anmerkung: Ein FS20-Dummy ist nicht mehr nötig. Ein normaler Dummy mit useSetExtensions funktioniert auch.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

Zitat von: ch.eick am 09 Dezember 2020, 21:04:07
Wie wäre den der default? Bei mir hatte ich da nie etwas eingetragen.
Kann ich nicht mehr sagen, ich vermute das per Default Woche von 00:00 - 23:59 gesetzt ist. Als Dauerlauf, Taktung war, glaube ich 5:15.

Zum Testen unter Tage einfach eine Zeit eintragen und Pumpe über Fehm starten. Wenn die eingetragen Zeiten noch vorhanden sind währe es toll.
Ich teste Morgen auch nochmal...
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

#42
Ich habe es noch einmal getestet, die Zeiten bleiben doch erhalten.
Da muss beim ersten Mal etwas schief gegangen sein.

Die Variablen werden auch nicht doppelt benutzt, habe sie gezählt...

Grüße Bernd
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

Manos

#43
Hallo Westgate,
vielen Dank fuer die ausfuehrliche Dokumentation.

ich habe folgendes festgestellt zu deiner Erklaerung
ZitatWie könnte man also Zirkulation realisieren?
Die Luxtronik (Bedienteil) bietet die Möglichkeit unter Warmwasser -> Pflegeprogramm -> Zirkulation feste Zeiten für die Warmwasser Zirkulation einzustellen.
Unter Schaltuhren hat man verschieden Möglichkeiten diese Zirkulationszeiten einzustellen.
Wichtig hierbei man stellt nicht die Zirkulationszeiten, sondern die Sperrzeiten ein.
Das heißt ein Wert von 08:00 - 22:00 sperrt zwischen 8:00 und 22:00 die Zirkulation. Will ich von 8:00 bis 22:00 Zirkulation muss ich es genau anders herum eintragen 22:00 - 8:00.

Laut mein Handbuch Version 83055200dDE – Originalbetriebsanleitung (2.0 / 2.1)
Warmwasser Schaltzeiten: "die Zeiträume, die Sie im Bereich ,,Schaltzeiten Trinkwarmwasserbereitung" festlegen, Sperrzeiten sind" (Seite 23)
aber
Warmwasser Pflegeprogramm -> Zirkulation: "In den Schaltzeiten geben Sie die Zeiten ein, in denen die Zirkulationspumpe laufen sol" (Seite 24)

Warum sie das so "verkehrt" programmiert haben, entzieht meine Logik, wie auch immer, die "Learning Curve" ist ziemlich steil - ein Mal kalt geduscht, das vergiss man schnell nicht  :P

schoene Gruesse
Manos
HP Microserver GEN8 XEON, Ubuntu 22.04, FHEM, ConBee II, CCU2, CUL433, Tradfri, Luxtronik2, Volkszaehler (und wenig Ahnung...)