Skip to content

tochy83/MsunPv_to_HA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

232 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MsunPv to HA



Introduction

Une intégration par le biais d'un fichier .yaml pour faire communiquer le routeur solaire MsunPv de Ard-tek et Home Assistant.

Précision préalable, le code de ce fichier a été écrit à la base pour une version 2 entrées, 2 sorties du MsunPv avec PowPV en négatif et les compteurs EnConso, EnInj, EnPV_J, EnPV_P en négatifs également (Projet MS_PV2_2b). Je l'ai décliné (par déduction) en une version 4 entrées, 4 sorties avec les compteurs en négatifs également (Projet MS_PV4_4b). Tout cela est bien sur facilement adaptable si vous êtes sur une configuration différente sur votre MsunPv (ex. compteurs en positifs).


🧐 Fonctionnalités

  • Récupére les infos fournies par le MsunPv (Puissances, % de routage, températures, tension ...)
  • Récupére les valeurs des compteurs interne du MsunPv
  • Permet d'intégrer les compteurs de consommation, de production et d'injection du MsunPv au 'dashboard energie' de Home Assistant
  • Permet d'envoyer des ordres au MsunPv (ex. activer manubal pour forcer la chauffe du cumulus)

🛠️ Installation

  • Télécharger les fichiers 'msunpv_2_2.yaml' et 'msunpv_scripts_2_2.yaml' ou les fichiers 'msunpv_4_4.yaml' et 'msunpv_scripts_4_4.yaml' selon que vous disposez d'une version 2 sorties ou 4 sorties et selon vos besoins.

    • Le fichier 'msunpv_x_x.yaml' récupère toutes les infos nécessaires au fonctionnement et crée les sensors pour Home Assistant.

    • Le fichier 'msunpv_scripts_x_x.yaml' contient tous les scripts pour commander le MsunPv depuis Home Assistant. Sans ce fichier pas de pilotage du MsunPv depuis Home Assistant (Il est inutile si vous ne souhaitez pas le faire). Détails et explications ici.

    • Un fichier 'msunpv_addons_progh_x_x.yaml' est disponible et contient les sensors permettant de visualiser les programmations horaires du MsunPv depuis Home Assistant (Il est inutile si vous ne souhaitez pas les afficher).

    • Un fichier 'msunpv_addons_moresensors.yaml' est disponible et contient des sensors supplémentaires. Consommtion totale, production consommée, taux d'auto-consommation, taux d'auto-suffisance et des infos sur le MsunPv. (Il est inutile si vous ne souhaitez pas les afficher).
  • Ajouter dans le fichier 'configuration.yaml' de Home Assistant les lignes suivantes

    homeassistant:
      packages: !include_dir_named packages

    Si la ligne 'homeassistant:' n'existe pas déja sinon ajouter simplement

      packages: !include_dir_named packages

    En dessous de celles-ci pour obtenir (par ex.)

    homeassistant:
      customize: !include customize.yaml
      packages: !include_dir_named packages
  • Créer un dossier nommé 'packages' à la racine du dossier 'config' de Home Assistant.

  • Créer dans le dossier nommé 'packages' que vous venez de créer un dossier nommé 'msunpv'.

  • Copier les fichiers téléchargés 'msunpv_x_x.yaml' et 'msunpv_scripts_x_x.yaml' dans le dossier 'msunpv' créé précédemment.

    La création du dossier 'msunpv' n'est pas obligatoire et on pourrait très bien mettre les fichiers directement dans le dossier 'packages'. C'est juste une question d'organisation pour que tous les fichiers concernant le MsunPv se retrouvent tous au même endroit, ce qui me parait plus simple pour les retrouver.

  • Ouvrir le fichier 'msunpv_x_x.yaml' et remplacer dans celui-ci 'IP_DU_MSUNPV' par l'adresse ip de votre MsunPv partout où cela est nécessaire dans le fichier puis sauvegarder.

    - resource: http://IP_DU_MSUNPV/status.xml

    Devient, si l'adresse ip de votre MsunPv est '192.168.0.111'

    - resource: http://192.168.0.111/status.xml
  • Sauvegarder et redémarrer complétement Home Assistant.

  • Après le redémarrage vous devriez voir apparaitre de nouveaux sensors dans Home Assistant



    Une vidéo youtube montant toute la manip est dispo: Comment installer msunpv.yaml.


  • A partir de là on peut :


    - Créer des cartes dans Home Assistant pour afficher les valeurs que l'on souhaite :

    Tous les sensors remontés par l'intégration.


    - Intégrer les compteurs dans le dashboard energy de Home Assistant :


    - Envoyer des ordres au routeur à l'aide des services :

    nb: Depuis les versions récentes de Home Assistant les services sont devenus des actions.


    - Ou encore Par le biais d'automatisations :

    Une page est dédiée à l'explication du fonctionnement des commandes.




🧑🏻‍💻 Comment ça fonctionne ?

Le but est de récupérer les infos fournit par le MsunPv à l'adresse http://IP_DU_MSUNPV/status.xml

<xml>
    <rtcc>20:05:56 DI</rtcc>
    <paramSys>20:05:57;22/10/2023;On;01:00;0,0;MS_PV2_2b;5.0.1;0000220;104a;104a;00:00;00:00</paramSys>
    <inAns>326,4;75,5; 0; 0;233,3;0,0;0,0;0,0; 0; 0; 0; 0; 0; 0; 0; 0;</inAns>
    <survMm>0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;</survMm>
    <cmdPos>0;0;0;0;0;0;0;2;</cmdPos>
    <outStat>0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;</outStat>
    <cptVals>7e5c;ffffc2f3;fffea838;fdd3ef99;0;0;0;0;</cptVals>
    <chOutVal>0;0;0;ff;:0,0;0,0;0,0;0,0;</chOutVal>
</xml>

Les infos qui nous interressent sont les dans lignes 'inAns', 'cmdPos' et 'cptVals' et à partir de celles-ci on crée des sensors Home Assistant afin de pouvoir soit les afficher soit les exploiter dans des automatisations ou scripts.

La partie du code permettant de les récupérer est la suivante :

rest:
  #Récupération des données
  - resource: http://IP_DU_MSUNPV/status.xml
    scan_interval: 30 #Temps de récupération des données ici fixé à 30 secondes
    method: GET
    sensor:
      - name: "msunpv_xml"
        json_attributes_path: "$.xml"
        value_template: "OK"
        json_attributes:
          - "inAns"
          - "cmdPos"
          - "cptVals"

La ligne :

    scan_interval: 30 #Temps de récupération des données ici fixé à 30 secondes

Permet de faire cette récupération toutes les 30 secondes. Vous pouvez la modifier pour récupérer plus ou moins souvent les infos.

Une fois les infos récupérées on les traite pour créer les différents sensors.

template:
  - sensor:
      #Les entrées
      - name: msunpv_powreso #Puissance réseau
        unique_id: "msunpv_powreso"
        state: >-
          {{ (state_attr('sensor.msunpv_xml', 'inAns')|replace(" ","")|replace(",",".")).split(";")[0] |float }}
        device_class: power
        unit_of_measurement: "W"

      - name: msunpv_powpv #Puissance panneaux
        unique_id: "msunpv_powpv"
        state: >-
          {{ (state_attr('sensor.msunpv_xml', 'inAns')|replace(" ","")|replace(",",".")).split(";")[1] |float }}
        device_class: power
        unit_of_measurement: "W"

      - name: msunpv_outbal #% routage cumulus
        unique_id: "msunpv_outbal"
        state: >-
          {{ (state_attr('sensor.msunpv_xml', 'inAns')|replace(" ","")|replace(",",".")).split(";")[2] |int }}
        unit_of_measurement: "%"

etc...

Si par exemple vous n'avez pas de sonde de température branchée sur le MsunPv vous pouvez commenter les lignes les concernant comme ceci :

      - name: msunpv_voltres #Tension réseau
        unique_id: "msunpv_voltres"
        state: >-
          {{ (state_attr('sensor.msunpv_xml', 'inAns')|replace(" ","")|replace(",",".")).split(";")[4] |float }}
        unit_of_measurement: "V"

#      - name: msunpv_t_bal1 #Température cumulus
#        unique_id: "msunpv_t_bal1"
#        state: >-
#          {{ (state_attr('sensor.msunpv_xml', 'inAns')|replace(" ","")|replace(",",".")).split(";")[5] |float }}
#        unit_of_measurement: "°C"
#
#      - name: msunpv_t_sdb #Température salle de bain
#        unique_id: "msunpv_t_sdb"
#        state: >-
#          {{ (state_attr('sensor.msunpv_xml', 'inAns')|replace(" ","")|replace(",",".")).split(";")[6] |float }}
#        unit_of_measurement: "°C"
#
#      - name: msunpv_t_amb #Température ambiante
#        unique_id: "msunpv_t_amb"
#        state: >-
#          {{ (state_attr('sensor.msunpv_xml', 'inAns')|replace(" ","")|replace(",",".")).split(";")[7] |float }}
#        unit_of_measurement: "°C"

Vous pouvez bien sur faire de même pour tous les capteurs qui ne vous interressent pas. Je vous encourage d'ailleurs à le faire car il n'y a rien de plus chiant que de devoir parcourir toute une liste de sensors inutiles quand on en cherche un en particulier.



Pour faciliter la lecture du code (fichier 'msunpv_x_x.yaml') j'ai regroupé les sensors en 3 catégories :

  • Les 'entrées' qui concernent les différentes sondes branchées sur le MsunPv.
  • Les 'compteurs' qui remontent les valeurs des compteurs internes du MsunPv.
  • Les 'commandes' qui permettent d'envoyer des ordres au MsunPv.

Exemple du résultat dans mon dashboard Home Assistant



Mises à jour

Seule la dernière entrée apparait ici. Consulter la liste complète.

2025-12-15 - Nouveaux sensors

  • Ajout de nouveaux sensors pour prendre en compte les ajouts du dashboard energy depuis la version 2025-12-0 de HA.

    Pour la msunpv_2_2.yaml (lignes 148 à 160)

        - name: "energie_msunpv_powreso" #Puissance du réseau pour le dashboard energie
          unique_id: "energie_msunpv_powreso"
          unit_of_measurement: "W"
          state: "{{ (states('sensor.msunpv_powreso')|float(0)) }}"
          device_class: power
          state_class: measurement
    
        - name: "energie_msunpv_powpv" #Puissance des panneaux pour le dashboard energie
          unique_id: "energie_msunpv_powpv"
          unit_of_measurement: "W"
          state: "{{ min(0, states('sensor.msunpv_powpv')|float(0))|abs }}" #Valeur absolue de powpv si powpv négative, sinon 0
          device_class: power
          state_class: measurement   

    Pour la msunpv_4_4.yaml (lignes 186 à 212)

        - name: "energie_msunpv_powreso" #Puissance du réseau pour le dashboard energie
          unique_id: "energie_msunpv_powreso"
          unit_of_measurement: "W"
          state: "{{ (states('sensor.msunpv_powreso')|float(0)) }}"
          device_class: power
          state_class: measurement
    
        - name: "energie_msunpv_powpv" #Puissance des panneaux pour le dashboard energie
          unique_id: "energie_msunpv_powpv"
          unit_of_measurement: "W"
          state: "{{ min(0, states('sensor.msunpv_powpv')|float(0))|abs }}" #Valeur absolue de powpv si powpv négative, sinon 0
          device_class: power
          state_class: measurement        
    
        - name: "energie_msunpv_powbal" #Puissance du cumulus pour le dashboard energie
          unique_id: "energie_msunpv_powbal"
          unit_of_measurement: "W"
          state: "{{ (states('sensor.msunpv_powbal')|float(0)) }}"
          device_class: power
          state_class: measurement
    
        - name: "energie_msunpv_powrad" #Puissance du radiateur pour le dashboard energie
          unique_id: "energie_msunpv_powrad"
          unit_of_measurement: "W"
          state: "{{ (states('sensor.msunpv_powrad')|float(0)) }}"
          device_class: power
          state_class: measurement 

Vous pouvez simplement rajouter les lignes ci dessus à votre fichier msunpv_2_2.yaml ou msunpv_4_4.yaml.

Rappel

  • Depuis la sortie des firmwares routeur en version 105 et supérieure, il y'a eu une mise à jour des commandes

    Pour msunpv_2_2.yaml (dernière ligne) passe de :

      msunpv_commandes: "curl -X POST -d 'parS={{ states('input_select.msunpv_command_sortie_1') }};0;0;0;0;0;0;{{ states('input_select.msunpv_command_test_routeur') }};' http://IP_DU_MSUNPV/index.xml"

    à

      msunpv_commandes: "curl -X POST --data-urlencode 'parS={{ states('input_select.msunpv_command_sortie_1') }};0;0;0;0;0;0;{{ states('input_select.msunpv_command_test_routeur') }};' http://IP_DU_MSUNPV/index.xml"

    Pour msunpv_4_4.yaml (dernière ligne) passe de :

      msunpv_commandes: "curl -X POST --d 'parS={{ states('input_select.msunpv_command_sortie_1') }};{{ states('input_select.msunpv_command_sortie_3') }};0;0;0;0;0;{{ states('input_select.msunpv_command_test_routeur') }};' http://IP_DU_MSUNPV/index.xml"

    à

      msunpv_commandes: "curl -X POST --data-urlencode 'parS={{ states('input_select.msunpv_command_sortie_1') }};{{ states('input_select.msunpv_command_sortie_3') }};0;0;0;0;0;{{ states('input_select.msunpv_command_test_routeur') }};' http://IP_DU_MSUNPV/index.xml"



FAQ




J'ai essayé de faire le plus complet possible, mais il se peut qu'il manque des infos. N'hésitez pas à poser vos questions sur la page dédiée dans le forum ArdTek ou sur la page dédiée du forum HACF.




About

Une intégration en .yaml pour faire communiquer le routeur solaire MsunPv de Ard-tek avec Home Assistant

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors