Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

[Script] Récupérer la production de ses panneaux PV (APS / Altenergy Power System)

Réservé à l'utilisation et la programmation de scripts dans JEEDOM
benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: [Script] Récupérer la production de ses panneaux PV (APS / Altenergy Power System)

Message par benj29 » 26 juin 2019, 11:55

Bon j'ai créé un nouvel ID. J'ai tenté en copiant l'ancien contenu de l'info virtuel ou en vidant (partant de zéro), l'insert ne marche pas.
Le log dit bien qu'il ajoute les valeurs dans la DB mais en vérité c'est vide.

J'avoue que je sèche totalement.
Cela est tout comme si la commande :

Code : Tout sélectionner

  $cmdpower->addHistoryValue($eqpow[$i],$etime[$i]); 
        $scenario->setLog("Ajout de la valeur $eqpow[$i] à $cmdIdpower pour $etime[$i]" );
n'avait aucun impact sur l'ajout de donnée en DB.

On voit que le scénario traitement du fichier et push dans la DB tourne bien aujourd'hui en récupérant des valeurs.

Image

(le nouvel ID est 13700).

de l'autre le graphique de l'ID en question est vide de chez vide.

Image

De même le scénario qui "lit" l'ID (celui que tu m'as proposé que j'ai modifié) ne lit... RIEN. Donc aucune donnée dans la DB.

Image

Si quelqu'un d'expert (ou winhex :D) dans l'insert par code de valeur dans la db est là... :D


benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: [Script] Récupérer la production de ses panneaux PV (APS / Altenergy Power System)

Message par benj29 » 26 juin 2019, 16:02

Bon, deux questions.

La première. Pour éviter de renvoyer systématiquement toutes les valeurs et n'envoyer que les nouvelles dans la db, je lis le temps du fichier JSON. Ensuite je déduis les bornes à 1min avant/après, je cherche la valeur entre début et fin (j'ai tout essayé min, max, last etc).

Si j'ai une valeur d'où le sizeof (et pas =0 car la production peut être nulle) c'est qu'elle est déjà en DB, donc pas besoin de la renvoyer.

Sauf que systématiquement ma demande de statistiques renvoie une valeur "vide".

Code : Tout sélectionner

for($i = 0; $i < sizeof($etime); $i++) 
{  
     // conversion date du jour + heure du fichier
     $timeread = date("Y-m-d H:i:s", strtotime("$today $etime[$i]"));  
     $scenario->setLog("valeur à lire : $timeread");
    
     // si le fichier n'est pas vide
     if ($timeread != "1970-01-01 01:00:00") {
       
        // on teste si l'enregistrement est déjà présent en db
        // bornes 1min avant/après
        $debut = date("Y-m-d H:i:s", strtotime($timeread)-60);
        $fin = date("Y-m-d H:i:s", strtotime($timeread)+60);  
        $scenario->setLog("demande valeur $debut à $fin");
  		// recherche de la valeur
        $value = history::getStatistique($cmdIdpower, $debut, $fin)["last"];
        $scenario->setLog("valeur lue :$value");
		// si la valeur est non nulle alors j'ai pas de valeur à réin
        if (sizeof($value) != 0) {
            $scenario->setLog("Pas de valeur à ajouter car de $debut à $fin, valeur lue $value");
        }
        else 
        {
        
        $cmdpower->addHistoryValue($eqpow[$i],$etime[$i]); 
        $scenario->setLog("Ajout de la valeur $eqpow[$i] à $cmdIdpower pour $etime[$i]" );
        }
     }
  	 else {
        $scenario->setLog("Pas de valeur à ajouter" );
     }
}
Plus particulièrement ce bout de code :

Code : Tout sélectionner

   // on teste si l'enregistrement est déjà présent en db
        // bornes 1min avant/après
        $debut = date("Y-m-d H:i:s", strtotime($timeread)-60);
        $fin = date("Y-m-d H:i:s", strtotime($timeread)+60);  
        $scenario->setLog("demande valeur $debut à $fin");
  		// recherche de la valeur
        $value = history::getStatistique($cmdIdpower, $debut, $fin)["last"];
        $scenario->setLog("valeur lue :$value");
		// si la valeur est non nulle alors j'ai pas de valeur à réinsérer
        if (sizeof($value) != 0) {
            $scenario->setLog("Pas de valeur à ajouter car de $debut à $fin, valeur lue $value");
        }
        else 
        {
        $cmdpower->addHistoryValue($eqpow[$i],$etime[$i]); 
        $scenario->setLog("Ajout de la valeur $eqpow[$i] à $cmdIdpower pour $etime[$i]" );
        }
Le log m'indique rien ... donc je ne sais pas comment identifier si la donnée est déjà en db.

Image

Second point, même si je force l'import de la donnée en DB, il ne se passe rien. Aucune donnée est insérée ! Donc je n'ai aucune idée comme débloquer la db ...

winhex
Actif
Messages : 3799
Inscription : 23 janv. 2015, 01:41

Re: [Script] Récupérer la production de ses panneaux PV (APS / Altenergy Power System)

Message par winhex » 26 juin 2019, 16:59

1 basiquement via autre scénario du début inscrire 2,3 valeur
Si ok
2 pourquoi ton script ne le fait pas ?
$cmdpower->addHistoryValue($eqpow[$i],$etime[$i]);
La valeur est elle un entier numérique au pif utilise intval (entier sans décimal en PHP)
La valeur étant un texte il te faut peut être la convertir en numérique
Pour exemple
Screenshot_2019-06-26-17-07-13-304-1.png
Screenshot_2019-06-26-17-07-13-304-1.png (186.95 Kio) Consulté 974 fois
Sans ça la valeur était textuelle donc sans calcul possible
Comme sur un sujet de conversion en date
Si 1+1+1 = "rien" c'est que le format n'est pas numérique

/ id du début .. date
Quelle est le soucis ?
3 recommence par la simplicité du début
4 tu pourras recherché soit via if getvalue == value (commenter dans mon exemple pour recherche date)
Et si getvalue et gettime est présent ne rien faire sinon ..

Par contre pourquoi avant cela fonctionné ?

Reprends ceux que tu as mis avant sur se sujet et teste les pour les comparés si il marche avec celui que tu as

benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: [Script] Récupérer la production de ses panneaux PV (APS / Altenergy Power System)

Message par benj29 » 26 juin 2019, 21:09

Bon déjà, j'ai validé le bout de code qui vérifie en db si la valeur est présente ou pas !

On voit que si pas de valeur, il veut l'ajouter ou si elle y est déjà, il ne l'ajoute pas.

Image

Le coup de vérifier la longueur de la valeur lue fonctionne :).

Maintenant, il ajoute la valeur... sauf que non il ne le fait pas.
Reste à comprendre pourquoi.

EDIT : 2/3 valeurs à la main, KO ça s'ajoute pas.
Je ne comprends pas là.

benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: [Script] Récupérer la production de ses panneaux PV (APS / Altenergy Power System)

Message par benj29 » 26 juin 2019, 21:17

Bon, j'ai créé un nouvel virtuel info et là ça marche juste avec le bout de code (je ne fais pas le dl du fichier, sleep etc). Et là ça marche. En gros, je traite le fichier déjà présent sur le disque.

Si maintenant je créé un nouvel id et j'utilise mon ancien scénario (init, dl du fichier, code) encore, ça ne marche pas.

A rien n'y comprendre.

Volontairement la fin du premier tour qui fait l'insert puis le second qui lui voit qu'il y a la donnée donc n'ajoute pas. (ça c'est le scénario test juste avec le code et le fichier dl à la main)

Image

Si maintenant je mets le début du scénario avant : date à init, passage par variable, script qui dl le fichier et le code derrière, ça ne marche PLUS !
Je n'y comprends rien du tout, cela fait trois fois que je recommence...

Image


benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: [Script] Récupérer la production de ses panneaux PV (APS / Altenergy Power System)

Message par benj29 » 26 juin 2019, 22:34

Bon prochaine étape masquer/afficher le graphique en fonction du booléen qui dit si je passe par l'API ou le pulse.

winhex
Actif
Messages : 3799
Inscription : 23 janv. 2015, 01:41

Re: [Script] Récupérer la production de ses panneaux PV (APS / Altenergy Power System)

Message par winhex » 26 juin 2019, 23:49

enfin c'etait quoi ?

benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: [Script] Récupérer la production de ses panneaux PV (APS / Altenergy Power System)

Message par benj29 » 27 juin 2019, 06:37

Problème de date dans les insertions et lectures. A se demander comment cela marchait les fois précédentes.

Par contre la dispo de l'api pose problème donc je pense que je vais me limiter au pulse lol... Tout ça pour rien

Envoyé de mon JSN-L21 en utilisant Tapatalk


Avatar de l’utilisateur
yoyo
Timide
Messages : 67
Inscription : 09 déc. 2014, 19:55
Localisation : Essonne

Re: [Script] Récupérer la production de ses panneaux PV (APS / Altenergy Power System)

Message par yoyo » 23 sept. 2019, 22:41

Bonjour,

Je suis votre topic avec un grand intérêt. Je vais m’acheter un petit kit autoconso avec un micro onduleur APS. J'ai vu que les microonduleurs discutaient en zigbee avec la passerelle. Vous voyez ou je veux en venir essayer de récupérer l'info directement sur le micro onduleur si quelqu'un passe par là et veux essayer de faire du retro ca serait au top !
Merci pour votre contribution le topic sera super utile une fois mon matos arrivé et installé.

benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: [Script] Récupérer la production de ses panneaux PV (APS / Altenergy Power System)

Message par benj29 » 24 sept. 2019, 05:13

Impossible car protocole proprio. J'ai contacté directement aps et c'est un refus d'ouvrir la connaissance sur la trame.

Envoyé de mon GM1900 en utilisant Tapatalk


tutur19
Timide
Messages : 33
Inscription : 19 nov. 2015, 15:51

Re: [Script] Récupérer la production de ses panneaux PV (APS / Altenergy Power System)

Message par tutur19 » 18 déc. 2019, 08:31

Hello tout le monde,
de mon coté je viens d’acquérir mon ECU-R et je n'arrive pas à accéder par l'IP local par contre aucun problème avec l'accès publique : https://www.apsystemsema.com/ema/intoDe ... cale=fr_FR

Si ça peut aider certains :)

Répondre

Revenir vers « [Plugin officiel] Scripts »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités