Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L

Begonnen von FhemPiUser, 31 Oktober 2023, 15:44:07

Vorheriges Thema - Nächstes Thema

ringidigiding

hier noch die gekürzte Definition meines Lambda Modbus Objektes in fhem. Hat in den ersten Post nicht mehr reingepasst
define Lambda ModbusAttr 42 15 192.168.3.125:502 TCP
attr Lambda DbLogInclude GeneralAmbient-Status,GeneralAmbient-FehlerCode,\
GeneralEManager-Status,GeneralEManager-FehlerCode,GeneralEManager-ActualPower,GeneralEManager-ActualPowerConsumption,\
HeatPump-Status,HeatPump-FehlerStatus,HeatPump-COP,HeatPump-CompressorRating,HeatPump-FIPowerConsumption,HeatPump-QpHeating,HeatPump-TEQIn,HeatPump-TEQOut,HeatPump-TFlow,HeatPump-TReturn,HeatPump-VolumeSink,HeatPump-VolumeSource,\
Boiler-Status,Boiler-Fehlercode,Boiler-Temperatur,\
Heizkreis1-FlowLineTemperatur,\
Heizkreis2-FlowLineTemperatur,\
Puffer-FehlerNummer,Puffer-ActualHighTemperature
attr Lambda dev-h-defPoll 1
attr Lambda dev-timing-commDelay 0.2
attr Lambda dev-timing-sendDelay 0.2
attr Lambda disable 0
attr Lambda enableControlSet 1
attr Lambda event-on-change-reading .*
attr Lambda icon sani_heating_heatpump
attr Lambda obj-h00000-map 0:kein Fehler
attr Lambda obj-h00000-reading GeneralAmbient-FehlerCode
attr Lambda obj-h00001-map 0:aus, 1:Automatik, 2:manuell, 3:Fehler
attr Lambda obj-h00001-reading GeneralAmbient-Status
attr Lambda obj-h00002-expr $val / 10
attr Lambda obj-h00002-format %.1f °C
attr Lambda obj-h00002-reading GeneralAmbient-ActualAmbientTemp
attr Lambda obj-h00003-expr $val / 10
attr Lambda obj-h00003-format %.1f °C
attr Lambda obj-h00003-reading GeneralAmbient-AverageAmbientTemp
attr Lambda obj-h00004-expr $val / 10
attr Lambda obj-h00004-format %.1f °C
attr Lambda obj-h00004-reading GeneralAmbient-CalculatedAmbientTemp
attr Lambda obj-h00100-map 0:NONE, 1:MESSAGE, 2:WARNING, 3:ALARM, 4:FAULT
attr Lambda obj-h00100-reading GeneralEManager-FehlerCode
attr Lambda obj-h00101-map 0:aus, 1:Automatik, 2:manuell, 3:Fehler, 4:offline
attr Lambda obj-h00101-reading GeneralEManager-Status
attr Lambda obj-h00102-format %d W
attr Lambda obj-h00102-reading GeneralEManager-ActualPower
attr Lambda obj-h00103-format %d W
attr Lambda obj-h00103-reading GeneralEManager-ActualPowerConsumption
attr Lambda obj-h00104-format %d W
attr Lambda obj-h00104-reading GeneralEManager-PowerConsumptionSetpoint
attr Lambda obj-h01000-map 0:NONE, 1:MESSAGE, 2:WARNING, 3:ALARM, 4:FAULT
attr Lambda obj-h01000-reading HeatPump-FehlerStatus
attr Lambda obj-h01001-reading HeatPump-FehlerNummer
attr Lambda obj-h01002-map 0:INIT, 1:REFERENCE, 2:Sperrzeit, 3:betriebsbereit, 4:START PUMPS, 5:START COMPRESSOR, 6:Vor-Regelbetrieb, 7:Regelbetrieb, 8:Not Used, 9:COOLING, 10:DEFROSTING, 20:Stop, 30:FAULT-LOCK, 31:ALARM-BLOCK, 40:ERROR-RESET
attr Lambda obj-h01002-reading HeatPump-Status
attr Lambda obj-h01003-map 0:STBY, 1:Heizen, 2:Brauchwasser, 3:CC, 4:CIRCULATE, 5:DEFROST, 6:OFF, 7:FROST, 8:STBY-FROST, 9:Not used, 10:SUMMER, 11:HOLIDAY, 12:ERROR, 13:WARNING, 14:INFO-MESSAGE, 15:TIME-BLOCK, 16:RELEASE-BLOCK, 17:MINTEMP-BLOCK, 18:FIRMWARE-DOWNLOAD
attr Lambda obj-h01003-reading HeatPump-OperatingStatus
attr Lambda obj-h01004-expr $val / 100
attr Lambda obj-h01004-format %.1f °C
attr Lambda obj-h01004-reading HeatPump-TFlow
attr Lambda obj-h01005-expr $val / 100
attr Lambda obj-h01005-format %.1f °C
attr Lambda obj-h01005-reading HeatPump-TReturn
attr Lambda obj-h01006-expr $val / 100
attr Lambda obj-h01006-format %.1f [l/min]
attr Lambda obj-h01006-reading HeatPump-VolumeSink
attr Lambda obj-h01007-expr $val / 100
attr Lambda obj-h01007-format %.1f °C
attr Lambda obj-h01007-reading HeatPump-TEQIn
attr Lambda obj-h01008-expr $val / 100
attr Lambda obj-h01008-format %.1f °C
attr Lambda obj-h01008-reading HeatPump-TEQOut
attr Lambda obj-h01009-expr $val / 100
attr Lambda obj-h01009-format %.1f [l/min]
attr Lambda obj-h01009-reading HeatPump-VolumeSource
attr Lambda obj-h01010-expr $val / 100
attr Lambda obj-h01010-format %.1f %
attr Lambda obj-h01010-reading HeatPump-CompressorRating
attr Lambda obj-h01011-expr $val / 10
attr Lambda obj-h01011-format %.1f kW
attr Lambda obj-h01011-reading HeatPump-QpHeating
attr Lambda obj-h01012-format %.f W
attr Lambda obj-h01012-reading HeatPump-FIPowerConsumption
attr Lambda obj-h01013-expr $val / 100
attr Lambda obj-h01013-reading HeatPump-COP
attr Lambda obj-h01014-reading HeatPump-h01014
attr Lambda obj-h01015-reading HeatPump-h01015
attr Lambda obj-h01016-reading HeatPump-h01016
attr Lambda obj-h01017-reading HeatPump-h01017
attr Lambda obj-h01018-reading HeatPump-h01018
attr Lambda obj-h01019-reading HeatPump-h01019
attr Lambda obj-h01050-reading HeatPump-SetErrorQuit
attr Lambda obj-h02000-map 0:kein Fehler
attr Lambda obj-h02000-reading Boiler-Fehlercode
attr Lambda obj-h02001-map 0:standby, 1:DHW, 2:Legionellen, 3:Sommer, 4:Frost, 5:Urlaub, 6:prio-Stop 7:Fehler, 8:aus, 9:prompt-DHW, 10:trailing-stop, 11:temp-lock 12:standby-Frost
attr Lambda obj-h02001-reading Boiler-Status
attr Lambda obj-h02002-expr $val / 10
attr Lambda obj-h02002-format %.1f °C
attr Lambda obj-h02002-reading Boiler-Temperatur
attr Lambda obj-h02003-expr $val / 10
attr Lambda obj-h02003-format %.1f °C
attr Lambda obj-h02003-reading Boiler-MinTemperatur
attr Lambda obj-h02050-expr $val / 10
attr Lambda obj-h02050-format %.1f °C
attr Lambda obj-h02050-reading Boiler-MaxTemperatur
attr Lambda obj-h02050-set 1
attr Lambda obj-h02050-setexpr $val * 10
attr Lambda obj-h03000-map 0:No Error
attr Lambda obj-h03000-reading Puffer-FehlerNummer
attr Lambda obj-h03001-map 0:STBY, 1:HEATING, 2:COOLING, 3:SUMMER, 4:FROST, 5:HOLIDAY, 6:PRIO-STOP, 7:ERROR, 8:OFF, 9:STBY-FROST
attr Lambda obj-h03001-reading Puffer-Status
attr Lambda obj-h03002-expr $val / 10
attr Lambda obj-h03002-format %.1f °C
attr Lambda obj-h03002-reading Puffer-ActualHighTemperature
attr Lambda obj-h03003-expr $val / 10
attr Lambda obj-h03003-format %.1f °C
attr Lambda obj-h03003-reading Puffer-ActualLowTemperature
attr Lambda obj-h03050-expr $val / 10
attr Lambda obj-h03050-format %.1f °C
attr Lambda obj-h03050-reading Puffer-MaxPufferTemperature
attr Lambda obj-h05000-reading Heizkreis1-FehlerNummer
attr Lambda obj-h05001-map 0:HEATING,  1:ECO,  2:COOLING,  3:FLOORDRY,  4:FROST,  5:MAX-TEMP,  6:ERROR,  7:SERVICE,  8:HOLIDAY,  9:CH-SUMMER,  10:CC-WINTER,  11:PRIO-STOP,  12:OFF,  13:RELEASE-OFF,  14:TIME-OFF,  15:STBY,  16:STBY-HEATING,  17:STBY-ECO,  18:STBY-COOLING,  19:STBY-FROST,  20:STBY-FLOORDRY
attr Lambda obj-h05001-reading Heizkreis1-Status
attr Lambda obj-h05002-expr $val / 10
attr Lambda obj-h05002-format %.1f °C
attr Lambda obj-h05002-reading Heizkreis1-FlowLineTemperatur
attr Lambda obj-h05003-expr $val / 10
attr Lambda obj-h05003-format %.1f °C
attr Lambda obj-h05003-reading Heizkreis1-ReturnLineTemperatur
attr Lambda obj-h05004-expr $val / 10
attr Lambda obj-h05004-format %.1f °C
attr Lambda obj-h05004-reading Heizkreis1-RoomDeviceTemperature
attr Lambda obj-h05005-expr $val / 10
attr Lambda obj-h05005-format %.1f °C
attr Lambda obj-h05005-reading Heizkreis1-SetpointFlowLineTemperature
attr Lambda obj-h05006-map 0:OFF(RW),  1:MANUAL(R),  2:AUTOMATIK(RW),  3:AUTO-HEATING(RW),  4:AUTO-COOLING(RW),  5:FROST(RW),  6:SUMMER(RW),  7:FLOOR-DRY(R)
attr Lambda obj-h05006-reading Heizkreis1-OperatingMode
attr Lambda obj-h05050-expr $val / 10
attr Lambda obj-h05050-format %.1f °C
attr Lambda obj-h05050-poll 1
attr Lambda obj-h05050-reading Heizkreis1-FlowLineTemperatureOffset
attr Lambda obj-h05050-set 1
attr Lambda obj-h05050-type S16
attr Lambda obj-h05051-expr $val / 10
attr Lambda obj-h05051-format %.1f °C
attr Lambda obj-h05051-reading Heizkreis1-SetpointRoomHeatingTemperature
attr Lambda obj-h05052-expr $val / 10
attr Lambda obj-h05052-format %.1f °C
attr Lambda obj-h05052-reading Heizkreis1-SetpointRoomCoolingTemperature
attr Lambda obj-h05100-reading Heizkreis2-FehlerNummer
attr Lambda obj-h05101-map 0:HEATING,  1:ECO,  2:COOLING,  3:FLOORDRY,  4:FROST,  5:MAX-TEMP,  6:ERROR,  7:SERVICE,  8:HOLIDAY,  9:CH-SUMMER,  10:CC-WINTER,  11:PRIO-STOP,  12:OFF,  13:RELEASE-OFF,  14:TIME-OFF,  15:STBY,  16:STBY-HEATING,  17:STBY-ECO,  18:STBY-COOLING,  19:STBY-FROST,  20:STBY-FLOORDRY
attr Lambda obj-h05101-reading Heizkreis2-Status
attr Lambda obj-h05102-expr $val / 10
attr Lambda obj-h05102-format %.1f °C
attr Lambda obj-h05102-reading Heizkreis2-FlowLineTemperatur
attr Lambda obj-h05103-expr $val / 10
attr Lambda obj-h05103-format %.1f °C
attr Lambda obj-h05103-reading Heizkreis2-ReturnLineTemperatur
attr Lambda obj-h05104-expr $val / 10
attr Lambda obj-h05104-format %.1f °C
attr Lambda obj-h05104-reading Heizkreis2-RoomDeviceTemperature
attr Lambda obj-h05105-expr $val / 10
attr Lambda obj-h05105-format %.1f °C
attr Lambda obj-h05105-reading Heizkreis2-SetpointFlowLineTemperature
attr Lambda obj-h05106-map 0:OFF(RW),  1:MANUAL(R),  2:AUTOMATIK(RW),  3:AUTO-HEATING(RW),  4:AUTO-COOLING(RW),  5:FROST(RW),  6:SUMMER(RW),  7:FLOOR-DRY(R)
attr Lambda obj-h05106-reading Heizkreis2-OperatingMode
attr Lambda obj-h05150-expr $val / 10
attr Lambda obj-h05150-format %.1f °C
attr Lambda obj-h05150-reading Heizkreis2-FlowLineTemperatureOffset
attr Lambda obj-h05151-expr $val / 10
attr Lambda obj-h05151-format %.1f °C
attr Lambda obj-h05151-reading Heizkreis2-SetpointRoomHeatingTemperature
attr Lambda obj-h05152-expr $val / 10
attr Lambda obj-h05152-format %.1f °C
attr Lambda obj-h05152-reading Heizkreis2-SetpointRoomCoolingTemperature
attr Lambda room Technik->Wärmepumpe
attr Lambda silentReconnect 1
attr Lambda stateFormat { sprintf("OP-Status: %s <br/>Status: %s <br/>Lambda COP: %.2f True COP: %.2f<br/>Wärmeleistung: %.1f kW elektr. Leistung %.0f W", ReadingsVal($name, "HeatPump-OperatingStatus", "-"), ReadingsVal($name, "HeatPump-Status", "-"), ReadingsNum($name, "HeatPump-COP", "0"), ReadingsNum($name, "TrueCOP-Now", "0"), ReadingsNum($name, "HeatPump-QpHeating", "0"), ReadingsNum($name, "HeatPump-FIPowerConsumption", "0") ) }
attr Lambda userReadings HeatPump-QEnergy:HeatPump-QpHeating.* integral {ReadingsNum("Lambda","HeatPump-QpHeatingOld",0)/3600},\
EnergieTH-Total:HeatPump-QpHeating.* integral {my $val = ReadingsVal("Lambda","HeatPump-Status","");; if ( $val eq "START COMPRESSOR" or $val eq "Vor-Regelbetrieb" or $val eq "Regelbetrieb" ) { return ReadingsNum("Lambda","HeatPump-QpHeatingOld",0)/3600;;} return 0;;},\
\
\
HeatPump-QpHeatingOld:HeatPump-QpHeating.* {my $val = ReadingsNum("Lambda","HeatPump-QpHeating",0);; if ( $val > 20 ) { return 3;;} return $val;;},\
EnergieTH-Today:EnergieTH-Total.* { sprintf("%.1f kWh", ReadingsNum("Lambda","EnergieTH-Total",0) - ReadingsNum("Lambda","EnergieTH-TotalYesterday",0) ) },\
TrueCOP-Now:HeatPump-QpHeating.* { sprintf("%.1f", ReadingsNum($name,"HeatPump-QpHeating",0) / ( ReadingsNum("LEM_Waermepumpe","em_0_total_act_power",-1) / 1000 ) ) },\
TrueCOP-Today:HeatPump-QpHeating.* { sprintf("%.1f", ReadingsNum($name,"EnergieTH-Today",0) / ( ReadingsNum("LEM_Waermepumpe","ENERGY_Today",-1) / 1000 ) ) },\

attr Lambda verbose 1
#  DEF        42 15 192.168.3.125:502 TCP
#  DeviceName 192.168.3.125:502
#  EXPECT    idle
#  FD        4
#  FUUID      64b0b058-f33f-641a-aba6-7781e162f4ff5922
#  FVERSION  98_ModbusAttr.pm:0.277000/2023-06-23
#  IODev      Lambda
#  Interval  15
#  LASTOPEN  1709168437.36007
#  LeadingZeros 1
#  MODBUSID  42
#  MODE      master
#  MODULEVERSION Modbus 4.5.5 - 9.5.2023
#  NAME      Lambda
#  NOTIFYDEV  global
#  NR        1210
#  NTFY_ORDER 50-Lambda
#  PARTIAL   
#  PROTOCOL  TCP
#  STATE      OP-Status: Heizen <br/>Status: Regelbetrieb <br/>Lambda COP: 4.28 True COP: 3.70<br/>Wärmeleistung: 4.7 kW elektr. Leistung 1090 W

# ... truncated to 50k, original length 52948

FhemPiUser

Hast Du mal in der lambda steuerung geschaut, ob die befehle nicht ausgeführt wurden, auch wenn du es in fhem nicht siehst? Das Auslesen per modbus geht bei manchen beschreibbaren registern wie operating mode nicht richtig.

ringidigiding

#17
Ja, hatte ich schon überprüft. Auf der Lambda Seite steht immer noch der alte Wert, der sich nicht verändert hat.
Habe jetzt aber auch noch einmal Deine Defintion mit meiner verglichen, und den Fehler gefunden.
Das Problem saß mal wieder wie üblich auf meiner Seite vor dem Bildschirm. Nachdem ich das Attribut dev-h-write mit dem Wert 16 angelegt hatte, kann ich jetzt auch Werte zurückschreiben.
Jetzt muss ich nur noch herausfinden, warum bei mir einige Parameter immer den Wert 62536 anzeigen.

Gerd

Zitat von: FhemPiUser am 01 März 2024, 19:31:01Hast Du mal in der lambda steuerung geschaut, ob die befehle nicht ausgeführt wurden, auch wenn du es in fhem nicht siehst? Das Auslesen per modbus geht bei manchen beschreibbaren registern wie operating mode nicht richtig.
Moin,
da ich mich auch gerade beschäftige mien neu LambdaEU08 einzubinden, was auch gut funktioniert, mal eine Frage.
Du beschreibst die Register obwohl die nicht richtig auslesbar sind ?

Also bei mir sind es folgende Register die keine plausiblen Werte liefern:
 
Setpoint flow line temp. 5005
Operating mode 5006
T-EQout 1008

Wie schaut es da bei Euch aus ?


FhemPiUser

Ja, ich konnte den mode durch beschreiben ändern auch wenn das auslesen keine plausiblen werte lieferte.

einfach mal schreiben ausprobieren und per vnc schauen, ob sich das in der steuerung ausgewirkt hat

Gerd

ok, das habe ich mal probiert aber wen ich zb. den OP-Mode auf "0" schreibe, verstellt der sich nach irgendeiner Zeit wieder auf "Heizen".
Es läuft dann, leider auch ohne das im Haus Wärme benötigt wird (Heizkörper), die Heizkreispumpe.

Mal sehen wie sich das lösen lässt.

Aber schon mal Danke für den Tip und die "Vorarbeit"

Mathias R

Hallo,
ich beschreibe die Lambda teilweise auch mit mbpoll, Beispiel Register 5050 auf 50 setzen:
mbpoll -0 -r 5050 192.168.x.x 50 230
Bei negativen Werten sind 65536 zu addieren, also -10 ergibt somit -10 + 65536 = 65536.
Das schreiben per mbpoll funktioniert bei mir aber nur, wenn ich gleichzeitig mindestens ein folgendes Register mit beschreibe (oben die 5051 mit 230).
Gruß, Mathias

herbert19

Habe eine neue Lambda EU08L Wärmepumpe und kann die Daten wie hier im Forum beschrieben auslesen.

Ab Januar '25 habe ich einen dynamischen Stromtarif und möchte dann die Wärmepumpe
automatisch aktivieren, wenn der Strom laut Anbieter günstig ist.

Gibt es da Tipps?
Bin leider noch nicht sehr gut im FHEM.

FhemPiUser

#23
Es gibt hier noch  Dokumentation aller Modbus-Register für die Lambda inkl. einiger undokumentierter Register.

Einige davon habe ich mal in ModbusAttr als Attribute eingefügt und poste ich unten, falls jemand Interesse hat. Für mich ist vor allem die Lüfterdrehzahl (EqM-Rating in % bzw. absolut als EqM_Rating) sowie das Setzen der Maximalleistungen interessant.

attr Lambda_EU13L obj-h1025-poll 1
attr Lambda_EU13L obj-h1025-reading Hp_VdA_Rating
attr Lambda_EU13L obj-h1025-type U16
attr Lambda_EU13L obj-h1026-expr $val/100
attr Lambda_EU13L obj-h1026-poll 1
attr Lambda_EU13L obj-h1026-reading Hp_Hot_Gas_Temperature
attr Lambda_EU13L obj-h1026-type U16
attr Lambda_EU13L obj-h1027-expr $val/100
attr Lambda_EU13L obj-h1027-poll 1
attr Lambda_EU13L obj-h1027-reading Hp_Subcooling_Temperature
attr Lambda_EU13L obj-h1027-type U16
attr Lambda_EU13L obj-h1028-expr $val/100
attr Lambda_EU13L obj-h1028-poll 1
attr Lambda_EU13L obj-h1028-reading Hp_Suction_Gas_Temperature
attr Lambda_EU13L obj-h1028-type U16
attr Lambda_EU13L obj-h1029-expr $val/100
attr Lambda_EU13L obj-h1029-poll 1
attr Lambda_EU13L obj-h1029-reading Hp_Condensation_Temperature
attr Lambda_EU13L obj-h1029-type U16
attr Lambda_EU13L obj-h1030-expr $val/100
attr Lambda_EU13L obj-h1030-poll 1
attr Lambda_EU13L obj-h1030-reading Hp_Evaporation_Temperature
attr Lambda_EU13L obj-h1030-type U16
attr Lambda_EU13L obj-h1031-poll 1
attr Lambda_EU13L obj-h1031-reading Hp_EqM_Rating
attr Lambda_EU13L obj-h1031-type U16
attr Lambda_EU13L obj-h1032-poll 1
attr Lambda_EU13L obj-h1032-expr $val/100
attr Lambda_EU13L obj-h1032-reading Hp_Expansion_Valve_Opening_Angle
attr Lambda_EU13L obj-h1032-type U16
attr Lambda_EU13L obj-h1051-poll 1
attr Lambda_EU13L obj-h1051-expr $val/10
attr Lambda_EU13L obj-h1051-setexpr $val*10
attr Lambda_EU13L obj-h1051-reading Hp_DHW_Output_Power_at_15C
attr Lambda_EU13L obj-h1051-set 1
attr Lambda_EU13L obj-h1051-type u16
attr Lambda_EU13L obj-h1052-poll 1
attr Lambda_EU13L obj-h1052-expr $val/10
attr Lambda_EU13L obj-h1052-setexpr $val*10
attr Lambda_EU13L obj-h1052-reading Hp_Heating_Min_Output_Power_at_15C
attr Lambda_EU13L obj-h1052-set 1
attr Lambda_EU13L obj-h1052-type u16
attr Lambda_EU13L obj-h1053-poll 1
attr Lambda_EU13L obj-h1053-expr $val/10
attr Lambda_EU13L obj-h1053-setexpr $val*10
attr Lambda_EU13L obj-h1053-reading Hp_Heating_Max_Output_Power_at_15C
attr Lambda_EU13L obj-h1053-set 1
attr Lambda_EU13L obj-h1053-type u16
attr Lambda_EU13L obj-h1054-poll 1
attr Lambda_EU13L obj-h1054-expr $val/10
attr Lambda_EU13L obj-h1054-setexpr $val*10
attr Lambda_EU13L obj-h1054-reading Hp_Heating_Min_Output_Power_at_0C
attr Lambda_EU13L obj-h1054-set 1
attr Lambda_EU13L obj-h1054-type u16
attr Lambda_EU13L obj-h1055-poll 1
attr Lambda_EU13L obj-h1055-expr $val/10
attr Lambda_EU13L obj-h1055-setexpr $val*10
attr Lambda_EU13L obj-h1055-reading Hp_Heating_Max_Output_Power_at_0C
attr Lambda_EU13L obj-h1055-set 1
attr Lambda_EU13L obj-h1055-type u16
attr Lambda_EU13L obj-h1056-poll 1
attr Lambda_EU13L obj-h1056-expr $val/10
attr Lambda_EU13L obj-h1056-setexpr $val*10
attr Lambda_EU13L obj-h1056-reading Hp_Heating_Min_Output_Power_at_-15C
attr Lambda_EU13L obj-h1056-set 1
attr Lambda_EU13L obj-h1056-type u16
attr Lambda_EU13L obj-h1057-poll 1
attr Lambda_EU13L obj-h1057-expr $val/10
attr Lambda_EU13L obj-h1057-setexpr $val*10
attr Lambda_EU13L obj-h1057-reading Hp_Heating_Max_Output_Power_at_-15C
attr Lambda_EU13L obj-h1057-set 1
attr Lambda_EU13L obj-h1057-type u16
attr Lambda_EU13L userReadings [...], Hp_EqM-Rating:Hp_EqM_Rating.* { return sprintf("%.1f",(ReadingsVal("Lambda_EU13L","Hp_EqM_Rating","0")*100/10000));;;;},Hp_Heating_Max_Output_Power_calculated:General_Ambient_Calculated_ambient_temp.* {
  my $temp = ReadingsVal("Lambda_EU13L","General_Ambient_Calculated_ambient_temp","0");
  my $maxPower = 13;
 
  if ($temp < 0) {
    $maxPower = ReadingsVal("Lambda_EU13L","Hp_Heating_Max_Output_Power_at_0C","10")+((ReadingsVal("Lambda_EU13L","Hp_Heating_Max_Output_Power_at_-15C","13")-ReadingsVal("Lambda_EU13L","Hp_Heating_Max_Output_Power_at_0C","10"))*abs($temp/15));
  } elsif ($temp < 15) {
    $maxPower = ReadingsVal("Lambda_EU13L","Hp_Heating_Max_Output_Power_at_15C","5")+((ReadingsVal("Lambda_EU13L","Hp_Heating_Max_Output_Power_at_0C","10")-ReadingsVal("Lambda_EU13L","Hp_Heating_Max_Output_Power_at_15C","5"))*abs(1-$temp/15));
  } else {
    $maxPower = ReadingsVal("Lambda_EU13L","Hp_Heating_Max_Output_Power_at_15C","5");
  }   
 
  return sprintf("%.1f",$maxPower);
},Hp_Heating_Min_Output_Power_calculated:General_Ambient_Calculated_ambient_temp.* {
  my $temp = ReadingsVal("Lambda_EU13L","General_Ambient_Calculated_ambient_temp","0");
  my $minPower = 1.4;
 
  if ($temp < 0) {
    $minPower = ReadingsVal("Lambda_EU13L","Hp_Heating_Min_Output_Power_at_0C","6")+((ReadingsVal("Lambda_EU13L","Hp_Heating_Min_Output_Power_at_-15C","8")-ReadingsVal("Lambda_EU13L","Hp_Heating_Min_Output_Power_at_0C","6"))*abs($temp/15));
  } elsif ($temp < 15) {
    $minPower = ReadingsVal("Lambda_EU13L","Hp_Heating_Min_Output_Power_at_15C","1.4")+((ReadingsVal("Lambda_EU13L","Hp_Heating_Min_Output_Power_at_0C","6")-ReadingsVal("Lambda_EU13L","Hp_Heating_Min_Output_Power_at_15C","1.4"))*abs(1-$temp/15));
  } else {
    $minPower = ReadingsVal("Lambda_EU13L","Hp_Heating_Min_Output_Power_at_15C","1.4");
  }   
 
  return sprintf("%.1f",$minPower);
}

WW

Zitat von: FhemPiUser am 07 November 2025, 16:48:14...Für mich ist vor allem die Lüfterdrehzahl (EqM-Rating in % bzw. absolut als EqM_Rating) sowie das Setzen der Maximalleistungen interessant.
...

Funktioniert das Setzen der Min- bzw. Maxleistungen für -15°C, 0°C und 15°C auch ohne höhere Benutzerlevel? Die entsprechenden Masken in der Lambda sind ja für die Anwenderlevel gesperrt.

Könntest du bitte die entsprechenden Set-Befehle für die Leistungsbegrenzungs-Register noch mitteilen.

Hast du eine Ahnung, wofür das Register 1014 (Modbus request release password) benötigt wird?

Danke
Willi
FHEM 6.x im Docker-Container (OMV4 auf ASRock J3455-ITX), FHEM 6.0 auf Raspi, Fritzbox 7490, CUL433, CUL868, Jeelink868, SIGNALduino, LaCrosseGateway, Shelly, Sonoff, ESP8266, ESP32, ESP32-Cam, LaCrosse, OneWire, Zigbee (Sonoff, Blitzwolf, IKEA, Lidl), Azzurro-WR/Pylontech-Bat., Lambda-Wärmepumpe

FhemPiUser

#25
Ich habe es gerade getestet: Ich konte die Leistung einfach per Modbus setzen. 

Einfach in der FHEM GUI oben im Dropdown-Menu set-Befehl des Devices "Hp_Heating_Max/Min_Output_Power_at_15/0/-15" auswählen und den Wert dahinter in KW eingeben und set drücken. Oder natürlich "set Lambda_EU13L Hp_Heating_<Max/Min>_Output_Power_at_<15/0/-15> <Wert>"

Das Passwort-Register braucht man dafür nicht und habe ich auch noch nie benutzt.




cwagner

#26
Nach der jüngsten ModBus-Doku vom Juni 2026 habe ich für meine Lambda die Attribute auf Basis der hier geposteten Beispiele (vielen Dank dafür) und auch den hilfreichen Link ins Github überarbeitet. Ich habe 2 Heizkreise HK1 und HK2, daher kommen die entsprechenden Register einmal als 50XX und einmal als 51XX. Auch habe ich eine thermische Solaranlage eingebunden, deren Register mit 4 beginnen. Wo es mir sinnvoll schien oder in der Doku ausdrücklich empfohlen war, habe ich die Register mit dem obj_XXXX-set 1 schreibbar gemacht. Das Ergebnis stelle ich hier zur Diskussion:
attr Lambda closeAfterResponse 0
attr Lambda dev-h combine=40, defPoll=1, read=3, write=16
attr Lambda dev-timing commDelay=0.3, sendDelay=0.3, timeout=15
attr Lambda dev-type-S16 len=1, unpack=s>
attr Lambda dev-type-S32 len=2, revRegs=1, unpack=l>
attr Lambda dev-type-U16 len=1, unpack=S>
attr Lambda dev-type-U32 revRegs=0, unpack=N
attr Lambda event-on-change-reading .*
attr Lambda maxTimeoutsToReconnect 3
attr Lambda nextOpenDelay 10
attr Lambda obj-h0000 Fehlernummer_allgemein, map=0:Kein Fehler, mapDefault=unbekannt, poll=60, type=S16
attr Lambda obj-h0001 Betriebsmodus_allgemein, mapDefault=unknown, poll=60, type=U16
attr Lambda obj-h0001-map 0:Aus, 1:Automatik, 2:Manuell, 3:Störung
attr Lambda obj-h0002 T_Aussen, expr=$val/10, format=%.1f °C, poll=15,  type=S16
attr Lambda obj-h0003 T_Aussen_1h_Mittel, expr=$val/10, format=%.1f °C, poll=15, type=S16
attr Lambda obj-h0004 T_Aussen_berechnet, expr=$val/10, format=%.1f °C, poll=15, type=S16
attr Lambda obj-h0100 Fehlernummer_E-Manager, map=0=Kein Fehler, poll=60, type=S16
attr Lambda obj-h0101 Betriebsmodus_E-Manager, poll=60, type=U16
attr Lambda obj-h0101-map 0:Aus, 1:Automatik, 2:Manuell, 3:Fehler, 4:Offline
attr Lambda obj-h0102 Netzbezug, format=%.0f W, poll=15, set=1, type=S16
attr Lambda obj-h0103 Stromaufnahme, format=%.0f W, poll=60, type=S16
attr Lambda obj-h0104 Aufnahmeleistung_Sollwert, format=%.0f W, poll=60, type=S16
attr Lambda obj-h0200 Display_Seriennummer, poll=3600, type=U32
attr Lambda obj-h0206 Applikation_Softwareversion_1, poll=3600, type=U16
attr Lambda obj-h0207 Applikation_Softwareversion_2, poll=3600, type=U16
attr Lambda obj-h0208 Applikation_Softwareversion_3, poll=3600, type=U16
attr Lambda obj-h0209 Applikation_Softwareversion_4, poll=3600, type=U16
attr Lambda obj-h0210 Applikation_Softwareversion_5, poll=3600, type=U16
attr Lambda obj-h1000 Fehlerzustand_WP, poll=60, type=U16
attr Lambda obj-h1000-map 0:Kein Fehler, 1:Meldung, 2:Warnung, 3:Fehler, 4:Störung
attr Lambda obj-h1001 Fehlernummer_WP, mapDefault=unknown, poll=60, type=S16
attr Lambda obj-h1001-map 0:Initialisierung, 1:Referenzierung, 2:Sperrzeit, 3:Betriebsbereit, 4:Pumpenstart, 5:Verdichterstart, 6:Vorregelbetrieb, 7:Regelbetrieb, 9:Kühlen, 10:Abtauung, 20:Stopp, 30:Störung, 31:Fehler, 40:Fehler-Reset
attr Lambda obj-h1002 Status_WP, poll=60, type=U16
attr Lambda obj-h1002-map 0:Initialisierung,1:Referenzierung,2:Sperrzeit,3:betriebsbereit,4:Pumpenstart,5:Verdichterstart,6:Vorregelbetrieb,7:Regelbetrieb,9:Kühlen,10:Abtauung:20:Stopp,30:Störung,31:Fehler,40:Fehler-Rücksetzung
attr Lambda obj-h1003 Betriebsmodus_WP, mapDefault=unknown, poll=1, type=U16
attr Lambda obj-h1003-map 0:Standby, 1:Heizen, 2:Brauchwasser, 3:Kühlen, 4:Zirkulieren, 5:Abtauung, 6:Aus, 7:Frostschutz, 8:Betriebsbereit Frostschutz, 10:Sommerbetrieb, 11:Ferienbetrieb, 12:Fehler, 13:Warnung, 14:Meldung, 15:Sperrzeit, 16:EVU-Sperre, 17:Temperatursperre, 18:Software-Update
attr Lambda obj-h1004 T_Vorlauf_WP, expr=$val/100, format=%.2f °C, poll=15, type=S16
attr Lambda obj-h1005 T_Ruecklauf_WP, expr=$val/100, format=%.2f °C, poll=15, type=S16
attr Lambda obj-h1006 Volumenstrom_Abgabe_WP, expr=$val/100, format=%.2f l/min, poll=60, type=S16
attr Lambda obj-h1007 T_Luft_Eintritt_WP, expr=$val/100, format=%.2f °C, poll=15, type=S16
attr Lambda obj-h1008 T_Luft_Austritt_WP, expr=$val/100, format=%.2f °C, poll=15, type=S16
attr Lambda obj-h1009 Volumenstrom_Luft_WP, expr=$val/100, format=%.2f l/min, poll=60, type=S16
attr Lambda obj-h1010 Verdichterleistung_WP, expr=$val/100, format=%.2f kW, poll=60, type=U16
attr Lambda obj-h1011 Abgabeleistung_WP, expr=$val/10, format=%.1f kW, poll=60, type=S16
attr Lambda obj-h1012 Stromaufnahme_Frequenzumrichter_WP, format=%.0f W, poll=60, type=S16
attr Lambda obj-h1013 COP, expr=$val/100, format=%.2f, poll=60, type=S16
attr Lambda obj-h1019 Betriebsmodus_E-Heizstab, map=1:Relais EIN, mapDefault=Relais aus, poll=60, type=S16
attr Lambda obj-h1020 Elektrische_Energieaufnahme_gesamt_seit_Reset, format=%.3f kWh, expr=$val/1000, len=2, poll=3600, type=S32>
attr Lambda obj-h1022 Thermische_Energieabgabe_gesamt_seit_Reset, format=%.3f kWhT, expr=$val/1000, len=2, poll=3600, type=S32
attr Lambda obj-h2000 Fehlernummer_Brauchwasser, map=0:Kein Fehler, poll=60, type=S16
attr Lambda obj-h2001 Betriebsmodus_Brauchwasser, mapDefault=unknown, poll=60, type=U16
attr Lambda obj-h2001-map 0:Standby, 1:Heizen, 2:Legionellenprogramm, 3:Sommerbetrieb, 4:Frostschutz, 5:Ferienbetrieb, 6:Betriebspause durch Vorrang, 7:Fehler, 8:Aus, 9:Erzwungene Brauchwasserbereitung, 10:Nachlaufzeit, 11:Temperatursperre, 12:Standby mit Frostschutz
attr Lambda obj-h2002 T_Brauchwasser_oben, expr=$val/10, format=%.1f °C, poll=15, type=S16
attr Lambda obj-h2003 T_Brauchwasser_unten, expr=$val/10, format=%.1f °C, poll=15, type=S16
attr Lambda obj-h2004 T_Zirkulation, expr=$val/10, format=%.1f °C, poll=15, type=S16
attr Lambda obj-h2050 T_Brauchwasser_Soll, expr=$val/10, format=%.1f °C, poll=60, set=1, setexpr=$val*10, type=S16
attr Lambda obj-h3000 Fehlernummer_Puffer, map=0:Kein Fehler, poll=60, type=S16
attr Lambda obj-h3001 Betriebsmodus_Puffer, mapDefault=unknown, poll=60, type=U16
attr Lambda obj-h3001-map 0:Standby, 1:Heizen, 2:Kühlen, 3:Sommerbetrieb, 4:Frostschutz, 5:Ferienbetrieb, 6:Betriebspause durch Vorrang, 7:Fehler, 8:Aus, 9:Standby mit Frostschutz
attr Lambda obj-h3002 T_Puffer_oben, expr=$val/10, format=%.1f °C, poll=15, type=S16
attr Lambda obj-h3003 T_Puffer_unten, expr=$val/10, format=%.1f °C, poll=15, type=S16
attr Lambda obj-h3004 T_Puffer_oben_Soll_Modbus, expr=$val/10, format=%.1f °C, poll=60, set=1, setexpr=$val*10, type=S16
attr Lambda obj-h3005 Anforderungstyp_Puffer, poll=60, type=S16
attr Lambda obj-h3005-map -1:Ungültige Anforderung, 0:Keine Anforderung, 1:Zirkulieren, 2:Heizen, 3:Kühlen
attr Lambda obj-h3006 T_Vorlauf_Puffer_Soll, expr=$val/10, format=%.1f °C, poll=15, type=S16
attr Lambda obj-h3007 T_Ruecklauf_Puffer_Soll, expr=$val/10, format=%.1f °C, poll=15, type=S16
attr Lambda obj-h3008 Anforderung_Puffer_Spreizung, expr=$val/10, format=%.1f °K, poll=60, type=S16
attr Lambda obj-h3009 Abgabeleistung_Puffer_Soll, expr=$val/10, format=%.1f kW, poll=60, type=S16
attr Lambda obj-h3050 T_Puffer_max, expr=$val/10, format=%.1f °C, poll=60, set=1, setexpr=$val*10, type=S16
attr Lambda obj-h4000 Fehlernummer_Solar, map=0:Kein Fehler, poll=60, type=S16
attr Lambda obj-h4001 Betriebsmodus_Solar, poll=60, type=U16
attr Lambda obj-h4001-map 0:Standby, 1:Heizen, 2:Fehler, 3:Aus
attr Lambda obj-h4002 T_Kollektor, expr=$val/10, format=%.1f °C, poll=15, type=S16
attr Lambda obj-h4003 T_Solarspeicher_1, expr=$val/10, format=%.1f °C, poll=15, type=S16
attr Lambda obj-h4004 T_Solarspeicher_2, expr=$val/10, format=%.1f °C, poll=3600, type=S16
attr Lambda obj-h4050 T_max_Solarspeicher, expr=$val/10, format=%.1f °C, poll=3600, set=1, setexpr=$val*10, type=S16
attr Lambda obj-h4051 T_Umschaltung_Speicher2, expr=$val/10, format=%.1f °C, poll=3600, set=1, setexpr=$val*10, type=S16
attr Lambda obj-h5000 Fehlernummer_HK1, map=0:Kein Fehler, poll=60, type=S16
attr Lambda obj-h5001 Betriebsmodus_HK1, mapDefault=unknown, poll=60, type=U16
attr Lambda obj-h5001-map 0:Heizen, 1:Heizen abgesenkt, 2:Kühlen, 3:Estrichausheizprogramm, 4:Frostschutz, 5:Störung Übertemperatur, 6:Fehler, 7:Wartung, 8:Ferienbetrieb, 9:Sommerbetrieb, 10:Winterbetrieb (bei reinem Kühlkreis), 11:Betriebspause durch Vorrang, 12:Aus, 13:Keine Freigabe, 14:Deaktiviert aufgrund Zeitplan, 15:Standby, 16:Standby Heizen, 17:Standby Absenkbetrieb, 18:Standby Kühlbetrieb, 19:Standby Frostschutz, 20:Standby Estrichausheizprogramm
attr Lambda obj-h5002 T_Vorlauf_HK1, expr=$val/10, format=%.1f °C, poll=15, type=S16
attr Lambda obj-h5003 T_Ruecklauf_HK1, expr=$val/10, format=%.1f °C, poll=15, type=S16
attr Lambda obj-h5004 T_Raum_HK1, expr=$val/10, format=%.1f °C, poll=3600, set=1, setexpr=$val*10, type=S16
attr Lambda obj-h5005 T_Vorlauf_Soll_Modbus_HK1, expr=$val/10, format=%.1f °C, poll=15, set=1, setexpr=$val*10, type=S16
attr Lambda obj-h5006 Betriebsmodus_setzen_HK1, mapDefault=unknown, poll=15, set=1, type=S16
attr Lambda obj-h5006-hint 0,2,3,4,5,6
attr Lambda obj-h5007 T_Vorlauf_berechnet_nach_Heizkurve_HK1, expr=$val/10, format=%.1f °C, poll=15, setexpr=$val*10, type=S16
attr Lambda obj-h5050 Offset_zur_Heizkurve_HK1, expr=$val/10, format=%.1f °C, poll=3600, set=1, setexpr=$val*10, type=S16
attr Lambda obj-h5051 T_Raum_Soll_heizen_HK1, expr=$val/10, format=%.1f °C, poll=3600, set=1, setexpr=$val*10, type=S16
attr Lambda obj-h5052 T_Raum_Soll_kuehlen_HK1, expr=$val/10, format=%.1f °C, poll=3600, set=1, setexpr=$val*10, type=S16
attr Lambda obj-h5100 Fehlernummer_HK2, map=0:Kein Fehler, poll=3600, type=S16
attr Lambda obj-h5101 Betriebsmodus_HK2, mapDefault=unknown, poll=60, type=U16
attr Lambda obj-h5101-map 0:Heizen, 1:Heizen abgesenkt, 2:Kühlen, 3:Estrichausheizprogramm, 4:Frostschutz, 5:Störung Übertemperatur, 6:Fehler, 7:Wartung, 8:Ferienbetrieb, 9:Sommerbetrieb, 10:Winterbetrieb (bei reinem Kühlkreis), 11:Betriebspause durch Vorrang, 12:Aus, 13:Keine Freigabe, 14:Deaktiviert aufgrund Zeitplan, 15:Standby, 16:Standby Heizen, 17:Standby Absenkbetrieb, 18:Standby Kühlbetrieb, 19:Standby Frostschutz, 20:Standby Estrichausheizprogramm
attr Lambda obj-h5102 T_Vorlauf_HK2, expr=$val/10, format=%.1f °C, poll=15, type=S16
attr Lambda obj-h5103 T_Ruecklauf_HK2, expr=$val/10, format=%.1f °C, poll=15, type=S16
attr Lambda obj-h5104 T_Raum_HK2, expr=$val/10, format=%.1f °C, poll=3600, set=1, setexpr=$val*10, type=S16
attr Lambda obj-h5105 T_Vorlauf_Soll_Modbus_HK1, expr=$val/10, format=%.1f °C, poll=60, set=1, setexpr=$val*10, type=S16
attr Lambda obj-h5106 Betriebsmodus_setzen_HK2, mapDefault=unknown, poll=60, set=1, type=S16
attr Lambda obj-h5106-hint 0,2,3,4,5,6
attr Lambda obj-h5107 T_Vorlauf_berechnet_nach_Heizkurve_HK2, expr=$val/10, format=%.1f °C, poll=15, setexpr=$val*10, type=S16
attr Lambda obj-h5150 Offset_zur_Heizkurve_HK2, expr=$val/10, format=%.1f °C, poll=3600, set=1, setexpr=$val*10, type=S16
attr Lambda obj-h5151 T_Raum_Soll_heizen_HK2, expr=$val/10, format=%.1f °C, poll=3600, set=1, setexpr=$val*10, type=S16
attr Lambda obj-h5152 T_Raum_Soll_kuehlen_HK2, expr=$val/10, format=%.1f °C, poll=3600, set=1, setexpr=$val*10, type=S16
attr Lambda openTimeout 3
attr Lambda showError 1
attr Lambda silentReconnect 1

Edit 27/28.9.2026: Angleichung von Bezeichnungen und Differenzierung von poll, um das Timing der Lambda-Modusbus-Verbindung besser zu bedienen, Verbesserung Register 1020 und 1022 sowie Entfernung von Dopplungen (dev-timing)

Christian
320 Devices in MariaDB: Lambda WP an Ecolink-Speicher, FBH, Solarthermie, kontroll. Lüftung mit WRG und Erdwärmetauscher
HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM ESP3), MQTT2, Shelly, SMA (eC2, PV, HM, HS)
DOIF (Perl/uiTable), PID20,Micropelt IRTV, SolarForecast auf PI5

WW

Wo finde ich die aktuelle Modbus-Doku von Juni 2026?
FHEM 6.x im Docker-Container (OMV4 auf ASRock J3455-ITX), FHEM 6.0 auf Raspi, Fritzbox 7490, CUL433, CUL868, Jeelink868, SIGNALduino, LaCrosseGateway, Shelly, Sonoff, ESP8266, ESP32, ESP32-Cam, LaCrosse, OneWire, Zigbee (Sonoff, Blitzwolf, IKEA, Lidl), Azzurro-WR/Pylontech-Bat., Lambda-Wärmepumpe

cwagner

Auf der Website von Zewotherm, der deutschen Fertigung von Lambda-Wärmepumpen im Downloadbereich
Christian
320 Devices in MariaDB: Lambda WP an Ecolink-Speicher, FBH, Solarthermie, kontroll. Lüftung mit WRG und Erdwärmetauscher
HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM ESP3), MQTT2, Shelly, SMA (eC2, PV, HM, HS)
DOIF (Perl/uiTable), PID20,Micropelt IRTV, SolarForecast auf PI5

FhemPiUser

Oder auf der Lambda-Seite im Download-Bereich unter Regler (siehe hier)