Skip to content

Latest commit

 

History

History
241 lines (190 loc) · 12.1 KB

README.md

File metadata and controls

241 lines (190 loc) · 12.1 KB

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 :


    - 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.


2023-11-08 - Bug Fixes

  • Correction d'une petite coquille qui empêchait les scripts de fonctionner dans les fichiers 'msunpv_scripts_2_2.yaml' et 'msunpv_scripts_4_4.yaml'. (3905024)
    La ligne :
      msunpv_commandes_routeur: #Envoi des commandes au MsunPv
    
    Devient :
      msunpv_commande_routeur: #Envoi des commandes au MsunPv



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.