Suivi solaire avec Node-RED, MQTT et Jeedom pour APSYSTEM

:wave: Salut à tous

Je débute dans Node-RED et je me suis lancé dans la récupération des infos de mon installation solaire.
J’ai trouvé un flow sur Internet, mais celui-ci ne communiquait qu’avec un seul micro-onduleur.

:point_right: Avec un peu de patience et de testes, j’ai réussi à récupérer toutes les infos via MQTT, puis à les importer dans Jeedom avec le plugin JMQTT.

:gear: Installation de Node-RED

Pour l’installation de Node-RED, il existe plein de tutos sur le net.
Moi, je suis sur une VM, mais ça fonctionne également avec le plugin Docker Node-RED sur Jeedom.

:package: Installation du noeud Modbus

Une fois Node-RED installé, il faut ajouter le nœud :
node-red-contrib-modbus

Pour l’installer :

  • Cliquez sur le menu hamburger (☰)
  • Puis sur Palette
  • Et enfin sur Installer

:repeat: Import du Flow

Une fois le nœud installé, vous pouvez injecter le flow.

Version monophase
:page_facing_up: Fichier: flows monophase.json.txt (26,7 Ko)

Version triphase réalise grace à l’aide de @rennais35000
:page_facing_up: Fichier : triphase.json.txt (41,5 Ko)

:arrow_right: Pensez à bien supprimer le .txt à la fin du nom du fichier pour que Node-RED le reconnaisse comme un fichier JSON de flow.

:sunny: Mon installation

  • 7 panneaux solaires
  • 4 micro-onduleurs
  • Interface ECU-C accessible via :
    http://votre_ip/index.php/management/modbus

:wrench: Configuration du Flow dans Node-RED

:one: Régler le nombre d’onduleurs

:camera_flash: image
:framed_picture: image

:white_check_mark: Saisissez le nombre d’onduleurs et sauvegardez.

:two: Configuration de l’ECU-C

:camera_flash: image
:camera_flash:image

:pen: Éditez les paramètres du nœud et remplacez l’adresse IP par celle de votre ECU-C.

:camera_flash:image

:white_check_mark: N’oubliez pas de sauvegarder !

:satellite: Configuration de MQTT

:camera_flash:image
:framed_picture: image

:pen: Éditez les paramètres du broker MQTT :

  • IP
  • Port
  • (et éventuellement les identifiants si nécessaire)

:camera_flash: image
:white_check_mark: Sauvegardez également ici.

:white_check_mark: Et voilà !

Votre installation est maintenant prête à être déployer:

:camera_flash:image

  • récupérer les infos solaires via Modbus
  • les envoyer en MQTT
  • les exploiter dans Jeedom via JMQTT

Si vous avez des questions ou des suggestions, n’hésitez pas à commenter. Bonne production ! :sunny::battery:

:satellite: Vérification avec MQTT Explorer

Si tout s’est bien passé, vous devriez voir les valeurs MQTT dans MQTT Explorer.

:test_tube: Exemple général :

:mag_right: Exemple pour mon premier onduleur :

:repeat: Le rafraîchissement des données se fait toutes les 5 secondes.Si tout c’est bien passe on aura dans Mqttexplorer

image

:house: Intégration dans Jeedom

Une fois les données MQTT disponibles, il ne reste plus qu’à les importer dans Jeedom via le plugin JMQTT.

:jigsaw: Template Jeedom à importer

Pour simplifier l’intégration dans Jeedom, j’ai créé un template prêt à l’emploi :

:package: Fichier à télécharger :
APSystem.json.txt (12,1 Ko)
:point_right: Pensez à bien supprimer .txt à la fin pour pouvoir l’importer correctement.

:warning: Important :

  • Modifiez les ID des onduleurs selon votre config (1, 2, 3, …, 8, 9, etc.).
  • Le template ne décode pas 100 % des valeurs, mais il contient déjà l’essentiel.

:page_facing_up: Documentation complémentaire

Pour aller plus loin, voici la documentation officielle SunSpec Modbus utilisée pour l’ECU-C :

:blue_book: Fichier PDF à télécharger :
SunSpec Modbus.pdf (1,4 Mo)

:zap: Limitation de la production via MQTT

Depuis peu, il est maintenant possible de définir une limite de production pour vos micro-onduleurs directement via MQTT :dart:.

:hammer_and_wrench: Comment faire ?

Il suffit d’envoyer la valeur souhaitée dans le topic MQTT suivant :

APSystem/param/limit

Par exemple, pour limiter la production à 250, publiez ce message via MQTT :

Topic : APSystem/param/limit
Payload : 250

Puis activer par on ou off la limitation dans le topic MQTT suivant:

APSystem/param/activation

Puis part exemple activer par on ou off pour désactiver la limitation dans le topic MQTT suivant::

Topic : APSystem/param/activation
Payload : on

:bulb: Ces commandes sont à envoyer via :

  • MQTT Explorer
  • Un scénario Jeedom avec JMQTT

:pushpin: Remarques :

  • La limite est appliquée au niveau de l’ECU-C, qui la transmet à tous les onduleurs compatibles en même temps. Impossible de le faire individuellement.
  • La valeur peut être changée dynamiquement (ex : selon la production solaire, l’heure, ou la consommation du foyer).

:sun_with_face:Production journalière automatique (Wh / kWh)

Les micro-onduleurs APSystem publient maintenant automatiquement la production journalière cumulée sur un topic global MQTT, avec une remise à zéro quotidienne.
Pratique pour faire du suivi sans devoir tout recalculer manuellement !

:white_check_mark: Informations disponibles :

  • Production journalière en Wh
  • Production journalière en kWh
  • La valeur est remise à 0 chaque jour, directement par l’ECU-C ou le M/O

:satellite: Topic MQTT utilisé :

APSystem/global/Total_Wh
APSystem/global/Total_kWh

:brain: Utilisation possible :

  • Affichage dans Jeedom, Grafana…
  • Enregistrement dans une base de données
  • Alertes ou automatisations (par ex : alerte si production < seuil)

:framed_picture: Exemple dans MQTT Explorer :

:camera_flash:!image

2 « J'aime »

Bonjour,
Merci, ça tombe bien, je suis actuellement en recherche sur cette solution de récupération ECU en mqtt.
Par contre je vais déjà avoir besoin d’aide pour installer Node-Red :smiley:
J’en entends beaucoup parler, mais je n’ai aucune idée ou notion.
Je n’ai pas de vm, que des machines physiques. Je suppose qu’il faut mieux mettre sur un PI dédié et pas sur la machine hébergeant Jeedom ?
Je parts à la recherche d’un tuto « Installation node-red pour les nuls » et je reviens quand j’aurais trop mal au crâne.
Bien cordialement

Edit : J’avais dernièrement trouvé ça que je pensais essayer.
https://github.com/fligneul/aps2mqtt

Bon.
J’ai installé un PI de test et node-red dessus. Pour l’instant ça va.
J’ai importé ton flux et là ça va plu :slightly_smiling_face:
Je vois bien Incrementation je clique dessus pour mettre le nombre de micro-onduleur 3 dans mon cas.
Mais je n’ai pas le reste
ECU-C y’a pas ?
A l’importation de ton flux, des erreurs donc je suppose que ça vient de là.

Et le débutant coince … mais il cherche …
Bon, il faut aussi installer la palette node-red-contrib-modbus et tu ne l’avais pas indiqué.

2 « J'aime »

Modification du premier sujet

Bonsoir,
J’ai 2 ECU, un ECU-C avec 4 MO et un ECU-R avec 2 MO.
J’ai donc fais 2 instances du flow.
Sur l’ECU-R j’ai réussi à mettre en marche, mais suite à un changement d’id modbus que j’ai fais sur l’ECU ça ne marche plus.
Sur l’ECU-C ça coince, pas encore réussi.
Je recommence les essais de zéro demain, mais c’est moi qui doit faire une erreur quelque-part.
Bonne soirée

Salut si tu fais deux instances il faut modifier le topic

Hello,
Ah ça doit être ça peut-être, aujourd’hui j’arrivais à avoir l’ecu-c mais plus le R.
Le topic dans le flux node-red je suppose. Je vais essayer de comprendre.
J’attends un peu pour être sur, mais j’ai l’impression d’un mélange de remontée des données.
J’ai entre 2 id modbus différent la même remontée au w prêt et ça m’étonne l’A est identique aussi :face_with_raised_eyebrow:
Bon là c’est la nuit donc ça ne produit plus.

Mais on voit que W c’est identique, Hz c’est identique AphA idem, Wh …

Oui tu as un probleme avec tes ID
DA qui est device adresse est toujours sur 0.
As tu bien mis dans ton ECU-C les adresses de 1 à 4 ?

Chez moi ca tourne depuis 12 jours maintenant. Je suis même passe par Jeedom et Docker ce week-end pour voir.

Bonjour,
Bizarre … DA est à zéro chez moi et pourtant les valeurs remontent et bougent


C’est bien un ECU-C ?
As-tu bien mis dans la config de ton ECU-C les ID de 1 à X ?
Quel version de firmware as ton ECU-C ? le mien est en C1.2.17.

C’est quoi la date de valeur ? Si c’est toi qui la rajouté l’as tu bien integré?

Oui idem C1.2.17


La date de valeur je l’ai rajouté dans jmqtt, je n’ai pas touché au flow.

C’est extraordinaire ça. Je l’ai fait chez mon frère aujourd’hui avec 3 micro-onduleurs. Jai toutes les valeurs qui remontent correctement

:slightly_smiling_face:
Moi DA=0 sur les 5 micro-onduleur idem pour Id pour L et pour VAR, le reste bouge ce qui ne veut pas dire que ce soit cohérent.
Peut-être ce qui peux faire la différence par rapport à toi, c’est que j’ai 3 YC1000 qui sont des triphasé et qui s’équilibrent seuls et 3 DS3L en mono sur une seule phase en boost.

Tu posais la question pour date de valeur.
Voici ce que j’ai fais dans jmqtt.

Ok je comprends mieux. Moi j’ai des dsl3 et mon installation est en mono. Idem chez mon frère.
Maintenant la question que je me pose, est ce que j’interroge l ecu-c ou les dsl. La table a l’air d’être différentes.

C’est toi qui a mis les id comme ca ? 1 3 5 2 4 ?
As tu la possibilité de les mettre 1 2 3 4 5 ?

Ca m’intéresse d’essayer de trouver une solution

Grosse mise à jour fonctionnel à venir pour les versions mono et tri grâce à l’aide @rennais35000 que je remercie vivement pour sa patience et sa découverte de node-red.
Il a même fait un widget sympa.

Hello,
je crois que le flow du monophasé est cassé après import (et dans le json j’ai vérifié) il n’y a que le noeud Décodage MQTT, j’ai raté un truc ou bien ?

Salut ,

Bien vu le lien était HS, je l’ai remis