Modbus interface to Picco / KEBA heat pump

Hello

I made a simple interface to my heat pump from Picco. The heat pump uses a controller from KEBA and I expect the interface to work for all KEBA heat pumps.

https://www.keba.com/en/heating-control/heat-pump/heatpump

I have not seen an interface for HA, so I thought I should share it.

The communication is done via Modbus/TCP to the AP440 control unit, and no setup is needed in the heat pump except from establishing a connection to my local router.

Since Modbus/TCP is an integrated part of Home Assistant all setup was done in the configuration.yaml file. The configuration is shown below.

modbus:
  - name: Heatpump
    type: tcp
    host: 192.168.1.173
    port: 502
    sensors:
      - name: Heatpump_selectedSetTemp
        data_type: uint16
        slave: 1
        address: 2
        scale: 0.1
        precision: 1
        unit_of_measurement: °C
      - name: Heatpump_SetpointTemperature
        data_type: uint16
        slave: 1
        address: 3
        scale: 0.1
        precision: 1
        unit_of_measurement: °C
      - name: Heatpump_normalSetTemp
        data_type: uint16
        slave: 1
        address: 4
        scale: 0.1
        precision: 1
        unit_of_measurement: °C
      - name: Heatpump_reducedSetTemp
        data_type: uint16
        slave: 1
        address: 5
        scale: 0.1
        precision: 1
        unit_of_measurement: °C
      - name: Heatpump_offsetRoomTemp
        data_type: uint16
        slave: 1
        address: 6
        scale: 0.1
        precision: 1
        unit_of_measurement: °C
      - name: Heatpump_HotWater_Temperature
        data_type: uint16
        slave: 1
        address: 401
        scale: 0.1
        precision: 1
        unit_of_measurement: °C
      - name: Heatpump_HotWater_SetpointTemperature
        data_type: uint16
        slave: 1
        address: 402
        scale: 0.1
        precision: 1
        unit_of_measurement: °C
      - name: Heatpump_TotalAccumulatedHeatingEnergy
        data_type: uint16
        slave: 1
        address: 701
        scale: 1
        precision: 1
        unit_of_measurement: kWh
      - name: Heatpump_State
        data_type: uint16
        slave: 1
        address: 703
      - name: Heatpump_ActualFlowTemperature
        data_type: uint16
        slave: 1
        address: 705
        scale: 0.1
        precision: 1
        unit_of_measurement: °C
      - name: Heatpump_HeatPower
        data_type: uint16
        slave: 1
        address: 706
        scale: 0.001
        precision: 2
        unit_of_measurement: kW
      - name: Heatpump_RefluxTemperature
        data_type: uint16
        slave: 1
        address: 710
        scale: 0.1
        precision: 1
        unit_of_measurement: °C
      - name: Heatpump_CirculationPump
        data_type: uint16
        slave: 1
        address: 712
        scale: 0.01
        precision: 2