VMC Aldes EasyHOME PureAIR Premium -> Aldes PureFlow MQTT

Super ça !

J’ai une une actualisation de deux capteurs :

# Date/Heure Trame Taille Module Type
14235 12/01/2026 20:27:06.693 FD 87 11 4B 02 02 00 00 43 FF 00 00 FF FF FF FF 4A 94 18B AldesBox RX
14234 12/01/2026 20:26:56.589 FD 87 11 4B 02 02 00 00 43 FF 00 00 FF FF FF FF 4A 94 18B AldesBox RX
14233 12/01/2026 20:26:46.486 FD 87 11 4B 02 02 00 00 43 FF 00 00 FF FF FF FF 4A 94 18B AldesBox RX
14232 12/01/2026 20:26:36.398 FD 87 11 4B 02 02 00 00 43 FF 00 00 FF FF FF FF 4A 94 18B AldesBox RX
14231 12/01/2026 20:26:26.291 FD 87 11 4B 02 02 00 00 43 FF 00 00 FF FF FF FF 4A 94 18B AldesBox RX
14230 12/01/2026 20:26:15.195 87 00 1B 4B 03 01 00 01 90 01 43 00 00 00 5D 29 6D 2D 61 28 FB 02 17 02 90 01 4A A0 28B VMC EasyHome RX
14229 12/01/2026 20:26:15.192 FD 87 11 4B 02 02 00 00 43 FF 00 00 FF FF FF FF 4A 94 18B AldesBox RX
14228 12/01/2026 20:26:05.106 87 00 1B 4B 03 01 00 01 90 01 43 00 00 00 5D 29 6D 2D 61 28 FB 02 17 02 90 01 4A A0 28B VMC EasyHome RX
14227 12/01/2026 20:26:05.103 FD 87 11 4B 02 02 00 00 43 FF 00 00 FF FF FF FF 4A 94 18B AldesBox RX
14226 12/01/2026 20:25:55.994 87 00 1B 4B 03 01 00 01 90 01 43 00 00 00 5D 29 6D 2D 61 28 FB 02 17 02 90 01 4A A0 28B VMC EasyHome RX
14225 12/01/2026 20:25:55.991 FD 87 11 4B 02 02 00 00 43 FF 00 00 FF FF FF FF 4A 94 18B AldesBox RX
14224 12/01/2026 20:25:45.890 FD 87 11 4B 02 02 00 00 43 FF 00 00 FF FF FF FF 4A 94 18B AldesBox RX
14223 12/01/2026 20:25:35.793 FD 87 11 4B 02 02 00 00 43 FF 00 00 FF FF FF FF 4A 94 18B AldesBox RX
14222 12/01/2026 20:25:25.701 87 00 1B 4B 03 01 00 01 90 01 43 00 00 00 5D 29 6D 2D 61 28 FB 02 17 02 90 01 4A A0 28B VMC EasyHome RX
14221 12/01/2026 20:25:25.698 FD 87 11 4B 02 02 00 00 43 FF 00 00 FF FF FF FF 4A 94 18B AldesBox RX
14220 12/01/2026 20:25:15.593 87 00 1B 4B 03 01 00 01 90 01 43 00 00 00 5D 29 6D 2D 61 28 FB 02 17 02 90 01 4A A0 28B VMC EasyHome RX
14219 12/01/2026 20:25:15.589 FD 87 11 4B 02 02 00 00 43 FF 00 00 FF FF FF FF 4A 94 18B AldesBox RX
14218 12/01/2026 20:25:05.495 87 00 1B 4B 03 01 00 01 90 01 43 00 00 00 5D 29 6D 2D 61 28 FB 02 17 02 90 01 4A A0 28B VMC EasyHome RX
14217 12/01/2026 20:25:05.492 FD 87 11 4B 02 02 00 00 43 FF 00 00 FF FF FF FF 4A 94 18B AldesBox RX
14216 12/01/2026 20:24:55.394 87 00 1B 4B 03 01 00 01 90 01 43 00 00 00 5D 29 6D 2D 61 28 FB 02 17 02 90 01 4A A0 28B VMC EasyHome RX

Temp1 : 21,5 à 20:25:07
Temp2 : Pas actualisé
Temp3 : 17,7 à 20:25:07

Je viens de mettre à jour la librairie uAldes avec ce nouveau type de données (type 6).

Ok donc pour récapituler, nous avons :

  • Humidité 1 en %
  • Humidité 2 en %
  • Humidité 3 en %
  • Température 1 en °C avec le décodeur
  • Température 2 en °C avec le décodeur
  • Température 3 en °C avec le décodeur
  • Capteur CO2 en PPM
  • Capteur puissance moteur en Watts
  • Capteur variation humidité en % (lié au puissance moteurs via l’intégration lol)

Il manque le capteur Air Quality Index, le polluant dominant (car c’est toujours l’humidité) ainsi que le Mode si je ne me trompe pas ?

je trouve

Temp1 : 17.25
Temp2 : 21.25
Temp3 : 18.25

Ah et pourtant d’après HA :

Temp1 : 21,5 à 20:25:07
Temp2 : Pas actualisé
Temp3 : 17,7 à 20:25:07

Je vais te partager un autre échantillon de trames, temp1 vient de s’actualiser, je vais éditer.

temp1 : 21.7 à 20:35:07

Trame sniffer la plus proche : 12/01/2026 20:36:42.411;87 00 1B 4B 03 01 00 01 EE 02 65 00 00 00 5D 2A 70 5E 62 2A DC 02 17 FF EE 02 4A AA

C’est possible qu’il soit supérieur, il est en pleine montée car ma compagne est sous la douche, c’est pour ça que j’en profite pour partager car il s’actualise assez vite en ce moment.

EDIT: 23,5 à 20:45:07

Trame la plus proche : 87 00 1B 4B 03 01 00 01 EE 02 65 00 00 00 5F 2A 73 5E 64 29 DC 02 17 FF EE 02 4A A4

j’ai :

Temp_1 (kitchen) : 17.25

Temp_2 (bath_1) : 22.0

Temp_3 (bath_2) : 18.5

EDIT:

Temp_1 (kitchen) : 17.75

Temp_2 (bath_1) : 22.75

Temp_3 (bath_2) : 19.0

D’après HA à 20:35:07 :

bathroom1 : 21.7
bathroom2 : à 20:15:07 : 18,7 et 20:40:07 : 19 donc en augmentation aussi
kitchen : pas de donnée actuelle (mais 20:25:07 : 17,7 puis 20:45:07 : 18 donc en augmentation)

J’essaye d’avoir des données factuelles, mais très difficile avec des capteurs aléatoires :confused:

EDIT :

Ca m’a l’air de coller !

Pour pouvoir vraiment valider, il faudrait comparer les donnees du cloud et celle avec uAldes + Mqtt.

Oui il faudrait que tout tourne en même temps, seulement l’add-on de @Frederic_Duloum ne fonctionne pas chez moi pour avoir le MQTT :confused:

Salut,

Le polluant dominant est passé de « Humidité » à « Monoxyde » ce matin :

Humidité :

87 00 1B 4B 03 01 00 01 90 01 43 00 00 00 5F 2C 6D 2E 63 2A 71 03 17 03 90 01 4A 1E

Monoxyde :

87 00 1B 4B 03 01 00 01 90 01 43 00 00 00 5D 2A 6D 2D 61 28 FB 02 17 02 90 01 4A 9F

D’après chatGPT (encore une fois je n’arrive pas à décoder lol) :

Le changement de polluant dominant (Humidité ↔ Monoxyde) est codé à l’octet d’index 21 (0-based) de la trame VMC EasyHome (28 octets).

Cet octet contient un état logique, pas une mesure.


Détail précis dans la trame

Trame (rappel) :

87 00 1B 4B 03 01 00 01 90 01 43 00 00 00 
5F 2C 6D 2E 63 2A 71 03 17 03 90 01 4A 1E

Indexation 0-based (comme en Python / C) :

Index Octet Rôle
20 0x71 Indicateur associé au polluant (pas une valeur brute)
21 0x03 Type de polluant dominant
22 0x17 État système
23 0x03 Puissance / variation liée au polluant

Valeurs observées (confirmées par tes trames)

Index 21 Signification
0x02 Humidité dominante
0x03 Monoxyde / pollution dominante

:right_arrow: C’est cet octet 21 qui bascule quand l’UI Aldes change de polluant prioritaire.


Pourquoi on est sûr que c’est un état (et pas une mesure)

  • Valeurs discrètes (02, 03)

  • Changement instantané

  • Synchronisé avec :

    • l’UI Aldes
    • la puissance (index 23)
  • Aucune cohérence physique si interprété comme ppm ou %RH

:backhand_index_pointing_right: C’est donc un flag de décision interne du firmware.


Formulation prête à transmettre (propre)

Dans les trames VMC EasyHome (28 octets), le polluant dominant est indiqué par un octet d’état situé à l’index 21 (indexation 0-based).
La valeur 0x02 correspond à une régulation basée sur l’humidité, tandis que 0x03 correspond à une régulation basée sur la pollution (monoxyde).
Ce champ est un indicateur logique et non une mesure brute.


Aussi, d’après mon message plus haut #76 (tous les modes) et #105 le mode BOOST hygro :

Tableau récapitulatif clair

Mode UI / État Octet 8 Octet 9 Code
VACANCES B4 00 0xB400
QUOTIDIEN 90 01 0x9001
BOOST (manuel) EE 02 0xEE02
INVITÉS C0 03 0xC003
AIR PROG (idem Quotidien) (idem Quotidien) 0x9001
BOOST hygrométrie (auto) EE 02 0xEE02 (régime actif)

Qu’en pensez-vous ?

Salut. Désolé pour mon absence de ces derniers jours. J’ai passé un peu de temps à comprendre pourquoi ca ne fonctionne pas sur le raspberry. En fait, je créé un image mono platforme linux/AMD64.

Je me suis documenté et je viens de créer une version 0.3.0 qui je l’espère va fonctionner.

Dis moi si ca fonctionne @Quentin57520

Pour le polluant dominant, j’ai déjà vu sur ma VMC 3 valeurs différents : humidité, CO2 mais aussi temperature. J’ai constaté sur l’ensemble des trames que tu nous partage que le byte 22 e eu les valeurs 01, 02 et 03. Dans le dernier exemple il passe de 03 à 02. Je me demande si ca ne pourrait pas être 00: pas de pollant, 01 : temperature, 02 : co2 et 03 : humidité.

PS : je parle de numéro de byte qui commence à 1 et toi d’index qui commence à 0. On parle donc du même octet. lol

La valeur du QAI ne dépasse pas 100. Ici on arrive à 113, donc je serai surpris que ca soit ça.

La valeur de cet octet a toujours été de 17 en hexa sur toutes les trames que tu nous as partagé, même lorsque on est en mode self_controlled, donc pas sûr que ce soit la bonne signification.

Cet octet a pris les valeurs hexa suivantes : 11, 00, 08, 05, 02, 01.

Je constate qu’on a soit 1 bit ou 2 bits à 1 au plus. Ca me semblerait plus être en rapport avec l’état du système. Je vais creuser.

Salut,

Je suis entrain de faire la MàJ. Je viens éditer le message pour t’annoncer le résultat :wink:

EDIT: Top ça fonctionne, ta mise à jour à corriger le problème :

Salut @Frederic_Duloum,

Sur ton add-on, les valeurs sous MQTT Eplorer remontent tout les combien de temps ?
Depuis son installation, elles sont figées, je n’ai aucun mouvement, j’ai déjà vidé le cache et reboot HAOS mais c’est toujours pareil lol

EDIT:

Autant pour moi, les valeurs via ton add-on c’est celle-ci :

Les autres valeurs au-dessous sont celles via l’outil de @yanoooou et le fichier ualdes. Ce qui m’a induit en erreur c’est que sous l’add-on j’avais configuré le nom « Aldes » et il m’en a mis un autre, sans doute car il était déjà utilisé…

Salut @Quentin57520

Tu peux le configurer dans le module complémentaire. Par défaut c’est 30 secondes. Je te recommande de mettre 10 secondes car ça semble être l’intervalle de com entre le hub et la Vmc mais aucune garantie que le hub envoie dans le cloud toutes les 10 secondes.

PS : j’ai reçu hier le matos pour faire le sniffer. Je m’y colle ce weekend et pourrai ensuite investiguer avec toi.

Salut, du nouveau @Frederic_Duloum ?

Salut @Quentin57520
Non. J’étais en déplacement. Je bosserai dessus ce Weekend.

Salut. Je viens de découvrir quelque chose de très intéressant. Je ne sais pas si vous aviez l’info, mais le 3eme octet (en partant de 1) code la taille des données utiles. Il faut ajouter 1 pour l’octet de checksum. C’est vrai aussi bien pour les trames reçues que celles envoyées.
On peut donc facilement décoder les bons découpages de trames en se basant sur la valeur de cet octet.

  • Exemple 1 : FD 87 11 4B 02 02 00 00 FF FF 00 00 FF FF FF FF 4A D8
    11 (hex) => 17 (dec). Trame de 18 octets
  • Exemple 2 : 87 00 1B 4B 03 01 00 01 90 01 43 00 00 00 5B 00 57 00 51 00 00 00 00 00 90 01 4A 5C
    1B (hex) => 27 (dec). Trame de 28 octets
  • Exemple 3 : 87 00 35 4B 01 01 90 01 0C 00 00 00 5B 5B 39 00 55 56 48 00 4E 50 4D 00 C2 01 00 00 7D 00 00 00 00 00 00 00 00 00 00 00 90 01 90 01 00 00 00 00 90 01 00 00 4A 50
    35 (hex) => 53 (dec). Tame de 54 octets

Je constate également que juste après la longueur de la trame, on a toujours 4B. Et que devant le checksum on a toujours 4A, quelque soit la longeur de la trame. Je pense que ce sont des patterns de début et de fin.

Salut,

Info très intéressante oui, donc si je comprends bien ça permet de bien positionner nos octets d’informations ?
Que ce soit trames VMC ou Aldes Box alors avec 18 ou 28 bytes ?

Par contre trames de 56 bytes c’était juste un exemple ? Je n’en ai jamais eu d’aussi longue lol :grin:

Salut,

@Frederic_Duloum , je viens de tester avec les trames du T.Flow et ça fonctionne parfaitement:

Le 3eme byte donne la longueur du message sans le byte de cheksum .

Le 4eme semble bien être un byte de start et le byte de stop est le byte de start -1 (pour le T.Flow byte de start 0x33 et stop 0x32).