Forum

Please or Register to create posts and topics.

MQTT et Home Assistant

Page 1 of 2Next

Bonjour,

J'aurais besoin d'aide pour configurer le Winky dans Home Assistant et récupérer les données via son broker MQTT.

J'ai un Winky ESP8266 à jour (V56). Celui-ci est correctement configuré : il remonte bien les informations sur le Grafana et il envoie bien les trames MQTT.

Le broker les reçoit correctement et j'arrive à les voir dans Home Assistant via MQTT Explorer.

Le topic "Winky/xky-MAC_Addr" donnent les infos que je voudrais récupérer, mais elles n'apparaissent pas dans HA.

J'ai essayé de créer le capteur dans mon "configuration.yaml" mais je n'arrive pas à avoir toutes les valeurs dans un capteur unique (sur le modèle de mon Denky-D4).

Est-il possible de rendre le Winky compatible avec le mode "auto-discovery" de MQTT ?

Ou de m'aiguiller sur la création du capteur dans HA ?

Merci.

Bonjour,

je vais voir avec l'équipe de HA pour voir comment faire.

Bonne journée,

Jérôme

Lionel has reacted to this post.
Lionel

Bonjour

J'ai configuré comme suit mon HomeAssistant dans configuration.yaml et le winky en MQTT est bien reconnu comme étant un device unique.

Attention l'indentation disparait lors du copier-coller ci-dessous

mqtt:
sensor:

# PAPP dans la trame Téléinfo représente la Puissance APParente instantanée en Volt-ampères (VA)
- name: "Puissance électrique consommée"
unique_id: winky_power_consumption
state_topic: "homeassistant/winky/xky-40:4c:ca:46:a5:cc" # A personnaliser selon votre config MQTT dans le Winky
unit_of_measurement: "W"
value_template: "{{ value_json.PAPP }}"
device_class: power
state_class: measurement
icon: mdi:lightbulb-on
device:
identifiers:
- winky_0x404cca46a5cc
name: "Winky"
model: "ESP32 C6"
manufacturer: "G2ELab"

# le champ indiquant si on est en heures creuses ou non est le champ PTEC (Période Tarifaire En Cours).
- name: "Téléinfo PTEC"
unique_id: "teleinfo_ptec"
state_topic: "homeassistant/winky/xky-40:4c:ca:46:a5:cc"
value_template: "{{ value_json.PTEC }}"
device:
identifiers:
- winky_0x404cca46a5cc

binary_sensor:
name: "Tarif Heures Creuses"
unique_id: "tarif_heures_creuses"
state_topic: "homeassistant/winky/xky-40:4c:ca:46:a5:cc"
value_template: >-
{{ value_json.PTEC in ['HC..', 'HCJB', 'HCJW', 'HCJR'] }}
payload_on: true
payload_off: false
device_class: power
device:
identifiers:
- winky_0x404cca46a5cc

Lionel has reacted to this post.
Lionel

Bonjour Alain,

 

Merci pour ce partage. De mon côté je n'ai pas de champ PAPP dans la trame json reçue, en revanche j'ai bien le champ PTEC.

 

Quand je regarde la doc d'enedis : https://www.enedis.fr/media/2035/download, j'ai de nombreux champs du paragraphe 6.2.2 mais je n'ai pas tous les champs du paragraphe 6.1.1, en particulier le PAPP est absent (j'ai le PTEC avec une valeur "").

Peux-être est-ce un problème de firmware : mon firmware correspond à V51.

 

Thierry

 

 

Bonjour Thierry,

Mon compteur Linky est en mode historique (6.1.1) alors que le tient semble être en mode standard (6.2.2) et du coup ce ne sont pas du tout les mêmes champs.

Il faut alors adapter le YAML en s'aidant de mqtt explorer.

Cdt

Effectivement mon compteur est en mode Standard et non historique. Je crois que le champ correspondant est SINSTS (soutirée instantanée). Je vais essayer d'adapter ton paramétrage.

 

Merci

Bonjour,

Merci pour le test et l'intégration dans HA!

Pour l'histoire de PAPP, yes c'est exactement cela et il y a pas mal d'autres étiquettes qui ont cette dualité.

Après, si vous le voulez, je peux mettre les équivalents Historique/Standard dans l'envoi MQTT car je l'ai fait pour les envois vers l'influxDB du serveur de l'expérimentation mais cela risque de faire du doublon pour quelqu'un qui possède un broker perso.

En tout cas encore merci,

Jérôme

Bonjour

A mon avis le mieux serait que le Winky en fonction du mode historique/standard envoie en MQTT discovery à Home Assistant son auto-config.

A voir si il est possible de reprendre le code de teleinfo2mqtt/app/mqtt/hass.js at master · fmartinou/teleinfo2mqtt (github.com) dans le Winky pour la config MQTT discovery HA

Cdt

 

Thierry and Lionel have reacted to this post.
ThierryLionel
Merci à tous pour cette aide précieuse.
Je vais voir pour intégrer ça dans mon HA. ^_^
Quote from AlainC on 7 octobre 2024, 22 h 26 min

Bonjour

A mon avis le mieux serait que le Winky en fonction du mode historique/standard envoie en MQTT discovery à Home Assistant son auto-config.

A voir si il est possible de reprendre le code de teleinfo2mqtt/app/mqtt/hass.js at master · fmartinou/teleinfo2mqtt (github.com) dans le Winky pour la config MQTT discovery HA

Cdt

Je plussois fortement !!!! Et je pense que ça servirait à d'autres systèmes que HA non ?

Bonjour,

MQTT Discovery est une fonctionnalité de Home Assistant (mais pas exclusif à cet environnement et chaque environnement à ses propres standards pour cette fonctionnalité, soit, une fonction différente pour chaque environnement ... Mais je trouve que HA est celui qui intègre le mieux cette fonctionnalité ).

Pour publier un topic de découverte dans HA, il faut respecter le format :

homeassistant/<component_type>/<unique_id>/config

Ou le <component_type> fait référence à une entité, example : sensor, binary_sensor, switch, light, cover, climate, fan, lock, alarm_control_panel, camera, media_player, thermostat, button.

Et <unique_id> sera, comme son nom l'indique, un identifiant unique.

Par exemple :

homeassistant/sensor/myTemp/config

Le contenu à publier dans se topic respectera le format JSON et contiendra diverse informations de configuration 🙂

Par exemple :

Exemple explicatif :

{

"name": "Temperature Sensor", // Nom visible dans Home Assistant

"unique_id": "myTemp", // ID unique du capteur

"state_topic": "home/mySensor/temperature", // Le topic où seront envoyées les données de température

"unit_of_measurement": "°C", // L'unité de la mesure (ici, des degrés Celsius)

"device_class": "temperature", // La classe de l'appareil (affichera l'icône correspondante dans Home Assistant)

"value_template": "{{ value | float }}", // Conversion des données en float

"availability_topic": "home/mySensor/status", // (Optionnel) Topic indiquant la disponibilité du capteur (online/offline)

"payload_available": "online",

"payload_not_available": "offline"

}

Une fois le topic de configuration envoyé, on pourra publier les informations dans le topic :

home/mySensor/temperature


Exemple concret :

Topic: homeassistant/sensor/winkytension/config

Payload:

{

    "name": "WinKy Tension",

    "state_topic": "winkysystem/tension",

    "unit_of_measurement": "V",

    "device_class": "voltage",

    "unique_id": "winkytension",

    "value_template": "{{ value_json.tension }}",

    "device": {

        "identifiers": ["WinKy_system"],

        "name": "WinKy System",

        "model": "WinKy V56.3.SD",

        "manufacturer": "G2Elab - CNRS/UGA/G-INP"

    }

}

Puis :

Topic: winkysystem/tension

Payload: {"tension": 230}


Je vais essayer de travailler sur le code pour intégrer tout ca 🙂

Après, libre à Jérôme de l'intégrer au non dans une potentiel nouvelle version du micrologiciel WinKY 😀

À la grosse louche (il peut y avoir des erreurs ou du manquant, je n'ai pas encore refait un tour de vérification), j'ai relevé les données qui sont envoyés en fonction du mode Historique ou Standard :

Glossaire des variables OUTPUT :

>>> DATA DISPO EN MODE STANDARD :
// Var Interne :
ModeTic          // Mode de communication TIC (Télé-Information Client)
FWVersion        // Version du firmware
BoardVersion     // Version de la carte électronique
RSSI             // Niveau de signal WiFi (Received Signal Strength Indicator)
TimeStartup      // Temps écoulé depuis le démarrage (en millisecondes)
TimeDecode       // Temps de décodage des données Linky
TimePrepa        // Temps de préparation des données à envoyer
TimeConn         // Temps de connexion WiFi
UseOptimWifi     // Indicateur d'utilisation de l'optimisation WiFi
MidTryWifiCon    // Nombre de tentatives intermédiaires de connexion WiFi
OffsetDeepsleep  // Décalage avant la mise en veille profonde (Deep Sleep)
UseLed           // Indicateur d'utilisation de la LED pour les notifications
MacAdress        // Adresse MAC de l'appareil, transmise uniquement si InfluxDB activé
// Var LinKy (données Linky en mode standard) :
ADSC             // Adresse du compteur Linky (Numéro de série)
VTIC             // Version du mode de télé-information (Historique ou Standard)
DATE             // Date et heure de la lecture des données
NGTF             // Numéro de la période tarifaire en cours
LTARF            // Libellé tarifaire (tarif applicable)
OPTARIF          // Option tarifaire (identique à LTARF)
PTEC             // Période tarifaire en cours
EAST             // Index de consommation active totale
BASE             // Index de consommation en option Base (identique à EAST)
EASF01 à EASF10  // Index de consommation active répartie par période tarifaire (EASF01, EASF02, EASF03, EASF04, EASF05, EASF06, EASF07, EASF08, EASF09, EASF10)
EASD01 à EASD04  // Index de consommation active (journalière) (EASD01, EASD02, EASD03, EASD04)
ERQ1 à ERQ4      // Index d'énergie réactive (consommation non facturée) (ERQ1, ERQ2, ERQ3, ERQ4)
EAIT             // Index d'énergie apparente totale
IRMS1 à IRMS3    // Courant efficace pour chacune des phases (1 à 3) (IRMS1, IRMS2, IRMS3)
URMS1 à URMS3    // Tension efficace pour chacune des phases (1 à 3) (URMS1, URMS2, URMS3)
PREF             // Puissance de référence souscrite (kVA)
PCOUP            // Puissance de coupure (en cas de dépassement)
SINSTS           // Puissance instantanée soutirée (watts)
PAPP             // Puissance apparente (identique à SINSTS)
SINSTS1 à SINSTS3// Puissance instantanée par phase (1 à 3) (SINSTS1, SINSTS2, SINSTS3)
SMAXSN           // Puissance maximale soutirée
SMAXSN1 à SMAXSN3// Puissance maximale soutirée par phase (SMAXSN1, SMAXSN2, SMAXSN3)
SMAXSN-1         // Puissance maximale soutirée du jour précédent
SINSTI           // Puissance instantanée injectée (watts)
SMAXIN           // Puissance maximale injectée
SMAXIN-1         // Puissance maximale injectée du jour précédent
CCAIN            // Consommation cumulée d'énergie active injectée
CCAIN-1          // Consommation cumulée d'énergie active injectée du jour précédent
CCASN            // Consommation cumulée d'énergie active soutirée
CCASN-1          // Consommation cumulée d'énergie active soutirée du jour précédent
UMOY1 - UMOY3    // Tension moyenne par phase (1 à 3) (UMOY1, UMOY2, UMOY3)
STGE             // État du gestionnaire d'énergie
EContactSec      // État du contact sec (relais)
EOrganeCoupure   // État de l'organe de coupure (disjoncteur)
ECache           // Cache pour les informations cachées
ESurtension      // Indicateur de surtension détectée
EDepassement     // Indicateur de dépassement de la puissance souscrite
EFonctionnement  // État du fonctionnement global
ESensEnergie     // Sens de l'énergie (consommation ou injection)
ETarifFourniture // Tarif applicable par le fournisseur d'énergie
ETarifDistributeur// Tarif applicable par le distributeur d'énergie
EHorloge         // Horloge interne du compteur
ETic             // Mode TIC en cours (Historique ou Standard)
EComEuridis      // État de la communication Euridis (utilisée par certains systèmes de gestion)
EStatusCPL       // État de la communication par courants porteurs en ligne (CPL)
ESyncroCPL       // Synchronisation des données via CPL
ECouleurJ        // Couleur du jour actuel (tarification variable)
AUJOURDHUI       // Information du jour actuel (tarification)
ECouleurD        // Couleur du jour suivant (prévision)
DEMAIN           // Information du jour suivant (prévision tarifaire)
EPrevisPM        // Prévision de la pointe mobile (tarif plus élevé)
EPM              // Indicateur de pointe mobile
DPM1 à DPM3      // Début de la période de pointe mobile (sur 3 jours) (DPM1, DPM2, DPM3)
FPM1 à FPM3      // Fin de la période de pointe mobile (sur 3 jours) (FPM1, FPM2, FPM3)
MSG1             // Message d’information n°1 (envoyé par le fournisseur)
MSG2             // Message d’information n°2 (envoyé par le fournisseur)
PRM              // Point de relève du compteur
RELAIS           // État des relais (utilisés pour des commandes externes)
NTARF            // Nombre de périodes tarifaires en cours
NJOURF           // Numéro du jour en cours
NJOURF1          // Numéro du jour suivant
PJOURF1          // Période tarifaire en cours le jour suivant
PPOINTE          // Période de pointe (indicateur)
HCHC             // Heures creuses (index de consommation)
HCHP             // Heures pleines (index de consommation)
BBRHCJB à BBRHPJR// Index de consommation en heures creuses/pleines par couleur [Bleu, Jaune, Rouge] (BBRHCJB, BBRHPJB, BBRHCJW, BBRHPJW, BBRHCJR, BBRHPJR)
EJPHN            // Index pour les jours de pointe (tarif normal)
EJPHPM           // Index pour les jours de pointe mobile
>>> DATA DISPO EN MODE HISTORIQUE :
// Var Interne :
ModeTic          // Mode de communication TIC
FWVersion        // Version du firmware
BoardVersion     // Version de la carte électronique
RSSI             // Niveau de signal WiFi
TimeStartup      // Temps depuis le démarrage
TimeDecode       // Temps de décodage des données Linky
TimePrepa        // Temps de préparation des données
TimeConn         // Temps de connexion WiFi
UseOptimWifi     // Indicateur d'optimisation WiFi
MidTryWifiCon    // Tentatives intermédiaires de connexion
OffsetDeepsleep  // Délai avant la mise en veille profonde
UseLed           // Indicateur d'usage de la LED
MacAdress        // Adresse MAC de l'appareil
// Var LinKy (données Linky en mode historique) :
ADCO             // Adresse du compteur (Numéro de série)
OPTARIF          // Option tarifaire
ISOUSC           // Intensité souscrite
BASE             // Index de consommation en option Base
HCHC             // Index de consommation en heures creuses
HCHP             // Index de consommation en heures pleines
EJPHN            // Index de consommation pour les jours normaux
EJPHNEJPHPM      // Index pour les jours de pointe mobile
BBRHCJB à BBRHPJR// Index de consommation par couleur [Bleu, Jaune, Rouge] (BBRHCJB, BBRHPJB, BBRHCJW, BBRHPJW, BBRHCJR, BBRHPJR)
PMAX             // Puissance maximale atteinte
PEJP             // Index de consommation en période EJP (Effacement Jour de Pointe)
PTEC             // Période tarifaire en cours
DEMAIN           // Information tarifaire du lendemain
IINST            // Intensité instantanée totale
IINST1 à IINST3  // Intensité instantanée par phase (IINST1, IINST2, IINST3)
IMAX             // Intensité maximale atteinte
IMAX1 à IMAX3    // Intensité maximale par phase (IMAX1, IMAX2, IMAX3)
ADPS             // Avertissement de dépassement de puissance
PAPP             // Puissance apparente
HHPHC            // Horloge haute performance
MOTDETAT         // État du compteur (message d'erreur ou d'état)

Lionel and AlainC have reacted to this post.
LionelAlainC
Page 1 of 2Next