Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Solaredge mit Zigbee einbinden?

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    UNSOLVED Solaredge mit Zigbee einbinden?

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Master77 @cburghardt last edited by

      @cburghardt sagte in Solaredge mit Zigbee einbinden?:

      @Master77 ich kann heute Abend mal das Javascript dazu posten, ist sehr einfach.
      Welche Adressen nimmt modbus denn nicht? Ich verwende eigentlich nur die holding register 83, 84 (entspricht 40083, 40084) und die Daten vom Stromzähler (206, 210). Dann kommen bei mir noch die Batteriedaten dazu und die Daten meines zweiten Wechselrichters (Client ID 2).

      Das wäre super wenn du das Javascript hier posten könntest. Vielleicht bekomme ich damit mehr Daten.
      Die 40083 und 84 kann ich auslesen. Das ist ja die derzeitige PV Produktion. Alles andere bekomme ich mit dem Modbus nicht ausgelesen. Die App zeigt aber alles andere an.

      Gruß Markus

      1 Reply Last reply Reply Quote 0
      • C
        cburghardt last edited by

        @Master77 Welche anderen Daten versuchst du denn auszulesen, also welche Register, so als Beispiel?

        Das folgende Script ruft um 1 Uhr morgens die Daten des vorherigen Tages ab und schreibt sie in states:

        • Consumption
        • FeedIn
        • Production
        • Purchased
        • SelfConsumption

        Es benötigt noch die site ID, die sieht man im Monitoring Portal und einen API Key, den kriegt man vom Solaredge Support.

        var request = require('request');
        
        const site = "";
        const api_key = "";
        
        function totalDay() {    
            var date = new Date();
            date.setDate(date.getDate()-1);
            var dateStr = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate();
            var endTime = dateStr + "%2023:59:59";
            var startTime = dateStr + "%2000:00:00";
            var link = "https://monitoringapi.solaredge.com/site/" + site + "/energyDetails?endTime=" + endTime + "&startTime=" + startTime + "&timeUnit=DAY&api_key=" + api_key;
            request(link, function(error, response, body) {
                if (error) log('Error from Solaredge API:' + error, 'error');        
                else {            
                    var result = JSON.parse(body);
                    for (var i = 0; i < result.energyDetails.meters.length; ++i) {
                        var t = result.energyDetails.meters[i].type;
                        var value = Number(result.energyDetails.meters[i].values[0].value) / 1000;
                        createState("stats." + t, value);
                    }
                }    
            });
        }
        
        schedule("0 1 * * *", totalDay);
        
        M P 2 Replies Last reply Reply Quote 0
        • M
          Master77 @cburghardt last edited by

          @cburghardt sagte in Solaredge mit Zigbee einbinden?:

          @Master77 Welche anderen Daten versuchst du denn auszulesen, also welche Register, so als Beispiel?

          Das folgende Script ruft um 1 Uhr morgens die Daten des vorherigen Tages ab und schreibt sie in states:

          • Consumption
          • FeedIn
          • Production
          • Purchased
          • SelfConsumption

          Es benötigt noch die site ID, die sieht man im Monitoring Portal und einen API Key, den kriegt man vom Solaredge Support.

          var request = require('request');
          
          const site = "";
          const api_key = "";
          
          function totalDay() {    
              var date = new Date();
              date.setDate(date.getDate()-1);
              var dateStr = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate();
              var endTime = dateStr + "%2023:59:59";
              var startTime = dateStr + "%2000:00:00";
              var link = "https://monitoringapi.solaredge.com/site/" + site + "/energyDetails?endTime=" + endTime + "&startTime=" + startTime + "&timeUnit=DAY&api_key=" + api_key;
              request(link, function(error, response, body) {
                  if (error) log('Error from Solaredge API:' + error, 'error');        
                  else {            
                      var result = JSON.parse(body);
                      for (var i = 0; i < result.energyDetails.meters.length; ++i) {
                          var t = result.energyDetails.meters[i].type;
                          var value = Number(result.energyDetails.meters[i].values[0].value) / 1000;
                          createState("stats." + t, value);
                      }
                  }    
              });
          }
          
          schedule("0 1 * * *", totalDay);
          

          Super, vielen Dank.

          Gruß Markus

          1 Reply Last reply Reply Quote 0
          • P
            Paan83 @cburghardt last edited by

            @cburghardt
            Hallo,
            das ist wirklich sehr interressant. ich möchte mir nämlich die KWh/Tag in meiner Vis anzeigen lassen. Rückt Solaredge den API Key einfach so raus? Kann man den nirgends auslesen?
            Ich verstehe bei dem Skript leider nur Bahnhof, da ich im Programmieren absoluter Laie bin. Einfache Blocklys bekomme ich hin aber mehr leider nicht. Wäre es möglich das Skript so umzuändern, dass er zB alle 15Minuten die produzierten KW/h pro Tag ausliest, und diese dann in einen Datenpunkt schreibt?

            Danke im voraus

            Christophe

            1 Reply Last reply Reply Quote 0
            • C
              cburghardt last edited by

              Den API Key kriegst du ohne Probleme vom Support oder von deinem Solarmonteur.
              Spontan würde ich sowas versuchen, habs aber nicht getestet:

              var request = require('request');
               
              const site = "";
              const api_key = "";
               
              function energyDetails() {    
                  var now = new Date();
                  var dateStr = now.getFullYear() + "-" + (now.getMonth()+1) + "-" + now.getDate() + "%20";
                  var endTime = dateStr + now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds();
                  var start = new Date(now.getTime() - 15 * 60000);
                  var startTime = dateStr + start.getHours() + ":" + start.getMinutes() + ":" + start.getSeconds();
                  var link = "https://monitoringapi.solaredge.com/site/" + site + "/energyDetails?endTime=" + endTime + "&startTime=" + startTime + "&timeUnit=QUARTER_OF_AN_HOUR&api_key=" + api_key;
                  request(link, function(error, response, body) {
                      if (error) log('Error from Solaredge API:' + error, 'error');        
                      else {            
                          var result = JSON.parse(body);
                          for (var i = 0; i < result.energyDetails.meters.length; ++i) {
                              var t = result.energyDetails.meters[i].type;
                              var value = Number(result.energyDetails.meters[i].values[0].value) / 1000;
                              createState("stats." + t, value);
                          }
                      }    
                  });
              }
               
              schedule("*/15 * * * *", energyDetails);
              
              P 1 Reply Last reply Reply Quote 0
              • P
                Paan83 @cburghardt last edited by

                @cburghardt
                Danke für das Skript, aber ich weiss nur nicht was ich wo eintragen muss damit es funktioniert. Erzeugt das Skript auch einen Datenpunkt?
                Sorry für meine Unwissenheit

                1 Reply Last reply Reply Quote 0
                • C
                  cburghardt last edited by

                  Site und api_key eintragen:

                  const site = "XXX";
                  const api_key = "YYY";
                  

                  Dann das ganze Script als neues Javascript hinzufügen.
                  Und ja, es erzeugt neue States unter javascript.0.stats

                  1 Reply Last reply Reply Quote 0
                  • P
                    Paan83 last edited by Paan83

                    Bedeutet Site die IP Addresse des WR?

                    1 Reply Last reply Reply Quote 0
                    • P
                      Paan83 last edited by

                      Ich habe mal versucht bei "Site" die IP Addresse des WR einzugeben, aber ich bekomme nur Fehlermeldungen im LOG.
                      Außerdem habe ich mal im Menü vom WR geschaut ob ich API aktivieren muss, hab aber nichts gefunden. TCP musste ich aktivieren damit ich es benutzen konnte.

                      C 1 Reply Last reply Reply Quote 0
                      • H
                        Habedere last edited by Habedere

                        Servus,
                        habe mit dem M-Bus Adapter noch so meine Probleme den WR aus zu lesen...
                        Nachfolgende Fehlermeldung erhalte ich im Log

                        mbus.2	2019-10-22 19:18:05.787	error	M-Bus Connection failed. Please check configuration.
                        mbus.2	2019-10-22 19:18:05.786	error	Error: No connection possible to MBus Host 192.168.178.7:1502
                        mbus.2	2019-10-22 19:18:05.784	info	Initialize M-Bus TCP to 192.168.178.7:1502 with timeout 5
                        mbus.2	2019-10-22 19:18:05.783	info	Default Update Interval: 3600
                        mbus.2	2019-10-22 19:18:05.779	error	All M-Bus devices could not be read, reinitialize and start over
                        mbus.2	2019-10-22 19:18:05.778	warn	M-Bus Devices with errors: 1 from 1
                        mbus.2	2019-10-22 19:18:05.774	warn	M-Bus ID 1 err: Error: Error: Failed to send/receive M-Bus request frame[1].
                        

                        M-Bus selbst ist am WR eingeschaltet.
                        Kann mir jemand sagen wir ich die direkte Verbindung zwischen ioBroker und der IP inkl. Port testen kann?

                        Ach ja - mit dem Modbus Adapter ähnliches Problem. Erst connected, dann disconnected...

                        C 1 Reply Last reply Reply Quote 0
                        • C
                          cburghardt @Paan83 last edited by

                          @Paan83 siehe oben: "Es benötigt noch die site ID, die sieht man im Monitoring Portal und einen API Key, den kriegt man vom Solaredge Support."

                          Damit rufst du aber nicht die Daten direkt vom WR ab, sondern vom Solaredge Portal.

                          P 1 Reply Last reply Reply Quote 0
                          • C
                            cburghardt @Habedere last edited by

                            @Habedere bist du sicher dass der Port passt? Typischerweise verwendet Modus den Port 502, nicht 1502.

                            1 Reply Last reply Reply Quote 0
                            • H
                              Habedere last edited by

                              Definitiv 1502 - habe mir extra einen Screenshot von den Einstellungen gemacht.

                              1 Reply Last reply Reply Quote 0
                              • P
                                Paan83 @cburghardt last edited by Paan83

                                @cburghardt Danke für den Hinweis, ich stand wohl etwas auf dem Schlauch. Ich habe beide Sachen jetzt eingetragen, und das Skript gestartet. Es scheint zu laufen, habe mal keine Fehlermeldung bekommen, jedoch erzeugt es keine Datenpunkte. Hast du das Skript am laufen?

                                Zum Modbus, bei mir ist es der Port 502. Hast du das mit dem Modbus hinbekommen?

                                --EDIT--
                                Ich hhab jetzt doch noch eine Fehlermeldung vom Skript bekommen. Leider verstehe ich es nicht. Könnte mir jemand helfen?
                                Unbenannt.JPG

                                C 1 Reply Last reply Reply Quote 0
                                • C
                                  cburghardt @Paan83 last edited by

                                  @Paan83 das Script bekommt keine korrekte Antwort von SolarEdge. Hast du den richtigen API key eingetragen?

                                  P 1 Reply Last reply Reply Quote 0
                                  • P
                                    Paan83 @cburghardt last edited by

                                    @cburghardt Hey, natürlich, ich hatte einen Zahlendreher drinnen...🙄
                                    Das Skript läuft jetzt seid gestern Abend. Ein Datenpunkt wurde erzeugt und der Wert vom DP steht auf 0. Der Zeitstempel der letzten Aktualisierung steht auf gestern Abend, das heißt es findet keine Aktualisierung statt. Woran könnte das liegen?

                                    C 1 Reply Last reply Reply Quote 0
                                    • C
                                      cburghardt @Paan83 last edited by

                                      @Paan83 das Script läuft alle 15 Minuten.

                                      Versuche doch mal diesen Link im Browser, muss noch die site ID und api key eintragen, ohne die <>:

                                      https://monitoringapi.solaredge.com/site/<site ID>/energyDetails?endTime=2019-10-29%2012:00:00&startTime=2019-10-29%2011:45:00&timeUnit=QUARTER_OF_AN_HOUR&api_key=<api key>

                                      Das sollte die Daten vom 29.10 um 12 Uhr liefern.

                                      1 Reply Last reply Reply Quote 0
                                      • P
                                        Paan83 last edited by

                                        Folgendes wird mir angezeigt:
                                        Unbenannt.JPG

                                        1 Reply Last reply Reply Quote 0
                                        • P
                                          Paan83 last edited by

                                          @cburghardt kann es sein dass bei mir die Werte fehlen?

                                          C 1 Reply Last reply Reply Quote 0
                                          • C
                                            cburghardt @Paan83 last edited by

                                            @Paan83 dann sollte aber im Datenpunkt "Production" schon etwas anderes als 0 stehen, zumindest wenn in den letzten 15 Minuten etwas produziert wurde. Der Wert ist in kWh. Wenn du wH haben möchtest, entfernst du einfach das " / 1000", also:

                                            var value = Number(result.energyDetails.meters[i].values[0].value);
                                            

                                            Habs gerade getestet, die Werte werden erstellt.
                                            Nachdem nur Produktion geliefert wird und kein Verbrauch o.ä. hast du wohl keinen Modbus Zähler installiert.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            800
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            solaredge
                                            9
                                            66
                                            7378
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo