Interfaçage HITACHI Yutaki S (Pompe à chaleur)

Quel artiste !
Ces infos c’est via ton module modbus que tu les as?
Le nombre de dégivrage c’est sûr qu’elle période ? Par jour?

Hormis la mesure de puissance instantanée et l’énergie consommée, je récupère toute les infos via la passerelle Modbus Hitachi.

Faut que je me remette sur le PCB de l’interface car ça m’intéresse d’être sur le même BUS que la télécommande de facade, il y a un peu plus d’infos.

Ps : J’ai rajouté la mesure des temps de fonctionnement de la PAC sur ma visu.

Tu as du nouveau sur ton intégration avec le module P1P2-Esp? C’est assez stable?

bonjour
tes cycles semblent hyper court !
Concernant la passerelle, j’ai eu un plantage (plus d’info remontées sous HA) en 30j de fonctionnement: un on/off est elle est repartie. c’est peut être moi qui ai fait un fausse manip car j’étais en train de bidouiller HA quand c’est arrivée. Je n’ai pas encore pu avancer plus que ce que j’ai mis sur mon poste du 22/12, je ne fais que lire les infos. Paramétrer Ha comme je le souhaite avec des graphes qui ressemblent à Domoticz est bcp plus compliqué que prévu (alors que domoticz le fait en natif…, merci Neuvidor et d’autre pour l’aide …). En 2 mois sous HA je n’ai pas encore laissé tombé domoticz … mais c’est pour bientôt, je touche au but des mes histo par heures, jours, mois, année… il ne me restera que la gestion piscine et arrosage.

c’est à partir de quelle carte que tu as fait ca ?

1 « J'aime »

Je trouve aussi mais honnêtement avant d’avoir le chiffre sous les yeux j’aurais fait le pari d’être sur du 15min et non du 5min.

J’envisage de mettre un ballon de 50L/100L pour augmenter la capacité du circuit et donc de l’inertie de mon plancher. Je suis sur une chape anhydrite donc seulement 2h d’inertie.

Enfin tout installer Vendredi dernier, ça fait du bien d’avoir du chauffage central une fois de plus!!

Du coup, comme j’ai la passerelle ATW-MBS-02, j’ai repris la config de @Neuvidor avec quelques sensor en plus, notamment j’utilise des template pour avoir des valeur plus agréable que 1 ou 0.

Par contre, les valeurs pour les addresses 1050 a 1080 sont périodiquement 0 (parfois aussi 1080-1098) et ca peut durer 1 minutes ou deux.
Du coup dans HA, meme les switch bascule entre on et off en continue :confused:

C’est peut-être seulement Neuvidor qui est en Modbus TCP avec ATW-MBS-02, mais si quelqu’un a une idée comment résoudre ça je serai super reconnaissant.

Le problème vient peut-être de la passerelle, parce que j’ai le même problème lors que j’utilise QModMaster.

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}}
1 « J'aime »

Hello,
Super projet, je suis aussi super intéressé par ton travail et par une interface quand tu en seras a ce point.
Merci

Alors je n’ai clairement pas ce comportement.
Tu est connecté comment concrètement ? Via RS485 ou Ethernet ?

Sinon cool ton intégration, c’est possible d’avoir une visu de ton interface pour ce rendre compte du rendu ?

Tant mieux pour toi, mais zut pour moi!
Connecter en Ethernet, donc normalement pas de soucis.
Je suis même allez verifier le cable mais de toute façon ça n’explique pas le comportement aléatoire, puisque seulement certaines addresses on ce soucis:

  • régulièrement, toutes les quelques minutes (ou moins):
    • 1050 - 1079
    • 1082, 1085, 1088, 1089
  • 1000 - 1031: reste a zéro plus longtemps et plus souvent
  • 1200 - 1230: aucun soucis

Pour être sûr que ce n’étais pas HA et ma config, j’ai désactivé modbus et j’utilise seulement QModMaster, et même comportement :confused:


Pour l’intégration, j’avoue pas encore mis sur l’interface, trop occupé a debugger les valeurs parce que du coup je finit avec un aperçu que la pac s’allume et s’éteint en continue (1000 et 1050) donc ça serait moche!

Sinon le plan c’est de créer un thermostat virtuel dans HA en utilisant modbus climate, et au démarrage de mettre 1010 en mode disponible, et passer la température moyenne de la maison en 1012. Mais d’abord résoudre ce problème de valeurs

Et tu te rendra compte que ça ne marche pas :sleepy:
En fait il faut qu’il y ai physiquement un thermostat branché sur la PAC pour que tu puisses activer la variable sinon cela met en erreur la PAC qui du coup se coupe…

Bonjour,
+1 intéressé pour ce projet pour l’intégration et pilotage de nos pacs yutaki.
Possesseur d’une PAC Yutaki S 3.0 (8 kw) sur planchers chauffants (RDC + étage) depuis 3 ans.

Hello !

Bon au final je t’ai écouté et j’ai simplifié le schéma sur tes conseils.

Du coup j’alimente le système via l’USB de l’ESP tout en conservant une isolation galvanique avec le XL1192D (isolateur DC/DC + isolateur numérique) pour éviter tout problème.

J’ai commandé les composants principaux pour faire un essais sur breadboard, j’affinerai les résistances et les condensateur lors des essais. La livraison est estimée au 20 avril alors il ne faudra pas être pressé. :slight_smile:

Voilà le concept actuel

J’ai un thermostat d’ambience branché sur la pac en contact sec pour l’instant (borne 14 il me semble: Input 1: On/Off).
Je me suis dis autant avoir un système pour dépanner si modbus déconne (comme est justement le cas avec les valeurs 0 par intermittence sur certains registres).

Donc je testerais pour voir, mais si j’ai cru comprendre la notice, thermostat modbus prendra le dessus.
Mais j’attends d’avoir résolu les valeur intermittentes, parce que sinon ça risque d’envoyer 0/OFF de façon aléatoire…

Voici mon interface pour l’instant, (tous les sensors ni figure pas encore).

Les 2 select sous Actions sont les templates qui associent les valeurs des sensor aux helpers et envoie la valeur (numérique) avec modbus.write_register directement (normalement) sans besoin de automation.

C’est bon, normalement j’ai reçu les derniers composants pour pouvoir essayer mon interface sur breadboard. Reste juste à trouver un peu de temps pour faire ça.

1 « J'aime »

Bonjour super! Car moi avec mon module j’arrive bien à lire les trames mais pas a en envoyer. (J’ai pas de passerelle modbus pour envoyer des commande et lire leur format pour m’en inspirer)

Bonjour,

je suis habituellement sous jeedom, mais j’ai commencé à m’amuser avec HA pour faire le switch bientôt (beaucoup de scénarios et un controller zwave).
Ce thread m’intéresse parce que je viens aussi de recevoir mon module atw-mbs-02 et je n’ai aucune idée de comment l’intégrer !

J’ai tout d’abord une question au sujet de l’alimentation, je lis 1-230V.
Dois-je absolument l’alimenter en 230V ?
Vous n’utilisez pas le RS485, vous utilisez bien que le H-Link ?
Y’a-t-il de la place dans la PAC pour intégrer le module ou dois-je absolument le mettre sur un rail pour faire propre ?

Désolé pour les questions bateau.

Merci pour votre aide.

Bonjour je ne réponds a tes questions mais j’en ai une: ou l’as tu acheter ton module modbus? Il est en rupture partout…