substitutions:
  aio_update_interval: 1s      # HomeMaster default — STD-009
  aio_command_throttle: 0ms    # HomeMaster default — STD-009

modbus_controller:
  - id: ${aio_id}
    address: ${aio_address}
    modbus_id: modbus_bus
    update_interval: ${aio_update_interval}
    command_throttle: ${aio_command_throttle}
    allow_duplicate_commands: false

binary_sensor:


# ================= WRITEABLE Holding Registers =================
number:
  # ---- DAC outputs ----
  - platform: modbus_controller
    modbus_controller_id: ${aio_id}
    name: "${aio_prefix} AO0 Raw"
    address: 200
    register_type: holding
    value_type: U_WORD
    min_value: 0
    max_value: 4095
    step: 1
    mode: slider

  - platform: modbus_controller
    modbus_controller_id: ${aio_id}
    name: "${aio_prefix} AO1 Raw"
    address: 201
    register_type: holding
    value_type: U_WORD
    min_value: 0
    max_value: 4095
    step: 1
    mode: slider

# ================= READABLE Holding Registers =================
sensor:
  # ---- RTD temperatures (°C*10 as S_WORD) ----
  - platform: modbus_controller
    modbus_controller_id: ${aio_id}
    name: "${aio_prefix} RTD1 Temperature"
    id: ${aio_id}_rtd1
    address: 120
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: ${aio_id}
    name: "${aio_prefix} RTD2 Temperature"
    id: ${aio_id}_rtd2
    address: 121
    register_type: holding
    value_type: S_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  # ---- AI field voltage in mV (U_WORD) ----
  - platform: modbus_controller
    modbus_controller_id: ${aio_id}
    name: "${aio_prefix} AI1 mV"
    id: ${aio_id}_ai1
    address: 140
    register_type: holding
    value_type: U_WORD
    unit_of_measurement: "mV"
    accuracy_decimals: 0

  - platform: modbus_controller
    modbus_controller_id: ${aio_id}
    name: "${aio_prefix} AI2 mV"
    id: ${aio_id}_ai2
    address: 141
    register_type: holding
    value_type: U_WORD
    unit_of_measurement: "mV"
    accuracy_decimals: 0

  - platform: modbus_controller
    modbus_controller_id: ${aio_id}
    name: "${aio_prefix} AI3 mV"
    id: ${aio_id}_ai3
    address: 142
    register_type: holding
    value_type: U_WORD
    unit_of_measurement: "mV"
    accuracy_decimals: 0

  - platform: modbus_controller
    modbus_controller_id: ${aio_id}
    name: "${aio_prefix} AI4 mV"
    id: ${aio_id}_ai4
    address: 143
    register_type: holding
    value_type: U_WORD
    unit_of_measurement: "mV"
    accuracy_decimals: 0
