home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
73.75k stars 30.86k forks source link

Modbus with Nibe S1255 Modbus Exception Response(130, 2, IllegalFunction) #57410

Closed martinmalek closed 3 years ago

martinmalek commented 3 years ago

The problem

Trying to get modbus working with Nibe S1255 but I'm getting some errors and empty answers. Please see more details further down

What is version of Home Assistant Core has the issue?

2021.9.2

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant Container

Integration causing the issue

Modbus

Link to integration documentation on our website

https://www.home-assistant.io/integrations/modbus/

Example YAML snippet

modbus:
  type: tcp
  host: 192.168.x.y
  port: 502
  name: "Nibe"
  delay: 10
  #close_comm_on_error: true
  retry_on_empty: true
  retries: 3
  timeout: 15
  message_wait_milliseconds: 500
  sensors:
    - name: "Nibe - Utetemperatur (BT1)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 1
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
    - name: "Nibe - Framledningstemperatur (BT2)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 5
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
    - name: "Nibe - Returledningstemperatur (BT3)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 7
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
    #- name: "Nibe - Varmvatten topp (BT7)"
    #  unit_of_measurement: "°C"
    #  data_type: int16
    #  device_class: temperature
    #  address: 8
    #  input_type: input
    #  scale: 0.1
    #  precision: 1
    #  state_class: measurement
    - name: "Nibe - Varmvatten laddning (BT6)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 9
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
    - name: "Nibe - Köldbärare in (BT10)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 10
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
    - name: "Nibe - Köldbärare ut (BT11)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 11
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
    - name: "Nibe - Kondensor fram (BT12)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 12
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
    - name: "Nibe - Hetgas (BT14)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 13
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
    - name: "Nibe - Vätskeledning (BT15)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 14
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
    - name: "Nibe - Suggas (BT17)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 16
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
    - name: "Nibe - Rumstemperatur 1 (BT50)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 26
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
    #- name: "Nibe - Extern Framledning (BT25)"
    #  unit_of_measurement: "°C"
    #  data_type: int16
    #  device_class: temperature
    #  address: 39
    #  input_type: input
    #  scale: 0.1
    #  precision: 1
    #  state_class: measurement
    - name: "Nibe - Kompressorgivare (EB100-BT29)"
      unit_of_measurement: "°C"
      data_type: int16
      address: 86
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
    - name: "Nibe - Värmebärarpumphastighet (GP1)"
      unit_of_measurement: "%"
      data_type: int16
      device_class: temperature
      address: 1102
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
    - name: "Nibe - Värmebärarpumphastighet Manuell (GP1)"
      unit_of_measurement: "%"
      data_type: int16
      device_class: power_factor
      address: 218
      input_type: input
      scale: 1
      precision: 1
      state_class: measurement
    - name: "Nibe - Aktuell kompressorfrekvens"
      unit_of_measurement: "Hz"
      data_type: int16
      address: 1046
      input_type: input
      scale: 1
      precision: 1
      state_class: measurement
    - name: "Nibe - Kompressorstarter"
      unit_of_measurement: None
      data_type: int16
      address: 1083
      input_type: input
      scale: 1
      precision: 1
      state_class: measurement
    - name: "Nibe - Köldbärarpumphastighet (GP2)"
      unit_of_measurement: "%"
      data_type: int16
      device_class: power_factor
      address: 1104
      input_type: input
      scale: 1
      precision: 1
      state_class: measurement
    - name: "Nibe - Köldbärarpumphastighet Manuell (GP2)"
      unit_of_measurement: "%"
      data_type: int16
      device_class: power_factor
      address: 222
      input_type: input
      scale: 1
      precision: 1
      state_class: measurement
  binary_sensors:
    - name: "Nibe - Driftläge värmebärarpump"
      address: 853
      input_type: discrete_input
      device_class: power
    - name: "Nibe - Kompressor status"
      address: 1100
      input_type: discrete_input
      device_class: power
    #- name: "Nibe - Driftläge köldbärarpump"
    #  address: 1319
    #  input_type: discrete_input
    #  device_class: power

logger:
  default: warning
  logs:
    pymodbus: debug
    homeassistant.components.modbus: debug
    pymodbus.client: debug

Anything in the logs that might be useful for us?

2021-10-10 06:03:09 DEBUG (SyncWorker_6) [pymodbus.transaction] Current transaction state - IDLE
2021-10-10 06:03:09 DEBUG (SyncWorker_6) [pymodbus.transaction] Running transaction 1
2021-10-10 06:03:09 DEBUG (SyncWorker_6) [pymodbus.transaction] SEND: 0x0 0x1 0x0 0x0 0x0 0x6 0x0 0x2 0x3 0x55 0x0 0x1
2021-10-10 06:03:09 DEBUG (SyncWorker_6) [pymodbus.client.sync] New Transaction state 'SENDING'
2021-10-10 06:03:09 DEBUG (SyncWorker_6) [pymodbus.transaction] Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
2021-10-10 06:03:09 DEBUG (SyncWorker_6) [pymodbus.transaction] Changing transaction state from 'WAITING FOR REPLY' to 'PROCESSING REPLY'
2021-10-10 06:03:09 DEBUG (SyncWorker_6) [pymodbus.transaction] RECV: 0x0 0x1 0x0 0x0 0x0 0x3 0x0 0x82 0x1
2021-10-10 06:03:09 DEBUG (SyncWorker_6) [pymodbus.framer.socket_framer] Processing: 0x0 0x1 0x0 0x0 0x0 0x3 0x0 0x82 0x1
2021-10-10 06:03:09 DEBUG (SyncWorker_6) [pymodbus.factory] Factory Response[130]
2021-10-10 06:03:09 DEBUG (SyncWorker_6) [pymodbus.transaction] Adding transaction 1
2021-10-10 06:03:09 DEBUG (SyncWorker_6) [pymodbus.transaction] Getting transaction 1
2021-10-10 06:03:09 DEBUG (SyncWorker_6) [pymodbus.transaction] Changing transaction state from 'PROCESSING REPLY' to 'TRANSACTION_COMPLETE'
2021-10-10 06:03:09 ERROR (SyncWorker_6) [homeassistant.components.modbus.modbus] Pymodbus: Nibe: Exception Response(130, 2, IllegalFunction)
2021-10-10 06:03:09 DEBUG (SyncWorker_10) [pymodbus.transaction] Current transaction state - TRANSACTION_COMPLETE
2021-10-10 06:03:09 DEBUG (SyncWorker_10) [pymodbus.transaction] Running transaction 2
2021-10-10 06:03:09 DEBUG (SyncWorker_10) [pymodbus.transaction] SEND: 0x0 0x2 0x0 0x0 0x0 0x6 0x0 0x2 0x4 0x4c 0x0 0x1
2021-10-10 06:03:09 DEBUG (SyncWorker_10) [pymodbus.client.sync] New Transaction state 'SENDING'
2021-10-10 06:03:09 DEBUG (SyncWorker_10) [pymodbus.transaction] Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
2021-10-10 06:03:09 DEBUG (SyncWorker_10) [pymodbus.transaction] Changing transaction state from 'WAITING FOR REPLY' to 'PROCESSING REPLY'
2021-10-10 06:03:09 DEBUG (SyncWorker_10) [pymodbus.transaction] RECV: 0x0 0x2 0x0 0x0 0x0 0x3 0x0 0x82 0x1
2021-10-10 06:03:09 DEBUG (SyncWorker_10) [pymodbus.framer.socket_framer] Processing: 0x0 0x2 0x0 0x0 0x0 0x3 0x0 0x82 0x1
2021-10-10 06:03:09 DEBUG (SyncWorker_10) [pymodbus.factory] Factory Response[130]
2021-10-10 06:03:09 DEBUG (SyncWorker_10) [pymodbus.transaction] Adding transaction 2
2021-10-10 06:03:09 DEBUG (SyncWorker_10) [pymodbus.transaction] Getting transaction 2
2021-10-10 06:03:09 DEBUG (SyncWorker_10) [pymodbus.transaction] Changing transaction state from 'PROCESSING REPLY' to 'TRANSACTION_COMPLETE'
2021-10-10 06:03:09 DEBUG (SyncWorker_10) [homeassistant.components.modbus.modbus] Pymodbus: Nibe: Exception Response(130, 2, IllegalFunction)
2021-10-10 06:03:09 DEBUG (SyncWorker_9) [pymodbus.transaction] Current transaction state - TRANSACTION_COMPLETE
2021-10-10 06:03:09 DEBUG (SyncWorker_9) [pymodbus.transaction] Running transaction 3
2021-10-10 06:03:09 DEBUG (SyncWorker_9) [pymodbus.transaction] SEND: 0x0 0x3 0x0 0x0 0x0 0x6 0x0 0x2 0x5 0x27 0x0 0x1
2021-10-10 06:03:09 DEBUG (SyncWorker_9) [pymodbus.client.sync] New Transaction state 'SENDING'
2021-10-10 06:03:09 DEBUG (SyncWorker_9) [pymodbus.transaction] Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
2021-10-10 06:03:09 DEBUG (SyncWorker_9) [pymodbus.transaction] Changing transaction state from 'WAITING FOR REPLY' to 'PROCESSING REPLY'
2021-10-10 06:03:09 DEBUG (SyncWorker_9) [pymodbus.transaction] RECV: 0x0 0x3 0x0 0x0 0x0 0x3 0x0 0x82 0x1
2021-10-10 06:03:09 DEBUG (SyncWorker_9) [pymodbus.framer.socket_framer] Processing: 0x0 0x3 0x0 0x0 0x0 0x3 0x0 0x82 0x1
2021-10-10 06:03:09 DEBUG (SyncWorker_9) [pymodbus.factory] Factory Response[130]
2021-10-10 06:03:09 DEBUG (SyncWorker_9) [pymodbus.transaction] Adding transaction 3
2021-10-10 06:03:09 DEBUG (SyncWorker_9) [pymodbus.transaction] Getting transaction 3
2021-10-10 06:03:09 DEBUG (SyncWorker_9) [pymodbus.transaction] Changing transaction state from 'PROCESSING REPLY' to 'TRANSACTION_COMPLETE'
2021-10-10 06:03:09 DEBUG (SyncWorker_9) [homeassistant.components.modbus.modbus] Pymodbus: Nibe: Exception Response(130, 2, IllegalFunction)
2021-10-10 06:03:09 DEBUG (SyncWorker_6) [pymodbus.transaction] Current transaction state - TRANSACTION_COMPLETE
2021-10-10 06:03:09 DEBUG (SyncWorker_6) [pymodbus.transaction] Running transaction 4
2021-10-10 06:03:09 DEBUG (SyncWorker_6) [pymodbus.transaction] SEND: 0x0 0x4 0x0 0x0 0x0 0x6 0x0 0x4 0x0 0x1 0x0 0x1
2021-10-10 06:03:09 DEBUG (SyncWorker_6) [pymodbus.client.sync] New Transaction state 'SENDING'
2021-10-10 06:03:09 DEBUG (SyncWorker_6) [pymodbus.transaction] Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
2021-10-10 06:03:12 DEBUG (SyncWorker_6) [pymodbus.transaction] Transaction failed. (Modbus Error: [Invalid Message] No response received, expected at least 8 bytes (0 received))
2021-10-10 06:03:12 DEBUG (SyncWorker_6) [pymodbus.transaction] Retry on empty response - 2
2021-10-10 06:03:12 DEBUG (SyncWorker_6) [pymodbus.transaction] Changing transaction state from 'WAITING_FOR_REPLY' to 'RETRYING'
2021-10-10 06:03:12 DEBUG (SyncWorker_6) [pymodbus.transaction] Sleeping 0.3
2021-10-10 06:03:12 DEBUG (SyncWorker_6) [pymodbus.client.sync] Connection to Modbus server established. Socket ('192.168.20.22', 40075)
2021-10-10 06:03:12 DEBUG (SyncWorker_6) [pymodbus.transaction] SEND: 0x0 0x4 0x0 0x0 0x0 0x6 0x0 0x4 0x0 0x1 0x0 0x1
2021-10-10 06:03:15 DEBUG (SyncWorker_6) [pymodbus.transaction] Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
2021-10-10 06:03:18 DEBUG (SyncWorker_6) [pymodbus.transaction] Transaction failed. (Modbus Error: [Invalid Message] No response received, expected at least 8 bytes (0 received))
2021-10-10 06:03:18 DEBUG (SyncWorker_6) [pymodbus.transaction] Retry on empty response - 1
2021-10-10 06:03:18 DEBUG (SyncWorker_6) [pymodbus.transaction] Changing transaction state from 'WAITING_FOR_REPLY' to 'RETRYING'
2021-10-10 06:03:19 DEBUG (SyncWorker_6) [pymodbus.transaction] Sleeping 0.6
2021-10-10 06:03:19 DEBUG (SyncWorker_6) [pymodbus.client.sync] Connection to Modbus server established. Socket ('192.168.20.22', 43395)
2021-10-10 06:03:19 DEBUG (SyncWorker_6) [pymodbus.transaction] SEND: 0x0 0x4 0x0 0x0 0x0 0x6 0x0 0x4 0x0 0x1 0x0 0x1
2021-10-10 06:03:22 DEBUG (SyncWorker_6) [pymodbus.transaction] Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
2021-10-10 06:03:25 DEBUG (SyncWorker_6) [pymodbus.transaction] Transaction failed. (Modbus Error: [Invalid Message] No response received, expected at least 8 bytes (0 received))
2021-10-10 06:03:25 DEBUG (SyncWorker_6) [pymodbus.framer.socket_framer] Processing:
2021-10-10 06:03:25 DEBUG (SyncWorker_6) [pymodbus.transaction] Getting transaction 4
2021-10-10 06:03:25 DEBUG (SyncWorker_6) [pymodbus.transaction] Changing transaction state from 'PROCESSING REPLY' to 'TRANSACTION_COMPLETE'
2021-10-10 06:03:25 DEBUG (SyncWorker_6) [homeassistant.components.modbus.modbus] Pymodbus: Nibe: Modbus Error: [Input/Output] Modbus Error: [Invalid Message] No response received, expected at least 8 bytes (0 received)
2021-10-10 06:03:25 DEBUG (SyncWorker_2) [pymodbus.client.sync] Connection to Modbus server established. Socket ('192.168.20.22', 43519)
2021-10-10 06:03:25 DEBUG (SyncWorker_2) [pymodbus.transaction] Current transaction state - TRANSACTION_COMPLETE
2021-10-10 06:03:25 DEBUG (SyncWorker_2) [pymodbus.transaction] Running transaction 5
2021-10-10 06:03:25 DEBUG (SyncWorker_2) [pymodbus.transaction] SEND: 0x0 0x5 0x0 0x0 0x0 0x6 0x0 0x4 0x0 0x5 0x0 0x1
2021-10-10 06:03:25 DEBUG (SyncWorker_2) [pymodbus.client.sync] New Transaction state 'SENDING'
2021-10-10 06:03:25 DEBUG (SyncWorker_2) [pymodbus.transaction] Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
2021-10-10 06:03:28 DEBUG (SyncWorker_2) [pymodbus.transaction] No response received to unbounded read !!!!
2021-10-10 06:03:28 DEBUG (SyncWorker_2) [pymodbus.transaction] Changing transaction state from 'WAITING FOR REPLY' to 'PROCESSING REPLY'
2021-10-10 06:03:28 DEBUG (SyncWorker_2) [pymodbus.transaction] RECV:
2021-10-10 06:03:28 DEBUG (SyncWorker_2) [pymodbus.transaction] Retry on empty response - 2
2021-10-10 06:03:28 DEBUG (SyncWorker_2) [pymodbus.transaction] Changing transaction state from 'WAITING_FOR_REPLY' to 'RETRYING'
2021-10-10 06:03:28 DEBUG (SyncWorker_2) [pymodbus.transaction] Sleeping 0.3
2021-10-10 06:03:28 DEBUG (SyncWorker_2) [pymodbus.transaction] SEND: 0x0 0x5 0x0 0x0 0x0 0x6 0x0 0x4 0x0 0x5 0x0 0x1
2021-10-10 06:03:31 DEBUG (SyncWorker_2) [pymodbus.transaction] Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
2021-10-10 06:03:34 DEBUG (SyncWorker_2) [pymodbus.transaction] No response received to unbounded read !!!!
2021-10-10 06:03:34 DEBUG (SyncWorker_2) [pymodbus.transaction] Changing transaction state from 'WAITING FOR REPLY' to 'PROCESSING REPLY'
2021-10-10 06:03:34 DEBUG (SyncWorker_2) [pymodbus.transaction] RECV:
2021-10-10 06:03:34 DEBUG (SyncWorker_2) [pymodbus.transaction] Retry on empty response - 1
2021-10-10 06:03:34 DEBUG (SyncWorker_2) [pymodbus.transaction] Changing transaction state from 'WAITING_FOR_REPLY' to 'RETRYING'
2021-10-10 06:03:35 DEBUG (SyncWorker_2) [pymodbus.transaction] Sleeping 0.6
2021-10-10 06:03:35 DEBUG (SyncWorker_2) [pymodbus.transaction] SEND: 0x0 0x5 0x0 0x0 0x0 0x6 0x0 0x4 0x0 0x5 0x0 0x1
2021-10-10 06:03:38 DEBUG (SyncWorker_2) [pymodbus.transaction] Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
2021-10-10 06:03:41 DEBUG (SyncWorker_2) [pymodbus.transaction] No response received to unbounded read !!!!
2021-10-10 06:03:41 DEBUG (SyncWorker_2) [pymodbus.transaction] Changing transaction state from 'WAITING FOR REPLY' to 'PROCESSING REPLY'
2021-10-10 06:03:41 DEBUG (SyncWorker_2) [pymodbus.transaction] RECV:
2021-10-10 06:03:41 DEBUG (SyncWorker_2) [pymodbus.framer.socket_framer] Processing:
2021-10-10 06:03:41 DEBUG (SyncWorker_2) [pymodbus.transaction] Getting transaction 5
2021-10-10 06:03:41 DEBUG (SyncWorker_2) [pymodbus.transaction] Changing transaction state from 'PROCESSING REPLY' to 'TRANSACTION_COMPLETE'
2021-10-10 06:03:41 DEBUG (SyncWorker_2) [homeassistant.components.modbus.modbus] Pymodbus: Nibe: Modbus Error: [Input/Output] No Response received from the remote unit/Unable to decode response
2021-10-10 06:03:41 DEBUG (SyncWorker_1) [pymodbus.client.sync] Connection to Modbus server established. Socket ('192.168.20.22', 34291)
2021-10-10 06:03:41 DEBUG (SyncWorker_1) [pymodbus.transaction] Current transaction state - TRANSACTION_COMPLETE
2021-10-10 06:03:41 DEBUG (SyncWorker_1) [pymodbus.transaction] Running transaction 6
2021-10-10 06:03:41 DEBUG (SyncWorker_1) [pymodbus.transaction] SEND: 0x0 0x6 0x0 0x0 0x0 0x6 0x0 0x4 0x0 0x7 0x0 0x1
2021-10-10 06:03:41 DEBUG (SyncWorker_1) [pymodbus.client.sync] New Transaction state 'SENDING'
2021-10-10 06:03:41 DEBUG (SyncWorker_1) [pymodbus.transaction] Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
2021-10-10 06:03:44 DEBUG (SyncWorker_1) [pymodbus.transaction] No response received to unbounded read !!!!
2021-10-10 06:03:44 DEBUG (SyncWorker_1) [pymodbus.transaction] Changing transaction state from 'WAITING FOR REPLY' to 'PROCESSING REPLY'
2021-10-10 06:03:44 DEBUG (SyncWorker_1) [pymodbus.transaction] RECV:
2021-10-10 06:03:44 DEBUG (SyncWorker_1) [pymodbus.transaction] Retry on empty response - 2
2021-10-10 06:03:44 DEBUG (SyncWorker_1) [pymodbus.transaction] Changing transaction state from 'WAITING_FOR_REPLY' to 'RETRYING'
2021-10-10 06:03:44 DEBUG (SyncWorker_1) [pymodbus.transaction] Sleeping 0.3
2021-10-10 06:03:44 DEBUG (SyncWorker_1) [pymodbus.transaction] SEND: 0x0 0x6 0x0 0x0 0x0 0x6 0x0 0x4 0x0 0x7 0x0 0x1
2021-10-10 06:03:47 DEBUG (SyncWorker_1) [pymodbus.transaction] Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
2021-10-10 06:03:50 DEBUG (SyncWorker_1) [pymodbus.transaction] No response received to unbounded read !!!!
2021-10-10 06:03:50 DEBUG (SyncWorker_1) [pymodbus.transaction] Changing transaction state from 'WAITING FOR REPLY' to 'PROCESSING REPLY'
2021-10-10 06:03:50 DEBUG (SyncWorker_1) [pymodbus.transaction] RECV:
2021-10-10 06:03:50 DEBUG (SyncWorker_1) [pymodbus.transaction] Retry on empty response - 1
2021-10-10 06:03:50 DEBUG (SyncWorker_1) [pymodbus.transaction] Changing transaction state from 'WAITING_FOR_REPLY' to 'RETRYING'
2021-10-10 06:03:51 DEBUG (SyncWorker_1) [pymodbus.transaction] Sleeping 0.6
2021-10-10 06:03:51 DEBUG (SyncWorker_1) [pymodbus.transaction] SEND: 0x0 0x6 0x0 0x0 0x0 0x6 0x0 0x4 0x0 0x7 0x0 0x1
2021-10-10 06:03:54 DEBUG (SyncWorker_1) [pymodbus.transaction] Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
2021-10-10 06:03:57 DEBUG (SyncWorker_1) [pymodbus.transaction] No response received to unbounded read !!!!
2021-10-10 06:03:57 DEBUG (SyncWorker_1) [pymodbus.transaction] Changing transaction state from 'WAITING FOR REPLY' to 'PROCESSING REPLY'
2021-10-10 06:03:57 DEBUG (SyncWorker_1) [pymodbus.transaction] RECV:
2021-10-10 06:03:57 DEBUG (SyncWorker_1) [pymodbus.framer.socket_framer] Processing:
2021-10-10 06:03:57 DEBUG (SyncWorker_1) [pymodbus.transaction] Getting transaction 6
2021-10-10 06:03:57 DEBUG (SyncWorker_1) [pymodbus.transaction] Changing transaction state from 'PROCESSING REPLY' to 'TRANSACTION_COMPLETE'
2021-10-10 06:03:57 DEBUG (SyncWorker_1) [homeassistant.components.modbus.modbus] Pymodbus: Nibe: Modbus Error: [Input/Output] No Response received from the remote unit/Unable to decode response
2021-10-10 06:03:57 DEBUG (SyncWorker_3) [pymodbus.client.sync] Connection to Modbus server established. Socket ('192.168.20.22', 54979)
2021-10-10 06:03:57 DEBUG (SyncWorker_3) [pymodbus.transaction] Current transaction state - TRANSACTION_COMPLETE
2021-10-10 06:03:57 DEBUG (SyncWorker_3) [pymodbus.transaction] Running transaction 7
2021-10-10 06:03:57 DEBUG (SyncWorker_3) [pymodbus.transaction] SEND: 0x0 0x7 0x0 0x0 0x0 0x6 0x0 0x4 0x0 0x8 0x0 0x1
2021-10-10 06:03:57 DEBUG (SyncWorker_3) [pymodbus.client.sync] New Transaction state 'SENDING'
2021-10-10 06:03:57 DEBUG (SyncWorker_3) [pymodbus.transaction] Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
2021-10-10 06:04:00 DEBUG (SyncWorker_3) [pymodbus.transaction] Changing transaction state from 'WAITING FOR REPLY' to 'PROCESSING REPLY'
2021-10-10 06:04:00 DEBUG (SyncWorker_3) [pymodbus.transaction] RECV: 0x0 0x7 0x0 0x0 0x0 0x3 0x0 0x84 0x1
2021-10-10 06:04:00 DEBUG (SyncWorker_3) [pymodbus.framer.socket_framer] Processing: 0x0 0x7 0x0 0x0 0x0 0x3 0x0 0x84 0x1
2021-10-10 06:04:00 DEBUG (SyncWorker_3) [pymodbus.factory] Factory Response[132]
2021-10-10 06:04:00 DEBUG (SyncWorker_3) [pymodbus.transaction] Adding transaction 7
2021-10-10 06:04:00 DEBUG (SyncWorker_3) [pymodbus.transaction] Getting transaction 7
2021-10-10 06:04:00 DEBUG (SyncWorker_3) [pymodbus.transaction] Changing transaction state from 'PROCESSING REPLY' to 'TRANSACTION_COMPLETE'
2021-10-10 06:04:00 DEBUG (SyncWorker_3) [homeassistant.components.modbus.modbus] Pymodbus: Nibe: Exception Response(132, 4, IllegalFunction)
2021-10-10 06:04:00 DEBUG (SyncWorker_4) [pymodbus.transaction] Current transaction state - TRANSACTION_COMPLETE
2021-10-10 06:04:00 DEBUG (SyncWorker_4) [pymodbus.transaction] Running transaction 8
2021-10-10 06:04:00 DEBUG (SyncWorker_4) [pymodbus.transaction] SEND: 0x0 0x8 0x0 0x0 0x0 0x6 0x0 0x4 0x0 0x9 0x0 0x1
2021-10-10 06:04:00 DEBUG (SyncWorker_4) [pymodbus.client.sync] New Transaction state 'SENDING'
2021-10-10 06:04:00 DEBUG (SyncWorker_4) [pymodbus.transaction] Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
2021-10-10 06:04:03 DEBUG (SyncWorker_4) [pymodbus.transaction] No response received to unbounded read !!!!
2021-10-10 06:04:03 DEBUG (SyncWorker_4) [pymodbus.transaction] Changing transaction state from 'WAITING FOR REPLY' to 'PROCESSING REPLY'
2021-10-10 06:04:03 DEBUG (SyncWorker_4) [pymodbus.transaction] RECV:
2021-10-10 06:04:03 DEBUG (SyncWorker_4) [pymodbus.transaction] Retry on empty response - 2
2021-10-10 06:04:03 DEBUG (SyncWorker_4) [pymodbus.transaction] Changing transaction state from 'WAITING_FOR_REPLY' to 'RETRYING'
2021-10-10 06:04:04 DEBUG (SyncWorker_4) [pymodbus.transaction] Sleeping 0.3
2021-10-10 06:04:04 DEBUG (SyncWorker_4) [pymodbus.transaction] SEND: 0x0 0x8 0x0 0x0 0x0 0x6 0x0 0x4 0x0 0x9 0x0 0x1
2021-10-10 06:04:07 DEBUG (SyncWorker_4) [pymodbus.transaction] Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
2021-10-10 06:04:10 DEBUG (SyncWorker_4) [pymodbus.transaction] No response received to unbounded read !!!!
2021-10-10 06:04:10 DEBUG (SyncWorker_4) [pymodbus.transaction] Changing transaction state from 'WAITING FOR REPLY' to 'PROCESSING REPLY'
2021-10-10 06:04:10 DEBUG (SyncWorker_4) [pymodbus.transaction] RECV:
2021-10-10 06:04:10 DEBUG (SyncWorker_4) [pymodbus.transaction] Retry on empty response - 1
2021-10-10 06:04:10 DEBUG (SyncWorker_4) [pymodbus.transaction] Changing transaction state from 'WAITING_FOR_REPLY' to 'RETRYING'
2021-10-10 06:04:10 DEBUG (SyncWorker_4) [pymodbus.transaction] Sleeping 0.6
2021-10-10 06:04:10 DEBUG (SyncWorker_4) [pymodbus.transaction] SEND: 0x0 0x8 0x0 0x0 0x0 0x6 0x0 0x4 0x0 0x9 0x0 0x1
2021-10-10 06:04:13 DEBUG (SyncWorker_4) [pymodbus.transaction] Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
2021-10-10 06:04:16 DEBUG (SyncWorker_4) [pymodbus.transaction] No response received to unbounded read !!!!
2021-10-10 06:04:16 DEBUG (SyncWorker_4) [pymodbus.transaction] Changing transaction state from 'WAITING FOR REPLY' to 'PROCESSING REPLY'
2021-10-10 06:04:16 DEBUG (SyncWorker_4) [pymodbus.transaction] RECV:
2021-10-10 06:04:16 DEBUG (SyncWorker_4) [pymodbus.framer.socket_framer] Processing:
2021-10-10 06:04:16 DEBUG (SyncWorker_4) [pymodbus.transaction] Getting transaction 8
2021-10-10 06:04:16 DEBUG (SyncWorker_4) [pymodbus.transaction] Changing transaction state from 'PROCESSING REPLY' to 'TRANSACTION_COMPLETE'
2021-10-10 06:04:16 DEBUG (SyncWorker_4) [homeassistant.components.modbus.modbus] Pymodbus: Nibe: Modbus Error: [Input/Output] No Response received from the remote unit/Unable to decode response
2021-10-10 06:04:16 DEBUG (SyncWorker_9) [pymodbus.client.sync] Connection to Modbus server established. Socket ('192.168.20.22', 48621)
2021-10-10 06:04:16 DEBUG (SyncWorker_9) [pymodbus.transaction] Current transaction state - TRANSACTION_COMPLETE

Additional information

Here is how I checked if the pump responds to modbus using https://github.com/favalex/modbus-cli

Installing modbus-cli

git clone git@github.com:favalex/modbus-cli.git
python3 -m venv .env
source .env/bin/activate
pip install modbus_cli

Getting modbus addresses from https://proffs.nibe.se/upload/NEW/Support/Kommunikation/M12676SV.pdf

Note that for me the following addresses are not included since they’re not working, probably due to the features missing or not being used 8, 39, 1319.

Calling pump using modbus-cli with the addresses above

modbus 192.168.x.y i@1/h -v
modbus 192.168.x.y i@5/h -v
modbus 192.168.x.y i@7/h -v
modbus 192.168.x.y i@9/h -v
modbus 192.168.x.y i@10/h -v
modbus 192.168.x.y i@11/h -v
modbus 192.168.x.y i@12/h -v
modbus 192.168.x.y i@13/h -v
modbus 192.168.x.y i@14/h -v
modbus 192.168.x.y i@16/h -v
modbus 192.168.x.y i@26/h -v
modbus 192.168.x.y i@86/h -v
modbus 192.168.x.y i@1102/h -v
modbus 192.168.x.y i@853/h -v
modbus 192.168.x.y i@218/h -v
modbus 192.168.x.y i@1046/h -v
modbus 192.168.x.y i@1083/h -v
modbus 192.168.x.y i@1100/h -v
modbus 192.168.x.y i@1104/h -v
modbus 192.168.x.y i@222/h -v

It's possible to query all registers in one go using a input file

$sudo nano registers.modbus

nibe_utetemperatur_BT1 i@1/h
nibe_framledningstemperatur_BT2 i@5/h
nibe_returledningstemperatur_BT3 i@7/h
nibe_varmvatten_laddning_BT6 i@9/h
nibe_koldbarare_in_BT10 i@10/h
nibe_koldbarare_ut_BT11 i@11/h
nibe_kondensor_fram_BT12 i@12/h
nibe_hetgas_BT14 i@13/h
nibe_vatskeledning_BT15 i@14/h
nibe_suggas_BT17 i@16/h
nibe_rumstemperatur_1_BT50 i@26/h
nibe_kompressorgivare_EB100_BT29 i@86/h
nibe_varmebararpumphastighet_GP1 i@1102/h
nibe_driftlage_varmebararpump i@853/h
nibe_varmebararpumphastighet_GP1_Manuell i@218/h
nibe_aktuell_kompressorfrekvens i@1046/h
nibe_kompressorstarter i@1083/h
nibe_kompressor_status i@1100/h
nibe_koldbararpumphastighet_GP2  i@1104/h
nibe_koldbararpumphastighet_GP2_Manuell i@222/h

Using the file above

modbus -r registers.modbus 192.168.x.y nibe\*

Note that for me the following addresses are not working, probably due to the features missing or not being used: 8, 39, 1319.

The other registers return just fine as per the output below.

(.env) pi@raspberrypi:~/Documents $ modbus -r registers.modbus 192.168.x.y nibe\*
Parsed 20 registers definitions from 2 files
nibe_utetemperatur_BT1: 51 0x33
nibe_framledningstemperatur_BT2: 460 0x1cc
nibe_returledningstemperatur_BT3: 303 0x12f
nibe_varmvatten_laddning_BT6: 420 0x1a4
nibe_koldbarare_in_BT10: 52 0x34
nibe_koldbarare_ut_BT11: 26 0x1a
nibe_kondensor_fram_BT12: 355 0x163
nibe_hetgas_BT14: 790 0x316
nibe_vatskeledning_BT15: 336 0x150
nibe_suggas_BT17: 88 0x58
nibe_rumstemperatur_1_BT50: 229 0xe5
nibe_kompressorgivare_EB100_BT29: -32768 -0x8000
nibe_varmebararpumphastighet_GP1_Manuell: 0 0x0
nibe_koldbararpumphastighet_GP2_Manuell: 0 0x0
nibe_driftlage_varmebararpump: 0 0x0
nibe_aktuell_kompressorfrekvens: 270 0x10e
nibe_kompressorstarter: 493 0x1ed
nibe_kompressor_status: 1 0x1
nibe_varmebararpumphastighet_GP1: 100 0x64
nibe_koldbararpumphastighet_GP2: 41 0x29
probot-home-assistant[bot] commented 3 years ago

modbus documentation modbus source (message by IssueLinks)

probot-home-assistant[bot] commented 3 years ago

Hey there @adamchengtkc, @janiversen, @vzahradnik, mind taking a look at this issue as it has been labeled with an integration (modbus) you are listed as a code owner for? Thanks! (message by CodeOwnersMention)

janiversen commented 3 years ago

One of your sensors is not a sensor (possibly wrong input_type or it is a binary sensor): ‘’’ homeassistant.components.modbus.modbus] Pymodbus: Nibe: Exception Response(130, 2, IllegalFunction) ‘’’ I do not know modbus_cli so I have no idea how that handles error situations.

you need to isolate the sensors with problems (e.g. adding sensors one by one) and make a log only with the faulty ones (and of course check if they are configured correctly).

martinmalek commented 3 years ago

I edited my post since I noticed that the modbus-cli example output was not correct due to me including unused registers which it didn't handle and skipped some of the working ones in the output. I removed the registers from the example above for any other readers to not get confused.

@janiversen - Ok. I'll attempt to remove all sensors but one and see if I can land in the correct modbus settings

martinmalek commented 3 years ago

@janiversen - I can provide some more output on the modbus-cli communication. Perhaps that can be useful to tell what type of settings would make sense in HA modbus?

modbus syntax used is: modbus [IP] [MODBUS_TYPE@]ADDRESS[/BINARY_TYPE]

MODBUS_TYPE code name size writable
h holding register 16 bits yes
i input register 16 bits no
c coil 1 bit yes
d discrete input 1 bit no
BINARY_TYPE code type
h 16 bits signed integer
H 16 bits unsigned integer
i 32 bits signed integer
I 32 bits unsigned integer
f 32 bits IEEE 754 float

According to Nibe docs (https://proffs.nibe.se/upload/NEW/Support/Kommunikation/M12676SV.pdf) the majority of registers are FC04, Input, int16 but maybe you can see if there is anything in the packing or endianess going on?

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@1/h -v
Parsed 0 registers definitions from 1 files
→ < 9d 53 00 00 00 06 ff 04 00 01 00 01 >
← < 9d 53 00 00 00 05 ff 04 02 00 38 > 11 bytes
← [56]
1: 56 0x38

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@5/h -v
Parsed 0 registers definitions from 1 files
→ < 26 ee 00 00 00 06 ff 04 00 05 00 01 >
← < 26 ee 00 00 00 05 ff 04 02 01 57 > 11 bytes
← [343]
5: 343 0x157

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@7/h -v
Parsed 0 registers definitions from 1 files
→ < ee 72 00 00 00 06 ff 04 00 07 00 01 >
← < ee 72 00 00 00 05 ff 04 02 01 3c > 11 bytes
← [316]
7: 316 0x13c

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@9/h -v
Parsed 0 registers definitions from 1 files
→ < c1 fc 00 00 00 06 ff 04 00 09 00 01 >
← < c1 fc 00 00 00 05 ff 04 02 01 bb > 11 bytes
← [443]
9: 443 0x1bb

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@10/h -v
Parsed 0 registers definitions from 1 files
→ < 0b b4 00 00 00 06 ff 04 00 0a 00 01 >
← < 0b b4 00 00 00 05 ff 04 02 00 32 > 11 bytes
← [50]
10: 50 0x32

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@11/h -v
Parsed 0 registers definitions from 1 files
→ < be ac 00 00 00 06 ff 04 00 0b 00 01 >
← < be ac 00 00 00 05 ff 04 02 00 15 > 11 bytes
← [21]
11: 21 0x15

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@12/h -v
Parsed 0 registers definitions from 1 files
→ < 28 25 00 00 00 06 ff 04 00 0c 00 01 >
← < 28 25 00 00 00 05 ff 04 02 01 59 > 11 bytes
← [345]
12: 345 0x159

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@13/h -v
Parsed 0 registers definitions from 1 files
→ < c5 0d 00 00 00 06 ff 04 00 0d 00 01 >
← < c5 0d 00 00 00 05 ff 04 02 02 65 > 11 bytes
← [613]
13: 613 0x265

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@14/h -v
Parsed 0 registers definitions from 1 files
→ < b8 55 00 00 00 06 ff 04 00 0e 00 01 >
← < b8 55 00 00 00 05 ff 04 02 01 39 > 11 bytes
← [313]
14: 313 0x139

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@16/h -v
Parsed 0 registers definitions from 1 files
→ < 45 24 00 00 00 06 ff 04 00 10 00 01 >
← < 45 24 00 00 00 05 ff 04 02 00 53 > 11 bytes
← [83]
16: 83 0x53

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@26/h -v
Parsed 0 registers definitions from 1 files
→ < ed 4f 00 00 00 06 ff 04 00 1a 00 01 >
← < ed 4f 00 00 00 05 ff 04 02 00 e5 > 11 bytes
← [229]
26: 229 0xe5

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@86/h -v
Parsed 0 registers definitions from 1 files
→ < ae cc 00 00 00 06 ff 04 00 56 00 01 >
← < ae cc 00 00 00 05 ff 04 02 80 00 > 11 bytes
← [32768]
86: -32768 -0x8000

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@1102/h -v
Parsed 0 registers definitions from 1 files
→ < 28 5c 00 00 00 06 ff 04 04 4e 00 01 >
← < 28 5c 00 00 00 05 ff 04 02 00 64 > 11 bytes
← [100]
1102: 100 0x64

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@853/h -v
Parsed 0 registers definitions from 1 files
→ < 0d d6 00 00 00 06 ff 04 03 55 00 01 >
← < 0d d6 00 00 00 05 ff 04 02 00 00 > 11 bytes
← [0]
853: 0 0x0

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@218/h -v
Parsed 0 registers definitions from 1 files
→ < f3 24 00 00 00 06 ff 04 00 da 00 01 >
← < f3 24 00 00 00 05 ff 04 02 00 00 > 11 bytes
← [0]
218: 0 0x0

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@1046/h -v
Parsed 0 registers definitions from 1 files
→ < 89 2c 00 00 00 06 ff 04 04 16 00 01 >
← < 89 2c 00 00 00 05 ff 04 02 00 c8 > 11 bytes
← [200]
1046: 200 0xc8

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@1083/h -v
Parsed 0 registers definitions from 1 files
→ < 3b 6b 00 00 00 06 ff 04 04 3b 00 01 >
← < 3b 6b 00 00 00 05 ff 04 02 01 ed > 11 bytes
← [493]
1083: 493 0x1ed

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@1100/h -v
Parsed 0 registers definitions from 1 files
→ < ce 47 00 00 00 06 ff 04 04 4c 00 01 >
← < ce 47 00 00 00 05 ff 04 02 00 01 > 11 bytes
← [1]
1100: 1 0x1

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@1104/h -v
Parsed 0 registers definitions from 1 files
→ < 12 73 00 00 00 06 ff 04 04 50 00 01 >
← < 12 73 00 00 00 05 ff 04 02 00 20 > 11 bytes
← [32]
1104: 32 0x20

(.env) pi@raspberrypi:~ $ modbus 192.168.x.y i@222/h -v
Parsed 0 registers definitions from 1 files
→ < 8b a1 00 00 00 06 ff 04 00 de 00 01 >
← < 8b a1 00 00 00 05 ff 04 02 00 00 > 11 bytes
← [0]
222: 0 0x0
janiversen commented 3 years ago

More info about modbus_cli is not really helpful, because it surely works differently. pymodbus which we use also have a command line interface (REPL), that would help.

but you need to isolate the sensors with a problem.

E.g. the one I mentioned is: name: "Nibe - Driftläge värmebärarpump" address 0x03 0x53 = 853 and quite possibly that is input_type: coil

janiversen commented 3 years ago

you cannot expect me to run through all your sensors….once you have a log with the faulty sensors (and you e.g, have tried different input types) then I can start looking if there is a software problem.

martinmalek commented 3 years ago

Don't worry, I wasn't expecting that you would go through all the sensors. I'm simply trying to provide input as possible for transparency. 😄

Thanks for the pymodbus cli REPL. I can give that a go and see if I can log anything more useful from that.

The reason I thought 853 could have been a binary sensor is because the docs mention it's a on/off indicator using a u8.

Funktion ID Registertyp Storlek Enhet Faktor Läge Status
Driftläge värmebärarpump 853 FC04 Input Register s8 - 1 R 0 - auto or 1 - manuellt
martinmalek commented 3 years ago

I managed to get it working. Here is how I did it if anyone wants to know for the future.

Using pymodbus repl according to https://pymodbus.readthedocs.io/en/latest/source/library/REPL.html

Installing pymodbus repl

python3 -m venv .env
source .env/bin/activate
pip install pymodbus[repl] --upgrade

repl console

pymodbus.console
pymodbus.console tcp --host 192.168.x.y --port 502
client.connect

Calling input registers

client.read_input_registers address 1 count 1 unit 1
client.read_input_registers address 5 count 1 unit 1
client.read_input_registers address 7 count 1 unit 1
client.read_input_registers address 9 count 1 unit 1
client.read_input_registers address 10 count 1 unit 1
client.read_input_registers address 11 count 1 unit 1
client.read_input_registers address 12 count 1 unit 1
client.read_input_registers address 13 count 1 unit 1
client.read_input_registers address 14 count 1 unit 1
client.read_input_registers address 16 count 1 unit 1
client.read_input_registers address 26 count 1 unit 1
client.read_input_registers address 86 count 1 unit 1
client.read_input_registers address 1102 count 1 unit 1
client.read_input_registers address 853 count 1 unit 1
client.read_input_registers address 218 count 1 unit 1
client.read_input_registers address 1046 count 1 unit 1
client.read_input_registers address 1083 count 1 unit 1
client.read_input_registers address 1100 count 1 unit 1
client.read_input_registers address 1104 count 1 unit 1
client.read_input_registers address 222 count 1 unit 1

Obviously now but I was missing the correct unit / slave in my config before. Setting slave: 1 fixed things.

Final configuration for Nibe S1255 over tcp modbus looks like

modbus:
  type: tcp
  host: 192.168.x.y
  port: 502
  name: "Nibe"
  delay: 10
  #close_comm_on_error: true
  retry_on_empty: true
  retries: 3
  timeout: 15
  message_wait_milliseconds: 500
  sensors:
    - name: "Nibe - Utetemperatur (BT1)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 1
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
      slave: 1
    - name: "Nibe - Framledningstemperatur (BT2)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 5
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
      slave: 1
    - name: "Nibe - Returledningstemperatur (BT3)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 7
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
      slave: 1
    #- name: "Nibe - Varmvatten topp (BT7)"
    #  unit_of_measurement: "°C"
    #  data_type: int16
    #  device_class: temperature
    #  address: 8
    #  input_type: input
    #  scale: 0.1
    #  precision: 1
    #  state_class: measurement
    #  slave: 1
    - name: "Nibe - Varmvatten laddning (BT6)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 9
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
      slave: 1
    - name: "Nibe - Köldbärare in (BT10)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 10
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
      slave: 1
    - name: "Nibe - Köldbärare ut (BT11)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 11
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
      slave: 1
    - name: "Nibe - Kondensor fram (BT12)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 12
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
      slave: 1
    - name: "Nibe - Hetgas (BT14)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 13
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
      slave: 1
    - name: "Nibe - Vätskeledning (BT15)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 14
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
      slave: 1
    - name: "Nibe - Suggas (BT17)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 16
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
      slave: 1
    - name: "Nibe - Rumstemperatur 1 (BT50)"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 26
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
      slave: 1
    #- name: "Nibe - Extern Framledning (BT25)"
    #  unit_of_measurement: "°C"
    #  data_type: int16
    #  device_class: temperature
    #  address: 39
    #  input_type: input
    #  scale: 0.1
    #  precision: 1
    #  state_class: measurement
    #  slave: 1
    - name: "Nibe - Kompressorgivare (EB100-BT29)"
      unit_of_measurement: "°C"
      data_type: int16
      address: 86
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
      slave: 1
    - name: "Nibe - Värmebärarpumphastighet (GP1)"
      unit_of_measurement: "%"
      data_type: int16
      device_class: temperature
      address: 1102
      input_type: input
      scale: 0.1
      precision: 1
      state_class: measurement
      slave: 1
    - name: "Nibe - Värmebärarpumphastighet Manuell (GP1)"
      unit_of_measurement: "%"
      data_type: int16
      device_class: power_factor
      address: 218
      input_type: input
      scale: 1
      precision: 1
      state_class: measurement
      slave: 1
    - name: "Nibe - Aktuell kompressorfrekvens"
      unit_of_measurement: "Hz"
      data_type: int16
      address: 1046
      input_type: input
      scale: 1
      precision: 1
      state_class: measurement
      slave: 1
    - name: "Nibe - Kompressorstarter"
      unit_of_measurement: None
      data_type: int16
      address: 1083
      input_type: input
      scale: 1
      precision: 1
      state_class: measurement
      slave: 1
    - name: "Nibe - Köldbärarpumphastighet (GP2)"
      unit_of_measurement: "%"
      data_type: int16
      device_class: power_factor
      address: 1104
      input_type: input
      scale: 1
      precision: 1
      state_class: measurement
      slave: 1
    - name: "Nibe - Köldbärarpumphastighet Manuell (GP2)"
      unit_of_measurement: "%"
      data_type: int16
      device_class: power_factor
      address: 222
      input_type: input
      scale: 1
      precision: 1
      state_class: measurement
      slave: 1
    - name: "Nibe - Driftläge värmebärarpump"
      unit_of_measurement: None
      data_type: int16
      address: 853
      input_type: input
      scale: 1
      precision: 1
      state_class: measurement
      slave: 1
    - name: "Nibe - Kompressor status"
      unit_of_measurement: None
      data_type: int16
      address: 1100
      input_type: input
      scale: 1
      precision: 1
      state_class: measurement
      slave: 1
    #- name: "Nibe - Kompressor status"
    #  unit_of_measurement: None
    #  data_type: int16
    #  address: 1319
    #  input_type: input
    #  scale: 1
    #  precision: 1
    #  state_class: measurement
    #  slave: 1