Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Deye Solar Sun600 Auslese-JavaScript

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Deye Solar Sun600 Auslese-JavaScript

Scheduled Pinned Locked Moved JavaScript
24 Posts 14 Posters 12.9k Views 15 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • ACHIM BAECKERA ACHIM BAECKER

    Hier mein Script zum Auslesen eines Balkonkraftwerk mit einem Inverter Deye Solar Sun600 über den Inverter-Webserver.
    (ohne Cloud und Solarman Account)

    Unter "http://IP-INVERTER/status.html" können die Aktualdaten ausgelesen werden.
    Das Script liest alle 5min diese Webseite aus und trägt die Werte in die entsprechenden Datenpunkte.

    Achim

    // Auslesen der Datenpunkte eines Solarinverters Deye Solar SUN600 und baugleiche
    // (Bosswerk MI600, ..)? 
    // --------------------------------------------------------------------------------
    // Erstellt: 01.2023 Achim Bäcker
    // ================================================================================
    
    // Die Daten werden ohne externe App + Verbindung (bsp: Solarman) über den
    // Webserver im Inverter abgerufen. 
    // 
    // Hierzu im Inverter das WLan einstellen und eine IP vergeben bzw. DHCP aktivieren. 
    // 
    // ================================================================================
    // Einrichten:
    // 1. Variable SolarFolder anpassen... hier werden die Datenpunkte erstellt
    //    Funktion CreateDatapoints einmalig aufrufen
    // 2. Über den Radar2-Adapter schaue ich das der Inverter online ist (er schaltet
    //    sich bei zu wenig Sonne aus) Online-ID in SolarOnlineVar eintragen
    // 3. Url des Inverters anpassen (SolarUrl) , Username und Passwort müssen mit übergeben
    //     werden, am besten erst einmal die Url im Browser testen. Wenn die Url passt, öffnet 
    //    sich eine Webseite wo man nur Striche sieht. Hier im Browser Quelltext 
    //    anzeigen wählen... noch vor dem Body ist eine Liste mit den Aktualwerten
    // 
    // Hier auf eigene Anlage anpassen
    var SolarFolder     = "0_userdata.0.Solar";
    var SolarOnlineVar  = "radar2.0.Solar._here";    
    var SolarUrl        ="http://admin:admin@192.168.2.160/status.html";
    
    // Datenpunkte erstellen, kann nach einmaligem Aufruf deaktiviert werden
    
    CreateDatapoints(SolarFolder);   // <<<<<----- Einmalig aufrufen
    
    
    // ================================================================================
    
    schedule('*/5 5-22 * * *', GetData); // zwischen 5-22Uhr alle 5min ausführen
    
    
    function GetData(){
        // zyklisches abholen der Daten, falls Solaranlage online ist
        var SolarIsOnline = getState(SolarOnlineVar).val;
        if (SolarIsOnline) {
            getWebsite();
        }
    }
    
    var http=require('http');
    
    function getWebsite(){
        // laden der Website und wandeln in ein Zeilen-Array
        // Werte Suchen und wegschreiben 
    
        http.get(SolarUrl, function(res){
            var str = "";
            console.log('Response is '+res.statusCode);
    
            if (res.statusCode != 200) {
                console.log("non-200 response status code:", res.statusCode);
                console.log("for url:", SolarUrl);
                res.resume();
                return;
            }
    
            res.on('data', function (chunk) {
                    str += chunk;
            });
    
            res.on('end', function () {
                var arr = str.split("\n");
                readSolData(arr, "webdata_sn");
                readSolData(arr, "webdata_msvn");
                readSolData(arr, "webdata_ssvn");
                readSolData(arr, "webdata_pv_type");
                readSolData(arr, "webdata_rate_p");
                readSolData(arr, "webdata_now_p", true);
                readSolData(arr, "webdata_today_e", true);
                readSolData(arr, "webdata_total_e", true);
                readSolData(arr, "webdata_alarm");
                readSolData(arr, "webdata_utime");
                readSolData(arr, "cover_mid");
                readSolData(arr, "cover_ver");
                readSolData(arr, "cover_wmode");
                readSolData(arr, "cover_ap_ssid");
                readSolData(arr, "cover_ap_ip");
                readSolData(arr, "cover_ap_mac");
                readSolData(arr, "cover_sta_ssid");
                readSolData(arr, "cover_sta_rssi");
                readSolData(arr, "cover_sta_ip");
                readSolData(arr, "cover_sta_mac");
                readSolData(arr, "status_a");
                readSolData(arr, "status_b");
                readSolData(arr, "status_c");
    
            });
    
        });
     }
    
    function readSolData(arr, dataPoint, isNumber = false){
        // Suchen des "dataPoint" und lesen dew zugehörigen Wertes,
        // dieser wird dann in den gleichnamigen Datenpunkt geschrieben
        var sub;
        var dpSearch = "var " + dataPoint;
         
         for (var i = 0; i < arr.length; i++){
            if (arr[i].includes(dpSearch)) {
                sub = arr[i].split("\"");
                var res = sub[1];
    
                if (isNumber){
                    res = parseFloat(res);
                }
                
                setState(SolarFolder + '.' + dataPoint, res);
    
                break;
               } 
            }
    }
    
    function CreateDatapoints(myFolder){
        // Datenpunkte anlegen, muss nur einmalig aufgerufen werden
         createState(myFolder + '.' + 'cover_ap_ip', '', {type: 'string',name: 'cover_ap_ip',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'cover_ap_mac', '', {type: 'string',name: 'cover_ap_mac',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'cover_ap_ssid', '', {type: 'string',name: 'cover_ap_ssid',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'cover_mid', '', {type: 'string',name: 'cover_mid',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'cover_sta_ip', '', {type: 'string',name: 'cover_sta_ip',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'cover_sta_mac', '', {type: 'string',name: 'cover_sta_mac',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'cover_sta_rssi', '', {type: 'string',name: 'cover_sta_rssi',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'cover_sta_ssid', '', {type: 'string',name: 'cover_sta_ssid',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'cover_ver', '', {type: 'string',name: 'cover_ver',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'cover_wmode', '', {type: 'string',name: 'cover_wmode',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'status_a', '', {type: 'string',name: 'status_a',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'status_b', '', {type: 'string',name: 'status_b',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'status_c', '', {type: 'string',name: 'status_c',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'webdata_alarm', '', {type: 'string',name: 'webdata_alarm',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'webdata_msvn', '', {type: 'string',name: 'webdata_msvn',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'webdata_now_p', 0, {type: 'number',name: 'webdata_now_p',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'webdata_pv_type', '', {type: 'string',name: 'webdata_pv_type',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'webdata_rate_p', '', {type: 'string',name: 'webdata_rate_p',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'webdata_sn', '', {type: 'string',name: 'webdata_sn',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'webdata_ssvn', '', {type: 'string',name: 'webdata_ssvn',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'webdata_today_e', 0, {type: 'number',name: 'webdata_today_e',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'webdata_total_e', 0, {type: 'number',name: 'webdata_total_e',read: true,write: true,role: 'state'});
         createState(myFolder + '.' + 'webdata_utime', '', {type: 'string',name: 'webdata_utime',read: true,write: true,role: 'state'});
    
         }
    
    
    
    
    E Offline
    E Offline
    EREX
    wrote on last edited by
    #13

    @achim-baecker Vielen Dank für Deine Mühe. Lese damit meinen DEYE SUN800W aus.
    Funktioniert einwandfrei.

    1 Reply Last reply
    0
    • M Offline
      M Offline
      meexx
      wrote on last edited by
      #14

      Hi,

      ich habe mal eine Frage zu dem "SolarOnlineVar" Datenpunkt. Braucht der als Wert 0 bzw 1 .... oder true oder false ? ich habe den Ping Adapter ohnehin schon installiert und dort auch den Wert, der ist aber nur true bzw false. Wenn das reicht dann kann ich diesen ja benutzen rein theoretisch. Brauche ich aber als Wert 0 bzw 1 dann würde ich halt noch mit einem BlocklyScript einen Datenpunkt mit 0 oder 1 erstellen .

      Ich bin noch blutiger Anfänger, darum verzeiht mit die Frage, im übrigen werte ich einen Wechselrichter von Sofar-Solar damit aus, im Moment noch ohne Abfrage ob er online ist oder nicht, würde das aber gerne auch automatisieren.

      MfG Ralf

      1 Reply Last reply
      0
      • M Offline
        M Offline
        meexx
        wrote on last edited by meexx
        #15

        Hallo nochmal,

        habe es inzwischen laufen, nur die Werte passen nicht so richtig..... kann man in dem Script irgendwie die nachkommastellen festlegen ? bekomme da nicht die plausiblen Werte. Im Beispiel zusehen ist das der Wert 6,99 der dann auf 7 bzw 7,1 springt, der sollte aber laut Weboberfläche dann 7,00 bzw 7,01 sein und nicht 7,1 weil dann weiter oben die Werte ja nicht mehr zusammen passen ? gibt es da eventuell eine kleine Lösung für ? weil so spielt dann Grafana nicht ganz mit. Im übrigen gebrauche ich das Script für einen Data Logger von SofarSolar Wechselrichter, Cool wäre auch noch das der Wert um 23:59 Uhr wieder auf 0,00 Gesetz wird oder wenn der Logger Offline ist dann setze Wert auf 0,00 . Leider stecke ich nicht so drin bei Java .

        java_zahlenwerte.JPG

        besten Dank für die Mühe Gruß Ralf ......

        T 1 Reply Last reply
        0
        • ACHIM BAECKERA ACHIM BAECKER

          Hier mein Script zum Auslesen eines Balkonkraftwerk mit einem Inverter Deye Solar Sun600 über den Inverter-Webserver.
          (ohne Cloud und Solarman Account)

          Unter "http://IP-INVERTER/status.html" können die Aktualdaten ausgelesen werden.
          Das Script liest alle 5min diese Webseite aus und trägt die Werte in die entsprechenden Datenpunkte.

          Achim

          // Auslesen der Datenpunkte eines Solarinverters Deye Solar SUN600 und baugleiche
          // (Bosswerk MI600, ..)? 
          // --------------------------------------------------------------------------------
          // Erstellt: 01.2023 Achim Bäcker
          // ================================================================================
          
          // Die Daten werden ohne externe App + Verbindung (bsp: Solarman) über den
          // Webserver im Inverter abgerufen. 
          // 
          // Hierzu im Inverter das WLan einstellen und eine IP vergeben bzw. DHCP aktivieren. 
          // 
          // ================================================================================
          // Einrichten:
          // 1. Variable SolarFolder anpassen... hier werden die Datenpunkte erstellt
          //    Funktion CreateDatapoints einmalig aufrufen
          // 2. Über den Radar2-Adapter schaue ich das der Inverter online ist (er schaltet
          //    sich bei zu wenig Sonne aus) Online-ID in SolarOnlineVar eintragen
          // 3. Url des Inverters anpassen (SolarUrl) , Username und Passwort müssen mit übergeben
          //     werden, am besten erst einmal die Url im Browser testen. Wenn die Url passt, öffnet 
          //    sich eine Webseite wo man nur Striche sieht. Hier im Browser Quelltext 
          //    anzeigen wählen... noch vor dem Body ist eine Liste mit den Aktualwerten
          // 
          // Hier auf eigene Anlage anpassen
          var SolarFolder     = "0_userdata.0.Solar";
          var SolarOnlineVar  = "radar2.0.Solar._here";    
          var SolarUrl        ="http://admin:admin@192.168.2.160/status.html";
          
          // Datenpunkte erstellen, kann nach einmaligem Aufruf deaktiviert werden
          
          CreateDatapoints(SolarFolder);   // <<<<<----- Einmalig aufrufen
          
          
          // ================================================================================
          
          schedule('*/5 5-22 * * *', GetData); // zwischen 5-22Uhr alle 5min ausführen
          
          
          function GetData(){
              // zyklisches abholen der Daten, falls Solaranlage online ist
              var SolarIsOnline = getState(SolarOnlineVar).val;
              if (SolarIsOnline) {
                  getWebsite();
              }
          }
          
          var http=require('http');
          
          function getWebsite(){
              // laden der Website und wandeln in ein Zeilen-Array
              // Werte Suchen und wegschreiben 
          
              http.get(SolarUrl, function(res){
                  var str = "";
                  console.log('Response is '+res.statusCode);
          
                  if (res.statusCode != 200) {
                      console.log("non-200 response status code:", res.statusCode);
                      console.log("for url:", SolarUrl);
                      res.resume();
                      return;
                  }
          
                  res.on('data', function (chunk) {
                          str += chunk;
                  });
          
                  res.on('end', function () {
                      var arr = str.split("\n");
                      readSolData(arr, "webdata_sn");
                      readSolData(arr, "webdata_msvn");
                      readSolData(arr, "webdata_ssvn");
                      readSolData(arr, "webdata_pv_type");
                      readSolData(arr, "webdata_rate_p");
                      readSolData(arr, "webdata_now_p", true);
                      readSolData(arr, "webdata_today_e", true);
                      readSolData(arr, "webdata_total_e", true);
                      readSolData(arr, "webdata_alarm");
                      readSolData(arr, "webdata_utime");
                      readSolData(arr, "cover_mid");
                      readSolData(arr, "cover_ver");
                      readSolData(arr, "cover_wmode");
                      readSolData(arr, "cover_ap_ssid");
                      readSolData(arr, "cover_ap_ip");
                      readSolData(arr, "cover_ap_mac");
                      readSolData(arr, "cover_sta_ssid");
                      readSolData(arr, "cover_sta_rssi");
                      readSolData(arr, "cover_sta_ip");
                      readSolData(arr, "cover_sta_mac");
                      readSolData(arr, "status_a");
                      readSolData(arr, "status_b");
                      readSolData(arr, "status_c");
          
                  });
          
              });
           }
          
          function readSolData(arr, dataPoint, isNumber = false){
              // Suchen des "dataPoint" und lesen dew zugehörigen Wertes,
              // dieser wird dann in den gleichnamigen Datenpunkt geschrieben
              var sub;
              var dpSearch = "var " + dataPoint;
               
               for (var i = 0; i < arr.length; i++){
                  if (arr[i].includes(dpSearch)) {
                      sub = arr[i].split("\"");
                      var res = sub[1];
          
                      if (isNumber){
                          res = parseFloat(res);
                      }
                      
                      setState(SolarFolder + '.' + dataPoint, res);
          
                      break;
                     } 
                  }
          }
          
          function CreateDatapoints(myFolder){
              // Datenpunkte anlegen, muss nur einmalig aufgerufen werden
               createState(myFolder + '.' + 'cover_ap_ip', '', {type: 'string',name: 'cover_ap_ip',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'cover_ap_mac', '', {type: 'string',name: 'cover_ap_mac',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'cover_ap_ssid', '', {type: 'string',name: 'cover_ap_ssid',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'cover_mid', '', {type: 'string',name: 'cover_mid',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'cover_sta_ip', '', {type: 'string',name: 'cover_sta_ip',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'cover_sta_mac', '', {type: 'string',name: 'cover_sta_mac',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'cover_sta_rssi', '', {type: 'string',name: 'cover_sta_rssi',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'cover_sta_ssid', '', {type: 'string',name: 'cover_sta_ssid',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'cover_ver', '', {type: 'string',name: 'cover_ver',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'cover_wmode', '', {type: 'string',name: 'cover_wmode',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'status_a', '', {type: 'string',name: 'status_a',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'status_b', '', {type: 'string',name: 'status_b',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'status_c', '', {type: 'string',name: 'status_c',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'webdata_alarm', '', {type: 'string',name: 'webdata_alarm',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'webdata_msvn', '', {type: 'string',name: 'webdata_msvn',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'webdata_now_p', 0, {type: 'number',name: 'webdata_now_p',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'webdata_pv_type', '', {type: 'string',name: 'webdata_pv_type',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'webdata_rate_p', '', {type: 'string',name: 'webdata_rate_p',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'webdata_sn', '', {type: 'string',name: 'webdata_sn',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'webdata_ssvn', '', {type: 'string',name: 'webdata_ssvn',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'webdata_today_e', 0, {type: 'number',name: 'webdata_today_e',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'webdata_total_e', 0, {type: 'number',name: 'webdata_total_e',read: true,write: true,role: 'state'});
               createState(myFolder + '.' + 'webdata_utime', '', {type: 'string',name: 'webdata_utime',read: true,write: true,role: 'state'});
          
               }
          
          
          
          
          F Offline
          F Offline
          Flying-Bolt
          wrote on last edited by
          #16

          @achim-baecker

          Bei mir sieht die Status.HTML anders aus.
          5852bdb7-2281-4578-9196-c153835607e5-image.png

          Was muss ich für meine HTML Seite anpassen?

          F 1 Reply Last reply
          0
          • F Flying-Bolt

            @achim-baecker

            Bei mir sieht die Status.HTML anders aus.
            5852bdb7-2281-4578-9196-c153835607e5-image.png

            Was muss ich für meine HTML Seite anpassen?

            F Offline
            F Offline
            Flying-Bolt
            wrote on last edited by Flying-Bolt
            #17

            @flying-bolt said in Deye Solar Sun600 Auslese-JavaScript:

            @achim-baecker

            Bei mir sieht die Status.HTML anders aus.
            5852bdb7-2281-4578-9196-c153835607e5-image.png

            Was muss ich für meine HTML Seite anpassen?

            ich bin schon mal selber einen Schritt weiter. Der http.get bekommt nicht die komplette Seite sondern nur den statischen HTML Teil.
            Der Teil der durch das JAVA Script erzeugt wird, also den Datenteil, der fehlt.

            Ich habe diese Consolenausgabe eingefügt:

            res.on('end', function () {
            console.log(str);

            Den Ausgabestring habe ich dann rauskopiert und ihn dann als HTML-Datei gespeichert und im Browser anzeigen lassen.

            05b2328f-c0ce-4720-9e38-cb245f6825ef-image.png

            D 1 Reply Last reply
            0
            • M meexx

              Hallo nochmal,

              habe es inzwischen laufen, nur die Werte passen nicht so richtig..... kann man in dem Script irgendwie die nachkommastellen festlegen ? bekomme da nicht die plausiblen Werte. Im Beispiel zusehen ist das der Wert 6,99 der dann auf 7 bzw 7,1 springt, der sollte aber laut Weboberfläche dann 7,00 bzw 7,01 sein und nicht 7,1 weil dann weiter oben die Werte ja nicht mehr zusammen passen ? gibt es da eventuell eine kleine Lösung für ? weil so spielt dann Grafana nicht ganz mit. Im übrigen gebrauche ich das Script für einen Data Logger von SofarSolar Wechselrichter, Cool wäre auch noch das der Wert um 23:59 Uhr wieder auf 0,00 Gesetz wird oder wenn der Logger Offline ist dann setze Wert auf 0,00 . Leider stecke ich nicht so drin bei Java .

              java_zahlenwerte.JPG

              besten Dank für die Mühe Gruß Ralf ......

              T Offline
              T Offline
              truderinger
              wrote on last edited by truderinger
              #18

              Hallo,

              ich wende mich mal an einen erfolgreichen user hier.

              Ich habe im ioBroker das JS-Script angelegt und die Punkte

              var SolarFolder = "0_userdata.0.Solar";
              var SolarOnlineVar = "radar2.0.Solar._here";
              var SolarUrl = "http://admin:admin@192.168.1.87/status.html";

              entsprechend angepasst. Das script neu gestartet und ca. 30 min. gewartet. Keiner der neu angelegten Datapoints wurde befüllt. Der Deye Sun800 ist auch in Betrieb. Ich bin jedoch auch mit solarman-business verbunden. Gibt es hier noch etwas zu beachten?

              Danke an den Ersteller und an die Gehilfen.

              Ergänzung: nach 40 Min habe ich jetzt jeweils eine "0" stehen und zwar bei
              webdata_now_p
              _today_e
              _total_e

              Aber warum "0" wenn die Solarman-App und mit der "status.html" rund 70 Watt angezeigt hat.

              Herbert

              1 Reply Last reply
              0
              • K Online
                K Online
                kiste01
                wrote on last edited by
                #19

                Hallo,

                ich habe einen SUN-M80G3-EU-230 und möchte die Daten lokal auslesen. Die web ui sieht sehr ähnlich wie die vom Sun600 aus. Kann jemand diesen WR über das script auslesen? Ich bekomme auch nur die drei Nullen wie @truderinger

                Grüße

                Tobi RoT Z 2 Replies Last reply
                0
                • K kiste01

                  Hallo,

                  ich habe einen SUN-M80G3-EU-230 und möchte die Daten lokal auslesen. Die web ui sieht sehr ähnlich wie die vom Sun600 aus. Kann jemand diesen WR über das script auslesen? Ich bekomme auch nur die drei Nullen wie @truderinger

                  Grüße

                  Tobi RoT Offline
                  Tobi RoT Offline
                  Tobi Ro
                  wrote on last edited by
                  #20

                  @kiste01
                  Ich habe den gleichen Wechselrichter und kann das Skript problemlos nutzen.
                  Hattest du die IP in radar2 eingetragen und die ID vom Wechselrichter im Skript geändert?

                  1 Reply Last reply
                  0
                  • K kiste01

                    Hallo,

                    ich habe einen SUN-M80G3-EU-230 und möchte die Daten lokal auslesen. Die web ui sieht sehr ähnlich wie die vom Sun600 aus. Kann jemand diesen WR über das script auslesen? Ich bekomme auch nur die drei Nullen wie @truderinger

                    Grüße

                    Z Online
                    Z Online
                    znyde
                    Developer
                    wrote on last edited by
                    #21

                    @kiste01
                    lösche den Ordner und ändere mal die Datenpunkterstellung mit folgendem Code. Danach hat´s bei mir funktioniert

                     
                    function CreateDatapoints(myFolder){
                        // Datenpunkte anlegen, muss nur einmalig aufgerufen werden
                         createState(myFolder + '.' + 'cover_ap_ip', '');
                         createState(myFolder + '.' + 'cover_ap_mac', '');
                         createState(myFolder + '.' + 'cover_ap_ssid', '');
                         createState(myFolder + '.' + 'cover_mid', '');
                         createState(myFolder + '.' + 'cover_sta_ip', '');
                         createState(myFolder + '.' + 'cover_sta_mac', '');
                         createState(myFolder + '.' + 'cover_sta_rssi', '');
                         createState(myFolder + '.' + 'cover_sta_ssid', '');
                         createState(myFolder + '.' + 'cover_ver', '');
                         createState(myFolder + '.' + 'cover_wmode', '');
                         createState(myFolder + '.' + 'status_a', '');
                         createState(myFolder + '.' + 'status_b', '');
                         createState(myFolder + '.' + 'status_c', '');
                         createState(myFolder + '.' + 'webdata_alarm', '');
                         createState(myFolder + '.' + 'webdata_msvn', '');
                         createState(myFolder + '.' + 'webdata_now_p', 0);
                         createState(myFolder + '.' + 'webdata_pv_type', '');
                         createState(myFolder + '.' + 'webdata_rate_p', '');
                         createState(myFolder + '.' + 'webdata_sn', '');
                         createState(myFolder + '.' + 'webdata_ssvn', '');
                         createState(myFolder + '.' + 'webdata_today_e', 0);
                         createState(myFolder + '.' + 'webdata_total_e', 0);
                         createState(myFolder + '.' + 'webdata_utime', '');
                     
                         }
                     
                    
                    K 1 Reply Last reply
                    0
                    • F Flying-Bolt

                      @flying-bolt said in Deye Solar Sun600 Auslese-JavaScript:

                      @achim-baecker

                      Bei mir sieht die Status.HTML anders aus.
                      5852bdb7-2281-4578-9196-c153835607e5-image.png

                      Was muss ich für meine HTML Seite anpassen?

                      ich bin schon mal selber einen Schritt weiter. Der http.get bekommt nicht die komplette Seite sondern nur den statischen HTML Teil.
                      Der Teil der durch das JAVA Script erzeugt wird, also den Datenteil, der fehlt.

                      Ich habe diese Consolenausgabe eingefügt:

                      res.on('end', function () {
                      console.log(str);

                      Den Ausgabestring habe ich dann rauskopiert und ihn dann als HTML-Datei gespeichert und im Browser anzeigen lassen.

                      05b2328f-c0ce-4720-9e38-cb245f6825ef-image.png

                      D Offline
                      D Offline
                      Dubaischeich
                      wrote on last edited by
                      #22

                      @flying-bolt Sieht mir aus als würdest du die index.html laden und nicht die status.html. Bisschen komisch gemacht das Ganze aber mit F12 drücken im Chrome kannst du in den Tools unter "Netzwerk" sehen welche Unterseiten angefragt werden falls die nicht status.html heißen solle.

                      O 1 Reply Last reply
                      0
                      • Z znyde

                        @kiste01
                        lösche den Ordner und ändere mal die Datenpunkterstellung mit folgendem Code. Danach hat´s bei mir funktioniert

                         
                        function CreateDatapoints(myFolder){
                            // Datenpunkte anlegen, muss nur einmalig aufgerufen werden
                             createState(myFolder + '.' + 'cover_ap_ip', '');
                             createState(myFolder + '.' + 'cover_ap_mac', '');
                             createState(myFolder + '.' + 'cover_ap_ssid', '');
                             createState(myFolder + '.' + 'cover_mid', '');
                             createState(myFolder + '.' + 'cover_sta_ip', '');
                             createState(myFolder + '.' + 'cover_sta_mac', '');
                             createState(myFolder + '.' + 'cover_sta_rssi', '');
                             createState(myFolder + '.' + 'cover_sta_ssid', '');
                             createState(myFolder + '.' + 'cover_ver', '');
                             createState(myFolder + '.' + 'cover_wmode', '');
                             createState(myFolder + '.' + 'status_a', '');
                             createState(myFolder + '.' + 'status_b', '');
                             createState(myFolder + '.' + 'status_c', '');
                             createState(myFolder + '.' + 'webdata_alarm', '');
                             createState(myFolder + '.' + 'webdata_msvn', '');
                             createState(myFolder + '.' + 'webdata_now_p', 0);
                             createState(myFolder + '.' + 'webdata_pv_type', '');
                             createState(myFolder + '.' + 'webdata_rate_p', '');
                             createState(myFolder + '.' + 'webdata_sn', '');
                             createState(myFolder + '.' + 'webdata_ssvn', '');
                             createState(myFolder + '.' + 'webdata_today_e', 0);
                             createState(myFolder + '.' + 'webdata_total_e', 0);
                             createState(myFolder + '.' + 'webdata_utime', '');
                         
                             }
                         
                        
                        K Online
                        K Online
                        kiste01
                        wrote on last edited by
                        #23

                        @znyde und @Tobi-Ro

                        Danke... Jetzt läuft es. Bei jeder Änderung muss man auf das 5 Minuten-Intervall achten, deswegen ist Geduld gefragt.

                        Den online-Status frage ich über einen DP unifi.0.default.clients.xx ab, hat aber das gleiche Ergebnis.

                        1 Reply Last reply
                        0
                        • D Dubaischeich

                          @flying-bolt Sieht mir aus als würdest du die index.html laden und nicht die status.html. Bisschen komisch gemacht das Ganze aber mit F12 drücken im Chrome kannst du in den Tools unter "Netzwerk" sehen welche Unterseiten angefragt werden falls die nicht status.html heißen solle.

                          O Offline
                          O Offline
                          opöl
                          wrote on last edited by
                          #24

                          @ACHIM-BAECKER ,

                          auch ich nutze Dein Script gerne und erfolgreich, um von der Cloud unabhängig zu sein.
                          Leider gibt es da noch den kleinen Schönheitsfehler, dass in dem Moment, wenn sich abends der Inverter mangels Energie abschaltet, die zuletzt gemeldete Leistung weiterhin ansteht. Der Inverter setzt die Leistung nicht als "Letzte Amtshandlung" vor dem schlafen gehen auf "0". Letztlich macht das den Kohl nicht fett, mich stört es aber, wenn nachts eine Leistung von 2 W - 5W angezeigt wird.

                          Daher habe ich mir erlaubt, Dein Script wie folgt zu modifizieren:

                          schedule('*/5 5-22 * * *', GetData); // zwischen 5-22Uhr alle 5min ausführen
                           
                          // Anfang Original 
                          // function GetData(){
                              // zyklisches abholen der Daten, falls Solaranlage online ist
                          //    var SolarIsOnline = getState(SolarOnlineVar).val;
                          //    if (SolarIsOnline) {
                          //        getWebsite();
                          //    }
                          //}
                           // Ende Original
                          
                          // Anfang Erweiterung, um "0" auszugeben, wenn der Inverter nicht erreichbar ist
                          
                          function GetData(){
                              // zyklisches abholen der Daten, falls Solaranlage online ist
                              var SolarIsOnline = getState(SolarOnlineVar).val;
                              if (SolarIsOnline) {
                                  getWebsite();
                              }
                              else {
                                	setState("0_userdata.0.Solar.webdata_now_p", 0);
                             }
                          

                          Die "setState" Anweisung setzt die Leistung auf "0", wenn der Inverter nicht erreichbar ist.

                          Es gibt sicher elegantere Lösungen um das zu realisieren, aber für mich funktioniert es.

                          Gruß

                          1 Reply Last reply
                          1
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          680

                          Online

                          32.7k

                          Users

                          82.4k

                          Topics

                          1.3m

                          Posts
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2025
                          logo
                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Home
                          • Recent
                          • Tags
                          • Unread 0
                          • Categories
                          • Unreplied
                          • Popular
                          • GitHub
                          • Docu
                          • Hilfe