[Tuto] Home assistant et MsunPV

Plus d'informations
15 Mar 2023 19:09 - 12 Déc 2023 21:55 #1 par Tochy
[Tuto] Home assistant et MsunPV a été créé par Tochy
ATTENTION
J'ai réécrit tout le code pour le routeur pour que cela soit plus simple à installer. Retrouver la nouvelle méthode en page 10 de ce sujet.
Toutes les explications fournies sur le fonctionnement restent cependant valables et se trouvent dans ce post et les suivant ainsi que sur le Github créé pour l'occasion.



Précision préalable, je me base sur un MsunPV2_2 puisque c'est celui que je possède mais facilement modifiable pour une version MsunPV4_4.


- Le but :

Récupérer les infos présentent dans le fichier généré par le MsunPV à l'adresse http://IP_DU_MSUNPV/status.xml (En remplaçant IP_DU_MSUNPV par l'IP de votre MsunPV)
<rtcc>20:48:57 JE</rtcc>
<paramSys>20:48:58;02/03/2023;On;01:00;0,0;MS_PV2_2b;5.0.1;0000220;103c;103a;00:00;00:00</paramSys>
<inAns>317,5;80,3; 0; 0;232,4;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>253c8;ffff470b;fffd937f;fff73d70;0;0;0;0;</cptVals>
<chOutVal>0;0;0;ff;:0,0;0,0;0,0;0,0;</chOutVal>
</xml>

Je souhaite récupérer les lignes inAns, cmdPos et chOutVal qui contiennent les infos qui m'interressent et les assigner à des sensors Home Assistant afin de pouvoir soit les afficher soit les exploiter dans des automatisations ou scripts.


- Le code permettant celà :

#MsunPv
#Récupération des données
- platform: rest
  name: msunpv_xml
  resource: http://IP_DU_MSUNPV/status.xml
  json_attributes_path: "$.xml"
  scan_interval: 30
  method: GET
  json_attributes:
    - "inAns"
    - "cmdPos"
    - "cptVals"
  value_template: "OK"

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

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

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

    msunpv_outrad:
      unique_id: "msunpv_outrad"
      friendly_name: "% routage radiateur"
      value_template: >-
        {{ (state_attr('sensor.msunpv_xml', 'inAns')|replace(" ","")|replace(",",".")).split(";")[3] |int }}
      unit_of_measurement: "%"

    msunpv_voltres:
      friendly_name: "Tension réseau"
      value_template: >-
        {{ (state_attr('sensor.msunpv_xml', 'inAns')|replace(" ","")|replace(",",".")).split(";")[4] |float }}
      unit_of_measurement: "V"
    msunpv_t_bal1:
      friendly_name: "Température cumulus"
      value_template: >-
        {{ (state_attr('sensor.msunpv_xml', 'inAns')|replace(" ","")|replace(",",".")).split(";")[5] |float }}
      unit_of_measurement: "°C"
    msunpv_t_sdb:
      friendly_name: "Température salle de bain"
      value_template: >-
        {{ (state_attr('sensor.msunpv_xml', 'inAns')|replace(" ","")|replace(",",".")).split(";")[6] |float }}
      unit_of_measurement: "°C"
    msunpv_t_amb:
      friendly_name: "Température ambiante"
      value_template: >-
        {{ (state_attr('sensor.msunpv_xml', 'inAns')|replace(" ","")|replace(",",".")).split(";")[7] |float }}
      unit_of_measurement: "°C"

    #Les compteurs
    msunpv_enconso:
      unique_id: "msunpv_enconso"
      friendly_name: "Consommation réseau journalière"
      value_template: >-
        {% set cptVals =state_attr('sensor.msunpv_xml', 'cptVals')|replace(" ","") %}
        {{ cptVals.split(";")[0]|int(base=16)/10 |float }}
      unit_of_measurement: "Wh"
      device_class: energy

    msunpv_eninj:
      unique_id: "msunpv_eninj"
      friendly_name: "Production injectée journalière"
      value_template: >-
        {% set cptVals =state_attr('sensor.msunpv_xml', 'cptVals')|replace(" ","") %}
        {{ (0 if cptVals.split(";")[1]|int(base=16)|int == 0 else ((0xFFFFFFFF - cptVals.split(";")[1]|int(base=16)) * -1)/10) |float }}
      unit_of_measurement: "Wh"
      device_class: energy

    msunpv_enpv_j:
      unique_id: "msunpv_enpv_j"
      friendly_name: "Production panneaux journalière"
      value_template: >-
        {% set cptVals =state_attr('sensor.msunpv_xml', 'cptVals')|replace(" ","") %}
        {{ (0 if cptVals.split(";")[2]|int(base=16)|int == 0 else ((0xFFFFFFFF - cptVals.split(";")[2]|int(base=16)) * -1)/10) |float }}
      unit_of_measurement: "Wh"
      device_class: energy

    msunpv_enpv_p:
      unique_id: "msunpv_enpv_p"
      friendly_name: "Production panneaux totale"
      value_template: >-
        {% set cptVals =state_attr('sensor.msunpv_xml', 'cptVals')|replace(" ","") %}
        {{ (0 if cptVals.split(";")[3]|int(base=16)|int == 0 else ((0xFFFFFFFF - cptVals.split(";")[3]|int(base=16)) * -1)/10) |float }}
      unit_of_measurement: "Wh"
      device_class: energy

    #Les commandes
    msunpv_cmdpos:
      unique_id: "msunpv_cmdpos"
      friendly_name: "Commandes manu/Auto"
      value_template: >-
        {{ state_attr('sensor.msunpv_xml', 'cmdPos') }}

Ce code est à placer tel quel (En remplaçant IP_DU_MSUNPV par l'IP de votre MsunPV), soit dans le fichier sensor.yaml si vous en possédez un, soit dans le configuration.yaml (si vous n'avez pas de fichier sensor.yaml) sous la ligne "sensor:" en respectant l'indentation ci dessous:
sensor:
  #MsunPv
  #Récupération des données
  - platform: rest
    name: msunpv_xml
    resource: http://192.168.0.38/status.xml
    json_attributes_path: "$.xml"
    scan_interval: 30
    method: GET
    json_attributes:
      - "inAns"
      - "cmdPos"
      - "cptVals"
    value_template: "OK"
    
  - platform: template
    sensors:
      #Les entrées
      msunpv_powreso:

...


- Attention :

Si vos compteurs EnInj, EnPV_J et EnPV_P sont en valeurs positives sur la page du MsunPV alors remplacez les lignes suivantes :
    msunpv_eninj:
      unique_id: "msunpv_eninj"
      friendly_name: "Production injectée journalière"
      value_template: >-
        {% set cptVals =state_attr('sensor.msunpv_xml', 'cptVals')|replace(" ","") %}
        {{ (0 if cptVals.split(";")[1]|int(base=16)|int == 0 else ((0xFFFFFFFF - cptVals.split(";")[1]|int(base=16)) * -1)/10) |float }}
      unit_of_measurement: "Wh"
      device_class: energy

    msunpv_enpv_j:
      unique_id: "msunpv_enpv_j"
      friendly_name: "Production panneaux journalière"
      value_template: >-
        {% set cptVals =state_attr('sensor.msunpv_xml', 'cptVals')|replace(" ","") %}
        {{ (0 if cptVals.split(";")[2]|int(base=16)|int == 0 else ((0xFFFFFFFF - cptVals.split(";")[2]|int(base=16)) * -1)/10) |float }}
      unit_of_measurement: "Wh"
      device_class: energy

    msunpv_enpv_p:
      unique_id: "msunpv_enpv_p"
      friendly_name: "Production panneaux totale"
      value_template: >-
        {% set cptVals =state_attr('sensor.msunpv_xml', 'cptVals')|replace(" ","") %}
        {{ (0 if cptVals.split(";")[3]|int(base=16)|int == 0 else ((0xFFFFFFFF - cptVals.split(";")[3]|int(base=16)) * -1)/10) |float }}
      unit_of_measurement: "Wh"
      device_class: energy

Par :
    msunpv_eninj:
      unique_id: "msunpv_eninj"
      friendly_name: "Production injectée journalière"
      value_template: >-
        {% set cptVals =state_attr('sensor.msunpv_xml', 'cptVals')|replace(" ","") %}
        {{ cptVals.split(";")[1]|int(base=16)/10 |float }}
      unit_of_measurement: "Wh"
      device_class: energy

    msunpv_enpv_j:
      unique_id: "msunpv_enpv_j"
      friendly_name: "Production panneaux journalière"
      value_template: >-
        {% set cptVals =state_attr('sensor.msunpv_xml', 'cptVals')|replace(" ","") %}
        {{ cptVals.split(";")[2]|int(base=16)/10 |float }}
      unit_of_measurement: "Wh"
      device_class: energy

    msunpv_enpv_p:
      unique_id: "msunpv_enpv_p"
      friendly_name: "Production panneaux totale"
      value_template: >-
        {% set cptVals =state_attr('sensor.msunpv_xml', 'cptVals')|replace(" ","") %}
        {{ cptVals.split(";")[3]|int(base=16)/10 |float }}
      unit_of_measurement: "Wh"
      device_class: energy


- Quelques explications :

- platform: rest
  name: msunpv_xml
  resource: http://IP_DU_MSUNPV/status.xml
  json_attributes_path: "$.xml"
  scan_interval: 30
  method: GET
  json_attributes:
    - "inAns"
    - "cmdPos"
    - "cptVals"
  value_template: "OK"
Permet de récupérer les lignes inAns, cmdPos et chOutVal du fichier status.xml toutes les 30secondes.

Pour modifier ce délai vous pouvez modifier la ligne :
  scan_interval: 30
En remplaçant 30 par le temps que vous voulez en secondes. Faut il descendre plus bas ? Aucune idée. Je tourne depuis plus d'une semaine à 30 secondes sans que celà n'affecte le MsunPV.

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

...
Permet d'extraire la première valeur présente dans la ligne inAns du fichier (Qui correspond à la puissance réseau) et de la transformer en nombre exploitable par Home Assistant. Cela va créer un sensor nommé msunpv_powreso qui aura la valeur lu dans le fichier status.xml.
L'opération est répétée pour chaque valeurs présentent dans les diffrentes lignes.


- Le résultat dans Home Assistant :



Voilà, à vous de vous l'approprier et de l'exploiter comme bon vous semble.
Dernière édition: 12 Déc 2023 21:55 par Tochy.
Les utilisateur(s) suivant ont remercié: angilube38, orpheebis, DarkGamelle

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
15 Mar 2023 19:18 #2 par Tochy
Réponse de Tochy sur le sujet [Tuto] Home assistant et MsunPV
Partie 2 - Passer des commandes au routeur :

La partie 1 n'est pas obligatoire pour faire fonctionner les commandes.
Je me base ici sur un routeur MsunPV2_2. Si vous possédez un MsunPV4_4 la méthodologie reste la même les commandes seront justes différentes.


- Le but :

Pouvoir modifier les commandes du MsunPV afin de forcer les commandes manu/auto ou aucune directement depuis Home Assistant.


- Récupération de la commande reset :

J'ouvre la page du routeur je positionne les switch manu/auto sur la configuration dont je me sert tous les jours :


Ensuite j'affiche le fichier généré par le MsunPV à l'adresse : http://IP_DU_MSUNPV/status.xml (En remplaçant IP_DU_MSUNPV par l'IP de votre MsunPV)
<xml>
<rtcc>20:48:57 JE</rtcc>
<paramSys>20:48:58;02/03/2023;On;01:00;0,0;MS_PV2_2b;5.0.1;0000220;103c;103a;00:00;00:00</paramSys>
<inAns>317,5;80,3; 0; 0;232,4;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>253c8;ffff470b;fffd937f;fff73d70;0;0;0;0;</cptVals>
<chOutVal>0;0;0;ff;:0,0;0,0;0,0;0,0;</chOutVal>
</xml>

Je note la ligne :
<cmdPos>0;0;0;0;0;0;0;2;</cmdPos>
Qui qui servira pour la commande de reset.


- Récupération des différentes combinaisons possibles :

Je reviens sur la page du MsunPV, je choisi une combinaison de commande manu/auto que je veux récupérer et je réouvre le fichier status.xml pour récupérer sa commande.


Si dans les commandes que vous récupérez, vous avez avez des lettres (a,b,c,d,e,f), ils s'agit de valeurs héxadécimales qui faudra convertir en valeurs décimales.

Ici la dernière commande :
<cmdPos>a;0;0;0;0;0;0;2;</cmdPos>

Devient après conversion :
<cmdPos>10;0;0;0;0;0;0;2;</cmdPos>


- Le code pour créer ces commandes dans home assistant :

- shell_command:
  #Commandes msunpv
  msunpv_manubal_on: "curl -X POST -d 'parS=1;0;0;0;0;0;0;2;' http://IP_DU_MSUNPV/index.xml"
  msunpv_autobal_on: "curl -X POST -d 'parS=2;0;0;0;0;0;0;2;' http://IP_DU_MSUNPV/index.xml"
  msunpv_manurad_on: "curl -X POST -d 'parS=4;0;0;0;0;0;0;2;' http://IP_DU_MSUNPV/index.xml"
  msunpv_autorad_on: "curl -X POST -d 'parS=8;0;0;0;0;0;0;2;' http://IP_DU_MSUNPV/index.xml"
  msunpv_manubal_manurad_on: "curl -X POST -d 'parS=5;0;0;0;0;0;0;2;' http://IP_DU_MSUNPV/index.xml"
  msunpv_manubal_autorad_on: "curl -X POST -d 'parS=9;0;0;0;0;0;0;2;' http://IP_DU_MSUNPV/index.xml"
  msunpv_autobal_manurad_on: "curl -X POST -d 'parS=6;0;0;0;0;0;0;2;' http://IP_DU_MSUNPV/index.xml"
  msunpv_autobal_autorad_on: "curl -X POST -d 'parS=10;0;0;0;0;0;0;2;' http://IP_DU_MSUNPV/index.xml"
  msunpv_reset_commandes: "curl -X POST -d 'parS=0;0;0;0;0;0;0;2;' http://IP_DU_MSUNPV/index.xml"

Ce code est à insérer dans le fichier configuration.yaml. Si la ligne -shell_command: est déjà présente copiez simplement les commandes à la suite sinon copiez tout.
Remplacez IP_DU_MSUNPV par l'IP de votre MsunPV.
Les suites de 8 chiffres correspondent aux commandes que vous avez récupérer précédemment.
N'oubliez pas de redémarrer Home Assistant ensuite pour que les commandes soit prises en comptes.
Ces commandes peuvent ensuite être appelées par un service.


- Exemple d'appel d'une commande à l'aide des outils de développement/services :


Appuyez ensuite sur Appeler le service et vous devriez obtenir sur la page de votre routeur :





- Exemple d'utilisation des commandes dans une automatisation :



Cette automatisation mets le routeur en manubal pour une heure à 1h00 tous les jours.


Voilà c'est tout pour aujourd'hui. J'ai essayé d'être le plus complet possible.
A vous de jouer, tester, adapter améliorer.
Les utilisateur(s) suivant ont remercié: william13

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
15 Mar 2023 19:33 - 29 Mar 2023 22:05 #3 par Tochy
Réponse de Tochy sur le sujet [Tuto] Home assistant et MsunPV
Bonus

Une commande suplémentaire pour arréter de router le surplus sur le cumulus.
Par exemple vous êtes en vente surplus et vous vous absentez 15 jours : J'arrête le routage et tout le surplus partira sur le reseau.

Commande inspirée par une réponse de Patrick à une question récente.


- Prérequis :


Je me rends sur la page paramètres/commandes du MsunPV et rentre une valeur d'injection surpérieure à la puissance max de ma production.
Ce réglage n'a aucune incidence en fonctionnement normal puisque je suis en mode routage.


- La commande :

msunpv_arret_routage: "curl -X POST -d 'parS=0;0;0;0;0;0;0;1;' http://IP_DU_MSUNPV/index.xml"
En remplaçant IP_DU_MSUNPV par l'IP de votre MsunPV.


- Le résultat :

Dernière édition: 29 Mar 2023 22:05 par Tochy.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
16 Mar 2023 11:13 #4 par syl2222fr
Réponse de syl2222fr sur le sujet [Tuto] Home assistant et MsunPV
Salut Tochy

Un peu hors sujet , mais vu que tu te débrouille bien sur HA , j'ai besoin de ton point de vue.

Avec le retour du beau temps, mon routeur 2*2 ne suffit plus à router mon surplus, et, je commence à injecter.

J'ai 'domotisé' un radiateur electrique (avec esphome + diode + fil pilote off/confort).
Pas de soucis côté Ha pour le piloter.

J'ai crée une petite automatisation
When routage mpvsun, sortie 2 > 300% pendant 1 mn , a condition qu'on soit dans le créneau horaire 9h/16h , alors , on allume le radiateur
=> La sortie 1 de mon routeur est le ballon ECS => si la sortie 2 est > 300% , cela veut dire que le ballon est 'plein' et qu'on route vers le 'radiateur sdb'

Ca, ca marche ... pour l'instant :)

Par contre, c'est la partie off que j'arrive pas à gérer car:
Mon radiateur est electronique (zut) du coup, il chauffe pas en continu . J'ai du on/off/on/off de la partie chauffe (gestion interne du truc) , ce qui fait que je n'ai rien de constant dans la consommation.
Ceci eut été beaucoup plus simple avec un radiateur sans electronique (consommation en continue sans hachage)

En automatisation Off, j'avais crée:
Si Powreso >50 w pendant 1mn, a condition que le radiateur soit allumé et qu'on soit dans le créneau horaire 9h/16h (ca permet de laisser le radiateur allumé si je l'ai activé à la mano le soir)
Alors , radiateur off.

Bin ca, ca marche pas :

Vu qu'on récupérè les valuers powreso toutes les 30 s.
En 30s, au niveau du routeur, il s'en passe des choses :
Si Il y a beaucoup de soleil: Mon radiateur chauffe, la sortie 2 oscille en positif (normal)
Le radiateur ne chauffe plus (électronique embarquée) : La sortie 2 passe à 400%
Là, c'est normal

Mais, dés que j'ai une baisse de soleil, la sortie 2 passe à 0 et j'ai du powreso qui repasse en positif . C'est normal aussi.
Le hic c'est que ça oscille tellement (soleil/pas soleil/chauffe/pas chauffe du radiateur electronique) que mon automatisation ne voit pas le passage en positif de powreso (ou pas assez longtemps) et du coup ne coupe pas

Je ne vois pas comment regarder /appréhender le truc.
Je dois certainement me fourvoyer sur la méthodologie.

tu aurais une idée ? (en dehors du fait de passer en routeur 4*4 bien sur :) )

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
16 Mar 2023 11:32 #5 par Tochy
Réponse de Tochy sur le sujet [Tuto] Home assistant et MsunPV
Afin de bien comprendre. Sur la sortie 2 as tu un ssr ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
16 Mar 2023 11:35 - 16 Mar 2023 11:36 #6 par syl2222fr
Réponse de syl2222fr sur le sujet [Tuto] Home assistant et MsunPV
Oui, 2 ssr .
Sortie 1 : Ssr qui pilote en priorité le ballon
Sortie 2 : Ssr qui pilote un radiateur electrique ordianire (non electronique)

Les maxon/off sont réglés de telle sorte que la sortie 2 ne s'active qu'a partir du moment ou la sortie 1 est à 400%

Edit: Quand je dis que mon radiateur est electronique, je parle bien sur de celui que j'ai domotisé via HA, pas celui ui est branché sur la sortie 2 du ssr
Dernière édition: 16 Mar 2023 11:36 par syl2222fr.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
16 Mar 2023 12:11 - 16 Mar 2023 12:19 #7 par Tochy
Réponse de Tochy sur le sujet [Tuto] Home assistant et MsunPV
A chaud je dirai :
- virer les conditions de temps pendant 1 minutes
- déclencheur de l'automatisation sur changement de valeur de msunpv_xml comme ça tu aura un déclenchement toutes les 30 secondes déjà
- tu conserve sortie 2>300 et entre 9h et 16h mais tu les mets en condition
- en action tu fais une boucle tant que sortie 2 > 300 et powreso <50 allume le radiateur
- action suivante (quand le tant que n'est plus valable) éteindre le radiateur

Je ne sais pas si c'est très clair mais j'ai un truc de ce style et ça tourne pas mal. Je t'enverrai ça ce Soir

je suis dans le même cas que toi tous les radiateur avec une diode+esp sauf que je n'ai pas de ssr sur la voie 2
Dernière édition: 16 Mar 2023 12:19 par Tochy.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
16 Mar 2023 12:19 - 16 Mar 2023 12:22 #8 par syl2222fr
Réponse de syl2222fr sur le sujet [Tuto] Home assistant et MsunPV
Ce qui est clair (mais, oui, c'est super clair ce que tu as écrit !!) c'est que je dois partir sur une boucle .
Je vais essayer de chercher comprendre par moi-même , car, en vérité, j'ai pas encore approfondi toutes les subtilités des automatisations.

La boucle en action, c'est consommateur en cpu ?

Edit: (mode vie perso) Pour aujourd'hui, j'ai triché : Allumage des clims que j'ai domotisé à distance + surplus via le routeur sur le ssr2 et , ce fameux radiateur électronique. Je me suis fait un peu avoir sur le coup.
J'ai installé mes panneaux fin octobre , donc, recul sur l’hiver Ok,, mais, avec le beau temps, je me rends compte que j'avais pas du tout prévu autant de surplus (je mets un smiley triste ou content ?)
Dernière édition: 16 Mar 2023 12:22 par syl2222fr.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
16 Mar 2023 12:26 #9 par Tochy
Réponse de Tochy sur le sujet [Tuto] Home assistant et MsunPV
Pour la consommation CPU aucune idée. Là ça tourne chez moi et je suis a 1% CPU (Intel nuc acheté d'occaz)

Tu peux aussi dans la boucle ajouté une tempo de 8 secondes après avoir allumer le radiateur ainsi sur un cycle de 30 secondes cela ne fera que 3 fois la boucle au lieu de tourner a l'infini. C'est ce que j'ai fait

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
16 Mar 2023 14:39 - 20 Mar 2023 16:31 #10 par syl2222fr
Réponse de syl2222fr sur le sujet [Tuto] Home assistant et MsunPV
Alors, j'ai , ce midi, sur mon tel, au travers de mon vpn, refais une automatisation à base de boucle (super casse bonbon à faire via son tel...)

Je ne suis pas encore arrivé au top du top, mais, tu as raison . En suivant tes conseils, le comportement est beaucoup plus proche de ce que j'attend !

Edit: En automatisation, une boucle 'while' m'a fait vriller le cpu :( , du coup, j'ai tout refait et ça donne:

Declencheur: When msunpv_xml changes
Condition: Time condition (9h->14h)

Actions (j'en ai 2):
Repeat an action while Test if 2 conditions match is true
Test if 2 conditions match
* Confirm Puissance réseau is above 50
* Radiateur est activé
=>Désactiver Radiateur

La seconde action:
Repeat an action while Test if 2 conditions match is true
Test if 2 conditions match
* Confirm % Sortie 2 mpvsun is above 300
* Radiateur est désactivé
=>Activer Radiateur

C'est pas toptop , mais, ça fait plutôt bien le job (dixit les graphes de conso du routeur solaire)
Dernière édition: 20 Mar 2023 16:31 par syl2222fr.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
20 Mar 2023 17:32 - 21 Mar 2023 12:07 #11 par Tochy
Réponse de Tochy sur le sujet [Tuto] Home assistant et MsunPV
Je ne comprends pas trop pourquoi tu fais 2 boucle puisque de toute façon toutes les 30 secondes l'automatisation demarrera. Si pas de changement sur les conditions elle sera toujours dans sa boucle sinon elle en sortira et fera la seconde action.

Declencheur: When msunpv_xml changes
Condition: Time condition (9h->14h)

Action 1:
Repeat an action while Test if 2 conditions match is true
Test if 2 conditions match
* Confirm % Sortie 2 mpvsun is above 300
* Confirm Puissance réseau is above below 50
=>Activer Radiateur
=> Attendre que le temps passe à 8secondes

Action 2:
=> Désactiver Radiateur

Le attendre que le temps passe fait que la boucle ne s'execute que 3 ou 4 fois par tranche de 30 secondes au lieu de tourner à toute vitesse et eventuellement saturé le cpu.

Correction : * Confirm Puissance réseau is below 50
Dernière édition: 21 Mar 2023 12:07 par Tochy.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
20 Mar 2023 20:34 #12 par Tochy
Réponse de Tochy sur le sujet [Tuto] Home assistant et MsunPV
Récupérer les valeurs de status.xml et les envoyer dans un document google sheet


Le but :

Envoyer automatiquement en fin de jour les valeurs de conso, production et injection dans un fichier google sheet afin de réaliser un suivi journalier.


Prérequis :

- Avoir réalisé le premier tuto pour avoir les données msunpv_enconso, msunpv_eninj et msunpv_enpv_j du fichier status.xml présentent dans Home Assistant

- Avoir son Home Assistant accessible à distance https.
Voir ce tuto si vous ne savez pas comment passer Home Assistant en https :


- Créer un projet sur La console google developers pour activer les api google drive et google sheets
Voici un tuto en anglais mais relativement simple à comprendre sur la marche à suivre : www.smarthomejunkie.net/how-to-use-googl...s-in-home-assistant/ .
Attention il faut impérativement être en https afin de pouvoir créer un projet sur la console google developers


La manip :

- Se connecter sur son instance Home Assistant en https

- Installer l'intégration Google sheets dans paramètres/appareils et services/Intégrations. Cliquez sur ajouter une intégration et chercher google puis google sheets

Si tout se passe bien vous devriez être redirigé vers une page google vous demandant de choisir le compte google sur lequel créer le fichier.

Suivez les instructions à l'écran pour finir d'installer l'intégration.

Une fois fini vous devriez vous retrouver avec un nouveau fichier au nom de l'appli que vous avez créer dans la console developer de google sur votre google drive du compte que vous avez choisi.

Ici le fichier se nomme Home Assistant qui est le nom de l'app que j'ai créée dans la console developers google

- Pour tester l'integration vous pouvez aller dans les outils de developpement/services

Vous devriez avoir dans votre fichier google sheets 4 colonnes (created, hello, cool, count) avec les valeurs (date et heure de l'appel du service, world, true, 5). Je ne mets pas d'images car je n'ai pas voulu effacer le contenu de mon fichier.
Les utilisateur(s) suivant ont remercié: patmtp35, orpheebis

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
20 Mar 2023 20:34 #13 par Tochy
Réponse de Tochy sur le sujet [Tuto] Home assistant et MsunPV
Récupérer les valeurs de status.xml et les envoyer dans un document google sheet - Suite

Ci toute la première partie du tuto fonctionne on peut maintenant passer à la suite.


- L'automatisation qui envoie les données tous les soirs à 23h59 :

- Je crée un nouvelle automatisation


- Je modifie l'action en tant que YAML


- Je remplace la partie YAML


Par ce code
service: google_sheets.append_sheet
data:
  config_entry: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  worksheet: Raw data
  data:
    Conso_edf: "{{ states('sensor.msunpv_enconso')|float }}"
    Production_pv: "{{ states('sensor.msunpv_enpv_j')|float *-1 }}"
    Injection: "{{ states('sensor.msunpv_eninj')|float }}"
Par contre pour la partie config-entry gardez bien votre ligne (Je ne sais pas si vous avez la même suite de chiffres et lettres que moi) à la place des xxxxxxxxxxxx

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
20 Mar 2023 20:34 - 30 Avr 2023 17:23 #14 par Tochy
Réponse de Tochy sur le sujet [Tuto] Home assistant et MsunPV
Récupérer les valeurs de status.xml et les envoyer dans un document google sheet - Suite


- Le résultat :





Tous les soirs à 23h59 une nouvelle ligne est ajoutée surla page Raw data et les pages mensuelles sont automatiquement remplies en fonction de Raw data et de la page tarifs EDF.
En fin d'année je crée une copie du fichier que je renomme par exemple Home Assistant 2023, je change l'année dans la page Tarifs EDF et j'efface toutes les données de la page Raw data et cela devrai repartir pour l'année suivante.

Je vous mets en fichier joint mon fichier qu'il faudra importer dans votre google sheet si vous ne voulez pas tout refaire.
Il vous suffira alors d'effacer les données sur la page Raw data, de mettre votre tarif heure pleine sur la page Tarifs Edf. N'effacez surtout rien sur les pages mensuelles sous peine d'effacer toutes les formules, elles se remplissent seules.
Vous pouvez par contre sur la page Raw data rajouter votre données à la main. Par exemple sur mon fichier les données du 01/03 au 09/03 ont été saisies à la main pour commencer le fichier au premier mars.

Fichier attaché :

Nom du fichier : HomeAssist...4-30.zip
Taille du ficher :248 ko


Je pense que mon fichier n'est pas encore définitif et devrait encore evolué.

J'ai essayé dêtre le plus clair possible mais c'est pas toujours evident donc si il y'a des questions n'hesitez pas.
Pièces jointes :
Dernière édition: 30 Avr 2023 17:23 par Tochy.
Les utilisateur(s) suivant ont remercié: william13

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
21 Mar 2023 12:09 #15 par syl2222fr
Réponse de syl2222fr sur le sujet [Tuto] Home assistant et MsunPV
Salut,

Ca m'ennuie de répondre dans ce fil, car on est sur un tuto , mais , plutôt que te spam en message privé, je continue ici ;)

Je ne comprends pas trop pourquoi tu fais 2 boucle puisque de toute façon toutes les 30 secondes l'automatisation demarrera. Si pas de changement sur les conditions elle sera toujours dans sa boucle sinon elle en sortira et fera la seconde action.

....Pour la simple et bonne raison que je ne sais (pas encore) ce que je fais B)

Plus sérieusement, je tâtonne pas mal avec les automatisations. A relire ce que j'ai fais sur mes automatisations, je me rend compte que j'ai fait de la ****** (à ma décharge , ça ne fait que 1 à 2 mois que j'ai basculé sur HA)
le while ne me plait pas trop , car, ça sous-entend que l'automatisation tourne tout le temps.
Je préfère un déclencheur qui génère des vérifications et des changements et basta jusqu'au prochain déclencheur(c'est incompréhensible ce que je viens d'écrire).

Je viens de tenter (ou plutôt, de découvrir) "Choose between 2 actions" (a la place du while), et , je viens aussi de me rendre compte qu'il y a un 'effet non désiré' (si à 13h59:45 le radiateur passe à ON par l'automatisation, bin, il reste à ON jusqu’au lendemain.

Connexion ou Créer un compte pour participer à la conversation.

Propulsé par Kunena