Navigation

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

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Test PV Forecast Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      Ben. 0 @srwilli last edited by

      @srwilli Ich denke du musst die Prognosedaten als theoretisches Maximum betrachten in deinem Fall und die Auswertung mit Logik versehen.

      Alles was >4 kW ist, wird auf 4 kW gesetzt oder so. Der Adapter wird das nicht für dich lösen können.

      1 Reply Last reply Reply Quote 0
      • S
        srwilli last edited by

        Vielen Dank an alle für die Antworten 🙂

        1 Reply Last reply Reply Quote 0
        • T
          technikaffin @Diginix last edited by

          @diginix

          Wie wäre es denn wenn man den Adapter erweitert, und zusätzlich noch die realen (tatsächlich erzeugten) Werte der Anlage einfüttert.
          Also "Erzeugung heute bis jetzt / tagesgesamt in kWh"
          Die meisten dürften diesen Wert mit iobroker von irgendwo bekommen können, vom Wechselrichter oder Cloud-Portal oder wo auch immer.

          Dann könnte der pv-forecast-adapter einmal nachts den IST-Wert und den Prognose-Wert vom vergangenen Tag abgleichen und ein Korrektur-Delta für die Anlage errechnen, das würde dann im Laufe der Zeit immer genauer werden.

          Natürlich kann man sich das auch selber extra basteln, aber wenns der Adapter gleich mit erledigt wäre das sehr fein.

          BananaJoe 1 Reply Last reply Reply Quote 0
          • BananaJoe
            BananaJoe Most Active @technikaffin last edited by

            @technikaffin sagte in Test PV Forecast Adapter:

            @diginix

            Wie wäre es denn wenn man den Adapter erweitert, und zusätzlich noch die realen (tatsächlich erzeugten) Werte der Anlage einfüttert.
            Also "Erzeugung heute bis jetzt / tagesgesamt in kWh"
            Die meisten dürften diesen Wert mit iobroker von irgendwo bekommen können, vom Wechselrichter oder Cloud-Portal oder wo auch immer.

            Dann könnte der pv-forecast-adapter einmal nachts den IST-Wert und den Prognose-Wert vom vergangenen Tag abgleichen und ein Korrektur-Delta für die Anlage errechnen, das würde dann im Laufe der Zeit immer genauer werden.

            Natürlich kann man sich das auch selber extra basteln, aber wenns der Adapter gleich mit erledigt wäre das sehr fein.

            Die Korrektur findet doch schon statt. Wenn ich die Vorhersage für den Tag um 08:00 betrachte sieht die anders aus als wenn ich die um 16:00 anschaue - es wird "nachgeführt". Dementsprechend schwierig wäre eine Anpassung. Die würde ja nur passen wenn der Fehler / das Delta immer identisch ist.
            Als analoger Vergleich: Wäre als wenn man versucht die Wettervorhersage zu korrigieren ... (letztendlich ist der Adapter ja eine Wettervorhersage). Z.B. wird bei uns immer Regen angesagt, es regnet aber meist bei uns dann nicht (aber 2km weiter / andere Flussseite schon). Aber wie sollte ich das korrigieren / Entscheiden ob der Regen es nicht doch über den Fluss schafft.

            Also, korrigiert wäre genauso ungenau wie nicht korrigiert. Bei mir gibt es Zeiten da passt es sehr genau ... und Zeiten da passt es gar nicht. Aber der Trend passt (also ob es Sonnenstunden sind oder nicht) ... jedenfalls meistens

            T 1 Reply Last reply Reply Quote 0
            • T
              technikaffin @BananaJoe last edited by

              @bananajoe

              Ja das Wetter wird nachgeführt, also die Daten vom API, das ist mir schon klar. Eine einzelne Wolke lässt die Erzeugung ja einbrechen und so feingranular ist keine Wettervorhersage.

              Das meine ich aber nicht. Nehmen wir mal an die Wettervorhersage wäre 100% korrekt. Dann passt die Vorhersage trotzdem nicht genau zu meinen Paneelen, weil die vielleicht älter sind und die Leistung nachlässt, oder ich den Neigungswinkel oder die Südrichtung nicht genau eingetragen hab, oder meine Paneele besser oder schlechter sind als der Durchschnitt, etc.etc.

              Es gibt also ein Delta zwischen errechneter Leistung (Theorie) und tatsächlicher (Praxis), unabhängig vom Wetter. Dieses Delta ist aber immer gleich (bzw. es wird im Laufe der Zeit mit Alterung der Zellen etwas größer).
              Das will ich statistisch ausrechnen.

              Also im nachhinein, wenn man ganz genau weiss wie das Wetter war und der Theoriewert gut ist, dann vergleichen mit dem tatsächlichen Ertrag.

              BananaJoe 1 Reply Last reply Reply Quote 0
              • BananaJoe
                BananaJoe Most Active @technikaffin last edited by

                @technikaffin ok, das ist schon eingebaut und habe ich schon mal genutzt: Bei zeigte die vorhersage immer 20% zu wenig an. Also habe ich die Leistung meiner Anlage im Adapter entsprechen zu groß angegeben und schon passte es. Geht natürlich auch mit kleiner.

                Da ich die Werte aber eh einmal in einen SQL-Datenpunkt schreibe addiere ich nun an dieser Stelle was dazu

                1 Reply Last reply Reply Quote 0
                • sonnenschein
                  sonnenschein last edited by sonnenschein

                  Guten Morgen Zusammen!

                  Nach dem mein PVForecast mit dem Blockly Script von Bananajoe bis vor kurzem ohne Probleme lief, will es jetzt nicht mehr so richtig.
                  Es gab verschiedene Updates von verschiedenen Adaptern die ich installiert habe. Leider kann ich nicht nach vollziehen ab wann genau das Blockly Script nicht mehr funktioniert.
                  Meine Installation ist Iobrker auf Raspberry Pi 4.
                  PVForcast Adapter V 2.3.0
                  Javascript v 6.0.3
                  Admin v 6.2.23
                  Daten schreibe ich in sql MariaDB mit SQL Adapter V 2.2.0

                  Das Blocly Script liest die json table aus dem Objekten PVForcast
                  aktuell pvforecast.1.plants.sonnenschein.JSONTable

                  Objekte_PVForcast.png
                  Der Adapter schein die Daten auch zu aktualisieren.

                  PVForcast Adapter Logging auf ALLES; JavaSkript auch auf ALLES

                  Reins chreiben soll das Script in dieses Objekt 0_userdata.0.PVForecast.Sonnenschein

                  Das Blockly sieht so aus:
                  Blockly.png

                  angezeigt als Java script sieht das so aus:

                  var x, myVAL, myTS, JSONTable, JSONListe, counter, i, tempDatum, tempLeistung;
                  
                  // Beschreibe diese Funktion …
                  async function ReplaceHyphen(x) {
                      return x.replace("/-/g",".");
                  }
                  
                  // Beschreibe diese Funktion …
                  async function SendTo_SQL_storeState(myVAL, myTS) {
                      // Und wert erstellen wie geplant
                      sendTo("sql.0", "storeState", {
                          "id": '0_userdata.0.PVForecast.Sonnenschein',
                          "state": { 
                              "val": myVAL, 
                              "ts": myTS,
                              "ack": true
                          }
                      }, async function (result) {
                          console.log(result);
                      });
                  }
                  
                  // Beschreibe diese Funktion …
                  async function SendTo_SQL_deleteAll() {
                      // Alles löschen
                      sendTo("sql.0", "deleteAll", {
                          "id": '0_userdata.0.PVForecast.Sonnenschein',
                      }, async function (result) {
                            console.log(result);
                      });
                  
                  }
                  
                  
                  // Trigger auf den Datenpunkt JSONTable der
                  // gewünschten Anlage
                  on({id: [].concat(['pvforecast.1.plants.sonnenschein.JSONTable']), change: "any"}, async function (obj) {
                    var value = obj.state.val;
                    var oldValue = obj.oldState.val;
                    // Den JSON in eine Variable als Objekt holen
                    JSONTable = (obj.state ? obj.state.val : "");
                    // Den JSON nochmal als Liste
                    JSONListe = (obj.state ? obj.state.val : "").split('},{');
                    // Zähler für die einzelnen Werte
                    counter = -1;
                    // Vorherige Werte löschen
                    await SendTo_SQL_deleteAll();
                    // Kurz warten ...
                    await wait(2000);
                    // Die Werte abarbeiten:
                    for (var i_index in JSONListe) {
                      i = JSONListe[i_index];
                      // Wird beim ersten mal 0 sein
                      counter = (typeof counter == 'number' ? counter : 0) + 1;
                      // Wir arbeiten die Liste ab, nutzen aber das Objekt!
                      tempDatum = getAttr(JSONTable, (String(counter) + '.Uhrzeit'));
                      // Die - in . umwandeln
                      tempDatum = await ReplaceHyphen(tempDatum);
                      // In ein Datum-Objekt umwandeln
                      tempDatum = getDateObject(tempDatum).getTime();
                      // Die Leistung holen (hier in Wh statt kWh)
                      tempLeistung = parseFloat(getAttr(JSONTable, (String(counter) + '.Leistung'))) * 1000;
                      // Und in die Datenbank schreiben
                      await SendTo_SQL_storeState(tempLeistung, tempDatum);
                    }
                  });
                  
                  //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0N2YXJpYWJsZXMlM0UlM0N2YXJpYWJsZSUyMGlkJTNEJTIyeHIlM0ZDJTI1JTNBJTdERiUyNUhSJTJDJTJCYmFDJTI1VzhuJTIyJTNFeCUzQyUyRnZhcmlhYmxlJTNFJTNDdmFyaWFibGUlMjBpZCUzRCUyMmQlMkYuYk9QJTNEN1ZsQzUlMkYlNUIlMkIlM0Q4ZyUyRnUlMjIlM0VteVZBTCUzQyUyRnZhcmlhYmxlJTNFJTNDdmFyaWFibGUlMjBpZCUzRCUyMlNMJTI0ZDYlMkYlNjBDbE82aXFmZWZoNUxOJTIyJTNFbXlUUyUzQyUyRnZhcmlhYmxlJTNFJTNDdmFyaWFibGUlMjBpZCUzRCUyMkIlMjRuXyU3Q0x0JTNGViUzRmRsdEclMjQxJTNEJTI1VSElMjIlM0VKU09OVGFibGUlM0MlMkZ2YXJpYWJsZSUzRSUzQ3ZhcmlhYmxlJTIwaWQlM0QlMjJ6cVNTdDEubFBCclAhcHJ0SnAlM0ElNUIlMjIlM0VKU09OTGlzdGUlM0MlMkZ2YXJpYWJsZSUzRSUzQ3ZhcmlhYmxlJTIwaWQlM0QlMjIlNUIlMkNub1olMkIhJTIzUiglNUJ2KVZsaSU1QkpBQyUyMiUzRWNvdW50ZXIlM0MlMkZ2YXJpYWJsZSUzRSUzQ3ZhcmlhYmxlJTIwaWQlM0QlMjI5JTVCeFMlM0RzSCkuREtCUzhvR04lNDBjcyUyMiUzRWklM0MlMkZ2YXJpYWJsZSUzRSUzQ3ZhcmlhYmxlJTIwaWQlM0QlMjJ0a0glMjNxY0UlM0RINSUyRl83fk90dFc1KCUyMiUzRXRlbXBEYXR1bSUzQyUyRnZhcmlhYmxlJTNFJTNDdmFyaWFibGUlMjBpZCUzRCUyMmYlM0RNWDVieFhDZSU2MCUyMyU2MCUyNHp+SFhjRyUyMiUzRXRlbXBMZWlzdHVuZyUzQyUyRnZhcmlhYmxlJTNFJTNDJTJGdmFyaWFibGVzJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19kZWZjdXN0b21yZXR1cm4lMjIlMjBpZCUzRCUyMmY1JTJCZSUyNGkhJTQwaGRGZFA3JTVCSkExJTVFJTYwJTIyJTIweCUzRCUyMjI4OCUyMiUyMHklM0QlMjItMjEyJTIyJTNFJTNDbXV0YXRpb24lMjBzdGF0ZW1lbnRzJTNEJTIyZmFsc2UlMjIlM0UlM0NhcmclMjBuYW1lJTNEJTIyeCUyMiUyMHZhcmlkJTNEJTIyeHIlM0ZDJTI1JTNBJTdERiUyNUhSJTJDJTJCYmFDJTI1VzhuJTIyJTNFJTNDJTJGYXJnJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOQU1FJTIyJTNFUmVwbGFjZUh5cGhlbiUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU0NSSVBUJTIyJTNFY21WMGRYSnVJSGd1Y21Wd2JHRmpaU2dpTHkwdlp5SXNJaTRpS1RzJTNEJTNDJTJGZmllbGQlM0UlM0Njb21tZW50JTIwcGlubmVkJTNEJTIyZmFsc2UlMjIlMjBoJTNEJTIyODAlMjIlMjB3JTNEJTIyMTYwJTIyJTNFQmVzY2hyZWliZSUyMGRpZXNlJTIwRnVua3Rpb24lMjAlRTIlODAlQTYlM0MlMkZjb21tZW50JTNFJTNDJTJGYmxvY2slM0UlM0NibG9jayUyMHR5cGUlM0QlMjJwcm9jZWR1cmVzX2RlZmN1c3RvbW5vcmV0dXJuJTIyJTIwaWQlM0QlMjJXJTNGQmpUUXMhcGd1V3c0SFB3VClwJTIyJTIweCUzRCUyMjI4NyUyMiUyMHklM0QlMjItMTYyJTIyJTNFJTNDbXV0YXRpb24lMjBzdGF0ZW1lbnRzJTNEJTIyZmFsc2UlMjIlM0UlM0NhcmclMjBuYW1lJTNEJTIybXlWQUwlMjIlMjB2YXJpZCUzRCUyMmQlMkYuYk9QJTNEN1ZsQzUlMkYlNUIlMkIlM0Q4ZyUyRnUlMjIlM0UlM0MlMkZhcmclM0UlM0NhcmclMjBuYW1lJTNEJTIybXlUUyUyMiUyMHZhcmlkJTNEJTIyU0wlMjRkNiUyRiU2MENsTzZpcWZlZmg1TE4lMjIlM0UlM0MlMkZhcmclM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5BTUUlMjIlM0VTZW5kVG9fU1FMX3N0b3JlU3RhdGUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlNDUklQVCUyMiUzRUx5OGdWVzVrSUhkbGNuUWdaWEp6ZEdWc2JHVnVJSGRwWlNCblpYQnNZVzUwRFFwelpXNWtWRzhvSW5OeGJDNHdJaXdnSW5OMGIzSmxVM1JoZEdVaUxDQjdEUW9nSUNBZ0ltbGtJam9nSnpCZmRYTmxjbVJoZEdFdU1DNVFWa1p2Y21WallYTjBMbE52Ym01bGJuTmphR1ZwYmljc0RRb2dJQ0FnSW5OMFlYUmxJam9nZXlBTkNpQWdJQ0FnSUNBZ0luWmhiQ0k2SUcxNVZrRk1MQ0FOQ2lBZ0lDQWdJQ0FnSW5Seklqb2diWGxVVXl3TkNpQWdJQ0FnSUNBZ0ltRmpheUk2SUhSeWRXVU5DaUFnSUNCOURRcDlMQ0JoYzNsdVl5Qm1kVzVqZEdsdmJpQW9jbVZ6ZFd4MEtTQjdEUW9nSUNBZ1kyOXVjMjlzWlM1c2IyY29jbVZ6ZFd4MEtUc05DbjBwT3clM0QlM0QlM0MlMkZmaWVsZCUzRSUzQ2NvbW1lbnQlMjBwaW5uZWQlM0QlMjJmYWxzZSUyMiUyMGglM0QlMjI4MCUyMiUyMHclM0QlMjIxNjAlMjIlM0VCZXNjaHJlaWJlJTIwZGllc2UlMjBGdW5rdGlvbiUyMCVFMiU4MCVBNiUzQyUyRmNvbW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfZGVmY3VzdG9tbm9yZXR1cm4lMjIlMjBpZCUzRCUyMm0uJTVEZDZEUjRoSVIlN0NyaE0lNjBQM0tVJTIyJTIweCUzRCUyMjI4OCUyMiUyMHklM0QlMjItMTEyJTIyJTNFJTNDbXV0YXRpb24lMjBzdGF0ZW1lbnRzJTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5BTUUlMjIlM0VTZW5kVG9fU1FMX2RlbGV0ZUFsbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyU0NSSVBUJTIyJTNFTHk4Z1FXeHNaWE1nYk1PMmMyTm9aVzROQ25ObGJtUlVieWdpYzNGc0xqQWlMQ0FpWkdWc1pYUmxRV3hzSWl3Z2V3MEtJQ0FnSUNKcFpDSTZJQ2N3WDNWelpYSmtZWFJoTGpBdVVGWkdiM0psWTJGemRDNVRiMjV1Wlc1elkyaGxhVzRuTEEwS2ZTd2dZWE41Ym1NZ1puVnVZM1JwYjI0Z0tISmxjM1ZzZENrZ2V3MEtJQ0FnSUNBZ1kyOXVjMjlzWlM1c2IyY29jbVZ6ZFd4MEtUc05DbjBwT3cwSyUzQyUyRmZpZWxkJTNFJTNDY29tbWVudCUyMHBpbm5lZCUzRCUyMmZhbHNlJTIyJTIwaCUzRCUyMjgwJTIyJTIwdyUzRCUyMjE2MCUyMiUzRUJlc2NocmVpYmUlMjBkaWVzZSUyMEZ1bmt0aW9uJTIwJUUyJTgwJUE2JTNDJTJGY29tbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29tbWVudCUyMiUyMGlkJTNEJTIyZW1GOTBOJTVCeEElNUQudyUzQWUlMjQwYTUlNjBBJTIyJTIweCUzRCUyMjI4OCUyMiUyMHklM0QlMjItNjIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT01NRU5UJTIyJTNFVHJpZ2dlciUyMGF1ZiUyMGRlbiUyMERhdGVucHVua3QlMjBKU09OVGFibGUlMjBkZXIlM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb21tZW50JTIyJTIwaWQlM0QlMjJ2JTdDZzVSJTQwUEJTbGZSJTdCJTdEZ3F0V1IxJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRWdldyVDMyVCQ25zY2h0ZW4lMjBBbmxhZ2UlM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9leHQlMjIlMjBpZCUzRCUyMjIlN0Q4MWdOU1BuNDhteHQtQzMyTjMlMjIlM0UlM0NtdXRhdGlvbiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGh0bWwlMjIlMjBpdGVtcyUzRCUyMjElMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTkRJVElPTiUyMiUzRWFueSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQUNLX0NPTkRJVElPTiUyMiUzRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyT0lEMCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJmaWVsZF9vaWQlMjIlMjBpZCUzRCUyMiUyNGZVQyUyRmtnaCU1RTclNUJwQlpqZHMlMkMlNUJOJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyb2lkJTIyJTNFZGVmYXVsdCUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyUX4lNUJ+TDclNjAlM0ZqZmY5dzAhJTdDJTdCUiF+JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRXB2Zm9yZWNhc3QuMS5wbGFudHMuc29ubmVuc2NoZWluLkpTT05UYWJsZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJTVEFURU1FTlQlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb21tZW50JTIyJTIwaWQlM0QlMjJ4aXBrJTJDUTRtJTJGJTI0WmJxKDl4UCU1RE4lM0IlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT01NRU5UJTIyJTNFRGVuJTIwSlNPTiUyMGluJTIwZWluZSUyMFZhcmlhYmxlJTIwYWxzJTIwT2JqZWt0JTIwaG9sZW4lM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfc2V0JTIyJTIwaWQlM0QlMjI5bGU4bkJfJTdERSUyQiU3QiUzRCU1RXpoJTNBRnV0YSUyMiUyMGRpc2FibGVkJTNEJTIydHJ1ZSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyQiUyNG5fJTdDTHQlM0ZWJTNGZGx0RyUyNDElM0QlMjVVISUyMiUzRUpTT05UYWJsZSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb252ZXJ0X2pzb24yb2JqZWN0JTIyJTIwaWQlM0QlMjJDJTVFJTYwKTZlIVc0YXRkLiElMkIlN0IoaSU2MEQlMjIlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZV92YXIlMjIlMjBpZCUzRCUyMkNYJTNGcSU1REdjOGolNUJLczJGNC55YyUzRGMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJPSUQlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyWSUzQWVleEhjVU5pNWFQJTYwJTNEc2g1XyUzQiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMjJ5VjkyJTI1ayU3QmMlNDBhUiUyNHQlNDBGViU3Q1ZLJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRXB2Zm9yZWNhc3QuMS5wbGFudHMuc29ubmVuc2NoZWluLkpTT05UYWJsZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19zZXQlMjIlMjBpZCUzRCUyMnklM0FKJTdDeU9JNjlhS3JfJTVEZSU3RFglN0QpcSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyQiUyNG5fJTdDTHQlM0ZWJTNGZGx0RyUyNDElM0QlMjVVISUyMiUzRUpTT05UYWJsZSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9zb3VyY2UlMjIlMjBpZCUzRCUyMkdEUmR5SiUyNVlVaTRVJTdCUCUzQXhoZSUyNUwlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFc3RhdGUudmFsJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbW1lbnQlMjIlMjBpZCUzRCUyMjc4JTdCJTJGKHElNUV6byUzQVZtMyklN0RZZU1LcyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTU1FTlQlMjIlM0VEZW4lMjBKU09OJTIwbm9jaG1hbCUyMGFscyUyMExpc3RlJTNDJTJGZmllbGQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX3NldCUyMiUyMGlkJTNEJTIyJTI0QyUzQSUzQiU3Q0ZfRU5lJTNGS2MlN0JmOUUqdEUlMjIlMjBkaXNhYmxlZCUzRCUyMnRydWUlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMnpxU1N0MS5sUEJyUCFwcnRKcCUzQSU1QiUyMiUzRUpTT05MaXN0ZSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsaXN0c19zcGxpdCUyMiUyMGlkJTNEJTIyJTNBNCU1QiU1QjlCc1Z3U3UtJTIzU0ZTJTJGcXAlMjMlMjIlM0UlM0NtdXRhdGlvbiUyMG1vZGUlM0QlMjJTUExJVCUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTU9ERSUyMiUzRVNQTElUJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJTlBVVCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZV92YXIlMjIlMjBpZCUzRCUyMmslMjQlN0JfTHhKbFF+SmMlMjUlNUU4bVElM0JKMyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMk9JRCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRSUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyJTQwKExMRU85RGNaQ18xMDdQWTdlJTNCJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRXB2Zm9yZWNhc3QuMS5wbGFudHMuc29ubmVuc2NoZWluLkpTT05UYWJsZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJERUxJTSUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJfJTNEaXIpLS1DfksuNSElMkMlNDAzISUyNSU0MDQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTdEJTJDJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX3NldCUyMiUyMGlkJTNEJTIyS1RISWFlaiU3Qk1WNVRUeHNlaHUlM0FoJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjJ6cVNTdDEubFBCclAhcHJ0SnAlM0ElNUIlMjIlM0VKU09OTGlzdGUlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybGlzdHNfc3BsaXQlMjIlMjBpZCUzRCUyMiU2MCUyMyU1QnRwJTVEOCU1RHkhTCU1RUxFcDhPTClKJTIyJTNFJTNDbXV0YXRpb24lMjBtb2RlJTNEJTIyU1BMSVQlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk1PREUlMjIlM0VTUExJVCUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySU5QVVQlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9zb3VyY2UlMjIlMjBpZCUzRCUyMmMpJTJDcSU2MCk3ZFp5WClHdFclM0JPZTBZJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXN0YXRlLnZhbCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkRFTElNJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMmtvUEp1QnUlMkZIbSUyRkQ3JTJCJTVCJTI0RFIlMjQlNjAlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFJTdEJTJDJTdCJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29tbWVudCUyMiUyMGlkJTNEJTIyX2REV1J3cW9yaHYlN0NLNHIyMCUyQkNGJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRVolQzMlQTRobGVyJTIwZiVDMyVCQ3IlMjBkaWUlMjBlaW56ZWxuZW4lMjBXZXJ0ZSUzQyUyRmZpZWxkJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19zZXQlMjIlMjBpZCUzRCUyMnclNUJITlFGWihwS0MlM0IoTG9uc3BwRyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyJTVCJTJDbm9aJTJCISUyM1IoJTVCdilWbGklNUJKQUMlMjIlM0Vjb3VudGVyJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjIlMjRZRCUyMylaNiU1RC4hMHdVOCUzQSFJRlktJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFLTElM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29tbWVudCUyMiUyMGlkJTNEJTIybk9OJTJGLklNKi5YNUw3QlNmcW4uaiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTU1FTlQlMjIlM0VWb3JoZXJpZ2UlMjBXZXJ0ZSUyMGwlQzMlQjZzY2hlbiUzQyUyRmZpZWxkJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnByb2NlZHVyZXNfY2FsbGN1c3RvbW5vcmV0dXJuJTIyJTIwaWQlM0QlMjJNampsQWQlMkMlMjMwMmRIOSUzQiU1QjkxQSUzQWUlMjIlM0UlM0NtdXRhdGlvbiUyMG5hbWUlM0QlMjJTZW5kVG9fU1FMX2RlbGV0ZUFsbCUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbW1lbnQlMjIlMjBpZCUzRCUyMiUyQlV4UCU1RFVGWCpLKkF5OCU0MCUyQi4zRCglMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT01NRU5UJTIyJTNFS3VyeiUyMHdhcnRlbiUyMC4uLiUzQyUyRmZpZWxkJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRpbWVvdXRzX3dhaXQlMjIlMjBpZCUzRCUyMmIlMjMlNUI1QkNVNCUyM3ZELiUyQiU0MFJJZ3h3ciUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkRFTEFZJTIyJTNFMiUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVU5JVCUyMiUzRXNlYyUzQyUyRmZpZWxkJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbW1lbnQlMjIlMjBpZCUzRCUyMiUzRnFsRyU0MGJWMW5qN0slMjVoOCUzRiU2MFMtaCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTU1FTlQlMjIlM0VEaWUlMjBXZXJ0ZSUyMGFiYXJiZWl0ZW4lM0ElM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19mb3JFYWNoJTIyJTIwaWQlM0QlMjJzWiUyNU5oTlN4QzEwc0FnJTQwTyU1REt6NiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyOSU1QnhTJTNEc0gpLkRLQlM4b0dOJTQwY3MlMjIlM0VpJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJMSVNUJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIycHNCM1JRNDJkbUh5JTVCJTNEYUtycyEyJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjJ6cVNTdDEubFBCclAhcHJ0SnAlM0ElNUIlMjIlM0VKU09OTGlzdGUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8lMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb21tZW50JTIyJTIwaWQlM0QlMjIwaSUzRlh1MiU0MGhVdiUyQ2c0JTNGJTNCaTVGaGwlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT01NRU5UJTIyJTNFV2lyZCUyMGJlaW0lMjBlcnN0ZW4lMjBtYWwlMjAwJTIwc2VpbiUzQyUyRmZpZWxkJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfY2hhbmdlJTIyJTIwaWQlM0QlMjJsaWV0JTVCNSUyM0wlNDB+JTYwSSU1RHQlN0I4JTNBJTJGRXMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMiU1QiUyQ25vWiUyQiElMjNSKCU1QnYpVmxpJTVCSkFDJTIyJTNFY291bnRlciUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyREVMVEElMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMjk4NnFMdkNGJTVCSjJWSyU1RW5vMCU0MFJwJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMSUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29tbWVudCUyMiUyMGlkJTNEJTIyJTdEZlBJJTJGUSUzQmZWdTdWLXVZdVgySSUyQiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTU1FTlQlMjIlM0VXaXIlMjBhcmJlaXRlbiUyMGRpZSUyMExpc3RlJTIwYWIlMkMlMjBudXR6ZW4lMjBhYmVyJTIwZGFzJTIwT2JqZWt0ISUzQyUyRmZpZWxkJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19zZXQlMjIlMjBpZCUzRCUyMiU1RXcpJTNCJTQwaV9rZHRqV1dmJTNGYyU3REJjTyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIydGtIJTIzcWNFJTNESDUlMkZfN35PdHRXNSglMjIlM0V0ZW1wRGF0dW0lM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X2F0dHIlMjIlMjBpZCUzRCUyMmpUUmJXXy13STQtJTdELiElMkM1VihWSiUyMiUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlBBVEglMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyM3IlNjBXOSUyRn5Ub0VqJTdCQWJ4JTNBKWFneCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHRfam9pbiUyMiUyMGlkJTNEJTIyeG9GbVNiflklMkJ4bkQlM0Jjdk0lN0NnJTNCLSUyMiUzRSUzQ211dGF0aW9uJTIwaXRlbXMlM0QlMjIyJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIySzklM0I0TFElMjQxUyUyRiU2MGF0JTIzWVk1Mi5qJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjIlNUIlMkNub1olMkIhJTIzUiglNUJ2KVZsaSU1QkpBQyUyMiUzRWNvdW50ZXIlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQxJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyS2t0OHFWci55a3B+TlYlM0IlNDAlN0JVYXMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFLlVocnplaXQlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyT0JKRUNUJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyJTYwLXJ3NzRJJTYwa3F5bFVXZ2VIKiUyQiglMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMkIlMjRuXyU3Q0x0JTNGViUzRmRsdEclMjQxJTNEJTI1VSElMjIlM0VKU09OVGFibGUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbW1lbnQlMjIlMjBpZCUzRCUyMmIlM0YlNURQJTJCSDlCd3Fma0RSdiUyNCUyRiUzQWooJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRURpZSUyMC0lMjBpbiUyMC4lMjB1bXdhbmRlbG4lM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfc2V0JTIyJTIwaWQlM0QlMjJrJTQwdjE1QS1jWXBmJTJGdmJwUmElM0JfeiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIydGtIJTIzcWNFJTNESDUlMkZfN35PdHRXNSglMjIlM0V0ZW1wRGF0dW0lM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIycHJvY2VkdXJlc19jYWxsY3VzdG9tcmV0dXJuJTIyJTIwaWQlM0QlMjJwJTVCa3coJTNCeUkpcFhCamp6RCUyM0QpfiUyMiUzRSUzQ211dGF0aW9uJTIwbmFtZSUzRCUyMlJlcGxhY2VIeXBoZW4lMjIlM0UlM0NhcmclMjBuYW1lJTNEJTIyeCUyMiUzRSUzQyUyRmFyZyUzRSUzQyUyRm11dGF0aW9uJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQVJHMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMk4paCUzRCgxVFIlNjAuOSUyMzk2JTNEbSUzRkEwWSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIydGtIJTIzcWNFJTNESDUlMkZfN35PdHRXNSglMjIlM0V0ZW1wRGF0dW0lM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbW1lbnQlMjIlMjBpZCUzRCUyMkktNlBqemMyaW41ZlUlN0MlMkZMJTQweExUJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRUluJTIwZWluJTIwRGF0dW0tT2JqZWt0JTIwdW13YW5kZWxuJTNDJTJGZmllbGQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX3NldCUyMiUyMGlkJTNEJTIyRnNJTEJPUnNhTHJyYXpCaTFMKUolMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMnRrSCUyM3FjRSUzREg1JTJGXzd+T3R0VzUoJTIyJTNFdGVtcERhdHVtJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnZlcnRfZnJvbV9kYXRlJTIyJTIwaWQlM0QlMjI0YmJ3JTdEWkpocEhlJTdEZS4qbkowJTYwTSUyMiUzRSUzQ211dGF0aW9uJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUyMGZvcm1hdCUzRCUyMmZhbHNlJTIyJTIwbGFuZ3VhZ2UlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1BUSU9OJTIyJTNFb2JqZWN0JTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMlJqQyUzQiUzREFjJTNCblBIRnJIQ050JTI0U0clMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMnRrSCUyM3FjRSUzREg1JTJGXzd+T3R0VzUoJTIyJTNFdGVtcERhdHVtJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb21tZW50JTIyJTIwaWQlM0QlMjIlM0YlMkYuQWpTJTJCJTdCMTltRV9FaEM2JTNGJTdCJTI1JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRURpZSUyMExlaXN0dW5nJTIwaG9sZW4lMjAoaGllciUyMGluJTIwV2glMjBzdGF0dCUyMGtXaCklM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfc2V0JTIyJTIwaWQlM0QlMjI3JTI0ZTElM0RaLiU3QyU3Q3R0LSU3RGIlN0QlMjQlNjBRVVglMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMmYlM0RNWDVieFhDZSU2MCUyMyU2MCUyNHp+SFhjRyUyMiUzRXRlbXBMZWlzdHVuZyUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX2FyaXRobWV0aWMlMjIlMjBpZCUzRCUyMmN6VllFKWQlM0YlNUVoaiUzQnNCOHRRVyUyNWMlMjIlMjBpbmxpbmUlM0QlMjJmYWxzZSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFTVVMVElQTFklM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMlFYWEklMjNuYjUxdGhVKGdZdWpPN2wlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UxJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfYXR0ciUyMiUyMGlkJTNEJTIyIXAoUTIlN0IqdSUyRlUlNDAoTGRMYVdPJTNCcyUyMiUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlBBVEglMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIydGV4dCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRleHRfam9pbiUyMiUyMGlkJTNEJTIyZU8lMkJLYyU0MEolMjM1bmNKZXhnQ2ElM0JYRyUyMiUzRSUzQ211dGF0aW9uJTIwaXRlbXMlM0QlMjIyJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyNmglNDAlMkZ3JTNCdiUyQjVmSiUzQTJrJTVFZlJ1JTI0JTYwJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjIlNUIlMkNub1olMkIhJTIzUiglNUJ2KVZsaSU1QkpBQyUyMiUzRWNvdW50ZXIlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQxJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIydSUzQmxXJTJDRU1xMWxvJTNCMHdsJTQwJTVFc35aJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRS5MZWlzdHVuZyUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJPQkpFQ1QlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfZ2V0JTIyJTIwaWQlM0QlMjIlM0F3QyUyNW1fKjUlMjNrVW1qU0N0Umh0KiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyQiUyNG5fJTdDTHQlM0ZWJTNGZGx0RyUyNDElM0QlMjVVISUyMiUzRUpTT05UYWJsZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjIub1VSIUI0eTglM0IlN0RrTFh2M0hZVkQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UxMDAwJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29tbWVudCUyMiUyMGlkJTNEJTIyLnIlN0RjLjYlMjQlNUJKRGYlM0QuJTdDJTIzMDBwWmolMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT01NRU5UJTIyJTNFVW5kJTIwaW4lMjBkaWUlMjBEYXRlbmJhbmslMjBzY2hyZWliZW4lM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJwcm9jZWR1cmVzX2NhbGxjdXN0b21ub3JldHVybiUyMiUyMGlkJTNEJTIyQyUyQyUyRl9FbWIwXyUyQ0hYUzAlM0ElM0IwJTNGQ2IlMjIlM0UlM0NtdXRhdGlvbiUyMG5hbWUlM0QlMjJTZW5kVG9fU1FMX3N0b3JlU3RhdGUlMjIlM0UlM0NhcmclMjBuYW1lJTNEJTIybXlWQUwlMjIlM0UlM0MlMkZhcmclM0UlM0NhcmclMjBuYW1lJTNEJTIybXlUUyUyMiUzRSUzQyUyRmFyZyUzRSUzQyUyRm11dGF0aW9uJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQVJHMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMlpYJTYwJTYwJTJDMH5xVloqSCUzQmQ3NUlUIVMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMmYlM0RNWDVieFhDZSU2MCUyMyU2MCUyNHp+SFhjRyUyMiUzRXRlbXBMZWlzdHVuZyUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFSRzElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfZ2V0JTIyJTIwaWQlM0QlMjIyckMlMkNkdkZQZDMqXyUyQzEpRU9ka04lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMnRrSCUyM3FjRSUzREg1JTJGXzd+T3R0VzUoJTIyJTNFdGVtcERhdHVtJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGeG1sJTNF
                  

                  Jetzt sehe ich aber das das Skript nicht mehr in mein User Objekt schreibt. Wenn ich hier von Hand einen Wert schreibe geht der nach SQL, aber vom Skript wird nicht geschrieben!

                  Was ist nun anders oder wo liegt das Problem. Kann hier jemand helfen?
                  Ich möchte die PVForecast Daten wieder in die SQL DB schreiben damit ich sie in Garfana wieder darstellen kann.
                  Zum Testen des Blockly habe ich den Trigger von
                  "wurde geändert" auf "wurde aktualisiert" geändert damit evtl. Infos zum Fehler bekomme.

                  09:27:54.855 error javascript.0 (853) script.js.common.115_PVForecast_01: TypeError: Cannot read property 'replace' of undefined
                  09:27:54.856 error javascript.0 (853) at ReplaceHyphen (script.js.common.115_PVForecast_01:5:14)
                  09:27:54.856 error javascript.0 (853) at Object.<anonymous> (script.js.common.115_PVForecast_01:58:23)

                  BananaJoe 1 Reply Last reply Reply Quote 0
                  • BananaJoe
                    BananaJoe Most Active @sonnenschein last edited by BananaJoe

                    @sonnenschein sagte in Test PV Forecast Adapter:

                    0_userdata.0.PVForecast.Sonnenschein

                    Schick mal die Daten von deinem Datenpunkt 0_userdata.0.PVForecast.Sonnenschein, also den Stift am Ende anklicken und den Inhalt des 2. Reiters. Das ganze bitte in Code-Tags.

                    Bei mir funktioniert es noch - ich habe aber inzwischen eine verbesserte Version bei der die Daten nicht mehr vor dem Schreiben gelöscht werden müssen (ich kann also auch die Tage und Wochen vorher sehen) und die mehrere Anlagen berücksichtigt.

                    Ich meine das sich der Aufbau des JSON geändert hat.
                    Mein aktuelles Blockly ist im Moment aber eine 3-Anlagen Version, ich habe mal versucht das wieder zusammenzustreichen auf eine:

                    <xml xmlns="https://developers.google.com/blockly/xml">
                      <variables>
                        <variable id="RtPM2%k{F`%!q{Rk]|a.">id</variable>
                        <variable id=";!)T*gf?`G!J~iZ#4,CG">ts</variable>
                        <variable id="epT$}5hcYx3b^`jz:~#d">value</variable>
                        <variable id="GAGtL,+-C3?x`s;u1nsR">ack</variable>
                        <variable id="rHJp6FCFj,U],$ysF[xX">from</variable>
                        <variable id="p~yp5Fejp5Y|*K$i[(u%">q</variable>
                        <variable id="xr?C%:}F%HR,+baC%W8n">x</variable>
                        <variable id="F^DL7ecjBQr1k@hYE+{=">myId</variable>
                        <variable id="d/.bOP=7VlC5/[+=8g/u">myVAL</variable>
                        <variable id="SL$d6/`ClO6iqfefh5LN">myTS</variable>
                        <variable id="eF:WEr]2Ns:niv]0A2?4">myIdDeleteAll</variable>
                        <variable id="!X-*UNPMzEuy~Y#t}/dN">dp_Forecast_600W</variable>
                        <variable id="B$n_|Lt?V?dltG$1=%U!">JSONTable</variable>
                        <variable id="zqSSt1.lPBrP!prtJp:[">JSONListe</variable>
                        <variable id="[,noZ+!#R([v)Vli[JAC">counter</variable>
                        <variable id="9[xS=sH).DKBS8oGN@cs">i</variable>
                        <variable id="tkH#qcE=H5/_7~OttW5(">tempDatum</variable>
                        <variable id="Qc{Jo]quM_J722)2(/*i">tempLeistung600W</variable>
                      </variables>
                      <block type="procedures_defcustomnoreturn" id="ppt|ajrQncolYtqyk1q1" x="288" y="-337">
                        <mutation statements="false">
                          <arg name="id" varid="RtPM2%k{F`%!q{Rk]|a."></arg>
                          <arg name="ts" varid=";!)T*gf?`G!J~iZ#4,CG"></arg>
                          <arg name="value" varid="epT$}5hcYx3b^`jz:~#d"></arg>
                          <arg name="ack" varid="GAGtL,+-C3?x`s;u1nsR"></arg>
                          <arg name="from" varid="rHJp6FCFj,U],$ysF[xX"></arg>
                          <arg name="q" varid="p~yp5Fejp5Y|*K$i[(u%"></arg>
                        </mutation>
                        <field name="NAME">InsertToHistory</field>
                        <field name="SCRIPT">bGV0IHN0YXRlbWVudCA9IGANCiAgICBSRVBMQUNFIElOVE8gaW9icm9rZXIudHNfbnVtYmVyIA0KICAgICAgICAoaWQsIHRzLCB2YWwsIGFjaywgX2Zyb20sIHEpIA0KICAgICAgICBWQUxVRVMgKChTRUxFQ1QgaWQgRlJPTSBpb2Jyb2tlci5kYXRhcG9pbnRzIFdIRVJFIG5hbWUgPSAiJHtpZH0iKSwgJHt0c30sICR7dmFsdWV9LCAke2Fja30sICR7ZnJvbX0sICR7cX0pDQpgDQovL2xvZyhzdGF0ZW1lbnQpDQpzZW5kVG8oInNxbC4wIiwgInF1ZXJ5Iiwgc3RhdGVtZW50LCBlID0+IHsNCiAgICBpZiAoZSAmJiBlLmVycm9yKSB7DQogICAgICAgIGxvZyhlLmVycm9yKQ0KICAgIH0gZWxzZSB7DQogICAgICAgIC8vIGxvZygiRG9uZSEiKQ0KICAgIH0NCn0p</field>
                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                      </block>
                      <block type="procedures_defcustomreturn" id="YKZ7]x,bTzIFH|2uVS[r" x="288" y="-312">
                        <mutation statements="false">
                          <arg name="x" varid="xr?C%:}F%HR,+baC%W8n"></arg>
                        </mutation>
                        <field name="NAME">ReplaceDot</field>
                        <field name="SCRIPT">cmV0dXJuIHgucmVwbGFjZSgiLiIsIiIpOw==</field>
                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                      </block>
                      <block type="procedures_defcustomreturn" id="f5+e$i!@hdFdP7[JA1^`" x="288" y="-287">
                        <mutation statements="false">
                          <arg name="x" varid="xr?C%:}F%HR,+baC%W8n"></arg>
                        </mutation>
                        <field name="NAME">ReplaceHyphen</field>
                        <field name="SCRIPT">cmV0dXJuIHgucmVwbGFjZSgiLy0vZyIsIi4iKTs=</field>
                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                      </block>
                      <block type="procedures_defcustomnoreturn" id="W?BjTQs!pguWw4HPwT)p" x="288" y="-262">
                        <mutation statements="false">
                          <arg name="myId" varid="F^DL7ecjBQr1k@hYE+{="></arg>
                          <arg name="myVAL" varid="d/.bOP=7VlC5/[+=8g/u"></arg>
                          <arg name="myTS" varid="SL$d6/`ClO6iqfefh5LN"></arg>
                        </mutation>
                        <field name="NAME">SendTo_SQL_storeState</field>
                        <field name="SCRIPT">Ly8gVW5kIHdlcnQgZXJzdGVsbGVuIHdpZSBnZXBsYW50DQpzZW5kVG8oInNxbC4wIiwgInN0b3JlU3RhdGUiLCB7DQovL3NlbmRUbygic3FsLjAiLCAidXBkYXRlIiwgew0KICAgIC8vICJpZCI6ICcwX3VzZXJkYXRhLjAuU29sYXJhbmxhZ2UucHZmb3JlY2FzdCcsDQogICAgImlkIjogbXlJZCwNCiAgICAic3RhdGUiOiB7IA0KICAgICAgICAidmFsIjogbXlWQUwsIA0KICAgICAgICAidHMiOiBteVRTLA0KICAgICAgICAiYWNrIjogdHJ1ZQ0KICAgIH0NCn0sIGFzeW5jIGZ1bmN0aW9uIChyZXN1bHQpIHsNCiAgICAvL2NvbnNvbGUubG9nKHJlc3VsdCk7DQp9KTs=</field>
                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                      </block>
                      <block type="procedures_defcustomnoreturn" id="m.]d6DR4hIR|rhM`P3KU" x="288" y="-237">
                        <mutation statements="false">
                          <arg name="myIdDeleteAll" varid="eF:WEr]2Ns:niv]0A2?4"></arg>
                        </mutation>
                        <field name="NAME">SendTo_SQL_deleteAll</field>
                        <field name="SCRIPT">Ly8gQWxsZXMgbMO2c2NoZW4NCnNlbmRUbygic3FsLjAiLCAiZGVsZXRlQWxsIiwgew0KICAgIC8vICJpZCI6ICcwX3VzZXJkYXRhLjAuU29sYXJhbmxhZ2UucHZmb3JlY2FzdCcsDQogICAgImlkIjogbXlJZERlbGV0ZUFsbCwNCn0sIGFzeW5jIGZ1bmN0aW9uIChyZXN1bHQpIHsNCiAgICAgIC8vY29uc29sZS5sb2cocmVzdWx0KTsNCn0pOw0K</field>
                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                      </block>
                      <block type="comment" id="emF90N[xA].w:e$0a5`A" x="288" y="-187">
                        <field name="COMMENT">Trigger auf den Datenpunkt JSONTable der</field>
                        <next>
                          <block type="comment" id="v|g5R@PBSlfR{}gqtWR1">
                            <field name="COMMENT">gewünschten Anlage</field>
                            <next>
                              <block type="variables_set" id="IK$-$m]~F![8fw3OLm2r">
                                <field name="VAR" id="!X-*UNPMzEuy~Y#t}/dN">dp_Forecast_600W</field>
                                <value name="VALUE">
                                  <block type="text" id="-u)LAh^;Kq(U?ig^gOnf">
                                    <field name="TEXT">0_userdata.0.Solaranlage.pvforecasts.Forecast_solar.600W</field>
                                  </block>
                                </value>
                                <next>
                                  <block type="on_ext" id="2}81gNSPn48mxt-C32N3">
                                    <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                                    <field name="CONDITION">any</field>
                                    <field name="ACK_CONDITION"></field>
                                    <value name="OID0">
                                      <shadow type="field_oid" id="$fUC/kgh^7[pBZjds,[N">
                                        <field name="oid">default</field>
                                      </shadow>
                                      <block type="text" id="Q~[~L7`?jff9w0!|{R!~">
                                        <field name="TEXT">pvforecast.0.summary.JSONTable</field>
                                      </block>
                                    </value>
                                    <statement name="STATEMENT">
                                      <block type="comment" id="xipk,Q4m/$Zbq(9xP]N;">
                                        <field name="COMMENT">Den JSON in eine Variable als Objekt holen</field>
                                        <next>
                                          <block type="variables_set" id="9le8nB_}E+{=^zh:Futa">
                                            <field name="VAR" id="B$n_|Lt?V?dltG$1=%U!">JSONTable</field>
                                            <value name="VALUE">
                                              <block type="convert_json2object" id="C^`)6e!W4atd.!+{(i`D">
                                                <value name="VALUE">
                                                  <block type="get_value_var" id="CX?q]Gc8j[Ks2F4.yc=c">
                                                    <field name="ATTR">val</field>
                                                    <value name="OID">
                                                      <shadow type="text" id="Y:eexHcUNi5aP`=sh5_;">
                                                        <field name="TEXT"></field>
                                                      </shadow>
                                                      <block type="text" id="2yV92%k{c@aR$t@FV|VK">
                                                        <field name="TEXT">pvforecast.0.summary.JSONTable</field>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                            <next>
                                              <block type="comment" id="78{/(q^zo:Vm3)}YeMKs">
                                                <field name="COMMENT">Den JSON nochmal als Liste</field>
                                                <next>
                                                  <block type="variables_set" id="$C:;|F_ENe?Kc{f9E*tE">
                                                    <field name="VAR" id="zqSSt1.lPBrP!prtJp:[">JSONListe</field>
                                                    <value name="VALUE">
                                                      <block type="lists_split" id=":4[[9BsVwSu-#SFS/qp#">
                                                        <mutation mode="SPLIT"></mutation>
                                                        <field name="MODE">SPLIT</field>
                                                        <value name="INPUT">
                                                          <block type="get_value_var" id="k${_LxJlQ~Jc%^8mQ;J3">
                                                            <field name="ATTR">val</field>
                                                            <value name="OID">
                                                              <shadow type="text">
                                                                <field name="TEXT"></field>
                                                              </shadow>
                                                              <block type="text" id="@(LLEO9DcZC_107PY7e;">
                                                                <field name="TEXT">pvforecast.0.summary.JSONTable</field>
                                                              </block>
                                                            </value>
                                                          </block>
                                                        </value>
                                                        <value name="DELIM">
                                                          <shadow type="text" id="_=ir)--C~K.5!,@3!%@4">
                                                            <field name="TEXT">},</field>
                                                          </shadow>
                                                        </value>
                                                      </block>
                                                    </value>
                                                    <next>
                                                      <block type="comment" id="_dDWRwqorhv|K4r20+CF">
                                                        <field name="COMMENT">Zähler für die einzelnen Werte</field>
                                                        <next>
                                                          <block type="variables_set" id="w[HNQFZ(pKC;(LonsppG">
                                                            <field name="VAR" id="[,noZ+!#R([v)Vli[JAC">counter</field>
                                                            <value name="VALUE">
                                                              <block type="math_number" id="$YD#)Z6].!0wU8:!IFY-">
                                                                <field name="NUM">-1</field>
                                                              </block>
                                                            </value>
                                                            <next>
                                                              <block type="comment" id="+UxP]UFX*K*Ay8@+.3D(">
                                                                <field name="COMMENT">Kurz warten ...</field>
                                                                <next>
                                                                  <block type="timeouts_wait" id="b#[5BCU4#vD.+@RIgxwr">
                                                                    <field name="DELAY">2</field>
                                                                    <field name="UNIT">sec</field>
                                                                    <next>
                                                                      <block type="comment" id="?qlG@bV1nj7K%h8?`S-h">
                                                                        <field name="COMMENT">Die Werte abarbeiten:</field>
                                                                        <next>
                                                                          <block type="controls_forEach" id="sZ%NhNSxC10sAg@O]Kz6">
                                                                            <field name="VAR" id="9[xS=sH).DKBS8oGN@cs">i</field>
                                                                            <value name="LIST">
                                                                              <block type="variables_get" id="psB3RQ42dmHy[=aKrs!2">
                                                                                <field name="VAR" id="zqSSt1.lPBrP!prtJp:[">JSONListe</field>
                                                                              </block>
                                                                            </value>
                                                                            <statement name="DO">
                                                                              <block type="comment" id="0i?Xu2@hUv,g4?;i5Fhl">
                                                                                <field name="COMMENT">Wird beim ersten mal 0 sein</field>
                                                                                <next>
                                                                                  <block type="math_change" id="liet[5#L@~`I]t{8:/Es">
                                                                                    <field name="VAR" id="[,noZ+!#R([v)Vli[JAC">counter</field>
                                                                                    <value name="DELTA">
                                                                                      <shadow type="math_number" id="986qLvCF[J2VK^no0@Rp">
                                                                                        <field name="NUM">1</field>
                                                                                      </shadow>
                                                                                    </value>
                                                                                    <next>
                                                                                      <block type="comment" id="}fPI/Q;fVu7V-uYuX2I+">
                                                                                        <field name="COMMENT">Wir arbeiten die Liste ab, nutzen aber das Objekt!</field>
                                                                                        <next>
                                                                                          <block type="variables_set" id="^w);@i_kdtjWWf?c}BcO">
                                                                                            <field name="VAR" id="tkH#qcE=H5/_7~OttW5(">tempDatum</field>
                                                                                            <value name="VALUE">
                                                                                              <block type="get_attr" id="jTRbW_-wI4-}.!,5V(VJ">
                                                                                                <value name="PATH">
                                                                                                  <shadow type="text" id="3r`W9/~ToEj{Abx:)agx">
                                                                                                    <field name="TEXT"></field>
                                                                                                  </shadow>
                                                                                                  <block type="text_join" id="xoFmSb~Y+xnD;cvM|g;-">
                                                                                                    <mutation items="2"></mutation>
                                                                                                    <value name="ADD0">
                                                                                                      <block type="variables_get" id="K9;4LQ$1S/`at#YY52.j">
                                                                                                        <field name="VAR" id="[,noZ+!#R([v)Vli[JAC">counter</field>
                                                                                                      </block>
                                                                                                    </value>
                                                                                                    <value name="ADD1">
                                                                                                      <block type="text" id="Kkt8qVr.ykp~NV;@{Uas">
                                                                                                        <field name="TEXT">.Time</field>
                                                                                                      </block>
                                                                                                    </value>
                                                                                                  </block>
                                                                                                </value>
                                                                                                <value name="OBJECT">
                                                                                                  <block type="variables_get" id="`-rw74I`kqylUWgeH*+(">
                                                                                                    <field name="VAR" id="B$n_|Lt?V?dltG$1=%U!">JSONTable</field>
                                                                                                  </block>
                                                                                                </value>
                                                                                              </block>
                                                                                            </value>
                                                                                            <next>
                                                                                              <block type="comment" id="b?]P+H9BwqfkDRv$/:j(">
                                                                                                <field name="COMMENT">Die - in . umwandeln</field>
                                                                                                <next>
                                                                                                  <block type="variables_set" id="k@v15A-cYpf/vbpRa;_z">
                                                                                                    <field name="VAR" id="tkH#qcE=H5/_7~OttW5(">tempDatum</field>
                                                                                                    <value name="VALUE">
                                                                                                      <block type="procedures_callcustomreturn" id="p[kw(;yI)pXBjjzD#D)~">
                                                                                                        <mutation name="ReplaceHyphen">
                                                                                                          <arg name="x"></arg>
                                                                                                        </mutation>
                                                                                                        <value name="ARG0">
                                                                                                          <block type="variables_get" id="N)h=(1TR`.9#96=m?A0Y">
                                                                                                            <field name="VAR" id="tkH#qcE=H5/_7~OttW5(">tempDatum</field>
                                                                                                          </block>
                                                                                                        </value>
                                                                                                      </block>
                                                                                                    </value>
                                                                                                    <next>
                                                                                                      <block type="comment" id="I-6Pjzc2in5fU|/L@xLT">
                                                                                                        <field name="COMMENT">In ein Datum-Objekt umwandeln</field>
                                                                                                        <next>
                                                                                                          <block type="variables_set" id="FsILBORsaLrrazBi1L)J">
                                                                                                            <field name="VAR" id="tkH#qcE=H5/_7~OttW5(">tempDatum</field>
                                                                                                            <value name="VALUE">
                                                                                                              <block type="convert_from_date" id="4bbw}ZJhpHe}e.*nJ0`M">
                                                                                                                <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                                                                                                <field name="OPTION">object</field>
                                                                                                                <value name="VALUE">
                                                                                                                  <block type="variables_get" id="RjC;=Ac;nPHFrHCNt$SG">
                                                                                                                    <field name="VAR" id="tkH#qcE=H5/_7~OttW5(">tempDatum</field>
                                                                                                                  </block>
                                                                                                                </value>
                                                                                                              </block>
                                                                                                            </value>
                                                                                                            <next>
                                                                                                              <block type="comment" id="?/.AjS+{19mE_EhC6?{%">
                                                                                                                <field name="COMMENT">Leistungswerte holen</field>
                                                                                                                <next>
                                                                                                                  <block type="variables_set" id="Bs]rzL5Ou(TgO8/9n(?c">
                                                                                                                    <field name="VAR" id="Qc{Jo]quM_J722)2(/*i">tempLeistung600W</field>
                                                                                                                    <value name="VALUE">
                                                                                                                      <block type="convert_tonumber" id="tMmS$h!@}Ow%t)=ItX0,">
                                                                                                                        <value name="VALUE">
                                                                                                                          <block type="procedures_callcustomreturn" id="d8ICH/{6V[$h=0#xy+i^">
                                                                                                                            <mutation name="ReplaceDot">
                                                                                                                              <arg name="x"></arg>
                                                                                                                            </mutation>
                                                                                                                            <value name="ARG0">
                                                                                                                              <block type="get_attr" id="]yk~Vja4R|8vn@1,V]/O">
                                                                                                                                <value name="PATH">
                                                                                                                                  <shadow type="text" id="S|8FNN7w6)sBHuhiephR">
                                                                                                                                    <field name="TEXT"></field>
                                                                                                                                  </shadow>
                                                                                                                                  <block type="text_join" id="50|S}#qaQ?XsjIlp$eUH">
                                                                                                                                    <mutation items="2"></mutation>
                                                                                                                                    <value name="ADD0">
                                                                                                                                      <block type="variables_get" id="89zd[}sNs{07o$(Q`/Wv">
                                                                                                                                        <field name="VAR" id="[,noZ+!#R([v)Vli[JAC">counter</field>
                                                                                                                                      </block>
                                                                                                                                    </value>
                                                                                                                                    <value name="ADD1">
                                                                                                                                      <block type="text" id="Q:K|d_%wW60Lz}|pyP,X">
                                                                                                                                        <field name="TEXT">.600W</field>
                                                                                                                                      </block>
                                                                                                                                    </value>
                                                                                                                                  </block>
                                                                                                                                </value>
                                                                                                                                <value name="OBJECT">
                                                                                                                                  <block type="variables_get" id="en([*{/z)4M*6nR%,jHM">
                                                                                                                                    <field name="VAR" id="B$n_|Lt?V?dltG$1=%U!">JSONTable</field>
                                                                                                                                  </block>
                                                                                                                                </value>
                                                                                                                              </block>
                                                                                                                            </value>
                                                                                                                          </block>
                                                                                                                        </value>
                                                                                                                      </block>
                                                                                                                    </value>
                                                                                                                    <next>
                                                                                                                      <block type="comment" id=".r}c.6$[JDf=.|#00pZj">
                                                                                                                        <field name="COMMENT">Und in die Datenbank schreiben</field>
                                                                                                                        <next>
                                                                                                                          <block type="procedures_callcustomnoreturn" id="M^AAkuV`a@Z.)aHzF*cS" inline="false">
                                                                                                                            <mutation name="InsertToHistory">
                                                                                                                              <arg name="id"></arg>
                                                                                                                              <arg name="ts"></arg>
                                                                                                                              <arg name="value"></arg>
                                                                                                                              <arg name="ack"></arg>
                                                                                                                              <arg name="from"></arg>
                                                                                                                              <arg name="q"></arg>
                                                                                                                            </mutation>
                                                                                                                            <value name="ARG0">
                                                                                                                              <block type="variables_get" id="5);}w+nl3mmT2P1)PfZv">
                                                                                                                                <field name="VAR" id="!X-*UNPMzEuy~Y#t}/dN">dp_Forecast_600W</field>
                                                                                                                              </block>
                                                                                                                            </value>
                                                                                                                            <value name="ARG1">
                                                                                                                              <block type="variables_get" id="r(_ZS`H9#9L[XZBs,r2o">
                                                                                                                                <field name="VAR" id="tkH#qcE=H5/_7~OttW5(">tempDatum</field>
                                                                                                                              </block>
                                                                                                                            </value>
                                                                                                                            <value name="ARG2">
                                                                                                                              <block type="variables_get" id="PVq;+vyh]6](gm[cMdG{">
                                                                                                                                <field name="VAR" id="Qc{Jo]quM_J722)2(/*i">tempLeistung600W</field>
                                                                                                                              </block>
                                                                                                                            </value>
                                                                                                                            <value name="ARG3">
                                                                                                                              <block type="math_number" id="`F,$`peh0`2grx8z0C{I">
                                                                                                                                <field name="NUM">1</field>
                                                                                                                              </block>
                                                                                                                            </value>
                                                                                                                            <value name="ARG4">
                                                                                                                              <block type="math_number" id="F,vah,1EQo9C4e6~J:(n">
                                                                                                                                <field name="NUM">1</field>
                                                                                                                              </block>
                                                                                                                            </value>
                                                                                                                            <value name="ARG5">
                                                                                                                              <block type="math_number" id=";,x`))M,iJvBaeR@3UPZ">
                                                                                                                                <field name="NUM">0</field>
                                                                                                                              </block>
                                                                                                                            </value>
                                                                                                                          </block>
                                                                                                                        </next>
                                                                                                                      </block>
                                                                                                                    </next>
                                                                                                                  </block>
                                                                                                                </next>
                                                                                                              </block>
                                                                                                            </next>
                                                                                                          </block>
                                                                                                        </next>
                                                                                                      </block>
                                                                                                    </next>
                                                                                                  </block>
                                                                                                </next>
                                                                                              </block>
                                                                                            </next>
                                                                                          </block>
                                                                                        </next>
                                                                                      </block>
                                                                                    </next>
                                                                                  </block>
                                                                                </next>
                                                                              </block>
                                                                            </statement>
                                                                          </block>
                                                                        </next>
                                                                      </block>
                                                                    </next>
                                                                  </block>
                                                                </next>
                                                              </block>
                                                            </next>
                                                          </block>
                                                        </next>
                                                      </block>
                                                    </next>
                                                  </block>
                                                </next>
                                              </block>
                                            </next>
                                          </block>
                                        </next>
                                      </block>
                                    </statement>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </xml>
                    

                    Die Version nutzt den Datenpunkt pvforecast.0.summary.JSONTable, da werden alle vorhandenen Anlagen in einem Datenpunkt bereit gestellt. Den sollte es auch geben wenn du nur eine Anlage hast. Bei Bedarf könnte man das Skript auf mehrere Anlagen erweitern.

                    Zum "Setup":

                    Da muss dein Zieldatenpunkt rein, also wohin geschrieben werden soll:
                    3d909e16-9830-482e-afc2-36a7501a59b3-image.png

                    Und hier musst du die .600W durch den Namen deiner Anlage ändern, also den Namen den du gewählt hast. Vermutlich .sonnenschein
                    64a0cf07-7bf8-45fc-b072-49dd549124e6-image.png

                    Und - wenn es läuft - könntest du in allen Variablen die eine 600W im Namen haben dieses durch Sonnenschein ersetzen.

                    sonnenschein 2 Replies Last reply Reply Quote 0
                    • sonnenschein
                      sonnenschein @BananaJoe last edited by

                      @bananajoe
                      Vielen Dank für die Hilfe, das hat geholfen und jetzt werden wieder Daten in die SQL DB geschrieben. Die Verbesserung mit dem NICHT alles löschen finde ich Super.

                      VIS_Prognose.png

                      ..muß jetzt erst mal weg, schauen nach her noch mal auf die Daten.

                      Danke 👍

                      1 Reply Last reply Reply Quote 1
                      • sonnenschein
                        sonnenschein @BananaJoe last edited by sonnenschein

                        @bananajoe sagte in Test PV Forecast Adapter:

                        @sonnenschein sagte in Test PV Forecast Adapter:

                        0_userdata.0.PVForecast.Sonnenschein

                        Schick mal die Daten von deinem Datenpunkt 0_userdata.0.PVForecast.Sonnenschein, also den Stift am Ende anklicken und den Inhalt des 2. Reiters. Das ganze bitte in Code-Tags.

                        Bei mir funktioniert es noch - ich habe aber inzwischen eine verbesserte Version bei der die Daten nicht mehr vor dem Schreiben gelöscht werden müssen (ich kann also auch die Tage und Wochen vorher sehen) und die mehrere Anlagen berücksichtigt.

                        Ich meine das sich der Aufbau des JSON geändert hat.
                        Mein aktuelles Blockly ist im Moment aber eine 3-Anlagen Version, ich habe mal versucht das wieder zusammenzustreichen auf eine:

                        <xml xmlns="https://developers.google.com/blockly/xml">
                          <variables>
                            <variable id="RtPM2%k{F`%!q{Rk]|a.">id</variable>
                            <variable id=";!)T*gf?`G!J~iZ#4,CG">ts</variable>
                            <variable id="epT$}5hcYx3b^`jz:~#d">value</variable>
                            <variable id="GAGtL,+-C3?x`s;u1nsR">ack</variable>
                            <variable id="rHJp6FCFj,U],$ysF[xX">from</variable>
                            <variable id="p~yp5Fejp5Y|*K$i[(u%">q</variable>
                            <variable id="xr?C%:}F%HR,+baC%W8n">x</variable>
                            <variable id="F^DL7ecjBQr1k@hYE+{=">myId</variable>
                            <variable id="d/.bOP=7VlC5/[+=8g/u">myVAL</variable>
                            <variable id="SL$d6/`ClO6iqfefh5LN">myTS</variable>
                            <variable id="eF:WEr]2Ns:niv]0A2?4">myIdDeleteAll</variable>
                            <variable id="!X-*UNPMzEuy~Y#t}/dN">dp_Forecast_600W</variable>
                            <variable id="B$n_|Lt?V?dltG$1=%U!">JSONTable</variable>
                            <variable id="zqSSt1.lPBrP!prtJp:[">JSONListe</variable>
                            <variable id="[,noZ+!#R([v)Vli[JAC">counter</variable>
                            <variable id="9[xS=sH).DKBS8oGN@cs">i</variable>
                            <variable id="tkH#qcE=H5/_7~OttW5(">tempDatum</variable>
                            <variable id="Qc{Jo]quM_J722)2(/*i">tempLeistung600W</variable>
                          </variables>
                          <block type="procedures_defcustomnoreturn" id="ppt|ajrQncolYtqyk1q1" x="288" y="-337">
                            <mutation statements="false">
                              <arg name="id" varid="RtPM2%k{F`%!q{Rk]|a."></arg>
                              <arg name="ts" varid=";!)T*gf?`G!J~iZ#4,CG"></arg>
                              <arg name="value" varid="epT$}5hcYx3b^`jz:~#d"></arg>
                              <arg name="ack" varid="GAGtL,+-C3?x`s;u1nsR"></arg>
                              <arg name="from" varid="rHJp6FCFj,U],$ysF[xX"></arg>
                              <arg name="q" varid="p~yp5Fejp5Y|*K$i[(u%"></arg>
                            </mutation>
                            <field name="NAME">InsertToHistory</field>
                            <field name="SCRIPT">bGV0IHN0YXRlbWVudCA9IGANCiAgICBSRVBMQUNFIElOVE8gaW9icm9rZXIudHNfbnVtYmVyIA0KICAgICAgICAoaWQsIHRzLCB2YWwsIGFjaywgX2Zyb20sIHEpIA0KICAgICAgICBWQUxVRVMgKChTRUxFQ1QgaWQgRlJPTSBpb2Jyb2tlci5kYXRhcG9pbnRzIFdIRVJFIG5hbWUgPSAiJHtpZH0iKSwgJHt0c30sICR7dmFsdWV9LCAke2Fja30sICR7ZnJvbX0sICR7cX0pDQpgDQovL2xvZyhzdGF0ZW1lbnQpDQpzZW5kVG8oInNxbC4wIiwgInF1ZXJ5Iiwgc3RhdGVtZW50LCBlID0+IHsNCiAgICBpZiAoZSAmJiBlLmVycm9yKSB7DQogICAgICAgIGxvZyhlLmVycm9yKQ0KICAgIH0gZWxzZSB7DQogICAgICAgIC8vIGxvZygiRG9uZSEiKQ0KICAgIH0NCn0p</field>
                            <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                          </block>
                          <block type="procedures_defcustomreturn" id="YKZ7]x,bTzIFH|2uVS[r" x="288" y="-312">
                            <mutation statements="false">
                              <arg name="x" varid="xr?C%:}F%HR,+baC%W8n"></arg>
                            </mutation>
                            <field name="NAME">ReplaceDot</field>
                            <field name="SCRIPT">cmV0dXJuIHgucmVwbGFjZSgiLiIsIiIpOw==</field>
                            <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                          </block>
                          <block type="procedures_defcustomreturn" id="f5+e$i!@hdFdP7[JA1^`" x="288" y="-287">
                            <mutation statements="false">
                              <arg name="x" varid="xr?C%:}F%HR,+baC%W8n"></arg>
                            </mutation>
                            <field name="NAME">ReplaceHyphen</field>
                            <field name="SCRIPT">cmV0dXJuIHgucmVwbGFjZSgiLy0vZyIsIi4iKTs=</field>
                            <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                          </block>
                          <block type="procedures_defcustomnoreturn" id="W?BjTQs!pguWw4HPwT)p" x="288" y="-262">
                            <mutation statements="false">
                              <arg name="myId" varid="F^DL7ecjBQr1k@hYE+{="></arg>
                              <arg name="myVAL" varid="d/.bOP=7VlC5/[+=8g/u"></arg>
                              <arg name="myTS" varid="SL$d6/`ClO6iqfefh5LN"></arg>
                            </mutation>
                            <field name="NAME">SendTo_SQL_storeState</field>
                            <field name="SCRIPT">Ly8gVW5kIHdlcnQgZXJzdGVsbGVuIHdpZSBnZXBsYW50DQpzZW5kVG8oInNxbC4wIiwgInN0b3JlU3RhdGUiLCB7DQovL3NlbmRUbygic3FsLjAiLCAidXBkYXRlIiwgew0KICAgIC8vICJpZCI6ICcwX3VzZXJkYXRhLjAuU29sYXJhbmxhZ2UucHZmb3JlY2FzdCcsDQogICAgImlkIjogbXlJZCwNCiAgICAic3RhdGUiOiB7IA0KICAgICAgICAidmFsIjogbXlWQUwsIA0KICAgICAgICAidHMiOiBteVRTLA0KICAgICAgICAiYWNrIjogdHJ1ZQ0KICAgIH0NCn0sIGFzeW5jIGZ1bmN0aW9uIChyZXN1bHQpIHsNCiAgICAvL2NvbnNvbGUubG9nKHJlc3VsdCk7DQp9KTs=</field>
                            <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                          </block>
                          <block type="procedures_defcustomnoreturn" id="m.]d6DR4hIR|rhM`P3KU" x="288" y="-237">
                            <mutation statements="false">
                              <arg name="myIdDeleteAll" varid="eF:WEr]2Ns:niv]0A2?4"></arg>
                            </mutation>
                            <field name="NAME">SendTo_SQL_deleteAll</field>
                            <field name="SCRIPT">Ly8gQWxsZXMgbMO2c2NoZW4NCnNlbmRUbygic3FsLjAiLCAiZGVsZXRlQWxsIiwgew0KICAgIC8vICJpZCI6ICcwX3VzZXJkYXRhLjAuU29sYXJhbmxhZ2UucHZmb3JlY2FzdCcsDQogICAgImlkIjogbXlJZERlbGV0ZUFsbCwNCn0sIGFzeW5jIGZ1bmN0aW9uIChyZXN1bHQpIHsNCiAgICAgIC8vY29uc29sZS5sb2cocmVzdWx0KTsNCn0pOw0K</field>
                            <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                          </block>
                          <block type="comment" id="emF90N[xA].w:e$0a5`A" x="288" y="-187">
                            <field name="COMMENT">Trigger auf den Datenpunkt JSONTable der</field>
                            <next>
                              <block type="comment" id="v|g5R@PBSlfR{}gqtWR1">
                                <field name="COMMENT">gewünschten Anlage</field>
                                <next>
                                  <block type="variables_set" id="IK$-$m]~F![8fw3OLm2r">
                                    <field name="VAR" id="!X-*UNPMzEuy~Y#t}/dN">dp_Forecast_600W</field>
                                    <value name="VALUE">
                                      <block type="text" id="-u)LAh^;Kq(U?ig^gOnf">
                                        <field name="TEXT">0_userdata.0.Solaranlage.pvforecasts.Forecast_solar.600W</field>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="on_ext" id="2}81gNSPn48mxt-C32N3">
                                        <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                                        <field name="CONDITION">any</field>
                                        <field name="ACK_CONDITION"></field>
                                        <value name="OID0">
                                          <shadow type="field_oid" id="$fUC/kgh^7[pBZjds,[N">
                                            <field name="oid">default</field>
                                          </shadow>
                                          <block type="text" id="Q~[~L7`?jff9w0!|{R!~">
                                            <field name="TEXT">pvforecast.0.summary.JSONTable</field>
                                          </block>
                                        </value>
                                        <statement name="STATEMENT">
                                          <block type="comment" id="xipk,Q4m/$Zbq(9xP]N;">
                                            <field name="COMMENT">Den JSON in eine Variable als Objekt holen</field>
                                            <next>
                                              <block type="variables_set" id="9le8nB_}E+{=^zh:Futa">
                                                <field name="VAR" id="B$n_|Lt?V?dltG$1=%U!">JSONTable</field>
                                                <value name="VALUE">
                                                  <block type="convert_json2object" id="C^`)6e!W4atd.!+{(i`D">
                                                    <value name="VALUE">
                                                      <block type="get_value_var" id="CX?q]Gc8j[Ks2F4.yc=c">
                                                        <field name="ATTR">val</field>
                                                        <value name="OID">
                                                          <shadow type="text" id="Y:eexHcUNi5aP`=sh5_;">
                                                            <field name="TEXT"></field>
                                                          </shadow>
                                                          <block type="text" id="2yV92%k{c@aR$t@FV|VK">
                                                            <field name="TEXT">pvforecast.0.summary.JSONTable</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </value>
                                                <next>
                                                  <block type="comment" id="78{/(q^zo:Vm3)}YeMKs">
                                                    <field name="COMMENT">Den JSON nochmal als Liste</field>
                                                    <next>
                                                      <block type="variables_set" id="$C:;|F_ENe?Kc{f9E*tE">
                                                        <field name="VAR" id="zqSSt1.lPBrP!prtJp:[">JSONListe</field>
                                                        <value name="VALUE">
                                                          <block type="lists_split" id=":4[[9BsVwSu-#SFS/qp#">
                                                            <mutation mode="SPLIT"></mutation>
                                                            <field name="MODE">SPLIT</field>
                                                            <value name="INPUT">
                                                              <block type="get_value_var" id="k${_LxJlQ~Jc%^8mQ;J3">
                                                                <field name="ATTR">val</field>
                                                                <value name="OID">
                                                                  <shadow type="text">
                                                                    <field name="TEXT"></field>
                                                                  </shadow>
                                                                  <block type="text" id="@(LLEO9DcZC_107PY7e;">
                                                                    <field name="TEXT">pvforecast.0.summary.JSONTable</field>
                                                                  </block>
                                                                </value>
                                                              </block>
                                                            </value>
                                                            <value name="DELIM">
                                                              <shadow type="text" id="_=ir)--C~K.5!,@3!%@4">
                                                                <field name="TEXT">},</field>
                                                              </shadow>
                                                            </value>
                                                          </block>
                                                        </value>
                                                        <next>
                                                          <block type="comment" id="_dDWRwqorhv|K4r20+CF">
                                                            <field name="COMMENT">Zähler für die einzelnen Werte</field>
                                                            <next>
                                                              <block type="variables_set" id="w[HNQFZ(pKC;(LonsppG">
                                                                <field name="VAR" id="[,noZ+!#R([v)Vli[JAC">counter</field>
                                                                <value name="VALUE">
                                                                  <block type="math_number" id="$YD#)Z6].!0wU8:!IFY-">
                                                                    <field name="NUM">-1</field>
                                                                  </block>
                                                                </value>
                                                                <next>
                                                                  <block type="comment" id="+UxP]UFX*K*Ay8@+.3D(">
                                                                    <field name="COMMENT">Kurz warten ...</field>
                                                                    <next>
                                                                      <block type="timeouts_wait" id="b#[5BCU4#vD.+@RIgxwr">
                                                                        <field name="DELAY">2</field>
                                                                        <field name="UNIT">sec</field>
                                                                        <next>
                                                                          <block type="comment" id="?qlG@bV1nj7K%h8?`S-h">
                                                                            <field name="COMMENT">Die Werte abarbeiten:</field>
                                                                            <next>
                                                                              <block type="controls_forEach" id="sZ%NhNSxC10sAg@O]Kz6">
                                                                                <field name="VAR" id="9[xS=sH).DKBS8oGN@cs">i</field>
                                                                                <value name="LIST">
                                                                                  <block type="variables_get" id="psB3RQ42dmHy[=aKrs!2">
                                                                                    <field name="VAR" id="zqSSt1.lPBrP!prtJp:[">JSONListe</field>
                                                                                  </block>
                                                                                </value>
                                                                                <statement name="DO">
                                                                                  <block type="comment" id="0i?Xu2@hUv,g4?;i5Fhl">
                                                                                    <field name="COMMENT">Wird beim ersten mal 0 sein</field>
                                                                                    <next>
                                                                                      <block type="math_change" id="liet[5#L@~`I]t{8:/Es">
                                                                                        <field name="VAR" id="[,noZ+!#R([v)Vli[JAC">counter</field>
                                                                                        <value name="DELTA">
                                                                                          <shadow type="math_number" id="986qLvCF[J2VK^no0@Rp">
                                                                                            <field name="NUM">1</field>
                                                                                          </shadow>
                                                                                        </value>
                                                                                        <next>
                                                                                          <block type="comment" id="}fPI/Q;fVu7V-uYuX2I+">
                                                                                            <field name="COMMENT">Wir arbeiten die Liste ab, nutzen aber das Objekt!</field>
                                                                                            <next>
                                                                                              <block type="variables_set" id="^w);@i_kdtjWWf?c}BcO">
                                                                                                <field name="VAR" id="tkH#qcE=H5/_7~OttW5(">tempDatum</field>
                                                                                                <value name="VALUE">
                                                                                                  <block type="get_attr" id="jTRbW_-wI4-}.!,5V(VJ">
                                                                                                    <value name="PATH">
                                                                                                      <shadow type="text" id="3r`W9/~ToEj{Abx:)agx">
                                                                                                        <field name="TEXT"></field>
                                                                                                      </shadow>
                                                                                                      <block type="text_join" id="xoFmSb~Y+xnD;cvM|g;-">
                                                                                                        <mutation items="2"></mutation>
                                                                                                        <value name="ADD0">
                                                                                                          <block type="variables_get" id="K9;4LQ$1S/`at#YY52.j">
                                                                                                            <field name="VAR" id="[,noZ+!#R([v)Vli[JAC">counter</field>
                                                                                                          </block>
                                                                                                        </value>
                                                                                                        <value name="ADD1">
                                                                                                          <block type="text" id="Kkt8qVr.ykp~NV;@{Uas">
                                                                                                            <field name="TEXT">.Time</field>
                                                                                                          </block>
                                                                                                        </value>
                                                                                                      </block>
                                                                                                    </value>
                                                                                                    <value name="OBJECT">
                                                                                                      <block type="variables_get" id="`-rw74I`kqylUWgeH*+(">
                                                                                                        <field name="VAR" id="B$n_|Lt?V?dltG$1=%U!">JSONTable</field>
                                                                                                      </block>
                                                                                                    </value>
                                                                                                  </block>
                                                                                                </value>
                                                                                                <next>
                                                                                                  <block type="comment" id="b?]P+H9BwqfkDRv$/:j(">
                                                                                                    <field name="COMMENT">Die - in . umwandeln</field>
                                                                                                    <next>
                                                                                                      <block type="variables_set" id="k@v15A-cYpf/vbpRa;_z">
                                                                                                        <field name="VAR" id="tkH#qcE=H5/_7~OttW5(">tempDatum</field>
                                                                                                        <value name="VALUE">
                                                                                                          <block type="procedures_callcustomreturn" id="p[kw(;yI)pXBjjzD#D)~">
                                                                                                            <mutation name="ReplaceHyphen">
                                                                                                              <arg name="x"></arg>
                                                                                                            </mutation>
                                                                                                            <value name="ARG0">
                                                                                                              <block type="variables_get" id="N)h=(1TR`.9#96=m?A0Y">
                                                                                                                <field name="VAR" id="tkH#qcE=H5/_7~OttW5(">tempDatum</field>
                                                                                                              </block>
                                                                                                            </value>
                                                                                                          </block>
                                                                                                        </value>
                                                                                                        <next>
                                                                                                          <block type="comment" id="I-6Pjzc2in5fU|/L@xLT">
                                                                                                            <field name="COMMENT">In ein Datum-Objekt umwandeln</field>
                                                                                                            <next>
                                                                                                              <block type="variables_set" id="FsILBORsaLrrazBi1L)J">
                                                                                                                <field name="VAR" id="tkH#qcE=H5/_7~OttW5(">tempDatum</field>
                                                                                                                <value name="VALUE">
                                                                                                                  <block type="convert_from_date" id="4bbw}ZJhpHe}e.*nJ0`M">
                                                                                                                    <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                                                                                                    <field name="OPTION">object</field>
                                                                                                                    <value name="VALUE">
                                                                                                                      <block type="variables_get" id="RjC;=Ac;nPHFrHCNt$SG">
                                                                                                                        <field name="VAR" id="tkH#qcE=H5/_7~OttW5(">tempDatum</field>
                                                                                                                      </block>
                                                                                                                    </value>
                                                                                                                  </block>
                                                                                                                </value>
                                                                                                                <next>
                                                                                                                  <block type="comment" id="?/.AjS+{19mE_EhC6?{%">
                                                                                                                    <field name="COMMENT">Leistungswerte holen</field>
                                                                                                                    <next>
                                                                                                                      <block type="variables_set" id="Bs]rzL5Ou(TgO8/9n(?c">
                                                                                                                        <field name="VAR" id="Qc{Jo]quM_J722)2(/*i">tempLeistung600W</field>
                                                                                                                        <value name="VALUE">
                                                                                                                          <block type="convert_tonumber" id="tMmS$h!@}Ow%t)=ItX0,">
                                                                                                                            <value name="VALUE">
                                                                                                                              <block type="procedures_callcustomreturn" id="d8ICH/{6V[$h=0#xy+i^">
                                                                                                                                <mutation name="ReplaceDot">
                                                                                                                                  <arg name="x"></arg>
                                                                                                                                </mutation>
                                                                                                                                <value name="ARG0">
                                                                                                                                  <block type="get_attr" id="]yk~Vja4R|8vn@1,V]/O">
                                                                                                                                    <value name="PATH">
                                                                                                                                      <shadow type="text" id="S|8FNN7w6)sBHuhiephR">
                                                                                                                                        <field name="TEXT"></field>
                                                                                                                                      </shadow>
                                                                                                                                      <block type="text_join" id="50|S}#qaQ?XsjIlp$eUH">
                                                                                                                                        <mutation items="2"></mutation>
                                                                                                                                        <value name="ADD0">
                                                                                                                                          <block type="variables_get" id="89zd[}sNs{07o$(Q`/Wv">
                                                                                                                                            <field name="VAR" id="[,noZ+!#R([v)Vli[JAC">counter</field>
                                                                                                                                          </block>
                                                                                                                                        </value>
                                                                                                                                        <value name="ADD1">
                                                                                                                                          <block type="text" id="Q:K|d_%wW60Lz}|pyP,X">
                                                                                                                                            <field name="TEXT">.600W</field>
                                                                                                                                          </block>
                                                                                                                                        </value>
                                                                                                                                      </block>
                                                                                                                                    </value>
                                                                                                                                    <value name="OBJECT">
                                                                                                                                      <block type="variables_get" id="en([*{/z)4M*6nR%,jHM">
                                                                                                                                        <field name="VAR" id="B$n_|Lt?V?dltG$1=%U!">JSONTable</field>
                                                                                                                                      </block>
                                                                                                                                    </value>
                                                                                                                                  </block>
                                                                                                                                </value>
                                                                                                                              </block>
                                                                                                                            </value>
                                                                                                                          </block>
                                                                                                                        </value>
                                                                                                                        <next>
                                                                                                                          <block type="comment" id=".r}c.6$[JDf=.|#00pZj">
                                                                                                                            <field name="COMMENT">Und in die Datenbank schreiben</field>
                                                                                                                            <next>
                                                                                                                              <block type="procedures_callcustomnoreturn" id="M^AAkuV`a@Z.)aHzF*cS" inline="false">
                                                                                                                                <mutation name="InsertToHistory">
                                                                                                                                  <arg name="id"></arg>
                                                                                                                                  <arg name="ts"></arg>
                                                                                                                                  <arg name="value"></arg>
                                                                                                                                  <arg name="ack"></arg>
                                                                                                                                  <arg name="from"></arg>
                                                                                                                                  <arg name="q"></arg>
                                                                                                                                </mutation>
                                                                                                                                <value name="ARG0">
                                                                                                                                  <block type="variables_get" id="5);}w+nl3mmT2P1)PfZv">
                                                                                                                                    <field name="VAR" id="!X-*UNPMzEuy~Y#t}/dN">dp_Forecast_600W</field>
                                                                                                                                  </block>
                                                                                                                                </value>
                                                                                                                                <value name="ARG1">
                                                                                                                                  <block type="variables_get" id="r(_ZS`H9#9L[XZBs,r2o">
                                                                                                                                    <field name="VAR" id="tkH#qcE=H5/_7~OttW5(">tempDatum</field>
                                                                                                                                  </block>
                                                                                                                                </value>
                                                                                                                                <value name="ARG2">
                                                                                                                                  <block type="variables_get" id="PVq;+vyh]6](gm[cMdG{">
                                                                                                                                    <field name="VAR" id="Qc{Jo]quM_J722)2(/*i">tempLeistung600W</field>
                                                                                                                                  </block>
                                                                                                                                </value>
                                                                                                                                <value name="ARG3">
                                                                                                                                  <block type="math_number" id="`F,$`peh0`2grx8z0C{I">
                                                                                                                                    <field name="NUM">1</field>
                                                                                                                                  </block>
                                                                                                                                </value>
                                                                                                                                <value name="ARG4">
                                                                                                                                  <block type="math_number" id="F,vah,1EQo9C4e6~J:(n">
                                                                                                                                    <field name="NUM">1</field>
                                                                                                                                  </block>
                                                                                                                                </value>
                                                                                                                                <value name="ARG5">
                                                                                                                                  <block type="math_number" id=";,x`))M,iJvBaeR@3UPZ">
                                                                                                                                    <field name="NUM">0</field>
                                                                                                                                  </block>
                                                                                                                                </value>
                                                                                                                              </block>
                                                                                                                            </next>
                                                                                                                          </block>
                                                                                                                        </next>
                                                                                                                      </block>
                                                                                                                    </next>
                                                                                                                  </block>
                                                                                                                </next>
                                                                                                              </block>
                                                                                                            </next>
                                                                                                          </block>
                                                                                                        </next>
                                                                                                      </block>
                                                                                                    </next>
                                                                                                  </block>
                                                                                                </next>
                                                                                              </block>
                                                                                            </next>
                                                                                          </block>
                                                                                        </next>
                                                                                      </block>
                                                                                    </next>
                                                                                  </block>
                                                                                </statement>
                                                                              </block>
                                                                            </next>
                                                                          </block>
                                                                        </next>
                                                                      </block>
                                                                    </next>
                                                                  </block>
                                                                </next>
                                                              </block>
                                                            </next>
                                                          </block>
                                                        </next>
                                                      </block>
                                                    </next>
                                                  </block>
                                                </next>
                                              </block>
                                            </next>
                                          </block>
                                        </statement>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </xml>
                        

                        Die Version nutzt den Datenpunkt pvforecast.0.summary.JSONTable, da werden alle vorhandenen Anlagen in einem Datenpunkt bereit gestellt. Den sollte es auch geben wenn du nur eine Anlage hast. Bei Bedarf könnte man das Skript auf mehrere Anlagen erweitern.

                        Zum "Setup":

                        Da muss dein Zieldatenpunkt rein, also wohin geschrieben werden soll:
                        3d909e16-9830-482e-afc2-36a7501a59b3-image.png

                        Und hier musst du die .600W durch den Namen deiner Anlage ändern, also den Namen den du gewählt hast. Vermutlich .sonnenschein
                        64a0cf07-7bf8-45fc-b072-49dd549124e6-image.png

                        Und - wenn es läuft - könntest du in allen Variablen die eine 600W im Namen haben dieses durch Sonnenschein ersetzen.

                        Hallo noch mal:

                        Ich habe jetzt noch mal als Datenquelle auf die json Tabelle meiner Anlage im Blockly geändert, dann habe ich sofort wieder den Fehler mit dem Hinweis auf Replace Methode.

                        Hier der Inhalt aus json Tabelle Summery

                        [{"Time":"2022-10-30 08:07:00","Total":"0","Sonnenschein":"0"},{"Time":"2022-10-30 09:00:00","Total":"2.747","Sonnenschein":"2.747"},{"Time":"2022-10-30 10:00:00","Total":"4.139","Sonnenschein":"4.139"},{"Time":"2022-10-30 11:00:00","Total":"4.964","Sonnenschein":"4.964"},{"Time":"2022-10-30 12:00:00","Total":"5.168","Sonnenschein":"5.168"},{"Time":"2022-10-30 13:00:00","Total":"4.757","Sonnenschein":"4.757"},{"Time":"2022-10-30 14:00:00","Total":"4.102","Sonnenschein":"4.102"},{"Time":"2022-10-30 15:00:00","Total":"3.034","Sonnenschein":"3.034"},{"Time":"2022-10-30 16:00:00","Total":"1.458","Sonnenschein":"1.458"},{"Time":"2022-10-30 17:00:00","Total":"465","Sonnenschein":"465"},{"Time":"2022-10-30 17:54:00","Total":"0","Sonnenschein":"0"},{"Time":"2022-10-31 07:09:00","Total":"0","Sonnenschein":"0"},{"Time":"2022-10-31 08:00:00","Total":"181","Sonnenschein":"181"},{"Time":"2022-10-31 09:00:00","Total":"700","Sonnenschein":"700"},{"Time":"2022-10-31 10:00:00","Total":"1.321","Sonnenschein":"1.321"},{"Time":"2022-10-31 11:00:00","Total":"1.399","Sonnenschein":"1.399"},{"Time":"2022-10-31 12:00:00","Total":"1.269","Sonnenschein":"1.269"},{"Time":"2022-10-31 13:00:00","Total":"925","Sonnenschein":"925"},{"Time":"2022-10-31 14:00:00","Total":"508","Sonnenschein":"508"},{"Time":"2022-10-31 15:00:00","Total":"186","Sonnenschein":"186"},{"Time":"2022-10-31 16:00:00","Total":"35","Sonnenschein":"35"},{"Time":"2022-10-31 16:52:00","Total":"0","Sonnenschein":"0"}]
                        

                        und hier der Inhalt json Tabelle plant

                        [{"Time":"2022-10-30 08:07:00","Power":"0"},{"Time":"2022-10-30 09:00:00","Power":"2.747"},{"Time":"2022-10-30 10:00:00","Power":"4.139"},{"Time":"2022-10-30 11:00:00","Power":"4.964"},{"Time":"2022-10-30 12:00:00","Power":"5.168"},{"Time":"2022-10-30 13:00:00","Power":"4.757"},{"Time":"2022-10-30 14:00:00","Power":"4.102"},{"Time":"2022-10-30 15:00:00","Power":"3.034"},{"Time":"2022-10-30 16:00:00","Power":"1.458"},{"Time":"2022-10-30 17:00:00","Power":"465"},{"Time":"2022-10-30 17:54:00","Power":"0"},{"Time":"2022-10-31 07:09:00","Power":"0"},{"Time":"2022-10-31 08:00:00","Power":"181"},{"Time":"2022-10-31 09:00:00","Power":"700"},{"Time":"2022-10-31 10:00:00","Power":"1.321"},{"Time":"2022-10-31 11:00:00","Power":"1.399"},{"Time":"2022-10-31 12:00:00","Power":"1.269"},{"Time":"2022-10-31 13:00:00","Power":"925"},{"Time":"2022-10-31 14:00:00","Power":"508"},{"Time":"2022-10-31 15:00:00","Power":"186"},{"Time":"2022-10-31 16:00:00","Power":"35"},{"Time":"2022-10-31 16:52:00","Power":"0"}]
                        

                        Klar die Inhalte sind unterschiedlich, aber ich sehe kein Unterschied im json Aufbau warum die replace Methode nicht funktioniert!?

                        Der Pfad zu meinem Anlagen Objekt: pvforecast.1.plants.sonnenschein.JSONTable
                        Der Pfad zum Summery Objekt: pvforecast.1.summary.JSONTable

                        BananaJoe 1 Reply Last reply Reply Quote 0
                        • BananaJoe
                          BananaJoe Most Active @sonnenschein last edited by

                          @sonnenschein GROß und kleinschreibung passt? die .600 muss .Sonnenschein sein bei Block "setze tempLeistung600W"

                          sonnenschein 1 Reply Last reply Reply Quote 0
                          • sonnenschein
                            sonnenschein @BananaJoe last edited by sonnenschein

                            @bananajoe sagte in Test PV Forecast Adapter:

                            Sollte so passen:
                            TeilBlockly.png

                            ...und im PVForecastadpater habe ich die Leistung auf W statt kw gestellt. Im alten Blockly war da glaube ich die Umrechnung drin. Weil bei W statt KW kommt dann der Punkt in den Werten zum tragen. Oder, bin mir nicht ganz so sicher. Aber mit dem Summery scheint das ganze ja zu funktionieren.

                            BananaJoe 1 Reply Last reply Reply Quote 0
                            • BananaJoe
                              BananaJoe Most Active @sonnenschein last edited by

                              @sonnenschein ob kW oder W kannst du ja im Skript ergänzen - bei meiner kleine Anlage reichen halt W
                              Wenn es gut aussieht passt es 🙂

                              sonnenschein 1 Reply Last reply Reply Quote 0
                              • sonnenschein
                                sonnenschein @BananaJoe last edited by

                                @bananajoe
                                ja in die SQL DB werden keine Kommawerte geschrieben, deshalb KW Darstellung ungenügend.
                                Mit den Watt paßt das schon.

                                SQL.png

                                1 Reply Last reply Reply Quote 0
                                • sonnenschein
                                  sonnenschein last edited by sonnenschein

                                  @sonnenschein sagte in Test PV Forecast Adapter:

                                  @bananajoe
                                  ja in die SQL DB werden keine Kommawerte geschrieben, deshalb KW Darstellung ungenügend.
                                  Mit den Watt paßt das schon.

                                  SQL.png

                                  Habe im Blockly mal Debug Bausteine eingebaut.
                                  Demnach steht eine Kommazahl in json Tabelle aber die Variable Leistungswert holen tempLeistungSonnenschein ist ohne Kommastelle!
                                  2022_10_30 19_35_38-Window.png

                                  2022_10_30 19_36_40-Window.png

                                  Hast da jemand deine Erklärung?

                                  Warum die json Tabelle meiner Einzelanlage nicht funktioniert, scheint daran zu liegen das in der Tabelle kein Anlagenname steht! Also in Summery steht der "Sonnenschein" als Anlagenname , in der Tabelle unter plants aber nicht! da steht nur Power! Habe das im Blockly angepaßt und dann kommt auch kein REPLACE Fehler wie oben beschrieben.
                                  ac6a3edf-f4e2-4369-b8c8-593831da72da-image.png

                                  BananaJoe 1 Reply Last reply Reply Quote 0
                                  • BananaJoe
                                    BananaJoe Most Active @sonnenschein last edited by BananaJoe

                                    @sonnenschein weil SQL das mit Punkt statt Komma haben will?
                                    Man müsste noch einen Replace machen, sind ja 2 Beispiele dafür drin (Ich hatte eine extra JavaScript Funktion genommen weil ich die nativen Blockly Wege sehr umständlich fand, in JavaScript ist es ein Einzeiler)

                                    Ich hab es nicht richtig gelesen.

                                    sonnenschein 1 Reply Last reply Reply Quote 0
                                    • sonnenschein
                                      sonnenschein @BananaJoe last edited by sonnenschein

                                      @bananajoe
                                      Hallo BananaJoe!
                                      Ich habe meinen Adapter noch mal auf KW statt W umgestellt.

                                      Die Werte werden dann als Kommazahl im json dargestellt

                                      [{"Time":"2022-11-01 07:11:00","Power":"0,000"},{"Time":"2022-11-01 08:00:00","Power":"0,010"},{"Time":"2022-11-01 09:00:00","Power":"0,065"},{"Time":"2022-11-01 10:00:00","Power":"0,130"},{"Time":"2022-11-01 11:00:00","Power":"2,004"},{"Time":"2022-11-01 12:00:00","Power":"3,986"},{"Time":"2022-11-01 13:00:00","Power":"4,769"},{"Time":"2022-11-01 14:00:00","Power":"4,433"},{"Time":"2022-11-01 15:00:00","Power":"3,079"},{"Time":"2022-11-01 16:00:00","Power":"1,663"},{"Time":"2022-11-01 16:51:00","Power":"0,000"},{"Time":"2022-11-02 07:13:00","Power":"0,000"},{"Time":"2022-11-02 08:00:00","Power":"1,179"},{"Time":"2022-11-02 09:00:00","Power":"3,049"},{"Time":"2022-11-02 10:00:00","Power":"4,314"},{"Time":"2022-11-02 11:00:00","Power":"5,254"},{"Time":"2022-11-02 12:00:00","Power":"5,109"},{"Time":"2022-11-02 13:00:00","Power":"4,829"},{"Time":"2022-11-02 14:00:00","Power":"4,644"},{"Time":"2022-11-02 15:00:00","Power":"3,027"},{"Time":"2022-11-02 16:00:00","Power":"1,493"},{"Time":"2022-11-02 16:49:00","Power":"0,000"}]
                                      

                                      Ich verstehe aber Deine Blockly Zeile evtl. noch nicht richtig.

                                      2022_11_01 18_04_03-Window.png

                                      Die Funktion "Replace Dot" wirkt nicht, da es keinen Punkt gibt. OK
                                      Wenn ich zwischen "Replace DOT" und "nach Zahl" einen addierer mit 0.001 einbaue, bekomme ich auch eine Kommazahl in meiner Variablen angezeigt. Also scheint doch die Kommastelle oder das Komma aus dem json nicht gelesen zu werden. Oder bin ich auf dem Holzweg?
                                      Evtl hast Du hier noch eine Idee?
                                      Erst mal lasse ich den Adapter auf Watt stehen damit es erst mal läuft.

                                      2022_11_01 18_11_10-Window.png

                                      2022_11_01 18_11_39-Window.png

                                      BananaJoe haus-automatisierung 2 Replies Last reply Reply Quote 0
                                      • BananaJoe
                                        BananaJoe Most Active @sonnenschein last edited by

                                        @sonnenschein ReplaceDot macht ja aus dem Punkt ein "", also nichts .... ich meine das wegen 1.000 Zeichen notwendig.
                                        Kann bei dir also raus, schadet aber auch nicht.
                                        Wenn du aus dem , einen Punkt brauchts so schau dir die Funktion an:

                                        return x.replace(",",".");
                                        

                                        würde aus Kommas dann Punkte machen.

                                        1 Reply Last reply Reply Quote 0
                                        • haus-automatisierung
                                          haus-automatisierung Developer Most Active @sonnenschein last edited by haus-automatisierung

                                          @sonnenschein sagte in Test PV Forecast Adapter:

                                          Die Werte werden dann als Kommazahl im json dargestellt

                                          Das von Dir verwendete JSON (wahrscheinlich pvforecast.0.summary.JSONTable ?) ist gar nicht für die weitere Verarbeitung gedacht! Das ist zur Darstellung in einer (wie der Name vermuten lässt) VIS-Tabelle gedacht.

                                          Daher liegen in diesem JSON die Daten formatiert (als String) vor. Und zwar in dem Format, wie es in den Systemeinstellungen hinterlegt ist. So wird aus dem Punkt ein Komma usw. Es wäre totaler Quatsch, das jetzt wieder zurück zu formatieren um es in eine Datenbank zu schreiben!

                                          Bitte nutze den Datenpunkt pvforecast.0.summary.JSONData um damit weiter zu rechnen oder die Daten in eine Datenbank zu übertragen.

                                          @bananajoe sagte in Test PV Forecast Adapter:

                                          ReplaceDot macht ja aus dem Punkt ein "", also nichts .... ich meine das wegen 1.000 Zeichen notwendig.

                                          Wenn man mit den Daten aus JSONData arbeitet, dann muss man gar nix ersetzen. Kein Komma, keine Tausender-Trennzeichen.

                                          BananaJoe 1 Reply Last reply Reply Quote 0
                                          • BananaJoe
                                            BananaJoe Most Active @haus-automatisierung last edited by

                                            @haus-automatisierung sagte in Test PV Forecast Adapter:

                                            Das von Dir verwendete JSON (wahrscheinlich pvforecast.0.summary.JSONTable ?) ist gar nicht für die weitere Verarbeitung gedacht! Das ist zur Darstellung in einer (wie der Name vermuten lässt) VIS-Tabelle gedacht.

                                            Daher liegen in diesem JSON die Daten formatiert (als String) vor. Und zwar in dem Format, wie es in den Systemeinstellungen hinterlegt ist. So wird aus dem Punkt ein Komma usw. Es wäre totaler Quatsch, das jetzt wieder zurück zu formatieren um es in eine Datenbank zu schreiben!

                                            Bitte nutze den Datenpunkt pvforecast.0.summary.JSONData um damit weiter zu rechnen oder die Daten in eine Datenbank zu übertragen.

                                            Da hast du recht, das der Datenpunkt dafür nicht gedacht ist, ist mir bewusst und aus der Historie gewachsen.
                                            Ich schau mir den anderen Datenpunkt einmal an und baue mein Skript dann mal um.

                                            haus-automatisierung 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            648
                                            Online

                                            31.8k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            forecast photovoltaik
                                            113
                                            879
                                            217387
                                            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