Plugin Apsystems

J’ai lu que cela fonctionnait également avec l’ECU B.

Je l’avais enregistré les deux fichier dans le dossier du plugin script. J’ai testé à nouveau la procédure. Voilà ce que j’obtiens comme message d’erreur maintenant


Désolé de vous déranger. mais pouvez vous m’aider.
merci

Oui, ça fonctionne avec l’ECU-B, mais j’avais du adapter en fonction de tous les éléments du post.
Je prépare une autre réponse avec ce que j’ai fait pour t’aider…

Pour le moment, je ne suis qu’à cette étape, en ayant indiquer l’adresse IP dans le fichier Mesures. PY

bien merci d’avance pour ton retour. j’attends ta prochaine réponse.

2 « J'aime »

@BOGAERT
Voici ce que j’ai fait pour remonter les infos de mon ECU-B et mes onduleurs YC600 et DS3

Avec Jeexplorer, j’ai créé le dossier: /var/www/html/plugins/script/data/apsystems_ecur/
J’ai coller dans ce dossier ce fichier APSystemsECUR.py.txt (13,7 Ko) (enlever le .txt pour avoir la bonne extension)

  • Création d’un script nommé ECU solaire JSON:

#!/usr/bin/env python3
from APSystemsECUR import APSystemsECUR
import time
import asyncio
import json
from pprint import pprint

ecu_ip = "192.168.xxx.xxx"
sleep = 60

loop = asyncio.get_event_loop()
ecu = APSystemsECUR(ecu_ip)

try:
    data = loop.run_until_complete(ecu.async_query_ecu())
    with open("/var/www/html/plugins/script/data/apsystems_ecur/current.json", 'w') as f:
        f.write(json.dumps(data))
except Exception as err:
   print(f"[ERROR] {err}")

.

  • Création d’un scénario nommé ECU-B JSON avec 4 actions (1 commande - 1 code - 1 commande - 1 code)
    Le scénario est avec une répétition toutes les minutes.

// Variables à paramétrer : 
// Fichier json à parser
$srcFile="/var/www/html/plugins/script/data/apsystems_ecur/current.json";
// fichier python à exécuter
$pythonFile="/var/www/html/plugins/script/data/apsystems_ecur/GetData.py";
//Nom du composant coté jdom. Ce composant doit porter des infos nommées Power, LastMaj, Jour, Total
$APSystemJeedomName="[Infos maison][APSystem]";
/*Préfix du nom des composants inverter. Autant de composant que d'inverter doivent être créés sous Jeedom.
Chacun d'eux doit contenir les informations : 
	 "uid"
  	 "online"
	 "unknown"
	 "frequency"
	 "temperature"
	 "signal"
	 "model"
	 "channel_qty"
	 "powerX" avec X allant de 0 au nombre de panneaux sur l'inverter - 1 
	 "voltageX" avec X allant de 0 au nombre de panneaux sur l'inverter - 1
*/
$APSystemJeedomEcuPrefixName="[Infos maison][APSystemEcu";

//Récupération des données du json créé
$json = file_get_contents($srcFile);
$arr = json_decode($json, true);

//$error=json_last_error();
//$scenario->setLog("Error ". $error);

// récupération des colonnes à traiter (time et power)
$time  = $arr["timestamp"];
$power = $arr["current_power"];
$today = $arr["today_energy"];
$lifetime = $arr["lifetime_energy"];

cmd::byString("#" . $APSystemJeedomName . "[Power]#")->event($power);
cmd::byString("#" . $APSystemJeedomName . "[LastMaj]#")->event($time);
cmd::byString("#" . $APSystemJeedomName . "[Jour]#")->event($today);
cmd::byString("#" . $APSystemJeedomName . "[Total]#")->event($lifetime);

// récupération du dernier élément
$inverters = $arr["inverters"];
$i=0;

// Pour chaque inverter
foreach ($inverters as $currinverter) { 
   
  // Pour toutes les données de l'inverter courant
  foreach ($currinverter as $key => $val) {
    // Cas de power et voltage qui sont des tableaux
    if ($key == "power" || $key == "voltage") {
      $j = 0;
      foreach ($val as $powervoltage) {
        //Traitement des tableaux de puissance / voltage pour chaque panneau, on affecte les valeurs à power0, power1 ... ou voltage0, voltage1 ...
        cmd::byString("#" . $APSystemJeedomEcuPrefixName . $i ."][" . $key . $j . "]#")->event($val[$j]);
        $j = $j + 1;
      }
    } else {
      cmd::byString("#" . $APSystemJeedomEcuPrefixName . $i ."][" . $key . "]#")->event($val);
    }
  }
   $i = $i + 1;
}

// Fichier json à parser
$srcFile="/var/www/html/plugins/script/data/apsystems_ecur/current.json";
shell_exec ("rm $srcFile");

.
J’ai programmé le scénario pour qu’il ne tourne que durant les heures de production (heures de levé/couché de soleil), pas besoin de plus.
.
.
.

  • Création de 3 virtuels - APSystem - APSystemEcu0 et APSystemEcu1

Virtuel APSytem

Virtuel APSystemEcu0


Virtuel APSystemEcu1 (Dupliquer le précédent en changeant que le nécessaire)


.
.

Si j’ai rien oublié, cela devrait fonctionner… :wink:

Je testerai cela demain. Merci par avance, j espère que cela va fonctionner également. Bonne fin de journée

1 « J'aime »

Bonjour, encore merci pour votre aide. J’ai suivi votre protocole très clair. mais j’ai des erreurs de synthaxe dans les scripts. J’ai solutionné celui de 14:32 en cherchant dans les échanges sur le forum. Avez vous une idée pour qu’il n’y ai plus de souci de synthaxe (version de python ?). merci d’avance

J’ai donné mon script et celui du Github, mais j’avais copié tous les fichiers.
Essayez de copier tous les fichiers du Github dans le dossier contenant le script

Bonjour,
Ce petit message pour te remercier et dire que j’ai réussi à récupérer les informations de l’ECU-B et de l’onduleur. Je n’ai pas eu besoin d’ajouter les autres fichiers du Github. J’ai eu besoin de comprendre la notion de module en python et corriger le code du script, et les noms de répertoire et cela a roulé ensuite en adaptant les scénarios avec les noms de mes objets virtuel sur jeedom.
Encore un grand merci

Tant mieux si tu as pu appliquer les corrections nécessaires et avoir du coup les infos de ton ECU-B.

Bonjour,
Tout fonctionnait bien depuis 5 jours. Mais depuis la dernière mise à jour du Core et des divers plugin, je n’arrive plus à remonter les informations de l’ECU-B. Avez vous fait ces mises à jour ? et avez vous le même problème ?
merci d’avance

Bonjour,

Oui j’ai fait la mise à jour en V4.2 et je n’ai pas eu de problème sur la remontée d’information.
Est-ce que les fichiers scripts et le fichier json généré sont tous dans le même dossier et dans le dossier du plugin script.
Avec les nouvelles sécurité, je crois qu’il faut que tout soit dans le même dossier.

Moi tout est dans:
/var/www/html/plugins/script/data/apsystems_ecur/

1 « J'aime »

Malheureusement, non. Mais je n’arrive pas à cibler le répertoire /apsystems_ecur/ depuis le plugin script. il me fait systématiquement un message d’erreur. Je pense que le problème vient de là. J’ai également essayer de tout mettre dans le dossier data, mais cela ne fonctionne pas. Je vais creuser.
merci

1 « J'aime »

Bonjour,

je débute avec mon ECU-B.
Je l’ai paramétré. Il se connecte bien au wifi. L’appli d’APS fonctionne.

MAIS : je n’arrive pas à trouver l’adresse IP de ma passerelle !!!

Si je regarde tous les objets connectés en WIFI sur mon serveur DHCP, je ne vois pas l’ECU-B …

La passerelle est pingable ? Parce que là, j’ai 3 objets unknown sur mon DHCP (tous les autres je sais à quels PC/objets wifi ils correspondent, et ces 3 là ne répondent pas au ping …

Merci pour votre aide.

2 « J'aime »

bon j ai trouvé l ip.

mais ds le script récupèré en exécutant le script python, j ai une erreur modèle 703 n existe pas.
Pourtant certains font fonctionner le script vec des ds3…
faudrait il modifier le script ?

merci pour votre aide.

Bonjour,

je confirme qu’avec les onduleurs DS3 cela fonctionne.
Voici le script que j’ai actuellement sur mon Jeedom, tu peux essayer
APSystemsECUR.py.txt (13,7 Ko) (enlever le .txt pour utiliser le fichier)

2 « J'aime »

Merci, il y a du mieux, mais …

[ERROR] Unable to convert binary to int location=39 data=b’4150533131303033383030303230303031000120220303174412703000019520003030454e440a’

Sinon comment savoir si le micro onduleur fonctionne bien ?

Il clignote vert toues els 5 sec, d’après la notice c’est bon, mais sur l’appli app ema, j’ai toujours 0W de production …

Si dans l’appli EMA ou sur le site apsystemsema il y a rien qui remonte, dans Jeedom ça ne marchera pas. Il doit il y avoir un problème de configuration entre le micro onduleur et l’ECU-B. Faites en sorte que déjà avec l’appli EMA il y ai un retour de production (quand il y a du soleil) pour que ce soit ok.

Sur l’appli EMA, le micro onduleur est vert.

C’est indiqué synchro ok, mais dans la colonne « signal » les barres sont toutes grises …

La box ECU-B est à 10m du micro-onduleur …

Il faut combien de volts pour que le prod démarre ?

Pour le profil réseau j’ai mis Europe → France -->UTE C15-712-1 …

EDIT : BiZARRE sur le site apsystemema.com, j’ai bien de la prod qui est remontée … 148W à 17h58… Depuis 0W, mais bon ça c’est normal, le soleil est couché …
On verra demain.