Onduleur SMA Sunny Boy

Voici les informations sur mon nouveau plugin :

  • Nom = Onduleur SMA Sunny Boy , ID = 3760, Logical ID = SMA_SunnyBoy
  • Le plugin SMA-SunnyBoy permet de récupérer les informations de production photovoltaïque des onduleurs SMA de type Sunny Boy.
  • Langages utilisés: php
  • Utilise-t-il un démon ? → non
    Des dépendances particulières ? → non
    Des crons ? → oui, il récupère les données de l’onduleur chaque minutes.
  • Possède-t-il un panel dédié ? → non
  • Payant || gratuit ? → gratuit
  • Lien GitHub ou autre site de dépôt:
    https://github.com/Sattaz/Jeedom_SMA_Sunny_Boy

Tout est en place sur GitHub, la documentation est en ligne et j’ai aussi créé un sujet sur le forum pour le support.

Il ne reste qu’à valider le plugin en Stable.

Merci @ tous, c’est mon premier plugin et j’en suis fier :slight_smile:

Sébastien

3 « J'aime »

Salut,
Intéressé, je regarderai quand je rentre de vacances.

Tu te connectes sur l’interface user ou tu passes par l’api? Ou tu passes par le cloud?

Salut,

Je me connecte par l’interface locale ‹ User ›.
C’est bien mieux pour avoir des données instantanées.
Le plugin utilise un script php curl qui se connecter à l’interface, créé une session et ensuite récupère les données via json.
Moi j’ai automatisé la filtration et la PAC de ma piscine en associant mon plugin SMA avec le plugin PAC Hayward … pour la filtration c’est juste un on/off avec un relais zwave qui commande le relais de puissance de la pompe de filtration.
Là j’ai commandé une Tesla et je viens de découvrir le plugin qui permet de démarrer ou arrêter la charge de la batterie, avec mon p’tit plugin je pourrais décider de charger ou pas en fonction des watts générés!!!

Pour l’instant le plugin n’est pas sur le market … je ne sais pas si c’est normal que la première publication prenne tellement de temps à se faire (vérification par l’équipe Jeedom ???) mais bon on verra bien.
Donne moi du feedback quand tu auras testé.

Merci,

Sébastien

Ok, super. Faudra que je vois pour « interconnecter » le plugin de @mika-nt28 (ballon d’eau chaude) avec celui ci. Cela me semble intéressant tout cela.

Juste pour info, il existe des chargeurs de voiture modulaire, tu peux donner la puissance que tu veux au chargeur et celui ci ne délivre que ce qui est défini. Cela peut être intéressant pour toi. Si tu veux plus d’infos sur les modèles. Dit le moi.

Réf EVlink Smart Wallbox

Sinon, en général, tu as un simple Switch qui soit allume/éteint soit a 2 niveaux de charge. Bien moins intéressant.

Bonjour, tag bien créé, par contre attention à la doc !

Bonjour Laetitia,

C’est mon (mes) premier plugin …
Qu’est-ce qui ne va pas avec la documentation?
C’est trop peu?

Quand est-ce que le plugin sera publié sur le market?

Merci,

Sébastien

Salut,
Je viens de jeter un petit coup d’œil a ta doc. le plugin a l’air super.

petite chose, tu saurais aussi récupérer les valeurs en kWh par jour pour avoir quelque chose de plus précis et pas devoir faire la somme de toutes les valeurs?

Salut,

Pas directement de l’onduleur SMA … c’est domage.
Par contre je m’occupe de mettre ça dans le plugin dès la prochaine version (calculs internes).
Pour l’instant le plugin n’est pas encore en ‹ Stable ›, j’attends que l’équipe Jeedom le mette en ligne.

Sébastien

Oui, je sais. Sinon, pour faire les calculs, il y a les « données » qui peuvent être récupérées sous format csv. Pour pouvoir faire des totaux plus facilement.
Mais les données instantanées sont déjà super.

Le plugin a été publié !!!
Yeahhh :stuck_out_tongue_winking_eye:

Sébastien

salut, je viens de l’installer mais il ne fonctionne pas chez moi (tripower et pas sunnyboy).
ce que je vois via Chrome et un F12: j’ai le fichier getAllOnlValues.json
avec ces valeurs dedans:

{"result":{"017A-B305A152":{
"6100_40263F00":{"1":[{"val":177}]}
,"6100_00411E00":{"1":[{"val":5000}]}
,"6100_00411F00":{"1":[{"val":0}]}
,"6100_00412000":{"1":[{"val":0}]}
,"6100_00416600":{"1":[{"val":null}]}
,"6100_00418000":{"1":[{"val":null}]}
,"6100_40463600":{"1":[{"val":null}]}
,"6100_40463700":{"1":[{"val":null}]}
,"6100_40464000":{"1":[{"val":59}]}
,"6100_40464100":{"1":[{"val":59}]}
,"6100_40464200":{"1":[{"val":59}]}
,"6100_00464800":{"1":[{"val":23577}]}
,"6100_00464900":{"1":[{"val":23469}]}
,"6100_00464A00":{"1":[{"val":23551}]}
,"6100_00464B00":{"1":[{"val":40717}]}
,"6100_00464C00":{"1":[{"val":40761}]}
,"6100_00464D00":{"1":[{"val":40797}]}
,"6100_40465300":{"1":[{"val":312}]}
,"6100_40465400":{"1":[{"val":305}]}
,"6100_40465500":{"1":[{"val":309}]}
,"6100_00465700":{"1":[{"val":5001}]}
,"6100_0046C200":{"1":[{"val":177}]}
,"6100_0046E500":{"1":[{"val":null}]}
,"6100_0046E600":{"1":[{"val":null}]}
,"6100_0046E700":{"1":[{"val":null}]}
,"6100_0046E800":{"1":[{"val":null}]}
,"6100_0046E900":{"1":[{"val":null}]}
,"6100_0046EA00":{"1":[{"val":null}]}
,"6100_0046EB00":{"1":[{"val":null}]}
,"6100_0046EC00":{"1":[{"val":null}]}
,"6100_0046ED00":{"1":[{"val":null}]}
,"6100_4046EE00":{"1":[{"val":null}]}
,"6100_4046EF00":{"1":[{"val":null}]}
,"6100_4046F000":{"1":[{"val":null}]}
,"6100_4046F100":{"1":[{"val":null}]}
,"6100_004AB600":{"1":[{"val":0}]}
,"6100_00543100":{"1":[{"val":null}]}
,"6100_00543200":{"1":[{"val":null}]}
,"6100_00543300":{"1":[{"val":null}]}
,"6100_00543400":{"1":[{"val":null}]}
,"6100_00543600":{"1":[{"val":null}]}
,"6100_00543800":{"1":[{"val":null}]}
,"6100_00543E00":{"1":[{"val":null}]}
,"6100_40652800":{"1":[{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null}]}
,"6100_40652900":{"1":[{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null}]}
,"6100_40652A00":{"1":[{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null}]}
,"6100_40652B00":{"1":[{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null}]}
,"6100_00652C00":{"1":[{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null},{"val":null}]}
,"6100_00653100":{"1":[{"val":null}]}
,"6100_00653200":{"1":[{"val":null}]}
,"6100_00664F00":{"1":[{"val":926}]}
,"6100_00665900":{"1":[{"val":980}]}
,"6100_40665B00":{"1":[{"val":-980}]}
,"6100_40665F00":{"1":[{"val":30}]}
,"6100_40666000":{"1":[{"val":12}]}
,"6100_40666100":{"1":[{"val":9}]}
,"6100_40666200":{"1":[{"val":9}]}
,"6100_40666700":{"1":[{"val":180}]}
,"6100_40666800":{"1":[{"val":73}]}
,"6100_40666900":{"1":[{"val":72}]}
,"6100_40666A00":{"1":[{"val":73}]}
,"6180_08214800":{"1":[{"val":[{"tag":307}]}]}
,"6180_08412800":{"1":[{"val":[{"tag":2119}]}]}
,"6180_08412900":{"1":[{"val":[{"tag":302}]}]}
,"6180_08413200":{"1":[{"val":[{"tag":308}]}]}
,"6180_08413300":{"1":[{"val":[{"tag":308}]}]}
,"6180_08414900":{"1":[{"val":[{"tag":886}]}]}
,"6180_08414A00":{"1":[{"val":[{"tag":887}]}]}
,"6180_08414B00":{"1":[{"val":[{"tag":885}]}]}
,"6180_08414C00":{"1":[{"val":[{"tag":303}]}]}
,"6180_08416400":{"1":[{"val":[{"tag":51}]}]}
,"6180_08416500":{"1":[{"val":[{"tag":884}]}]}
,"6180_0846A600":{"1":[{"val":[{"tag":1780}]}]}
,"6180_084A6400":{"1":[{"val":[{"tag":307}]}]}
,"6180_084A9600":{"1":[{"val":[{"tag":307}]}]}
,"6180_084A9700":{"1":[{"val":[{"tag":1721}]}]}
,"6180_104A9A00":{"1":[{"val":"192.168.3.120"}]}
,"6180_104A9B00":{"1":[{"val":"255.255.255.0"}]}
,"6180_104A9C00":{"1":[{"val":"192.168.3.250"}]}
,"6180_104A9D00":{"1":[{"val":"192.168.3.250"}]}
,"6180_084AAA00":{"1":[{"val":[{"tag":1719}]}]}
,"6180_104AB700":{"1":[{"val":""}]}
,"6180_104AB800":{"1":[{"val":""}]}
,"6180_104AB900":{"1":[{"val":""}]}
,"6180_104ABA00":{"1":[{"val":""}]}
,"6180_084ABB00":{"1":[{"val":[{"tag":3366}]}]}
,"6180_084ABC00":{"1":[{"val":[{"tag":303}]}]}
,"6180_084ABD00":{"1":[{"val":[{"tag":3327}]}]}
,"6180_084B1E00":{"1":[{"val":[{"tag":307}]}]}
,"6180_00522700":{"1":[{"low":0,"high":0,"val":5000}]}
,"6180_40522800":{"1":[{"low":0,"high":0,"val":null}]}
,"6180_00522900":{"1":[{"low":0,"high":0,"val":null}]}
,"6180_08522A00":{"1":[{"val":[{"tag":16777213}]}]}
,"6180_08522F00":{"1":[{"val":[{"tag":308}]}]}
,"6180_08652400":{"1":[{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]}]}
,"6180_08652500":{"1":[{"val":[{"tag":303}]}]}
,"6180_08652600":{"1":[{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]},{"val":[{"tag":303}]}]}
,"6180_08653A00":{"1":[{"val":[{"tag":302}]}]}
,"6180_08671E00":{"1":[{"val":[{"tag":7523}]}]}
,"6380_40251E00":{"1":[{"val":106},{"val":104}]}
,"6380_40451F00":{"1":[{"val":36055},{"val":37869}]}
,"6380_40452100":{"1":[{"val":296},{"val":275}]}
,"6400_00260100":{"1":[{"val":840077}]}
,"6400_00462400":{"1":[{"val":0}]}
,"6400_00462500":{"1":[{"val":0}]}
,"6400_00462E00":{"1":[{"val":1882938}]}
,"6400_00462F00":{"1":[{"val":1808360}]}
,"6400_0046C300":{"1":[{"val":859049}]}
,"6400_00543A00":{"1":[{"val":859049}]}
,"6400_00543B00":{"1":[{"val":859049}]}
,"6400_00543C00":{"1":[{"val":859049}]}
,"6400_00543D00":{"1":[{"val":859049}]}
,"6400_00618C00":{"1":[{"val":108}]}}}}

je suis a 177 W pour cet exemple


j’ai l’impression que les ID sont pas les même.

mon onduleur:
SMA Sunny tripower 5.0 (STP5.0-3AV-40).

je pourrais modifier ton plugin et faire un folk mais c’est pas le but, il y a moyen que tu integre aussi la version tripower?

ok, cela marche en modifiant qqs valeurs dans le fichier SMA_SunnyBoy.class.php

ce que j’ai changé, c’est l’url (/dyn/getAllOnlValues.json) et l’id (017A-B305A152):

// COLLECTING VALUES
		$collection = ('{"destDev":[],"keys":["6100_0046C200","6100_00465700","6100_00464800","6100_00464900","6100_00464A00","6400_00260100","6100_40465300","6100_40465400","6100_40465500","6100_004AB600"]}');
		curl_setopt($ch, CURLOPT_POSTFIELDS, $collection);
		curl_setopt($ch, CURLOPT_URL, 'https://'.$SMA_IP.'/dyn/getAllOnlValues.json?sid='.$SMA_SID);
		$data = curl_exec($ch);
		
		if (curl_errno($ch)) {
			curl_close ($ch);
			log::add('SMA_SunnyBoy', 'error','Error getting inverter values: '.curl_error($ch));
			$this->checkAndUpdateCmd('status', 'Erreur Données');
			return;
		}
		
		$json = json_decode($data, true);
		
		$pv_power = $json['result']['017A-B305A152']['6100_0046C200']['1']['0']['val'];
		$pv_total = ($json['result']['017A-B305A152']['6400_00260100']['1']['0']['val'])/1;
		$frequency = ($json['result']['017A-B305A152']['6100_00465700']['1']['0']['val'])/100;
		$voltage_l1 = ($json['result']['017A-B305A152']['6100_00464800']['1']['0']['val'])/100;
		$voltage_l2 = ($json['result']['017A-B305A152']['6100_00464900']['1']['0']['val'])/100;
		$voltage_l3 = ($json['result']['017A-B305A152']['6100_00464A00']['1']['0']['val'])/100;
		$current_l1 = ($json['result']['017A-B305A152']['6100_40465300']['1']['0']['val'])/1000;
		$current_l2 = ($json['result']['017A-B305A152']['6100_40465400']['1']['0']['val'])/1000;
		$current_l3 = ($json['result']['017A-B305A152']['6100_40465500']['1']['0']['val'])/1000;
		$wifi_signal = $json['result']['017A-B305A152']['6100_004AB600']['1']['0']['val'];

ce serait cool si tu pouvais prévoir les 2 cas de figure. ton code serait compatible avec les 2 type d’onduleur.

encore joli travail :slight_smile:

Salut !

C’est dingue ça, je ne pensais pas qu’il y ait différentes interfaces…
Moi j’ai aussi un SMA Triphasé, dans Sunny Portal il est noté Sunny Tripower 5.0
Bon, je vais essayer ton code demain et si ça fonctionne chez moi alors je mets à jour le plugin.
Sinon j’intègre ta solution comme un deuxième choix (reste à savoir pourquoi cette différence et comment l’appeler)

Sebastien

p-e lié a une version du firmware. le mien: 2.13.7.R

ton onduleur, il est rouge ou bleu?

je viens de voir qu’on a la valeur totale de l’onduleur, avec cela on peut faire ce que l’on veut, des valeurs par heure, jour, semaine … c’est parfait.

je vois bien un truc comme cela pour les panneaux :wink:

Salut,

Mon onduleur est bleu.

Super les panneaux!
Ce que tu appelles ‹ panneaux › ce sont des ‹ Vues › dans Jeedom?
Si oui, je sais en créer manuellement mais pas depuis le plugin … tu peux me donner un lien pour voir un exemple?

Si tu le souhaites, je te donne accès à mon GitHub comme ça tu peux y apporter les changements que tu souhaites. (et du coup moi j’apprendrai :slight_smile: )

Merci!

Sébastien

On a le même onduleur. C’est bizarre. Tu as quelle version du firmware dessus?

Oui, c’est une vue que j’ai fait a partir en ma consommation de gaz, le principe est exactement le même.

Ce que je fais, je crée un virtuel qui est mis a jour tous les 5 min avec la différence entre les 2 valeurs du compteur wh. Ce qui me permettra de faire des additions facilement.
Je sais a ce moment faire des graph de la production par heure, jour, mois en faisant la somme de toutes ces valeurs. Cette vue est indépendant d’un plugin

Si tu regardes le plugin officiel énergie, il intègre une partie vue. P-e une piste

Je suis pas programmeur. J’arrive a comprendre +/- le code mais je suis pas capable de développer un plugin ( et pas trop le temps)

OK,

Je vais déjà m’occuper d’identifier cet ID du node de départ … en fait il n’y a que ça qui change.
Le restant des identifiants pour récupérer le power, les volts, etc … c’est pareil.
Donc si je programme un truc dynamique qui permet de récupérer l’ID de départ on est bon.
Je me penche la dessus.

Merci pour tes tests, je reviens dans la journée.

Sébastien

Super, merci. Attention que l’URL change aussi

Salut!

J’ai mis la BETA à jour.
Essayes là et dis moi ce que ça donne chez toi.

Si ça fonctionne alors je rajouterai les autres données au Widget.

Sébastien

Ok, je regarde cela