uhuwald
16. Dezember 2024 um 13:29
1
Hallo zusammen,
ich bin von meinem Iobroker auf Homeassistant umgezogen.
Einzig die Modbus Integration mit meiner Lambda Wärmepumpe bekomme ich in Homeassistant nicht hin. Konkret geht Raum das Schreiben des Holding Register 102. lesen funktioniert
Anbei die funktionierende Config im Iobroker. Wie bekomme ich diese im HA ?
1 „Gefällt mir“
Du musst das in Home Assistant alles per YAML machen (ist nicht so schön wie im ioBroker). Hier sind einige Beispiele zu finden.
Also erstmal viel lesen und verstehen - ich habe in HA deutlich länger gebraucht als mit ioBroker, bis z.B. mein Wechselrichter integriert war.
Das klingt ja so, als gäbe es schon etwas. Teil doch gerne die Config die Du schon hast.
uhuwald
16. Dezember 2024 um 20:11
3
Danke für die Rückmeldung. Soweit ist mir das klar und ich habe sowohl meine PV als auch meine WP komplett lesbar integriert. Anbei dazu meine modbus.yaml.
Image
1 „Gefällt mir“
uhuwald
16. Dezember 2024 um 20:12
4
delay: 5
timeout: 5
type: tcp
host: 192.168.178.48
port: 502
sensors:
#INT
- name: "FEMS_EssSoc" # Battery SoC
scan_interval: 60
data_type: uint16
input_type: input
device_class: battery
state_class: measurement
unit_of_measurement: „%“
address: 302
slave: 1
unique_id: fems_modbus_302
#FLOAT32
- name: "FEMS_EssActivePower" # Combined Power of PV + Battery
unit_of_measurement: W
scan_interval: 10
data_type: float32
input_type: holding
device_class: power
state_class: measurement
address: 303
slave: 1
unique_id: fems_modbus_303
- name: "FEMS_GridActivePower" # Grid Power
unit_of_measurement: W
scan_interval: 10
data_type: float32
input_type: holding
device_class: power
state_class: measurement
address: 315
slave: 1
unique_id: fems_modbus_315
- name: "FEMS_ProductionDcActualPower" # PV Power
unit_of_measurement: W
scan_interval: 10
data_type: float32
input_type: holding
device_class: power
state_class: measurement
address: 339
slave: 1
unique_id: fems_modbus_339
- name: "FEMS_ConsumptionActivePower" #House Power
unit_of_measurement: W
scan_interval: 10
data_type: float32
input_type: holding
device_class: power
state_class: measurement
address: 343
slave: 1
unique_id: fems_modbus_343
- name: „FEMS_EssActivePowerL1“
unit_of_measurement: W
scan_interval: 20
data_type: float32
input_type: holding
device_class: power
state_class: measurement
address: 391
slave: 1
unique_id: fems_modbus_391
- name: „FEMS_EssActivePowerL2“
unit_of_measurement: W
scan_interval: 20
data_type: float32
input_type: holding
device_class: power
state_class: measurement
address: 393
slave: 1
unique_id: fems_modbus_393
- name: „FEMS_EssActivePowerL3“
unit_of_measurement: W
scan_interval: 20
data_type: float32
input_type: holding
device_class: power
state_class: measurement
address: 395
slave: 1
unique_id: fems_modbus_395
- name: „FEMS_GridActivePowerL1“
unit_of_measurement: W
scan_interval: 20
data_type: float32
input_type: holding
device_class: power
state_class: measurement
address: 397
slave: 1
unique_id: fems_modbus_397
- name: „FEMS_GridActivePowerL2“
unit_of_measurement: W
scan_interval: 20
data_type: float32
input_type: holding
device_class: power
state_class: measurement
address: 399
slave: 1
unique_id: fems_modbus_399
- name: „FEMS_GridActivePowerL3“
unit_of_measurement: W
scan_interval: 20
data_type: float32
input_type: holding
device_class: power
state_class: measurement
address: 401
slave: 1
unique_id: fems_modbus_401
- name: „FEMS_ConsumptionActivePowerL1“
unit_of_measurement: W
scan_interval: 20
data_type: float32
input_type: holding
device_class: power
state_class: measurement
address: 409
slave: 1
unique_id: fems_modbus_409
- name: „FEMS_ConsumptionActivePowerL2“
unit_of_measurement: W
scan_interval: 20
data_type: float32
input_type: holding
device_class: power
state_class: measurement
address: 411
slave: 1
unique_id: fems_modbus_411
- name: „FEMS_ConsumptionActivePowerL3“
unit_of_measurement: W
scan_interval: 20
data_type: float32
input_type: holding
device_class: power
state_class: measurement
address: 413
slave: 1
unique_id: fems_modbus_413
- name: "FEMS_EssDischargePower" #Battery Discharge Power
unit_of_measurement: W
scan_interval: 5
data_type: float32
input_type: holding
device_class: power
state_class: measurement
address: 415
slave: 1
unique_id: fems_modbus_415
#Energy (Float64)
- name: "FEMS_EssActiveChargeEnergy" #not sure what this is, I think its the Energy the battery has been charged form AC/the Grid, should not be too high, because its normally not possible/allowed (in Germany at least) to charge from the Grid.
unit_of_measurement: Wh
scan_interval: 60
data_type: float64
input_type: holding
device_class: energy
state_class: total_increasing
address: 351
slave: 1
unique_id: fems_modbus_351
- name: "FEMS_EssActiveDischargeEnergy" #not sure what this is, I think its the total amount of Energy the System has put out to AC, so basicially the the amount of PV minus what is currently stored in the battery plus the amount that you have charged from the Grid (so FEMS_EssActiveChargeEnergy), but that is normally not possible, so this is not very useful.
unit_of_measurement: Wh
scan_interval: 60
data_type: float64
input_type: holding
device_class: energy
state_class: total_increasing
address: 355
slave: 1
unique_id: fems_modbus_355
- name: "FEMS_GridBuyActiveEnergy" #Total Consumption from Grid
unit_of_measurement: Wh
scan_interval: 60
data_type: float64
input_type: holding
device_class: energy
state_class: total_increasing
address: 359
slave: 1
unique_id: fems_modbus_359
- name: "FEMS_GridSellActiveEnergy" #Total Energy Sold to Grid
unit_of_measurement: Wh
scan_interval: 60
data_type: float64
input_type: holding
device_class: energy
state_class: total_increasing
address: 363
slave: 1
unique_id: fems_modbus_363
- name: "FEMS_ProductionActiveEnergy" # Total PV Production Energy
unit_of_measurement: Wh
scan_interval: 60
data_type: float64
input_type: holding
device_class: energy
state_class: total_increasing
address: 367
slave: 1
unique_id: fems_modbus_367
- name: "FEMS_ConsumptionActiveEnergy" # Total Energy Usage
unit_of_measurement: Wh
scan_interval: 60
data_type: float64
input_type: holding
device_class: energy
state_class: total_increasing
address: 379
slave: 1
unique_id: fems_modbus_379
- name: "FEMS_EssDcChargeEnergy" # Total Battery Charge Energy
unit_of_measurement: Wh
scan_interval: 60
data_type: float64
input_type: holding
device_class: energy
state_class: total_increasing
address: 383
slave: 1
unique_id: fems_modbus_383
- name: "FEMS_EssDcDischargeEnergy" # Total Battery Discharge Energy
unit_of_measurement: Wh
scan_interval: 60
data_type: float64
input_type: holding
device_class: energy
state_class: total_increasing
address: 387
slave: 1
unique_id: fems_modbus_387
- name: „EU13L“
delay: 5
timeout: 5
type: tcp
host: 192.168.178.52
port: 502
sensors:
#General Ambient
- name: EU13L_Ambient_Error_Number
address: 0000
input_type: holding
state_class: total
scale: 1
precision: 0
data_type: int16
unique_id: eu13l_modbus_0000
- name: EU13L_Ambient_Operating_State
address: 0001
input_type: holding
unit_of_measurement: ""
state_class: total
scale: 1
precision: 0
data_type: uint16
unique_id: eu13l_modbus_0001
- name: EU13L_Ambient_Temperature
address: 0002
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_0002
- name: EU13L_Ambient_Temperature_1h
address: 0003
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_0003
- name: EU13L_Ambient_Temperature_calculated
address: 0004
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_0004
# General E-Manager
# comment this section in case you have no E-Manager active
- name: EU13L_EMgr_Error_Number
address: 100
input_type: holding
state_class: total
scale: 1
precision: 0
data_type: int16
unique_id: eu13l_modbus_0100
- name: EU13L_EMgr_Operating_State
address: 101
input_type: holding
unit_of_measurement: ""
state_class: total
scale: 1
precision: 0
data_type: uint16
unique_id: eu13l_modbus_0101
- name: EU13L_EMgr_Actual_Power
address: 102
input_type: holding
unit_of_measurement: "W"
state_class: total
scale: 1
precision: 0
data_type: int16
unique_id: eu13l_modbus_0102
- name: EU13L_EMgr_Actual_Power_Consumption
address: 103
input_type: holding
unit_of_measurement: "W"
state_class: total
scale: 1
precision: 0
data_type: int16
unique_id: eu13l_modbus_0103
- name: EU13L_EMgr_Power_Consumption_Setpoint
address: 104
input_type: holding
unit_of_measurement: "W"
state_class: total
scale: 1
precision: 0
data_type: int16
unique_id: eu13l_modbus_0104
# Heat Pump No. 1 --for additonal heatpumps, this section needs to be duplicated and second digit of address increased by 1--
- name: EU13L_Hp1_Error_State
address: 1000
input_type: holding
state_class: total
scale: 1
precision: 0
data_type: uint16
unique_id: eu13l_modbus_1000
- name: EU13L_Hp1_Error_Number
address: 1001
input_type: holding
state_class: total
scale: 1
precision: 0
data_type: int16
unique_id: eu13l_modbus_1001
- name: EU13L_Hp1_State
address: 1002
input_type: holding
unit_of_measurement: ""
state_class: total
scale: 1
precision: 0
data_type: uint16
unique_id: eu13l_modbus_1002
- name: EU13L_Hp1_Operating_State
address: 1003
input_type: holding
unit_of_measurement: ""
state_class: total
scale: 1
precision: 0
data_type: uint16
unique_id: eu13l_modbus_1003
- name: EU13L_Hp1_Flow_Line_Temperature
address: 1004
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.01
precision: 1
data_type: int16
unique_id: eu13l_modbus_1004
- name: EU13L_Hp1_Return_Line_Temperature
address: 1005
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.01
precision: 1
data_type: int16
unique_id: eu13l_modbus_1005
- name: EU13L_Hp1_Volume_flow_heat_sink
address: 1006
input_type: holding
unit_of_measurement: "l/h"
state_class: total
scale: 1
precision: 1
data_type: int16
unique_id: eu13l_modbus_1006
- name: EU13L_Hp1_Energy_source_inlet_temperature
address: 1007
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_1007
- name: EU13L_Hp1_Energy_source_outlet_temperature
address: 1008
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_1008
- name: EU13L_Hp1_Volume_flow_energy_source
address: 1009
input_type: holding
unit_of_measurement: "l/min"
state_class: total
scale: 0.01
precision: 1
data_type: int16
unique_id: eu13l_modbus_1009
- name: EU13L_Hp1_Compressor_unit_rating
address: 1010
input_type: holding
unit_of_measurement: "%"
state_class: total
scale: 0.01
precision: 0
data_type: uint16
unique_id: eu13l_modbus_1010
- name: EU13L_Hp1_Actual_Heating_Capacity
address: 1011
input_type: holding
unit_of_measurement: "kW"
state_class: total
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_1011
- name: EU13L_Hp1_Inverter_Power_Consumption
address: 1012
input_type: holding
unit_of_measurement: "W"
state_class: total
scale: 1
precision: 0
data_type: int16
unique_id: eu13l_modbus_1012
- name: EU13L_Hp1_COP
address: 1013
input_type: holding
unit_of_measurement: ""
state_class: total
scale: 0.01
precision: 2
data_type: int16
unique_id: eu13l_modbus_1013
- name: EU13L_Hp1_Request_Type
address: 1015
input_type: holding
unit_of_measurement: ""
state_class: total
scale: 1
precision: 0
data_type: int16
unique_id: eu13l_modbus_1015
- name: EU13L_Hp1_Requested_flow_line_temperature
address: 1016
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_1016
- name: EU13L_Hp1_Requested_return_line_temperature
address: 1017
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_1017
- name: EU13L_Hp1_Requested_flow_to_return_line_temperature_difference
address: 1018
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_1018
- name: EU13L_Hp1_Relais_State_2nd_Heating_Stage
address: 1019
input_type: holding
unit_of_measurement: ""
state_class: total
scale: 1
precision: 0
data_type: int16
unique_id: eu13l_modbus_1019
- name: EU13L_Hp1_Compressor_Power_Consumption_accumulated
address: 1020
input_type: holding
unit_of_measurement: "Wh"
state_class: total
scale: 1
precision: 0
data_type: int32
unique_id: eu13l_modbus_1020
- name: EU13L_Hp1_Compressor_Thermal_Energy_Output_accumulated
address: 1022
input_type: holding
unit_of_measurement: "Wh"
state_class: total
scale: 1
precision: 0
data_type: int32
unique_id: eu13l_modbus_1020
# Boiler --for additonal boiler, this section needs to be duplicated and second digit of address increased by 1--
- name: EU13L_Boil1_Error_Number
address: 2000
input_type: holding
state_class: total
scale: 1
precision: 0
data_type: int16
unique_id: eu13l_modbus_2000
- name: EU13L_Boil1_Operating_state
address: 2001
input_type: holding
unit_of_measurement: ""
state_class: total
scale: 1
precision: 0
data_type: uint16
unique_id: eu13l_modbus_2001
- name: EU13L_Boil1_Actual_high_temperature
address: 2002
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_2002
- name: EU13L_Boil1_Actual_low_temperature
address: 2003
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_2003
- name: EU13L_Boil1_Set_temperature
address: 2050
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_2050
# Buffer --for additonal buffer, this section needs to be duplicated and second digit of address increased by 1--
- name: EU13L_Buff1_Error_Number
address: 3000
input_type: holding
state_class: total
scale: 1
precision: 0
data_type: int16
unique_id: eu13l_modbus_3000
- name: EU13L_Buff1_Operating_state
address: 3001
input_type: holding
unit_of_measurement: ""
state_class: total
scale: 1
precision: 0
data_type: uint16
unique_id: eu13l_modbus_3001
- name: EU13L_Buff1_Actual_high_temperature
address: 3002
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_3002
- name: EU13L_Buff1_Actual_low_temperature
address: 3003
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_3003
- name: EU13L_Buff1_Set_temperature
address: 3050
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_3050
# Solar --for additonal solar modules, this section needs to be duplicated and second digit of address increased by 1--
# comment this section in case you have no Solar module active
# - name: EU13L_Sol1_Error_Number
# address: 4000
# input_type: holding
# state_class: total
# scale: 1
# precision: 0
# data_type: int16
# unique_id: eu13l_modbus_4000
# - name: EU13L_Sol1_Operating_state
# address: 4001
# input_type: holding
# unit_of_measurement: ""
# state_class: total
# scale: 1
# precision: 0
# data_type: uint16
# unique_id: eu13l_modbus_4001
# - name: EU13L_Sol1_Actual_collector_temperature
# address: 4002
# input_type: holding
# unit_of_measurement: "°C"
# state_class: measurement
# device_class: temperature
# scale: 0.1
# precision: 1
# data_type: int16
# unique_id: eu13l_modbus_4002
# - name: EU13L_Sol1_Actual_buffer_sensor1_temperature
# address: 4003
# input_type: holding
# unit_of_measurement: "°C"
# state_class: measurement
# device_class: temperature
# scale: 0.1
# precision: 1
# data_type: int16
# unique_id: eu13l_modbus_4003
# - name: EU13L_Sol1_Actual_buffer_sensor2_temperature
# address: 4004
# input_type: holding
# unit_of_measurement: "°C"
# state_class: measurement
# device_class: temperature
# scale: 0.1
# precision: 1
# data_type: int16
# unique_id: eu13l_modbus_4004
# - name: EU13L_Sol1_Set_max_buffer_temperature
# address: 4050
# input_type: holding
# unit_of_measurement: "°C"
# state_class: measurement
# device_class: temperature
# scale: 0.1
# precision: 1
# data_type: int16
# unique_id: eu13l_modbus_4050
# - name: EU13L_Sol1_Set_buffer_changeover_temperature
# address: 4051
# input_type: holding
# unit_of_measurement: "°C"
# state_class: measurement
# device_class: temperature
# scale: 0.1
# precision: 1
# data_type: int16
# unique_id: eu13l_modbus_4051
# Heating Circuit -- e.g. underfloor heating --for additonal heating circuits , this section needs to be duplicated and second digit of address increased by 1--
- name: EU13L_Hc1_Error_Number
address: 5000
input_type: holding
state_class: total
scale: 1
precision: 0
data_type: int16
unique_id: eu13l_modbus_5000
- name: EU13L_Hc1_Operating_state
address: 5001
input_type: holding
unit_of_measurement: ""
state_class: total
scale: 1
precision: 0
data_type: uint16
unique_id: eu13l_modbus_5001
- name: EU13L_Hc1_Flow_line_temperature
address: 5002
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_5002
- name: EU13L_Hc1_Return_line_temperature
address: 5003
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_5003
- name: EU13L_Hc1_Room_device_temperature
address: 5004
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_5004
- name: EU13L_Hc1_Set_flow_line_temperature
address: 5005
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_5005
- name: EU13L_Hc1_Operating_mode
address: 5006
input_type: holding
state_class: total
scale: 1
precision: 0
data_type: int16
unique_id: eu13l_modbus_5006
- name: EU13L_Hc1_Set_flow_line_offset_temperature
address: 5050
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_5050
- name: EU13L_Hc1_Set_heating_mode_room_temperature
address: 5051
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_5051
- name: EU13L_Hc1_Set_cooling_mode_room_temperature
address: 5052
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_5052
# Heating Circuit 2 (e.g. radiators --for additonal heating circuits , this section needs to be duplicated and second digit of address increased by 1--
# delete or comment this section in case you have no further heating circuits
- name: EU13L_Hc2_Error_Number
address: 5100
input_type: holding
state_class: total
scale: 1
precision: 0
data_type: int16
unique_id: eu13l_modbus_5100
- name: EU13L_Hc2_Operating_state
address: 5101
input_type: holding
unit_of_measurement: ""
state_class: total
scale: 1
precision: 0
data_type: uint16
unique_id: eu13l_modbus_5101
- name: EU13L_Hc2_Flow_line_temperature
address: 5102
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_5102
- name: EU13L_Hc2_Return_line_temperature
address: 5103
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_5103
- name: EU13L_Hc2_Romm_device_temperature
address: 5104
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_5104
- name: EU13L_Hc2_Set_flow_line_temperature
address: 5105
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_5105
- name: EU13L_Hc2_Operating_mode
address: 5106
input_type: holding
state_class: total
scale: 1
precision: 0
data_type: int16
unique_id: eu13l_modbus_5106
- name: EU13L_Hc2_Set_flow_line_offset_temperature
address: 5150
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_5150
- name: EU13L_Hc2_Set_heating_mode_room_temperature
address: 5151
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_5151
- name: EU13L_Hc2_Set_cooling_mode_room_temperature
address: 5152
input_type: holding
unit_of_measurement: "°C"
state_class: measurement
device_class: temperature
scale: 0.1
precision: 1
data_type: int16
unique_id: eu13l_modbus_5152
1 „Gefällt mir“
uhuwald
16. Dezember 2024 um 20:16
5
Mein Problem ist es jetzt das Register 102 von EU13L zu schreiben. Bekomme ich im Homeassistant nicht hin. Möglicherweise liegt es daran das ich die Option Write_multiple_Register aktivieren muss. Das ist laut Handbuch der Wärmepumpe erforderlich und im Iobroker konnte ich das auch aktivieren.
Ziel ist eine Automation zu schreiben die mir den Wert des PV Überschusses in das vorgenannte Register schreibt.
1 „Gefällt mir“
uhuwald
16. Dezember 2024 um 20:18
6
Bisher habe ich testweise die folgend Script besucht, klappt aber nicht.
Bin ratlos und Google hilft nicht
sequence:
- service: modbus.write_register
data:
hub: EU13L
unit: 1
address: 102
value: '500'
write_type: holdings
writeemgr:
alias: WriteEMgr
sequence:
- action: modbus.write_register
metadata: {}
data:
address: 102
value:
- '{{ states(''sensor.fems_gridactivepower'') | int | bitwise_and(65535) }}'
hub: eu13l
description: ''
1 „Gefällt mir“
uhuwald
16. Dezember 2024 um 20:22
7
Das ist erstmal um es überhaupt zu schreiben, aitomation kommt dann später.
Jeder Versuch das Register zu schreiben schlägt fehl. Habe es auch erfolglos mit Aktionen => modbus Register.schreiben versucht.
1 „Gefällt mir“
Hallo uhuwald ,
wenn du vor deinem Code hier im Forum 3x " " zu Beginn und am Ende auch 3x "
" eintippst kannst du es in ein Codefeld eingeben und wir können es besser lesen.
Alternativ kannst du diesen Knopf nutzen und dann dazwischen reinkopieren:
Ich habe für dich deinen ersten Beitrag formatiert damit du einen Geschmack dafür bekommst die anderen Beiträge darfst du nachholen
uhuwald
17. Dezember 2024 um 11:49
9
Danke für den Hinweis. Gern ändere ich die Formatierung in der Hoffnung anderen die Hilfe zu erleichtern.
Ergänzend noch ein Hinweis aus der Doku der Wärmpumpe.
Beim IObroker konnte ich dazu das „Häkchen“ gem. Screenshot setzten.
Nur wie bekomme ich es im HA umgesetzt.
Blockzitat
Es können eine Reihe von Parameter und Istwerte von der Steuerzentrale der Wärmepumpe ausgelesen
bzw. beschrieben werden. Die Steuerzentrale fungiert dabei als Slave.
Die Zeit eines Kommunikationstimeout beträgt 1min. Erfolgt in dieser Zeit kein Abruf wird die
Verbindung geschlossen und muss neu aufgebaut werden.
Die Lesefunktion erfolgt über die Modbus Funktionscode 0x03 (read multipel holding register)
Die Schreibfunktion erfolgt über die Modbusfunktionscode 0x10 (write multiple writing register)``
1 „Gefällt mir“
Da sind aber ein paar Anführungszeichen falsch im Value Template. Du benutzt gerade doppelt hochkomma ''
statt Anführungszeichen "
. Teste mal:
- action: modbus.write_register
data:
hub: eu13l
address: 102
value:
- '{{ states("sensor.fems_gridactivepower") | int | bitwise_and(65535) }}'
Eventuell war wirklich nur das Template falsch. Eine Value-Liste zu übergeben im Yaml ist schonmal richtig:
(write_register) A single value or an array of 16-bit values. Single value will call modbus function code 0x06. Array will call modbus function code 0x10.
Das passt ja zu
Die Schreibfunktion erfolgt über die Modbusfunktionscode 0x10 (write multiple writing register)
1 „Gefällt mir“
Offen wäre aber noch der Datentyp, was die andere Seite erwartet. Also int oder unsigned int (also vorzeichenlos) und die Länge des Datentyps (16, 32, …)
Und die Reihenfolge der Bytes ist auch wichtig. Also Little Endian oder Big Endian.
Values might need reverse ordering. E.g., to set 0x0004 you might need to set [4,0]
, this depend on the byte order of your CPU
65535 wäre ja uint16. Was hattest Du da in ioBroker konfiguriert?
1 „Gefällt mir“
uhuwald
17. Dezember 2024 um 20:00
12
Dankeschön. Funktioniert
Tatsächlich waren es die Anführungszeichen. Allerdings hatte ich das gleiche nochmals in der Modbus.yaml beim modbus Name. Beim lesen ist das nicht aufgefallen, da der Name nur außerhalb der modbus.yaml ( also im Script) benötigt wird.
Eine Frage noch, laut Hanbuch der Wörmepumpe müsste ich ein
Signed 16 bit (Big Endian) nehmen. Was müsste ich dafür benutzen?
Also anstatt 65535 für uint16 im Falle Signed Int
1 „Gefällt mir“