Aldes T.One AIR / AquaAIR

J’ai pris en compte ta remarque pour le filtre, c’est une bonne idée.
J’ai aussi ajouté les tarifs HP/HC en écriture.
Je pense qu’on est pas mal. Il reste peut-être à optimiser la lecture des registres continus avec register_count (voir Optimizing modbus communications)

Voici la config complèe :

esphome:
  name: aldes

esp32:
  board: esp32dev

substitutions:
  api_key: !secret esphome_api_key

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

web_server:
  port: 80
  local: true
  
ota:

api:
 
logger:

uart:
  baud_rate: 19200 
  tx_pin: GPIO16
  rx_pin: GPIO17
  parity: EVEN
  stop_bits: 1

modbus_controller:
- address: 0x1
  update_interval: 10s


binary_sensor:
  - platform: modbus_controller
    name: "Filtre à changer"
    icon: mdi:air-filter
    register_type: holding
    address: 0x0082
    device_class: problem

text_sensor:
  - platform: modbus_controller
    name: "Aiguillage vanne"
    icon: mdi:valve
    entity_category: diagnostic
    register_type: holding
    address: 0x0064
    raw_encode: HEXBYTES
    lambda: |-
      uint16_t value = modbus_controller::word_from_hex_str(x, 0);
      switch (value) {
        case 0: return std::string("Etat initial");
        case 1: return std::string("ECS");
        case 2: return std::string("Air");
        case 3: return std::string("Standby");
        case 4: return std::string("Standby sécurité");
        case 5: return std::string("En cours de modification");
        default: return std::string("Unknown");
      }
      return x;

sensor:
  - platform: modbus_controller
    name: "Version logiciel régulateur"
    entity_category: diagnostic
    icon: mdi:package
    register_type: holding
    address: 0x0001
    value_type: U_WORD
  - platform: modbus_controller
    name: "Identifiant IHM"
    entity_category: diagnostic
    icon: mdi:identifier
    register_type: holding
    address: 0x000E
    value_type: U_DWORD
 - platform: modbus_controller
    name: "Date et heure"
    device_class: timestamp
    entity_category: diagnostic
    icon: mdi:calendar-clock
    register_type: holding
    address: 0x0010
    value_type: U_DWORD
  - platform: modbus_controller
    name: "Température pièce principale"
    entity_category: diagnostic
    device_class: "temperature"
    state_class: "measurement"
    icon: mdi:thermometer
    register_type: holding
    address: 0x0078
    value_type: S_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    name: "Volume restant ECS"
    entity_category: diagnostic
    device_class: "volume"
    state_class: "measurement"
    icon: mdi:hydraulic-oil-level
    register_type: holding
    address: 0x006E
    value_type: U_WORD
    unit_of_measurement: "L"
  - platform: modbus_controller
    id: consigne_ecs_lue
    register_type: holding
    address: 0x006F
    value_type: U_WORD
    accuracy_decimals: 1
    unit_of_measurement: "°C"
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    name: "Température ECS"
    state_class: "measurement"
    entity_category: diagnostic
    device_class: "temperature"
    icon: mdi:water-thermometer-outline
    register_type: holding
    address: 0x0070
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    id: thermostat_1
    internal: yes
    register_type: holding
    address: 0x96
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    id: thermostat_2
    register_type: holding
    address: 0x97
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    id: thermostat_3
    register_type: holding
    address: 0x98
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    id: thermostat_4
    register_type: holding
    address: 0x99
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    id: thermostat_5
    register_type: holding
    address: 0x9A
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    id: thermostat_6
    register_type: holding
    address: 0x9B
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    id: thermostat_7
    register_type: holding
    address: 0x9C
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    id: thermostat_8
    register_type: holding
    address: 0x9D
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    id: thermostat_9
    register_type: holding
    address: 0x9E
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    id: thermostat_10
    register_type: holding
    address: 0x9F
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    id: hp
    register_type: holding
    address: 0xA0
    value_type: U_WORD
    unit_of_measurement: "€"
    accuracy_decimals: 4
    filters:
      - multiply: 0.001
  - platform: modbus_controller
    id: hc
    register_type: holding
    address: 0xA1
    value_type: U_WORD
    unit_of_measurement: "€"
    accuracy_decimals: 4
    filters:
      - multiply: 0.001

number:
  - platform: modbus_controller
    name: "Consigne ECS"
    register_type: holding
    address: 0x006F
    value_type: U_WORD
    step: 0.1
    min_value: 7
    max_value: 61
    use_write_multiple: true
    entity_category: config
    unit_of_measurement: "°C"
    icon: "mdi:thermostat"
    multiply: 100
  - platform: modbus_controller
    name: "Consigne thermostat 1"
    icon: "mdi:thermostat"
    entity_category: config
    unit_of_measurement: "°C"
    address: 0x96
    value_type: U_WORD
    min_value: 0
    max_value: 31
    use_write_multiple: true
    multiply: 100
  - platform: modbus_controller
    name: "Consigne thermostat 2"
    icon: "mdi:thermostat"
    entity_category: config
    unit_of_measurement: "°C"
    address: 0x97
    value_type: U_WORD
    min_value: 0
    max_value: 31
    use_write_multiple: true
    multiply: 100
  - platform: modbus_controller
    name: "Consigne thermostat 3"
    icon: "mdi:thermostat"
    entity_category: config
    unit_of_measurement: "°C"
    address: 0x98
    value_type: U_WORD
    min_value: 0
    max_value: 31
    use_write_multiple: true
    multiply: 100
  - platform: modbus_controller
    name: "Consigne thermostat 4"
    icon: "mdi:thermostat"
    entity_category: config
    unit_of_measurement: "°C"
    address: 0x99
    value_type: U_WORD
    min_value: 0
    max_value: 31
    use_write_multiple: true
    multiply: 100
  - platform: modbus_controller
    name: "Consigne thermostat 5"
    icon: "mdi:thermostat"
    entity_category: config
    unit_of_measurement: "°C"
    address: 0x9A
    value_type: U_WORD
    min_value: 0
    max_value: 31
    use_write_multiple: true
    multiply: 100
  - platform: modbus_controller
    name: "Consigne thermostat 6"
    icon: "mdi:thermostat"
    entity_category: config
    unit_of_measurement: "°C"
    address: 0x9B
    value_type: U_WORD
    min_value: 0
    max_value: 31
    use_write_multiple: true
    multiply: 100
  - platform: modbus_controller
    name: "Consigne thermostat 7"
    icon: "mdi:thermostat"
    entity_category: config
    unit_of_measurement: "°C"
    address: 0x9C
    value_type: U_WORD
    min_value: 0
    max_value: 31
    use_write_multiple: true
    multiply: 100
  - platform: modbus_controller
    name: "Consigne thermostat 8"
    icon: "mdi:thermostat"
    entity_category: config
    unit_of_measurement: "°C"
    address: 0x9D
    value_type: U_WORD
    min_value: 0
    max_value: 31
    use_write_multiple: true
    multiply: 100
  - platform: modbus_controller
    name: "Consigne thermostat 9"
    icon: "mdi:thermostat"
    entity_category: config
    unit_of_measurement: "°C"
    address: 0x9E
    value_type: U_WORD
    min_value: 0
    max_value: 31
    use_write_multiple: true
    multiply: 100
  - platform: modbus_controller
    name: "Consigne thermostat 10"
    icon: "mdi:thermostat"
    entity_category: config
    unit_of_measurement: "°C"
    address: 0x9F
    value_type: U_WORD
    min_value: 0
    max_value: 31
    use_write_multiple: true
    multiply: 100
  - platform: modbus_controller
    name: "Tarif HP"
    icon: mdi:currency-eur
    entity_category: config
    mode: box
    unit_of_measurement: "€"
    address: 0xA0
    value_type: U_WORD
    min_value: 0.05
    max_value: 1
    use_write_multiple: true
    multiply: 1000
    step: 0.001
  - platform: modbus_controller
    name: "Tarif HC"
    icon: mdi:currency-eur
    entity_category: config
    mode: box
    unit_of_measurement: "€"
    address: 0xA1
    value_type: U_WORD
    min_value: 0.05
    max_value: 1
    use_write_multiple: true
    multiply: 1000
    step: 0.001
    
select:
  - platform: modbus_controller
    name: "Mode Air"
    icon: "mdi:air-conditioner"
    entity_category: config
    address: 0x007A
    value_type: U_WORD
    use_write_multiple: true
    optionsmap:
      "Off": 0
      "Confort Chauffage": 1
      "Eco Chauffage": 2
      "Prog A Chauffage": 3
      "Prog B Chauffage": 4
      "Confort Clim" : 5
      "Boost Clim" : 6
      "Prog C Clim" : 7
      "Prog D Clim" : 8
      "Ventilation" : 9
  - platform: modbus_controller
    name: "Mode ECS"
    icon: "mdi:water-boiler"
    entity_category: config
    address: 0x0071
    value_type: U_WORD
    use_write_multiple: true
    optionsmap:
      "Off": 0
      "On": 1
      "Boost": 2