Aldes T.One AIR / AquaAIR

Je viens de voir que certains utilisent un level shifter et alimentent en 5V avec le même convertisseur que moi

Enorme ça !

Pour les level shifter c’est ce que j’allais dire. Justement j’en ai en stock, je les avais acheté dans l’optique d’essayer de brancher l’USB du T One à un ESP pour voir si du Modbus ne passait pas par là en 5V. Faut que je les retrouve et que je teste !

Tu peux aussi essayer l’autre convertisseur, il n’a peut-être pas besoin de level shifter.
Bizarre que dans la doc esphome ils n’en parlent pas, ils disent 3.3V, ça dépend peut-être des esclaves.

Pareil avec le level shifter…

Je suis joueur alors j’ai tenté de brancher en 5V le convertisseur TTL/RS485… et ça marche, je reçois bien les infos en modbus !
image
Il faut impérativement brancher l’esp avant de brancher le modbus, sinon ça ne marche pas, je me suis fait avoir au début.
image

1 « J'aime »

Wow champagne !

Tu peux me passer ton YAML stp ? Et que veux-tu dire par brancher l’ESP avant ? L’allumer avant de relier au Modbus tu veux dire ? Si tu reboot l’ESP il se passe quoi ?

Je veux parler de l’alimenter avant de brancher le connecteur modbus, moi j’avais la led RX fixe sinon. Le redémarrer sans le débrancher fonctionne.
Je crois que j’étais parti de ton yaml la dernière fois, tu vas le reconnaitre j’ai rien modifié encore aujourd’hui :

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

modbus_controller:
- address: 0x1
  update_interval: 10s

sensor:
  ###########################
  # T.One AIR & T.One AquaAIR
  - platform: modbus_controller
    name: "Regulator software version"
    register_type: holding
    address: 0x0001
    value_type: U_WORD
  - platform: modbus_controller
    name: "HCI identifier"
    register_type: holding
    address: 0x000E
    value_type: U_DWORD
  - platform: modbus_controller
    name: "Current action"
    register_type: holding
    address: 0x0064
    value_type: U_WORD
  - platform: modbus_controller
    name: "Main room temperature"
    register_type: holding
    address: 0x0078
    value_type: S_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    name: "Remaining volume of hot water"
    register_type: holding
    address: 0x006E
    value_type: U_WORD
    unit_of_measurement: "L"
  - platform: modbus_controller
    name: "Current hot water temperature"
    register_type: holding
    address: 0x0070
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.001
1 « J'aime »

Je crois qu’on va pouvoir le traduire en français, il doit pas y avoir beaucoup d’étrangers qui ont un T One… :sweat_smile:

1 « J'aime »

Et pour un pied de nez à Aldes, n’oubliez pas d’alimenter l’esp avec l’USB de la passerelle :rofl:

C’est clair… déformation professionnelle de ma part !

Bon faut que je trouve ce qui ne va pas chez moi. J’ai un ESP8266, peut-être essayer avec un ESP32. Mais je penche plutôt pour un mauvais contact quelque part.

Bon en tous cas c’est trop cool, je suis trop content là !

Moi aussi je suis super content, depuis le temps que je réfléchis à comment faire, en fait c’était vraiment pas compliqué, c’est fou que personne ne l’ait fait avant nous.
Solution fiable, sécurisée, pas chère, open source, locale…
Et merci @visvic pour les docs, ça nous a bien aidé, je sais pas comment t’as fait mais t’as bien joué le coup !
Dommage qu’on ne puisse pas récupérer la température des pièces, seulement la consigne, ça c’est nul car la télécommande centrale a ces infos.

Si, bien sûr qu’on peut !

1 « J'aime »

Essaye ça :

  - platform: modbus_controller
    name: "Thermostat 1 target temperature"
    register_type: holding
    address: 0x96
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01

Ah pardon j’ai lu trop vite. Mais ça doit être possible, puisque la box Aldesconnect la récupère bien. Il faut « juste » trouver l’adresse des registres.

hier j’avais exploré les 3000 premiers registres et j’avais rien vu.
Tu as essayé de brancher la passerelle sous Windows ? Apparemment c’est vu comme un port série. Si c’est le cas avec un sniffer modbus on pourrait voir ce que ça envoie.

Non j’ai pas essayé ça, bonne idée ! Une suggestion de sniffer ?

J’ai utilisé Serial Port Monitor pour espionner la télécommande, il a bien fonctionné. C’est en version d’essai mais juste pour tester ça suffit.

1 « J'aime »

J’ai mis à jour la config esphome avec tous les registres, en lecture uniquement pour le moment.
J’ai pas encore décodé le format de la date et de l’heure, j’ai laissé en brut :

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

modbus_controller:
- address: 0x1
  update_interval: 10s


text_sensor:
  ###########################
  # T.One AIR & T.One AquaAIR
  - platform: modbus_controller
    name: "Aiguillage vanne"
    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;
  - platform: modbus_controller
    name: "Mode Air"
    register_type: holding
    address: 0x007A
    raw_encode: HEXBYTES
    lambda: |-
      uint16_t value = modbus_controller::word_from_hex_str(x, 0);
      switch (value) {
        case 0: return std::string("Off");
        case 1: return std::string("Confort Chauffage");
        case 2: return std::string("Eco Chauffage");
        case 3: return std::string("Prog A Chauffage");
        case 4: return std::string("Prog B Chauffage");
        case 5: return std::string("Confort Clim");
        case 6: return std::string("Boost Clim");
        case 7: return std::string("Prog C Clim");
        case 8: return std::string("Prog D Clim");
        case 9: return std::string("Ventilation");
        default: return std::string("Unknown");
      }
      return x;
  - platform: modbus_controller
    name: "Mode ECS"
    register_type: holding
    address: 0x0071
    raw_encode: HEXBYTES
    lambda: |-
      uint16_t value = modbus_controller::word_from_hex_str(x, 0);
      switch (value) {
        case 0: return std::string("Off");
        case 1: return std::string("On");
        case 2: return std::string("Boost");
        default: return std::string("Unknown");
      }
      return x;
  - platform: modbus_controller
    name: "Etat filtre"
    register_type: holding
    address: 0x0082
    raw_encode: HEXBYTES
    lambda: |-
      uint16_t value = modbus_controller::word_from_hex_str(x, 0);
      switch (value) {
        case 0: return std::string("Bon");
        case 1: return std::string("A changer");
        default: return std::string("Unknown");
      }
      return x;
sensor:
  ###########################
  # T.One AIR & T.One AquaAIR
  - platform: modbus_controller
    name: "Version logiciel régulateur"
    register_type: holding
    address: 0x0001
    value_type: U_WORD
  - platform: modbus_controller
    name: "Identifiant IHM"
    register_type: holding
    address: 0x000E
    value_type: U_DWORD
  - platform: modbus_controller
    name: "Date/Heure régulateur"
    register_type: holding
    address: 0x001D
    value_type: U_DWORD
  - platform: modbus_controller
    name: "Température pièce principale"
    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"
    register_type: holding
    address: 0x006E
    value_type: U_WORD
    unit_of_measurement: "L"
  - platform: modbus_controller
    name: "Consigne ECS"
    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"
    register_type: holding
    address: 0x0070
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    name: "Consigne thermostat 1"
    register_type: holding
    address: 0x96
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    name: "Consigne 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
    name: "Consigne 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
    name: "Consigne thermostat 4"
    register_type: holding
    address: 0x98
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    name: "Consigne thermostat 5"
    register_type: holding
    address: 0x99
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    name: "Consigne thermostat 6"
    register_type: holding
    address: 0x9A
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    name: "Consigne thermostat 7"
    register_type: holding
    address: 0x9B
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    name: "Consigne thermostat 8"
    register_type: holding
    address: 0x9C
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    name: "Consigne thermostat 9"
    register_type: holding
    address: 0x9D
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    name: "Consigne thermostat 10"
    register_type: holding
    address: 0x9E
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    name: "Consigne thermostat 11"
    register_type: holding
    address: 0x9F
    value_type: U_WORD
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    filters:
      - multiply: 0.01
  - platform: modbus_controller
    name: "Tarif HP"
    register_type: holding
    address: 0xA0
    value_type: U_WORD
    unit_of_measurement: "€"
    accuracy_decimals: 4
    filters:
      - multiply: 0.001
  - platform: modbus_controller
    name: "Tarif HC"
    register_type: holding
    address: 0xA1
    value_type: U_WORD
    unit_of_measurement: "€"
    accuracy_decimals: 4
    filters:
      - multiply: 0.001

Ce qui donne chez moi :

1 « J'aime »

Cool ! Moi j’arrive toujours pas… J’ai les 2 leds TX et RX qui clignotent plus ou moins en même temps, toi aussi ? J’ai essayé d’alimenter l’ESP par un transfo 5V au lieu de la prise USB sur le T-One, pour éviter le trafic USB. La flemme de souder un ESP32 mais va falloir…

Oui j’ai les LED qui clignotent en même temps depuis que ça marche, chaque 5s comme ce que j’ai paramétré. Bizarre que ça fonctionne pas, t’as pas inversé Rx et Tx ? Moi il m’a fallu mettre Tx sur Tx et Rx sur Rx.