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. Tester
  4. Test Adapter Growatt v3.3.1

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    16
    1
    473

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

Test Adapter Growatt v3.3.1

Scheduled Pinned Locked Moved Tester
adaptergrowattpv-anlageshinesolartesttester
808 Posts 72 Posters 358.6k Views 63 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.
  • PLCHome 0P PLCHome 0

    So, ich habe jetzt einiges am Adapter geändert. Ich hoffe, er läuft jett stabiler.

    W Online
    W Online
    Wildbill
    wrote on last edited by
    #121

    @plchome-0 Kannst Du mir sagen, wie ich an die geänderte Version komme? Auf Github finde ich nur die 1.1.8 mit Changlog-Datum vom 16.3. aber der letzten Änderung in den Dateien von vor 12 Tagen. Ich habe die 1.1.8 aber längst im iobroker, keine Ahnung seit wann, ist aber schon etwas her...

    Gruss, Jürgen

    PLCHome 0P 1 Reply Last reply
    0
    • PLCHome 0P PLCHome 0
      Aktuelle Test Version 3.3.1
      Veröffentlichungsdatum 13.08.2024
      Github Link https://github.com/PLCHome/ioBroker.growatt

      Hallo,

      ich habe einen Growatt SPH4000 Solar Wechselrichter mit ACCU.
      Growatt bietet zum Überwachen seiner Solarsysteme eine Webseite und eine App an.
      Ich habe die API benutzt, um einen Adapter für ioBroker zu erstellen.

      Zu Installation: Der Adapter kann über den ioBroker mit der Einstellung Beta (latest) installiert werden.

      Der Adapter fragt alle 30sec. die Werte des Wechselrichters ab und legt diese als einzelne Objekte ab.
      Die Werte ändern sich wie in der Shine App und im Webportal nur alle 5min.

      Leider sind alle Gerätetypen bei Gowatt mit einer anderen API ausgestattet. Ich habe versucht, so viele wie möglich zu Implementieren.

      Wäre nett wenn ihr den Adapter testen könntet damit ich mit der 0.0.14 in die Stable (default) komme.

      Hello,

      I have a Growatt SPH4000 solar inverter with ACCU.
      Growatt offers a website and an app for monitoring its solar systems.
      I used the API to create an adapter for ioBroker.

      To installation: The adapter can be installed via the ioBroker with the setting Beta (latest).

      The adapter asks every 30sec. saves the values ​​of the inverter and saves them as individual objects.
      As in the Shine app and in the web portal, the values ​​change only every 5 minutes.

      Unfortunately, all device types at Gowatt have a different API. I tried to implement as many as possible.

      Would be nice if you could test the adapter so that I can get into the stable (default) with 0.0.14.

      chucky666C Offline
      chucky666C Offline
      chucky666
      wrote on last edited by
      #122

      @plchome-0
      Danke für den Adapter , bis jetzt läuft er super

      gibt es irgendwo eine erklärung für die ganzen Datenpunkte ?

      wie bekommt man eine erwartungskurve hin ?

      PLCHome 0P 2 Replies Last reply
      0
      • W Wildbill

        @plchome-0 Kannst Du mir sagen, wie ich an die geänderte Version komme? Auf Github finde ich nur die 1.1.8 mit Changlog-Datum vom 16.3. aber der letzten Änderung in den Dateien von vor 12 Tagen. Ich habe die 1.1.8 aber längst im iobroker, keine Ahnung seit wann, ist aber schon etwas her...

        Gruss, Jürgen

        PLCHome 0P Offline
        PLCHome 0P Offline
        PLCHome 0
        Developer
        wrote on last edited by
        #123

        @wildbill 1.1.8 ist korrekt. Die ist jetzt auch im stable daher ist das Datum älter

        1 Reply Last reply
        1
        • chucky666C chucky666

          @plchome-0
          Danke für den Adapter , bis jetzt läuft er super

          gibt es irgendwo eine erklärung für die ganzen Datenpunkte ?

          wie bekommt man eine erwartungskurve hin ?

          PLCHome 0P Offline
          PLCHome 0P Offline
          PLCHome 0
          Developer
          wrote on last edited by
          #124

          @chucky666 Growatt hat für jeden Umrichtertyp andere Datenpunktnamen. Ich kenne die Zuordnung nicht. Der Adapter nimmt einfach die Antwort von Growatt und legt die Objekte anhand der Struktur an. Bei der History kommen auch mehr als früher angezeigt wurden, die History ist aus der Weboberfläche verschwunden, ich bin mal gespannt, wielange man die Abfragen kann.

          G 1 Reply Last reply
          0
          • chucky666C chucky666

            @plchome-0
            Danke für den Adapter , bis jetzt läuft er super

            gibt es irgendwo eine erklärung für die ganzen Datenpunkte ?

            wie bekommt man eine erwartungskurve hin ?

            PLCHome 0P Offline
            PLCHome 0P Offline
            PLCHome 0
            Developer
            wrote on last edited by PLCHome 0
            #125

            ...........

            chucky666C 1 Reply Last reply
            0
            • PLCHome 0P PLCHome 0

              ...........

              chucky666C Offline
              chucky666C Offline
              chucky666
              wrote on last edited by
              #126

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

              1 Reply Last reply
              0
              • PLCHome 0P PLCHome 0

                @chucky666 Growatt hat für jeden Umrichtertyp andere Datenpunktnamen. Ich kenne die Zuordnung nicht. Der Adapter nimmt einfach die Antwort von Growatt und legt die Objekte anhand der Struktur an. Bei der History kommen auch mehr als früher angezeigt wurden, die History ist aus der Weboberfläche verschwunden, ich bin mal gespannt, wielange man die Abfragen kann.

                G Offline
                G Offline
                Garf
                wrote on last edited by Garf
                #127

                ........

                1 Reply Last reply
                0
                • M magix

                  Hi,
                  danke vorab für den Adapter.
                  Ich habe seit Heute meine Growatt Anlage am laufen und gleich den Adapter installiert.

                  Habe mich ohne API (wusste nicht woher) angemeldet mit Benutzer+Pass.
                  Datenobjekte wurde gleich erstellt, soweit alle TOP.

                  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?

                  Danke und schöne Grüße

                  W Online
                  W Online
                  Wildbill
                  wrote on last edited by
                  #128

                  @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 0P 1 Reply Last reply
                  0
                  • W Wildbill

                    @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 0P Offline
                    PLCHome 0P Offline
                    PLCHome 0
                    Developer
                    wrote on last edited by
                    #129

                    @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
                    0
                    • PLCHome 0P PLCHome 0

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

                      W Online
                      W Online
                      Wildbill
                      wrote on last edited by
                      #130

                      @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
                      0
                      • PLCHome 0P PLCHome 0

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

                        W Online
                        W Online
                        Wildbill
                        wrote on last edited by
                        #131

                        @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 0P 1 Reply Last reply
                        0
                        • W Wildbill

                          @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 0P Offline
                          PLCHome 0P Offline
                          PLCHome 0
                          Developer
                          wrote on last edited by PLCHome 0
                          #132

                          @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
                          0
                          • PLCHome 0P 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 Online
                            W Online
                            Wildbill
                            wrote on last edited by
                            #133

                            @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 0P 1 Reply Last reply
                            0
                            • W Wildbill

                              @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 0P Offline
                              PLCHome 0P Offline
                              PLCHome 0
                              Developer
                              wrote on last edited by
                              #134

                              @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
                              0
                              • PLCHome 0P PLCHome 0

                                @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 Online
                                W Online
                                Wildbill
                                wrote on last edited by
                                #135

                                @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 0P 1 Reply Last reply
                                0
                                • W Wildbill

                                  @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 0P Offline
                                  PLCHome 0P Offline
                                  PLCHome 0
                                  Developer
                                  wrote on last edited by
                                  #136

                                  @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
                                  0
                                  • PLCHome 0P PLCHome 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....

                                    W Online
                                    W Online
                                    Wildbill
                                    wrote on last edited by
                                    #137

                                    @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. :+1:
                                    Gruss, Jürgen

                                    PLCHome 0P 2 Replies Last reply
                                    0
                                    • W Wildbill

                                      @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. :+1:
                                      Gruss, Jürgen

                                      PLCHome 0P Offline
                                      PLCHome 0P Offline
                                      PLCHome 0
                                      Developer
                                      wrote on last edited by
                                      #138

                                      @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
                                      0
                                      • W Wildbill

                                        @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. :+1:
                                        Gruss, Jürgen

                                        PLCHome 0P Offline
                                        PLCHome 0P Offline
                                        PLCHome 0
                                        Developer
                                        wrote on last edited by
                                        #139

                                        @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
                                        0
                                        • PLCHome 0P PLCHome 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.

                                          W Online
                                          W Online
                                          Wildbill
                                          wrote on last edited by
                                          #140

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

                                          Gruss, Jürgen

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          800

                                          Online

                                          32.5k

                                          Users

                                          81.6k

                                          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