[TUTORIEL] Intégration Solaredge | Panneaux solaires

Bonjour à tout le monde :slight_smile:

Ceci est mon premier tutoriel, j’espère que je vais m’y prendre correctement, n’hésitez pas à me le dire le cas contraire.

Pour les possesseurs d’une installation photovoltïque de la marque Solarredge, voici comment faire un relevé basique des informations récupérées à partir des serveurs de la marque. Ceci vous permettra d’obtenir ce genre de rendu, qui me servira d’exemple dans ce tuto :


PREREQUIS

Ces étapes sont détaillées dans le tutoriel

  • Posséder du matériel Solaredge et avoir crée une clé API
  • Avoir installé Gladys (captain obvious aux commandes !)
  • Avoir installé l’intégration MQTT
  • Avoir installé Node-red

CREATION CLE API SOLAREDGE

Pour créer cette clé il faut vous rendre sur le monitoring web de Solaredge à cette adresse : https://monitoring.solaredge.com/
Une fois vos identifiants rentrés, vous obtiendrez ce menu :
image

Il faudra aller dans le menu ADMIN puis dans Politique d’accès de site :
image

Vous verrez ensuite cet onglet dans lequel vous allez pouvoir générer une clé API, puis sauvegarder.

Copiez cette clé API ainsi que votre id de site, nous en aurons besoin plus tard.


INSTALLATION DE GLADYS


INSTALLATION MQTT

Cela se fait dans Gladys, dans l’onglet Intégration, en un seul clic.
Cette étape est décrite dans la vidéo sur l’installation de Node-red

INSTALLATION ET UTILISATION DE NODE-RED

Je précise que je ne connaissais absolument pas l’outil avant de m’y lancer… et c’est plutôt simple pour les fonctions que nous allons utiliser. Si vous avez su installer Gladys / un container Docker, vous saurez vous débrouiller avec Node-red !!

Une fois que vous avez regardé cette vidéo vous avez compris comment on peut récupérer des informations dans Node-red et les envoyer vers Gladys via un broker MQTT.

Il ne reste donc plus qu’à :

  1. Ajouter dans Node-red un node qui va s’occuper de récupérer les données de Solaredge.
  2. Créer des appareils MQTT dans Gladys qui vont réceptionner ces informations

AJOUTER UN NODE SOLAREDGE DANS NODE-RED

Comme vu dans le tutoriel vidéo de Node-red, il vous faudra aller dans le menu utilisateur puis Manage palette puis Install.
Dans le champ de recherche tapez solaredge-power et vous verrez le node apparaitre comme ici :


Installez-le en cliquant sur le bouton Install.

Vous trouverez plus d’informations sur ce node et ses possibilités ici : node-red-contrib-solaredge-power (node) - Node-RED

Afin d’obtenir le rendu qui est le mien (qui n’est qu’un exemple parmi tant d’autres) vous pouvez importer directement ce Flow dans dans Node-red en faisant Ctrl + i puis en collant le texte suivant :

[{"id":"8b907e98a30cda10","type":"tab","label":"Solaredge -- Gladys","disabled":false,"info":"","env":[]},{"id":"fa05dcc6c3f56552","type":"solaredge-power","z":"8b907e98a30cda10","site":"2fabbdc11f7b34e7","interval":"60","command":"currentPowerFlow","x":240,"y":240,"wires":[["b8500338f743f0e1","d0db7133d9d66d12","a88f3e6358c15a97","c3c4dc589062d8b9"]]},{"id":"942e56ee501b6810","type":"mqtt out","z":"8b907e98a30cda10","name":"","topic":"gladys/master/device/mqtt:prodpv/feature/mqtt:prodpvwh/state","qos":"2","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"493ea564b5a53f2c","x":930,"y":60,"wires":[]},{"id":"b8500338f743f0e1","type":"function","z":"8b907e98a30cda10","name":"production power","func":"const input = msg.payload;\n\nmsg.payload = input.siteCurrentPowerFlow.PV.currentPower;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":470,"y":180,"wires":[["942e56ee501b6810","56c91d64cc144d13"]]},{"id":"d0db7133d9d66d12","type":"function","z":"8b907e98a30cda10","name":"GRID power","func":"const input = msg.payload;\n\nmsg.payload = input.siteCurrentPowerFlow.GRID.currentPower;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":450,"y":240,"wires":[["994e508550b78db1","c1e862f32f20a5c6"]]},{"id":"994e508550b78db1","type":"mqtt out","z":"8b907e98a30cda10","name":"","topic":"gladys/master/device/mqtt:grid/feature/mqtt:grid/state","qos":"2","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"493ea564b5a53f2c","x":900,"y":240,"wires":[]},{"id":"c820a2f46af7893c","type":"mqtt out","z":"8b907e98a30cda10","name":"","topic":"gladys/master/device/mqtt:load/feature/mqtt:load/state","qos":"2","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"493ea564b5a53f2c","x":900,"y":400,"wires":[]},{"id":"a88f3e6358c15a97","type":"function","z":"8b907e98a30cda10","name":"LOAD power","func":"const input = msg.payload;\n\nmsg.payload = input.siteCurrentPowerFlow.LOAD.currentPower;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":450,"y":300,"wires":[["c820a2f46af7893c","04af47c06005340b"]]},{"id":"04af47c06005340b","type":"debug","z":"8b907e98a30cda10","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":770,"y":460,"wires":[]},{"id":"56c91d64cc144d13","type":"debug","z":"8b907e98a30cda10","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":770,"y":120,"wires":[]},{"id":"c1e862f32f20a5c6","type":"debug","z":"8b907e98a30cda10","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":770,"y":300,"wires":[]},{"id":"c3c4dc589062d8b9","type":"debug","z":"8b907e98a30cda10","name":"String complet","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":240,"y":200,"wires":[]},{"id":"2fabbdc11f7b34e7","type":"solaredge-power-site","siteid":"","apikey":""},{"id":"493ea564b5a53f2c","type":"mqtt-broker","name":"","broker":"mqtt://localhost","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"sessionExpiry":""}]

Vous devriez vous retrouver avec ceci :

Il vous faudra ensuite modifier le node SolarEdge Power (en jaune) avec les valeurs de votre API / id de site Solaredge :

CREER DES APPAREILS MQTT DANS GLADYS

Comme vous l’avez vu dans le tutoriel vidéo de @pierre-gilles vous pouvez créer des appareils MQTT qui vont dialoguer avec Node-red.
Voici un exemple d’appareil pour récupérer les données sur la consommation electrique totale de la maison :


Cet appareil sera lié à ce node-ci :
image

Afin de bienles lier, il vous faut copier dans Gladys la valeur de Topic MQTT et la coller ensuite dans les propriétés du node dans Node-red, ici :
image

Vous pourrez ensuite faire de même avec 2 autres appareils MQTT liés aux deux autres nodes.

Vous y êtes arrivés ! Enfin normalement… :slight_smile:


Voilà donc la fin de ce tuto, je ne sais pas si tout cela aura été clair, si jamais vous rencontrez un souci je peux essayer de vous aider dans la mesure -plutôt courte- de mes compétences !

Bonne installation !

7 « J'aime »

Génial @guim31, très beau tutoriel, et très complet ! :clap:

Je vais le partager à la communauté

1 « J'aime »

Bravo, c’est super complet, ça donne presque envie d’avoir des panneaux solaires :grinning_face_with_smiling_eyes:

2 « J'aime »

Cool, je vais voir si je peux faire la même chose avec mon onduleur !!!

Sinon tu peux simplifier le flow ainsi

[
    {
        "id": "8b907e98a30cda10",
        "type": "tab",
        "label": "Solaredge -- Gladys",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "b8500338f743f0e1",
        "type": "function",
        "z": "8b907e98a30cda10",
        "name": "Production power",
        "func": "const input = msg.payload;\n\nmsg.payload = input.siteCurrentPowerFlow.PV.currentPower;\nmsg.topic = \"gladys/master/device/mqtt:prodpv/feature/mqtt:prodpvwh/state\"\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 490,
        "y": 100,
        "wires": [
            [
                "56c91d64cc144d13",
                "c820a2f46af7893c",
                "c1e862f32f20a5c6"
            ]
        ]
    },
    {
        "id": "d0db7133d9d66d12",
        "type": "function",
        "z": "8b907e98a30cda10",
        "name": "GRID power",
        "func": "const input = msg.payload;\n\nmsg.payload = input.siteCurrentPowerFlow.GRID.currentPower;\nmsg.topic = \"gladys/master/device/mqtt:grid/feature/mqtt:grid/state\"\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 470,
        "y": 340,
        "wires": [
            [
                "c820a2f46af7893c",
                "6bdda102eda08a76",
                "da1791446c730e7b"
            ]
        ]
    },
    {
        "id": "c820a2f46af7893c",
        "type": "mqtt out",
        "z": "8b907e98a30cda10",
        "name": "Gladys",
        "topic": "",
        "qos": "2",
        "retain": "",
        "respTopic": "",
        "contentType": "",
        "userProps": "",
        "correl": "",
        "expiry": "",
        "broker": "493ea564b5a53f2c",
        "x": 1030,
        "y": 340,
        "wires": []
    },
    {
        "id": "a88f3e6358c15a97",
        "type": "function",
        "z": "8b907e98a30cda10",
        "name": "LOAD power",
        "func": "const input = msg.payload;\n\nmsg.payload = input.siteCurrentPowerFlow.LOAD.currentPower;\nmsg.topic = \"gladys/master/device/mqtt:load/feature/mqtt:load/state\"\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 470,
        "y": 480,
        "wires": [
            [
                "c820a2f46af7893c",
                "44d3b110693a417a",
                "c1809061ef479d05"
            ]
        ]
    },
    {
        "id": "56c91d64cc144d13",
        "type": "debug",
        "z": "8b907e98a30cda10",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "topic",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 960,
        "y": 120,
        "wires": []
    },
    {
        "id": "c1e862f32f20a5c6",
        "type": "debug",
        "z": "8b907e98a30cda10",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 970,
        "y": 180,
        "wires": []
    },
    {
        "id": "fa05dcc6c3f56552",
        "type": "solaredge-power",
        "z": "8b907e98a30cda10",
        "site": "2fabbdc11f7b34e7",
        "interval": "60",
        "command": "currentPowerFlow",
        "x": 160,
        "y": 340,
        "wires": [
            [
                "b8500338f743f0e1",
                "d0db7133d9d66d12",
                "a88f3e6358c15a97",
                "6939ab79a4d2044f",
                "4d18e79756d987a6"
            ]
        ]
    },
    {
        "id": "44d3b110693a417a",
        "type": "debug",
        "z": "8b907e98a30cda10",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "topic",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 660,
        "y": 540,
        "wires": []
    },
    {
        "id": "c1809061ef479d05",
        "type": "debug",
        "z": "8b907e98a30cda10",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 670,
        "y": 600,
        "wires": []
    },
    {
        "id": "da1791446c730e7b",
        "type": "debug",
        "z": "8b907e98a30cda10",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "topic",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 660,
        "y": 220,
        "wires": []
    },
    {
        "id": "6bdda102eda08a76",
        "type": "debug",
        "z": "8b907e98a30cda10",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 670,
        "y": 280,
        "wires": []
    },
    {
        "id": "6939ab79a4d2044f",
        "type": "debug",
        "z": "8b907e98a30cda10",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "topic",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 360,
        "y": 600,
        "wires": []
    },
    {
        "id": "4d18e79756d987a6",
        "type": "debug",
        "z": "8b907e98a30cda10",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 370,
        "y": 660,
        "wires": []
    },
    {
        "id": "493ea564b5a53f2c",
        "type": "mqtt-broker",
        "name": "",
        "broker": "mqtt://localhost",
        "port": "1883",
        "clientid": "",
        "autoConnect": true,
        "usetls": false,
        "protocolVersion": "4",
        "keepalive": "60",
        "cleansession": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closeQos": "0",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "0",
        "willPayload": "",
        "willMsg": {},
        "sessionExpiry": ""
    },
    {
        "id": "2fabbdc11f7b34e7",
        "type": "solaredge-power-site",
        "siteid": "",
        "apikey": ""
    }
]
1 « J'aime »

Super tuto.
Je viens de me faire installer des panneaux de cette marque, suivi le tuto à la lettre et tout fonctionne nickel. Merci @guim31
Petite précision pour les néophytes comme moi, GRID correspond à la différence entre consommation habitation et production PV (fournisseur Elec ou surplus), LOAD à la consommation de l’habitation et production … et bien production des panneaux.
D’ici peu je tente un module connecté MQTT pour afficher par LED rouges/vertes les niveaux de conso et pour savoir quand je peux lancer une conso en +

3 « J'aime »

Cool !! :grin:
He suis bien content de lire que mon tuto ait servi à quelqu’un !