[TUTORIAL] Solaredge-Integration | Solarmodule

Hallo zusammen :slight_smile:

Dies ist mein erstes Tutorial, ich hoffe, ich mache alles richtig, zögert nicht, mir Bescheid zu sagen, falls nicht.

Für Besitzer einer Solaredge-Photovoltaikanlage hier eine Anleitung, wie man grundlegende Informationen von den Servern des Herstellers abrufen kann. Dies ermöglicht Ihnen, ein solches Ergebnis zu erhalten, das mir als Beispiel für dieses Tutorial dient:


VORAUSSETZUNGEN

Diese Schritte werden im Tutorial detailliert beschrieben

  • Solaredge-Material besitzen und einen API-Schlüssel erstellt haben
  • Gladys installiert haben (Captain Obvious am Steuer!)
  • MQTT-Integration installiert haben
  • Node-red installiert haben

ERSTELLUNG EINES SOLAREDGE-API-SCHLÜSSELS

Um diesen Schlüssel zu erstellen, müssen Sie sich auf der Solaredge-Webmonitoring-Seite unter folgender Adresse anmelden: https://monitoring.solaredge.com/
Nach der Eingabe Ihrer Anmeldedaten erhalten Sie dieses Menü:

Sie müssen zum Menü ADMIN und dann zu Site Access Policy gehen:
image

Anschließend sehen Sie diesen Tab, in dem Sie einen API-Schlüssel generieren und speichern können:

Kopieren Sie diesen API-Schlüssel sowie Ihre Site-ID, wir werden sie später benötigen.


INSTALLATION VON GLADYS


INSTALLATION VON MQTT

Dies geschieht in Gladys, im Reiter Integration, mit einem einzigen Klick.
Dieser Schritt wird im Video zur Installation von Node-red beschrieben

INSTALLATION UND NUTZUNG VON NODE-RED

Ich möchte klarstellen, dass ich das Tool vor dem Start überhaupt nicht kannte… und es ist eher einfach für die Funktionen, die wir verwenden werden. Wenn Sie Gladys / einen Docker-Container installieren konnten, werden Sie auch mit Node-red zurechtkommen!

Sobald Sie dieses Video gesehen haben, verstehen Sie, wie man Informationen in Node-red abrufen und über einen MQTT-Broker an Gladys senden kann.

Es bleibt also nur noch:

  1. In Node-red einen Node hinzufügen, der die Solaredge-Daten abruft.
  2. MQTT-Geräte in Gladys erstellen, die diese Informationen empfangen

EINEN SOLAREDGE-NODE IN NODE-RED HINZUFÜGEN

Wie im Node-red-Videotutorial gesehen, müssen Sie zum Benutzermenü gehen, dann zu Manage palette und dann zu Install.
Geben Sie im Suchfeld solaredge-power ein und Sie sehen den Node wie hier erscheinen:


Installieren Sie ihn, indem Sie auf die Schaltfläche Install klicken.

Weitere Informationen zu diesem Node und seinen Möglichkeiten finden Sie hier: node-red-contrib-solaredge-power (node) - Node-RED

Um das von mir gezeigte Ergebnis (das nur eines von vielen Beispielen ist) zu erhalten, können Sie diesen Flow direkt in Node-red importieren, indem Sie Ctrl + i drücken und den folgenden Text einfügen:

[{"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":""}]

Sie sollten dies erhalten:

Anschließend müssen Sie den Solaredge Power-Node (gelb) mit den Werten Ihres API-Schlüssels / Ihrer Solaredge-Site-ID ändern:

MQTT-GERÄTE IN GLADYS ERSTELLEN

Wie Sie im Videotutorial von @pierre-gilles gesehen haben, können Sie MQTT-Geräte erstellen, die mit Node-red kommunizieren.
Hier ein Beispiel für ein Gerät zum Abrufen der Daten zum Gesamtstromverbrauch des Hauses:


Dieses Gerät wird mit diesem Node verbunden:
image

Um sie richtig zu verbinden, müssen Sie in Gladys den Wert von MQTT-Topic kopieren und dann in die Eigenschaften des Nodes in Node-red einfügen, hier:

Sie können dann dasselbe mit zwei weiteren MQTT-Geräten tun, die mit den beiden anderen Nodes verbunden sind.

Sie haben es geschafft! Zumindest hoffentlich… :slight_smile:


Hier endet also dieses Tutorial, ich weiß nicht, ob alles klar war, falls Sie Probleme haben, kann ich versuchen, Ihnen in dem - eher begrenzten - Rahmen meiner Fähigkeiten zu helfen.

Viel Erfolg bei der Installation!

Genial @guim31, sehr schönes Tutorial, und sehr vollständig! :clap:

Ich werde es der Community weitergeben

Bravo, das ist super vollständig, das macht fast Lust auf Solarpaneele :grinning_face_with_smiling_eyes:

Cool, ich werde mal sehen, ob ich das Gleiche mit meinem USV machen kann !!!

Ansonsten kannst du den Flow wie folgt vereinfachen

[
    {
        "id": "8b907e98a30cda10",
        "type": "tab",
        "label": "Solaredge -- Gladys",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "b8500338f743f0e1",
        "type": "function",
        "z": "8b907e98a30cda10",
        "name": "Produktionsleistung",
        "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": "NETZ-Leistung",
        "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": "LAST-Leistung",
        "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": ""
    }
]

Super Tuto.
Ich habe mir gerade Solarmodule dieser Marke installieren lassen, dem Tuto bis ins Detail gefolgt und alles funktioniert perfekt. Danke @guim31
Kleine Präzisierung für Neulinge wie mich: GRID entspricht dem Unterschied zwischen Haushaltsverbrauch und PV-Erzeugung (Lieferant Strom oder Überschuss), LOAD dem Verbrauch des Haushalts und der Erzeugung .. und nun, der Erzeugung der Module.
Bald versuche ich ein MQTT-verbundenes Modul, um mit roten/grünen LEDs die Verbrauchsstufen anzuzeigen und zu wissen, wann ich einen zusätzlichen Verbrauch starten kann.

Cool !! :grin:
Ich freue mich sehr, dass mein Tutorial jemandem geholfen hat!

Hallo @guim31, bist du auf eine Anfragebegrenzung gestoßen?
Alles lief bisher gut und seit gestern Mittag ist die Anwendung beim Abrufen von Informationen (alle festen Werte) blockiert und die Rückmeldung von Node-RED zeigt folgenden Fehler an:
HTTP-Status 429 – Zu viele Anfragen
Tägliches Kontingent überschritten / Der Benutzer hat in einem bestimmten Zeitraum zu viele Anfragen gesendet
Haben sie die Anzahl der Anfragen pro Tag reduziert?

Hallo!

Ich gebe zu, dass ich nicht regelmäßig auf Gladys schaue, aber da du es erwähnt hast, bin ich in NodeRed gegangen, wo ich viele Fehlermeldungen sehe.

Insbesondere mein anfänglicher Knoten des Solaredge-Tools gibt mir: « Ungültiges JSON zurückgegeben » … aber nicht immer ^^

Das lässt vermuten, dass der API-Aufruf manchmal blockiert wird, wenn er zu häufig erfolgt. Ich bin mir nicht sicher, ob es eine tägliche Begrenzung gibt, sonst wäre ich wahrscheinlich auch blockiert, ich bin auf 30-Sekunden-Intervall. Und du?