Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Test Adapter Growatt v3.3.1

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Test Adapter Growatt v3.3.1

    This topic has been deleted. Only users with topic management privileges can see it.
    • PLCHome 0
      PLCHome 0 Developer @chucky666 last edited by PLCHome 0

      ...........

      chucky666 1 Reply Last reply Reply Quote 0
      • chucky666
        chucky666 @PLCHome 0 last edited by

        @plchome-0 danke dir . Ich teste gerade den Adapter Pvforecast

        1 Reply Last reply Reply Quote 0
        • G
          Garf @PLCHome 0 last edited by Garf

          ........

          1 Reply Last reply Reply Quote 0
          • W
            Wildbill @magix last edited by

            @PLCHome-0
            @magix sagte in Test Adapter Growatt v1.0.0:

            Mir ist aufgefallen, wenn ich nochmal in die Adaptereinstellungen gehe, das dann alle Felder wieder leer sind und auch keine Häkchen unten mehr gesetzt werden können.
            Ist das normal?
            Besteht die Möglichkeit noch die Voltwerte abzugreifen?

            Mir ist heute exakt das gleiche Problem aufgefallen. Wenn ich auf irgendeinem meine Apple-Geräte die Konfigseite des Adapters mit Safari öffne sind alle Werte leer. Das ist sowohl auf zwei Mac als auch auf dem IPad und IPhone so. Öffne ich Konfig-Seiten anderer Adapter so kann ich alles normal bedienen. Öffne ich auf den Macs die Konfig-Seite des Growatt-Adapter mit Firefox so sind alle Werte da und ich kann auch alles bedienen.
            Das Problem ist also nur die Konfiguration-Seite des Growatt-Adapters in Verbindung mit Safari. Alles andere geht.
            Inhaltsblocker sind deaktiviert, kann ja aber eigentlich nichts sein, wenn die anderen Seiten gehen.
            Was ist beim Growatt-Adapter anders oder wo kann ich ansetzen? Kann mal jemand mit Apple-Hardware testen, ob das bei ihm mit Safari auch so ist?
            Gruß, Jürgen

            PLCHome 0 1 Reply Last reply Reply Quote 0
            • PLCHome 0
              PLCHome 0 Developer @Wildbill last edited by

              @wildbill ich habe lieder kein safari, kannst du die Seite debuggen:
              https://wordpress.org/support/article/using-your-browser-to-diagnose-javascript-errors/

              W 2 Replies Last reply Reply Quote 0
              • W
                Wildbill @PLCHome 0 last edited by

                @plchome-0 Schaue ich mir die Tage mal an und poste es dann hier.
                Vielleicht komme ich morgen schon dazu.

                Gruss, Jürgen

                1 Reply Last reply Reply Quote 0
                • W
                  Wildbill @PLCHome 0 last edited by

                  @plchome-0 So, ich habe mal die Adapter-Konfig jeweils im Safari und Firefox geöffnet und einen Screenshot gemacht, sowie den Inhalt aus der Konsole kopiert:
                  Safari
                  Safari.png

                  [Log] [2022-04-28T04:48:03.564Z] Try to connect (socket.io.js, line 65)
                  [Log] " (translate.js, line 24)
                               <i class="material-icons">refresh</i>
                             ": {"en": "
                               <i class="material-icons">refresh</i>
                             ", "de": "
                               <i class="material-icons">refresh</i>
                             ", "ru": "
                               <i class="material-icons">refresh</i>
                             ", "pt": "
                               <i class="material-icons">refresh</i>
                             ", "nl": "
                               <i class="material-icons">refresh</i>
                             ", "fr": "
                               <i class="material-icons">refresh</i>
                             ", "es": "
                               <i class="material-icons">refresh</i>
                             ", "pl": "
                               <i class="material-icons">refresh</i>
                             ", "it": "
                               <i class="material-icons">refresh</i>
                             ", "zh-cn": "
                               <i class="material-icons">refresh</i>
                             "},
                  [Log] " (translate.js, line 24)
                                       Action
                                     ": {"en": "
                                       Action
                                     ", "de": "
                                       Action
                                     ", "ru": "
                                       Action
                                     ", "pt": "
                                       Action
                                     ", "nl": "
                                       Action
                                     ", "fr": "
                                       Action
                                     ", "es": "
                                       Action
                                     ", "pl": "
                                       Action
                                     ", "it": "
                                       Action
                                     ", "zh-cn": "
                                       Action
                                     "},
                  [Error] TypeError: undefined is not an object (evaluating 'key.length')
                     decrypt (index_m.html:42)
                     (anonyme Funktion) (adapter-settings.js:441)
                     (anonyme Funktion) (socket.io.js:258)
                     (anonyme Funktion) (socket.io.js:166)
                  

                  Firefox
                  Firefox.png

                  06:51:55.467 Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf https://sentry.iobroker.net/api/58/envelope/?sentry_key=43643152dab3481db69950ba866ee9d6&sentry_version=7. (Grund: CORS-Anfrage schlug fehl). Statuscode: (null).
                  2 
                  06:51:55.479 Diese Seite befindet sich im Kompatibilitätsmodus (Quirks). Das Seitenlayout kann beeinflusst werden. Verwenden Sie für den Standardmodus "<!DOCTYPE html>".
                  index_m.html
                  06:51:55.479 Diese Seite befindet sich im Kompatibilitätsmodus (Quirks). Das Seitenlayout kann beeinflusst werden. Verwenden Sie für den Standardmodus "<!DOCTYPE html>".
                  index_m.html
                  06:51:55.522 [2022-04-28T04:51:55.523Z] Try to connect socket.io.js:59:41
                  06:51:55.527 Passwort-Felder sind in einem unsicheren (http://) Iframe vorhanden. Dies ist ein Sicherheitsrisiko, durch das Zugangsdaten gestohlen werden können.
                  index_m.html
                  06:51:55.560 " <i class="material-icons">refresh</i> ": {"en": " <i class="material-icons">refresh</i> ", "de": " <i class="material-icons">refresh</i> ", "ru": " <i class="material-icons">refresh</i> ", "pt": " <i class="material-icons">refresh</i> ", "nl": " <i class="material-icons">refresh</i> ", "fr": " <i class="material-icons">refresh</i> ", "es": " <i class="material-icons">refresh</i> ", "pl": " <i class="material-icons">refresh</i> ", "it": " <i class="material-icons">refresh</i> ", "zh-cn": " <i class="material-icons">refresh</i> "}, translate.js:24:17
                  06:51:55.561 " Action ": {"en": " Action ", "de": " Action ", "ru": " Action ", "pt": " Action ", "nl": " Action ", "fr": " Action ", "es": " Action ", "pl": " Action ", "it": " Action ", "zh-cn": " Action "},
                  
                  

                  Die Ausgaben sind zwar komplett unterschiedlich, aber beides vom selben MAC aus und ziemlich zeitgleich. Kannst Du da was Verdächtiges erkennen oder mich daraufhin gezielt irgendwo weiter "forschen" lassen?

                  Gruss, Jürgen

                  PLCHome 0 1 Reply Last reply Reply Quote 0
                  • PLCHome 0
                    PLCHome 0 Developer @Wildbill last edited by PLCHome 0

                    @wildbill said in Test Adapter Growatt v1.0.0:

                    key.length

                    Der Fehler passiert auf Zeile 25 beim Entschlüsseln.
                    Er behauptet, der Key hat keine Länge.
                    Der wird aber in Zeile 159 gesetzt.
                    Komisch.

                        <script type="text/javascript">
                          let secret;
                    
                          if (!encrypt || typeof encrypt !== 'function') {
                            function encrypt(key, value) {
                              if (value === undefined) {
                                value = key;
                                key = secret;
                              }
                              var result = '';
                              for (var i = 0; i < value.length; ++i) {
                                result += String.fromCharCode(key[i % key.length].charCodeAt(0) ^ value.charCodeAt(i));
                              }
                              return result;
                            }
                          }
                          if (!decrypt || typeof decrypt !== 'function') {
                            function decrypt(key, value) {
                              if (value === undefined) {
                                value = key;
                                key = secret;
                              }
                              var result = '';
                              for (var i = 0; i < value.length; ++i) {
                                result += String.fromCharCode(key[i % key.length].charCodeAt(0) ^ value.charCodeAt(i));
                              }
                              return result;
                            }
                          }
                    
                          function storeObject(id, obj, objList) {
                            let ebene = id.split('.');
                            ebene.shift();
                            ebene.shift();
                            if (ebene[0] == 'info' || ebene.length < 2) {
                              return;
                            }
                            let newId = ebene.join('.');
                            //let n = ebene[ebene.length-1]
                            //let parent = ebene.slice(0,ebene.length-1).join('.');
                            objList.push({ id: newId, name: obj.common.name, type: obj.common.type, created: new Date(obj.ts).toLocaleString(), action: 'normal' });
                          }
                    
                          function showObjList(onChange, settings, objList) {
                            update = Object.assign({}, settings.objUpdate);
                            objList.forEach(function (o) {
                              if (update[o.id.toLowerCase]) {
                                o.action = update[o.id.toLowerCase].action;
                              }
                              delete update[o.id.toLowerCase];
                            });
                            Object.keys(update).forEach(id => {
                              if (update[id].action == 'delete') {
                                objList.push({ id: update[id].id, name: '', type: '', created: '', action: update[id].action });
                              }
                            });
                            objList.sort(function (dev1, dev2) {
                              let x = dev1.id.split('.'),
                                y = dev2.id.split('.');
                              while ((x.length > 0 && y.length > 0 && x.length == y.length) || (x.length > 1 && y.length > 1 && x.length != y.length)) {
                                let a = x.shift().toUpperCase();
                                b = y.shift().toUpperCase();
                                if (a != b) {
                                  return a > b ? 1 : -1;
                                }
                              }
                              return y.length - x.length;
                            });
                            values2table('objects', objList, onChange, function () {
                              $('[data-name=id]').attr('disabled', 'disabled');
                              $('[data-name=name]').attr('readonly', 'readonly');
                              $('[data-name=type]').attr('readonly', 'readonly');
                              $('[data-name=created]').attr('readonly', 'readonly');
                              return;
                            });
                          }
                    
                          function emitObjects(onChange, settings) {
                            socket.emit(
                              'getObjectView',
                              'system',
                              'state',
                              { startkey: 'growatt.' + instance + '.', endkey: 'growatt.' + instance + '.\u9999', include_docs: true },
                              function (err, _objects) {
                                let objList = [];
                                if (_objects && _objects.rows && _objects.rows.length) {
                                  for (let j = 0; j < _objects.rows.length; j++) {
                                    storeObject(_objects.rows[j].id, _objects.rows[j].value, objList);
                                  }
                                }
                                showObjList(onChange, settings, objList);
                              }
                            );
                          }
                    
                          function loadHelper(settings, onChange) {
                            if (!settings) return;
                            improveValues(settings);
                            $('.value').each(function () {
                              var $key = $(this);
                              var id = $key.attr('id');
                              if (
                                (id === 'password' || id === 'shareKey') &&
                                (typeof supportsFeature !== 'function' || !supportsFeature('ADAPTER_AUTO_DECRYPT_NATIVE'))
                              ) {
                                settings[id] = decrypt(secret, settings[id]);
                              }
                              if ($key.attr('type') === 'checkbox') {
                                // do not call onChange direct, because onChange could expect some arguments
                                $key.prop('checked', settings[id]).on('change', () => onChange());
                              } else {
                                // do not call onChange direct, because onChange could expect some arguments
                                $key
                                  .val(settings[id])
                                  .on('change', () => onChange())
                                  .on('keyup', () => onChange());
                              }
                            });
                            $('#keyLogin')
                              .change(function () {
                                if ($(this).prop('checked')) {
                                  $('.user').hide();
                                  $('.password').hide();
                                  $('.shareKey').show();
                                } else {
                                  $('.user').show();
                                  $('.password').show();
                                  $('.shareKey').hide();
                                }
                              })
                              .trigger('change');
                            $('#sessionHold')
                              .change(function () {
                                if ($(this).prop('checked')) {
                                  $('.sessionTime').show();
                                } else {
                                  $('.sessionTime').hide();
                                }
                              })
                              .trigger('change');
                            onChange(false);
                    
                            settings.objUpdate = settings.objUpdate || {};
                            emitObjects(onChange, settings);
                            $('#tab-manage-objects')
                              .find('.btn-objects-reload')
                              .on('click', function () {
                                var obj = {};
                                obj.objUpdate = getObjUpdate();
                                emitObjects(onChange, obj);
                              });
                            // reinitialize all the Materialize labels on the page if you are dynamically adding inputs:
                            if (M) M.updateTextFields();
                          }
                    
                          // This will be called by the admin adapter when the settings page loads
                          function load(settings, onChange) {
                            socket.emit('getObject', 'system.config', function (err, obj) {
                              secret = (obj.native ? obj.native.secret : '') || 'Zgfr56gFe87jJOM';
                              loadHelper(settings, onChange);
                            });
                            onChange(false);
                          }
                    

                    Kannst du die Seite einmal anpassen und schauen, was secret macht?
                    In das Installationsverzeichnis wechseln normal cd /opt/iobroker
                    dann in den Adapter Admin cd node_modules/iobroker.growatt/admin
                    Und dort mit nano oder vi editieren nano index_m.html
                    danach cd /opt/iobroker
                    und iobroker upload growatt eingeben

                    // This will be called by the admin adapter when the settings page loads
                          function load(settings, onChange) {
                            socket.emit('getObject', 'system.config', function (err, obj) {
                              console.log(obj.native) // <== dieses einfügen
                              console.log(err) // <== dieses einfügen
                              secret = (obj.native ? obj.native.secret : '') || 'Zgfr56gFe87jJOM';
                              console.log(secret) // <== dieses einfügen
                              loadHelper(settings, onChange);
                            });
                            onChange(false);
                          }
                    

                    Sollte dann so aussehen:

                    {secret: '53ea2cb8f1eeea7cd82------76'}
                    null
                    53ea2cb8f1eeea7cd82----76
                    
                    W 1 Reply Last reply Reply Quote 0
                    • W
                      Wildbill @PLCHome 0 last edited by

                      @plchome-0 sagte in Test Adapter Growatt v1.0.0:

                      {secret: '53ea2cb8f1eeea7cd82------76'}

                      Du meintest schon, dass ich den kompletten Block ab "Funktion load" bis einschließlich der geschweiften Klammer unter dem Block, also die kompletten Zeilen 1-11 in Deinem ersten Code oben durch Zeile 1 des zweiten Code-Block ersetze? Die Zeilen 2 und 3 sind wohl so rein gerutscht?
                      Falls ja, dann habe ich das zumindest so gemacht und einen Teilerfolg. Sowohl Firefox als auch Safari bringen jetzt beim Aufruf der Admin-Seite eine Meldung

                      Please implement save function in your admin/index.html
                      

                      und die Seite öffnet sich ohne irgendwelche eingetragenen Werte. ABER. Ich könnte so sowohl in Firefox als auch Safari Änderungen vornehmen. Im Safari hatte ich vorher ja nichtmal irgendwelche Checkboxen zum Anklicken. In der Konsole von Safari tauchen die Meldungen am Schluss (die letzten 5 Zeilen) auch nicht mehr auf.

                      Ich spiele mal die Datei zurück und mache noch einen Upload, damit wieder Daten vom Großtat reinkommen, sage aber schonmal Danke, die Richtung scheint zu stimmen. Keine Ahnung was Safari da anders macht als andere Browser...

                      Gruss, Jürgen

                      PLCHome 0 1 Reply Last reply Reply Quote 0
                      • PLCHome 0
                        PLCHome 0 Developer @Wildbill last edited by

                        @wildbill said in Test Adapter Growatt v1.0.0:

                        das zumin

                        In der Datei index_m.html ab Zeile 174 die Funktion erstezen.
                        e8bd488f-0751-46db-84a1-0cc086990b03-image.png

                        gegen::
                        559a6db0-a376-447d-843e-ec0ebb3e41e7-image.png

                        W 1 Reply Last reply Reply Quote 0
                        • W
                          Wildbill @PLCHome 0 last edited by

                          @plchome-0 In der Debug-Konsole in Firefox komt das hier und die Seite funktioniert:

                          
                          11:30:45.292
                          Uncaught Error: No DOM node set for aPlacesNode.
                          node.type: 0. node.parent: [xpconnect wrapped nsINavHistoryResultNode]
                             PVB__getDOMNodeForPlacesNode chrome://browser/content/places/browserPlacesViews.js:137
                             PBV_nodeMoved chrome://browser/content/places/browserPlacesViews.js:624
                          browserPlacesViews.js:137:13
                             PVB__getDOMNodeForPlacesNode chrome://browser/content/places/browserPlacesViews.js:137
                             PBV_nodeMoved chrome://browser/content/places/browserPlacesViews.js:624
                          11:30:45.299
                          Uncaught Error: No DOM node set for aPlacesNode.
                          node.type: 0. node.parent: [xpconnect wrapped nsINavHistoryResultNode]
                             PVB__getDOMNodeForPlacesNode chrome://browser/content/places/browserPlacesViews.js:137
                             PVB_nodeIconChanged chrome://browser/content/places/browserPlacesViews.js:514
                          browserPlacesViews.js:137:13
                             PVB__getDOMNodeForPlacesNode chrome://browser/content/places/browserPlacesViews.js:137
                             PVB_nodeIconChanged chrome://browser/content/places/browserPlacesViews.js:514
                          
                          


                          In Safari kommt das hier und die Seite geht nicht:

                          [Log] [2022-04-28T09:33:32.884Z] Try to connect (socket.io.js, line 65)
                          [Log] " (translate.js, line 24)
                                       <i class="material-icons">refresh</i>
                                     ": {"en": "
                                       <i class="material-icons">refresh</i>
                                     ", "de": "
                                       <i class="material-icons">refresh</i>
                                     ", "ru": "
                                       <i class="material-icons">refresh</i>
                                     ", "pt": "
                                       <i class="material-icons">refresh</i>
                                     ", "nl": "
                                       <i class="material-icons">refresh</i>
                                     ", "fr": "
                                       <i class="material-icons">refresh</i>
                                     ", "es": "
                                       <i class="material-icons">refresh</i>
                                     ", "pl": "
                                       <i class="material-icons">refresh</i>
                                     ", "it": "
                                       <i class="material-icons">refresh</i>
                                     ", "zh-cn": "
                                       <i class="material-icons">refresh</i>
                                     "},
                          [Log] " (translate.js, line 24)
                                               Action
                                             ": {"en": "
                                               Action
                                             ", "de": "
                                               Action
                                             ", "ru": "
                                               Action
                                             ", "pt": "
                                               Action
                                             ", "nl": "
                                               Action
                                             ", "fr": "
                                               Action
                                             ", "es": "
                                               Action
                                             ", "pl": "
                                               Action
                                             ", "it": "
                                               Action
                                             ", "zh-cn": "
                                               Action
                                             "},
                          [Error] TypeError: undefined is not an object (evaluating 'key.length')
                             decrypt (index_m.html:42)
                             (anonyme Funktion) (adapter-settings.js:441)
                             (anonyme Funktion) (socket.io.js:258)
                             (anonyme Funktion) (socket.io.js:166)
                          

                          Im Log von iobroker kommt beide Mal gar nichts.

                          Gruss, Jürgen

                          PLCHome 0 1 Reply Last reply Reply Quote 0
                          • PLCHome 0
                            PLCHome 0 Developer @Wildbill last edited by

                            @wildbill ja ich hab den Fehler:
                            er kommt mit let secret nicht klar weil ihm der Typ fehlt.

                            let secret = '';
                            

                            in Zeile 19 sollte das Problem beheben, zumindest funktioniert es jetzt auf meinem iPhone.

                            Ich mach gleich ein Update....

                            W 1 Reply Last reply Reply Quote 0
                            • W
                              Wildbill @PLCHome 0 last edited by

                              @plchome-0 sagte in Test Adapter Growatt v1.0.0:

                              @wildbill ja ich hab den Fehler:
                              er kommt mit let secret nicht klar weil ihm der Typ fehlt.

                              let secret = '';
                              

                              in Zeile 19 sollte das Problem beheben, zumindest funktioniert es jetzt auf meinem iPhone.

                              Ich mach gleich ein Update....

                              Ich habe Zeile 19 dahingehend geändert, die drei neuen console-Zeilen auskommentiert und einen Upload gemacht. nach dem Start zeigt Firefox alles wie gehabt an, bei Safari auf dem MAC aber immer noch nicht.
                              Ich warte mal auf das Update und teste dann nochmal durch inklusive iPad und iPhone.
                              Danke auf jeden Fall für Deine Mühen. 👍
                              Gruss, Jürgen

                              PLCHome 0 2 Replies Last reply Reply Quote 0
                              • PLCHome 0
                                PLCHome 0 Developer @Wildbill last edited by

                                @wildbill said in Test Adapter Growatt v1.0.0:

                                ei Safari auf

                                kannst du die 1.1.15 auf latest abrufen?

                                1 Reply Last reply Reply Quote 0
                                • PLCHome 0
                                  PLCHome 0 Developer @Wildbill last edited by

                                  @wildbill mein Fehler, es geht immer noch nicht. Wenn ich die Tabs hin- und herschalte und dann einen refesch mache, kommen die Daten. Bin darauf reingefallen.

                                  W 3 Replies Last reply Reply Quote 0
                                  • W
                                    Wildbill @PLCHome 0 last edited by

                                    @plchome-0 Das heisst, ich brauche die 1.1.15 nicht extra testen?

                                    Gruss, Jürgen

                                    1 Reply Last reply Reply Quote 0
                                    • W
                                      Wildbill @PLCHome 0 last edited by

                                      @plchome-0 Will Dich nicht enttäuschen, aber es LÄUFT! 👍 👍 👍
                                      Da der Adapter gerade eh mal wieder einige Fehler im Log warf und nicht verbinden wollte habe ich das Update auf die 1.1.15 (über latest kam übrigens nur die 1.1.14) direkt von Github gemacht. Und was soll ich sagen, im Safari kann ich nun auch ganz normal die Admin-Site aufmachen und die Werte stehen auch sofort da und ich kann alles bedienen und ändern. Das nenne ich mal Support!
                                      Vielen Dank. Dein letzter Post scheint also hinfällig zu sein!

                                      Gruss, Jürgen

                                      PLCHome 0 2 Replies Last reply Reply Quote 0
                                      • PLCHome 0
                                        PLCHome 0 Developer @Wildbill last edited by

                                        @wildbill
                                        Das mit der Veröffentlichung läuft in 4 Schritten:

                                        Ich checke den Adapter in Github ein, dort läuft ein Job der ihn prüft.
                                        Danach mache bei NPM einen publish, damit ist der Adapter über npm nach ca 5min installierbar.

                                        Die Jungs vom iobroker Team durchsuchen, ich glaube 2x der 4x täglich NPM nach neuen Adaptern, dann kannst du den Adapter über den ioBroker als Latest installieren.

                                        Als Nächstes muss ich die Versionsnummer im iobroker Repository anpassen und einen Mergerequest stellen. Dann übernehmen die ioBroker Jungs den Adapter nach Stable.

                                        1 Reply Last reply Reply Quote 0
                                        • PLCHome 0
                                          PLCHome 0 Developer @Wildbill last edited by

                                          @wildbill Strange, won't work on my iPhone

                                          1 Reply Last reply Reply Quote 0
                                          • W
                                            Wildbill @PLCHome 0 last edited by

                                            Kein Problem, das heisst, ich hätte anstatt mein Repo kurz auf latest zu stellen und zu schauen, was da kommt einfach bei der "Katze" auf dem NPM-Reiter den Adapter ziehen müssen und es wäre auch die aktuelle 1.1.15 gewesen? Wusste ich so nicht, wenn ich was direkt aktuelles will, schmeisse ich meistens den Github-Link als Text rein. Das hat bisher immer geklappt.
                                            Was meintest Du denn nun mit Deinem Post vorhin:

                                            @plchome-0 sagte in Test Adapter Growatt v1.0.0:

                                            @wildbill mein Fehler, es geht immer noch nicht. Wenn ich die Tabs hin- und herschalte und dann einen refesch mache, kommen die Daten. Bin darauf reingefallen.

                                            Sollte es bei mir eigentlich gar nicht funktionieren, nachdem es auf iPad und Mac nun geht?
                                            iPhone hab ich noch nicht getestet, da ist mir iobroker zu pummelig. Habe es aber eben nachgeholt, auch da würde die Seite aufgehen, auch wenn ich auf dem Screen keinen iobroker administrieren wollte...

                                            Also von meiner Seite würde ich sagen, es passt. Vielleicht finden sich ja noch ein paar mit Apple-Hardware und Safari die Gegenchecken?!

                                            Auf jeden Fall Spitzenklasse von Dir.

                                            Gruss, Jürgen

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            799
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            adapter growatt pv-anlage shine solar test tester
                                            71
                                            799
                                            283286
                                            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