VMC Aldes EasyHOME PureAIR Premium -> Aldes PureFlow MQTT

Je peux fournir davantage de trames + capteurs

Le polluant dominant à commuté, il reste le capteur de CO2, sensor.easyhome_pureair_compact_premium_n_a_air_quality_index qui doit, je pense donner la valeur en % du polluant dominant etc.

Mais oui, ça avance c’est cool :smiley:

Par contre, la méthode de calcul, je n’ai pas trop d’idées sur ce sujet. @yanoooou te sera beaucoup d’une plus grande aide que moi :confused:

Les octets suivant pourraient donner ceci d’après Claude :

ITEMS_MAPPING = {
    # Températures (formules de conversion différentes par capteur)
    "Temp_1": {"Index": 14, "Type": 1, "Publish": True},  # Formule: valeur / 4.55
    "Temp_2": {"Index": 16, "Type": 1, "Publish": True},  # Formule: valeur / 5.66
    "Temp_3": {"Index": 18, "Type": 1, "Publish": True},  # Formule: à déterminer (pas de données)
    
    # Humidités (conversion directe hexa → décimal)
    "Hygro_1": {"Index": 17, "Type": 0, "Publish": True},  # Valeur directe en %
    "Hygro_2": {"Index": 19, "Type": 0, "Publish": True},  # Valeur directe en %
    "Hygro_3": {"Index": 15, "Type": 0, "Publish": True},  # Valeur directe en %
    
    # CO2 (16-bit little-endian)
    "CO2": {"Index": 20, "Type": 2, "Publish": True},  # Octets 20-21 en ppm
    
    # Qualité de l'air
    "Indice_polluant": {"Index": 17, "Type": 0, "Publish": True},  # Identique à Hygro_1
    "Type_polluant": {"Index": 4, "Type": 0, "Publish": True},     # Code type (à vérifier)
    
    # Système
    "Puissance": {"Index": 23, "Type": 0, "Publish": True},  # Valeur directe en W
}

Vérifications avec vos données :

Trame 22:06:50

Octets: 5B 28 67 4E 5F 29 F0 02 17 F4
Index:  14 15 16 17 18 19 20 21 22 23
  • Temp_2 (16): 67 = 103 → 103/5.66 = 18.2°C :white_check_mark:
  • Hygro_3 (15): 28 = 40% :white_check_mark:
  • Hygro_2 (19): 29 = 41% ≈ 42% :white_check_mark:

Trame 22:11:03

Octets: 5C 28 67 55 60 29 F0 02 17 FF
Index:  14 15 16 17 18 19 20 21 22 23
  • Temp_1 (14): 5C = 92 → 92/4.55 = 20.2°C :white_check_mark:
  • Hygro_1 (17): 55 = 85% ≈ 85.91% :white_check_mark:
  • CO2 (20-21): F0 02 → 0x02F0 = 752 ppm :white_check_mark:
  • Puissance (23): FF = 255 W :white_check_mark:
  • Indice (17): 55 = 85 ≈ 84 :white_check_mark:

D’après ce message :

    Hygro_1 : 85,9145184053275% (22:10:57)
    Hygro_2 : 42% (22:05:57)
    Hygro_3 : 40% (22:05:57)
    Temp_1 : 20,2°C(22:10:57)
    Temp_2 : 18,2°C (22:05:57)
    Temp_3 : ?°C (pas de rafraichissement)
    CO2 : 752 ppm (22:10:57)
    Indice polluant : 84 (22:10:57)
    Type polluant : toujours humidité
    Puissance : 255 W (22:10:57)

Trame VMC la plus proche de 22:05:57 -> 22:06:50:145 : 87 00 1B 4B 03 01 00 01 90 01 43 00 00 00 5B 28 67 4E 5F 29 F0 02 17 F4 90 01 4A A2
Trame VMC la plus proche de 22:10:57 -> 22:11:03:642 : 87 00 1B 4B 03 01 00 01 EE 02 65 00 00 00 5C 28 67 55 60 29 F0 02 17 FF EE 02 4A AE

Le problème c’est que tous les capteurs sous HA s’actualisent pas en même temps donc c’est le b*rdel lol

EDIT:

Après sniffage etc, bonne lecture :sweat_smile:

Voici un document récapitulatif prêt à partager sur le forum :


Décodage des trames VMC Aldes EasyHome PureAir Compact Premium

:white_check_mark: Mapping confirmé

Structure de la trame

87 00 1B 4B 03 01 00 01 90 01 43 00 00 00 5D 29 6E 2D 61 27 97 02 17 05 90 01 4A 01
0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

Capteurs identifiés

Humidités (conversion directe hexa → décimal)

Capteur Index Conversion Exemple
Hygro_1 17 Valeur directe en % 2D = 45%
Hygro_2 19 Valeur directe en % 27 = 39%
Hygro_3 15 Valeur directe en % 29 = 41%

Températures (formules de division)

Capteur Index Formule Exemple
Temp_1 14 valeur / 4.55 5C (92) → 20.2°C
Temp_2 16 valeur / 5.66 67 (103) → 18.2°C
Temp_3 18 valeur / 5.48 61 (97) → 17.7°C

:warning: Note importante : Les trois capteurs de température utilisent des facteurs de division différents, ce qui est inhabituel. Cela pourrait indiquer une calibration individuelle par capteur.

CO2

Capteur Index Conversion Exemple
CO2 20-21 16-bit little-endian en ppm F0 0202F0 = 752 ppm

Puissance ventilateur

Capteur Index Conversion Exemple
Puissance 23 Valeur directe en W FF = 255 W

Capteurs non identifiés

Les capteurs suivants existent dans Home Assistant mais leur position dans la trame n’est pas encore identifiée :

  • Air Quality Index (AQI) - actuellement observé à 25
  • Humidity Variation - variation d’humidité en %, actuellement ~6-8%
  • Type de polluant dominant - ex: « humidité », « monoxyde », etc.
  • Indice du polluant - quand le polluant n’est pas l’humidité

Octets non mappés

Position Valeur observée Observations
4 03 Constant - Type de polluant ?
6 01 ou 00 Binaire - État système ?
22 17 Constant
24-25 90 01 ou EE 02 Varie - 16-bit ?
26 4A (74) Varie
27 Variable Probablement checksum

Difficultés rencontrées

  • :stopwatch: Mises à jour asynchrones : Les capteurs HA ne se rafraîchissent pas en même temps ni à fréquence régulière
  • :bar_chart: Décalage temporel : Difficile de corréler exactement une trame avec les valeurs HA
  • :1234: Formules variables : Les températures utilisent des facteurs de division différents par capteur

:laptop: Exemple de code Python pour décodage

def decode_vmc_frame(frame):
    """
    Décode une trame VMC Aldes EasyHome PureAir Compact Premium
    frame: bytes de 28 octets
    """
    if len(frame) != 28:
        return None
    
    data = {}
    
    # Humidités (conversion directe)
    data['hygro_1'] = frame[17]  # %
    data['hygro_2'] = frame[19]  # %
    data['hygro_3'] = frame[15]  # %
    
    # Températures (avec formules spécifiques)
    data['temp_1'] = frame[14] / 4.55  # °C
    data['temp_2'] = frame[16] / 5.66  # °C
    data['temp_3'] = frame[18] / 5.48  # °C
    
    # CO2 (16-bit little-endian)
    data['co2'] = (frame[21] << 8) | frame[20]  # ppm
    
    # Puissance
    data['power'] = frame[23]  # W
    
    return data

:memo: Exemple de trame décodée

Trame brute :

87 00 1B 4B 03 01 00 01 90 01 43 00 00 00 5C 28 67 55 60 29 F0 02 17 FF EE 02 4A AE

Décodage :

  • Hygro_1 : 85% (octet 17 = 55)
  • Hygro_2 : 41% (octet 19 = 29)
  • Hygro_3 : 40% (octet 15 = 28)
  • Temp_1 : 20.2°C (octet 14 = 5C = 92 → 92/4.55)
  • Temp_2 : 18.5°C (octet 16 = 67 = 103 → 103/5.66)
  • Temp_3 : 18.0°C (octet 18 = 60 = 96 → 96/5.48)
  • CO2 : 752 ppm (octets 20-21 = F0 0202F0)
  • Puissance : 255 W (octet 23 = FF)