Pour ceux que ça intéresse voici ma config pour modbus et les template sensor, j’essaie de récupérer toutes les infos!
Les input_select
sont des helpers que j’ai crée directement dans HA
Voici ma config HA:
modbus.yaml
######################################
### Modbus #
######################################
- name: "hitachi"
type: tcp
host: !secret pac_host
port: 502
retry_on_empty: true
delay: 3
switches:
- name: "Heatpump System"
unique_id: pac_1000_system_on_off
address: 1000
write_type: holding
command_on: 1
command_off: 0
verify:
input_type: holding
address: 1050
state_on: 1
state_off: 0
- name: "Heatpump Heating"
unique_id: pac_1002_heating_on_off
address: 1002
write_type: holding
command_on: 1
command_off: 0
verify:
input_type: holding
address: 1052
state_on: 1
state_off: 0
- name: "Heatpump ECO mode"
unique_id: pac_1007_mode_eco_confort
address: 1007
write_type: holding
command_on: 1
command_off: 0
verify:
input_type: holding
address: 1057
state_on: 1
state_off: 0
- name: "Heatpump Hot Water"
unique_id: pac_1024_dhw_on_off
address: 1024
write_type: holding
command_on: 1
command_off: 0
verify:
input_type: holding
address: 1076
state_on: 1
state_off: 0
- name: "Heatpump DHW Boost"
unique_id: pac_1026_dhw_boost
address: 1026
write_type: holding
command_on: 1
command_off: 0
verify:
input_type: holding
address: 1078
state_on: 1
state_off: 0
sensors:
- name: pac_1051_unit_mode
address: 1051
# Circuit 1
- name: pac_1053_circuit1_heat_control_type
address: 1053
- name: pac_1054_circuit1_cold_control_type
address: 1054
- name: pac_1055_set_fix_temp_water_hot
unit_of_measurement: °C
device_class: temperature
address: 1055
- name: pac_1056_set_fix_temp_water_cold
unit_of_measurement: °C
device_class: temperature
address: 1056
- name: pac_1057_mode_eco_confort
address: 1057
- name: pac_1058_set_temp_offset_eco_hot
unit_of_measurement: °C
device_class: temperature
address: 1058
- name: pac_1059_set_temp_offset_eco_cold
unit_of_measurement: °C
device_class: temperature
address: 1059
- name: pac_1010_thermostat_available
address: 1010
- name: pac_1062_set_temp_thermostat
unit_of_measurement: °C
device_class: temperature
scale: 0.1
precision: 1
address: 1062
- name: pac_1063_temp_room_thermostat
unit_of_measurement: °C
device_class: temperature
scale: 0.1
precision: 1
address: 1063
# Domestic Hot Water
- name: pac_1077_dhw_set_temp
unit_of_measurement: °C
device_class: temperature
scale: 0.1
precision: 1
address: 1077
- name: pac_1076_dhw_boost_status
address: 1078
- name: pac_1079_dhw_demand_mode
address: 1079
- name: pac_1080_dhw_temp
unit_of_measurement: °C
device_class: temperature
scale: 0.1
precision: 1
address: 1080
# System / General
- name: pac_1088_unit_mode_control
address: 1088
- name: pac_1090_unit_operational_status
address: 1090
- name: pac_1091_temp_outdoor
unit_of_measurement: °C
device_class: temperature
address: 1091
- name: pac_1092_temp_water_in
unit_of_measurement: °C
device_class: temperature
address: 1092
- name: pac_1093_temp_water_out
unit_of_measurement: °C
device_class: temperature
address: 1093
- name: pac_1094_hlink_status
address: 1094
- name: pac_1095_PCB_software
address: 1095
- name: pac_1096_LCD_software
address: 1096
- name: pac_1097_unit_capacity
unit_of_measurement: kWh
address: 1097
- name: pac_1098_unit_power_consumption
unit_of_measurement: kWh
device_class: energy
address: 1098
- name: pac_1200_temp_water_out_hp
unit_of_measurement: °C
device_class: temperature
address: 1200
- name: pac_1201_temp_outdoor_average
unit_of_measurement: °C
device_class: temperature
address: 1201
- name: pac_1206_temp_gas
unit_of_measurement: °C
device_class: temperature
address: 1206
- name: pac_1207_temp_liquid
unit_of_measurement: °C
device_class: temperature
address: 1207
- name: pac_1208_temp_gas_discharge
unit_of_measurement: °C
device_class: temperature
address: 1208
- name: pac_1209_temp_evaporation
unit_of_measurement: °C
device_class: temperature
address: 1209
- name: pac_1210_expansion_valve_open_indoor
unit_of_measurement: '%'
scan_interval: 5
address: 1210
- name: pac_1211_expansion_valve_open_outdoor
unit_of_measurement: '%'
scan_interval: 5
address: 1211
- name: pac_1212_inverter_frequency
unit_of_measurement: Hz
scan_interval: 5
address: 1212
- name: pac_1213_cause_stoppage
address: 1213
- name: pac_1214_compressor_active_current
unit_of_measurement: A
address: 1214
- name: pac_1215_capacity_data
address: 1215
- name: pac_1217_defrost
address: 1217
- name: pac_1218_unit_model
address: 1218
- name: pac_1219_water_temp_setting
unit_of_measurement: °C
address: 1219
- name: pac_1220_water_flow
unit_of_measurement: m3/h
scale: 0.1
precision: 2
address: 1220
- name: pac_1221_water_pump_speed
unit_of_measurement: '%'
address: 1221
- name: pac_1223_alarm_number
address: 1223
# Outdoor Unit / Coolant
- name: pac_1224_r134a_discharge_temp
unit_of_measurement: °C
address: 1224
- name: pac_1225_r134a_suction_temp
unit_of_measurement: °C
address: 1225
- name: pac_1226_r134a_discharge_pressure
unit_of_measurement: bar
scale: 0.1
precision: 1
address: 1226
- name: pac_1227_r134a_section_pressure
unit_of_measurement: bar
device_class: pressure
scale: 0.1
precision: 1
address: 1227
- name: pac_1228_r134a_compressor_frequency
unit_of_measurement: Hz
device_class: frequency
address: 1228
- name: pac_1229_r134a_expansion_valve_2_indoor_open
unit_of_measurement: '%'
state_class: measurement
address: 1229
- name: pac_1230_r134a_compressor_active_current
unit_of_measurement: A
address: 1230
template.yaml
# Use friendly state values for Heatpump
- sensor:
- name: "Heatpump Mode"
unique_id: pac_mode_status
state: >-
{{ iif(
states('sensor.pac_1051_unit_mode') not in ('unavailable', 'unknown'),
(state_attr('input_select.pac_mode','options')[(states('sensor.pac_1057_mode_eco_confort')|int)]),
(state_attr('input_select.pac_mode','options')[0])
)
}}
- name: "Heatpump Eco Mode"
unique_id: pac_mode_eco_status
state: >-
{{ iif(
states('sensor.pac_1057_mode_eco_confort') not in ('unavailable', 'unknown'),
(state_attr('input_select.pac_eco_mode','options')[(states('sensor.pac_1057_mode_eco_confort')|int)]),
(state_attr('input_select.pac_eco_mode','options')[0])
)
}}
- name: "Heatpump Heating Circuit Status"
unique_id: pac_mode_heat_circuit_status
state: >-
{{ iif(
states('sensor.pac_1053_circuit1_heat_control_type') not in ('unavailable', 'unknown'),
(state_attr('input_select.pac_heat_circuit_status','options')[(states('sensor.pac_1053_circuit1_heat_control_type')|int)]),
(state_attr('input_select.pac_heat_circuit_status','options')[0])
)
}}
- name: "Heatpump Operation Status"
unique_id: pac_operational_status
state: >-
{{ iif(
states('sensor.pac_1090_unit_operational_status') not in ('unavailable', 'unknown'),
(state_attr('input_select.pac_operation_state','options')[(states('sensor.pac_1090_unit_operational_status')|int)]),
(state_attr('input_select.pac_operation_state','options')[0])
)
}}
- name: "Heatpump DHW Demande Mode"
unique_id: pac_dhw_demand_mode_status
state: >-
{{ iif(
states('sensor.pac_1079_dhw_demand_mode') not in ('unavailable', 'unknown'),
(state_attr('input_select.pac_dhw_demand_mode','options')[(states('sensor.pac_1079_dhw_demand_mode')|int)]),
(state_attr('input_select.pac_dhw_demand_mode','options')[0])
)
}}
- name: "Heatpump Central Mode Status"
unique_id: pac_central_mode_status
state: >-
{{ iif(
states('sensor.pac_1088_unit_mode_control') not in ('unavailable', 'unknown'),
(state_attr('input_select.pac_central_mode','options')[(states('sensor.pac_1088_unit_mode_control')|int)]),
(state_attr('input_select.pac_central_mode','options')[0])
)
}}
# Control Heatpump using friendly name values (get initial state from sensor)
- select:
- unique_id: 'pac_eco_mode'
state: >-
{{ iif(
states('sensor.pac_1057_mode_eco_confort') not in ('unavailable', 'unknown'),
(state_attr('select.pac_eco_mode','options')[(states('sensor.pac_1057_mode_eco_confort')|int)]),
(state_attr('select.pac_eco_mode','options')[0])
)
}}
options: "{{ ['ECO','Comfort'] }}"
select_option:
- service: modbus.write_register
data:
hub: hitachi
address: 1018
value: >-
{{ (state_attr('select.pac_eco_mode','options').index(option))|int}}
- unique_id: 'pac_dhw_demand_mode'
options: "{{ ['Standard','High Demand'] }}"
state: >-
{{ iif(
states('sensor.pac_1079_dhw_demand_mode') not in ('unavailable', 'unknown'),
(state_attr('select.pac_dhw_demand_mode','options')[(states('sensor.pac_1079_dhw_demand_mode')|int)]),
(state_attr('select.pac_dhw_demand_mode','options')[0])
)
}}
select_option:
- service: modbus.write_register
data:
hub: hitachi
address: 1027
value: >-
{{ (state_attr('select.pac_dhw_demand_mode','options').index(option))|int}}