Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

[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
winhex
Actif
Messages : 3781
Inscription : 23 janv. 2015, 01:41

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

Message par winhex » 16 juin 2019, 03:03

pour commencer un scenario
voici le log final
------------------------------------
[2019-06-16 03:00:56][SCENARIO] Start : Scenario lance manuellement.
[2019-06-16 03:00:56][SCENARIO] Exécution du sous-élément de type [action] : code
[2019-06-16 03:00:56][SCENARIO] Exécution d'un bloc code
[2019-06-16 03:00:56][SCENARIO] ***************************Fonction****************************
[2019-06-16 03:00:56][SCENARIO] ["06:05:52","06:10:52","06:15:52","06:20:52","06:25:52","06:30:52","06:35:52","06:40:52","06:45:52","06:50:52","06:55:52","07:00:52","07:05:52","07:10:52","07:15:52","07:20:52","07:25:52","07:30:52","07:35:52","07:40:52","07:45:52","07:50:52","07:55:52","08:00:52","08:05:52","08:10:52","08:15:52","08:20:52","08:25:52","08:30:52","08:35:52","08:40:52","08:45:52","08:50:52","08:55:52","09:00:52","09:05:52","09:10:52","09:15:52","09:20:52","09:25:52","09:30:52","09:35:52","09:40:52","09:45:52","09:50:52","09:55:52","10:00:52","10:05:52","10:10:52","10:15:52","10:20:52","10:25:52","10:30:52","10:35:52","10:40:52","10:45:52","10:50:52","10:55:52","11:00:52","11:05:52","11:10:52","11:15:52","11:20:52","11:25:52","11:30:52","11:35:52","11:40:52","11:45:52","11:50:52","11:55:52","12:00:52"]
[2019-06-16 03:00:56][SCENARIO] ["0","0","0","0","0","0","0","0","0","0","0","0","0","0","19","104","134","155","176","199","219","241","263","282","305","328","353","378","409","441","468","502","532","562","595","622","652","678","704","735","759","784","808","834","858","877","901","919","942","961","992","1022","1047","1073","1097","1139","1176","1173","1043","897","1212","1261","1133","1277","1303","1315","1321","1331","1349","1363","1375","1390"]
[2019-06-16 03:00:56][SCENARIO] Array
[2019-06-16 03:00:56][SCENARIO] 0
[2019-06-16 03:00:56][SCENARIO] 0
[2019-06-16 03:00:56][SCENARIO] 0
[2019-06-16 03:00:56][SCENARIO] 0
[2019-06-16 03:00:56][SCENARIO] 0
[2019-06-16 03:00:56][SCENARIO] 0
[2019-06-16 03:00:56][SCENARIO] 0
[2019-06-16 03:00:56][SCENARIO] 0
[2019-06-16 03:00:56][SCENARIO] 0
[2019-06-16 03:00:56][SCENARIO] 0
[2019-06-16 03:00:56][SCENARIO] 0
[2019-06-16 03:00:56][SCENARIO] 0
[2019-06-16 03:00:56][SCENARIO] 0
[2019-06-16 03:00:56][SCENARIO] 0
[2019-06-16 03:00:56][SCENARIO] 19
[2019-06-16 03:00:56][SCENARIO] 104
[2019-06-16 03:00:56][SCENARIO] 134
[2019-06-16 03:00:56][SCENARIO] 155
[2019-06-16 03:00:56][SCENARIO] 176
[2019-06-16 03:00:56][SCENARIO] 199
[2019-06-16 03:00:56][SCENARIO] 219
[2019-06-16 03:00:56][SCENARIO] 241
[2019-06-16 03:00:56][SCENARIO] 263
[2019-06-16 03:00:56][SCENARIO] 282
[2019-06-16 03:00:56][SCENARIO] 305
[2019-06-16 03:00:56][SCENARIO] 328
[2019-06-16 03:00:56][SCENARIO] 353
[2019-06-16 03:00:56][SCENARIO] 378
[2019-06-16 03:00:56][SCENARIO] 409
[2019-06-16 03:00:56][SCENARIO] 441
[2019-06-16 03:00:56][SCENARIO] 468
[2019-06-16 03:00:56][SCENARIO] 502
[2019-06-16 03:00:56][SCENARIO] 532
[2019-06-16 03:00:56][SCENARIO] 562
[2019-06-16 03:00:56][SCENARIO] 595
[2019-06-16 03:00:56][SCENARIO] 622
[2019-06-16 03:00:56][SCENARIO] 652
[2019-06-16 03:00:56][SCENARIO] 678
[2019-06-16 03:00:56][SCENARIO] 704
[2019-06-16 03:00:56][SCENARIO] 735
[2019-06-16 03:00:56][SCENARIO] 759
[2019-06-16 03:00:56][SCENARIO] 784
[2019-06-16 03:00:56][SCENARIO] 808
[2019-06-16 03:00:56][SCENARIO] 834
[2019-06-16 03:00:56][SCENARIO] 858
[2019-06-16 03:00:56][SCENARIO] 877
[2019-06-16 03:00:56][SCENARIO] 901
[2019-06-16 03:00:56][SCENARIO] 919
[2019-06-16 03:00:56][SCENARIO] 942
[2019-06-16 03:00:56][SCENARIO] 961
[2019-06-16 03:00:56][SCENARIO] 992
[2019-06-16 03:00:56][SCENARIO] 1022
[2019-06-16 03:00:56][SCENARIO] 1047
[2019-06-16 03:00:56][SCENARIO] 1073
[2019-06-16 03:00:56][SCENARIO] 1097
[2019-06-16 03:00:56][SCENARIO] 1139
[2019-06-16 03:00:56][SCENARIO] 1176
[2019-06-16 03:00:56][SCENARIO] 1173
[2019-06-16 03:00:56][SCENARIO] 1043
[2019-06-16 03:00:56][SCENARIO] 897
[2019-06-16 03:00:56][SCENARIO] 1212
[2019-06-16 03:00:56][SCENARIO] 1261
[2019-06-16 03:00:56][SCENARIO] 1133
[2019-06-16 03:00:56][SCENARIO] 1277
[2019-06-16 03:00:56][SCENARIO] 1303
[2019-06-16 03:00:56][SCENARIO] 1315
[2019-06-16 03:00:56][SCENARIO] 1321
[2019-06-16 03:00:56][SCENARIO] 1331
[2019-06-16 03:00:56][SCENARIO] 1349
[2019-06-16 03:00:56][SCENARIO] 1363
[2019-06-16 03:00:56][SCENARIO] 1375
[2019-06-16 03:00:56][SCENARIO] 1390
[2019-06-16 03:00:56][SCENARIO] le dernier est 1390
[2019-06-16 03:00:56][SCENARIO] le 15eme est 104
[2019-06-16 03:00:56][SCENARIO] Fin correcte du scénario
le code je pense qu'avec tu peux maintenant en faire se que bon te semble

Code : Tout sélectionner

// https://medium.com/@rukmalf/extracting-data-from-apsystems-inverters-8c2b8e8942b6


$json = file_get_contents("http://10.1.14.29//perso/benj29.json");

$arr = json_decode($json, true);

$scenario->setLog('***************************Fonction****************************'); 
$times = $arr["data"]["time"];
$powers = $arr["data"]["power"];
$scenario->setLog($times);
$scenario->setLog($powers);
  $eq = explode(",", str_replace('"', "", str_replace("[", "", str_replace("]", "", $powers))));
$scenario->setLog($eq);

foreach ($eq as $power) {
  $scenario->setLog($power);
} 
$fin = end($eq);
$scenario->setLog("le dernier est $fin" );
$scenario->setLog("le 15eme est $eq[15]" );
te reste à lancer le script sh dans le scenario php

hs
le script qui m'a bien aider (le dernier) pour différencier time et power
https://www.tutorialrepublic.com/php-tu ... arsing.php
mis en script jeedom avant de mettre en scenario
Pièces jointes
script_json.png
script_json.png (111.65 Kio) Consulté 416 fois



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

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

Message par winhex » 17 juin 2019, 18:01

ouf :D
comme je te connais tu laches rien ! :D


benj29
Actif
Messages : 3976
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 » 18 juin 2019, 09:08

Winhex, help lol.

C'était trop facile !
En fait il faut vraiment tenir compte de l'heure et non juste du dernier élément.
Je ne l'ai pas vu tout de suite, mais il y a un décalage côté refresh sur le serveur "distant" d'APS et l'heure temps réel.

Par exemple à 9h je suis en train de récupérer les données 7h45 !

Du coup il faut traiter le time pour remettre ça en phase avec une information virtuelle.
Et là j'avoue que je sèche car on ne peut que pousser une info et non un temps/date par Jeedom (je n'ai pas vu Y et t mais juste Y).

Une idée ? Pour avoir un virtuel en phase avec l'échelle des temps ?

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

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

Message par winhex » 18 juin 2019, 10:35

regarde modifié l'historique

viewtopic.php?f=32&t=20037&hilit=commande+php

soit

Code : Tout sélectionner

$cmd = cmd::byId(773);
$cmd->addHistoryValue(  0,   $_datetime = '2016-06-02 08:30:00') ;
$cmd->addHistoryValue(  1,   $_datetime = '2016-06-02 09:30:00') ;


benj29
Actif
Messages : 3976
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 » 18 juin 2019, 21:49

Hurmf, je dois mal m'y prendre et je ne comprends pas l'erreur que j'ai pour récupérer le dernier time.

Mon code :

Code : Tout sélectionner

// https://medium.com/@rukmalf/extracting-data-from-apsystems-inverters-8c2b8e8942b6

$json = file_get_contents("http://192.168.2.90/montheme/flux_aps.json");

$arr = json_decode($json, true);

$scenario->setLog('***************************Fonction****************************'); 

// récupération des colonnes à traiter (time et power)
$times = $arr["data"]["time"];
$powers = $arr["data"]["power"];

// à commenter ensuite
//$scenario->setLog($times);
$scenario->setLog('***************************Affichage des times récupérés****************************'); 
$scenario->setLog($times);
$scenario->setLog('***************************Affichage des powers récupérés****************************'); 
$scenario->setLog($powers);


// découpage des 2 colonnes extraites en supprimant les [ et autres guillemets
$etime = explode(",", str_replace('"', "", str_replace("[", "", str_replace("]", "", $times))));
$eqpow = explode(",", str_replace('"', "", str_replace("[", "", str_replace("]", "", $powers))));

// debug
$scenario->setLog('***************************Affichage des times nettoyés****************************'); 
$scenario->setLog($etime);
$scenario->setLog('***************************Affichage des powers nettoyés****************************'); 
$scenario->setLog($eqpow);

// récupération du dernier élément
foreach ($eqpow as $power) {
  $scenario->setLog($power);
} 
$finpower = end($eqpow);

foreach ($etime as $tim) {
   scenario->setlog($tim);
}
$fintime = end($etime);

$scenario->setLog("le dernier power est $finpower" );
$scenario->setLog("le dernier time est $fintime" );

$scenario->setData("p_production_api", $finpower);
Voilà l'erreur que j'ai :

Code : Tout sélectionner

[2019-06-18 21:45:02][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2019-06-18 21:45:02][SCENARIO] Exécution du sous-élément de type [action] : code
[2019-06-18 21:45:02][SCENARIO] Exécution d'un bloc code
[2019-06-18 21:45:02][SCENARIO] Date courante : 20190618
[2019-06-18 21:45:02][SCENARIO] Exécution du sous-élément de type [action] : action
[2019-06-18 21:45:02][SCENARIO] Exécution de la commande [Agrégateurs][Box Photovoltaïque][curl_json]
[2019-06-18 21:45:03][SCENARIO] Pause de 10 seconde(s)
[2019-06-18 21:45:13][SCENARIO] Exécution du sous-élément de type [action] : code
[2019-06-18 21:45:13][SCENARIO] Exécution d'un bloc code
[2019-06-18 21:45:13][SCENARIO] syntax error, unexpected '->' (T_OBJECT_OPERATOR)
[2019-06-18 21:45:13][SCENARIO] Fin correcte du scénario
Les premières lignes sont celles du scénario.

Si tu as une idée ?

Par contre, j'aimerai comprendre :

- je vire le passage par variable
- j'identifie l'iD du virtuel à stocker,
- je créé la date $_datetime au format YYYY-MM-DD HH:MM:SS en concaténant la récupération du $fintime (si j'arrive à l'avoir :D)

puis j'ajoute ce code

Code : Tout sélectionner

$cmd->addHistoryValue($finpower ,$_datetime) ;
Mais du coup, comment je m'assure que si j'affiche la valeur du virtuel c'est bien la valeur dans le passé 1h avant et que je ne suis pas en train de voir une valeur en avance du temps ?
De même, le plugin suivi conso utilise la puissance de l'équipement (donc ici ma production). Jeedom permet-il de traiter une info qui est en retard par rapport au temps réel ?

Encore merci pour ton aide winhex.

Indépendamment du souci de décalage temporel :

Image

On voit la donnée 5min sur le site :).

Faut encore que je corrige les données d'hier :)

Image

Avatar de l’utilisateur
Poumi
Actif
Messages : 660
Inscription : 21 mars 2019, 22:41

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

Message par Poumi » 18 juin 2019, 21:54

Je ne sais pas si c’est ça mais j’ai déjà eu cette erreur en faisant des copier/ coller de scénarios depuis ailleurs.
Mon problème venait du fait que les - étaient remplacés par des –
Et j’avais le même genre d’erreur avec d’autres caractères...

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

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

Message par winhex » 18 juin 2019, 22:29

regarde
scenario->setlog($tim);
il manque le dollar

pour le reste je ferais comme ça aussi

pour le time

Code : Tout sélectionner

$fin = date("Y-m-d H:i:s", strtotime("09:36"));  
$scenario->setLog($fin);
[2019-06-18 22:26:43][SCENARIO] Start : Scenario lance manuellement.
[2019-06-18 22:26:43][SCENARIO] Exécution du sous-élément de type [action] : code
[2019-06-18 22:26:43][SCENARIO] Exécution d'un bloc code
[2019-06-18 22:26:43][SCENARIO] 2019-06-18 09:36:00
[2019-06-18 22:26:43][SCENARIO] Fin correcte du scénario
pour le reste j'utilisais addHistoryValue avec un binaire (pour temps de fonctionnement)
car celui ci étais parfois deffaillant et le calcul en 2016 se faisait immediatement jour J ou J-x
aprés fait des test mais pour moi vu que c'est des calcul sur la bdd c'est ok
Dernière édition par winhex le 18 juin 2019, 22:37, édité 1 fois.

benj29
Actif
Messages : 3976
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 » 18 juin 2019, 22:37

Je regarde et je réessaye.
Mais je n'ai fait que des copier coller de tes lignes. Bizarre.

Envoyé de mon JSN-L21 en utilisant Tapatalk


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

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

Message par winhex » 18 juin 2019, 22:41

j'ai edité il te manque un dollar

sinon

Code : Tout sélectionner

// https://medium.com/@rukmalf/extracting-data-from-apsystems-inverters-8c2b8e8942b6
// le dernier script de cette page m'a mis sur la voie
// https://www.tutorialrepublic.com/php-tutorial/php-json-parsing.php
// sujet jeedom https://www.jeedom.com/forum/viewtopic.php?f=31&t=29412&p=740134#p740134

$json = file_get_contents("http://10.1.14.29//perso/benj29.json");

$arr = json_decode($json, true);

$scenario->setLog('***************************Fonction****************************'); 
$times = $arr["data"]["time"];
$powers = $arr["data"]["power"];
$scenario->setLog($times);
$scenario->setLog($powers);
$etime = explode(",", str_replace('"', "", str_replace("[", "", str_replace("]", "", $times))));

  $eq = explode(",", str_replace('"', "", str_replace("[", "", str_replace("]", "", $powers))));
$scenario->setLog($eq);
$scenario->setLog($etime);
foreach ($eq as $power) {
  $scenario->setLog($power);
} 
$fin = end($eq);
foreach ($etime as $tim) {
   $scenario->setlog($tim);
}
$fintime = end($etime);
$scenario->setLog("le dernier est $fin" );
$scenario->setLog("a $fintime" );
// $scenario->setLog("le 15eme est $eq[15]" );
$fin = date("Y-m-d H:i:s", strtotime("$fintime"));  
$scenario->setLog($fin);

[2019-06-18 22:40:18][SCENARIO] le dernier est 1390
[2019-06-18 22:40:18][SCENARIO] a 12:00:52
[2019-06-18 22:40:18][SCENARIO] 2019-06-18 12:00:52
[2019-06-18 22:40:18][SCENARIO] Fin correcte du scénario
et pour l'id

Code : Tout sélectionner

$cmdId= cmd::byString("#[sondes][Sondes SdB][Humidité]#")->getId();
$scenario->setLog("l'id de la sondes sdb est $cmdId");
vérifie si le plug conso a un cron sinon l'actualisation y sera lié


benj29
Actif
Messages : 3976
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 » 19 juin 2019, 08:49

Bon j'ai tout corrigé j'arrive à ça.

Code : Tout sélectionner

// https://medium.com/@rukmalf/extracting-data-from-apsystems-inverters-8c2b8e8942b6

$json = file_get_contents("http://192.168.2.90/montheme/flux_aps.json");

$arr = json_decode($json, true);

// récupération des colonnes à traiter (time et power)
$times = $arr["data"]["time"];
$powers = $arr["data"]["power"];

// découpage des 2 colonnes extraites en supprimant les [ et autres guillemets
$etime = explode(",", str_replace('"', "", str_replace("[", "", str_replace("]", "", $times))));
$eqpow = explode(",", str_replace('"', "", str_replace("[", "", str_replace("]", "", $powers))));

// récupération du dernier élément
foreach ($eqpow as $power) {
  $scenario->setLog($power);
} 
$finpower = end($eqpow);

foreach ($etime as $tim) {
   $scenario->setlog($tim);
}
$fintime = end($etime);

// adaptation du format date 
$fintime = date("Y-m-d H:i:s", strtotime("$fintime")); 

// récupération de l'ID
$cmdId= cmd::byString("#[Consommation][Puissance Instantanée][Production (API)]#")->getId();

// ajout de la valeur en historique du virtuel info production api
$cmd = cmd::byId($cmdId);
$cmd->addHistoryValue($finpower,$fintime) ;
$scenario->setLog("Ajout de la valeur $finpower à $cmdId pour $fintime" );
Par contre, ce matin, le fichier semble parfaitement en phase avec l'heure (dans les < 5 min).

Je ne comprends pas en quoi je dois modifier le cron côté suiviconso pour que ce soit en phase (pourquoi d'ailleurs ?).

Mon souci est que j'estime le gain de la production. Il n'est pas forcément tout utilisé ! Soit j'arrive à manger une partie de ce que je produis (dans ce cas, j'estime que c'est le talon ou la piscine suivant ce qui est marche), soit s'il reste de la puissance appelée sur le réseau c'est que j'ai gagné ce que j'ai produit à minima.

Le truc c'est que ça c'est TEMPS REEL (cron à la minute) et donc j'utilise le pulse par jeedouino qui est loin d'avoir la résolution de l'API, 600W contre quelques W par API). Donc si c'est temps réel, comment je vais pour bien calculer la puissance déduite ? Pour bien faire, il faudrait que je regarde le time de la production API et que je prenne la valeur en conso au même instant pour me rendre indépendant de la notion de temps.

Ici je le fais avec le pulse donc c'est temps réel :
Image

-----

Pour info, on voit bien le décalage horaire hier entre le compteur pulse de production et le passage par API.

Image

Ce qui est sympa c'est que la forme de la courbe est vraiment plus précise. Reste à voir l'erreur entre les deux mais à mon avis on est au pas temporel d'erreur (1min vs 5min). En énergie, on doit être assez bon (<5%)

benj29
Actif
Messages : 3976
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 » 19 juin 2019, 09:50

J'ai modifié mon code pour remonter et afficher la dernière heure de mise à jour :

Code : Tout sélectionner

[2019-06-19 09:47:10][SCENARIO] Start : Scenario lance manuellement.
[2019-06-19 09:47:10][SCENARIO] Exécution du sous-élément de type [action] : code
[2019-06-19 09:47:10][SCENARIO] Exécution d'un bloc code
[2019-06-19 09:47:10][SCENARIO] Date courante : 20190619
[2019-06-19 09:47:10][SCENARIO] Exécution du sous-élément de type [action] : action
[2019-06-19 09:47:10][SCENARIO] Exécution de la commande [Agrégateurs][Box Photovoltaïque][curl_json]
[2019-06-19 09:47:10][SCENARIO] Pause de 10 seconde(s)
[2019-06-19 09:47:20][SCENARIO] Affectation de la variable last_time_api => NULL = NULL
[2019-06-19 09:47:20][SCENARIO] Exécution du sous-élément de type [action] : code
[2019-06-19 09:47:20][SCENARIO] Exécution d'un bloc code
[2019-06-19 09:47:20][SCENARIO] Ajout de la valeur 737 à 13595 pour 2019-06-19 09:45:38
[2019-06-19 09:47:20][SCENARIO] Mise à jour réussie pour 2019-06-19 09:45
[2019-06-19 09:47:20][SCENARIO] Fin correcte du scénario

Code : Tout sélectionner

// https://medium.com/@rukmalf/extracting-data-from-apsystems-inverters-8c2b8e8942b6

$json = file_get_contents("http://192.168.2.90/montheme/flux_aps.json");

$arr = json_decode($json, true);

// récupération des colonnes à traiter (time et power)
$times = $arr["data"]["time"];
$powers = $arr["data"]["power"];

// découpage des 2 colonnes extraites en supprimant les [ et autres guillemets
$etime = explode(",", str_replace('"', "", str_replace("[", "", str_replace("]", "", $times))));
$eqpow = explode(",", str_replace('"', "", str_replace("[", "", str_replace("]", "", $powers))));

// récupération du dernier élément
foreach ($eqpow as $power) {
} 
$finpower = end($eqpow);

foreach ($etime as $tim) {
}
$fintime = end($etime);

// adaptation du format date 
$fintime = date("Y-m-d H:i:s", strtotime("$fintime")); 

// récupération de l'ID
$cmdIdpower= cmd::byString("#[Consommation][Puissance Instantanée][Production (API)]#")->getId();

// ajout de la valeur en historique du virtuel info production api
$cmdpower = cmd::byId($cmdIdpower);
$cmdpower->addHistoryValue($finpower,$fintime);
$scenario->setLog("Ajout de la valeur $finpower à $cmdIdpower pour $fintime" );

// update graphique dernière valeur reformatée
$fintime = date("Y-m-d H:i", strtotime("$fintime")); 
$scenario->setData("last_time_api",$fintime);
$scenario->setLog("Mise à jour réussie pour $fintime" );

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

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

Message par winhex » 19 juin 2019, 16:33

te voilà avec Ton code :D

l'erreur peux venir du lissage .

enfin la je pourrais pas trop te dire
ta demande ressemble à la serie de vidéo de barnabé qui fait tourné son balon d'eau chaude lorsque sa production depasse sa conso

pour le cron du plug
faut faire des essais avec un trucs fictif virtuel ou scénario comparé au plug pour voir
si c'est le changement de valeur qui actualise ou/et un cron. sinon le cumul/temps peux avoir une erreur
consommation par heure 9.22 kw
est égal à ta conso total / le nombre d'heures
si le calcul est fait à heure fixe et que ton script modifie à temps -5,10 mn tu auras toujours un light decallage
tu peux rien faire c'est surtout pour ton info

benj29
Actif
Messages : 3976
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 » 19 juin 2019, 17:40

Non, l'erreur ne vient pas du lissage.

On voit bien que l'historisation avec ta méthode marche bien.
Je superpose le pulse issu du compteur production (mais la résolution est forcément bien mauvaise vu que j'ai une résolution de 1000Wh voir plus bas) et celui de l'API aux mêmes instants.

Hier décalé, aujourd'hui parfait.

Image

Le truc c'est que pour calculer le gain de mon installation PV, il faut que je déduise la puissance produite si la consommation est non nulle.

Tu as une production en place qui te sort des W,
Ta consommation est nulle,
Quel est ton gain ?
En aucun cas, c'est ta production. Car elle est perdue !
C'est le talon que tu aurais sans elle => estimation.

Si ta consommation n'est pas nulle, facile ! Là c'est ta production.

Donc pour calculer un vrai amortissement de mon installation en temps réel avec Jeedom, il faut que j'estime ou que récupère en temps réel cette puissance.

Deux solutions :

- la puissance temps réel par le pulse. C'est ce que je fais à l'heure actuelle. La résolution est horrible par pas de 2/300W en gros.

Image

- seconde solution. Rejouer un scenario qui calcule le gain à la fin de journée en prenant le temps pour chaque valeur de consommation Linky, puis la valeur production par API (plus précis) ou l'estimation du talon & piscine. Et encore pour bien faire, faut que je prenne la moyenne du PAPP par pas d'une minute car lui est plus verbeux qu'une minute, le linky !

A défaut l'API me sert déjà pour avoir une belle courbe ! Et vérifier que mon pulse ne dit pas de conn*ries !

benj29
Actif
Messages : 3976
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 » 19 juin 2019, 17:59

Bon ce que je craignais comme tu le disais, le fait de peupler un virtuel en décalage de temps (passé), le plugin suivi conso ne suit pas.

Il reste bloqué à 8h30 malgré une resynchro :

Image

Alors que si je regarde la courbe qui sert de puissance elle est bien là mais elle s'est construite en retard dans le passé.

Image

Je tente bien une resynchro ... mais rien.

Image

Du coup, si je veux calculer un suivi conso pour le gain, il faut que je sois temps réel et non dans le passé. (ou alors le faire à la main sans passer par suivi conso).

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

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

Message par winhex » 19 juin 2019, 18:37

peut être voir avec jeedom
si il ny a pas un cache dans la bdd que tu peux incrémenter de valeur / temps
principe de date de valeurs banque
Dernière édition par winhex le 19 juin 2019, 18:42, édité 1 fois.

Répondre

Revenir vers « [Plugin officiel] Scripts »

Qui est en ligne ?

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