NEWS
Daten aus Fronius Solarweb auslesen
-
Gen24 und Solarweb
Hallo zusammen.
Da der Gen24 ja über die lokale xml API nicht die Tages/Monats und Jahreswerte liefert und deren Berechnungen mit Sourceanalytics zu ungenau sind (ausserdem sind manche Werte nicht verfügbar), habe ich die Solarweb App mal abgehört und ein Script geschrieben, dass die aktuellen Tages/Monats/Jahres/Totalwerte der Verbräuche abfragt.Falls ihr eine Version vor dem 10. Jan 2021 nutzt, bitte noch mal den gesamten Solarweb Ordner löschen.
Ich musste zu viele Anpassungen vornehmen um alles in die Ordnerstruktur zu bekommen.Ihr müsst die Solarweb Zugangsdaten und die PV-ID (aus dem Browser ersichtlich) einfügen und das Blockly starten.
Totalwerte und Tages/Monats/Jahres-Werte des dem aktuellen Jahr werden sofort geladen.
Bereits vergangene Wochentage der aktuellen Woche können mit einem Button nachgeladen werden.Vergangene Werte werden entweder zum Ende der Periode (Tag/Woche/Monat/Jahr) geladen oder manuell über den Button.
Um 0:00 jeden Tag/Woche/Monat/Jahr werden die Vordaten zurückgesetzt und neu befüllt, sobald Solarweb Daten zur Verfügung stellt.
Die Daten im "Previous" Ordner werden auch um 0:00 der neuen Periode zurückgesetzt, aber erst um 2:00 mit den Daten aus Solarweb aktualisiert.
Manchmal liefert der Wechselrichter erst nach Mitternacht die letzten Tagesdaten an Solarweb und damit hier nicht - wie mit Sourceanalytix - beim Tagesübergang Fehler entstehen, werden diese Werte erst um 2:00 abgefragt.Außerdem kann man durch das manuelle Nachladen, sofort auf Vorjahresdaten zugreifen und muss nicht erst ein Jahr abwarten. Sollte das abfragen von alten Werten mal nicht funktionieren, bitte nach einer Minute nochmal testen.
Laut Solarweb-API müssten alle Vergangenheitswerte auch als Nicht-Premium-Kunde funktionieren.
Lediglich beim Forecast erhalten Basic-Nutzer einen Hinweis im Log, das kein Premium vorhanden ist.Änderungsprotokoll:
12. Jan 2021
Änderung: Umlaute korrigiert, Forecast Wertrundung korrigiert, Premium-Fehlermeldung als Info und nicht als Error
Einfach Blockly austauschen - Datenpunkte bleiben identisch, wenn ihr das Script vom 10.Jan 2021 genutzt habt-
März 2022:
Fehlerbehebung: Annual Month wurde monatlich zurückgesetzt, statt jährlich.
Änderung: Ohne Premium Account erfolgt beim Forecast nur noch eine Loginfo und keine Warnung mehr -
September 2023
Fehlerbehebung Forecast Today.
Fronius hat die API geändert und auch vergangene Tagesdaten dazuaddiert. Fehler behoben, in dem ich nur noch ab der aktuellen Uhrzeit abfrage. -
März 2024
Fehler beim Periodenwechsel behoben (Fehlermeldung im Log bzgl Booleanwert der mit Number beschrieben wird)
Optimierung der Forcastabfrage -
Mai 2024
Library von Request auf Axios umgestellt, damit der Javascript-Adapter keine Fehler mehr berichtet.
-
-
@strobelix sagte in FRONIUS Adapter Entwicklung eingestellt?:
Hat da jemand Interesse?
Hallo
Würde das auch mit dem Symo funktionieren?
-
@strobelix sagte in FRONIUS Adapter Entwicklung eingestellt?:
Als zweiter Schritt interessiert mich noch der erwartete Ertrag der nächsten 48h, das folgt dann noch.
Das wird aber vermutlich nur bei den Leuten funktionieren die auch das Premium Paket gebucht haben haben. Wahrscheinlich wirst du im SolarWeb über deine WR Seriennummer identifiziert, was dir dann den entsprechenden Funktionsumfang bereit stellt.
Aber Grundsätzlich - VIELEN Dank für deinen Einsatz - bitte weitermachen
-
@jb_sullivan ja Ertragsvorschau geht nur mit Premium, das ist klar
Identifiziert wird man über login email und passwort.
Wer kein Premium hat, bekommt bei Ertragsvorschau halt keine Werte -
@negalein das sind reine Werte aus Solarweb. Geht also sicher auch mit dem Symo, wenn du Solarweb nutzt
-
@strobelix sagte in FRONIUS Adapter Entwicklung eingestellt?:
das sind reine Werte aus Solarweb. Geht also sicher auch mit dem Symo, wenn du Solarweb nutzt
Ja, das hier
-
@negalein das sieht eher nach der Weboberfläche des Wechselrichters aus und nicht nach www.solarweb.com
-
@strobelix sagte in FRONIUS Adapter Entwicklung eingestellt?:
und nicht nach www.solarweb.com
ahh, das meintest du
-
Here we go.
Anbei das Blockly für die Abfrage der Solarweb Daten.
Wie gesagt, es werden Werte des aktuellen Tag / Monat / Jahr sowie Total abgefragt.
Ich hoffe das die Batteriewerte bei Nicht-Hybrid-WR ein 0 liefern, sonst gibt es Probleme bei der Zuordnung der Werte.Ihr müsst nur eure Solarweb Daten und die System-ID eingeben.
Die PV System-ID findet ihr im der Browseradresszeile, wenn ihr Solarweb mit dem PC öffnet.Hier das Blockly - einfach kopieren und in ein leeres Blockly-JS einfügen und die 3 Werte eintragen.
Nach dem Start wird ein Token generiert und alle 30min erneuert.
Tagesdaten werden im 5 min Takt abgefragt und um 0:00 zurückgesetzt bis neue Werte ab ca 2:00 kommen.
Monatsdaten werden stündlich geholt, Tages und Totaldaten um 0:05 Uhr.
Das Abfrageintervall solltet ihr auch nicht groß verändern, sonst fliegt das bei Fronius wohl recht bald auf, da man eigentlich API-Paktete kaufen soll. Hier verwenden wir aber den API-Key aus der App.Die Werte findet ihr unter Userdata Solarweb
Viel Spaß beim Testen!
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="|E4tM?b0_)MRsOFi{wkM">Mail</variable> <variable id="{k.cWFPG!5`U(5hkG1PL">Pass</variable> <variable id="yMTLb2yEf[B/b7g~MW%w">Solarweb PV ID</variable> <variable type="timeout" id="timeout">timeout</variable> </variables> <block type="variables_set" id="y9%S(TQa=L_j{}TPD~lW" x="-38" y="-488"> <field name="VAR" id="|E4tM?b0_)MRsOFi{wkM">Mail</field> <value name="VALUE"> <block type="text" id="1q;T1^B6YEm2fQjLbT(Z"> <field name="TEXT">Solarweb mail</field> </block> </value> <next> <block type="variables_set" id="avgU2}f}]BGkZCN68viR"> <field name="VAR" id="{k.cWFPG!5`U(5hkG1PL">Pass</field> <value name="VALUE"> <block type="text" id="izwYU~U6}W5B3PQ,bw.j"> <field name="TEXT">Solarweb password</field> </block> </value> <next> <block type="variables_set" id="olYna.9IIpz6Agx?;D-J"> <field name="VAR" id="yMTLb2yEf[B/b7g~MW%w">Solarweb PV ID</field> <value name="VALUE"> <block type="text" id="^N~`8nj!FweMs{zSShq-"> <field name="TEXT">PV ID</field> </block> </value> <next> <block type="procedures_callnoreturn" id="N2gn!P$@%EJ*q{,dlYcu"> <mutation name="Main"></mutation> </block> </next> </block> </next> </block> </next> </block> <block type="procedures_defcustomnoreturn" id="7L8`}amFwFO0ox1,c||o" x="-38" y="-363"> <mutation statements="false"></mutation> <field name="NAME">Login</field> <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkYXRhID0gSlNPTi5zdHJpbmdpZnkoe3VzZXJJZDogTWFpbCwgcGFzc3dvcmQ6IFBhc3N9KTsKIAogdmFyIG9wdGlvbnMgPSB7CiAgdXJsOiAnaHR0cHM6Ly9zd3FhcGkuc29sYXJ3ZWIuY29tL2lhbS9qd3QnLAogIGhlYWRlcnM6IHsKICAnQWNjZXNzS2V5SWQnOidGS0lBRkZCM0QwOTg2Q0YyNENCREJGNTgwNzU1QTlGMzg3NjknLAogICdBY2Nlc3NLZXlWYWx1ZSc6ICdhYjU1NjNmYi1mZjBhLTQzZDAtYTUyNi1jMDdhNGQwYjAzYWEnLAogICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicKICB9LAogIGJvZHk6IGRhdGEsCiAgCn07CiAKZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlLCBib2R5KSB7CnZhciByZXN1bHQgPSBKU09OLnBhcnNlKGJvZHkpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlRva2VuIi8qVG9rZW4qLywgKCcnICsgcmVzdWx0Lmp3dFRva2VuKSwgdHJ1ZSkKfQogIApyZXF1ZXN0LnBvc3Qob3B0aW9ucywgY2FsbGJhY2spOw==</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_defcustomnoreturn" id="bAMwR5:%H]d@qKJ(SK}I" x="-38" y="-338"> <mutation statements="false"></mutation> <field name="NAME">Datenpunkte erstellen</field> <field name="SCRIPT">Y3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub2tlbiIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJUb2tlbiIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuVG9rZW4gZXJzdGVsbGVuIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIk5ldWVuIFRva2VuIGVyc3RlbGxlbiIsInJvbGUiOiAiYnV0dG9uIiwidHlwZSI6ICJib29sZWFuIiwicmVhZCI6IHRydWUsIndyaXRlIjogdHJ1ZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjpmYWxzZX0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwoKCmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuRGF5LkVuZXJneS5FbmVyZ3lCYXR0Q2hhcmdlIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkluIGRpZSBCYXR0ZXJpZSIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLkRheS5FbmVyZ3kuRW5lcmd5QmF0dENoYXJnZUdyaWQiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiQmF0dGVyaWUgRXJoYWx0dW5nc2xhZHVuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLkRheS5FbmVyZ3kuRW5lcmd5QmF0dERpc2NoYXJnZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJBdXMgZGVyIEJhdHRlcmllIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJrV2gifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuRGF5LkVuZXJneS5FbmVyZ3lCYXR0RGlzY2hhcmdlR3JpZCIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJWb24gZGVyIEJhdHRlcmllIGlucyBOZXR6Iiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJrV2gifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuRGF5LkVuZXJneS5FbmVyZ3lDb25zdW1wdGlvblRvdGFsIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkdlc2FtdHZlcmJyYXVjaCIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLkRheS5FbmVyZ3kuRW5lcmd5RGlyZWN0Q29uc3VtcHRpb24iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRGlyZWt0dmVyYnJhdWNoIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJrV2gifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuRGF5LkVuZXJneS5FbmVyZ3lGZWVkSW4iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiTmV0emVpbnNwZWlzdW5nIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJrV2gifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuRGF5LkVuZXJneS5FbmVyZ3lPdXRwdXQiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiUHJvZHVrdGlvbiBvaG5lIFNtYXJ0bWV0ZXIiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5EYXkuRW5lcmd5LkVuZXJneVByb2R1Y3Rpb25Ub3RhbCIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJQcm9kdWt0aW9uIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJrV2gifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuRGF5LkVuZXJneS5FbmVyZ3lQdXJjaGFzZWQiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiTmV0emJlenVnIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJrV2gifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuRGF5LkVuZXJneS5FbmVyZ3lTZWxmQ29uc3VtcHRpb24iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRWlnZW5lcnpldWd1bmciLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5EYXkuRW5lcmd5LkVuZXJneVNlbGZDb25zdW1wdGlvblRvdGFsIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkVpZ2VudmVyYnJhdWNoIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJrV2gifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuRGF5LkVuZXJneS5PaG1waWxvdEVuZXJneSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJadSBPaG1waWxvdCIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLkRheS5TYXZpbmcuRWFybmluZ3MiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRXJ0cmFnIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJFVVIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuRGF5LlNhdmluZy5Qcm9maXRzIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkdld2lubiIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAiRVVSIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLkRheS5TYXZpbmcuU2F2aW5ncyIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJFaW5zcGFydW5nIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJFVVIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuRGF5LlNhdmluZy5TYXZpbmdzQ08yIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkNPMiBFaW5zcGFydW5nIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJrZyJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5EYXkuU2F2aW5nLlNhdmluZ3NUcmF2ZWxDYXIiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRWluc3BhcnVuZyBQS1cga20iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImttIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLkRheS5TYXZpbmcuU2F2aW5nc1RyYXZlbFBsYW5lIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkVpbnNwYXJ1bmcgRmx1ZyBrbSIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia20ifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuRGF5LlNhdmluZy5TYXZpbmdzVHJlZXMiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiR2VzY2jDvHR6dGUgQsOkdW1lIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJCw6R1bWUifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CgoKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5FbmVyZ3kuRW5lcmd5QmF0dENoYXJnZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJJbiBkaWUgQmF0dGVyaWUiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5FbmVyZ3kuRW5lcmd5QmF0dENoYXJnZUdyaWQiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiQmF0dGVyaWUgRXJoYWx0dW5nc2xhZHVuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLk1vbnRoLkVuZXJneS5FbmVyZ3lCYXR0RGlzY2hhcmdlIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkF1cyBkZXIgQmF0dGVyaWUiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5FbmVyZ3kuRW5lcmd5QmF0dERpc2NoYXJnZUdyaWQiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiVm9uIGRlciBCYXR0ZXJpZSBpbnMgTmV0eiIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLk1vbnRoLkVuZXJneS5FbmVyZ3lDb25zdW1wdGlvblRvdGFsIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkdlc2FtdHZlcmJyYXVjaCIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLk1vbnRoLkVuZXJneS5FbmVyZ3lEaXJlY3RDb25zdW1wdGlvbiIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJEaXJla3R2ZXJicmF1Y2giLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5FbmVyZ3kuRW5lcmd5RmVlZEluIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIk5ldHplaW5zcGVpc3VuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLk1vbnRoLkVuZXJneS5FbmVyZ3lPdXRwdXQiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiUHJvZHVrdGlvbiBvaG5lIFNtYXJ0bWV0ZXIiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5FbmVyZ3kuRW5lcmd5UHJvZHVjdGlvblRvdGFsIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlByb2R1a3Rpb24iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5FbmVyZ3kuRW5lcmd5UHVyY2hhc2VkIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIk5ldHpiZXp1ZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLk1vbnRoLkVuZXJneS5FbmVyZ3lTZWxmQ29uc3VtcHRpb24iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRWlnZW5lcnpldWd1bmciLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5FbmVyZ3kuRW5lcmd5U2VsZkNvbnN1bXB0aW9uVG90YWwiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRWlnZW52ZXJicmF1Y2giLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5FbmVyZ3kuT2htcGlsb3RFbmVyZ3kiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiWnUgT2htcGlsb3QiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5TYXZpbmcuRWFybmluZ3MiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRXJ0cmFnIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJFVVIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuTW9udGguU2F2aW5nLlByb2ZpdHMiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiR2V3aW5uIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJFVVIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuTW9udGguU2F2aW5nLlNhdmluZ3MiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRWluc3BhcnVuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAiRVVSIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLk1vbnRoLlNhdmluZy5TYXZpbmdzQ08yIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkNPMiBFaW5zcGFydW5nIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJrZyJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5TYXZpbmcuU2F2aW5nc1RyYXZlbENhciIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJFaW5zcGFydW5nIFBLVyBrbSIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia20ifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuTW9udGguU2F2aW5nLlNhdmluZ3NUcmF2ZWxQbGFuZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJFaW5zcGFydW5nIEZsdWcga20iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImttIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLk1vbnRoLlNhdmluZy5TYXZpbmdzVHJlZXMiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiR2VzY2jDvHR6dGUgQsOkdW1lIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJCw6R1bWUifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgCiAgCiAgCmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuWWVhci5FbmVyZ3kuRW5lcmd5QmF0dENoYXJnZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJJbiBkaWUgQmF0dGVyaWUiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5ZZWFyLkVuZXJneS5FbmVyZ3lCYXR0Q2hhcmdlR3JpZCIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJCYXR0ZXJpZSBFcmhhbHR1bmdzbGFkdW5nIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJrV2gifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuWWVhci5FbmVyZ3kuRW5lcmd5QmF0dERpc2NoYXJnZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJBdXMgZGVyIEJhdHRlcmllIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJrV2gifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuWWVhci5FbmVyZ3kuRW5lcmd5QmF0dERpc2NoYXJnZUdyaWQiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiVm9uIGRlciBCYXR0ZXJpZSBpbnMgTmV0eiIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlllYXIuRW5lcmd5LkVuZXJneUNvbnN1bXB0aW9uVG90YWwiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiR2VzYW10dmVyYnJhdWNoIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJrV2gifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuWWVhci5FbmVyZ3kuRW5lcmd5RGlyZWN0Q29uc3VtcHRpb24iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRGlyZWt0dmVyYnJhdWNoIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJrV2gifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuWWVhci5FbmVyZ3kuRW5lcmd5RmVlZEluIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIk5ldHplaW5zcGVpc3VuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlllYXIuRW5lcmd5LkVuZXJneU91dHB1dCIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJQcm9kdWt0aW9uIG9obmUgU21hcnRtZXRlciIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlllYXIuRW5lcmd5LkVuZXJneVByb2R1Y3Rpb25Ub3RhbCIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJQcm9kdWt0aW9uIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJrV2gifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuWWVhci5FbmVyZ3kuRW5lcmd5UHVyY2hhc2VkIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIk5ldHpiZXp1ZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlllYXIuRW5lcmd5LkVuZXJneVNlbGZDb25zdW1wdGlvbiIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJFaWdlbmVyemV1Z3VuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlllYXIuRW5lcmd5LkVuZXJneVNlbGZDb25zdW1wdGlvblRvdGFsIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkVpZ2VudmVyYnJhdWNoIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJrV2gifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuWWVhci5FbmVyZ3kuT2htcGlsb3RFbmVyZ3kiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiWnUgT2htcGlsb3QiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5ZZWFyLlNhdmluZy5FYXJuaW5ncyIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJFcnRyYWciLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogIkVVUiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5ZZWFyLlNhdmluZy5Qcm9maXRzIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkdld2lubiIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAiRVVSIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlllYXIuU2F2aW5nLlNhdmluZ3MiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRWluc3BhcnVuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAiRVVSIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlllYXIuU2F2aW5nLlNhdmluZ3NDTzIiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiQ08yIEVpbnNwYXJ1bmciLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtnIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlllYXIuU2F2aW5nLlNhdmluZ3NUcmF2ZWxDYXIiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRWluc3BhcnVuZyBQS1cga20iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImttIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlllYXIuU2F2aW5nLlNhdmluZ3NUcmF2ZWxQbGFuZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJFaW5zcGFydW5nIEZsdWcga20iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImttIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlllYXIuU2F2aW5nLlNhdmluZ3NUcmVlcyIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJHZXNjaMO8dHp0ZSBCw6R1bWUiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogIkLDpHVtZSJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICAKICAKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub3RhbC5FbmVyZ3kuRW5lcmd5QmF0dENoYXJnZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJJbiBkaWUgQmF0dGVyaWUiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub3RhbC5FbmVyZ3kuRW5lcmd5QmF0dENoYXJnZUdyaWQiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiQmF0dGVyaWUgRXJoYWx0dW5nc2xhZHVuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlRvdGFsLkVuZXJneS5FbmVyZ3lCYXR0RGlzY2hhcmdlIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkF1cyBkZXIgQmF0dGVyaWUiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub3RhbC5FbmVyZ3kuRW5lcmd5QmF0dERpc2NoYXJnZUdyaWQiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiVm9uIGRlciBCYXR0ZXJpZSBpbnMgTmV0eiIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlRvdGFsLkVuZXJneS5FbmVyZ3lDb25zdW1wdGlvblRvdGFsIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkdlc2FtdHZlcmJyYXVjaCIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlRvdGFsLkVuZXJneS5FbmVyZ3lEaXJlY3RDb25zdW1wdGlvbiIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJEaXJla3R2ZXJicmF1Y2giLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub3RhbC5FbmVyZ3kuRW5lcmd5RmVlZEluIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIk5ldHplaW5zcGVpc3VuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlRvdGFsLkVuZXJneS5FbmVyZ3lPdXRwdXQiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiUHJvZHVrdGlvbiBvaG5lIFNtYXJ0bWV0ZXIiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub3RhbC5FbmVyZ3kuRW5lcmd5UHJvZHVjdGlvblRvdGFsIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlByb2R1a3Rpb24iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub3RhbC5FbmVyZ3kuRW5lcmd5UHVyY2hhc2VkIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIk5ldHpiZXp1ZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia1doIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlRvdGFsLkVuZXJneS5FbmVyZ3lTZWxmQ29uc3VtcHRpb24iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRWlnZW5lcnpldWd1bmciLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub3RhbC5FbmVyZ3kuRW5lcmd5U2VsZkNvbnN1bXB0aW9uVG90YWwiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRWlnZW52ZXJicmF1Y2giLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub3RhbC5FbmVyZ3kuT2htcGlsb3RFbmVyZ3kiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiWnUgT2htcGlsb3QiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImtXaCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub3RhbC5TYXZpbmcuRWFybmluZ3MiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRXJ0cmFnIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJFVVIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuVG90YWwuU2F2aW5nLlByb2ZpdHMiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiR2V3aW5uIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJFVVIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuVG90YWwuU2F2aW5nLlNhdmluZ3MiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRWluc3BhcnVuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAiRVVSIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlRvdGFsLlNhdmluZy5TYXZpbmdzQ08yIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkNPMiBFaW5zcGFydW5nIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJrZyJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub3RhbC5TYXZpbmcuU2F2aW5nc1RyYXZlbENhciIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJFaW5zcGFydW5nIFBLVyBrbSIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOjAsInVuaXQiOiAia20ifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuVG90YWwuU2F2aW5nLlNhdmluZ3NUcmF2ZWxQbGFuZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJFaW5zcGFydW5nIEZsdWcga20iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjowLCJ1bml0IjogImttIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlRvdGFsLlNhdmluZy5TYXZpbmdzVHJlZXMiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiR2VzY2jDvHR6dGUgQsOkdW1lIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6MCwidW5pdCI6ICJCw6R1bWUifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_defcustomnoreturn" id="C|Hc:`b-c/c[Tgs1y:IM" x="-37" y="-313"> <mutation statements="false"></mutation> <field name="NAME">Tagesdaten</field> <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CgogCiB2YXIgb3B0aW9ucyA9IHsKICB1cmw6ICdodHRwczovL3N3cWFwaS5zb2xhcndlYi5jb20vcHZzeXN0ZW1zLycrU29sYXJ3ZWJfUFZfSUQrJy9hZ2dyZGF0YT9mcm9tPScrKGZvcm1hdERhdGUobmV3IERhdGUoKSwgIkpKSkotTU0tVFQiKSkrJyZkdXJhdGlvbj0xJywKICBoZWFkZXJzOiB7CiAgJ0FjY2Vzc0tleUlkJzonRktJQUZGQjNEMDk4NkNGMjRDQkRCRjU4MDc1NUE5RjM4NzY5JywKICAnQWNjZXNzS2V5VmFsdWUnOiAnYWI1NTYzZmItZmYwYS00M2QwLWE1MjYtYzA3YTRkMGIwM2FhJywKICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nCiAgfSwKICAnYXV0aCc6IHsKICAgICdiZWFyZXInOiAoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub2tlbiIpLnZhbCkKICB9Cn07CgpmdW5jdGlvbiBjYWxsYmFjayhlcnJvciwgcmVzcG9uc2UsIGJvZHkpIHsKdmFyIHJlc3VsdCA9IEpTT04ucGFyc2UoYm9keSk7CmlmIChyZXNwb25zZS5zdGF0dXNDb2RlID09MjAwKSB7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuRGF5LkVuZXJneS5FbmVyZ3lCYXR0RGlzY2hhcmdlIiwgTWF0aC5yb3VuZChyZXN1bHQuZGF0YVswXS5jaGFubmVsc1swXS52YWx1ZSAvIDEwMDAqMTAwKS8xMDAsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLkRheS5FbmVyZ3kuRW5lcmd5QmF0dERpc2NoYXJnZUdyaWQiLCBNYXRoLnJvdW5kKHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzFdLnZhbHVlIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuRGF5LkVuZXJneS5FbmVyZ3lCYXR0Q2hhcmdlIiwgTWF0aC5yb3VuZChyZXN1bHQuZGF0YVswXS5jaGFubmVsc1syXS52YWx1ZSAvIDEwMDAqMTAwKS8xMDAsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLkRheS5FbmVyZ3kuRW5lcmd5U2VsZkNvbnN1bXB0aW9uIiwgTWF0aC5yb3VuZCgocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMF0udmFsdWUgKyByZXN1bHQuZGF0YVswXS5jaGFubmVsc1szXS52YWx1ZSkgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5EYXkuRW5lcmd5LkVuZXJneUZlZWRJbiIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbNF0udmFsdWUgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5EYXkuRW5lcmd5Lk9obXBpbG90RW5lcmd5IiwgTWF0aC5yb3VuZChyZXN1bHQuZGF0YVswXS5jaGFubmVsc1s1XS52YWx1ZSAvIDEwMDAqMTAwKS8xMDAsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLkRheS5FbmVyZ3kuRW5lcmd5QmF0dENoYXJnZUdyaWQiLCBNYXRoLnJvdW5kKHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzZdLnZhbHVlIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuRGF5LkVuZXJneS5FbmVyZ3lQdXJjaGFzZWQiLCBNYXRoLnJvdW5kKHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzddLnZhbHVlIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuRGF5LkVuZXJneS5FbmVyZ3lPdXRwdXQiLCBNYXRoLnJvdW5kKHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzhdLnZhbHVlIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuRGF5LkVuZXJneS5FbmVyZ3lEaXJlY3RDb25zdW1wdGlvbiIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbOV0udmFsdWUgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5EYXkuRW5lcmd5LkVuZXJneVByb2R1Y3Rpb25Ub3RhbCIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMTBdLnZhbHVlIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuRGF5LkVuZXJneS5FbmVyZ3lTZWxmQ29uc3VtcHRpb25Ub3RhbCIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMTFdLnZhbHVlIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuRGF5LkVuZXJneS5FbmVyZ3lDb25zdW1wdGlvblRvdGFsIiwgTWF0aC5yb3VuZChyZXN1bHQuZGF0YVswXS5jaGFubmVsc1sxMl0udmFsdWUgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5EYXkuU2F2aW5nLlNhdmluZ3NDTzIiLCByZXN1bHQuZGF0YVswXS5jaGFubmVsc1sxM10udmFsdWUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLkRheS5TYXZpbmcuU2F2aW5nc1RyZWVzIiwgcmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMTRdLnZhbHVlLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5EYXkuU2F2aW5nLlNhdmluZ3NUcmF2ZWxDYXIiLCByZXN1bHQuZGF0YVswXS5jaGFubmVsc1sxNV0udmFsdWUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLkRheS5TYXZpbmcuU2F2aW5nc1RyYXZlbFBsYW5lIiwgcmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMTZdLnZhbHVlLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5EYXkuU2F2aW5nLlByb2ZpdHMiLCByZXN1bHQuZGF0YVswXS5jaGFubmVsc1sxN10udmFsdWUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLkRheS5TYXZpbmcuRWFybmluZ3MiLCByZXN1bHQuZGF0YVswXS5jaGFubmVsc1sxOF0udmFsdWUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLkRheS5TYXZpbmcuU2F2aW5ncyIsIHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzE5XS52YWx1ZSwgdHJ1ZSkKfQplbHNlewogICAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5OZXVlclRva2VuIi8qTmV1ZXJUb2tlbiovLCB0cnVlKTsKfX0KcmVxdWVzdC5nZXQob3B0aW9ucywgY2FsbGJhY2spOw==</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_defcustomnoreturn" id="7/as2:pgrDERe:#9|@v%" x="-37" y="-288"> <mutation statements="false"></mutation> <field name="NAME">Monatsdaten</field> <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CgogCiB2YXIgb3B0aW9ucyA9IHsKICB1cmw6ICdodHRwczovL3N3cWFwaS5zb2xhcndlYi5jb20vcHZzeXN0ZW1zLycrU29sYXJ3ZWJfUFZfSUQrJy9hZ2dyZGF0YT9mcm9tPScrKGZvcm1hdERhdGUobmV3IERhdGUoKSwgIkpKSkotTU0iKSkrJyZkdXJhdGlvbj0xJywKICBoZWFkZXJzOiB7CiAgJ0FjY2Vzc0tleUlkJzonRktJQUZGQjNEMDk4NkNGMjRDQkRCRjU4MDc1NUE5RjM4NzY5JywKICAnQWNjZXNzS2V5VmFsdWUnOiAnYWI1NTYzZmItZmYwYS00M2QwLWE1MjYtYzA3YTRkMGIwM2FhJywKICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nCiAgfSwKICAnYXV0aCc6IHsKICAgICdiZWFyZXInOiAoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub2tlbiIpLnZhbCkKICB9Cn07CiAKZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlLCBib2R5KSB7CnZhciByZXN1bHQgPSBKU09OLnBhcnNlKGJvZHkpOwppZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA9PTIwMCkgewpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLk1vbnRoLkVuZXJneS5FbmVyZ3lCYXR0RGlzY2hhcmdlIiwgTWF0aC5yb3VuZChyZXN1bHQuZGF0YVswXS5jaGFubmVsc1swXS52YWx1ZSAvIDEwMDAqMTAwKS8xMDAsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLk1vbnRoLkVuZXJneS5FbmVyZ3lCYXR0RGlzY2hhcmdlR3JpZCIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMV0udmFsdWUgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5FbmVyZ3kuRW5lcmd5QmF0dENoYXJnZSIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMl0udmFsdWUgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5FbmVyZ3kuRW5lcmd5U2VsZkNvbnN1bXB0aW9uIiwgTWF0aC5yb3VuZCgocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMF0udmFsdWUgKyByZXN1bHQuZGF0YVswXS5jaGFubmVsc1szXS52YWx1ZSkgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5FbmVyZ3kuRW5lcmd5RmVlZEluIiwgTWF0aC5yb3VuZChyZXN1bHQuZGF0YVswXS5jaGFubmVsc1s0XS52YWx1ZSAvIDEwMDAqMTAwKS8xMDAsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLk1vbnRoLkVuZXJneS5PaG1waWxvdEVuZXJneSIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbNV0udmFsdWUgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5FbmVyZ3kuRW5lcmd5QmF0dENoYXJnZUdyaWQiLCBNYXRoLnJvdW5kKHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzZdLnZhbHVlIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuTW9udGguRW5lcmd5LkVuZXJneVB1cmNoYXNlZCIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbN10udmFsdWUgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5FbmVyZ3kuRW5lcmd5T3V0cHV0IiwgTWF0aC5yb3VuZChyZXN1bHQuZGF0YVswXS5jaGFubmVsc1s4XS52YWx1ZSAvIDEwMDAqMTAwKS8xMDAsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLk1vbnRoLkVuZXJneS5FbmVyZ3lEaXJlY3RDb25zdW1wdGlvbiIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbOV0udmFsdWUgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5FbmVyZ3kuRW5lcmd5UHJvZHVjdGlvblRvdGFsIiwgTWF0aC5yb3VuZChyZXN1bHQuZGF0YVswXS5jaGFubmVsc1sxMF0udmFsdWUgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5FbmVyZ3kuRW5lcmd5U2VsZkNvbnN1bXB0aW9uVG90YWwiLCBNYXRoLnJvdW5kKHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzExXS52YWx1ZSAvIDEwMDAqMTAwKS8xMDAsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLk1vbnRoLkVuZXJneS5FbmVyZ3lDb25zdW1wdGlvblRvdGFsIiwgTWF0aC5yb3VuZChyZXN1bHQuZGF0YVswXS5jaGFubmVsc1sxMl0udmFsdWUgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5TYXZpbmcuU2F2aW5nc0NPMiIsIHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzEzXS52YWx1ZSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuTW9udGguU2F2aW5nLlNhdmluZ3NUcmVlcyIsIHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzE0XS52YWx1ZSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuTW9udGguU2F2aW5nLlNhdmluZ3NUcmF2ZWxDYXIiLCByZXN1bHQuZGF0YVswXS5jaGFubmVsc1sxNV0udmFsdWUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLk1vbnRoLlNhdmluZy5TYXZpbmdzVHJhdmVsUGxhbmUiLCByZXN1bHQuZGF0YVswXS5jaGFubmVsc1sxNl0udmFsdWUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLk1vbnRoLlNhdmluZy5Qcm9maXRzIiwgcmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMTddLnZhbHVlLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Nb250aC5TYXZpbmcuRWFybmluZ3MiLCByZXN1bHQuZGF0YVswXS5jaGFubmVsc1sxOF0udmFsdWUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLk1vbnRoLlNhdmluZy5TYXZpbmdzIiwgcmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMTldLnZhbHVlLCB0cnVlKQp9CmVsc2V7CiAgICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLk5ldWVyVG9rZW4iLypOZXVlclRva2VuKi8sIHRydWUpOwp9fQpyZXF1ZXN0LmdldChvcHRpb25zLCBjYWxsYmFjayk7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_defcustomnoreturn" id="us0y}-Z{2OAoQ-3F+:(S" x="-37" y="-263"> <mutation statements="false"></mutation> <field name="NAME">Jahresdaten</field> <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CgogCiB2YXIgb3B0aW9ucyA9IHsKICB1cmw6ICdodHRwczovL3N3cWFwaS5zb2xhcndlYi5jb20vcHZzeXN0ZW1zLycrU29sYXJ3ZWJfUFZfSUQrJy9hZ2dyZGF0YT9mcm9tPScrKGZvcm1hdERhdGUobmV3IERhdGUoKSwgIkpKSkoiKSkrJyZkdXJhdGlvbj0xJywKICBoZWFkZXJzOiB7CiAgJ0FjY2Vzc0tleUlkJzonRktJQUZGQjNEMDk4NkNGMjRDQkRCRjU4MDc1NUE5RjM4NzY5JywKICAnQWNjZXNzS2V5VmFsdWUnOiAnYWI1NTYzZmItZmYwYS00M2QwLWE1MjYtYzA3YTRkMGIwM2FhJywKICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nCiAgfSwKICAnYXV0aCc6IHsKICAgICdiZWFyZXInOiAoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub2tlbiIpLnZhbCkKICB9Cn07CgpmdW5jdGlvbiBjYWxsYmFjayhlcnJvciwgcmVzcG9uc2UsIGJvZHkpIHsKdmFyIHJlc3VsdCA9IEpTT04ucGFyc2UoYm9keSk7CmlmIChyZXNwb25zZS5zdGF0dXNDb2RlID09MjAwKSB7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuWWVhci5FbmVyZ3kuRW5lcmd5QmF0dERpc2NoYXJnZSIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMF0udmFsdWUgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5ZZWFyLkVuZXJneS5FbmVyZ3lCYXR0RGlzY2hhcmdlR3JpZCIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMV0udmFsdWUgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5ZZWFyLkVuZXJneS5FbmVyZ3lCYXR0Q2hhcmdlIiwgTWF0aC5yb3VuZChyZXN1bHQuZGF0YVswXS5jaGFubmVsc1syXS52YWx1ZSAvIDEwMDAqMTAwKS8xMDAsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlllYXIuRW5lcmd5LkVuZXJneVNlbGZDb25zdW1wdGlvbiIsIE1hdGgucm91bmQoKHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzBdLnZhbHVlICsgcmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbM10udmFsdWUpIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuWWVhci5FbmVyZ3kuRW5lcmd5RmVlZEluIiwgTWF0aC5yb3VuZChyZXN1bHQuZGF0YVswXS5jaGFubmVsc1s0XS52YWx1ZSAvIDEwMDAqMTAwKS8xMDAsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlllYXIuRW5lcmd5Lk9obXBpbG90RW5lcmd5IiwgTWF0aC5yb3VuZChyZXN1bHQuZGF0YVswXS5jaGFubmVsc1s1XS52YWx1ZSAvIDEwMDAqMTAwKS8xMDAsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlllYXIuRW5lcmd5LkVuZXJneUJhdHRDaGFyZ2VHcmlkIiwgTWF0aC5yb3VuZChyZXN1bHQuZGF0YVswXS5jaGFubmVsc1s2XS52YWx1ZSAvIDEwMDAqMTAwKS8xMDAsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlllYXIuRW5lcmd5LkVuZXJneVB1cmNoYXNlZCIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbN10udmFsdWUgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5ZZWFyLkVuZXJneS5FbmVyZ3lPdXRwdXQiLCBNYXRoLnJvdW5kKHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzhdLnZhbHVlIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuWWVhci5FbmVyZ3kuRW5lcmd5RGlyZWN0Q29uc3VtcHRpb24iLCBNYXRoLnJvdW5kKHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzldLnZhbHVlIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuWWVhci5FbmVyZ3kuRW5lcmd5UHJvZHVjdGlvblRvdGFsIiwgTWF0aC5yb3VuZChyZXN1bHQuZGF0YVswXS5jaGFubmVsc1sxMF0udmFsdWUgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5ZZWFyLkVuZXJneS5FbmVyZ3lTZWxmQ29uc3VtcHRpb25Ub3RhbCIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMTFdLnZhbHVlIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuWWVhci5FbmVyZ3kuRW5lcmd5Q29uc3VtcHRpb25Ub3RhbCIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMTJdLnZhbHVlIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuWWVhci5TYXZpbmcuU2F2aW5nc0NPMiIsIHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzEzXS52YWx1ZSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuWWVhci5TYXZpbmcuU2F2aW5nc1RyZWVzIiwgcmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMTRdLnZhbHVlLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5ZZWFyLlNhdmluZy5TYXZpbmdzVHJhdmVsQ2FyIiwgcmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMTVdLnZhbHVlLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5ZZWFyLlNhdmluZy5TYXZpbmdzVHJhdmVsUGxhbmUiLCByZXN1bHQuZGF0YVswXS5jaGFubmVsc1sxNl0udmFsdWUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlllYXIuU2F2aW5nLlByb2ZpdHMiLCByZXN1bHQuZGF0YVswXS5jaGFubmVsc1sxN10udmFsdWUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlllYXIuU2F2aW5nLkVhcm5pbmdzIiwgcmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMThdLnZhbHVlLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5ZZWFyLlNhdmluZy5TYXZpbmdzIiwgcmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMTldLnZhbHVlLCB0cnVlKQp9CmVsc2V7CiAgICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLk5ldWVyVG9rZW4iLypOZXVlclRva2VuKi8sIHRydWUpOwp9fQpyZXF1ZXN0LmdldChvcHRpb25zLCBjYWxsYmFjayk7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_defcustomnoreturn" id="eY2)6)q$`_|?REmXOi,~" x="-37" y="-237"> <mutation statements="false"></mutation> <field name="NAME">Total</field> <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CgogCiB2YXIgb3B0aW9ucyA9IHsKICB1cmw6ICdodHRwczovL3N3cWFwaS5zb2xhcndlYi5jb20vcHZzeXN0ZW1zLycrU29sYXJ3ZWJfUFZfSUQrJy9hZ2dyZGF0YT9wZXJpb2Q9dG90YWwnLAogIGhlYWRlcnM6IHsKICAnQWNjZXNzS2V5SWQnOidGS0lBRkZCM0QwOTg2Q0YyNENCREJGNTgwNzU1QTlGMzg3NjknLAogICdBY2Nlc3NLZXlWYWx1ZSc6ICdhYjU1NjNmYi1mZjBhLTQzZDAtYTUyNi1jMDdhNGQwYjAzYWEnLAogICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicKICB9LAogICdhdXRoJzogewogICAgJ2JlYXJlcic6IChnZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlRva2VuIikudmFsKQogIH0KfTsKCmZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCByZXNwb25zZSwgYm9keSkgewp2YXIgcmVzdWx0ID0gSlNPTi5wYXJzZShib2R5KTsKaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPT0yMDApIHsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub3RhbC5FbmVyZ3kuRW5lcmd5QmF0dERpc2NoYXJnZSIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMF0udmFsdWUgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub3RhbC5FbmVyZ3kuRW5lcmd5QmF0dERpc2NoYXJnZUdyaWQiLCBNYXRoLnJvdW5kKHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzFdLnZhbHVlIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuVG90YWwuRW5lcmd5LkVuZXJneUJhdHRDaGFyZ2UiLCBNYXRoLnJvdW5kKHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzJdLnZhbHVlIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuVG90YWwuRW5lcmd5LkVuZXJneVNlbGZDb25zdW1wdGlvbiIsIE1hdGgucm91bmQoKHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzBdLnZhbHVlICsgcmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbM10udmFsdWUpIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuVG90YWwuRW5lcmd5LkVuZXJneUZlZWRJbiIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbNF0udmFsdWUgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub3RhbC5FbmVyZ3kuT2htcGlsb3RFbmVyZ3kiLCBNYXRoLnJvdW5kKHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzVdLnZhbHVlIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuVG90YWwuRW5lcmd5LkVuZXJneUJhdHRDaGFyZ2VHcmlkIiwgTWF0aC5yb3VuZChyZXN1bHQuZGF0YVswXS5jaGFubmVsc1s2XS52YWx1ZSAvIDEwMDAqMTAwKS8xMDAsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlRvdGFsLkVuZXJneS5FbmVyZ3lQdXJjaGFzZWQiLCBNYXRoLnJvdW5kKHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzddLnZhbHVlIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuVG90YWwuRW5lcmd5LkVuZXJneU91dHB1dCIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbOF0udmFsdWUgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub3RhbC5FbmVyZ3kuRW5lcmd5RGlyZWN0Q29uc3VtcHRpb24iLCBNYXRoLnJvdW5kKHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzldLnZhbHVlIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuVG90YWwuRW5lcmd5LkVuZXJneVByb2R1Y3Rpb25Ub3RhbCIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMTBdLnZhbHVlIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuVG90YWwuRW5lcmd5LkVuZXJneVNlbGZDb25zdW1wdGlvblRvdGFsIiwgTWF0aC5yb3VuZChyZXN1bHQuZGF0YVswXS5jaGFubmVsc1sxMV0udmFsdWUgLyAxMDAwKjEwMCkvMTAwLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub3RhbC5FbmVyZ3kuRW5lcmd5Q29uc3VtcHRpb25Ub3RhbCIsIE1hdGgucm91bmQocmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMTJdLnZhbHVlIC8gMTAwMCoxMDApLzEwMCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuVG90YWwuU2F2aW5nLlNhdmluZ3NDTzIiLCByZXN1bHQuZGF0YVswXS5jaGFubmVsc1sxM10udmFsdWUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlRvdGFsLlNhdmluZy5TYXZpbmdzVHJlZXMiLCByZXN1bHQuZGF0YVswXS5jaGFubmVsc1sxNF0udmFsdWUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlNvbGFyd2ViLlRvdGFsLlNhdmluZy5TYXZpbmdzVHJhdmVsQ2FyIiwgcmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMTVdLnZhbHVlLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub3RhbC5TYXZpbmcuU2F2aW5nc1RyYXZlbFBsYW5lIiwgcmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMTZdLnZhbHVlLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub3RhbC5TYXZpbmcuUHJvZml0cyIsIHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzE3XS52YWx1ZSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuU29sYXJ3ZWIuVG90YWwuU2F2aW5nLkVhcm5pbmdzIiwgcmVzdWx0LmRhdGFbMF0uY2hhbm5lbHNbMThdLnZhbHVlLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5Ub3RhbC5TYXZpbmcuU2F2aW5ncyIsIHJlc3VsdC5kYXRhWzBdLmNoYW5uZWxzWzE5XS52YWx1ZSwgdHJ1ZSkKfQplbHNlewogICAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5Tb2xhcndlYi5OZXVlclRva2VuIi8qTmV1ZXJUb2tlbiovLCB0cnVlKTsKfX0KcmVxdWVzdC5nZXQob3B0aW9ucywgY2FsbGJhY2spOw==</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_defnoreturn" id="qGP7EAzkx$~je*F._z.`" collapsed="true" x="-37" y="-213"> <field name="NAME">Tageswerte zurücksetzen</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="update" id="z!(=5*e`~|#}eq{Jj*nq"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Energy.EnergyBattCharge</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="-515jdOC`^g:YN3UyO3A"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="l5q6u#~WV%qrTcW-w_MR"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Energy.EnergyBattChargeGrid</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="+6;A$yjh-(][6%BV@1C?"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="GugUxJ}/sO$67T:2aoq8"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Energy.EnergyBattDischarge</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="PA[-3z5aaNiB3+r)99fu"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="#1)jyQ(z`:h73OFrQKJ~"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Energy.EnergyBattDischargeGrid</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="Er+O3JC4:R^|I@japS2k"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="rrk)_7B_I4KH#e1N$Vye"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Energy.EnergyConsumptionTotal</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="@?JR3L2Jx]6Y38#MQ(NT"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="k-d|oPXl!]U[{c!GGsKm"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Energy.EnergyDirectConsumption</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="[a6.OaKC/$cposMz%]5H"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="zwYD?_ccY@mbzzLi-64V"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Energy.EnergyFeedIn</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="q5#hX_=st(=5cCSz)c;U"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="QIzfD0{1sKG[.t/3re0j"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Energy.EnergyOutput</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="QW8`kmhJ;ywXV_%5ai{~"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="QcyOhxKsW=;{4CmHyq9e"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Energy.EnergyProductionTotal</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="H57;WpDH:22$Ecpv.!.J"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="T.#{0ivycT2{]UdyTkP["> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Energy.EnergyPurchased</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="tV[kN([8HR]Q7!bk5.5r"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="~joJ{@iEw4FL/nJ/0`bK"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Energy.EnergySelfConsumption</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="}%leB=mCd.BB~+FKC;@B"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="3,t$pNCr_Y[-|DGfCm:["> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Energy.EnergySelfConsumptionTotal</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="bj1.gS%qQGa;cY=JDA]x"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="*CvDL(=y~7v..ySvnS%g"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Energy.OhmpilotEnergy</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="g2dEb[scw.~u=[xtbIi^"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="upL*eAnOJRC^TTA$=-9d"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Saving.Earnings</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="w]mT;5@Asz{9+p?`m9b?"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="[d0}oLm)9yXEie@dTQUQ"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Saving.Profits</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="U8e%mpj@}Q*uOLAuBKf,"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="!L]x:#UP.kv~[V#:_XQy"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Saving.Savings</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="4WG_S8hnq(?]ZBXP?k0q"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="%(mQP|(PigkeAQYB/)1l"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Saving.SavingsCO2</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="p?k$t2k?ZkaYh~+IXt/{"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="|_%fJ*8{E$H{RxaK=P__"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Saving.SavingsTravelCar</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id=":MPZ~#T0B:p-`[I7CE$j"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="ePh*#,Ykee4]u1M1-6_c"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Saving.SavingsTravelPlane</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="AU=gvB.9[S#Yphy?u-;e"> <field name="NUM">0</field> </block> </value> <next> <block type="update" id="Gxj]@vW[BZT7|nX%SpEv"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Solarweb.Day.Saving.SavingsTrees</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="seYgF=~{FX|K#G%1Pk3,"> <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> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> <block type="procedures_defnoreturn" id="mme0_Wu%]YT26*%YeEd7" collapsed="true" x="-37" y="-188"> <field name="NAME">Main</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="on" id=")QODy$[H-(7lc9HPc%Xx"> <field name="OID">0_userdata.0.Solarweb.Token erstellen</field> <field name="CONDITION">any</field> <field name="ACK_CONDITION">false</field> <statement name="STATEMENT"> <block type="controls_if" id="qi2OU5y9AjO|pE1=!(W`"> <value name="IF0"> <block type="on_source" id="]6?RDB6_qbNs}FH@FT/5"> <field name="ATTR">state.val</field> </block> </value> <statement name="DO0"> <block type="procedures_callcustomnoreturn" id="Y2Cno,9z#O(5P6fkEXzB"> <mutation name="Login"></mutation> </block> </statement> </block> </statement> <next> <block type="schedule" id="@7Aif*%qaC~F)[1eH/(."> <field name="SCHEDULE">*/30 * * * *</field> <statement name="STATEMENT"> <block type="procedures_callcustomnoreturn" id="XH.ADTvB7aVuop1VMaU/"> <mutation name="Login"></mutation> </block> </statement> <next> <block type="procedures_callcustomnoreturn" id="PHr!0H7A=[ilK*Iy;-u#"> <mutation name="Datenpunkte erstellen"></mutation> <next> <block type="procedures_callcustomnoreturn" id="R;%BsdaUGTABxAtoprfr"> <mutation name="Login"></mutation> <next> <block type="timeouts_settimeout" id="a3~Qxd$::g(|s-r#muEn"> <field name="NAME">timeout</field> <field name="DELAY">5</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="procedures_callcustomnoreturn" id="a#wf2cZN(Kj`mi9hLKtT"> <mutation name="Tagesdaten"></mutation> <next> <block type="procedures_callcustomnoreturn" id="cV07:=atrA8ies4QZg1p"> <mutation name="Monatsdaten"></mutation> <next> <block type="procedures_callcustomnoreturn" id="nw2X73beuBcwr{uTw,.4"> <mutation name="Jahresdaten"></mutation> <next> <block type="procedures_callcustomnoreturn" id="5ZGdT$?/l.SiRO?QPQKj"> <mutation name="Total"></mutation> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="schedule" id="RTCSc~nn@qUWsglZ!yqz"> <field name="SCHEDULE">*/5 2-23 * * *</field> <statement name="STATEMENT"> <block type="procedures_callcustomnoreturn" id="DC)Em1Ehbz1LW6fj[K!7"> <mutation name="Tagesdaten"></mutation> </block> </statement> <next> <block type="schedule" id=",:!g:I~V@by_*KX6[Vo#"> <field name="SCHEDULE">0 * * * *</field> <statement name="STATEMENT"> <block type="procedures_callcustomnoreturn" id="38qFGa6EuiDOcGX@*s[`"> <mutation name="Monatsdaten"></mutation> </block> </statement> <next> <block type="schedule" id="XSmgAIX.OtZCLmC;|}xC"> <field name="SCHEDULE">5 0 * * *</field> <statement name="STATEMENT"> <block type="procedures_callcustomnoreturn" id="?So7px!1Y?5jXgi7zprA"> <mutation name="Jahresdaten"></mutation> <next> <block type="procedures_callcustomnoreturn" id=",!:p]Q%ES1iL5Ov@!q{{"> <mutation name="Total"></mutation> </block> </next> </block> </statement> <next> <block type="schedule" id="pqvH?_]l(vX_4dnD[S~x"> <field name="SCHEDULE">0 0 * * *</field> <statement name="STATEMENT"> <block type="procedures_callnoreturn" id="q7pwj(2sWAXP[LZQ0*/d"> <mutation name="Tageswerte zurücksetzen"></mutation> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
-
Kann dann so aussehen
-
Herzlichen Glückwunsche - das ist mal ein Super Skript. Wollen wir mal hoffen das Fronius uns nicht den "Hahn" abdreht.
Am geilsten finde ich den DP`s "Batterie Erhaltungsladung". Da sieht man mal was im Winter alles in die Batterie geht, wenn es dem Fronius Algorhtymus in den Kopf kommt.
Mein Speicher steht im Winter auf SoC 30% und ist Meilenweit von der Entladeschlussspannung entfernt. Trotzdem pumpt Fronius immer wieder die bekannten 500 Watt rein, wenn der WR Algorthymus das anfordert.
Wenn ich eine kleine Anmerkung machen darf - ich würde die Nachkommstellen auf 2 oder 3 begrenzen. Ist glaube ich besser wenn man es mit Grafana und InfluxDB weiter verarbeitet.
Magst du den Quellcode der VIS Bilder evtl. auch noch teilen?
-
Jetzt muss ich mal gucken, wie ich diese neuen Erkentnisse (DP`s) in meine automatische Tabelle einbaue. Die Tabelle basiert ja zu 100% auf sourceanalytix. Allerdings konnte ich bei Bezug und Einspeisung auch auf die Werte von meinem Discovergy Smartmeter zurück greifen.
-
@jb_sullivan Danke dir
Die Werte sind aus Wh in kWh umgerechnet, daher gibt es so viele Kommastellen.
Mich hat das bisher in meiner Arbeit nicht eingeschränkt, da in der VIS die Kommastellen einstellbar sind.
Für Grafana nutze ich jetzt die Werte (noch) nicht. Aber bei Gelegenheit denke ich drüber nachIch habe den Wert mal "Batterie Erhaltungsladung" genannt, weil er das im Endeffekt darstellt.
Es gäbe aber auch die Option den Speicher in Zukunft aus dem Netz zu laden über den Netzbetreiber, um Netzschwankungen auszugleichen, was aber eher Zukunftsmusik ist.Den API-Key könnte Fronius zwar blockieren, dann müsste es aber für alle Apps ein Update geben und ich lese halt dann den neuen Key aus. Ist jetzt kein Hexenwerk.
-
@jb_sullivan Sourceanalytics hat bei mir nie richtig übereingestimmt. Dazu kommt, dass die Produktionswerte des Wechselrichters immer nur den Direktverbrauch ohne Speicherladung angezeigt haben. Erst wenn der Speicher leer ist, stimmte der Produktionswert. Das war den Grund mich mal um die API zu kümmern.
Theoretisch kann man auch alle Werte von vergangenen Tagen und Monaten abfragen, aber das wäre extrem aufwändig - zumindest für mich, da ich von dynamischen Abfragen keine Ahnung habe.
-
Hast du auf dem GEN24 schon die 14.x.xx Firmware drauf? Da ist ja laut Change Log die API Schnittstelle per default auf AUS gestellt. Ich weiß nicht ob man da ohne Technican PW ran kommen würde, da ich persönlich die 14.x.x. Firmware noch nicht installiert habe.
Könnte dann wieder für die Leute die keinen Technican Zugang haben zum Boomerang werden, wenn nach dem Firmware Update die API Schnittstelle nicht mehr geht.
Fronius bringt ja Firmware Updates gerne im Winter raus, wenn man kaum Chancen hat alle Solaren Betriebszustände anständig zu testen.
-
@strobelix sagte in FRONIUS Adapter Entwicklung eingestellt?:
Erst wenn der Speicher leer ist, stimmte der Produktionswert.
Das stimmt allerdings - hat mich aber nie gestört, weil es spätestens am nächsten Tag, wenn der Speicher "leer" ist wieder passt. Bei mir reicht der Speicher so gut wie nie bis zum nächsten Morgen.
-
@jb_sullivan Ich wollte es aber wie in der Solarweb app haben
So ich hab das Script noch mal ausgetauscht, jetzt wird alles auf 2 Nachkommastellen gerundet.
-
@jb_sullivan
Ne ich bin auf 1.13.x
Ich schau mir das mal an. Ich hab ein Technikerzugang und kann ja dann berichten -
@strobelix sagte in FRONIUS Adapter Entwicklung eingestellt?:
So ich hab das Script noch mal ausgetauscht, jetzt wird alles auf 2 Nachkommastellen gerundet.
Jupp funktioniert auch und schaut auch besser als
-
@jb_sullivan die api ist nur bei Neuauslieferung abgestellt. Updates sind davon nicht betroffen.
Lässt sich aber (wohl) in den Benutzereinstellungen aktivieren.
In 10min weiss ich mehrAlso mit 1.14 gibt es auch als Standardnutzer die Möglichkeit die lokale API zu aktivieren bzw sie bleibt nach Update aktiviert.
Aber sieht so aus, als wollen sie alle Nutzer in Solarweb bringen.
Hoffen wir mal, die API des Gen24 wird nicht noch weiter eingeschränkt