Umzug Iobroker => Homeassistant => Modbusproblem

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.

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“
  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“

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“

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“

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 :slight_smile: ,

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:
Screenshot 17.12.2024 um 07.08.41 AM

Ich habe für dich deinen ersten Beitrag formatiert damit du einen Geschmack dafür bekommst :slight_smile: die anderen Beiträge darfst du nachholen :wink:

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“

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“