FHEM Forum

FHEM - Anwendungen => Heizungssteuerung/Raumklima => Thema gestartet von: FhemPiUser am 31 Oktober 2023, 15:44:07

Titel: Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L
Beitrag von: FhemPiUser am 31 Oktober 2023, 15:44:07
Hallo Zusammen,

ich habe meine neue Lambda EU13L-Wärmepumpe (https://lambda-wp.at/luft-waermepumpen/) erfolgreich per Modbus TCP in fhem eingebunden. Falls noch jemand eine Lambda Wärmepumpe hat, stelle ich hier meine ModbusAttr-Definition gemäß Lambda-Modbusprotokoll (https://lambda-wp.at/wp-content/uploads/2022/01/Modbus-Protokoll-und-Beschreibung.pdf) zur Verfügung und freue mich auf einen Erfahrungsaustausch.

defmod Lambda_EU13L ModbusAttr 1 55 192.168.x.x:502 TCP
attr Lambda_EU13L closeAfterResponse 0
attr Lambda_EU13L dev-h-combine 8
attr Lambda_EU13L dev-h-read 3
attr Lambda_EU13L dev-h-write 16
attr Lambda_EU13L dev-timing-timeout 15
attr Lambda_EU13L dev-type-S16-len 1
attr Lambda_EU13L dev-type-S16-unpack s>
attr Lambda_EU13L dev-type-S32-len 2
attr Lambda_EU13L dev-type-S32-revRegs 0
attr Lambda_EU13L dev-type-S32-unpack l>
attr Lambda_EU13L dev-type-SL_R2-len 2
attr Lambda_EU13L dev-type-SL_R2-unpack l
attr Lambda_EU13L dev-type-U16-len 1
attr Lambda_EU13L dev-type-U16-revRegs 0
attr Lambda_EU13L dev-type-U16-unpack S>
attr Lambda_EU13L dev-type-U32-len 2
attr Lambda_EU13L dev-type-U32-revRegs 0
attr Lambda_EU13L dev-type-U32-unpack N
attr Lambda_EU13L dev-type-UL_R2-len 2
attr Lambda_EU13L dev-type-UL_R2-revRegs 1
attr Lambda_EU13L dev-type-UL_R2-unpack N
attr Lambda_EU13L disable 0
attr Lambda_EU13L event-on-change-reading .*
attr Lambda_EU13L nextOpenDelay 5
attr Lambda_EU13L obj-h0000-poll 1
attr Lambda_EU13L obj-h0000-reading General_Ambient_Error_number
attr Lambda_EU13L obj-h0000-type S16
attr Lambda_EU13L obj-h0001-poll 1
attr Lambda_EU13L obj-h0001-reading General_Ambient_Operating_state
attr Lambda_EU13L obj-h0001-type U16
attr Lambda_EU13L obj-h0002-expr $val/10
attr Lambda_EU13L obj-h0002-poll 1
attr Lambda_EU13L obj-h0002-reading General_Ambient_Actual_ambient_temp
attr Lambda_EU13L obj-h0002-type S16
attr Lambda_EU13L obj-h0003-expr $val/10
attr Lambda_EU13L obj-h0003-poll 1
attr Lambda_EU13L obj-h0003-reading General_Ambient_Actual_ambient_temp_1h
attr Lambda_EU13L obj-h0003-type S16
attr Lambda_EU13L obj-h0004-expr $val/10
attr Lambda_EU13L obj-h0004-poll 1
attr Lambda_EU13L obj-h0004-reading General_Ambient_Calculated_ambient_temp
attr Lambda_EU13L obj-h0004-type S16
attr Lambda_EU13L obj-h0100-poll 1
attr Lambda_EU13L obj-h0100-reading General_E-Manager_Error_number
attr Lambda_EU13L obj-h0100-type S16
attr Lambda_EU13L obj-h0101-poll 1
attr Lambda_EU13L obj-h0101-reading General_E-Manager_Operating_state
attr Lambda_EU13L obj-h0101-type U16
attr Lambda_EU13L obj-h0102-poll 1
attr Lambda_EU13L obj-h0102-reading General_E-Manager_Actual_power
attr Lambda_EU13L obj-h0102-set 1
attr Lambda_EU13L obj-h0102-type S16
attr Lambda_EU13L obj-h0103-poll 1
attr Lambda_EU13L obj-h0103-reading General_E-Manager_Actual_power_consumption
attr Lambda_EU13L obj-h0103-type S16
attr Lambda_EU13L obj-h0104-poll 1
attr Lambda_EU13L obj-h0104-reading General_E-Manager_Power_consumption_setpoint
attr Lambda_EU13L obj-h0104-type S16
attr Lambda_EU13L obj-h1000-poll 1
attr Lambda_EU13L obj-h1000-reading Hp_Error_state
attr Lambda_EU13L obj-h1000-type U16
attr Lambda_EU13L obj-h1001-poll 1
attr Lambda_EU13L obj-h1001-reading Hp_Error_number
attr Lambda_EU13L obj-h1001-type S16
attr Lambda_EU13L obj-h1002-poll 1
attr Lambda_EU13L obj-h1002-reading Hp_State
attr Lambda_EU13L obj-h1002-type U16
attr Lambda_EU13L obj-h1003-poll 1
attr Lambda_EU13L obj-h1003-reading Hp_Operating_state
attr Lambda_EU13L obj-h1003-type U16
attr Lambda_EU13L obj-h1004-expr $val/100
attr Lambda_EU13L obj-h1004-poll 1
attr Lambda_EU13L obj-h1004-reading Hp_T-flow
attr Lambda_EU13L obj-h1004-type S16
attr Lambda_EU13L obj-h1005-expr $val/100
attr Lambda_EU13L obj-h1005-poll 1
attr Lambda_EU13L obj-h1005-reading Hp_T-return
attr Lambda_EU13L obj-h1005-type S16
attr Lambda_EU13L obj-h1006-expr $val/100
attr Lambda_EU13L obj-h1006-poll 1
attr Lambda_EU13L obj-h1006-reading Hp_Vol_sink
attr Lambda_EU13L obj-h1006-type S16
attr Lambda_EU13L obj-h1007-expr $val/100
attr Lambda_EU13L obj-h1007-poll 1
attr Lambda_EU13L obj-h1007-reading Hp_T-EQin
attr Lambda_EU13L obj-h1007-type S16
attr Lambda_EU13L obj-h1008-expr $val/100
attr Lambda_EU13L obj-h1008-poll 1
attr Lambda_EU13L obj-h1008-reading Hp_T-EQout
attr Lambda_EU13L obj-h1008-type S16
attr Lambda_EU13L obj-h1009-expr $val/100
attr Lambda_EU13L obj-h1009-poll 1
attr Lambda_EU13L obj-h1009-reading Hp_Vol-source
attr Lambda_EU13L obj-h1009-type S16
attr Lambda_EU13L obj-h1010-expr $val/100
attr Lambda_EU13L obj-h1010-poll 1
attr Lambda_EU13L obj-h1010-reading Hp_Compressor-Rating
attr Lambda_EU13L obj-h1010-type U16
attr Lambda_EU13L obj-h1011-expr $val/10
attr Lambda_EU13L obj-h1011-poll 1
attr Lambda_EU13L obj-h1011-reading Hp_QP_heating
attr Lambda_EU13L obj-h1011-type S16
attr Lambda_EU13L obj-h1012-poll 1
attr Lambda_EU13L obj-h1012-reading Hp_FI_power_consumption
attr Lambda_EU13L obj-h1012-type S16
attr Lambda_EU13L obj-h1013-expr $val/100
attr Lambda_EU13L obj-h1013-poll 1
attr Lambda_EU13L obj-h1013-reading COP
attr Lambda_EU13L obj-h1013-type S16
attr Lambda_EU13L obj-h1014-poll 1
attr Lambda_EU13L obj-h1014-reading Hp_Modbus_request_release_password
attr Lambda_EU13L obj-h1014-set 1
attr Lambda_EU13L obj-h1014-type U16
attr Lambda_EU13L obj-h1015-hint 0,1,2,3,4
attr Lambda_EU13L obj-h1015-poll 1
attr Lambda_EU13L obj-h1015-reading Hp_request_type
attr Lambda_EU13L obj-h1015-set 1
attr Lambda_EU13L obj-h1015-type S16
attr Lambda_EU13L obj-h1016-expr $val/10
attr Lambda_EU13L obj-h1016-poll 1
attr Lambda_EU13L obj-h1016-reading Hp_request_flow_line_temp
attr Lambda_EU13L obj-h1016-set 1
attr Lambda_EU13L obj-h1016-type S16
attr Lambda_EU13L obj-h1017-expr $val/10
attr Lambda_EU13L obj-h1017-poll 1
attr Lambda_EU13L obj-h1017-reading Hp_request_return_line_temp
attr Lambda_EU13L obj-h1017-set 1
attr Lambda_EU13L obj-h1017-type S16
attr Lambda_EU13L obj-h1018-expr $val/10
attr Lambda_EU13L obj-h1018-poll 1
attr Lambda_EU13L obj-h1018-reading Hp_request_heat_sink_temp_diff
attr Lambda_EU13L obj-h1018-set 1
attr Lambda_EU13L obj-h1018-type S16
attr Lambda_EU13L obj-h1019-poll 1
attr Lambda_EU13L obj-h1019-reading Hp_relay_state_for_2nd_heating_stage
attr Lambda_EU13L obj-h1019-type S16
attr Lambda_EU13L obj-h1020-poll 1
attr Lambda_EU13L obj-h1020-reading Hp_Statistics_VdA_E_since_last_reset
attr Lambda_EU13L obj-h1020-type S32
attr Lambda_EU13L obj-h1022-poll 1
attr Lambda_EU13L obj-h1022-reading Hp_Statistics_VdA_Q_since_last_reset
attr Lambda_EU13L obj-h1022-type S32
attr Lambda_EU13L obj-h2000-poll 1
attr Lambda_EU13L obj-h2000-reading Boiler_Error_number
attr Lambda_EU13L obj-h2000-type S16
attr Lambda_EU13L obj-h2001-poll 1
attr Lambda_EU13L obj-h2001-reading Boiler_Operating_state
attr Lambda_EU13L obj-h2001-type U16
attr Lambda_EU13L obj-h2002-expr $val/10
attr Lambda_EU13L obj-h2002-poll 1
attr Lambda_EU13L obj-h2002-reading Boiler_Actual_high_temp
attr Lambda_EU13L obj-h2002-type S16
attr Lambda_EU13L obj-h2003-expr $val/10
attr Lambda_EU13L obj-h2003-poll 1
attr Lambda_EU13L obj-h2003-reading Boiler_Actual_low_temp
attr Lambda_EU13L obj-h2003-type S16
attr Lambda_EU13L obj-h2004-reading Boiler_Maximum_boiler_temp
attr Lambda_EU13L obj-h2050-expr $val/10
attr Lambda_EU13L obj-h2050-poll 1
attr Lambda_EU13L obj-h2050-reading Boiler_Maximum_boiler_temp
attr Lambda_EU13L obj-h2050-set 1
attr Lambda_EU13L obj-h2050-type S16
attr Lambda_EU13L obj-h3000-poll 1
attr Lambda_EU13L obj-h3000-reading Buffer_Error_number
attr Lambda_EU13L obj-h3000-type S16
attr Lambda_EU13L obj-h3001-poll 1
attr Lambda_EU13L obj-h3001-reading Buffer_Operating_state
attr Lambda_EU13L obj-h3001-type U16
attr Lambda_EU13L obj-h3002-expr $val/10
attr Lambda_EU13L obj-h3002-poll 1
attr Lambda_EU13L obj-h3002-reading Buffer_Actual_high_temp
attr Lambda_EU13L obj-h3002-type S16
attr Lambda_EU13L obj-h3003-expr $val/10
attr Lambda_EU13L obj-h3003-poll 1
attr Lambda_EU13L obj-h3003-reading Buffer_Actual_low_temp
attr Lambda_EU13L obj-h3003-type S16
attr Lambda_EU13L obj-h3004-reading Buffer_Maximum_buffer_temp
attr Lambda_EU13L obj-h3050-expr $val/10
attr Lambda_EU13L obj-h3050-poll 1
attr Lambda_EU13L obj-h3050-reading Buffer_Maximum_buffer_temp
attr Lambda_EU13L obj-h3050-set 1
attr Lambda_EU13L obj-h3050-type S16
attr Lambda_EU13L obj-h5000-poll 1
attr Lambda_EU13L obj-h5000-reading Heating_circuit_Error_number
attr Lambda_EU13L obj-h5000-type S16
attr Lambda_EU13L obj-h5001-poll 1
attr Lambda_EU13L obj-h5001-reading Heating_circuit_Operating_state
attr Lambda_EU13L obj-h5001-type U16
attr Lambda_EU13L obj-h5002-expr $val/10
attr Lambda_EU13L obj-h5002-poll 1
attr Lambda_EU13L obj-h5002-reading Heating_circuit_Flow_line_temp
attr Lambda_EU13L obj-h5002-type S16
attr Lambda_EU13L obj-h5003-expr $val/10
attr Lambda_EU13L obj-h5003-poll 1
attr Lambda_EU13L obj-h5003-reading Heating_circuit_Return_line_temp
attr Lambda_EU13L obj-h5003-type S16
attr Lambda_EU13L obj-h5004-expr $val/10
attr Lambda_EU13L obj-h5004-poll 1
attr Lambda_EU13L obj-h5004-reading Heating_circuit_Room_device_temp
attr Lambda_EU13L obj-h5004-set 1
attr Lambda_EU13L obj-h5004-type S16
attr Lambda_EU13L obj-h5005-expr $val/10
attr Lambda_EU13L obj-h5005-poll 1
attr Lambda_EU13L obj-h5005-reading Heating_circuit_Setpoint_flow_line_temp
attr Lambda_EU13L obj-h5005-set 1
attr Lambda_EU13L obj-h5005-type S16
attr Lambda_EU13L obj-h5006-hint 0,1,2,3,4,5,6,7
attr Lambda_EU13L obj-h5006-poll 1
attr Lambda_EU13L obj-h5006-reading Heating_circuit_Operating_mode
attr Lambda_EU13L obj-h5006-set 1
attr Lambda_EU13L obj-h5006-type S16
attr Lambda_EU13L obj-h5050-expr $val/10
attr Lambda_EU13L obj-h5050-poll 1
attr Lambda_EU13L obj-h5050-reading Heating_circuit_Offset_flow_line_temp_setpoint
attr Lambda_EU13L obj-h5050-set 1
attr Lambda_EU13L obj-h5050-type S16
attr Lambda_EU13L obj-h5051-expr $val/10
attr Lambda_EU13L obj-h5051-poll 1
attr Lambda_EU13L obj-h5051-reading Heating_circuit_Setpoint_room_heating_temp
attr Lambda_EU13L obj-h5051-set 1
attr Lambda_EU13L obj-h5051-type S16
attr Lambda_EU13L obj-h5052-expr $val/10
attr Lambda_EU13L obj-h5052-poll 1
attr Lambda_EU13L obj-h5052-reading Heating_circuit_Setpoint_room_cooling_temp
attr Lambda_EU13L obj-h5052-set 1
attr Lambda_EU13L obj-h5052-type S16
attr Lambda_EU13L oldreadings Hp_QP_heating
attr Lambda_EU13L room Lambda
attr Lambda_EU13L showError 1
attr Lambda_EU13L userReadings General_Ambient_Operating_state_text {if (ReadingsVal("Lambda_EU13L","General_Ambient_Operating_state","0") == 0) {return "Off";;} \
elsif (ReadingsVal("Lambda_EU13L","General_Ambient_Operating_state","0") == 1) {return "Automatic";;} \
elsif (ReadingsVal("Lambda_EU13L","General_Ambient_Operating_state","0") == 2) {return "Manual";;} \
elsif (ReadingsVal("Lambda_EU13L","General_Ambient_Operating_state","0") == 3) {return "Error";;} \
else {return "unknown";;}},\
General_E-Manager_Operating_state_text {if (ReadingsVal("Lambda_EU13L","General_E-Manager_Operating_state","0") == 0) {return "Off";;} \
elsif (ReadingsVal("Lambda_EU13L","General_E-Manager_Operating_state","0") == 1) {return "Automatic";;} \
elsif (ReadingsVal("Lambda_EU13L","General_E-Manager_Operating_state","0") == 2) {return "Manual";;} \
elsif (ReadingsVal("Lambda_EU13L","General_E-Manager_Operating_state","0") == 3) {return "Error";;} \
elsif (ReadingsVal("Lambda_EU13L","General_E-Manager_Operating_state","0") == 4) {return "Offline";;} \
else {return "unknown";;}},\
Hp_Error_state_text {if (ReadingsVal("Lambda_EU13L","Hp_Error_state","0") == 0) {return "None";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Error_state","0") == 1) {return "Message";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Error_state","0") == 2) {return "Warning";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Error_state","0") == 3) {return "Alarm";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Error_state","0") == 4) {return "Fault";;} \
else {return "unknown";;}},\
Hp_state_text {if (ReadingsVal("Lambda_EU13L","Hp_state","0") == 0) {return "Init";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_state","0") == 1) {return "Reference";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_state","0") == 2) {return "Restart-Block";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_state","0") == 3) {return "Ready";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_state","0") == 4) {return "Start Pumps";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_state","0") == 5) {return "Start Compressor";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_state","0") == 6) {return "Pre-Regulation";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_state","0") == 7) {return "Regulation";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_state","0") == 8) {return "Not used";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_state","0") == 9) {return "Cooling";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_state","0") == 10) {return "Defrosting";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_state","0") == 20) {return "Stopping";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_state","0") == 30) {return "Fault-Lock";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_state","0") == 31) {return "Alarm-Block";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_state","0") == 40) {return "Error-Reset";;} \
else {return "unknown";;}},\
Hp_Operating_state_text {if (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 0) {return "STDBY";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 1) {return "CH";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 2) {return "DHW";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 3) {return "CC";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 4) {return "Circulate";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 5) {return "Defrost";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 6) {return "Off";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 7) {return "Frost";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 8) {return "STDBY-Frost";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 9) {return "Not used";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 10) {return "Summer";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 11) {return "Holiday";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 12) {return "Error";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 13) {return "Warning";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 14) {return "Info-message";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 15) {return "Time-Block";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 16) {return "Release-Block";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 17) {return "Mintemp-Block";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Operating_state","0") == 18) {return "Firmware-Download";;} \
else {return "unknown";;}},\
Hp_Request_type_text {if (ReadingsVal("Lambda_EU13L","Hp_Request_type","0") == 0) {return "No Request";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Request_type","0") == 1) {return "Flow Pump Circulation";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Request_type","0") == 2) {return "Central Heating";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Request_type","0") == 3) {return "Central Cooling";;} \
elsif (ReadingsVal("Lambda_EU13L","Hp_Request_type","0") == 4) {return "Domestic hot water";;} \
else {return "unknown";;}},\
Boiler_Operating_state_text {if (ReadingsVal("Lambda_EU13L","Boiler_Operating_state","0") == 0) {return "STDBY";;} \
elsif (ReadingsVal("Lambda_EU13L","Boiler_Operating_state","0") == 1) {return "DHW";;} \
elsif (ReadingsVal("Lambda_EU13L","Boiler_Operating_state","0") == 2) {return "Legio";;} \
elsif (ReadingsVal("Lambda_EU13L","Boiler_Operating_state","0") == 3) {return "Summer";;} \
elsif (ReadingsVal("Lambda_EU13L","Boiler_Operating_state","0") == 4) {return "Frost";;} \
elsif (ReadingsVal("Lambda_EU13L","Boiler_Operating_state","0") == 5) {return "Holiday";;} \
elsif (ReadingsVal("Lambda_EU13L","Boiler_Operating_state","0") == 6) {return "Prio-Stop";;} \
elsif (ReadingsVal("Lambda_EU13L","Boiler_Operating_state","0") == 7) {return "Error";;} \
elsif (ReadingsVal("Lambda_EU13L","Boiler_Operating_state","0") == 8) {return "Off";;} \
elsif (ReadingsVal("Lambda_EU13L","Boiler_Operating_state","0") == 9) {return "Prompt-DHW";;} \
elsif (ReadingsVal("Lambda_EU13L","Boiler_Operating_state","0") == 10) {return "Trailing-stop";;} \
elsif (ReadingsVal("Lambda_EU13L","Boiler_Operating_state","0") == 11) {return "Temp-Lock";;} \
elsif (ReadingsVal("Lambda_EU13L","Boiler_Operating_state","0") == 12) {return "Stdby-Frost";;} \
else {return "unknown";;}},\
Buffer_Operating_state_text {if (ReadingsVal("Lambda_EU13L","Buffer_Operating_state","0") == 0) {return "STDBY";;} \
elsif (ReadingsVal("Lambda_EU13L","Buffer_Operating_state","0") == 1) {return "Heating";;} \
elsif (ReadingsVal("Lambda_EU13L","Buffer_Operating_state","0") == 2) {return "Cooling";;} \
elsif (ReadingsVal("Lambda_EU13L","Buffer_Operating_state","0") == 3) {return "Summer";;} \
elsif (ReadingsVal("Lambda_EU13L","Buffer_Operating_state","0") == 4) {return "Frost";;} \
elsif (ReadingsVal("Lambda_EU13L","Buffer_Operating_state","0") == 5) {return "Holiday";;} \
elsif (ReadingsVal("Lambda_EU13L","Buffer_Operating_state","0") == 6) {return "Prio-Stop";;} \
elsif (ReadingsVal("Lambda_EU13L","Buffer_Operating_state","0") == 7) {return "Error";;} \
elsif (ReadingsVal("Lambda_EU13L","Buffer_Operating_state","0") == 8) {return "Off";;} \
elsif (ReadingsVal("Lambda_EU13L","Buffer_Operating_state","0") == 9) {return "Standy-Frost";;} \
else {return "unknown";;}},\
Heating_circuit_Operating_state_text {if (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 0) {return "Heating";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 1) {return "Eco";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 2) {return "Cooling";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 3) {return "Floordry";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 4) {return "Frost";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 5) {return "Max-Temp";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 6) {return "Error";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 7) {return "Service";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 8) {return "Holiday";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 9) {return "CH-Summer";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 10) {return "CC-Winter";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 11) {return "Prio-Stop";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 12) {return "Off";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 13) {return "Release-Off";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 14) {return "Time-off";;} \
elsif\
(ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 15) {return "Stdby";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 16) {return "Stdby-Heating";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 17) {return "Stdby-Eco";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 18) {return "Stdby-Cooling";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 19) {return "Stdby-Frost";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_state","0") == 20) {return "Stdby-Floordry";;} \
else {return "unknown";;}},\
Heating_circuit_Operating_mode_text {if (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_mode","0") == 0) {return "Off(rw)";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_mode","0") == 1) {return "Manual(r)";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_mode","0") == 2) {return "Automatic(rw)";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_mode","0") == 3) {return "Auto-heating(rw)";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_mode","0") == 4) {return "Auto-cooling(rw)";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_mode","0") == 5) {return "Frost(rw)";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_mode","0") == 6) {return "Summer(rw)";;} \
elsif (ReadingsVal("Lambda_EU13L","Heating_circuit_Operating_mode","0") == 7) {return "Floor-dry(r)";;}  \
else {return "unknown";;}},\
Anzahl_Takte:Hp_QP_heating.* { (((OldReadingsVal("Lambda_EU13L","Hp_QP_heating","0") <= 0) and (ReadingsVal("Lambda_EU13L","Hp_QP_heating","0") > 0)) ? (return (ReadingsVal("Lambda_EU13L","Anzahl_Takte","0") + 1)) : (return undef));;;; }
attr Lambda_EU13L verbose 2
Titel: Aw: Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L
Beitrag von: Mathias R am 16 November 2023, 18:23:45
Hallo FhemPiUser,
zunächst einmal vielen Dank, das meiste funktioniert auf Anhieb.
Es gibt noch eine kleine Fehlermeldung "slave replied with error code 83 / 02, illegal data address", aber die meisten Readings funktionieren schon.
Wir haben noch einen Stromversorger-Wechsel zu Tibber beauftragt. Danach möchte ich bei günstigem Preis die Temperaturen erhöhen und die teuersten Stunden abschalten.
Eventuell könnte ich das über ein Relaismodul mit dem EVU-Sperrkontakt abschalten und mit X51 - externe Heizanforderung realisieren. Eventuell könnte man das ja auch per Modbus realisieren.

Gruß, Mathias
Titel: Aw: Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L
Beitrag von: FhemPiUser am 16 November 2023, 19:36:28
Hi Mathias,
ich habe es noch nicht probiert, aber es könnte über das Register Heating_circuit_Operating_mode gehen. Das ist ja beschreibbar.
Titel: Aw: Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L
Beitrag von: Mathias R am 16 November 2023, 21:36:13
Hallo FhemPiUser,
es steht bei mir im state 0 Heating. Ich vermute hier eher Automatik, Heizen oder Regelbetrieb aus dem Bereich "Wärmepumpe" im VNC-Interface.
Vermutlich gibt es noch diverse nicht dokumentierte Register, denn im VNC sehe ich ja wesentlich mehr Werte, die in der Modbus-Doku nicht erwähnt sind.
Ich habe auch mal den Energieverbrauch extern gemessen und die internen Zähler scheinen bei mir ziemlich genau zu sein (weniger als 2 Promille Abweichung).
Jetzt habe ich noch das korrekte Wetter eingestellt damit vor warmen Tagen die Temperatur automatisch abgesenkt wird.
Im Februar bekomme ich den Tibber-Tarif und möchte bis dahin eine Lösung zur Vermeidung der Peak-Preise implementieren.

Mathias
Titel: Aw: Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L
Beitrag von: Mathias R am 20 November 2023, 07:55:00
Hallo,
ich habe eine andere Lösung zum "Abschalten" und der Temperaturerhöhung gefunden: Einfach die Heizkurve um bis zu 10 K nach oben oder unten verschieben mitset Lambda_EU13L Heating_circuit_Offset_flow_line_temp_setpoint xxxwobei xxx eine Zahl von -100 bis 100 die Verschiebung in 1/10 K ist, also -50 = -5K.
Titel: Aw: Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L
Beitrag von: dmq am 24 November 2023, 16:57:02
Danke @FhemPiUser. Tatsächlich hatte ich mir die Mühe zum Großteil vor ca. 6 Monaten auch schon gemacht. Zugegeben, ist bei Dir aber (gerade in den userReadings noch mal mehr eingeflossen:). Gut das Du einen Thread aufgemacht hast und deine Sachen teilst - ich war bei mir noch im Beobachtungsmodus.

Wo realisiert ihr die Speicherung und Analyse der Energiewerte (Tages-, Monats-, Jahres-Werte)? Ich hatte mir da eingangs auch ein paar userReadings erstellt, nutze hierzu mittlerweile aber auch die Auswertung von openWB (dort auch bereits ganz schön mit PV + Batteriespeicher-Anteil).

Ich benutze auch tibber. Habt ihr ggf. schon eine Idee, wie die Steuerung auf Basis von Kontextdaten (bei tibber dann niedriger Strompreis) sich rein auf die WW-Aufbereitung (bei mir Boiler) beziehen lässt? Das Register 5050 hebt doch den Vorlauf für den Heizkreis an? Matthias, wie sind bisher deine Erfahrungen? Gerade in den letzten Nächten hatten wir ja ein paar mal 17 Cent. Ich denke Du hast es dann per DOIF realisiert? Wenn man die kleinsten Werte über einen definierbaren Zeitraum finden möchte, kann ggf. das hier hilfreich sein (https://www.juergenstechnikwelt.de/smarthome-2/tibber-in-fhem-einbinden-beste-zeiten-fuer-niedrige-strompreise-ermitteln/ - dazu auch noch danke an Jürgen).
Titel: Aw: Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L
Beitrag von: dmq am 26 November 2023, 09:33:28
Ich denke die WW- / Boiler Einstellung geht hierüber (wenn entsprechend die Zeitprogramme: Normal und Eco berücksichtigt werden):

    {
        "address": 2050,
        "modbustype": "holding",
        "modbusaccess": "readwrite",
        "valuetype": "int16",
        "factor": 0.1,
        "interval": 10,
        "unit": "ºC",
    }

Da der Wert durch 10 geteilt wird ($val/10), sollte der set Befehl dann so aussehen (bei 50 Grad C):

set modbus_lambda EU13L_Boil1_Set_temperature 500
Titel: Aw: Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L
Beitrag von: Mathias R am 26 November 2023, 18:47:09
Hallo dmq,
bisher läuft bei mir Tibber leider noch nicht.
Bei Tibber kann man jeweils ab 13:00 Uhr die Strompreise des Folgetages mit curl abholen. Je nach Temperatur kann ich entscheiden wie lange ich abschalten kann.
Vermutlich werde ich etwas in der Shell mit AWK schreiben um die teuersten Stunden abzuschalten (Temperatur senken), bei besonders günstigen Stunden die Temperatur etwas anheben. FHEM spreche ich aus der Shell per Netcat auf dem Telnetport an.
Eventuell ergänze ich auch ein WLAN-Relais am EVU-Sperrkontakt.
Titel: Aw: Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L
Beitrag von: dmq am 26 November 2023, 21:33:33
Ja, awk und netcat gehen natürlich auch (den Weg habe ich auch für das ein oder andere, bzw. openssl anstelle von netcat wenn remote und tls). Zu Tibber gibt es aber jede Menge (u.a. auch node-red mit der Power Saver Library). Ich denke es sollte alles behutsam geschaltet werden, dass da nicht zu viel Bewegung drin ist. Ich taste mich da auch mal ran.
Titel: Aw: Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L
Beitrag von: nuart am 02 Februar 2024, 19:52:34
Besten Dank@FhemPiUser

heute wurde meine Lambda in Betrieb genommen und alles läuft wie geplant. Alles bereits in FHEM, dank PiUser. Lediglich der Wert für Heating_circuit_Return_line_temp b ringt bei mir -300. Ich komme nicht dahinter, was die Ursache dafür ist. die Werte für den Vorlauf sind korrekt, auch alle anderen Readings sind plausibel. Vielleicht hat da noch wer einen Tipp für mich.
Titel: Aw: Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L
Beitrag von: FhemPiUser am 04 Februar 2024, 11:05:39
Heating_circuit_Return_line_temp ist bei mir auch -300. Bei mir ist gar kein Sensor für den Rücklauf angeschlossen. Ich nehme an, dass das der Grund bei mir ist.

Allerdings ist z.B. Heating_circuit_Setpoint_flow_line_temp bei mir auch -300. Ich habe mal gelesen, dass das ein Bug in der Lambda Firmware ist und das früher mal ging. Mal abwarten auf das nächste Firmware-Update.
Titel: Aw: Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L
Beitrag von: nuart am 06 Februar 2024, 11:20:49
Besten Dank. Auch bei mir ist kein Fühler im Rücklauf, damit ist alles klar. Mein Installateur hat mit auch bestätigt, dass hier ein Bug in der Lambda Firmware vorhanden ist. Jetzt ist mir noch aufgefallen dass die Anzahl der Takte über das Reading Hp_QP_heating gerechnet wird. Dieses Reading hat aber meiner Meinung nach nichts mit dem Takten zu tun, sondern es zeigt die akuelle Leistung an.  Oder verstehe ich da was falsch?
Titel: Aw: Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L
Beitrag von: FhemPiUser am 06 Februar 2024, 13:21:10
Naja, es gibt aktuell keine explizite modbus variable für Takten von Lambda. Daher habe ich es als Takten gezählt, wenn die Leistung auf nahe Null geht und dann wieder steigt.
Titel: Aw: Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L
Beitrag von: nuart am 06 Februar 2024, 17:05:32
Hallo, hab ich mir dann auch so gedacht. Nachdem meine Lambda erst ein paar Tage löuft hatte sie noch nie Null gehabt.
Titel: Aw: Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L
Beitrag von: ringidigiding am 29 Februar 2024, 04:57:31
Hallo,
irgendwie stehe ich auf dem Schlauch. Werte über Modbus aus der Lambda auslesen klappt bei mir für fast alle in der Lambda Modbus Doku angegebenen Parameter.
Ich schaffe es aber nicht bei den dafür vorgesehenen Parametern Werte wieder zurückzuschreiben. Eigentlich würde ich gerne den Parameter Heating Circuit - Operating Mode (h05006) ändern. Da der bei mir aber immer den Wert 62536 hat, versuche ich es zuerst mit dem Parameter Heating Circuit - Offset flow line temp. setpoint (obj-h05050). Habe alle Attribute dafür angelegt, wie oben bei @FhemPiUser beschrieben, also set, poll, type, expr und reading.
Wenn ich dann aber Versuche den Wert über ein set Kommando zu ändern, dann bleibt er so wie er ist. Muss man noch irgendetwas anderes aktivieren um Werte ändern zu können?
Titel: Aw: Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L
Beitrag von: ringidigiding am 29 Februar 2024, 06:43:05
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
Titel: Aw: Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L
Beitrag von: FhemPiUser am 01 März 2024, 19:31:01
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.
Titel: Aw: Anbindung Wärmepumpe Lambda EU08L/EU13L/EU15L
Beitrag von: ringidigiding am 01 März 2024, 21:21:56
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.