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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Abstände zwischen mehreren Events berechnen (Blockly)

NEWS

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

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

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

Abstände zwischen mehreren Events berechnen (Blockly)

Geplant Angeheftet Gesperrt Verschoben Blockly
blockly
30 Beiträge 4 Kommentatoren 2.2k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • P Offline
    P Offline
    passuff
    schrieb am zuletzt editiert von Jey Cee
    #1

    Ich versuche bisher erfolglos den Abstand zwischen drei Brennerstarts meiner Heizung im Heizbetrieb zu berechnen um das ineffektive Takten zu erkennen.
    Ich habe dazu folgendes Blockly erstellt:
    2019-02-15_20-21-42.jpg
    Das Inkrementieren der Brennerstarts löst die Funktion aus.
    Dann wird geprüft, ob das Umschaltventil auf Heizen (nicht Warmwasser steht).
    Als nächstes werden die Zeitstempel geshiftet und der aktuelle gespeichert.
    Das selbe passiert mit der aktuellen Uhrzeit/Datum für debugging.
    Wenn die zwei berechneten Abstände zwischen den drei Zeitstempeln kleiner 1h sind, wird das Brennertakten erkannt.
    Zusätzlich werden bei jeder Warmwasserbereitung (Umschaltventil =3) alle Zeitstempel mit Werten gefüllt, welche >1/2/3 h in der Vergangenheit liegen. Ich wollte damit einen Reset realisieren. Aber auch das scheint nicht immer zu funktionieren:

    2019-02-15_21-09-42.jpg

    Hier noch der JS code:

    on({id: 'viessmann.0.get.VitoStatusUmschaltventil', change: "ne"}, function (obj) {
    var value = obj.state.val;
    var oldValue = obj.oldState.val;
    if (getState("viessmann.0.get.VitoStatusUmschaltventil").val == 3) {
    setState("CalcVal.0.Heizung.Brenner.Takten_erkannt"/Brenner.Takten_erkannt/, false);
    setState("CalcVal.0.Heizung.Brenner.Zeitstempel1"/Zeitstempel1/, ((obj.state ? obj.state.ts : "") - 3700000));
    setState("CalcVal.0.Heizung.Brenner.Zeitstempel2"/Zeitstempel2/, ((obj.state ? obj.state.ts : "") - 7300000));
    setState("CalcVal.0.Heizung.Brenner.Zeitstempel3"/Zeitstempel3/, ((obj.state ? obj.state.ts : "") - 11000000));
    setState("CalcVal.0.Heizung.Brenner.Zeitstempel1_Datum"/Zeitstempel1_Datum/, formatDate(new Date(), "DD.MM.YYYY"));
    setState("CalcVal.0.Heizung.Brenner.Zeitstempel2_Datum"/Zeitstempel2_Datum/, formatDate(new Date(), "DD.MM.YYYY"));
    setState("CalcVal.0.Heizung.Brenner.Zeitstempel3_Datum"/Zeitstempel3_Datum/, formatDate(new Date(), "DD.MM.YYYY"));
    setState("CalcVal.0.Heizung.Brenner.Zeitstempel1_Uhrzeit"/Zeitstempel1_Uhrzeit/, formatDate(new Date(), "hh:mm:ss"));
    setState("CalcVal.0.Heizung.Brenner.Zeitstempel2_Uhrzeit"/Zeitstempel2_Uhrzeit/, formatDate(new Date(), "hh:mm:ss"));
    setState("CalcVal.0.Heizung.Brenner.Zeitstempel3_Uhrzeit"/Zeitstempel3_Uhrzeit/, formatDate(new Date(), "hh:mm:ss"));
    }
    });

    on({id: 'viessmann.0.get.VitoStartsBrenner', change: "ne"}, function (obj) {
    var value = obj.state.val;
    var oldValue = obj.oldState.val;
    if (getState("viessmann.0.get.VitoStatusUmschaltventil").val == 1) {
    setState("CalcVal.0.Heizung.Brenner.Zeitstempel3"/Zeitstempel3/, getState("CalcVal.0.Heizung.Brenner.Zeitstempel2").val);
    setState("CalcVal.0.Heizung.Brenner.Zeitstempel2"/Zeitstempel2/, getState("CalcVal.0.Heizung.Brenner.Zeitstempel1").val);
    setState("CalcVal.0.Heizung.Brenner.Zeitstempel1"/Zeitstempel1/, (obj.state ? obj.state.ts : ""));
    setState("CalcVal.0.Heizung.Brenner.Zeitstempel3_Datum"/Zeitstempel3_Datum/, getState("CalcVal.0.Heizung.Brenner.Zeitstempel2_Datum").val);
    setState("CalcVal.0.Heizung.Brenner.Zeitstempel2_Datum"/Zeitstempel2_Datum/, getState("CalcVal.0.Heizung.Brenner.Zeitstempel1_Datum").val);
    setState("CalcVal.0.Heizung.Brenner.Zeitstempel1_Datum"/Zeitstempel1_Datum/, formatDate(new Date(), "DD.MM.YYYY"));
    setState("CalcVal.0.Heizung.Brenner.Zeitstempel3_Uhrzeit"/Zeitstempel3_Uhrzeit/, getState("CalcVal.0.Heizung.Brenner.Zeitstempel2_Uhrzeit").val);
    setState("CalcVal.0.Heizung.Brenner.Zeitstempel2_Uhrzeit"/Zeitstempel2_Uhrzeit/, getState("CalcVal.0.Heizung.Brenner.Zeitstempel1_Uhrzeit").val);
    setState("CalcVal.0.Heizung.Brenner.Zeitstempel1_Uhrzeit"/Zeitstempel1_Uhrzeit/, formatDate(new Date(), "hh:mm:ss"));
    setState("CalcVal.0.Heizung.Brenner.Abstand1"/Abstand1/, (getState("CalcVal.0.Heizung.Brenner.Zeitstempel1").val - getState("CalcVal.0.Heizung.Brenner.Zeitstempel2").val));
    // Abstand Taktung1= Zeitstempel1-Zeitstempel2 [min]
    setState("CalcVal.0.Heizung.Brenner.Abstand2"/Abstand2/, (getState("CalcVal.0.Heizung.Brenner.Zeitstempel2").val - getState("CalcVal.0.Heizung.Brenner.Zeitstempel3").val));
    // Abstand Taktung1= Zeitstempel2-Zeitstempel3 [min]
    if (getState("CalcVal.0.Heizung.Brenner.Abstand1").val < 3600000 && getState("CalcVal.0.Heizung.Brenner.Abstand2").val < 3600000) {
    setState("CalcVal.0.Heizung.Brenner.Takten_erkannt"/Brenner.Takten_erkannt/, true);
    // falls Abstand 1 und 2 < 1h, dann Brennertakten erkannt = 1
    } else {
    setState("CalcVal.0.Heizung.Brenner.Takten_erkannt"/Brenner.Takten_erkannt/, false);
    }
    }
    });

    //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm9uX2V4dCUyMiUyMGlkJTNEJTIyb2klMjUyeWdMcSU3Q193WUchUzd6alBBJTIyJTIweCUzRCUyMi02NjIlMjIlMjB5JTNEJTIyLTkxMiUyMiUzRSUzQ211dGF0aW9uJTIwaXRlbXMlM0QlMjIxJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT05ESVRJT04lMjIlM0VuZSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQUNLX0NPTkRJVElPTiUyMiUzRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyT0lEMCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJmaWVsZF9vaWQlMjIlMjBpZCUzRCUyMiU3RCUyQjIlMjNhLk4lNURyUFMlMkNBeCU3QiUzRm9iNkQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJvaWQlMjIlM0V2aWVzc21hbm4uMC5nZXQuVml0b1N0YXR1c1Vtc2NoYWx0dmVudGlsJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJTVEFURU1FTlQlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19pZiUyMiUyMGlkJTNEJTIyKnclN0QqVDZMJTNBaiUyNSUzRkVYJTVEczkoJTVCKEElMjIlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjJXMFlHVEwlMkZFZFklNjBIbiU3QiU2MGlxUjBPJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VFUSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyIXBUJTI1JTQwJTJDVCUyNSUzRCU2MDBsQUQ4TlFkJTdDayUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRXZpZXNzbWFubi4wLmdldC5WaXRvU3RhdHVzVW1zY2hhbHR2ZW50aWwlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMnJ6JTdDSXUlMjUqTnViRmFOTE9GJTIzJTNBelQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UzJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETzAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJjV2dKV1M3JTdDR19qJTdCZVNMJTNELSUyNVEtJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlRha3Rlbl9lcmthbm50JTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfYm9vbGVhbiUyMiUyMGlkJTNEJTIyJTIzJTVFJTNGJTI1N1MlM0J6b2NUdSU3Q1V4a3g3X3MlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJCT09MJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyd194N3JuVyU1RW5vUGx6NTklNDBqUldRJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsMSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfYXJpdGhtZXRpYyUyMiUyMGlkJTNEJTIyUCUyRkd4ZihJUihFTGxfZG04JTdET2UtJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VNSU5VUyUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyJTI1QyolM0ZOVy4lNUU0bUwlMjMlM0RPYktsc0dDJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMCUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fc291cmNlJTIyJTIwaWQlM0QlMjJoWnU0cFMhJTNCVS41JTdEKiUyQyU2MHF1JTJCbXMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFc3RhdGUudHMlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJjNjB5ZWZUJTYwc0lETSU3QiU3QkpxTi4lNUUlM0IlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UzNzAwMDAwJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIySmM1WWsyaUVEUCUyQiU3QkxWbnU3cyU3Q0glMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRUNhbGNWYWwuMC5IZWl6dW5nLkJyZW5uZXIuWmVpdHN0ZW1wZWwyJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9hcml0aG1ldGljJTIyJTIwaWQlM0QlMjJ0JTNCeHZhciUyNTZfJTNCZVNFaXdvc3ElN0J5JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VNSU5VUyUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyJTI1QyolM0ZOVy4lNUU0bUwlMjMlM0RPYktsc0dDJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMCUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fc291cmNlJTIyJTIwaWQlM0QlMjJhNSUyRmhyS1JUJTJDQVUwJTVCZ1p2SCgwJTVEJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXN0YXRlLnRzJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyJTJGKkQ3d2MwanglM0RZNGdGd2VGbTNpJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFNzMwMDAwMCUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMk11ak9YMyU1RC1KN3A0MF9PZVQlN0QlN0QpJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsMyUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfYXJpdGhtZXRpYyUyMiUyMGlkJTNEJTIycjdiS0t0R3klMkJmalIlNjBDJTVEd3QoQiU1RSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFTUlOVVMlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMiUzQSU2MGclMjMqMSUzQkdpJTI1NiU1RElvTSU3RChWZ1clMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UwJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9zb3VyY2UlMjIlMjBpZCUzRCUyMiUyQmNnJTNEOWtPJTNCN2ZiMzljMiUzQnFfdSU1RSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0VzdGF0ZS50cyUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMjQlM0JCOHh5bGszdWclNURGWUN0cWhVLiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTExMDAwMDAwJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyIVp5JTJDJTdEVWtHbU5vcX5KQUYlN0N+aiUzQiUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5aZWl0c3RlbXBlbDFfRGF0dW0lM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0aW1lX2dldCUyMiUyMGlkJTNEJTIyJTdCJTdDJTNCSiU3REElMkZhJTJGNDhhJTdDJTJDJTVETjMlNUVDJTJGJTIyJTNFJTNDbXV0YXRpb24lMjBmb3JtYXQlM0QlMjJmYWxzZSUyMiUyMGxhbmd1YWdlJTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QVElPTiUyMiUzRURELk1NLllZWVklM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyJTI1KlgpZH5nakYlMjMobk1wJTdEdlI4eWYlMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRUNhbGNWYWwuMC5IZWl6dW5nLkJyZW5uZXIuWmVpdHN0ZW1wZWwyX0RhdHVtJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGltZV9nZXQlMjIlMjBpZCUzRCUyMnQzQyU3RFIlMjNmRG5fJTNGJTJDV3lxdyUzQXc5JTdCJTIyJTNFJTNDbXV0YXRpb24lMjBmb3JtYXQlM0QlMjJmYWxzZSUyMiUyMGxhbmd1YWdlJTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QVElPTiUyMiUzRURELk1NLllZWVklM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIydyU1RHUyYWg1cV8lNDBfJTYwOCU1RCU3QjUoJTJDJTVEbSUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5aZWl0c3RlbXBlbDNfRGF0dW0lM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0aW1lX2dldCUyMiUyMGlkJTNEJTIyZ1ZaakhpTjAlNUVpLWYlN0QoOGgyLlRpJTIyJTNFJTNDbXV0YXRpb24lMjBmb3JtYXQlM0QlMjJmYWxzZSUyMiUyMGxhbmd1YWdlJTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QVElPTiUyMiUzRURELk1NLllZWVklM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyQylNRyElMjVzcVpqdmk2SkhBKlhnSCUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5aZWl0c3RlbXBlbDFfVWhyemVpdCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRpbWVfZ2V0JTIyJTIwaWQlM0QlMjIlMkNCJTdDa0JISyUzQjIlNURNJTVCVGlJJTNBMClXMCUyMiUzRSUzQ211dGF0aW9uJTIwZm9ybWF0JTNEJTIyZmFsc2UlMjIlMjBsYW5ndWFnZSUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUFRJT04lMjIlM0VoaCUzQW1tJTNBc3MlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyQiUyQ0FKWGpRJTJGbElSLi4lMkJwU2tYS0IlMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRUNhbGNWYWwuMC5IZWl6dW5nLkJyZW5uZXIuWmVpdHN0ZW1wZWwyX1VocnplaXQlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0aW1lX2dldCUyMiUyMGlkJTNEJTIyeCUyRkRwY0YoJTYwJTI1T250UE4lMkN6JTNGNWd0JTIyJTNFJTNDbXV0YXRpb24lMjBmb3JtYXQlM0QlMjJmYWxzZSUyMiUyMGxhbmd1YWdlJTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QVElPTiUyMiUzRWhoJTNBbW0lM0FzcyUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjI4a2J1LlYlM0E1blRpT0piMGNoMC0uJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsM19VaHJ6ZWl0JTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGltZV9nZXQlMjIlMjBpZCUzRCUyMlNGJTVEJTIzUmJhc09oanclM0IlN0NzUWtIYjAlMjIlM0UlM0NtdXRhdGlvbiUyMGZvcm1hdCUzRCUyMmZhbHNlJTIyJTIwbGFuZ3VhZ2UlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1BUSU9OJTIyJTNFaGglM0FtbSUzQXNzJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fZXh0JTIyJTIwaWQlM0QlMjIocColN0RPOG0wZlclMkZFWTVEJTJDJTJCV1JsJTIyJTIweCUzRCUyMjYzJTIyJTIweSUzRCUyMi04ODclMjIlM0UlM0NtdXRhdGlvbiUyMGl0ZW1zJTNEJTIyMSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09ORElUSU9OJTIyJTNFbmUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFDS19DT05ESVRJT04lMjIlM0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMk9JRDAlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIyZmllbGRfb2lkJTIyJTIwaWQlM0QlMjJhJTdEN081WEkhJTIzREdqbSUyQkIoTjcqOCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMm9pZCUyMiUzRXZpZXNzbWFubi4wLmdldC5WaXRvU3RhcnRzQnJlbm5lciUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyU1RBVEVNRU5UJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfaWYlMjIlMjBpZCUzRCUyMnZ4WXNwYyhic2hoJTIzWHdLfiUyQ3olM0YwJTIyJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyYUUlN0J3bSUyM3ZuQ1JrWEtTbFklNUUoREIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlJTIyJTIwaWQlM0QlMjJDeU8lN0QlMjVJMzBnMDElM0RZJTNERCUzQSUyRiU0MCU3QmclMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0V2aWVzc21hbm4uMC5nZXQuVml0b1N0YXR1c1Vtc2NoYWx0dmVudGlsJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJ3U1RpZH5+QmRLT0h4cTAtQ1FWWiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTElM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMlVXJTNGbyglNDAzdylUUWc2dHVTTmslN0RvJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsMyUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyZGh3YSU1RHQlN0J3VHgyYWpYJTdDdyElMjMlNDAlMjUlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsMiUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjIuSXU5M3FHRSE4JTNGX3ZMJTdDb2J4JTI1eiUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5aZWl0c3RlbXBlbDIlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMlNvejRtZnchb2lXJTNGTDElN0M2YVIlNUVEJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5aZWl0c3RlbXBlbDElM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyKVJKcDRWRHNTcH4lM0YwJTdEbG9HKlR+JTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsMSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm9uX3NvdXJjZSUyMiUyMGlkJTNEJTIyZiU1RVRwJTVCeXE3MiUzQmhkYjd+UyFDS00lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFc3RhdGUudHMlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyei1xaCU3Q05CayU3QzZJJTdCMCUyQjElN0Nxdi54JTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsM19EYXR1bSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyZyg0TXpmYyUyQkFJJTJGbWFDJTdENm8lN0NWVyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRUNhbGNWYWwuMC5IZWl6dW5nLkJyZW5uZXIuWmVpdHN0ZW1wZWwyX0RhdHVtJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMiU0MEh4VXR1Z1Fxb2hrJTVCMzdGUl8lM0IzJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsMl9EYXR1bSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyZCUyNVIwQ0spbExOT00lM0EzdUpSIUUlM0QlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsMV9EYXR1bSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJOJTNBMHIlM0ElM0QlM0JIQVVzJTI1JTdDQSU3QzclM0ElNUUlM0ZiJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsMV9EYXR1bSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRpbWVfZ2V0JTIyJTIwaWQlM0QlMjIlMjVPX2NkMHVOcCUyRnJUJTNEN25NQVIlN0RwJTIyJTNFJTNDbXV0YXRpb24lMjBmb3JtYXQlM0QlMjJmYWxzZSUyMiUyMGxhbmd1YWdlJTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QVElPTiUyMiUzRURELk1NLllZWVklM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyekxXUHN1JTNEbkN5M2o0MWNxJTJGYW1oJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsM19VaHJ6ZWl0JTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlJTIyJTIwaWQlM0QlMjIlMjUlNUVUV25CRCEoJTdDWGRDT2RGbTMlM0JPJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5aZWl0c3RlbXBlbDJfVWhyemVpdCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJJcyU1RXQtcyUyM3h+bE4lNDBSVyU3Qk85JTIzT0MlMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRUNhbGNWYWwuMC5IZWl6dW5nLkJyZW5uZXIuWmVpdHN0ZW1wZWwyX1VocnplaXQlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMjNzJTNEUiU3Q0RDfmNacik5JTdDJTIzSjlpNSU0MCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRUNhbGNWYWwuMC5IZWl6dW5nLkJyZW5uZXIuWmVpdHN0ZW1wZWwxX1VocnplaXQlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyKmQ2aURFJTJGMCUzRiU1RHglM0Ipa1QxUVU1NyUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5aZWl0c3RlbXBlbDFfVWhyemVpdCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRpbWVfZ2V0JTIyJTIwaWQlM0QlMjIyM2slNUROdCUzQktXekkxeVkqaCU3RExoayUyMiUzRSUzQ211dGF0aW9uJTIwZm9ybWF0JTNEJTIyZmFsc2UlMjIlMjBsYW5ndWFnZSUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUFRJT04lMjIlM0VoaCUzQW1tJTNBc3MlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyQXclNUJBQ1opJTJCS1ozJTIzMiU2MFlYeEhociUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5BYnN0YW5kMSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfYXJpdGhtZXRpYyUyMiUyMGlkJTNEJTIycDNZKmhFISUzRiU2MHIlMjNZfnY4N18lMkMlN0J6JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VNSU5VUyUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyNXRHZiU1QnF1JTVFOUtHcmo5MCFTOVYlMkIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UxJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMk9kNXRYSiU2MCUyMyU1RTMlN0J2USUzQiUyQm0lNUUlN0RaaSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRUNhbGNWYWwuMC5IZWl6dW5nLkJyZW5uZXIuWmVpdHN0ZW1wZWwxJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyJTVCZyUzRCUzQn5QMmdfUVRrISU1RCllY2JSTyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTElM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyQl9YZyUzQTglMkYuaWElM0RJRUZWc2QlMkNOJTI1JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5aZWl0c3RlbXBlbDIlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbW1lbnQlMjIlMjBpZCUzRCUyMi5vZCUyMyUyQ2ZLczM5ciU3Q3BmJTYwWDN+YjAlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT01NRU5UJTIyJTNFQWJzdGFuZCUyMFRha3R1bmcxJTNEJTIwWmVpdHN0ZW1wZWwxLVplaXRzdGVtcGVsMiUyMCU1Qm1pbiU1RCUzQyUyRmZpZWxkJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMmR0JTVFKCU3Qn5kYiUzRFpaMCU3QzRWNjFmaCU1RSUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5BYnN0YW5kMiUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfYXJpdGhtZXRpYyUyMiUyMGlkJTNEJTIyJTJGJTNCbElNJTQwM2ctKSUyQy4lN0NvWUZIbUV3JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VNSU5VUyUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyNXRHZiU1QnF1JTVFOUtHcmo5MCFTOVYlMkIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UxJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMjhOJTJGJTdCMjZkLjFqRyUzRlMlM0ZMbEklMkJTJTVCJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5aZWl0c3RlbXBlbDIlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjIlNUJnJTNEJTNCflAyZ19RVGshJTVEKWVjYlJPJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMSUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlJTIyJTIwaWQlM0QlMjIlNjBOMkp5SiU3Q2clNURZT1FFJTJCSSUyM00xLUclMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsMyUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29tbWVudCUyMiUyMGlkJTNEJTIyd1lBcHdvZiUyQlglM0Y0QlglNjAlN0RZcGgtJTQwJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRUFic3RhbmQlMjBUYWt0dW5nMSUzRCUyMFplaXRzdGVtcGVsMi1aZWl0c3RlbXBlbDMlMjAlNUJtaW4lNUQlM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19pZiUyMiUyMGlkJTNEJTIySFJTLSUyNTEyVUE4eiUyNVIqZGZadmZNJTIyJTNFJTNDbXV0YXRpb24lMjBlbHNlJTNEJTIyMSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfb3BlcmF0aW9uJTIyJTIwaWQlM0QlMjJpdGZ2c04lMjVILi5PWCUyNTklM0Y5ZEVQYyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFQU5EJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyJTNBJTNEOSpxMn4lNDBZSDklNDB3JTdCJTNEUWclNjA0LiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFTFQlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMkZYJTNGJTQwMyUyM3Z1cU0lM0QlMjVWRWFwbWFUcSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRUNhbGNWYWwuMC5IZWl6dW5nLkJyZW5uZXIuQWJzdGFuZDElM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMiUzRE5aJTNEUzc5d3RGdHYlN0Q0anRTZElKJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMzYwMDAwMCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIySCljJTNCc0psVy5CdnRGJTYwbl8qZEhiJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VMVCUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyJTJCJTIzLiU3Qy1NNFA4U3V1SzN1VFJVJTNCVCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRUNhbGNWYWwuMC5IZWl6dW5nLkJyZW5uZXIuQWJzdGFuZDIlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMig5Uy0lM0IzWGpIaiUyM1MlNUJyWHNGU0Y3JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMzYwMDAwMCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMlglM0Z5byklN0JnMFYyTy56KTlRR2pMSCUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5UYWt0ZW5fZXJrYW5udCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMk5UJTNGJTJCJTdCY0FfTVhiISU1RU5NJTNBJTNCJTNBJTJCJTNEJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRVRSVUUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29tbWVudCUyMiUyMGlkJTNEJTIyN2ZNOUpuJTVFOTZnayU3Q04lMjVuJTQwMkMlM0JTJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRWZhbGxzJTIwQWJzdGFuZCUyMDElMjB1bmQlMjAyJTIwJTI2bHQlM0IlMjAxaCUyQyUyMGRhbm4lMjBCcmVubmVydGFrdGVuJTIwZXJrYW5udCUyMCUzRCUyMDElM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkVMU0UlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJTQ20lN0JFJTJDVSUzRjZDOEklM0QwbHdGJTdCJTdEVCUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5UYWt0ZW5fZXJrYW5udCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMkkoZlolNUUlNjBEJTI1aiU0MCU2MHpCKSU3Q0VkMFF+JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ4bWwlM0U=

    Folgend sieht man einen Tagesverlauf aus flot:

    2019-02-15_21-14-45.jpg

    rantanplanR 1 Antwort Letzte Antwort
    0
    • P passuff

      Ich versuche bisher erfolglos den Abstand zwischen drei Brennerstarts meiner Heizung im Heizbetrieb zu berechnen um das ineffektive Takten zu erkennen.
      Ich habe dazu folgendes Blockly erstellt:
      2019-02-15_20-21-42.jpg
      Das Inkrementieren der Brennerstarts löst die Funktion aus.
      Dann wird geprüft, ob das Umschaltventil auf Heizen (nicht Warmwasser steht).
      Als nächstes werden die Zeitstempel geshiftet und der aktuelle gespeichert.
      Das selbe passiert mit der aktuellen Uhrzeit/Datum für debugging.
      Wenn die zwei berechneten Abstände zwischen den drei Zeitstempeln kleiner 1h sind, wird das Brennertakten erkannt.
      Zusätzlich werden bei jeder Warmwasserbereitung (Umschaltventil =3) alle Zeitstempel mit Werten gefüllt, welche >1/2/3 h in der Vergangenheit liegen. Ich wollte damit einen Reset realisieren. Aber auch das scheint nicht immer zu funktionieren:

      2019-02-15_21-09-42.jpg

      Hier noch der JS code:

      on({id: 'viessmann.0.get.VitoStatusUmschaltventil', change: "ne"}, function (obj) {
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      if (getState("viessmann.0.get.VitoStatusUmschaltventil").val == 3) {
      setState("CalcVal.0.Heizung.Brenner.Takten_erkannt"/Brenner.Takten_erkannt/, false);
      setState("CalcVal.0.Heizung.Brenner.Zeitstempel1"/Zeitstempel1/, ((obj.state ? obj.state.ts : "") - 3700000));
      setState("CalcVal.0.Heizung.Brenner.Zeitstempel2"/Zeitstempel2/, ((obj.state ? obj.state.ts : "") - 7300000));
      setState("CalcVal.0.Heizung.Brenner.Zeitstempel3"/Zeitstempel3/, ((obj.state ? obj.state.ts : "") - 11000000));
      setState("CalcVal.0.Heizung.Brenner.Zeitstempel1_Datum"/Zeitstempel1_Datum/, formatDate(new Date(), "DD.MM.YYYY"));
      setState("CalcVal.0.Heizung.Brenner.Zeitstempel2_Datum"/Zeitstempel2_Datum/, formatDate(new Date(), "DD.MM.YYYY"));
      setState("CalcVal.0.Heizung.Brenner.Zeitstempel3_Datum"/Zeitstempel3_Datum/, formatDate(new Date(), "DD.MM.YYYY"));
      setState("CalcVal.0.Heizung.Brenner.Zeitstempel1_Uhrzeit"/Zeitstempel1_Uhrzeit/, formatDate(new Date(), "hh:mm:ss"));
      setState("CalcVal.0.Heizung.Brenner.Zeitstempel2_Uhrzeit"/Zeitstempel2_Uhrzeit/, formatDate(new Date(), "hh:mm:ss"));
      setState("CalcVal.0.Heizung.Brenner.Zeitstempel3_Uhrzeit"/Zeitstempel3_Uhrzeit/, formatDate(new Date(), "hh:mm:ss"));
      }
      });

      on({id: 'viessmann.0.get.VitoStartsBrenner', change: "ne"}, function (obj) {
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      if (getState("viessmann.0.get.VitoStatusUmschaltventil").val == 1) {
      setState("CalcVal.0.Heizung.Brenner.Zeitstempel3"/Zeitstempel3/, getState("CalcVal.0.Heizung.Brenner.Zeitstempel2").val);
      setState("CalcVal.0.Heizung.Brenner.Zeitstempel2"/Zeitstempel2/, getState("CalcVal.0.Heizung.Brenner.Zeitstempel1").val);
      setState("CalcVal.0.Heizung.Brenner.Zeitstempel1"/Zeitstempel1/, (obj.state ? obj.state.ts : ""));
      setState("CalcVal.0.Heizung.Brenner.Zeitstempel3_Datum"/Zeitstempel3_Datum/, getState("CalcVal.0.Heizung.Brenner.Zeitstempel2_Datum").val);
      setState("CalcVal.0.Heizung.Brenner.Zeitstempel2_Datum"/Zeitstempel2_Datum/, getState("CalcVal.0.Heizung.Brenner.Zeitstempel1_Datum").val);
      setState("CalcVal.0.Heizung.Brenner.Zeitstempel1_Datum"/Zeitstempel1_Datum/, formatDate(new Date(), "DD.MM.YYYY"));
      setState("CalcVal.0.Heizung.Brenner.Zeitstempel3_Uhrzeit"/Zeitstempel3_Uhrzeit/, getState("CalcVal.0.Heizung.Brenner.Zeitstempel2_Uhrzeit").val);
      setState("CalcVal.0.Heizung.Brenner.Zeitstempel2_Uhrzeit"/Zeitstempel2_Uhrzeit/, getState("CalcVal.0.Heizung.Brenner.Zeitstempel1_Uhrzeit").val);
      setState("CalcVal.0.Heizung.Brenner.Zeitstempel1_Uhrzeit"/Zeitstempel1_Uhrzeit/, formatDate(new Date(), "hh:mm:ss"));
      setState("CalcVal.0.Heizung.Brenner.Abstand1"/Abstand1/, (getState("CalcVal.0.Heizung.Brenner.Zeitstempel1").val - getState("CalcVal.0.Heizung.Brenner.Zeitstempel2").val));
      // Abstand Taktung1= Zeitstempel1-Zeitstempel2 [min]
      setState("CalcVal.0.Heizung.Brenner.Abstand2"/Abstand2/, (getState("CalcVal.0.Heizung.Brenner.Zeitstempel2").val - getState("CalcVal.0.Heizung.Brenner.Zeitstempel3").val));
      // Abstand Taktung1= Zeitstempel2-Zeitstempel3 [min]
      if (getState("CalcVal.0.Heizung.Brenner.Abstand1").val < 3600000 && getState("CalcVal.0.Heizung.Brenner.Abstand2").val < 3600000) {
      setState("CalcVal.0.Heizung.Brenner.Takten_erkannt"/Brenner.Takten_erkannt/, true);
      // falls Abstand 1 und 2 < 1h, dann Brennertakten erkannt = 1
      } else {
      setState("CalcVal.0.Heizung.Brenner.Takten_erkannt"/Brenner.Takten_erkannt/, false);
      }
      }
      });

      //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm9uX2V4dCUyMiUyMGlkJTNEJTIyb2klMjUyeWdMcSU3Q193WUchUzd6alBBJTIyJTIweCUzRCUyMi02NjIlMjIlMjB5JTNEJTIyLTkxMiUyMiUzRSUzQ211dGF0aW9uJTIwaXRlbXMlM0QlMjIxJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT05ESVRJT04lMjIlM0VuZSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQUNLX0NPTkRJVElPTiUyMiUzRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyT0lEMCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJmaWVsZF9vaWQlMjIlMjBpZCUzRCUyMiU3RCUyQjIlMjNhLk4lNURyUFMlMkNBeCU3QiUzRm9iNkQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJvaWQlMjIlM0V2aWVzc21hbm4uMC5nZXQuVml0b1N0YXR1c1Vtc2NoYWx0dmVudGlsJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJTVEFURU1FTlQlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19pZiUyMiUyMGlkJTNEJTIyKnclN0QqVDZMJTNBaiUyNSUzRkVYJTVEczkoJTVCKEElMjIlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjJXMFlHVEwlMkZFZFklNjBIbiU3QiU2MGlxUjBPJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VFUSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyIXBUJTI1JTQwJTJDVCUyNSUzRCU2MDBsQUQ4TlFkJTdDayUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRXZpZXNzbWFubi4wLmdldC5WaXRvU3RhdHVzVW1zY2hhbHR2ZW50aWwlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMnJ6JTdDSXUlMjUqTnViRmFOTE9GJTIzJTNBelQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UzJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETzAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJjV2dKV1M3JTdDR19qJTdCZVNMJTNELSUyNVEtJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlRha3Rlbl9lcmthbm50JTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfYm9vbGVhbiUyMiUyMGlkJTNEJTIyJTIzJTVFJTNGJTI1N1MlM0J6b2NUdSU3Q1V4a3g3X3MlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJCT09MJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyd194N3JuVyU1RW5vUGx6NTklNDBqUldRJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsMSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfYXJpdGhtZXRpYyUyMiUyMGlkJTNEJTIyUCUyRkd4ZihJUihFTGxfZG04JTdET2UtJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VNSU5VUyUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyJTI1QyolM0ZOVy4lNUU0bUwlMjMlM0RPYktsc0dDJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMCUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fc291cmNlJTIyJTIwaWQlM0QlMjJoWnU0cFMhJTNCVS41JTdEKiUyQyU2MHF1JTJCbXMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFc3RhdGUudHMlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJjNjB5ZWZUJTYwc0lETSU3QiU3QkpxTi4lNUUlM0IlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UzNzAwMDAwJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIySmM1WWsyaUVEUCUyQiU3QkxWbnU3cyU3Q0glMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRUNhbGNWYWwuMC5IZWl6dW5nLkJyZW5uZXIuWmVpdHN0ZW1wZWwyJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9hcml0aG1ldGljJTIyJTIwaWQlM0QlMjJ0JTNCeHZhciUyNTZfJTNCZVNFaXdvc3ElN0J5JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VNSU5VUyUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyJTI1QyolM0ZOVy4lNUU0bUwlMjMlM0RPYktsc0dDJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMCUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fc291cmNlJTIyJTIwaWQlM0QlMjJhNSUyRmhyS1JUJTJDQVUwJTVCZ1p2SCgwJTVEJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXN0YXRlLnRzJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyJTJGKkQ3d2MwanglM0RZNGdGd2VGbTNpJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFNzMwMDAwMCUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMk11ak9YMyU1RC1KN3A0MF9PZVQlN0QlN0QpJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsMyUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfYXJpdGhtZXRpYyUyMiUyMGlkJTNEJTIycjdiS0t0R3klMkJmalIlNjBDJTVEd3QoQiU1RSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFTUlOVVMlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMiUzQSU2MGclMjMqMSUzQkdpJTI1NiU1RElvTSU3RChWZ1clMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UwJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9zb3VyY2UlMjIlMjBpZCUzRCUyMiUyQmNnJTNEOWtPJTNCN2ZiMzljMiUzQnFfdSU1RSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0VzdGF0ZS50cyUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMjQlM0JCOHh5bGszdWclNURGWUN0cWhVLiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTExMDAwMDAwJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyIVp5JTJDJTdEVWtHbU5vcX5KQUYlN0N+aiUzQiUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5aZWl0c3RlbXBlbDFfRGF0dW0lM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0aW1lX2dldCUyMiUyMGlkJTNEJTIyJTdCJTdDJTNCSiU3REElMkZhJTJGNDhhJTdDJTJDJTVETjMlNUVDJTJGJTIyJTNFJTNDbXV0YXRpb24lMjBmb3JtYXQlM0QlMjJmYWxzZSUyMiUyMGxhbmd1YWdlJTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QVElPTiUyMiUzRURELk1NLllZWVklM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyJTI1KlgpZH5nakYlMjMobk1wJTdEdlI4eWYlMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRUNhbGNWYWwuMC5IZWl6dW5nLkJyZW5uZXIuWmVpdHN0ZW1wZWwyX0RhdHVtJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGltZV9nZXQlMjIlMjBpZCUzRCUyMnQzQyU3RFIlMjNmRG5fJTNGJTJDV3lxdyUzQXc5JTdCJTIyJTNFJTNDbXV0YXRpb24lMjBmb3JtYXQlM0QlMjJmYWxzZSUyMiUyMGxhbmd1YWdlJTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QVElPTiUyMiUzRURELk1NLllZWVklM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIydyU1RHUyYWg1cV8lNDBfJTYwOCU1RCU3QjUoJTJDJTVEbSUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5aZWl0c3RlbXBlbDNfRGF0dW0lM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0aW1lX2dldCUyMiUyMGlkJTNEJTIyZ1ZaakhpTjAlNUVpLWYlN0QoOGgyLlRpJTIyJTNFJTNDbXV0YXRpb24lMjBmb3JtYXQlM0QlMjJmYWxzZSUyMiUyMGxhbmd1YWdlJTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QVElPTiUyMiUzRURELk1NLllZWVklM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyQylNRyElMjVzcVpqdmk2SkhBKlhnSCUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5aZWl0c3RlbXBlbDFfVWhyemVpdCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRpbWVfZ2V0JTIyJTIwaWQlM0QlMjIlMkNCJTdDa0JISyUzQjIlNURNJTVCVGlJJTNBMClXMCUyMiUzRSUzQ211dGF0aW9uJTIwZm9ybWF0JTNEJTIyZmFsc2UlMjIlMjBsYW5ndWFnZSUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUFRJT04lMjIlM0VoaCUzQW1tJTNBc3MlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyQiUyQ0FKWGpRJTJGbElSLi4lMkJwU2tYS0IlMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRUNhbGNWYWwuMC5IZWl6dW5nLkJyZW5uZXIuWmVpdHN0ZW1wZWwyX1VocnplaXQlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0aW1lX2dldCUyMiUyMGlkJTNEJTIyeCUyRkRwY0YoJTYwJTI1T250UE4lMkN6JTNGNWd0JTIyJTNFJTNDbXV0YXRpb24lMjBmb3JtYXQlM0QlMjJmYWxzZSUyMiUyMGxhbmd1YWdlJTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QVElPTiUyMiUzRWhoJTNBbW0lM0FzcyUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjI4a2J1LlYlM0E1blRpT0piMGNoMC0uJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsM19VaHJ6ZWl0JTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGltZV9nZXQlMjIlMjBpZCUzRCUyMlNGJTVEJTIzUmJhc09oanclM0IlN0NzUWtIYjAlMjIlM0UlM0NtdXRhdGlvbiUyMGZvcm1hdCUzRCUyMmZhbHNlJTIyJTIwbGFuZ3VhZ2UlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1BUSU9OJTIyJTNFaGglM0FtbSUzQXNzJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fZXh0JTIyJTIwaWQlM0QlMjIocColN0RPOG0wZlclMkZFWTVEJTJDJTJCV1JsJTIyJTIweCUzRCUyMjYzJTIyJTIweSUzRCUyMi04ODclMjIlM0UlM0NtdXRhdGlvbiUyMGl0ZW1zJTNEJTIyMSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09ORElUSU9OJTIyJTNFbmUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFDS19DT05ESVRJT04lMjIlM0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMk9JRDAlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIyZmllbGRfb2lkJTIyJTIwaWQlM0QlMjJhJTdEN081WEkhJTIzREdqbSUyQkIoTjcqOCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMm9pZCUyMiUzRXZpZXNzbWFubi4wLmdldC5WaXRvU3RhcnRzQnJlbm5lciUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyU1RBVEVNRU5UJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfaWYlMjIlMjBpZCUzRCUyMnZ4WXNwYyhic2hoJTIzWHdLfiUyQ3olM0YwJTIyJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyYUUlN0J3bSUyM3ZuQ1JrWEtTbFklNUUoREIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUCUyMiUzRUVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlJTIyJTIwaWQlM0QlMjJDeU8lN0QlMjVJMzBnMDElM0RZJTNERCUzQSUyRiU0MCU3QmclMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0V2aWVzc21hbm4uMC5nZXQuVml0b1N0YXR1c1Vtc2NoYWx0dmVudGlsJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJ3U1RpZH5+QmRLT0h4cTAtQ1FWWiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTElM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMlVXJTNGbyglNDAzdylUUWc2dHVTTmslN0RvJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsMyUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyZGh3YSU1RHQlN0J3VHgyYWpYJTdDdyElMjMlNDAlMjUlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsMiUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjIuSXU5M3FHRSE4JTNGX3ZMJTdDb2J4JTI1eiUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5aZWl0c3RlbXBlbDIlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMlNvejRtZnchb2lXJTNGTDElN0M2YVIlNUVEJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5aZWl0c3RlbXBlbDElM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyKVJKcDRWRHNTcH4lM0YwJTdEbG9HKlR+JTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsMSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm9uX3NvdXJjZSUyMiUyMGlkJTNEJTIyZiU1RVRwJTVCeXE3MiUzQmhkYjd+UyFDS00lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFc3RhdGUudHMlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyei1xaCU3Q05CayU3QzZJJTdCMCUyQjElN0Nxdi54JTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsM19EYXR1bSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyZyg0TXpmYyUyQkFJJTJGbWFDJTdENm8lN0NWVyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRUNhbGNWYWwuMC5IZWl6dW5nLkJyZW5uZXIuWmVpdHN0ZW1wZWwyX0RhdHVtJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMiU0MEh4VXR1Z1Fxb2hrJTVCMzdGUl8lM0IzJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsMl9EYXR1bSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyZCUyNVIwQ0spbExOT00lM0EzdUpSIUUlM0QlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsMV9EYXR1bSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJOJTNBMHIlM0ElM0QlM0JIQVVzJTI1JTdDQSU3QzclM0ElNUUlM0ZiJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsMV9EYXR1bSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRpbWVfZ2V0JTIyJTIwaWQlM0QlMjIlMjVPX2NkMHVOcCUyRnJUJTNEN25NQVIlN0RwJTIyJTNFJTNDbXV0YXRpb24lMjBmb3JtYXQlM0QlMjJmYWxzZSUyMiUyMGxhbmd1YWdlJTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QVElPTiUyMiUzRURELk1NLllZWVklM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyekxXUHN1JTNEbkN5M2o0MWNxJTJGYW1oJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsM19VaHJ6ZWl0JTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlJTIyJTIwaWQlM0QlMjIlMjUlNUVUV25CRCEoJTdDWGRDT2RGbTMlM0JPJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5aZWl0c3RlbXBlbDJfVWhyemVpdCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJJcyU1RXQtcyUyM3h+bE4lNDBSVyU3Qk85JTIzT0MlMjIlM0UlM0NtdXRhdGlvbiUyMGRlbGF5X2lucHV0JTNEJTIyZmFsc2UlMjIlM0UlM0MlMkZtdXRhdGlvbiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRUNhbGNWYWwuMC5IZWl6dW5nLkJyZW5uZXIuWmVpdHN0ZW1wZWwyX1VocnplaXQlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMldJVEhfREVMQVklMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMjNzJTNEUiU3Q0RDfmNacik5JTdDJTIzSjlpNSU0MCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRUNhbGNWYWwuMC5IZWl6dW5nLkJyZW5uZXIuWmVpdHN0ZW1wZWwxX1VocnplaXQlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyKmQ2aURFJTJGMCUzRiU1RHglM0Ipa1QxUVU1NyUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5aZWl0c3RlbXBlbDFfVWhyemVpdCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnRpbWVfZ2V0JTIyJTIwaWQlM0QlMjIyM2slNUROdCUzQktXekkxeVkqaCU3RExoayUyMiUzRSUzQ211dGF0aW9uJTIwZm9ybWF0JTNEJTIyZmFsc2UlMjIlMjBsYW5ndWFnZSUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPUFRJT04lMjIlM0VoaCUzQW1tJTNBc3MlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbCUyMiUyMGlkJTNEJTIyQXclNUJBQ1opJTJCS1ozJTIzMiU2MFlYeEhociUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5BYnN0YW5kMSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfYXJpdGhtZXRpYyUyMiUyMGlkJTNEJTIycDNZKmhFISUzRiU2MHIlMjNZfnY4N18lMkMlN0J6JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VNSU5VUyUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyNXRHZiU1QnF1JTVFOUtHcmo5MCFTOVYlMkIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UxJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMk9kNXRYSiU2MCUyMyU1RTMlN0J2USUzQiUyQm0lNUUlN0RaaSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRUNhbGNWYWwuMC5IZWl6dW5nLkJyZW5uZXIuWmVpdHN0ZW1wZWwxJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyJTVCZyUzRCUzQn5QMmdfUVRrISU1RCllY2JSTyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTElM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyQl9YZyUzQTglMkYuaWElM0RJRUZWc2QlMkNOJTI1JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5aZWl0c3RlbXBlbDIlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbW1lbnQlMjIlMjBpZCUzRCUyMi5vZCUyMyUyQ2ZLczM5ciU3Q3BmJTYwWDN+YjAlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT01NRU5UJTIyJTNFQWJzdGFuZCUyMFRha3R1bmcxJTNEJTIwWmVpdHN0ZW1wZWwxLVplaXRzdGVtcGVsMiUyMCU1Qm1pbiU1RCUzQyUyRmZpZWxkJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMmR0JTVFKCU3Qn5kYiUzRFpaMCU3QzRWNjFmaCU1RSUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5BYnN0YW5kMiUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfYXJpdGhtZXRpYyUyMiUyMGlkJTNEJTIyJTJGJTNCbElNJTQwM2ctKSUyQy4lN0NvWUZIbUV3JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VNSU5VUyUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyNXRHZiU1QnF1JTVFOUtHcmo5MCFTOVYlMkIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UxJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMjhOJTJGJTdCMjZkLjFqRyUzRlMlM0ZMbEklMkJTJTVCJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5aZWl0c3RlbXBlbDIlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjIlNUJnJTNEJTNCflAyZ19RVGshJTVEKWVjYlJPJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMSUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlJTIyJTIwaWQlM0QlMjIlNjBOMkp5SiU3Q2clNURZT1FFJTJCSSUyM00xLUclMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VDYWxjVmFsLjAuSGVpenVuZy5CcmVubmVyLlplaXRzdGVtcGVsMyUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29tbWVudCUyMiUyMGlkJTNEJTIyd1lBcHdvZiUyQlglM0Y0QlglNjAlN0RZcGgtJTQwJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRUFic3RhbmQlMjBUYWt0dW5nMSUzRCUyMFplaXRzdGVtcGVsMi1aZWl0c3RlbXBlbDMlMjAlNUJtaW4lNUQlM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19pZiUyMiUyMGlkJTNEJTIySFJTLSUyNTEyVUE4eiUyNVIqZGZadmZNJTIyJTNFJTNDbXV0YXRpb24lMjBlbHNlJTNEJTIyMSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfb3BlcmF0aW9uJTIyJTIwaWQlM0QlMjJpdGZ2c04lMjVILi5PWCUyNTklM0Y5ZEVQYyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFQU5EJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIyJTNBJTNEOSpxMn4lNDBZSDklNDB3JTdCJTNEUWclNjA0LiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFTFQlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMkZYJTNGJTQwMyUyM3Z1cU0lM0QlMjVWRWFwbWFUcSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRUNhbGNWYWwuMC5IZWl6dW5nLkJyZW5uZXIuQWJzdGFuZDElM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMiUzRE5aJTNEUzc5d3RGdHYlN0Q0anRTZElKJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMzYwMDAwMCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfY29tcGFyZSUyMiUyMGlkJTNEJTIySCljJTNCc0psVy5CdnRGJTYwbl8qZEhiJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT1AlMjIlM0VMVCUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyJTJCJTIzLiU3Qy1NNFA4U3V1SzN1VFJVJTNCVCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRUNhbGNWYWwuMC5IZWl6dW5nLkJyZW5uZXIuQWJzdGFuZDIlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJCJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMig5Uy0lM0IzWGpIaiUyM1MlNUJyWHNGU0Y3JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMzYwMDAwMCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMlglM0Z5byklN0JnMFYyTy56KTlRR2pMSCUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5UYWt0ZW5fZXJrYW5udCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMk5UJTNGJTJCJTdCY0FfTVhiISU1RU5NJTNBJTNCJTNBJTJCJTNEJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRVRSVUUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29tbWVudCUyMiUyMGlkJTNEJTIyN2ZNOUpuJTVFOTZnayU3Q04lMjVuJTQwMkMlM0JTJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRWZhbGxzJTIwQWJzdGFuZCUyMDElMjB1bmQlMjAyJTIwJTI2bHQlM0IlMjAxaCUyQyUyMGRhbm4lMjBCcmVubmVydGFrdGVuJTIwZXJrYW5udCUyMCUzRCUyMDElM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkVMU0UlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sJTIyJTIwaWQlM0QlMjJTQ20lN0JFJTJDVSUzRjZDOEklM0QwbHdGJTdCJTdEVCUyMiUzRSUzQ211dGF0aW9uJTIwZGVsYXlfaW5wdXQlM0QlMjJmYWxzZSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFQ2FsY1ZhbC4wLkhlaXp1bmcuQnJlbm5lci5UYWt0ZW5fZXJrYW5udCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMkkoZlolNUUlNjBEJTI1aiU0MCU2MHpCKSU3Q0VkMFF+JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ4bWwlM0U=

      Folgend sieht man einen Tagesverlauf aus flot:

      2019-02-15_21-14-45.jpg

      rantanplanR Offline
      rantanplanR Offline
      rantanplan
      schrieb am zuletzt editiert von
      #2

      @passuff Ich empfehle bei solchen Sachen immer den Debug Baustein.
      Zu beachten ist auch noch, das JavaScript asynchron arbeitet.
      Das heist ein Befehl wird ausgeführt obwohl der vorherige noch nicht komplett abgearbeitet wurde.

      "steuere..." wartet auf eine Bestätigung. Ist deshalb bei Aktoren wichtig und einzusetzen.
      Aber wie gesagt, während auf die Bestätigung gewartet wird, werden die nachfolgenden Befehle bereits ausgeführt.

      Bei Variablen/Datenpunkte setzt man besser "aktualisiere...." ein.
      Aber auch dass läuft asynchron.
      Befehl 1: schreibe 50.000 Textzeichen in Datenpunkt A
      Befehl 2: schreibe Zahl 5 in Datenpunkt B
      Befehl 2 wird bereits ausgeführt während Befehl 1 noch "arbeitet"

      Und Blockly-Leute können meisst nichts mit einem JavaScript Export anfangen:relaxed:

      Grüße

      Rantanplan

      CCU3 / MS Server 2019(VM) / Scripten mit Blockly

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        passuff
        schrieb am zuletzt editiert von
        #3

        @rantanplan
        MIr war nicht bewusst, dass js asynchron arbeitet. Danke für den Hinweis. Die Debug Bausteine sind eigentlich vorhanden, habe ich aber für die Übersichtlichkeit des Screenshots entfernt.
        Mit deinen Hinweisen komme ich nicht richtig weiter. Wo ich was einsetzen soll ist mir hier nicht klar. Kannst du vl noch mal etwas konkreter werden?

        rantanplanR 1 Antwort Letzte Antwort
        0
        • P passuff

          @rantanplan
          MIr war nicht bewusst, dass js asynchron arbeitet. Danke für den Hinweis. Die Debug Bausteine sind eigentlich vorhanden, habe ich aber für die Übersichtlichkeit des Screenshots entfernt.
          Mit deinen Hinweisen komme ich nicht richtig weiter. Wo ich was einsetzen soll ist mir hier nicht klar. Kannst du vl noch mal etwas konkreter werden?

          rantanplanR Offline
          rantanplanR Offline
          rantanplan
          schrieb am zuletzt editiert von
          #4

          @passuff Habe ich doch geschrieben. Tausche mal als erstes die "steuere" Bausteine gegen "aktualisiere" Bausteine. Vielleicht hilft das schon.

          Rantanplan

          CCU3 / MS Server 2019(VM) / Scripten mit Blockly

          1 Antwort Letzte Antwort
          0
          • P Offline
            P Offline
            passuff
            schrieb am zuletzt editiert von
            #5

            @rantanplan
            Ich habe die Bausteine getauscht. Zusätzlich habe ich noch timeouts (1000ms) gesetzt:

            2019-02-15_21-09-42.jpg

            Blockly export:

            Takten_erkennen.txt

            Leider funktioniert es immer noch nicht:

            2019-02-18_17-29-03.jpg

            Sobald hellblau auf 3(Warmwasser) springt, sollten die Zeitstempel auf Zeitstempel mit Abständen >1h gesetzt werden. Es sollte daher eigentlich nicht passsieren, dass nach Warmwasser eine Auslösung erkannt wird. Ich habe leider die Zeitstempel nicht mitgeloggt.
            Zusätzlich wird das Takten am Anfang der Aufzeichnung nach 5 anstatt 3 Brennerstarts erkannt. Die Abstände der ersten drei Brennerstarts sind beide < 1h!
            Was mache ich hier falsch?

            rantanplanR 1 Antwort Letzte Antwort
            0
            • P passuff

              @rantanplan
              Ich habe die Bausteine getauscht. Zusätzlich habe ich noch timeouts (1000ms) gesetzt:

              2019-02-15_21-09-42.jpg

              Blockly export:

              Takten_erkennen.txt

              Leider funktioniert es immer noch nicht:

              2019-02-18_17-29-03.jpg

              Sobald hellblau auf 3(Warmwasser) springt, sollten die Zeitstempel auf Zeitstempel mit Abständen >1h gesetzt werden. Es sollte daher eigentlich nicht passsieren, dass nach Warmwasser eine Auslösung erkannt wird. Ich habe leider die Zeitstempel nicht mitgeloggt.
              Zusätzlich wird das Takten am Anfang der Aufzeichnung nach 5 anstatt 3 Brennerstarts erkannt. Die Abstände der ersten drei Brennerstarts sind beide < 1h!
              Was mache ich hier falsch?

              rantanplanR Offline
              rantanplanR Offline
              rantanplan
              schrieb am zuletzt editiert von
              #6

              Was mache ich hier falsch?
              Da musst Du Dich langsam ran tasten.
              Diese "CalVal.0.........." sind alles selbst angelegte Datenpunkte? Welcher Typ?

              Als erstes würde ich die beiden Trigger jeweils in ein separates Blockly packen. Vereinfacht die Fehlersuche.

              Du hast zwar reichlich Debugs eingesetzt, aber an der falschen Stelle. Dich interessiert doch erstmal ob die Reihenfolge
              der Befehle richtig ist. Also setze doch den Debug unter dem "aktualisiere"
              Im Timer "timeout" unter aktualisiere
              Debug "***timeout"

              Im Timer "timeout2" unter aktualisiere
              Debug "***timeout2"

              usw.
              Dann siehst Du eventuell ob der Timer3 vor Timer2 ausgeführt wird.
              Am Besten noch jedesmal mit den ALLEN Werten.

              Noch etwas zum Ablauf.
              Du hast jeden Timer mit 1000ms angelegt. Jetzt überlege mal was passiert..........
              .....
              .....
              Richtig. Die Timer laufen wieder alle zur gleichen Zeit los. Da hättest Du sie auch weg lassen können.
              Asynchrone Abarbeitung!!!!
              Ein Timer unterbricht NICHT den Programmablauf.
              Nachfolgende Befehle werden SOFORT ausgeführt.

              Wenn Du innerhalb der Timer Debugs gesetzt hättest, wäre Dir das schon aufgefallen.
              Deine Ausgabe NACH den Timern wären zuerst gekommen und dann die aus den Timern.

              Grüße

              Rantanplan

              CCU3 / MS Server 2019(VM) / Scripten mit Blockly

              P 1 Antwort Letzte Antwort
              0
              • rantanplanR rantanplan

                Was mache ich hier falsch?
                Da musst Du Dich langsam ran tasten.
                Diese "CalVal.0.........." sind alles selbst angelegte Datenpunkte? Welcher Typ?

                Als erstes würde ich die beiden Trigger jeweils in ein separates Blockly packen. Vereinfacht die Fehlersuche.

                Du hast zwar reichlich Debugs eingesetzt, aber an der falschen Stelle. Dich interessiert doch erstmal ob die Reihenfolge
                der Befehle richtig ist. Also setze doch den Debug unter dem "aktualisiere"
                Im Timer "timeout" unter aktualisiere
                Debug "***timeout"

                Im Timer "timeout2" unter aktualisiere
                Debug "***timeout2"

                usw.
                Dann siehst Du eventuell ob der Timer3 vor Timer2 ausgeführt wird.
                Am Besten noch jedesmal mit den ALLEN Werten.

                Noch etwas zum Ablauf.
                Du hast jeden Timer mit 1000ms angelegt. Jetzt überlege mal was passiert..........
                .....
                .....
                Richtig. Die Timer laufen wieder alle zur gleichen Zeit los. Da hättest Du sie auch weg lassen können.
                Asynchrone Abarbeitung!!!!
                Ein Timer unterbricht NICHT den Programmablauf.
                Nachfolgende Befehle werden SOFORT ausgeführt.

                Wenn Du innerhalb der Timer Debugs gesetzt hättest, wäre Dir das schon aufgefallen.
                Deine Ausgabe NACH den Timern wären zuerst gekommen und dann die aus den Timern.

                Grüße

                P Offline
                P Offline
                passuff
                schrieb am zuletzt editiert von
                #7

                @rantanplan sagte in Abstände zwischen mehreren Events berechnen:

                Was mache ich hier falsch?
                Da musst Du Dich langsam ran tasten.
                Diese "CalVal.0.........." sind alles selbst angelegte Datenpunkte? Welcher Typ?

                Die Datenpunkte, Abstand* und Zeitstempel* sind selbst angelegt und vom Typ Zahl.

                Als erstes würde ich die beiden Trigger jeweils in ein separates Blockly packen. Vereinfacht die Fehlersuche.

                Wird erledigt.

                Du hast zwar reichlich Debugs eingesetzt, aber an der falschen Stelle. Dich interessiert doch erstmal ob die Reihenfolge
                der Befehle richtig ist. Also setze doch den Debug unter dem "aktualisiere"
                Im Timer "timeout" unter aktualisiere
                Debug "***timeout"

                Im Timer "timeout2" unter aktualisiere
                Debug "***timeout2"

                usw.
                Dann siehst Du eventuell ob der Timer3 vor Timer2 ausgeführt wird.
                Wird erledigt.

                Am Besten noch jedesmal mit den ALLEN Werten.

                Verstehe ich nicht.

                Noch etwas zum Ablauf.
                Du hast jeden Timer mit 1000ms angelegt. Jetzt überlege mal was passiert..........
                .....
                .....
                Richtig. Die Timer laufen wieder alle zur gleichen Zeit los. Da hättest Du sie auch weg lassen können.
                Asynchrone Abarbeitung!!!!
                Ein Timer unterbricht NICHT den Programmablauf.

                Dessen war ich mir nicht bewusst. Ich habe gehofft das so zu umgehen.

                Nachfolgende Befehle werden SOFORT ausgeführt.

                Wenn Du innerhalb der Timer Debugs gesetzt hättest, wäre Dir das schon aufgefallen.
                Deine Ausgabe NACH den Timern wären zuerst gekommen und dann die aus den Timern.

                Grüße

                Ich habe auch Events gefunden die scheinbar korrekt funktionieren. Es scheint, als wird der code nicht jedes mal identisch ausgeführt.
                Mit den neuen debugs sollte ich dem aber auf die Spur kommen.
                Danke dir, ich werde berichten.

                1 Antwort Letzte Antwort
                0
                • P Offline
                  P Offline
                  passuff
                  schrieb am zuletzt editiert von passuff
                  #8

                  hier der neue Code:

                  Takten erkennen:
                  Takten Erkennen.txt

                  Takten Erkennen löschen:
                  Takten Erkennen löschen.txt
                  hier das Ergebnis:

                  2019-02-21 00:08:37.346 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_erkennen_löschen: Umschaltventil = 3 --> Brenner Takten erkannt = 0 um: 25845064 ms
                  2019-02-21 00:08:37.355 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_erkennen_löschen: Zeitstempel aktueller Brennerstart (fake): 25845064 min
                  2019-02-21 00:08:37.355 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_erkennen_löschen: Zeitstempel ein Brennerstart zuvor (fake): 25845052 min
                  2019-02-21 00:08:37.356 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_erkennen_löschen: Zeitstempel zwei Brennerstarts zuvor (fake): 0 min
                  2019-02-21 00:08:37.356 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_erkennen_löschen: Abstand zwischen aktuellem und vorherigem Brennerstart : 0 min
                  2019-02-21 00:08:37.357 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_erkennen_löschen: Abstand zwischen vorletztem und letztem Brennerstart: 0 min

                  2019-02-21 00:24:58.191 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel aktueller Brennerstart: 25845007 min
                  2019-02-21 00:24:58.191 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel ein Brennerstart zuvor: 25844945 min
                  2019-02-21 00:24:58.192 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel zwei Brennerstarts zuvor: 25844884 min
                  2019-02-21 00:24:58.193 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen aktuellem und vorherigem Brennerstart : 13 min
                  2019-02-21 00:24:58.193 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen vorletztem und letztem Brennerstart: 5 min
                  2019-02-21 00:24:58.193 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Brennertakten erkannt

                  2019-02-21 01:00:59.023 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel aktueller Brennerstart: 25845085 min
                  2019-02-21 01:00:59.023 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel ein Brennerstart zuvor: 25845007 min
                  2019-02-21 01:00:59.024 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel zwei Brennerstarts zuvor: 25844945 min
                  2019-02-21 01:00:59.024 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen aktuellem und vorherigem Brennerstart : 62 min
                  2019-02-21 01:00:59.025 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen vorletztem und letztem Brennerstart: 62 min

                  2019-02-21 01:05:29.183 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel aktueller Brennerstart: 25845121 min
                  2019-02-21 01:05:29.183 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel ein Brennerstart zuvor: 25845085 min
                  2019-02-21 01:05:29.183 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel zwei Brennerstarts zuvor: 25845007 min
                  2019-02-21 01:05:29.184 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen aktuellem und vorherigem Brennerstart : 78 min
                  2019-02-21 01:05:29.185 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen vorletztem und letztem Brennerstart: 62 min

                  2019-02-21 01:17:20.130 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel aktueller Brennerstart: 25845125 min
                  2019-02-21 01:17:20.130 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel ein Brennerstart zuvor: 25845121 min
                  2019-02-21 01:17:20.131 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel zwei Brennerstarts zuvor: 25845085 min
                  2019-02-21 01:17:20.132 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen aktuellem und vorherigem Brennerstart : 36 min
                  2019-02-21 01:17:20.132 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen vorletztem und letztem Brennerstart: 78 min

                  2019-02-21 01:22:00.254 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel aktueller Brennerstart: 25845137 min
                  2019-02-21 01:22:00.255 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel ein Brennerstart zuvor: 25845125 min
                  2019-02-21 01:22:00.255 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel zwei Brennerstarts zuvor: 25845121 min
                  2019-02-21 01:22:00.256 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen aktuellem und vorherigem Brennerstart : 5 min
                  2019-02-21 01:22:00.256 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen vorletztem und letztem Brennerstart: 36 min
                  2019-02-21 01:22:00.256 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Brennertakten erkannt

                  Wie man sieht, funktioniert weder das Setzen von Zeitstempeln, noch das Berechnen der Abstände zuverlässig. Ich glaube mittlerweile, das Ganze ist mit JS einfach nicht umsetzbar.
                  Jemand ne Idee?

                  rantanplanR 1 Antwort Letzte Antwort
                  0
                  • P passuff

                    hier der neue Code:

                    Takten erkennen:
                    Takten Erkennen.txt

                    Takten Erkennen löschen:
                    Takten Erkennen löschen.txt
                    hier das Ergebnis:

                    2019-02-21 00:08:37.346 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_erkennen_löschen: Umschaltventil = 3 --> Brenner Takten erkannt = 0 um: 25845064 ms
                    2019-02-21 00:08:37.355 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_erkennen_löschen: Zeitstempel aktueller Brennerstart (fake): 25845064 min
                    2019-02-21 00:08:37.355 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_erkennen_löschen: Zeitstempel ein Brennerstart zuvor (fake): 25845052 min
                    2019-02-21 00:08:37.356 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_erkennen_löschen: Zeitstempel zwei Brennerstarts zuvor (fake): 0 min
                    2019-02-21 00:08:37.356 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_erkennen_löschen: Abstand zwischen aktuellem und vorherigem Brennerstart : 0 min
                    2019-02-21 00:08:37.357 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_erkennen_löschen: Abstand zwischen vorletztem und letztem Brennerstart: 0 min

                    2019-02-21 00:24:58.191 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel aktueller Brennerstart: 25845007 min
                    2019-02-21 00:24:58.191 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel ein Brennerstart zuvor: 25844945 min
                    2019-02-21 00:24:58.192 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel zwei Brennerstarts zuvor: 25844884 min
                    2019-02-21 00:24:58.193 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen aktuellem und vorherigem Brennerstart : 13 min
                    2019-02-21 00:24:58.193 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen vorletztem und letztem Brennerstart: 5 min
                    2019-02-21 00:24:58.193 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Brennertakten erkannt

                    2019-02-21 01:00:59.023 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel aktueller Brennerstart: 25845085 min
                    2019-02-21 01:00:59.023 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel ein Brennerstart zuvor: 25845007 min
                    2019-02-21 01:00:59.024 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel zwei Brennerstarts zuvor: 25844945 min
                    2019-02-21 01:00:59.024 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen aktuellem und vorherigem Brennerstart : 62 min
                    2019-02-21 01:00:59.025 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen vorletztem und letztem Brennerstart: 62 min

                    2019-02-21 01:05:29.183 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel aktueller Brennerstart: 25845121 min
                    2019-02-21 01:05:29.183 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel ein Brennerstart zuvor: 25845085 min
                    2019-02-21 01:05:29.183 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel zwei Brennerstarts zuvor: 25845007 min
                    2019-02-21 01:05:29.184 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen aktuellem und vorherigem Brennerstart : 78 min
                    2019-02-21 01:05:29.185 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen vorletztem und letztem Brennerstart: 62 min

                    2019-02-21 01:17:20.130 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel aktueller Brennerstart: 25845125 min
                    2019-02-21 01:17:20.130 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel ein Brennerstart zuvor: 25845121 min
                    2019-02-21 01:17:20.131 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel zwei Brennerstarts zuvor: 25845085 min
                    2019-02-21 01:17:20.132 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen aktuellem und vorherigem Brennerstart : 36 min
                    2019-02-21 01:17:20.132 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen vorletztem und letztem Brennerstart: 78 min

                    2019-02-21 01:22:00.254 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel aktueller Brennerstart: 25845137 min
                    2019-02-21 01:22:00.255 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel ein Brennerstart zuvor: 25845125 min
                    2019-02-21 01:22:00.255 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Zeitstempel zwei Brennerstarts zuvor: 25845121 min
                    2019-02-21 01:22:00.256 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen aktuellem und vorherigem Brennerstart : 5 min
                    2019-02-21 01:22:00.256 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Abstand zwischen vorletztem und letztem Brennerstart: 36 min
                    2019-02-21 01:22:00.256 - info: javascript.0 script.js.common.Heizung_Kamin.Takten_Erkennen: Brennertakten erkannt

                    Wie man sieht, funktioniert weder das Setzen von Zeitstempeln, noch das Berechnen der Abstände zuverlässig. Ich glaube mittlerweile, das Ganze ist mit JS einfach nicht umsetzbar.
                    Jemand ne Idee?

                    rantanplanR Offline
                    rantanplanR Offline
                    rantanplan
                    schrieb am zuletzt editiert von
                    #9

                    @passuff Keine Ahnung wie Du das exportiert hast. Kann ich nicht importieren.
                    Vor dem <xml und nach dem </xml darf nichts stehen.

                    Das ganze Problem hat wohl nichts JS zutun. Eher mit der "trägen" Komunikation im System.

                    Mach doch noch einen Versuch.
                    Alle Benötigten Daten am Anfang in LOKALE Variablen schreiben.
                    Vergleiche, Berechnungen mit den Variablen durchführen und dann alle zurückschreiben.

                    Rantanplan

                    CCU3 / MS Server 2019(VM) / Scripten mit Blockly

                    1 Antwort Letzte Antwort
                    0
                    • P Offline
                      P Offline
                      passuff
                      schrieb am zuletzt editiert von
                      #10

                      Sorry, hier die korrigierten uploads:Takten Erkennen.txt Takten Erkennen löschen.txt

                      Ich werde es mit lokalen Variablen erneut versuchen.

                      1 Antwort Letzte Antwort
                      0
                      • P Offline
                        P Offline
                        passuff
                        schrieb am zuletzt editiert von passuff
                        #11

                        Bekomme es nicht mehr zum Laufen. Das Rechnen mit den internen Größen funktioniert. Wenn ich allerding die internen Größen in globale schreiben möchte, bekomme ich aktuell folgende Fehlermeldungen:

                        2019-02-21 23:23:00.032 info instance system.adapter.openweathermap.0 started with pid 4239
                        javascript.0 2019-02-21 23:19:23.619 warn at TCP.onread (net.js:601:20)
                        javascript.0 2019-02-21 23:19:23.619 warn at Socket.Readable.push (_stream_readable.js:208:10)
                        javascript.0 2019-02-21 23:19:23.618 warn at readableAddChunk (_stream_readable.js:250:11)
                        javascript.0 2019-02-21 23:19:23.618 warn at addChunk (_stream_readable.js:263:12)
                        javascript.0 2019-02-21 23:19:23.618 warn at Socket.emit (events.js:211:7)
                        javascript.0 2019-02-21 23:19:23.618 warn at emitOne (events.js:116:13)
                        javascript.0 2019-02-21 23:19:23.618 warn at Socket._ultron.on (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/WebSocket.js:138:22)
                        javascript.0 2019-02-21 23:19:23.618 warn at Receiver.add (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/Receiver.js:139:10)
                        javascript.0 2019-02-21 23:19:23.618 warn at Receiver.startLoop (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/Receiver.js:165:16)
                        javascript.0 2019-02-21 23:19:23.618 warn at Receiver.getData (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/Receiver.js:330:12)
                        javascript.0 2019-02-21 23:19:23.618 warn at Receiver.dataMessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/Receiver.js:389:14)
                        javascript.0 2019-02-21 23:19:23.618 warn at Receiver._receiver.onmessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/WebSocket.js:141:47)
                        javascript.0 2019-02-21 23:19:23.616 warn at WebSocket.emit (events.js:211:7)
                        javascript.0 2019-02-21 23:19:23.616 warn at emitOne (events.js:116:13)
                        javascript.0 2019-02-21 23:19:23.616 warn at WebSocket.onMessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/EventTarget.js:99:16)
                        javascript.0 2019-02-21 23:19:23.615 warn at WebSocket.ws.onmessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transports/websocket.js:147:10)
                        javascript.0 2019-02-21 23:19:23.615 warn at WS.Transport.onData (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transport.js:137:8)
                        javascript.0 2019-02-21 23:19:23.615 warn at WS.Transport.onPacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transport.js:145:8)
                        javascript.0 2019-02-21 23:19:23.615 warn at WS.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
                        javascript.0 2019-02-21 23:19:23.615 warn at WS.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/socket.js:273:10)
                        javascript.0 2019-02-21 23:19:23.615 warn at Socket.onPacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/socket.js:456:14)
                        javascript.0 2019-02-21 23:19:23.615 warn at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
                        javascript.0 2019-02-21 23:19:23.615 warn at Socket.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
                        javascript.0 2019-02-21 23:19:23.615 warn at Manager.ondata (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:335:16)
                        javascript.0 2019-02-21 23:19:23.615 warn at Decoder.add (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-parser/index.js:251:12)
                        javascript.0 2019-02-21 23:19:23.615 warn at Decoder.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
                        javascript.0 2019-02-21 23:19:23.615 warn at Decoder.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
                        javascript.0 2019-02-21 23:19:23.615 warn at Manager.ondecoded (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:345:8)
                        javascript.0 2019-02-21 23:19:23.614 warn at Manager.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
                        javascript.0 2019-02-21 23:19:23.614 warn at Manager.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
                        javascript.0 2019-02-21 23:19:23.614 warn at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:236:12)
                        javascript.0 2019-02-21 23:19:23.614 warn at Socket.onevent (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:278:10)
                        javascript.0 2019-02-21 23:19:23.614 warn at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
                        javascript.0 2019-02-21 23:19:23.614 warn at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:52:30)
                        javascript.0 2019-02-21 23:19:23.614 warn at Object.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3425:37)
                        javascript.0 2019-02-21 23:19:23.614 warn at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:358:25)
                        javascript.0 2019-02-21 23:19:23.614 warn at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:961:38)
                        javascript.0 2019-02-21 23:19:23.614 warn at Object.<anonymous> (script.js.common.Heizung_Kamin.Takten_Erkennen:55:5)
                        javascript.0 2019-02-21 23:19:23.614 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1255:20)
                        javascript.0 2019-02-21 23:19:23.613 warn Wrong type of CalcVal.0.Heizung.Brenner.Zeitstempel3: "object". Please fix, while deprecated and will not work in next versions.
                        javascript.0 2019-02-21 23:19:23.613 warn at TCP.onread (net.js:601:20)
                        javascript.0 2019-02-21 23:19:23.613 warn at Socket.Readable.push (_stream_readable.js:208:10)
                        javascript.0 2019-02-21 23:19:23.613 warn at readableAddChunk (_stream_readable.js:250:11)
                        javascript.0 2019-02-21 23:19:23.613 warn at addChunk (_stream_readable.js:263:12)
                        javascript.0 2019-02-21 23:19:23.613 warn at Socket.emit (events.js:211:7)
                        javascript.0 2019-02-21 23:19:23.613 warn at emitOne (events.js:116:13)
                        javascript.0 2019-02-21 23:19:23.613 warn at Socket._ultron.on (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/WebSocket.js:138:22)
                        javascript.0 2019-02-21 23:19:23.613 warn at Receiver.add (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/Receiver.js:139:10)
                        javascript.0 2019-02-21 23:19:23.613 warn at Receiver.startLoop (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/Receiver.js:165:16)
                        javascript.0 2019-02-21 23:19:23.613 warn at Receiver.getData (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/Receiver.js:330:12)
                        javascript.0 2019-02-21 23:19:23.613 warn at Receiver.dataMessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/Receiver.js:389:14)
                        javascript.0 2019-02-21 23:19:23.613 warn at Receiver._receiver.onmessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/WebSocket.js:141:47)
                        javascript.0 2019-02-21 23:19:23.613 warn at WebSocket.emit (events.js:211:7)
                        javascript.0 2019-02-21 23:19:23.613 warn at emitOne (events.js:116:13)
                        javascript.0 2019-02-21 23:19:23.612 warn at WebSocket.onMessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/EventTarget.js:99:16)
                        javascript.0 2019-02-21 23:19:23.612 warn at WebSocket.ws.onmessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transports/websocket.js:147:10)
                        javascript.0 2019-02-21 23:19:23.612 warn at WS.Transport.onData (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transport.js:137:8)
                        javascript.0 2019-02-21 23:19:23.612 warn at WS.Transport.onPacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transport.js:145:8)
                        javascript.0 2019-02-21 23:19:23.612 warn at WS.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
                        javascript.0 2019-02-21 23:19:23.612 warn at WS.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/socket.js:273:10)
                        javascript.0 2019-02-21 23:19:23.612 warn at Socket.onPacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/socket.js:456:14)
                        javascript.0 2019-02-21 23:19:23.612 warn at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
                        javascript.0 2019-02-21 23:19:23.612 warn at Socket.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
                        javascript.0 2019-02-21 23:19:23.612 warn at Manager.ondata (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:335:16)
                        javascript.0 2019-02-21 23:19:23.612 warn at Decoder.add (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-parser/index.js:251:12)
                        javascript.0 2019-02-21 23:19:23.612 warn at Decoder.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
                        javascript.0 2019-02-21 23:19:23.612 warn at Decoder.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
                        javascript.0 2019-02-21 23:19:23.612 warn at Manager.ondecoded (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:345:8)
                        javascript.0 2019-02-21 23:19:23.611 warn at Manager.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
                        javascript.0 2019-02-21 23:19:23.611 warn at Manager.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
                        javascript.0 2019-02-21 23:19:23.611 warn at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:236:12)
                        javascript.0 2019-02-21 23:19:23.611 warn at Socket.onevent (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:278:10)
                        javascript.0 2019-02-21 23:19:23.611 warn at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
                        javascript.0 2019-02-21 23:19:23.611 warn at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:52:30)
                        javascript.0 2019-02-21 23:19:23.611 warn at Object.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3425:37)
                        javascript.0 2019-02-21 23:19:23.611 warn at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:358:25)
                        javascript.0 2019-02-21 23:19:23.611 warn at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:961:38)
                        javascript.0 2019-02-21 23:19:23.611 warn at Object.<anonymous> (script.js.common.Heizung_Kamin.Takten_Erkennen:54:5)
                        javascript.0 2019-02-21 23:19:23.611 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1255:20)
                        javascript.0 2019-02-21 23:19:23.611 warn Wrong type of CalcVal.0.Heizung.Brenner.Zeitstempel2: "object". Please fix, while deprecated and will not work in next versions.

                        "warn Wrong type of CalcVal.0.Heizung.Brenner.Zeitstempel2: "object". Please fix, while deprecated and will not work in next versions."

                        Was bedeutet das?

                        EDIT: Takten Erkennen .txt

                        Habe nun alle internen Variablen nach Zahl konvertiert. Jetzt scheint es zu funktionieren. Erscheint mir wie ein bug.

                        1 Antwort Letzte Antwort
                        0
                        • rantanplanR Offline
                          rantanplanR Offline
                          rantanplan
                          schrieb am zuletzt editiert von
                          #12

                          Ist kein Bug!
                          Locale Variablen haben bei Scriptstart keinen Typ. Der ist immer "nothing".
                          "nothing" + "nothing" = ERROR
                          "nothing" + 1 = ERROR
                          steuere .....State mit "nothing" = ERROR
                          Erst wenn die ihren ersten Wert zugewieden bekommen, kriegen die auch ihren "Typ".
                          Deshalb sollte man lokale Variablen IMMER bei Scriptstart initialisieren. (also ausserhalb des Triggers)
                          Var1=0 (Typ Zahl"
                          Var2="" (Typ Text)
                          Var3=unwahr (Typ bool)

                          Ich bekomme Dein Script nicht importiert. Kann daran liegen, dass ich momentan mit einer Betaversion arbeite.
                          Oder du musst das Blockly mal "aufräumen":relaxed:

                          Rantanplan

                          CCU3 / MS Server 2019(VM) / Scripten mit Blockly

                          1 Antwort Letzte Antwort
                          0
                          • P Offline
                            P Offline
                            passuff
                            schrieb am zuletzt editiert von
                            #13

                            @rantanplan sagte in Abstände zwischen mehreren Events berechnen (Blockly):

                            Var1=0 (Typ Zahl"

                            Danke für den Hinweis. Das macht natürlich Sinn.

                            1 Antwort Letzte Antwort
                            0
                            • P Offline
                              P Offline
                              passuff
                              schrieb am zuletzt editiert von passuff
                              #14

                              Ich melde mich mal wieder zurück. Leider funktioniert das Skript trotz timeouts immer noch nicht wie gewünscht. Die Datenpunkte werden viel zu oft aktualisiert und das Skript scheint oft parallel zu laufen und damit falsche Abstände zu berechnen.
                              Ich versuche noch mal grob zu beschreiben was das Ziel ist.
                              Es sollen die letzten zwei zeitlichen Abstände zwischen zwei Brennerstarts meiner Heizung berechnet werden. Dazu möchte ich die Variable VitoStartBrenner nutzen. Hintergrund ist das hochfrequentierte ein und ausschalten der Heizung in der Übergangszeit, was ich hiermit detektieren möchte.
                              Hier ist mein aktueller Code. Ich würde mich freuen wenn jemand mal drüber gucken kann. Ich vermute es benötigt einen neuen Ansatz.


                              <xml xmlns="https://developers.google.com/blockly/xml">
                              <variables>
                              <variable type="timeout" id="timeout15">timeout15</variable>
                              <variable id="5t9p1Dxw,$Hk*h.$xcg">Zeitstempel3_lokal</variable> <variable type="timeout" id="timeout16">timeout16</variable> <variable id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</variable> <variable type="timeout" id="timeout17">timeout17</variable> <variable id="Vy[aoB}!u@F)cFH@mb/0">Zeitstempel1_lokal</variable> <variable type="timeout" id="timeout18">timeout18</variable> <variable id="d2Hca]CPU+D32h3H=BU">Abstand1_lokal</variable>
                              <variable type="timeout" id="timeout19">timeout19</variable>
                              <variable id="1AoS_%+:!c@4+#30Vfwe">Abstand2_lokal</variable>
                              <variable type="interval" id="Intervall2">Intervall2</variable>
                              <variable type="timeout" id="timeout20">timeout20</variable>
                              </variables>
                              <block type="on_ext" id="![=JFmD0UB1vtF~|Di^" x="238" y="590"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="}.GxRXPD[M2S[cQVqH;+"> <field name="oid">viessmann.0.get.VitoStartsBrenner</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="7HlOlU2L}V*ajD$g[2?V"> <value name="IF0"> <block type="logic_compare" id="G[M;=~wX%eR1y6S3Bp0?"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="?nU*vx5UEcW,h10-9:LQ"> <field name="ATTR">val</field> <field name="OID">viessmann.0.get.VitoStatusWW</field> </block> </value> <value name="B"> <block type="math_number" id="(N5s_A;npDPuOB,KLj{H"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_settimeout" id="QdNR{j4j-R|H12tkS]OT"> <field name="NAME">timeout15</field> <field name="DELAY">100</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="variables_set" id="O(fNI_zEqWveou,ZN^S">
                              <field name="VAR" id="5t9p1Dxw,$Hk*h.$xcg">Zeitstempel3_lokal</field> <value name="VALUE"> <block type="variables_get" id="(b_hqSV{U5i_JX^Zla-4"> <field name="VAR" id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</field> </block> </value> <next> <block type="debug" id="gH1.Ho}BG1NW6xTLp(b|"> <field name="Severity">log</field> <value name="TEXT"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="if?k_%lLCm:VJ@T[SEoi"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="-L9#zCqB8#w_FI!aQ.%h"> <field name="TEXT">Zeitstempel zwei Brennerstarts zuvor: </field> </block> </value> <value name="ADD1"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">3.1</field> </shadow> <block type="variables_get" id=".vg#,tfOEKE^JYZ(::^P"> <field name="VAR" id="5t9p1Dxw,$Hkh.$xcg">Zeitstempel3_lokal</field>
                              </block>
                              </value>
                              <value name="ADD2">
                              <block type="text" id="R^BmzC3tn..VobsbUSoo">
                              <field name="TEXT"> min</field>
                              </block>
                              </value>
                              </block>
                              </value>
                              </block>
                              </next>
                              </block>
                              </statement>
                              <next>
                              <block type="timeouts_settimeout" id="wx9CQ}h?Isym3TFg0JxW">
                              <field name="NAME">timeout16</field>
                              <field name="DELAY">200</field>
                              <field name="UNIT">ms</field>
                              <statement name="STATEMENT">
                              <block type="variables_set" id="w$Xp5d@5XB?oV60OUMr">
                              <field name="VAR" id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</field>
                              <value name="VALUE">
                              <block type="variables_get" id="[c%eKeX4yJ^c7CWHieYd">
                              <field name="VAR" id="Vy[aoB}!u@F)cFH@mb/0">Zeitstempel1_lokal</field>
                              </block>
                              </value>
                              <next>
                              <block type="debug" id="[|V]B|Bi
                              FmNvu4M[B9.">
                              <field name="Severity">log</field>
                              <value name="TEXT">
                              <shadow xmlns="http://www.w3.org/1999/xhtml" type="text">
                              <field name="TEXT"></field>
                              </shadow>
                              <block type="text_join" id="$22k$xMtESSD/LU)=AZZ">
                              <mutation items="3"></mutation>
                              <value name="ADD0">
                              <block type="text" id="L
                              %35_O}uiiD(o}#X~[]">
                              <field name="TEXT">Zeitstempel ein Brennerstart zuvor: </field>
                              </block>
                              </value>
                              <value name="ADD1">
                              <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number">
                              <field name="NUM">3.1</field>
                              </shadow>
                              <block type="variables_get" id="{%rh+kvn8#XPRw[@6$7g">
                              <field name="VAR" id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</field>
                              </block>
                              </value>
                              <value name="ADD2">
                              <block type="text" id="-c!e^_OC3uti3Ko(p}?@">
                              <field name="TEXT"> min</field>
                              </block>
                              </value>
                              </block>
                              </value>
                              <next>
                              <block type="variables_set" id=")bLkU2c+ueuaq5e+I{j7">
                              <field name="VAR" id="Vy[aoB}!u@F)cFH@mb/0">Zeitstempel1_lokal</field>
                              <value name="VALUE">
                              <block type="math_round" id="e53+s-ZEMM0EwsdO4{Rb">
                              <field name="OP">ROUND</field>
                              <value name="NUM">
                              <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number">
                              <field name="NUM">3.1</field>
                              </shadow>
                              <block type="math_arithmetic" id="!.u3jkS$OIwzWQJq|kov">
                              <field name="OP">DIVIDE</field>
                              <value name="A">
                              <shadow type="math_number">
                              <field name="NUM">1</field>
                              </shadow>
                              <block type="on_source" id="b.)@eGLDxg7:Xe,VA%U"> <field name="ATTR">state.ts</field> </block> </value> <value name="B"> <shadow type="math_number" id="C{Z/CKfe{}Q?hNk4(5N%"> <field name="NUM">60000</field> </shadow> </value> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> <next> <block type="timeouts_settimeout" id="0CEr(SwQ{Ji::6d?s;;B"> <field name="NAME">timeout17</field> <field name="DELAY">300</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="debug" id="o0{OCKkLv6{UsKkehy07"> <field name="Severity">log</field> <value name="TEXT"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id=";/@_22:yltE*a:p@!oyQ"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="5S3cg[pD;U6z?Pj58Z*b"> <field name="TEXT">Zeitstempel aktueller Brennerstart: </field> </block> </value> <value name="ADD1"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">3.1</field> </shadow> <block type="variables_get" id="L_t$@ycd}zlzRdVge!Ef"> <field name="VAR" id="Vy[aoB}!u@F)cFH@mb/0">Zeitstempel1_lokal</field> </block> </value> <value name="ADD2"> <block type="text" id="3S([iSuZQ*|SNNVTL%9#"> <field name="TEXT"> min</field> </block> </value> </block> </value> </block> </statement> <next> <block type="timeouts_settimeout" id="H%e.Sqgt.LImej1XhtnC"> <field name="NAME">timeout18</field> <field name="DELAY">400</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="variables_set" id="%w%$W4E43g~3pBjrk._N"> <field name="VAR" id="d2Hca]CPU+D32h3H=BU">Abstand1_lokal</field>
                              <value name="VALUE">
                              <block type="math_arithmetic" id="X2aeV2^Ca5#uQMVqcel*">
                              <field name="OP">MINUS</field>
                              <value name="A">
                              <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number">
                              <field name="NUM">1</field>
                              </shadow>
                              <block type="variables_get" id="(#newn(BEI/@40^1zc1"> <field name="VAR" id="Vy[aoB}!u@F)cFH@mb/0">Zeitstempel1_lokal</field> </block> </value> <value name="B"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="KmfKkHIdaBaeoy(3ZL-Y"> <field name="VAR" id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</field> </block> </value> </block> </value> <next> <block type="comment" id="~7,f2lw,J5XprZ0Md0ER"> <field name="COMMENT">Abstand Taktung1= Zeitstempel1-Zeitstempel2 [min]</field> <next> <block type="debug" id="yi(c@6v_DkPZ9{_]%GC!"> <field name="Severity">log</field> <value name="TEXT"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="h1[^^d(P0hOZOV_^U%2+"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="%]1#|L|1Tbg||xJwxJu!"> <field name="TEXT">Abstand zwischen aktuellem und vorherigem Brennerstart : </field> </block> </value> <value name="ADD1"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">3.1</field> </shadow> <block type="variables_get" id="(|v|)S@V/WIPUR|=Q5">
                              <field name="VAR" id="d2Hca]CPU+D32h3H=BU">Abstand1_lokal</field> </block> </value> <value name="ADD2"> <block type="text" id="8ZCHZIuGMTRzt:H#+uJ("> <field name="TEXT"> min</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> <next> <block type="timeouts_settimeout" id="CB-yH~p=l|H3fmSQW05">
                              <field name="NAME">timeout19</field>
                              <field name="DELAY">500</field>
                              <field name="UNIT">ms</field>
                              <statement name="STATEMENT">
                              <block type="variables_set" id="hGibDc2pcK;=j%pkU|u"> <field name="VAR" id="1AoS_%+:!c@4+#30Vfwe">Abstand2_lokal</field> <value name="VALUE"> <block type="math_arithmetic" id="Y=idd}Jln}3b6N,}XY4l"> <field name="OP">MINUS</field> <value name="A"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="CUXYMOXfgP=I^rQ@Oy=)"> <field name="VAR" id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</field> </block> </value> <value name="B"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="Gl74d0I6,][(*kFsyJp7"> <field name="VAR" id="5t9p1Dxw,$Hkh.$xcg">Zeitstempel3_lokal</field>
                              </block>
                              </value>
                              </block>
                              </value>
                              <next>
                              <block type="comment" id="yQ9Q]DPHi?wlf~
                              |K6eI">
                              <field name="COMMENT">Abstand Taktung1= Zeitstempel2-Zeitstempel3 [min]</field>
                              <next>
                              <block type="debug" id="[KFi4^XRnD_Av[y7@Q#?">
                              <field name="Severity">log</field>
                              <value name="TEXT">
                              <shadow xmlns="http://www.w3.org/1999/xhtml" type="text">
                              <field name="TEXT">test</field>
                              </shadow>
                              <block type="text_join" id="/.Hd{st}N})FEtilr%[D">
                              <mutation items="3"></mutation>
                              <value name="ADD0">
                              <block type="text" id="q:E~v$3N_l@}$PhJ)T)"> <field name="TEXT">Abstand zwischen vorletztem und letztem Brennerstart: </field> </block> </value> <value name="ADD1"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">3.1</field> </shadow> <block type="variables_get" id="c8he;m0JdL20:E1zfg^-"> <field name="VAR" id="1AoS_%+:!c@4+#30Vfwe">Abstand2_lokal</field> </block> </value> <value name="ADD2"> <block type="text" id="vIQ/}}mVYl+Cc.5Kb3,">
                              <field name="TEXT"> min</field>
                              </block>
                              </value>
                              </block>
                              </value>
                              </block>
                              </next>
                              </block>
                              </next>
                              </block>
                              </statement>
                              <next>
                              <block type="timeouts_setinterval" id="d@w4smoXSX|cT-^r=nm">
                              <field name="NAME">Intervall2</field>
                              <field name="INTERVAL">1000</field>
                              <field name="UNIT">ms</field>
                              <statement name="STATEMENT">
                              <block type="update" id="Vh.:?h3Jd!esppCzt%$6">
                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                              <field name="OID">0_userdata.0.Heizung.Brenner.Zeitstempel1</field>
                              <field name="WITH_DELAY">FALSE</field>
                              <value name="VALUE">
                              <block type="convert_tonumber" id="]K!|.b:;aSn97}+ldyi">
                              <value name="VALUE">
                              <block type="variables_get" id="NV@m(N8u4a-{4}Bis}t"> <field name="VAR" id="Vy[aoB}!u@F)cFH@mb/0">Zeitstempel1_lokal</field> </block> </value> </block> </value> <next> <block type="update" id="XL3OaIU70vtxf-{8DQM["> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Heizung.Brenner.Zeitstempel2</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_tonumber" id="ITr?dx~[9O[9QHy:d%!3"> <value name="VALUE"> <block type="variables_get" id="L}y%i5W!kN(n=YitCNpR"> <field name="VAR" id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</field> </block> </value> </block> </value> <next> <block type="update" id="Pu(Mps4x2=o:$**;E|q">
                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                              <field name="OID">0_userdata.0.Heizung.Brenner.Zeitstempel3</field>
                              <field name="WITH_DELAY">FALSE</field>
                              <value name="VALUE">
                              <block type="convert_tonumber" id="gN73k(Tb#]KdN1B$~!--">
                              <value name="VALUE">
                              <block type="variables_get" id="
                              /OiCXrIRGKF9dNcli~$">
                              <field name="VAR" id="5t9p1Dxw,$Hk*h.$xcg">Zeitstempel3_lokal</field> </block> </value> </block> </value> <next> <block type="update" id="n=?%O(J[1Fe%Ho*{JtRH"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Heizung.Brenner.Abstand1</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_tonumber" id="y{$0O;HLt4/^3@tXpJjN"> <value name="VALUE"> <block type="variables_get" id="+m:rmF]T]6))|8kQ,a@n"> <field name="VAR" id="d2Hca]CPU+D32h3H=BU">Abstand1_lokal</field>
                              </block>
                              </value>
                              </block>
                              </value>
                              <next>
                              <block type="update" id="O]NWDtF}q#BE,Bu8yJw">
                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                              <field name="OID">0_userdata.0.Heizung.Brenner.Abstand2</field>
                              <field name="WITH_DELAY">FALSE</field>
                              <value name="VALUE">
                              <block type="convert_tonumber" id="Vn/s5r1w@9+3$F-SbR3R">
                              <value name="VALUE">
                              <block type="variables_get" id="#|JujysL|6{4JtG@?QtQ">
                              <field name="VAR" id="1AoS
                              %+:!c@4+#30Vfwe">Abstand2_lokal</field>
                              </block>
                              </value>
                              </block>
                              </value>
                              </block>
                              </next>
                              </block>
                              </next>
                              </block>
                              </next>
                              </block>
                              </next>
                              </block>
                              </statement>
                              <next>
                              <block type="timeouts_settimeout" id="{t96;LdE4o2pEe;t@xr"> <field name="NAME">timeout20</field> <field name="DELAY">1200</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="controls_if" id="(1el,P[!}V:|+:k;/D~">
                              <value name="IF0">
                              <block type="logic_operation" id="S}:%U%6@1wK9+}(RxcB"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="lgN$TXl)@u{?)7WrAg.@"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="3LG[owD|:-zt.0htp!=">
                              <field name="ATTR">val</field>
                              <field name="OID">0_userdata.0.Heizung.Brenner.Takten_erkannt</field>
                              </block>
                              </value>
                              <value name="B">
                              <block type="logic_boolean" id="+KvB([iRAJTu
                              L54:a~">
                              <field name="BOOL">FALSE</field>
                              </block>
                              </value>
                              </block>
                              </value>
                              <value name="B">
                              <block type="logic_operation" id=".A~AYpPpJR{7(C$m,L)s">
                              <field name="OP">AND</field>
                              <value name="A">
                              <block type="logic_compare" id="#^ln{:;.G08c=t/JoG]L">
                              <field name="OP">LT</field>
                              <value name="A">
                              <block type="variables_get" id="7)W^0IK8#5RPyc}+u^)w">
                              <field name="VAR" id="d2Hca]CPU+D32h3H=BU">Abstand1_lokal</field> </block> </value> <value name="B"> <block type="math_number" id="_ZJ1n]SVr~t[YIOI#$7">
                              <field name="NUM">18</field>
                              </block>
                              </value>
                              </block>
                              </value>
                              <value name="B">
                              <block type="logic_compare" id="8_YS%}iwNq$ZOQ,,%HX
                              ">
                              <field name="OP">LT</field>
                              <value name="A">
                              <block type="variables_get" id="LS^))4j+qlx%fsa}8FZH">
                              <field name="VAR" id="1AoS
                              %+:!c@4+#30Vfwe">Abstand2_lokal</field>
                              </block>
                              </value>
                              <value name="B">
                              <block type="math_number" id="4V-Y)n!^$Y:BcNvhhJ:z">
                              <field name="NUM">18</field>
                              </block>
                              </value>
                              </block>
                              </value>
                              </block>
                              </value>
                              </block>
                              </value>
                              <statement name="DO0">
                              <block type="update" id="hHx+C:gYwPHn50nNcH)v">
                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                              <field name="OID">0_userdata.0.Heizung.Brenner.Takten_erkannt</field>
                              <field name="WITH_DELAY">FALSE</field>
                              <value name="VALUE">
                              <block type="logic_boolean" id="H#5BJfNcPi)4$y9Vh;;B">
                              <field name="BOOL">TRUE</field>
                              </block>
                              </value>
                              <next>
                              <block type="comment" id="Q/_c9^D[CM@lPne9]gCz">
                              <field name="COMMENT">falls Abstand 1 und 2 < 10min, dann Brennertakten erkannt = 1</field>
                              <next>
                              <block type="debug" id="lue$qzaw!v0.eqfZ/{=}">
                              <field name="Severity">log</field>
                              <value name="TEXT">
                              <shadow type="text" id="D_cek6$LX(]TK54Ga-i8">
                              <field name="TEXT">Brennertakten erkannt </field>
                              </shadow>
                              </value>
                              </block>
                              </next>
                              </block>
                              </next>
                              </block>
                              </statement>
                              </block>
                              </statement>
                              </block>
                              </next>
                              </block>
                              </next>
                              </block>
                              </next>
                              </block>
                              </next>
                              </block>
                              </next>
                              </block>
                              </next>
                              </block>
                              </statement>
                              </block>
                              </statement>
                              </block>
                              </xml>

                              rantanplanR AsgothianA 2 Antworten Letzte Antwort
                              0
                              • P passuff

                                Ich melde mich mal wieder zurück. Leider funktioniert das Skript trotz timeouts immer noch nicht wie gewünscht. Die Datenpunkte werden viel zu oft aktualisiert und das Skript scheint oft parallel zu laufen und damit falsche Abstände zu berechnen.
                                Ich versuche noch mal grob zu beschreiben was das Ziel ist.
                                Es sollen die letzten zwei zeitlichen Abstände zwischen zwei Brennerstarts meiner Heizung berechnet werden. Dazu möchte ich die Variable VitoStartBrenner nutzen. Hintergrund ist das hochfrequentierte ein und ausschalten der Heizung in der Übergangszeit, was ich hiermit detektieren möchte.
                                Hier ist mein aktueller Code. Ich würde mich freuen wenn jemand mal drüber gucken kann. Ich vermute es benötigt einen neuen Ansatz.


                                <xml xmlns="https://developers.google.com/blockly/xml">
                                <variables>
                                <variable type="timeout" id="timeout15">timeout15</variable>
                                <variable id="5t9p1Dxw,$Hk*h.$xcg">Zeitstempel3_lokal</variable> <variable type="timeout" id="timeout16">timeout16</variable> <variable id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</variable> <variable type="timeout" id="timeout17">timeout17</variable> <variable id="Vy[aoB}!u@F)cFH@mb/0">Zeitstempel1_lokal</variable> <variable type="timeout" id="timeout18">timeout18</variable> <variable id="d2Hca]CPU+D32h3H=BU">Abstand1_lokal</variable>
                                <variable type="timeout" id="timeout19">timeout19</variable>
                                <variable id="1AoS_%+:!c@4+#30Vfwe">Abstand2_lokal</variable>
                                <variable type="interval" id="Intervall2">Intervall2</variable>
                                <variable type="timeout" id="timeout20">timeout20</variable>
                                </variables>
                                <block type="on_ext" id="![=JFmD0UB1vtF~|Di^" x="238" y="590"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="}.GxRXPD[M2S[cQVqH;+"> <field name="oid">viessmann.0.get.VitoStartsBrenner</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="7HlOlU2L}V*ajD$g[2?V"> <value name="IF0"> <block type="logic_compare" id="G[M;=~wX%eR1y6S3Bp0?"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="?nU*vx5UEcW,h10-9:LQ"> <field name="ATTR">val</field> <field name="OID">viessmann.0.get.VitoStatusWW</field> </block> </value> <value name="B"> <block type="math_number" id="(N5s_A;npDPuOB,KLj{H"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_settimeout" id="QdNR{j4j-R|H12tkS]OT"> <field name="NAME">timeout15</field> <field name="DELAY">100</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="variables_set" id="O(fNI_zEqWveou,ZN^S">
                                <field name="VAR" id="5t9p1Dxw,$Hk*h.$xcg">Zeitstempel3_lokal</field> <value name="VALUE"> <block type="variables_get" id="(b_hqSV{U5i_JX^Zla-4"> <field name="VAR" id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</field> </block> </value> <next> <block type="debug" id="gH1.Ho}BG1NW6xTLp(b|"> <field name="Severity">log</field> <value name="TEXT"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="if?k_%lLCm:VJ@T[SEoi"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="-L9#zCqB8#w_FI!aQ.%h"> <field name="TEXT">Zeitstempel zwei Brennerstarts zuvor: </field> </block> </value> <value name="ADD1"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">3.1</field> </shadow> <block type="variables_get" id=".vg#,tfOEKE^JYZ(::^P"> <field name="VAR" id="5t9p1Dxw,$Hkh.$xcg">Zeitstempel3_lokal</field>
                                </block>
                                </value>
                                <value name="ADD2">
                                <block type="text" id="R^BmzC3tn..VobsbUSoo">
                                <field name="TEXT"> min</field>
                                </block>
                                </value>
                                </block>
                                </value>
                                </block>
                                </next>
                                </block>
                                </statement>
                                <next>
                                <block type="timeouts_settimeout" id="wx9CQ}h?Isym3TFg0JxW">
                                <field name="NAME">timeout16</field>
                                <field name="DELAY">200</field>
                                <field name="UNIT">ms</field>
                                <statement name="STATEMENT">
                                <block type="variables_set" id="w$Xp5d@5XB?oV60OUMr">
                                <field name="VAR" id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</field>
                                <value name="VALUE">
                                <block type="variables_get" id="[c%eKeX4yJ^c7CWHieYd">
                                <field name="VAR" id="Vy[aoB}!u@F)cFH@mb/0">Zeitstempel1_lokal</field>
                                </block>
                                </value>
                                <next>
                                <block type="debug" id="[|V]B|Bi
                                FmNvu4M[B9.">
                                <field name="Severity">log</field>
                                <value name="TEXT">
                                <shadow xmlns="http://www.w3.org/1999/xhtml" type="text">
                                <field name="TEXT"></field>
                                </shadow>
                                <block type="text_join" id="$22k$xMtESSD/LU)=AZZ">
                                <mutation items="3"></mutation>
                                <value name="ADD0">
                                <block type="text" id="L
                                %35_O}uiiD(o}#X~[]">
                                <field name="TEXT">Zeitstempel ein Brennerstart zuvor: </field>
                                </block>
                                </value>
                                <value name="ADD1">
                                <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number">
                                <field name="NUM">3.1</field>
                                </shadow>
                                <block type="variables_get" id="{%rh+kvn8#XPRw[@6$7g">
                                <field name="VAR" id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</field>
                                </block>
                                </value>
                                <value name="ADD2">
                                <block type="text" id="-c!e^_OC3uti3Ko(p}?@">
                                <field name="TEXT"> min</field>
                                </block>
                                </value>
                                </block>
                                </value>
                                <next>
                                <block type="variables_set" id=")bLkU2c+ueuaq5e+I{j7">
                                <field name="VAR" id="Vy[aoB}!u@F)cFH@mb/0">Zeitstempel1_lokal</field>
                                <value name="VALUE">
                                <block type="math_round" id="e53+s-ZEMM0EwsdO4{Rb">
                                <field name="OP">ROUND</field>
                                <value name="NUM">
                                <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number">
                                <field name="NUM">3.1</field>
                                </shadow>
                                <block type="math_arithmetic" id="!.u3jkS$OIwzWQJq|kov">
                                <field name="OP">DIVIDE</field>
                                <value name="A">
                                <shadow type="math_number">
                                <field name="NUM">1</field>
                                </shadow>
                                <block type="on_source" id="b.)@eGLDxg7:Xe,VA%U"> <field name="ATTR">state.ts</field> </block> </value> <value name="B"> <shadow type="math_number" id="C{Z/CKfe{}Q?hNk4(5N%"> <field name="NUM">60000</field> </shadow> </value> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> <next> <block type="timeouts_settimeout" id="0CEr(SwQ{Ji::6d?s;;B"> <field name="NAME">timeout17</field> <field name="DELAY">300</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="debug" id="o0{OCKkLv6{UsKkehy07"> <field name="Severity">log</field> <value name="TEXT"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id=";/@_22:yltE*a:p@!oyQ"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="5S3cg[pD;U6z?Pj58Z*b"> <field name="TEXT">Zeitstempel aktueller Brennerstart: </field> </block> </value> <value name="ADD1"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">3.1</field> </shadow> <block type="variables_get" id="L_t$@ycd}zlzRdVge!Ef"> <field name="VAR" id="Vy[aoB}!u@F)cFH@mb/0">Zeitstempel1_lokal</field> </block> </value> <value name="ADD2"> <block type="text" id="3S([iSuZQ*|SNNVTL%9#"> <field name="TEXT"> min</field> </block> </value> </block> </value> </block> </statement> <next> <block type="timeouts_settimeout" id="H%e.Sqgt.LImej1XhtnC"> <field name="NAME">timeout18</field> <field name="DELAY">400</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="variables_set" id="%w%$W4E43g~3pBjrk._N"> <field name="VAR" id="d2Hca]CPU+D32h3H=BU">Abstand1_lokal</field>
                                <value name="VALUE">
                                <block type="math_arithmetic" id="X2aeV2^Ca5#uQMVqcel*">
                                <field name="OP">MINUS</field>
                                <value name="A">
                                <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number">
                                <field name="NUM">1</field>
                                </shadow>
                                <block type="variables_get" id="(#newn(BEI/@40^1zc1"> <field name="VAR" id="Vy[aoB}!u@F)cFH@mb/0">Zeitstempel1_lokal</field> </block> </value> <value name="B"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="KmfKkHIdaBaeoy(3ZL-Y"> <field name="VAR" id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</field> </block> </value> </block> </value> <next> <block type="comment" id="~7,f2lw,J5XprZ0Md0ER"> <field name="COMMENT">Abstand Taktung1= Zeitstempel1-Zeitstempel2 [min]</field> <next> <block type="debug" id="yi(c@6v_DkPZ9{_]%GC!"> <field name="Severity">log</field> <value name="TEXT"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="h1[^^d(P0hOZOV_^U%2+"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="%]1#|L|1Tbg||xJwxJu!"> <field name="TEXT">Abstand zwischen aktuellem und vorherigem Brennerstart : </field> </block> </value> <value name="ADD1"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">3.1</field> </shadow> <block type="variables_get" id="(|v|)S@V/WIPUR|=Q5">
                                <field name="VAR" id="d2Hca]CPU+D32h3H=BU">Abstand1_lokal</field> </block> </value> <value name="ADD2"> <block type="text" id="8ZCHZIuGMTRzt:H#+uJ("> <field name="TEXT"> min</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> <next> <block type="timeouts_settimeout" id="CB-yH~p=l|H3fmSQW05">
                                <field name="NAME">timeout19</field>
                                <field name="DELAY">500</field>
                                <field name="UNIT">ms</field>
                                <statement name="STATEMENT">
                                <block type="variables_set" id="hGibDc2pcK;=j%pkU|u"> <field name="VAR" id="1AoS_%+:!c@4+#30Vfwe">Abstand2_lokal</field> <value name="VALUE"> <block type="math_arithmetic" id="Y=idd}Jln}3b6N,}XY4l"> <field name="OP">MINUS</field> <value name="A"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="CUXYMOXfgP=I^rQ@Oy=)"> <field name="VAR" id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</field> </block> </value> <value name="B"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="Gl74d0I6,][(*kFsyJp7"> <field name="VAR" id="5t9p1Dxw,$Hkh.$xcg">Zeitstempel3_lokal</field>
                                </block>
                                </value>
                                </block>
                                </value>
                                <next>
                                <block type="comment" id="yQ9Q]DPHi?wlf~
                                |K6eI">
                                <field name="COMMENT">Abstand Taktung1= Zeitstempel2-Zeitstempel3 [min]</field>
                                <next>
                                <block type="debug" id="[KFi4^XRnD_Av[y7@Q#?">
                                <field name="Severity">log</field>
                                <value name="TEXT">
                                <shadow xmlns="http://www.w3.org/1999/xhtml" type="text">
                                <field name="TEXT">test</field>
                                </shadow>
                                <block type="text_join" id="/.Hd{st}N})FEtilr%[D">
                                <mutation items="3"></mutation>
                                <value name="ADD0">
                                <block type="text" id="q:E~v$3N_l@}$PhJ)T)"> <field name="TEXT">Abstand zwischen vorletztem und letztem Brennerstart: </field> </block> </value> <value name="ADD1"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">3.1</field> </shadow> <block type="variables_get" id="c8he;m0JdL20:E1zfg^-"> <field name="VAR" id="1AoS_%+:!c@4+#30Vfwe">Abstand2_lokal</field> </block> </value> <value name="ADD2"> <block type="text" id="vIQ/}}mVYl+Cc.5Kb3,">
                                <field name="TEXT"> min</field>
                                </block>
                                </value>
                                </block>
                                </value>
                                </block>
                                </next>
                                </block>
                                </next>
                                </block>
                                </statement>
                                <next>
                                <block type="timeouts_setinterval" id="d@w4smoXSX|cT-^r=nm">
                                <field name="NAME">Intervall2</field>
                                <field name="INTERVAL">1000</field>
                                <field name="UNIT">ms</field>
                                <statement name="STATEMENT">
                                <block type="update" id="Vh.:?h3Jd!esppCzt%$6">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                <field name="OID">0_userdata.0.Heizung.Brenner.Zeitstempel1</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                <block type="convert_tonumber" id="]K!|.b:;aSn97}+ldyi">
                                <value name="VALUE">
                                <block type="variables_get" id="NV@m(N8u4a-{4}Bis}t"> <field name="VAR" id="Vy[aoB}!u@F)cFH@mb/0">Zeitstempel1_lokal</field> </block> </value> </block> </value> <next> <block type="update" id="XL3OaIU70vtxf-{8DQM["> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Heizung.Brenner.Zeitstempel2</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_tonumber" id="ITr?dx~[9O[9QHy:d%!3"> <value name="VALUE"> <block type="variables_get" id="L}y%i5W!kN(n=YitCNpR"> <field name="VAR" id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</field> </block> </value> </block> </value> <next> <block type="update" id="Pu(Mps4x2=o:$**;E|q">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                <field name="OID">0_userdata.0.Heizung.Brenner.Zeitstempel3</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                <block type="convert_tonumber" id="gN73k(Tb#]KdN1B$~!--">
                                <value name="VALUE">
                                <block type="variables_get" id="
                                /OiCXrIRGKF9dNcli~$">
                                <field name="VAR" id="5t9p1Dxw,$Hk*h.$xcg">Zeitstempel3_lokal</field> </block> </value> </block> </value> <next> <block type="update" id="n=?%O(J[1Fe%Ho*{JtRH"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Heizung.Brenner.Abstand1</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_tonumber" id="y{$0O;HLt4/^3@tXpJjN"> <value name="VALUE"> <block type="variables_get" id="+m:rmF]T]6))|8kQ,a@n"> <field name="VAR" id="d2Hca]CPU+D32h3H=BU">Abstand1_lokal</field>
                                </block>
                                </value>
                                </block>
                                </value>
                                <next>
                                <block type="update" id="O]NWDtF}q#BE,Bu8yJw">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                <field name="OID">0_userdata.0.Heizung.Brenner.Abstand2</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                <block type="convert_tonumber" id="Vn/s5r1w@9+3$F-SbR3R">
                                <value name="VALUE">
                                <block type="variables_get" id="#|JujysL|6{4JtG@?QtQ">
                                <field name="VAR" id="1AoS
                                %+:!c@4+#30Vfwe">Abstand2_lokal</field>
                                </block>
                                </value>
                                </block>
                                </value>
                                </block>
                                </next>
                                </block>
                                </next>
                                </block>
                                </next>
                                </block>
                                </next>
                                </block>
                                </statement>
                                <next>
                                <block type="timeouts_settimeout" id="{t96;LdE4o2pEe;t@xr"> <field name="NAME">timeout20</field> <field name="DELAY">1200</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="controls_if" id="(1el,P[!}V:|+:k;/D~">
                                <value name="IF0">
                                <block type="logic_operation" id="S}:%U%6@1wK9+}(RxcB"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="lgN$TXl)@u{?)7WrAg.@"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="3LG[owD|:-zt.0htp!=">
                                <field name="ATTR">val</field>
                                <field name="OID">0_userdata.0.Heizung.Brenner.Takten_erkannt</field>
                                </block>
                                </value>
                                <value name="B">
                                <block type="logic_boolean" id="+KvB([iRAJTu
                                L54:a~">
                                <field name="BOOL">FALSE</field>
                                </block>
                                </value>
                                </block>
                                </value>
                                <value name="B">
                                <block type="logic_operation" id=".A~AYpPpJR{7(C$m,L)s">
                                <field name="OP">AND</field>
                                <value name="A">
                                <block type="logic_compare" id="#^ln{:;.G08c=t/JoG]L">
                                <field name="OP">LT</field>
                                <value name="A">
                                <block type="variables_get" id="7)W^0IK8#5RPyc}+u^)w">
                                <field name="VAR" id="d2Hca]CPU+D32h3H=BU">Abstand1_lokal</field> </block> </value> <value name="B"> <block type="math_number" id="_ZJ1n]SVr~t[YIOI#$7">
                                <field name="NUM">18</field>
                                </block>
                                </value>
                                </block>
                                </value>
                                <value name="B">
                                <block type="logic_compare" id="8_YS%}iwNq$ZOQ,,%HX
                                ">
                                <field name="OP">LT</field>
                                <value name="A">
                                <block type="variables_get" id="LS^))4j+qlx%fsa}8FZH">
                                <field name="VAR" id="1AoS
                                %+:!c@4+#30Vfwe">Abstand2_lokal</field>
                                </block>
                                </value>
                                <value name="B">
                                <block type="math_number" id="4V-Y)n!^$Y:BcNvhhJ:z">
                                <field name="NUM">18</field>
                                </block>
                                </value>
                                </block>
                                </value>
                                </block>
                                </value>
                                </block>
                                </value>
                                <statement name="DO0">
                                <block type="update" id="hHx+C:gYwPHn50nNcH)v">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                <field name="OID">0_userdata.0.Heizung.Brenner.Takten_erkannt</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                <block type="logic_boolean" id="H#5BJfNcPi)4$y9Vh;;B">
                                <field name="BOOL">TRUE</field>
                                </block>
                                </value>
                                <next>
                                <block type="comment" id="Q/_c9^D[CM@lPne9]gCz">
                                <field name="COMMENT">falls Abstand 1 und 2 < 10min, dann Brennertakten erkannt = 1</field>
                                <next>
                                <block type="debug" id="lue$qzaw!v0.eqfZ/{=}">
                                <field name="Severity">log</field>
                                <value name="TEXT">
                                <shadow type="text" id="D_cek6$LX(]TK54Ga-i8">
                                <field name="TEXT">Brennertakten erkannt </field>
                                </shadow>
                                </value>
                                </block>
                                </next>
                                </block>
                                </next>
                                </block>
                                </statement>
                                </block>
                                </statement>
                                </block>
                                </next>
                                </block>
                                </next>
                                </block>
                                </next>
                                </block>
                                </next>
                                </block>
                                </next>
                                </block>
                                </next>
                                </block>
                                </statement>
                                </block>
                                </statement>
                                </block>
                                </xml>

                                rantanplanR Offline
                                rantanplanR Offline
                                rantanplan
                                schrieb am zuletzt editiert von
                                #15

                                @passuff Kann Dein Script leider nicht importieren.
                                Nach Deiner Beschreibung vermute ich mal, dass Du die timeouts mehrmals startest ohne sie vorher zu beenden.

                                Grüße

                                Rantanplan

                                CCU3 / MS Server 2019(VM) / Scripten mit Blockly

                                1 Antwort Letzte Antwort
                                0
                                • P passuff

                                  Ich melde mich mal wieder zurück. Leider funktioniert das Skript trotz timeouts immer noch nicht wie gewünscht. Die Datenpunkte werden viel zu oft aktualisiert und das Skript scheint oft parallel zu laufen und damit falsche Abstände zu berechnen.
                                  Ich versuche noch mal grob zu beschreiben was das Ziel ist.
                                  Es sollen die letzten zwei zeitlichen Abstände zwischen zwei Brennerstarts meiner Heizung berechnet werden. Dazu möchte ich die Variable VitoStartBrenner nutzen. Hintergrund ist das hochfrequentierte ein und ausschalten der Heizung in der Übergangszeit, was ich hiermit detektieren möchte.
                                  Hier ist mein aktueller Code. Ich würde mich freuen wenn jemand mal drüber gucken kann. Ich vermute es benötigt einen neuen Ansatz.


                                  <xml xmlns="https://developers.google.com/blockly/xml">
                                  <variables>
                                  <variable type="timeout" id="timeout15">timeout15</variable>
                                  <variable id="5t9p1Dxw,$Hk*h.$xcg">Zeitstempel3_lokal</variable> <variable type="timeout" id="timeout16">timeout16</variable> <variable id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</variable> <variable type="timeout" id="timeout17">timeout17</variable> <variable id="Vy[aoB}!u@F)cFH@mb/0">Zeitstempel1_lokal</variable> <variable type="timeout" id="timeout18">timeout18</variable> <variable id="d2Hca]CPU+D32h3H=BU">Abstand1_lokal</variable>
                                  <variable type="timeout" id="timeout19">timeout19</variable>
                                  <variable id="1AoS_%+:!c@4+#30Vfwe">Abstand2_lokal</variable>
                                  <variable type="interval" id="Intervall2">Intervall2</variable>
                                  <variable type="timeout" id="timeout20">timeout20</variable>
                                  </variables>
                                  <block type="on_ext" id="![=JFmD0UB1vtF~|Di^" x="238" y="590"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="}.GxRXPD[M2S[cQVqH;+"> <field name="oid">viessmann.0.get.VitoStartsBrenner</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="7HlOlU2L}V*ajD$g[2?V"> <value name="IF0"> <block type="logic_compare" id="G[M;=~wX%eR1y6S3Bp0?"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="?nU*vx5UEcW,h10-9:LQ"> <field name="ATTR">val</field> <field name="OID">viessmann.0.get.VitoStatusWW</field> </block> </value> <value name="B"> <block type="math_number" id="(N5s_A;npDPuOB,KLj{H"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_settimeout" id="QdNR{j4j-R|H12tkS]OT"> <field name="NAME">timeout15</field> <field name="DELAY">100</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="variables_set" id="O(fNI_zEqWveou,ZN^S">
                                  <field name="VAR" id="5t9p1Dxw,$Hk*h.$xcg">Zeitstempel3_lokal</field> <value name="VALUE"> <block type="variables_get" id="(b_hqSV{U5i_JX^Zla-4"> <field name="VAR" id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</field> </block> </value> <next> <block type="debug" id="gH1.Ho}BG1NW6xTLp(b|"> <field name="Severity">log</field> <value name="TEXT"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="if?k_%lLCm:VJ@T[SEoi"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="-L9#zCqB8#w_FI!aQ.%h"> <field name="TEXT">Zeitstempel zwei Brennerstarts zuvor: </field> </block> </value> <value name="ADD1"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">3.1</field> </shadow> <block type="variables_get" id=".vg#,tfOEKE^JYZ(::^P"> <field name="VAR" id="5t9p1Dxw,$Hkh.$xcg">Zeitstempel3_lokal</field>
                                  </block>
                                  </value>
                                  <value name="ADD2">
                                  <block type="text" id="R^BmzC3tn..VobsbUSoo">
                                  <field name="TEXT"> min</field>
                                  </block>
                                  </value>
                                  </block>
                                  </value>
                                  </block>
                                  </next>
                                  </block>
                                  </statement>
                                  <next>
                                  <block type="timeouts_settimeout" id="wx9CQ}h?Isym3TFg0JxW">
                                  <field name="NAME">timeout16</field>
                                  <field name="DELAY">200</field>
                                  <field name="UNIT">ms</field>
                                  <statement name="STATEMENT">
                                  <block type="variables_set" id="w$Xp5d@5XB?oV60OUMr">
                                  <field name="VAR" id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</field>
                                  <value name="VALUE">
                                  <block type="variables_get" id="[c%eKeX4yJ^c7CWHieYd">
                                  <field name="VAR" id="Vy[aoB}!u@F)cFH@mb/0">Zeitstempel1_lokal</field>
                                  </block>
                                  </value>
                                  <next>
                                  <block type="debug" id="[|V]B|Bi
                                  FmNvu4M[B9.">
                                  <field name="Severity">log</field>
                                  <value name="TEXT">
                                  <shadow xmlns="http://www.w3.org/1999/xhtml" type="text">
                                  <field name="TEXT"></field>
                                  </shadow>
                                  <block type="text_join" id="$22k$xMtESSD/LU)=AZZ">
                                  <mutation items="3"></mutation>
                                  <value name="ADD0">
                                  <block type="text" id="L
                                  %35_O}uiiD(o}#X~[]">
                                  <field name="TEXT">Zeitstempel ein Brennerstart zuvor: </field>
                                  </block>
                                  </value>
                                  <value name="ADD1">
                                  <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number">
                                  <field name="NUM">3.1</field>
                                  </shadow>
                                  <block type="variables_get" id="{%rh+kvn8#XPRw[@6$7g">
                                  <field name="VAR" id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</field>
                                  </block>
                                  </value>
                                  <value name="ADD2">
                                  <block type="text" id="-c!e^_OC3uti3Ko(p}?@">
                                  <field name="TEXT"> min</field>
                                  </block>
                                  </value>
                                  </block>
                                  </value>
                                  <next>
                                  <block type="variables_set" id=")bLkU2c+ueuaq5e+I{j7">
                                  <field name="VAR" id="Vy[aoB}!u@F)cFH@mb/0">Zeitstempel1_lokal</field>
                                  <value name="VALUE">
                                  <block type="math_round" id="e53+s-ZEMM0EwsdO4{Rb">
                                  <field name="OP">ROUND</field>
                                  <value name="NUM">
                                  <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number">
                                  <field name="NUM">3.1</field>
                                  </shadow>
                                  <block type="math_arithmetic" id="!.u3jkS$OIwzWQJq|kov">
                                  <field name="OP">DIVIDE</field>
                                  <value name="A">
                                  <shadow type="math_number">
                                  <field name="NUM">1</field>
                                  </shadow>
                                  <block type="on_source" id="b.)@eGLDxg7:Xe,VA%U"> <field name="ATTR">state.ts</field> </block> </value> <value name="B"> <shadow type="math_number" id="C{Z/CKfe{}Q?hNk4(5N%"> <field name="NUM">60000</field> </shadow> </value> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> <next> <block type="timeouts_settimeout" id="0CEr(SwQ{Ji::6d?s;;B"> <field name="NAME">timeout17</field> <field name="DELAY">300</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="debug" id="o0{OCKkLv6{UsKkehy07"> <field name="Severity">log</field> <value name="TEXT"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id=";/@_22:yltE*a:p@!oyQ"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="5S3cg[pD;U6z?Pj58Z*b"> <field name="TEXT">Zeitstempel aktueller Brennerstart: </field> </block> </value> <value name="ADD1"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">3.1</field> </shadow> <block type="variables_get" id="L_t$@ycd}zlzRdVge!Ef"> <field name="VAR" id="Vy[aoB}!u@F)cFH@mb/0">Zeitstempel1_lokal</field> </block> </value> <value name="ADD2"> <block type="text" id="3S([iSuZQ*|SNNVTL%9#"> <field name="TEXT"> min</field> </block> </value> </block> </value> </block> </statement> <next> <block type="timeouts_settimeout" id="H%e.Sqgt.LImej1XhtnC"> <field name="NAME">timeout18</field> <field name="DELAY">400</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="variables_set" id="%w%$W4E43g~3pBjrk._N"> <field name="VAR" id="d2Hca]CPU+D32h3H=BU">Abstand1_lokal</field>
                                  <value name="VALUE">
                                  <block type="math_arithmetic" id="X2aeV2^Ca5#uQMVqcel*">
                                  <field name="OP">MINUS</field>
                                  <value name="A">
                                  <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number">
                                  <field name="NUM">1</field>
                                  </shadow>
                                  <block type="variables_get" id="(#newn(BEI/@40^1zc1"> <field name="VAR" id="Vy[aoB}!u@F)cFH@mb/0">Zeitstempel1_lokal</field> </block> </value> <value name="B"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="KmfKkHIdaBaeoy(3ZL-Y"> <field name="VAR" id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</field> </block> </value> </block> </value> <next> <block type="comment" id="~7,f2lw,J5XprZ0Md0ER"> <field name="COMMENT">Abstand Taktung1= Zeitstempel1-Zeitstempel2 [min]</field> <next> <block type="debug" id="yi(c@6v_DkPZ9{_]%GC!"> <field name="Severity">log</field> <value name="TEXT"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="h1[^^d(P0hOZOV_^U%2+"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="%]1#|L|1Tbg||xJwxJu!"> <field name="TEXT">Abstand zwischen aktuellem und vorherigem Brennerstart : </field> </block> </value> <value name="ADD1"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">3.1</field> </shadow> <block type="variables_get" id="(|v|)S@V/WIPUR|=Q5">
                                  <field name="VAR" id="d2Hca]CPU+D32h3H=BU">Abstand1_lokal</field> </block> </value> <value name="ADD2"> <block type="text" id="8ZCHZIuGMTRzt:H#+uJ("> <field name="TEXT"> min</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> <next> <block type="timeouts_settimeout" id="CB-yH~p=l|H3fmSQW05">
                                  <field name="NAME">timeout19</field>
                                  <field name="DELAY">500</field>
                                  <field name="UNIT">ms</field>
                                  <statement name="STATEMENT">
                                  <block type="variables_set" id="hGibDc2pcK;=j%pkU|u"> <field name="VAR" id="1AoS_%+:!c@4+#30Vfwe">Abstand2_lokal</field> <value name="VALUE"> <block type="math_arithmetic" id="Y=idd}Jln}3b6N,}XY4l"> <field name="OP">MINUS</field> <value name="A"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="CUXYMOXfgP=I^rQ@Oy=)"> <field name="VAR" id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</field> </block> </value> <value name="B"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="Gl74d0I6,][(*kFsyJp7"> <field name="VAR" id="5t9p1Dxw,$Hkh.$xcg">Zeitstempel3_lokal</field>
                                  </block>
                                  </value>
                                  </block>
                                  </value>
                                  <next>
                                  <block type="comment" id="yQ9Q]DPHi?wlf~
                                  |K6eI">
                                  <field name="COMMENT">Abstand Taktung1= Zeitstempel2-Zeitstempel3 [min]</field>
                                  <next>
                                  <block type="debug" id="[KFi4^XRnD_Av[y7@Q#?">
                                  <field name="Severity">log</field>
                                  <value name="TEXT">
                                  <shadow xmlns="http://www.w3.org/1999/xhtml" type="text">
                                  <field name="TEXT">test</field>
                                  </shadow>
                                  <block type="text_join" id="/.Hd{st}N})FEtilr%[D">
                                  <mutation items="3"></mutation>
                                  <value name="ADD0">
                                  <block type="text" id="q:E~v$3N_l@}$PhJ)T)"> <field name="TEXT">Abstand zwischen vorletztem und letztem Brennerstart: </field> </block> </value> <value name="ADD1"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">3.1</field> </shadow> <block type="variables_get" id="c8he;m0JdL20:E1zfg^-"> <field name="VAR" id="1AoS_%+:!c@4+#30Vfwe">Abstand2_lokal</field> </block> </value> <value name="ADD2"> <block type="text" id="vIQ/}}mVYl+Cc.5Kb3,">
                                  <field name="TEXT"> min</field>
                                  </block>
                                  </value>
                                  </block>
                                  </value>
                                  </block>
                                  </next>
                                  </block>
                                  </next>
                                  </block>
                                  </statement>
                                  <next>
                                  <block type="timeouts_setinterval" id="d@w4smoXSX|cT-^r=nm">
                                  <field name="NAME">Intervall2</field>
                                  <field name="INTERVAL">1000</field>
                                  <field name="UNIT">ms</field>
                                  <statement name="STATEMENT">
                                  <block type="update" id="Vh.:?h3Jd!esppCzt%$6">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                  <field name="OID">0_userdata.0.Heizung.Brenner.Zeitstempel1</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE">
                                  <block type="convert_tonumber" id="]K!|.b:;aSn97}+ldyi">
                                  <value name="VALUE">
                                  <block type="variables_get" id="NV@m(N8u4a-{4}Bis}t"> <field name="VAR" id="Vy[aoB}!u@F)cFH@mb/0">Zeitstempel1_lokal</field> </block> </value> </block> </value> <next> <block type="update" id="XL3OaIU70vtxf-{8DQM["> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Heizung.Brenner.Zeitstempel2</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_tonumber" id="ITr?dx~[9O[9QHy:d%!3"> <value name="VALUE"> <block type="variables_get" id="L}y%i5W!kN(n=YitCNpR"> <field name="VAR" id="w5DgCBDMyFCt5c(S./|!">Zeitstempel2_lokal</field> </block> </value> </block> </value> <next> <block type="update" id="Pu(Mps4x2=o:$**;E|q">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                  <field name="OID">0_userdata.0.Heizung.Brenner.Zeitstempel3</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE">
                                  <block type="convert_tonumber" id="gN73k(Tb#]KdN1B$~!--">
                                  <value name="VALUE">
                                  <block type="variables_get" id="
                                  /OiCXrIRGKF9dNcli~$">
                                  <field name="VAR" id="5t9p1Dxw,$Hk*h.$xcg">Zeitstempel3_lokal</field> </block> </value> </block> </value> <next> <block type="update" id="n=?%O(J[1Fe%Ho*{JtRH"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Heizung.Brenner.Abstand1</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_tonumber" id="y{$0O;HLt4/^3@tXpJjN"> <value name="VALUE"> <block type="variables_get" id="+m:rmF]T]6))|8kQ,a@n"> <field name="VAR" id="d2Hca]CPU+D32h3H=BU">Abstand1_lokal</field>
                                  </block>
                                  </value>
                                  </block>
                                  </value>
                                  <next>
                                  <block type="update" id="O]NWDtF}q#BE,Bu8yJw">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                  <field name="OID">0_userdata.0.Heizung.Brenner.Abstand2</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE">
                                  <block type="convert_tonumber" id="Vn/s5r1w@9+3$F-SbR3R">
                                  <value name="VALUE">
                                  <block type="variables_get" id="#|JujysL|6{4JtG@?QtQ">
                                  <field name="VAR" id="1AoS
                                  %+:!c@4+#30Vfwe">Abstand2_lokal</field>
                                  </block>
                                  </value>
                                  </block>
                                  </value>
                                  </block>
                                  </next>
                                  </block>
                                  </next>
                                  </block>
                                  </next>
                                  </block>
                                  </next>
                                  </block>
                                  </statement>
                                  <next>
                                  <block type="timeouts_settimeout" id="{t96;LdE4o2pEe;t@xr"> <field name="NAME">timeout20</field> <field name="DELAY">1200</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="controls_if" id="(1el,P[!}V:|+:k;/D~">
                                  <value name="IF0">
                                  <block type="logic_operation" id="S}:%U%6@1wK9+}(RxcB"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="lgN$TXl)@u{?)7WrAg.@"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="3LG[owD|:-zt.0htp!=">
                                  <field name="ATTR">val</field>
                                  <field name="OID">0_userdata.0.Heizung.Brenner.Takten_erkannt</field>
                                  </block>
                                  </value>
                                  <value name="B">
                                  <block type="logic_boolean" id="+KvB([iRAJTu
                                  L54:a~">
                                  <field name="BOOL">FALSE</field>
                                  </block>
                                  </value>
                                  </block>
                                  </value>
                                  <value name="B">
                                  <block type="logic_operation" id=".A~AYpPpJR{7(C$m,L)s">
                                  <field name="OP">AND</field>
                                  <value name="A">
                                  <block type="logic_compare" id="#^ln{:;.G08c=t/JoG]L">
                                  <field name="OP">LT</field>
                                  <value name="A">
                                  <block type="variables_get" id="7)W^0IK8#5RPyc}+u^)w">
                                  <field name="VAR" id="d2Hca]CPU+D32h3H=BU">Abstand1_lokal</field> </block> </value> <value name="B"> <block type="math_number" id="_ZJ1n]SVr~t[YIOI#$7">
                                  <field name="NUM">18</field>
                                  </block>
                                  </value>
                                  </block>
                                  </value>
                                  <value name="B">
                                  <block type="logic_compare" id="8_YS%}iwNq$ZOQ,,%HX
                                  ">
                                  <field name="OP">LT</field>
                                  <value name="A">
                                  <block type="variables_get" id="LS^))4j+qlx%fsa}8FZH">
                                  <field name="VAR" id="1AoS
                                  %+:!c@4+#30Vfwe">Abstand2_lokal</field>
                                  </block>
                                  </value>
                                  <value name="B">
                                  <block type="math_number" id="4V-Y)n!^$Y:BcNvhhJ:z">
                                  <field name="NUM">18</field>
                                  </block>
                                  </value>
                                  </block>
                                  </value>
                                  </block>
                                  </value>
                                  </block>
                                  </value>
                                  <statement name="DO0">
                                  <block type="update" id="hHx+C:gYwPHn50nNcH)v">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                  <field name="OID">0_userdata.0.Heizung.Brenner.Takten_erkannt</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE">
                                  <block type="logic_boolean" id="H#5BJfNcPi)4$y9Vh;;B">
                                  <field name="BOOL">TRUE</field>
                                  </block>
                                  </value>
                                  <next>
                                  <block type="comment" id="Q/_c9^D[CM@lPne9]gCz">
                                  <field name="COMMENT">falls Abstand 1 und 2 < 10min, dann Brennertakten erkannt = 1</field>
                                  <next>
                                  <block type="debug" id="lue$qzaw!v0.eqfZ/{=}">
                                  <field name="Severity">log</field>
                                  <value name="TEXT">
                                  <shadow type="text" id="D_cek6$LX(]TK54Ga-i8">
                                  <field name="TEXT">Brennertakten erkannt </field>
                                  </shadow>
                                  </value>
                                  </block>
                                  </next>
                                  </block>
                                  </next>
                                  </block>
                                  </statement>
                                  </block>
                                  </statement>
                                  </block>
                                  </next>
                                  </block>
                                  </next>
                                  </block>
                                  </next>
                                  </block>
                                  </next>
                                  </block>
                                  </next>
                                  </block>
                                  </next>
                                  </block>
                                  </statement>
                                  </block>
                                  </statement>
                                  </block>
                                  </xml>

                                  AsgothianA Offline
                                  AsgothianA Offline
                                  Asgothian
                                  Developer
                                  schrieb am zuletzt editiert von Asgothian
                                  #16

                                  @passuff sagte in Abstände zwischen mehreren Events berechnen (Blockly):

                                  Hier ist mein aktueller Code. Ich würde mich freuen wenn jemand mal drüber gucken kann. Ich vermute es benötigt einen neuen Ansatz.

                                  Herzlichen Glückwunsch - der Code ist unlesbar. Es fehlen die

                                  Code Tags
                                  

                                  Ich hab mehrmals versucht den Code zu importieren. Geht nicht.

                                  Eine Frage habe ich aber trotzdem: Wofür brauchst du bei der Fragestellung Timeouts ?

                                  Du hast im Trigger mit dem Baustein
                                  Screenshot 2020-11-09 at 10.22.08.png

                                  Zugriff auf:

                                  • den Timestamp der aktuellen Änderung
                                  • den Timestamp der letzten Änderung
                                  • den aktuellen Wert
                                  • den letzten Wert

                                  Damit solltest du direkt im Trigger die von Dir gewünschten Dinge berechnen können ohne das Du timeouts benutzt.

                                  A.

                                  Nachtrag: Ich würde das so lösen:

                                  • Annahme: Datenpunkt = true heisst Brenner ist an.

                                  • Variable "LetztesMalEingeschaltet" = 0

                                  • Trigger auf Wert ist grösser als vorher

                                  • Einschaltabstand = "LetztesMalEingeschaltet - Timestamp aktuelle Änderung.

                                  • "LetztesMalEingeschaltet" = Timestamp aktuelle Änderung

                                  ggf. musst du den Timestamp noch konvertieren, glaube ich aber nicht, so wie ich das erinnere liefert der ms, relativ zu einem Ursprungsdatum

                                  A.

                                  ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                                  "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                                  P 1 Antwort Letzte Antwort
                                  0
                                  • AsgothianA Asgothian

                                    @passuff sagte in Abstände zwischen mehreren Events berechnen (Blockly):

                                    Hier ist mein aktueller Code. Ich würde mich freuen wenn jemand mal drüber gucken kann. Ich vermute es benötigt einen neuen Ansatz.

                                    Herzlichen Glückwunsch - der Code ist unlesbar. Es fehlen die

                                    Code Tags
                                    

                                    Ich hab mehrmals versucht den Code zu importieren. Geht nicht.

                                    Eine Frage habe ich aber trotzdem: Wofür brauchst du bei der Fragestellung Timeouts ?

                                    Du hast im Trigger mit dem Baustein
                                    Screenshot 2020-11-09 at 10.22.08.png

                                    Zugriff auf:

                                    • den Timestamp der aktuellen Änderung
                                    • den Timestamp der letzten Änderung
                                    • den aktuellen Wert
                                    • den letzten Wert

                                    Damit solltest du direkt im Trigger die von Dir gewünschten Dinge berechnen können ohne das Du timeouts benutzt.

                                    A.

                                    Nachtrag: Ich würde das so lösen:

                                    • Annahme: Datenpunkt = true heisst Brenner ist an.

                                    • Variable "LetztesMalEingeschaltet" = 0

                                    • Trigger auf Wert ist grösser als vorher

                                    • Einschaltabstand = "LetztesMalEingeschaltet - Timestamp aktuelle Änderung.

                                    • "LetztesMalEingeschaltet" = Timestamp aktuelle Änderung

                                    ggf. musst du den Timestamp noch konvertieren, glaube ich aber nicht, so wie ich das erinnere liefert der ms, relativ zu einem Ursprungsdatum

                                    A.

                                    P Offline
                                    P Offline
                                    passuff
                                    schrieb am zuletzt editiert von
                                    #17

                                    @Asgothian
                                    Vielen Dank für deine Tipps.
                                    Ich habe die Blöcke exportiert. Ich habe es gerade nochmal getestet und kann diese auch wieder importieren. Ich weiß nicht weshalb es bei dir nicht funktioniert.
                                    Dein Ansatz den Abstand zu berechnen gefällt mir, das klingt etwas einfacher als bei mir. Der erste Abstand ist aber m.E. nicht das Problem, sondern der zweite. Ich vermute bei mir den Fehler beim "umschichten" der Abstände (neuer Abstand = alter Abstand ) und dem typischen JS Problem, dass Befehle nicht nacheinander abgearbeitet werden. Daher nutze ich Timeouts. Ohne diese Timeouts funktioniert das Skript überhaupt nicht.

                                    AsgothianA paul53P 2 Antworten Letzte Antwort
                                    0
                                    • P passuff

                                      @Asgothian
                                      Vielen Dank für deine Tipps.
                                      Ich habe die Blöcke exportiert. Ich habe es gerade nochmal getestet und kann diese auch wieder importieren. Ich weiß nicht weshalb es bei dir nicht funktioniert.
                                      Dein Ansatz den Abstand zu berechnen gefällt mir, das klingt etwas einfacher als bei mir. Der erste Abstand ist aber m.E. nicht das Problem, sondern der zweite. Ich vermute bei mir den Fehler beim "umschichten" der Abstände (neuer Abstand = alter Abstand ) und dem typischen JS Problem, dass Befehle nicht nacheinander abgearbeitet werden. Daher nutze ich Timeouts. Ohne diese Timeouts funktioniert das Skript überhaupt nicht.

                                      AsgothianA Offline
                                      AsgothianA Offline
                                      Asgothian
                                      Developer
                                      schrieb am zuletzt editiert von
                                      #18

                                      @passuff bist du sicher das du das aus dem post noch einmal heraus kopiert hast ? ich hab das noch mehrmals probiert und bekomme immer xml parser errors.

                                      poste doch mal einen Screenshot vom Script, dann können wir sehen wie das Script aussieht.

                                      A.

                                      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                                      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                                      P 1 Antwort Letzte Antwort
                                      0
                                      • AsgothianA Asgothian

                                        @passuff bist du sicher das du das aus dem post noch einmal heraus kopiert hast ? ich hab das noch mehrmals probiert und bekomme immer xml parser errors.

                                        poste doch mal einen Screenshot vom Script, dann können wir sehen wie das Script aussieht.

                                        A.

                                        P Offline
                                        P Offline
                                        passuff
                                        schrieb am zuletzt editiert von
                                        #19

                                        @Asgothian
                                        gerade nochmal versucht - funktioniert einwandfrei.
                                        Das Skript ist sehr lange. Dann müsste ich viele Screenshots erstellen - das wird sehr unübersichtlich.
                                        Wie exportierst/importierst du skripte? In der Blockly oder in der JS Ansicht?

                                        AsgothianA 2 Antworten Letzte Antwort
                                        0
                                        • P passuff

                                          @Asgothian
                                          gerade nochmal versucht - funktioniert einwandfrei.
                                          Das Skript ist sehr lange. Dann müsste ich viele Screenshots erstellen - das wird sehr unübersichtlich.
                                          Wie exportierst/importierst du skripte? In der Blockly oder in der JS Ansicht?

                                          AsgothianA Offline
                                          AsgothianA Offline
                                          Asgothian
                                          Developer
                                          schrieb am zuletzt editiert von
                                          #20

                                          @passuff In der Blockly Ansicht

                                          ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                                          "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                                          AsgothianA 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          676

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe