Cet article présente donc la nouvelle architecture complète, actuellement en production chez moi.
Dans cet article, je vous partage la configuration .yaml que j’ai mise en place dans Home Assistant pour superviser mon système Victron, composé d’un MultiPlus II, d’un MPPT 250/70, d’un SmartShunt, et de compteurs d’énergie (ET112). Cette configuration utilise le protocoles MQTT pour récupérer et traiter les données. En bonus, je vous présente deux automatisations (une pour envoyer des informations à Node-RED, une autre pour gérer la charge forcée en fonction de la couleur Tempo), ainsi que deux exemples de cartes Lovelace pour visualiser, contrôler et programmer ces données. Que vous souhaitiez suivre votre production solaire, l’état de vos batteries ou votre consommation, ce guide vous donnera une base solide pour intégrer un système Victron dans Home Assistant.
Intégration Victron MQTT Intégration
J’ai choisi celle ci car beaucoup plus réative que la version Modbus mais aussi moins gourmande en ressources au niveau du CerboGX
Voici le fichier de configuration que j’ai ajouté à un fichier victron.yaml dans Home Assistant
Je commence par configurer des capteurs MQTT pour récupérer les données publiées par mon système Victron (via un broker MQTT, configuré séparément). Ces capteurs couvrent des métriques clés liés à la prévision de productions et à la gestion de mon DESS.
mqtt:
sensor:
# MQTT
# DESS Remy
- name: "MP2 Prod VRM TOTAL MQTT"
unique_id: mp2_prod_vrm_total_mqtt"
state_topic: "mp2/dess_remy/prod_total"
unit_of_measurement: 'kW'
device_class: power
state_class: measurement
- name: "MP2 Cible SOC par MQTT"
unique_id: mp2_cible_soc_par_mqtt"
state_topic: "mp2/dess_remy/cible_soc"
unit_of_measurement: '%'
device_class: battery
state_class: measurement
- name: "MP2 DESS Difference Cible-SOC"
unique_id: mp2_difference_cible_soc"
state_topic: "mp2/dess_remy/diff_soc"
unit_of_measurement: '%'
device_class: battery
state_class: measurement
- name: "MP2 DESS H_Debut DESS Remy"
unique_id: mp2_dess_h_debut"
state_topic: "mp2/dess_remy/h_debut"
- name: "MP2 DESS Durée DESS Remy"
unique_id: mp2_dess_duree"
state_topic: "mp2/dess_remy/duree"
Automatisations
Envoi des informations de Home Assistant vers Node-RED
Pour aller plus loin dans l’intégration entre Home Assistant et Node-RED, j’ai créé une automatisation qui envoie des informations clés de Home Assistant vers Node-RED via MQTT. Cela permet à Node-RED de prendre des décisions basées sur l’état de mon système, par exemple pour ajuster dynamiquement la charge des batteries ou le mode de fonctionnement du MultiPlus II. Voici l’automatisation que j’ai mise en place.
Code de l’automatisation
Cette automatisation, nommée « Recopie Etat HA vers NR MP2 », est déclenchée soit toutes les heures, soit lorsqu’un des capteurs ou entrées surveillés change d’état. Elle publie ensuite les valeurs correspondantes sur des topics MQTT que Node-RED peut écouter.
Toutes les 10 s (time_pattern: seconds: /10) : Cela garantit que Node-RED reçoit les informations même si aucun changement d’état n’a lieu.
Changement d’état (trigger: state) : L’automatisation se déclenche dès qu’un des capteurs ou entrées suivants change :
input_boolean.mp2_valid_ess_charge_prog_1 : Indique si le programme de charge ESS est valide.
input_boolean.forcage_charge_pgm_mp2_100 : Indique si un forçage de charge à 100 % est activé.
input_number.mp2_niveau_forcage_cp1 : Niveau de forçage pour le programme de charge.
sensor.linky_ptec : Période tarifaire en cours (par exemple, Heures Creuses ou Heures Pleines, via l’intégration Linky).
Actions :
L’automatisation publie les valeurs des entités sur des topics MQTT spécifiques :
ha/mp2/cp/validcp : État du programme de charge ESS.
ha/mp2/cp/forcage100 : État du forçage à 100 %.
ha/mp2/cp/niveauforcagecp1 : Niveau de forçage.
ha/mp2/cp/hc : Période tarifaire (HC/HP).
Les messages sont envoyés avec un QoS de 0 (pas de garantie de livraison) et sans rétention (retain: false), pour éviter d’encombrer le broker MQTT.
Utilité de cette automatisation
Cette automatisation permet à Node-RED de recevoir des informations en temps réel (ou toutes les heures) sur l’état de mon système dans Home Assistant. Par exemple :
Node-RED peut ajuster le SOC cible du MultiPlus II en fonction des heures creuses (sensor.linky_ptec).
Si un forçage de charge à 100 % est activé (input_boolean.forcage_charge_pgm_mp2_100), Node-RED peut déclencher une logique spécifique, comme désactiver d’autres automatisations.
Le niveau de forçage (input_number.mp2_niveau_forcage_cp1) peut être utilisé pour moduler la charge des batteries.
Dans mon cas, Node-RED utilise ces données pour optimiser la gestion de la charge des batteries en fonction des tarifs électriques et des prévisions de production solaire (comme vu dans mes articles précédents sur Node-RED et Victron).
Activation de la charge forcée en cas de Tempo Rouge
Pour optimiser encore davantage la gestion de la charge de mes batteries, j’ai ajouté une automatisation qui active ou désactive les programmations de charge forcée en fonction de la couleur Tempo du lendemain, détectée via le capteur sensor.rte_tempo_prochaine_couleur. Cette automatisation s’assure que la charge forcée (définie dans la carte custom:scheduler-card présentée plus loin) est activée uniquement les jours précédant une journée Tempo rouge, où les tarifs électriques sont plus élevés.
Code de l’automatisation
Cette automatisation, nommée « Activation Forcage Charge Programmée 1 si tempo Rouge », est déclenchée par un changement d’état du capteur sensor.rte_tempo_prochaine_couleur. Elle active les programmations de charge forcée si la couleur passe à « Rouge », et les désactive si la couleur n’est plus « Rouge ».
Passage à Tempo Rouge (id: vers_rouge) : L’automatisation se déclenche lorsque sensor.rte_tempo_prochaine_couleur passe à l’état « Rouge », indiquant que le lendemain sera une journée Tempo rouge.
Sortie de Tempo Rouge (id: sortie_rouge) : L’automatisation se déclenche lorsque sensor.rte_tempo_prochaine_couleur quitte l’état « Rouge », indiquant que le lendemain ne sera plus une journée Tempo rouge.
Actions :
Si passage à Tempo Rouge : On force une charge programée à 100% (réglable)
Si sortie de Tempo Rouge : L’action switch.turn_off désactive la charge programmée, suspendant ainsi les programmations de charge forcée.
Mode : mode: single garantit que l’automatisation ne s’exécute qu’une seule fois par déclencheur, évitant des exécutions multiples en cas de changements rapides d’état.
Utilité de cette automatisation
En activant les programmations uniquement les jours précédant une journée Tempo rouge, je m’assure que ma batterie est chargée à 100 % (ou au niveau défini dans input_number.mp2_niveau_forcage_cp1) pour affronter les tarifs élevés du lendemain. Si le lendemain n’est pas une journée Tempo rouge, les programmations sont désactivées pour éviter une charge inutile, optimisant ainsi l’utilisation de l’énergie solaire et réduisant les coûts.
Visualisation dans Home Assistant :
Exemple de carte Lovelace
L’integration génére au tant de service présents dans votre architecture Victron
Type de carte : J’utilise une carte de type entities, qui permet d’afficher une liste d’entités avec leurs états et des options de contrôle.
Entités affichées :
input_boolean.mp2_valid_ess_charge_prog_1 : Un interrupteur pour activer/désactiver le programme de charge ESS, avec l’heure de la dernière modification (last-changed).
sensor.mp2_prod_vrm_total_mqtt : La production totale prévue (via VRM), mise à jour avec l’heure de la dernière actualisation (last-updated).
sensor.mp2_soc_mqtt : L’état de charge (SOC) actuel des batteries.
sensor.mp2_cible_soc_par_mqtt : Le SOC cible défini pour les batteries.
input_number.mp2_memoire_estimation_production_jour : Une entrée numérique pour mémoriser l’estimation de production journalière.
sensor.mp2_total_energie_produite_jour : L’énergie totale produite dans la journée (non défini dans la configuration précédente, mais ajouté ici pour le suivi).
input_boolean.forcage_charge_pgm_mp2_100 : Un interrupteur pour forcer la charge des batteries à 100 %.
input_number.mp2_niveau_forcage_cp1 : Une entrée numérique pour définir le niveau de forçage de la charge.
Options :
title: Automatismes MP2 NodeRed : Le titre de la carte, qui reflète son objectif.
show_header_toggle: false : Désactive l’interrupteur global dans l’en-tête de la carte.
state_color: true : Active la coloration des états (par exemple, les interrupteurs s’affichent en vert lorsqu’ils sont activés).
Cette carte me permet de visualiser rapidement les informations essentielles (SOC, production, énergie produite) et de contrôler les paramètres de charge (forçage, niveau de forçage) directement depuis mon tableau de bord. Les indications last-changed et last-updated sont utiles pour vérifier la fraîcheur des données et des actions. C’est un complément parfait à la configuration et à l’automatisation décrites plus haut, car elle rend l’ensemble interactif et visuel.
En complément de la carte précédente, j’utilise une autre carte personnalisée, basée sur le composant custom:scheduler-card, pour programmer et valider la charge forcée de mes batteries à un niveau de SOC défini dans input_number.mp2_niveau_forcage_cp1 (souvent 100 %). Cette programmation est configurée pour se déclencher pendant les heures creuses, de 22h00 à 6h00, afin de commencer une journée Tempo rouge avec une batterie pleinement chargée. Voici le code YAML de cette carte :
Type de carte : J’utilise custom:scheduler-card, un composant personnalisé qui permet de programmer des actions dans Home Assistant (il faut l’installer via HACS ou manuellement si ce n’est pas déjà fait).
Objectif : Cette carte gère l’activation de input_boolean.forcage_charge_pgm_mp2_100 pour forcer la charge des batteries à un niveau de SOC défini dans input_number.mp2_niveau_forcage_cp1 (souvent 100 %). La programmation est configurée pour les heures creuses (22h00 à 6h00), ce qui me permet d’optimiser la charge avant une journée Tempo rouge, où les tarifs électriques sont plus élevés.
Options :
discover_existing: false : Désactive la découverte automatique des programmations existantes, pour un contrôle manuel.
display_options : Personnalise l’affichage de la carte :
icon: mdi:radiator : Utilise une icône de radiateur pour représenter la charge.
primary_info : Affiche le nom de l’entité, l’heure de la prochaine action, et les tâches supplémentaires.
secondary_info : Montre les jours et l’heure de la programmation (par exemple, « Tous les jours 22:00 »).
include: input_boolean.forcage_charge_pgm_mp2_100 : Seule cette entité est incluse dans la programmation.
title: Forcage CP1 : Le titre de la carte, qui indique qu’elle concerne le forçage de la charge programmée (CP1).
style : Ajoute une bordure colorée autour de la carte, en utilisant la couleur principale du thème Home Assistant.
show_header_toggle: true : Affiche un interrupteur dans l’en-tête pour activer/désactiver rapidement la programmation.
Pourquoi cette carte ?
Cette carte est essentielle pour gérer automatiquement la charge de mes batteries pendant les heures creuses, en anticipant les journées Tempo rouge où l’électricité est plus chère. En programmant le forçage de la charge à 100 % entre 22h00 et 6h00, je m’assure que ma batterie est prête à alimenter ma maison dès le matin, réduisant ainsi ma dépendance au réseau pendant les heures coûteuses. La visualisation claire de la prochaine action et des horaires me permet de vérifier facilement que tout est bien configuré.
Ce que cette configuration m’apporte
Grâce à cette configuration, à l’automatisation, et à la visualisation via Lovelace, j’ai une vue complète et détaillée de mon système Victron dans Home Assistant :
Production solaire : Je peux suivre la production de mes panneaux (via le MPPT et le compteur PV) et l’énergie totale produite.
Batteries : Je surveille le SOC, la tension, le courant, la puissance de charge/décharge, et même le temps restant avant d’atteindre le SOC minimum.
Réseau : Je vois l’énergie injectée ou soutirée du réseau, ainsi que la consommation AC.
Supervision et contrôle : Les capteurs template me permettent d’afficher des informations claires (par exemple, « Charge » au lieu d’un simple 1) et de calculer des métriques utiles comme l’autonomie restante. L’automatisation vers Node-RED ajoute une couche de contrôle dynamique, en permettant à Node-RED de réagir aux changements dans Home Assistant. L’automatisation pour les jours Tempo rouge garantit que la charge forcée est activée uniquement quand c’est nécessaire, optimisant les coûts. Enfin, les cartes Lovelace me donnent un accès rapide et visuel à toutes ces données, avec la possibilité de programmer des actions comme la charge forcée pendant les heures creuses.
Ces données sont ensuite utilisées dans des tableaux de bord Home Assistant (comme ceux montrés ci-dessus) et dans Node-RED pour des automatisations, comme ajuster le SOC cible en fonction des prévisions solaires ou des tarifs électriques.
Prérequis pour reproduire ce projet
Un système Victron avec un Cerbo GX (ou équivalent) connecté à votre réseau.
L’intégration MQTT configurée dans Home Assistant, avec un broker MQTT actif.
Les capteurs MQTT doivent être publiés par un autre système (par exemple, un script ou Node-RED, comme mentionné dans mes articles précédents).
Node-RED installé et configuré pour écouter les topics MQTT publiés par l’automatisation.
Les entités comme input_boolean.mp2_valid_ess_charge_prog_1, input_boolean.forcage_charge_pgm_mp2_100, input_number.mp2_niveau_forcage_cp1, et sensor.linky_ptec doivent être créées dans Home Assistant (via des helpers ou des intégrations comme Linky).
Pour l’automatisation Tempo, l’intégration RTE Tempo doit être configurée pour fournir le capteur sensor.rte_tempo_prochaine_couleur.
Pour les cartes Lovelace, assurez-vous que toutes les entités listées existent dans votre configuration Home Assistant.
Conclusion
Si vous avez un système Victron, cette configuration est une excellente base pour l’intégrer dans Home Assistant, interagir avec Node-RED, et visualiser vos données dans un tableau de bord Lovelace. Vous pouvez l’adapter à vos appareils (en ajustant les topics MQTT) et personnaliser les capteurs template, les automatisations, et les cartes selon vos besoins. Ce projet m’a permis de mieux comprendre et optimiser mon installation photovoltaïque, et j’espère qu’il vous inspirera ! N’hésitez pas à partager vos propres configurations ou questions en commentaire.