Besoin d'aide pour réalisation script - Photovoltaïque

Discussion et échanges de scripts pour la box eedomus

Besoin d'aide pour réalisation script - Photovoltaïque

Messagepar bizardnime » 30 Nov 2019 10:41

Bonjour
J'ai une installation photovoltaïque avec un onduleur solaredge. Je voudrais récupérer les valeurs de productions, les valeurs de consommation de la maison et de réinjection sur le réseau. Il est possible d'avoir ses valeurs grâce à API (Max 300 requêtes par jour).

PDF explication API solaredge :
https://www.solaredge.com/sites/default ... ng_api.pdf

En page 21 - Site Power Detailed, il y a les explications pour récupérer ses valeurs (Production-AC, Consumption, Self Consumption, Feed In, Purchased).
Je pensais utiliser le capteur HTTP pour chaque demande, mais cela risque de faire beaucoup ( même si je désactive pendant la nuit) et je ne sais pas comment introduire la variable date et temps avec eedomus.

J'ai trouvé sur ce site des créations de script :
https://github.com/topics/solaredge-api

Merci pour votre l'aide
bizardnime
 
Messages : 13
Inscription : 30 Nov 2019

Re: Besoin d'aide pour réalisation script - Photovoltaïque

Messagepar opa95 » 30 Nov 2019 12:27

Bonjour
Je n'ai pas trop le temps en ce moment et n'ai pas non plus une grande expérience pour les liaisons avec les sites externes (en dehors des miens).
Un capteur HTTP (mode texte) peut faire directement la requête globale : J'ai fait un test en interrogeant la Zibase :
Requête : [VAR1]/sensors.xml avec VAR1 = ip_Zibase (192.168.xxx.yyy)
La réponse me donne le contenu du fichier sensors.xml et entre autres :
<evs>
<ev type="7" pro="OS" id="439220737" gmt="1575112086" v1="135" v2="60" lowbatt="0"/>
<ev type="7" pro="OS" id="439220482" gmt="1575112090" v1="191" v2="55" lowbatt="0"/>
Et pour XPATH : concat(//ev[@id=439220737]/@v1,';',//ev[@id=439220482]/@v1)
on pourrait mettre du texte "T1:" "T2:"
me donne :
Résultat XPath :
135;191
Affichage du widget : 135;190 depuis 4 min
On retrouve ces valeurs 135;191 dans l'historique, donc un script doit pouvoir les séparer.
On pourrait faire une requête toute les 2 minutes pendant 10h
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: Besoin d'aide pour réalisation script - Photovoltaïque

Messagepar opa95 » 30 Nov 2019 15:48

(suite du message)
Pour récupérer les diverses valeurs stockées par le premier capteur HTTP (code API ex : 123456789), il suffit de créer des capteur HTTP qui utilisent un script PHP très simple et te permettent de récupérer autant de capteurs que tu as de données à suivre (ça fonctionne très bien).
Capteur de type numérique
Requête : http://localhost/script/?exec=explode_o ... &periphId=[VAR1]
VAR1 : code API 123456789
XPATH : \\valeur1 (ou valeur2, ou...) [ dans mon cas : (\\T1)*0.1 (Zibase renvoie les valeurs en 0.1°C)].
Le code PHP est assez court (une dizaine de lignes).
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: Besoin d'aide pour réalisation script - Photovoltaïque

Messagepar bizardnime » 30 Nov 2019 17:01

Merci pour l'aider


Comment je pourrais introduire la date et l'heure dans mon capteur texte?
Car ma demande doit prendre en compte un recherche toutes les 15 min. Cela implique une variation de date et d'heure automatique.
bizardnime
 
Messages : 13
Inscription : 30 Nov 2019

Re: Besoin d'aide pour réalisation script - Photovoltaïque

Messagepar opa95 » 30 Nov 2019 18:11

Je ne pense pas que l'on puisse éviter de créer un script PHP.
Soit on gère les flux à envoyer sur le net avec les commandes de type Socket_... et on récupère la donnée (c'est lourd, mais c'est faisable)
Soit on crée un capteur virtuel (code API 2222) déclenché toutes les 15 minutes le jour, qui crée le start_time et le end_time nécessaire comme valeur de capteur et on récupère la valeur en mettant dans VAR2 la valeur [LAST_VALUE_PERPH_ID=2222] ou directement dans le lien de la requête.
Le capteur virtuel a besoin d'un script simple, puisqu'il suffit de récupérer l'heure courante pour fabriquer une chaine dans le format souhaité.
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: Besoin d'aide pour réalisation script - Photovoltaïque

Messagepar bizardnime » 02 Déc 2019 22:37

Bonjour,

J'ai fait un peu de recherche pour la rédaction de mon script. Je suis arrivé à créer URL automatique.

Code : Tout sélectionner
<?php

// Determination Date et Heure
$datefin = date('Y-m-d%20H:i:s', time() + (60 * 60));

// composition URL
$url= "https://monitoringapi.solaredge.com/site/xxxxx/powerDetails?meters=FeedIn&startTime=$datefin&endTime=$datefin&api_key=xxxxxxxxxxxxxxxxxxxxxxx";
echo "$url"
?>


Cela me donne la nouvelle adresse url automatiquement. voici la réponse si je la copie sur firefox

Code : Tout sélectionner
Aucune information de style ne semble associée à ce fichier XML. L’arbre du document est affiché ci-dessous.
<powerDetails>
<timeUnit>QUARTER_OF_AN_HOUR</timeUnit>
<unit>W</unit>
<meters>
<meterTelemetries>
<type>FeedIn</type>
<values>
<meterTelemetry>
<date class="sql-timestamp">2019-12-02 22:15:00</date>
<value>0.0</value>
</meterTelemetry>
</values>
</meterTelemetries>
</meters>
</powerDetails>


Maintenant, je dois trouver comment faire pour extraire le résultat : xpath //powerDetails/meters/meterTelemetries/values/meterTelemetry/value

Si quelqu'un a une idée pour finir me script
bizardnime
 
Messages : 13
Inscription : 30 Nov 2019

Re: Besoin d'aide pour réalisation script - Photovoltaïque

Messagepar opa95 » 02 Déc 2019 23:02

Tu mets dans l'URL l'appel au script et dans la ligne XPATH //value devrait suffire, il me semble.
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: Besoin d'aide pour réalisation script - Photovoltaïque

Messagepar bizardnime » 02 Déc 2019 23:28

voila la réponse

## ERROR: XML invalid [{"powerDetails":{"timeUnit":"QUARTER_OF_AN_HOUR","unit":"W","meters":[{"type":"FeedIn","values":[{"date":"2019-12-02 23:15:00","value":0.0}]}]}}].

je dois récupérer value :0.0 mais je n'arrive pas à trouver le code xpath
bizardnime
 
Messages : 13
Inscription : 30 Nov 2019

Re: Besoin d'aide pour réalisation script - Photovoltaïque

Messagepar opa95 » 03 Déc 2019 00:11

bizardnime a écrit:Bonjour,
Code : Tout sélectionner
<powerDetails>
<timeUnit>QUARTER_OF_AN_HOUR</timeUnit>
<unit>W</unit>
<meters>
<meterTelemetries>
<type>FeedIn</type>
<values>
<meterTelemetry>
<date class="sql-timestamp">2019-12-02 22:15:00</date>
<value>0.0</value>
</meterTelemetry>
</values>
</meterTelemetries>
</meters>
</powerDetails>


Ça c'est bien du code XML
Pas le résultat avec des {}.
On pourrait faire un script pour le décoder.
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: Besoin d'aide pour réalisation script - Photovoltaïque

Messagepar opa95 » 03 Déc 2019 00:16

Désolé J ai cliqué trop tôt, le résultat que tu affiches est du json
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: Besoin d'aide pour réalisation script - Photovoltaïque

Messagepar opa95 » 03 Déc 2019 00:32

Je suppose que tu dois préciser dans ta requête que tu veux du XML et pas du Json
Regarde dans L'API du site solar en page 6
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: Besoin d'aide pour réalisation script - Photovoltaïque

Messagepar merguez07 » 03 Déc 2019 12:56

Xml , json, l'EEdomus décode tout de base (il y a juste une case à cocher)

Si tu veux un script contactes moi en MP
tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 2346
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: Besoin d'aide pour réalisation script - Photovoltaïque

Messagepar bizardnime » 06 Déc 2019 17:13

Bonjour,

Désolée pour ma réponse tardive mais ma semaine était bien chargeée

Voici le script que j'ai réussi à faire

Code : Tout sélectionner
<?php

// Variable Date, Site et Key
$datefin = date('Y-m-d%20H:i:s');
$site = 'XXXXXXXXXXXXXX';
$vkey = 'XXXXXXXXXXXXXX';

// composition URL

$url= "https://monitoringapi.solaredge.com/site/$site/powerDetails.xml?meters=FeedIn&startTime=$datefin&endTime=$datefin&api_key=$vkey";


// Appel URL
$http_result = httpQuery($url);

// Recherche valeur

$xpath_expression = '/powerDetails/meters/meterTelemetries/values/meterTelemetry/value';

$xpath_result = xpath($http_result,$xpath_expression);

//Affichage résultat URL;
echo "$http_result";


?>


Il faut remplacer les XXXXXXXXXXXX au niveau du $site = 'XXXXXXXXXXXXXX' par le numéro du site de production et $vkey = 'XXXXXXXXXXXXXX' par la key api obtenu sur le serveur solaredge.

Cela fonctionne et me donne la quantité d'énergie injecter sur le réseau.

Merci pour votre aide
bizardnime
 
Messages : 13
Inscription : 30 Nov 2019

Re: Besoin d'aide pour réalisation script - Photovoltaïque

Messagepar bizardnime » 06 Déc 2019 17:24

J'ai reçu un mail de solaredge.

Il serait possible d'avoir les valeurs de production, consommation et injection sur le réseau directement par onduleur.

Cela permettrait d'avoir les valeurs en direct et pas toutes les 15 minutes avec une communication entre eedomus et mon onduleur solaredge.

Il semblerait que mon onduleur utilise le protocole suspect modbus TCP.

Voir ce lien : https://www.solaredge.com/sites/default ... l-note.pdf

Quelqu'un connais ce protocole et m'expliquer comment obtenir les valeurs de production, exportation et importation d’énergie?

Merci
bizardnime
 
Messages : 13
Inscription : 30 Nov 2019

Re: Besoin d'aide pour réalisation script - Photovoltaïque

Messagepar Franck » 04 Avr 2020 18:25

Bonjour,
Avez vous trouver une solution pour récupérer les info de SolarEdge Avec l’api ?
Je ne suis pas spécialiste mais la principe ne pourrait pas être le même que le pluging enedis de merguez ?
Franck
 
Messages : 174
Inscription : 05 Fév 2016
Localisation : Toulouse

Re: Besoin d'aide pour réalisation script - Photovoltaïque

Messagepar bizardnime » 11 Avr 2020 10:36

bonjour,

oui, j'ai réussi à récupérer les informations informations API de solaredge avec le script suivant

Code : Tout sélectionner
<?php

// test de l'utilisation du cache ou non
$CACHE_DURATION = 2 ; // minutes
$last_xml_success = loadVariable( 'last_xml_success' );
    if ((time() - $last_xml_success) / 60 < $CACHE_DURATION)
    {
sdk_header( 'text/xml' );
$cached_xml = loadVariable( 'cached_xml' );
echo $cached_xml;
    die ();
    }

// script php   
    // Variable Date, Site et Key

    $site = getArg('site');
    $vkey = getArg ('Key');

    // composition URL

    $url= "https://monitoringapi.solaredge.com/site/$site/currentPowerFlow.xml?api_key=$vkey";

    // Appel URL
    $http_result = httpQuery($url);

    // Recherche valeur

    $xpath_PV = '(//PV/currentPower)*1000';
    $xpath_LOAD = "(//LOAD/currentPower)*1000";
    $xpath_GRID = '(//GRID/currentPower)*1000';

    $xpath_connection = '//connections';


    $xpath_result_PV = xpath($http_result,$xpath_PV);
    $xpath_result_LOAD = xpath($http_result,$xpath_LOAD);
    $xpath_result_GRID = xpath($http_result,$xpath_GRID);
    $xpath_result_connections = xpath($http_result,$xpath_connection);

if ($xpath_result_connections == LOADGridPVLoad)
   { $PURCHASED = 0;
    $FEEDIN = $xpath_result_GRID;
    }
else
     if ($xpath_result_connections == PVLoadLOADGrid)
        {$PURCHASED = 0;
        $FEEDIN = $xpath_result_GRID;
        }
    else   
   
        { $PURCHASED = $xpath_result_GRID;
         $FEEDIN = 0;
        }

    //Affichage résultat URL;

    $xml = "<racine>". "\n";
    $xml .= "<PV>$xpath_result_PV</PV>"."\n";
    $xml .= "<LOAD>$xpath_result_LOAD</LOAD>"."\n";
    $xml .= "<GRID>$xpath_result_GRID</GRID>"."\n";
    $xml .= "<PURCHASED>$PURCHASED</PURCHASED>"."\n";
    $xml .= "<FEEDIN>$FEEDIN</FEEDIN>"."\n";
    $xml .= "<CONNECTIONS>$xpath_result_connections</CONNECTIONS>"."\n";
    $xml .= "</racine>"."\n";

// création du XML dans la variable $xml
$cached_xml = '<?xml version="1.0" encoding="utf8" ?>' ;
$cached_xml .= '<root>' ;
$cached_xml .= '<cached>0</cached>' ;
$cached_xml .= $xml;
$cached_xml .= '</root>' ;
echo $cached_xml;
    if ($xml != '' ) // non vide
    {
$cached_xml = str_replace( '<cached>0</cached>' , '<cached>1</cached>' , $cached_xml);
saveVariable( 'cached_xml' , $cached_xml);
saveVariable( 'last_xml_success' , time());
    }
?>


Merci pour l'aide
bizardnime
 
Messages : 13
Inscription : 30 Nov 2019


Retour vers Scripts & Périphériques du store

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 18 invité(s)