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