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

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten

NEWS

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

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

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

Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
305 Beiträge 49 Kommentatoren 74.4k Aufrufe 27 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.
  • bahnuhrB bahnuhr

    So, ich habe das Blockly mal umgeschrieben in JS.
    (mit JS komm ich einfach besser zurecht).

    Vorteil:
    Am Anfang habe ich die Variablen definiert (also nur 1 x Eingabe)
    Doppelte Zeilen habe ich in eine Funktion gepackt. Weiterhin mehrere Befehle in 1 Zeile (macht das ganze kürzer)
    Bei mir laufen die Var. alle unter javascript (kann man aber ändern).
    Zusätzlich habe ich log, sayit und telegram eingefügt.

    Zuerst die Var. anlegen mit:

    // BMW -------------------------------------------------------------------------------------------------------------
    createState('javascript.0.Geräte.BMW.Auto_auf', {type: 'boolean',name: 'Auto auf',read: true,write: true,role: 'button', desc: 'manuell', def: false});
    createState('javascript.0.Geräte.BMW.Auto_zu', {type: 'boolean',name: 'Auto zu',read: true,write: true,role: 'button', desc: 'manuell', def: false});
    createState('javascript.0.Geräte.BMW.Hupe', {type: 'boolean',name: 'Starte Hupe',read: true,write: true,role: 'button', desc: 'manuell', def: false});
    createState('javascript.0.Geräte.BMW.Lichthupe', {type: 'boolean',name: 'Starte Lichthupe',read: true,write: true,role: 'button', desc: 'manuell', def: false});
    createState('javascript.0.Geräte.BMW.Klima', {type: 'boolean',name: 'Starte Klima',read: true,write: true,role: 'button', desc: 'manuell', def: false});
    createState('javascript.0.Geräte.BMW.Token', '',{type: 'string',name: 'BMW Token',read: true,write: true,role: 'per Script'});
    createState('javascript.0.Geräte.BMW.neuer_Token', {type: 'boolean',name: 'BMW neuer Token',read: true,write: true,role: 'button', desc: 'manuell', def: false});
    

    Und dann das eigentliche Script:

    
    // BMW Remote Steuerung
    // Im Forum hat "strobelix" ein Blockly Script eingestellt:
    // https://forum.iobroker.net/topic/7457/adapter-bmw-zum-auslesen-von-bmw-s-connecteddrive-daten/184
    // Dieses habe ich umgeschrieben auf Javascript
    //
    // @bahnuhr, 01_2021
    
    
    // Variablen
       var user = "abc"       // Connected Drive: Username
       var pass = "xacxa"                 // Connected Drive: Passwort
       var Antwort = "aaa"                   // Connected Drive: Sicherheitsantwort
       var VIN = "WBA5D1xxxxxxx"           // VIN vom BMW
       var Obj_Token = "javascript.0.Geräte.BMW.Token"
       var https = require("https"), request = require("request"), T_log = "", T_say = "", T_tele = ""
    
    
    
    // ******************************************************************************************************************************************
    // Taster gedrückt
    // ******************************************************************************************************************************************
           on({id: "javascript.0.Geräte.BMW.Lichthupe", change: "ne", val: true}, function() { remote_Lichthupe(); T_log = "Auslöser Taster BMW: Starte Lichthupe"; T_say = "ok, beim BMW wird die Lichthupe angeschaltet!"; T_tele = "Beim BMW wird die Lichthupe angeschaltet!"; Taster_weiter(T_log, T_say, T_tele); }); 
           on({id: "javascript.0.Geräte.BMW.Hupe", change: "ne", val: true}, function() { remote_Hupe(); T_log = "Auslöser Taster BMW: Starte Hupe"; T_say = "ok, beim BMW wird die Hupe angeschaltet!"; T_tele = "Beim BMW wird die Hupe angeschaltet!"; Taster_weiter(T_log, T_say, T_tele); }); 
           on({id: "javascript.0.Geräte.BMW.Auto_auf", change: "ne", val: true}, function() { remote_Auto_auf(); T_log = "Auslöser Taster BMW: Auto_auf"; T_say = "ok, BMW wird geöffnet!"; T_tele = "BMW wird geöffnet!"; Taster_weiter(T_log, T_say, T_tele); }); 
           on({id: "javascript.0.Geräte.BMW.Auto_auf", change: "ne", val: true}, function() { remote_Auto_zu(); T_log = "Auslöser Taster BMW: Auto_zu"; T_say = "ok, BMW wird verschlossen!"; T_tele = "BMW wird verschlossen!"; Taster_weiter(T_log, T_say, T_tele); }); 
           on({id: "javascript.0.Geräte.BMW.Klima", change: "ne", val: true}, function() { remote_Klima(); log("Auslöser Taster BMW: Starte Klima"); Surface_Lautstaerke(50);
           setState('sayit.3.tts.text', 'opt/iobroker/iobroker-data/files/vis.0/mp3/tos-computer-03.mp3'); setTimeout(function() { setState('sayit.4.tts.text', "ok, beim BMW wird die Klima eingeschaltet!") }, 2000);
           var Temp = getState("hm-rpc.0.LEQ1221393.1.TEMPERATURE").val;  // Temp vom Kombisensor
           sendTo('telegram', {user: 'Dieter',text: "BMW: Temperatur= " + Temp.toFixed(1) + " °C, \nKlima wurde <b>eingeschaltet !</b>", parse_mode: 'HTML'}); 
       }); 
       function Taster_weiter(T_log, T_say, T_tele) { 
           log(T_log); Surface_Lautstaerke(50); setState('sayit.3.tts.text', 'opt/iobroker/iobroker-data/files/vis.0/mp3/tos-computer-03.mp3');
           setTimeout(function() { setState('sayit.4.tts.text', T_say) }, 2000); sendTo('telegram', {user: 'Dieter',text: T_tele, parse_mode: 'HTML'}); 
       }
    
    
    // ******************************************************************************************************************************************
    // Remote
    // ******************************************************************************************************************************************
    // Remote Befehle
       function remote_Lichthupe() { var details = { 'serviceType': 'LIGHT_FLASH' }; remote_ausfuehren(details); }                             // Remote: Lichthupe
       function remote_Hupe() { var details = { 'serviceType': 'HORN_BLOW' }; remote_ausfuehren(details); }                                    // Remote: Hupe
       function remote_Auto_auf() { var details = { 'serviceType': 'DOOR_UNLOCK', 'bmwSkAnswer': Antwort }; remote_ausfuehren(details); }      // Remote: Auto_auf
       function remote_Auto_zu() { var details = { 'serviceType': 'DOOR_LOCK' }; remote_ausfuehren(details); }                                 // Remote: Auto_zu
       function remote_Klima() { var details = { 'serviceType': 'CLIMATE_NOW' }; remote_ausfuehren(details); }                                 // Remote: Klimatisieren
    // Remote ausführen
       function remote_ausfuehren(details) {
           var formBody = [];
           for (var property in details) { var encodedKey = encodeURIComponent(property); var encodedValue = encodeURIComponent(details[property]); formBody.push(encodedKey + "=" + encodedValue); }
           formBody = formBody.join("&");
           var options = { url: 'https://b2vapi.bmwgroup.com/webapi/v1/user/vehicles/' + VIN + '/executeService', headers: {'Content-Type': 'application/x-www-form-urlencoded'}, auth: { bearer: (getState(Obj_Token).val)}, body: formBody };
           function callback(error, response, body) { var result = JSON.parse(body); log(result) }
           request.post(options, callback);
       }
    
    // ******************************************************************************************************************************************
    // Token
    // ******************************************************************************************************************************************
    // neuer Token holen
       function hole_Token() {
           var details = { 'username': user, 'password': pass, 'grant_type': 'password', 'scope':'authenticate_user vehicle_data remote_services' };
           var formBody = [];
           for (var property in details) { var encodedKey = encodeURIComponent(property); var encodedValue = encodeURIComponent(details[property]); formBody.push(encodedKey + "=" + encodedValue); }
           formBody = formBody.join("&");
           var options = { url: 'https://b2vapi.bmwgroup.com/gcdm/oauth/token', headers: {'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': 'Basic ZDc2NmI1MzctYTY1NC00Y2JkLWEzZGMtMGNhNTY3MmQ3ZjhkOjE1ZjY5N2Y2LWE1ZDUtNGNhZC05OWQ5LTNhMTViYzdmMzk3Mw==', 'Credentials': 'nQv6CqtxJuXWP74xf3CJwUEP:1zDHx6un4cDjybLENN3kyfumX2kEYigWPcQpdvDRpIBk7rOJ'}, body: formBody };
           function callback(error, response, body) { var result = JSON.parse(body); setState(Obj_Token, ('' + result.access_token)); log("BMW - neuer Token geholt: " + result.access_token); }
           request.post(options, callback);
       }
    schedule('4 */1 * * *', function () {    // jede Stunde neuer Token holen
       hole_Token();
    });
    
    

    Jeder der will, kann es gerne benutzen.
    mfg
    Dieter

    S Offline
    S Offline
    Strobelix
    schrieb am zuletzt editiert von
    #200

    @bahnuhr
    Ok das ist natürlich wesentlich filigraner 👍🏻

    Raspberrymatic, Homematic & Homematic IP Aktoren, ioBroker auf NUC i3, Nuki, Harmony Hub, Digitalstrom, Diverse Sonoff (Tasmota) und Shellies

    S 1 Antwort Letzte Antwort
    0
    • S Strobelix

      @bahnuhr
      Ok das ist natürlich wesentlich filigraner 👍🏻

      S Offline
      S Offline
      Strobelix
      schrieb am zuletzt editiert von
      #201

      Für alle die sich in Blockly "mehr zu Hause" fühlen als in reinem JS, habe ich das hier noch mal verschönert.
      Alles in einem Blocklyscript, die Zugangsdaten können jetzt direkt im Blockly eingegeben werden und das ist auch nur noch einmalig notwendig.
      Alle Befehlsfunktionen habe ich zusammengefasst. So ist es aufgeräumter und übersichtlicher.

      Hier das "neue" Blockly:

      <xml xmlns="https://developers.google.com/blockly/xml">
        <variables>
          <variable id="XN3*GfIfi@/dz;VqG=f1">Benutzername</variable>
          <variable id="X_?!znf}q.nyV^o^2X|{">Befehl</variable>
          <variable id="g!GS3XBhRJ-^i*r~I#(M">Passwort</variable>
          <variable id="vHSyM|o)Q*AP{F}^8j?A">VIN</variable>
          <variable id="`M`m=udEPjZ8%NR9[7#t">Sicherheitsantwort</variable>
        </variables>
        <block type="variables_set" id="25.7NsDbuJp,f,+kg9f}" x="-12" y="-412">
          <field name="VAR" id="XN3*GfIfi@/dz;VqG=f1">Benutzername</field>
          <value name="VALUE">
            <block type="text" id="|ogs8P81w~dvfv9YO/LK">
              <field name="TEXT">Mailadresse</field>
            </block>
          </value>
          <next>
            <block type="variables_set" id="A7ExvCH7vJ[i97`qN$cV">
              <field name="VAR" id="g!GS3XBhRJ-^i*r~I#(M">Passwort</field>
              <value name="VALUE">
                <block type="text" id="Xt:`irNXz.ndzQ0dO1uf">
                  <field name="TEXT">Passwort</field>
                </block>
              </value>
              <next>
                <block type="variables_set" id="PU9tEGVF_V-G-8Lkef[m">
                  <field name="VAR" id="vHSyM|o)Q*AP{F}^8j?A">VIN</field>
                  <value name="VALUE">
                    <block type="text" id="Z=AR.p~z^o~8W%tTE%Dq">
                      <field name="TEXT">WBAT.....</field>
                    </block>
                  </value>
                  <next>
                    <block type="variables_set" id="@j5.B|TqXRajXjYa]f=f">
                      <field name="VAR" id="`M`m=udEPjZ8%NR9[7#t">Sicherheitsantwort</field>
                      <value name="VALUE">
                        <block type="text" id="m#{+]bm?9QK;w(!7).2d">
                          <field name="TEXT">Antwort aus dem Web Portal</field>
                        </block>
                      </value>
                      <next>
                        <block type="procedures_callnoreturn" id="nRnV$Y]d`-z^9MAw8Y.o">
                          <mutation name="Datenpunkte erstellen"></mutation>
                          <next>
                            <block type="procedures_callcustomnoreturn" id="sCCxQw~6kxo3.d^m)Pp-">
                              <mutation name="Token abfragen"></mutation>
                              <next>
                                <block type="on" id="Lb,dTP]LKtW1;deq|Qoj">
                                  <field name="OID">0_userdata.0.BMW.NeuerToken</field>
                                  <field name="CONDITION">any</field>
                                  <field name="ACK_CONDITION">false</field>
                                  <statement name="STATEMENT">
                                    <block type="controls_if" id="u9vRH6uvBpbtNi5Eb$re">
                                      <value name="IF0">
                                        <block type="on_source" id="[ZV_ZO^d$dk~r;SHUx@7">
                                          <field name="ATTR">state.val</field>
                                        </block>
                                      </value>
                                      <statement name="DO0">
                                        <block type="procedures_callcustomnoreturn" id="iMM#y=#E0[lqAuF{O#,A">
                                          <mutation name="Token abfragen"></mutation>
                                        </block>
                                      </statement>
                                    </block>
                                  </statement>
                                  <next>
                                    <block type="schedule" id="6.1-pU|?K[LZXvgI}cvN">
                                      <field name="SCHEDULE">*/60 * * * *</field>
                                      <statement name="STATEMENT">
                                        <block type="procedures_callcustomnoreturn" id="S_QWZ%P:XPQ1H8HWO%9)">
                                          <mutation name="Token abfragen"></mutation>
                                        </block>
                                      </statement>
                                    </block>
                                  </next>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </next>
        </block>
        <block type="procedures_defcustomnoreturn" id="C|Hc:`b-c/c[Tgs1y:IM" x="513" y="-413">
          <mutation statements="false">
            <arg name="Befehl" varid="X_?!znf}q.nyV^o^2X|{"></arg>
          </mutation>
          <field name="NAME">Befehl</field>
          <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogQmVmZWhsLAogICAgJ2Jtd1NrQW5zd2VyJzogU2ljaGVyaGVpdHNhbnR3b3J0Cn07CiAKdmFyIGZvcm1Cb2R5ID0gW107CmZvciAodmFyIHByb3BlcnR5IGluIGRldGFpbHMpIHsKICB2YXIgZW5jb2RlZEtleSA9IGVuY29kZVVSSUNvbXBvbmVudChwcm9wZXJ0eSk7CiAgdmFyIGVuY29kZWRWYWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChkZXRhaWxzW3Byb3BlcnR5XSk7CiAgZm9ybUJvZHkucHVzaChlbmNvZGVkS2V5ICsgIj0iICsgZW5jb2RlZFZhbHVlKTsKfQpmb3JtQm9keSA9IGZvcm1Cb2R5LmpvaW4oIiYiKTsKCgogdmFyIG9wdGlvbnMgPSB7CiAgdXJsOiAnaHR0cHM6Ly9iMnZhcGkuYm13Z3JvdXAuY29tL3dlYmFwaS92MS91c2VyL3ZlaGljbGVzLycrVklOKycvZXhlY3V0ZVNlcnZpY2UnLAogIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCd9LAogIGF1dGg6IHsKICAgIGJlYXJlcjogKGdldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlRva2VuIikudmFsKX0sCiAgYm9keTogZm9ybUJvZHkKfTsKCmZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCByZXNwb25zZSwgYm9keSkgewp2YXIgcmVzdWx0ID0gSlNPTi5wYXJzZShib2R5KTsKY29uc29sZS5sb2cocmVzdWx0KQp9CgoKcmVxdWVzdC5wb3N0KG9wdGlvbnMsIGNhbGxiYWNrKTs=</field>
          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
        </block>
        <block type="procedures_defcustomnoreturn" id="qLVD,Ua~|Xo7$C,E2/2R" x="512" y="-363">
          <mutation statements="false"></mutation>
          <field name="NAME">Token abfragen</field>
          <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3VzZXJuYW1lJzogQmVudXR6ZXJuYW1lLAogICAgJ3Bhc3N3b3JkJzogUGFzc3dvcnQsCiAgICAnZ3JhbnRfdHlwZSc6ICdwYXNzd29yZCcsCiAgICAnc2NvcGUnOidhdXRoZW50aWNhdGVfdXNlciB2ZWhpY2xlX2RhdGEgcmVtb3RlX3NlcnZpY2VzJwp9OwogCnZhciBmb3JtQm9keSA9IFtdOwpmb3IgKHZhciBwcm9wZXJ0eSBpbiBkZXRhaWxzKSB7CiAgdmFyIGVuY29kZWRLZXkgPSBlbmNvZGVVUklDb21wb25lbnQocHJvcGVydHkpOwogIHZhciBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQoZGV0YWlsc1twcm9wZXJ0eV0pOwogIGZvcm1Cb2R5LnB1c2goZW5jb2RlZEtleSArICI9IiArIGVuY29kZWRWYWx1ZSk7Cn0KZm9ybUJvZHkgPSBmb3JtQm9keS5qb2luKCImIik7CgoKIHZhciBvcHRpb25zID0gewogIHVybDogJ2h0dHBzOi8vYjJ2YXBpLmJtd2dyb3VwLmNvbS9nY2RtL29hdXRoL3Rva2VuJywKICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLCAnQXV0aG9yaXphdGlvbic6ICdCYXNpYyBaRGMyTm1JMU16Y3RZVFkxTkMwMFkySmtMV0V6WkdNdE1HTmhOVFkzTW1RM1pqaGtPakUxWmpZNU4yWTJMV0UxWkRVdE5HTmhaQzA1T1dRNUxUTmhNVFZpWXpkbU16azNNdz09JywgJ0NyZWRlbnRpYWxzJzogJ25RdjZDcXR4SnVYV1A3NHhmM0NKd1VFUDoxekRIeDZ1bjRjRGp5YkxFTk4za3lmdW1YMmtFWWlnV1BjUXBkdkRScElCazdyT0onfSwKICBib2R5OiBmb3JtQm9keQp9OwogCmZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCByZXNwb25zZSwgYm9keSkgewp2YXIgcmVzdWx0ID0gSlNPTi5wYXJzZShib2R5KTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iLypUb2tlbiovLCAoJycgKyByZXN1bHQuYWNjZXNzX3Rva2VuKSk7CmNvbnNvbGUubG9nKHJlc3VsdCkKfQogIApyZXF1ZXN0LnBvc3Qob3B0aW9ucywgY2FsbGJhY2spOw==</field>
          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
        </block>
        <block type="on" id=")QODy$[H-(7lc9HPc%Xx" x="513" y="-312">
          <field name="OID">0_userdata.0.BMW.Klimatisieren</field>
          <field name="CONDITION">any</field>
          <field name="ACK_CONDITION">false</field>
          <statement name="STATEMENT">
            <block type="controls_if" id="qi2OU5y9AjO|pE1=!(W`">
              <value name="IF0">
                <block type="on_source" id="]6?RDB6_qbNs}FH@FT/5">
                  <field name="ATTR">state.val</field>
                </block>
              </value>
              <statement name="DO0">
                <block type="procedures_callcustomnoreturn" id="DC)Em1Ehbz1LW6fj[K!7">
                  <mutation name="Befehl">
                    <arg name="Befehl"></arg>
                  </mutation>
                  <value name="ARG0">
                    <block type="text" id="wekLEjbNhi3sYYeR;bq1">
                      <field name="TEXT">CLIMATE_NOW</field>
                    </block>
                  </value>
                  <next>
                    <block type="update" id="?@kSoXR52NIAnmTbP@is">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                      <field name="OID">0_userdata.0.BMW.Klimatisieren</field>
                      <field name="WITH_DELAY">TRUE</field>
                      <field name="DELAY_MS">1000</field>
                      <field name="UNIT">ms</field>
                      <field name="CLEAR_RUNNING">FALSE</field>
                      <value name="VALUE">
                        <block type="logic_boolean" id="K/F}wA*$n:5CnQHpYr@$">
                          <field name="BOOL">FALSE</field>
                        </block>
                      </value>
                    </block>
                  </next>
                </block>
              </statement>
            </block>
          </statement>
          <next>
            <block type="on" id="DO.4#e50zzBReVkXk5yb">
              <field name="OID">0_userdata.0.BMW.Zusperren</field>
              <field name="CONDITION">any</field>
              <field name="ACK_CONDITION">false</field>
              <statement name="STATEMENT">
                <block type="controls_if" id="OiM7;RsdIpMs*67U$W1}">
                  <value name="IF0">
                    <block type="on_source" id="DUggLU3jpKTMWDwchY@Q">
                      <field name="ATTR">state.val</field>
                    </block>
                  </value>
                  <statement name="DO0">
                    <block type="procedures_callcustomnoreturn" id="6]WNw%0B$@C*pjCV+42;">
                      <mutation name="Befehl">
                        <arg name="Befehl"></arg>
                      </mutation>
                      <value name="ARG0">
                        <block type="text" id="PU^ebj(ix}-k_Y?zFd8u">
                          <field name="TEXT">DOOR_LOCK</field>
                        </block>
                      </value>
                      <next>
                        <block type="update" id="9rlPG|IAAhKHcZ|+99|z">
                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                          <field name="OID">0_userdata.0.BMW.Zusperren</field>
                          <field name="WITH_DELAY">TRUE</field>
                          <field name="DELAY_MS">1000</field>
                          <field name="UNIT">ms</field>
                          <field name="CLEAR_RUNNING">FALSE</field>
                          <value name="VALUE">
                            <block type="logic_boolean" id="0,a9ZN|M|PkAi}n*T19O">
                              <field name="BOOL">FALSE</field>
                            </block>
                          </value>
                        </block>
                      </next>
                    </block>
                  </statement>
                </block>
              </statement>
              <next>
                <block type="on" id="Mt2*}WFoiR5--row2T8H">
                  <field name="OID">0_userdata.0.BMW.Aufsperren</field>
                  <field name="CONDITION">any</field>
                  <field name="ACK_CONDITION">false</field>
                  <statement name="STATEMENT">
                    <block type="controls_if" id="1tfzyj?EGI~c[$sfM,=H">
                      <value name="IF0">
                        <block type="on_source" id="L-qx[QjgE7YK^@QoxL?s">
                          <field name="ATTR">state.val</field>
                        </block>
                      </value>
                      <statement name="DO0">
                        <block type="procedures_callcustomnoreturn" id="UA+^g5gs#H|-G2i{TbW0">
                          <mutation name="Befehl">
                            <arg name="Befehl"></arg>
                          </mutation>
                          <value name="ARG0">
                            <block type="text" id="cyD@aSO~.u2Bx0K/ZDvH">
                              <field name="TEXT">DOOR_UNLOCK</field>
                            </block>
                          </value>
                          <next>
                            <block type="update" id="!W;+jZdtO4Z$.N{oZ!~u">
                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                              <field name="OID">0_userdata.0.BMW.Aufsperren</field>
                              <field name="WITH_DELAY">TRUE</field>
                              <field name="DELAY_MS">1000</field>
                              <field name="UNIT">ms</field>
                              <field name="CLEAR_RUNNING">FALSE</field>
                              <value name="VALUE">
                                <block type="logic_boolean" id="i7H=1Q%)]bTWwtb,mZL^">
                                  <field name="BOOL">FALSE</field>
                                </block>
                              </value>
                            </block>
                          </next>
                        </block>
                      </statement>
                    </block>
                  </statement>
                  <next>
                    <block type="on" id="x3sA~Bo,9#W8+0QQ4?Mk">
                      <field name="OID">0_userdata.0.BMW.Lichthupe</field>
                      <field name="CONDITION">any</field>
                      <field name="ACK_CONDITION">false</field>
                      <statement name="STATEMENT">
                        <block type="controls_if" id="g^t/])A_OBmH:}D:7hx1">
                          <value name="IF0">
                            <block type="on_source" id="Qk9]ZT(6`yuT9IJ1mS#h">
                              <field name="ATTR">state.val</field>
                            </block>
                          </value>
                          <statement name="DO0">
                            <block type="procedures_callcustomnoreturn" id="?Ar*XxGO6vVdJr~9F;?)">
                              <mutation name="Befehl">
                                <arg name="Befehl"></arg>
                              </mutation>
                              <value name="ARG0">
                                <block type="text" id="8y9k?DHsHpiCgnF.S`o=">
                                  <field name="TEXT">LIGHT_FLASH</field>
                                </block>
                              </value>
                              <next>
                                <block type="update" id="8viE(:=_WA,IPGi~+0MV">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                  <field name="OID">0_userdata.0.BMW.Lichthupe</field>
                                  <field name="WITH_DELAY">TRUE</field>
                                  <field name="DELAY_MS">1000</field>
                                  <field name="UNIT">ms</field>
                                  <field name="CLEAR_RUNNING">FALSE</field>
                                  <value name="VALUE">
                                    <block type="logic_boolean" id="3KW3b{O(!n=5:mg(M_Wv">
                                      <field name="BOOL">FALSE</field>
                                    </block>
                                  </value>
                                </block>
                              </next>
                            </block>
                          </statement>
                        </block>
                      </statement>
                      <next>
                        <block type="on" id=".`HU#5P7{T)o:1xn*a/?">
                          <field name="OID">0_userdata.0.BMW.Hupen</field>
                          <field name="CONDITION">any</field>
                          <field name="ACK_CONDITION">false</field>
                          <statement name="STATEMENT">
                            <block type="controls_if" id="Qrr/!E+TuG7Gq66FQA;5">
                              <value name="IF0">
                                <block type="on_source" id="mvXJMfS$OdG+L~5/z^rY">
                                  <field name="ATTR">state.val</field>
                                </block>
                              </value>
                              <statement name="DO0">
                                <block type="procedures_callcustomnoreturn" id="%-uafX09p)!Y/xx5^fi2">
                                  <mutation name="Befehl">
                                    <arg name="Befehl"></arg>
                                  </mutation>
                                  <value name="ARG0">
                                    <block type="text" id="}58KZNu_0dQ=K}dkAOS$">
                                      <field name="TEXT">HORN_BLOW</field>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="update" id="GWaADA}?}4ONL*[A[7Fi">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                      <field name="OID">0_userdata.0.BMW.Hupen</field>
                                      <field name="WITH_DELAY">TRUE</field>
                                      <field name="DELAY_MS">1000</field>
                                      <field name="UNIT">ms</field>
                                      <field name="CLEAR_RUNNING">FALSE</field>
                                      <value name="VALUE">
                                        <block type="logic_boolean" id="f^.-6^1JVE#^ag9aE_/X">
                                          <field name="BOOL">FALSE</field>
                                        </block>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                            </block>
                          </statement>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </next>
        </block>
        <block type="procedures_defnoreturn" id="|j~QSzdhMG38aQ;V1mPc" collapsed="true" x="13" y="63">
          <field name="NAME">Datenpunkte erstellen</field>
          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
          <statement name="STACK">
            <block type="create" id="!Bqw.`_nnd;$sm~A@{Q3">
              <field name="NAME">0_userdata.0.BMW.NeuerToken</field>
              <value name="COMMON">
                <block type="text" id="!:1H2(OE_?WjY60~:*g0">
                  <field name="TEXT">{"name": "NeuerToken","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                </block>
              </value>
              <next>
                <block type="create" id="13]PXp{s02GRS^2rU@5p">
                  <field name="NAME">0_userdata.0.BMW.Token</field>
                  <value name="COMMON">
                    <block type="text" id="{i=WwB;}YuxwEcmD6j)/">
                      <field name="TEXT">{"name": "Token","role": "","type": "string","desc": "Manuell erzeugt","def": "","read": true,"write": true}</field>
                    </block>
                  </value>
                  <next>
                    <block type="create" id="+F7.+]A.3oWYgBO;o3l@">
                      <field name="NAME">0_userdata.0.BMW.Klimatisieren</field>
                      <value name="COMMON">
                        <block type="text" id="/Ls,.mwrB1gtt4n,OtP?">
                          <field name="TEXT">{"name": "Klimatisieren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                        </block>
                      </value>
                      <next>
                        <block type="create" id="9+lYiXoKcCC}@ra33swp">
                          <field name="NAME">0_userdata.0.BMW.Hupen</field>
                          <value name="COMMON">
                            <block type="text" id="u:n1k-I|L=F=8?JMe!(l">
                              <field name="TEXT">{"name": "Hupen","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                            </block>
                          </value>
                          <next>
                            <block type="create" id="5x9-eg*nuFpH[i2~aI4g">
                              <field name="NAME">0_userdata.0.BMW.Aufsperren</field>
                              <value name="COMMON">
                                <block type="text" id="vGXV2B#+A==u5HFC!tRT">
                                  <field name="TEXT">{"name": "Aufsperren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                </block>
                              </value>
                              <next>
                                <block type="create" id="qfuj7fsIN;X0S`.s~:/1">
                                  <field name="NAME">0_userdata.0.BMW.Zusperren</field>
                                  <value name="COMMON">
                                    <block type="text" id="lG?k08n8yap6EBCwv;kF">
                                      <field name="TEXT">{"name": "Zusperren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="create" id="g27XDJ5cUzQMp;IDa?0V">
                                      <field name="NAME">0_userdata.0.BMW.Lichthupe</field>
                                      <value name="COMMON">
                                        <block type="text" id="%#XQ;ro0{u(B56z26$C@">
                                          <field name="TEXT">{"name": "Lichthupe","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                        </block>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </statement>
        </block>
      </xml>
      

      Raspberrymatic, Homematic & Homematic IP Aktoren, ioBroker auf NUC i3, Nuki, Harmony Hub, Digitalstrom, Diverse Sonoff (Tasmota) und Shellies

      M S 2 Antworten Letzte Antwort
      1
      • S Strobelix

        Für alle die sich in Blockly "mehr zu Hause" fühlen als in reinem JS, habe ich das hier noch mal verschönert.
        Alles in einem Blocklyscript, die Zugangsdaten können jetzt direkt im Blockly eingegeben werden und das ist auch nur noch einmalig notwendig.
        Alle Befehlsfunktionen habe ich zusammengefasst. So ist es aufgeräumter und übersichtlicher.

        Hier das "neue" Blockly:

        <xml xmlns="https://developers.google.com/blockly/xml">
          <variables>
            <variable id="XN3*GfIfi@/dz;VqG=f1">Benutzername</variable>
            <variable id="X_?!znf}q.nyV^o^2X|{">Befehl</variable>
            <variable id="g!GS3XBhRJ-^i*r~I#(M">Passwort</variable>
            <variable id="vHSyM|o)Q*AP{F}^8j?A">VIN</variable>
            <variable id="`M`m=udEPjZ8%NR9[7#t">Sicherheitsantwort</variable>
          </variables>
          <block type="variables_set" id="25.7NsDbuJp,f,+kg9f}" x="-12" y="-412">
            <field name="VAR" id="XN3*GfIfi@/dz;VqG=f1">Benutzername</field>
            <value name="VALUE">
              <block type="text" id="|ogs8P81w~dvfv9YO/LK">
                <field name="TEXT">Mailadresse</field>
              </block>
            </value>
            <next>
              <block type="variables_set" id="A7ExvCH7vJ[i97`qN$cV">
                <field name="VAR" id="g!GS3XBhRJ-^i*r~I#(M">Passwort</field>
                <value name="VALUE">
                  <block type="text" id="Xt:`irNXz.ndzQ0dO1uf">
                    <field name="TEXT">Passwort</field>
                  </block>
                </value>
                <next>
                  <block type="variables_set" id="PU9tEGVF_V-G-8Lkef[m">
                    <field name="VAR" id="vHSyM|o)Q*AP{F}^8j?A">VIN</field>
                    <value name="VALUE">
                      <block type="text" id="Z=AR.p~z^o~8W%tTE%Dq">
                        <field name="TEXT">WBAT.....</field>
                      </block>
                    </value>
                    <next>
                      <block type="variables_set" id="@j5.B|TqXRajXjYa]f=f">
                        <field name="VAR" id="`M`m=udEPjZ8%NR9[7#t">Sicherheitsantwort</field>
                        <value name="VALUE">
                          <block type="text" id="m#{+]bm?9QK;w(!7).2d">
                            <field name="TEXT">Antwort aus dem Web Portal</field>
                          </block>
                        </value>
                        <next>
                          <block type="procedures_callnoreturn" id="nRnV$Y]d`-z^9MAw8Y.o">
                            <mutation name="Datenpunkte erstellen"></mutation>
                            <next>
                              <block type="procedures_callcustomnoreturn" id="sCCxQw~6kxo3.d^m)Pp-">
                                <mutation name="Token abfragen"></mutation>
                                <next>
                                  <block type="on" id="Lb,dTP]LKtW1;deq|Qoj">
                                    <field name="OID">0_userdata.0.BMW.NeuerToken</field>
                                    <field name="CONDITION">any</field>
                                    <field name="ACK_CONDITION">false</field>
                                    <statement name="STATEMENT">
                                      <block type="controls_if" id="u9vRH6uvBpbtNi5Eb$re">
                                        <value name="IF0">
                                          <block type="on_source" id="[ZV_ZO^d$dk~r;SHUx@7">
                                            <field name="ATTR">state.val</field>
                                          </block>
                                        </value>
                                        <statement name="DO0">
                                          <block type="procedures_callcustomnoreturn" id="iMM#y=#E0[lqAuF{O#,A">
                                            <mutation name="Token abfragen"></mutation>
                                          </block>
                                        </statement>
                                      </block>
                                    </statement>
                                    <next>
                                      <block type="schedule" id="6.1-pU|?K[LZXvgI}cvN">
                                        <field name="SCHEDULE">*/60 * * * *</field>
                                        <statement name="STATEMENT">
                                          <block type="procedures_callcustomnoreturn" id="S_QWZ%P:XPQ1H8HWO%9)">
                                            <mutation name="Token abfragen"></mutation>
                                          </block>
                                        </statement>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </next>
          </block>
          <block type="procedures_defcustomnoreturn" id="C|Hc:`b-c/c[Tgs1y:IM" x="513" y="-413">
            <mutation statements="false">
              <arg name="Befehl" varid="X_?!znf}q.nyV^o^2X|{"></arg>
            </mutation>
            <field name="NAME">Befehl</field>
            <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogQmVmZWhsLAogICAgJ2Jtd1NrQW5zd2VyJzogU2ljaGVyaGVpdHNhbnR3b3J0Cn07CiAKdmFyIGZvcm1Cb2R5ID0gW107CmZvciAodmFyIHByb3BlcnR5IGluIGRldGFpbHMpIHsKICB2YXIgZW5jb2RlZEtleSA9IGVuY29kZVVSSUNvbXBvbmVudChwcm9wZXJ0eSk7CiAgdmFyIGVuY29kZWRWYWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChkZXRhaWxzW3Byb3BlcnR5XSk7CiAgZm9ybUJvZHkucHVzaChlbmNvZGVkS2V5ICsgIj0iICsgZW5jb2RlZFZhbHVlKTsKfQpmb3JtQm9keSA9IGZvcm1Cb2R5LmpvaW4oIiYiKTsKCgogdmFyIG9wdGlvbnMgPSB7CiAgdXJsOiAnaHR0cHM6Ly9iMnZhcGkuYm13Z3JvdXAuY29tL3dlYmFwaS92MS91c2VyL3ZlaGljbGVzLycrVklOKycvZXhlY3V0ZVNlcnZpY2UnLAogIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCd9LAogIGF1dGg6IHsKICAgIGJlYXJlcjogKGdldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlRva2VuIikudmFsKX0sCiAgYm9keTogZm9ybUJvZHkKfTsKCmZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCByZXNwb25zZSwgYm9keSkgewp2YXIgcmVzdWx0ID0gSlNPTi5wYXJzZShib2R5KTsKY29uc29sZS5sb2cocmVzdWx0KQp9CgoKcmVxdWVzdC5wb3N0KG9wdGlvbnMsIGNhbGxiYWNrKTs=</field>
            <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
          </block>
          <block type="procedures_defcustomnoreturn" id="qLVD,Ua~|Xo7$C,E2/2R" x="512" y="-363">
            <mutation statements="false"></mutation>
            <field name="NAME">Token abfragen</field>
            <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3VzZXJuYW1lJzogQmVudXR6ZXJuYW1lLAogICAgJ3Bhc3N3b3JkJzogUGFzc3dvcnQsCiAgICAnZ3JhbnRfdHlwZSc6ICdwYXNzd29yZCcsCiAgICAnc2NvcGUnOidhdXRoZW50aWNhdGVfdXNlciB2ZWhpY2xlX2RhdGEgcmVtb3RlX3NlcnZpY2VzJwp9OwogCnZhciBmb3JtQm9keSA9IFtdOwpmb3IgKHZhciBwcm9wZXJ0eSBpbiBkZXRhaWxzKSB7CiAgdmFyIGVuY29kZWRLZXkgPSBlbmNvZGVVUklDb21wb25lbnQocHJvcGVydHkpOwogIHZhciBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQoZGV0YWlsc1twcm9wZXJ0eV0pOwogIGZvcm1Cb2R5LnB1c2goZW5jb2RlZEtleSArICI9IiArIGVuY29kZWRWYWx1ZSk7Cn0KZm9ybUJvZHkgPSBmb3JtQm9keS5qb2luKCImIik7CgoKIHZhciBvcHRpb25zID0gewogIHVybDogJ2h0dHBzOi8vYjJ2YXBpLmJtd2dyb3VwLmNvbS9nY2RtL29hdXRoL3Rva2VuJywKICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLCAnQXV0aG9yaXphdGlvbic6ICdCYXNpYyBaRGMyTm1JMU16Y3RZVFkxTkMwMFkySmtMV0V6WkdNdE1HTmhOVFkzTW1RM1pqaGtPakUxWmpZNU4yWTJMV0UxWkRVdE5HTmhaQzA1T1dRNUxUTmhNVFZpWXpkbU16azNNdz09JywgJ0NyZWRlbnRpYWxzJzogJ25RdjZDcXR4SnVYV1A3NHhmM0NKd1VFUDoxekRIeDZ1bjRjRGp5YkxFTk4za3lmdW1YMmtFWWlnV1BjUXBkdkRScElCazdyT0onfSwKICBib2R5OiBmb3JtQm9keQp9OwogCmZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCByZXNwb25zZSwgYm9keSkgewp2YXIgcmVzdWx0ID0gSlNPTi5wYXJzZShib2R5KTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iLypUb2tlbiovLCAoJycgKyByZXN1bHQuYWNjZXNzX3Rva2VuKSk7CmNvbnNvbGUubG9nKHJlc3VsdCkKfQogIApyZXF1ZXN0LnBvc3Qob3B0aW9ucywgY2FsbGJhY2spOw==</field>
            <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
          </block>
          <block type="on" id=")QODy$[H-(7lc9HPc%Xx" x="513" y="-312">
            <field name="OID">0_userdata.0.BMW.Klimatisieren</field>
            <field name="CONDITION">any</field>
            <field name="ACK_CONDITION">false</field>
            <statement name="STATEMENT">
              <block type="controls_if" id="qi2OU5y9AjO|pE1=!(W`">
                <value name="IF0">
                  <block type="on_source" id="]6?RDB6_qbNs}FH@FT/5">
                    <field name="ATTR">state.val</field>
                  </block>
                </value>
                <statement name="DO0">
                  <block type="procedures_callcustomnoreturn" id="DC)Em1Ehbz1LW6fj[K!7">
                    <mutation name="Befehl">
                      <arg name="Befehl"></arg>
                    </mutation>
                    <value name="ARG0">
                      <block type="text" id="wekLEjbNhi3sYYeR;bq1">
                        <field name="TEXT">CLIMATE_NOW</field>
                      </block>
                    </value>
                    <next>
                      <block type="update" id="?@kSoXR52NIAnmTbP@is">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                        <field name="OID">0_userdata.0.BMW.Klimatisieren</field>
                        <field name="WITH_DELAY">TRUE</field>
                        <field name="DELAY_MS">1000</field>
                        <field name="UNIT">ms</field>
                        <field name="CLEAR_RUNNING">FALSE</field>
                        <value name="VALUE">
                          <block type="logic_boolean" id="K/F}wA*$n:5CnQHpYr@$">
                            <field name="BOOL">FALSE</field>
                          </block>
                        </value>
                      </block>
                    </next>
                  </block>
                </statement>
              </block>
            </statement>
            <next>
              <block type="on" id="DO.4#e50zzBReVkXk5yb">
                <field name="OID">0_userdata.0.BMW.Zusperren</field>
                <field name="CONDITION">any</field>
                <field name="ACK_CONDITION">false</field>
                <statement name="STATEMENT">
                  <block type="controls_if" id="OiM7;RsdIpMs*67U$W1}">
                    <value name="IF0">
                      <block type="on_source" id="DUggLU3jpKTMWDwchY@Q">
                        <field name="ATTR">state.val</field>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="procedures_callcustomnoreturn" id="6]WNw%0B$@C*pjCV+42;">
                        <mutation name="Befehl">
                          <arg name="Befehl"></arg>
                        </mutation>
                        <value name="ARG0">
                          <block type="text" id="PU^ebj(ix}-k_Y?zFd8u">
                            <field name="TEXT">DOOR_LOCK</field>
                          </block>
                        </value>
                        <next>
                          <block type="update" id="9rlPG|IAAhKHcZ|+99|z">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                            <field name="OID">0_userdata.0.BMW.Zusperren</field>
                            <field name="WITH_DELAY">TRUE</field>
                            <field name="DELAY_MS">1000</field>
                            <field name="UNIT">ms</field>
                            <field name="CLEAR_RUNNING">FALSE</field>
                            <value name="VALUE">
                              <block type="logic_boolean" id="0,a9ZN|M|PkAi}n*T19O">
                                <field name="BOOL">FALSE</field>
                              </block>
                            </value>
                          </block>
                        </next>
                      </block>
                    </statement>
                  </block>
                </statement>
                <next>
                  <block type="on" id="Mt2*}WFoiR5--row2T8H">
                    <field name="OID">0_userdata.0.BMW.Aufsperren</field>
                    <field name="CONDITION">any</field>
                    <field name="ACK_CONDITION">false</field>
                    <statement name="STATEMENT">
                      <block type="controls_if" id="1tfzyj?EGI~c[$sfM,=H">
                        <value name="IF0">
                          <block type="on_source" id="L-qx[QjgE7YK^@QoxL?s">
                            <field name="ATTR">state.val</field>
                          </block>
                        </value>
                        <statement name="DO0">
                          <block type="procedures_callcustomnoreturn" id="UA+^g5gs#H|-G2i{TbW0">
                            <mutation name="Befehl">
                              <arg name="Befehl"></arg>
                            </mutation>
                            <value name="ARG0">
                              <block type="text" id="cyD@aSO~.u2Bx0K/ZDvH">
                                <field name="TEXT">DOOR_UNLOCK</field>
                              </block>
                            </value>
                            <next>
                              <block type="update" id="!W;+jZdtO4Z$.N{oZ!~u">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                <field name="OID">0_userdata.0.BMW.Aufsperren</field>
                                <field name="WITH_DELAY">TRUE</field>
                                <field name="DELAY_MS">1000</field>
                                <field name="UNIT">ms</field>
                                <field name="CLEAR_RUNNING">FALSE</field>
                                <value name="VALUE">
                                  <block type="logic_boolean" id="i7H=1Q%)]bTWwtb,mZL^">
                                    <field name="BOOL">FALSE</field>
                                  </block>
                                </value>
                              </block>
                            </next>
                          </block>
                        </statement>
                      </block>
                    </statement>
                    <next>
                      <block type="on" id="x3sA~Bo,9#W8+0QQ4?Mk">
                        <field name="OID">0_userdata.0.BMW.Lichthupe</field>
                        <field name="CONDITION">any</field>
                        <field name="ACK_CONDITION">false</field>
                        <statement name="STATEMENT">
                          <block type="controls_if" id="g^t/])A_OBmH:}D:7hx1">
                            <value name="IF0">
                              <block type="on_source" id="Qk9]ZT(6`yuT9IJ1mS#h">
                                <field name="ATTR">state.val</field>
                              </block>
                            </value>
                            <statement name="DO0">
                              <block type="procedures_callcustomnoreturn" id="?Ar*XxGO6vVdJr~9F;?)">
                                <mutation name="Befehl">
                                  <arg name="Befehl"></arg>
                                </mutation>
                                <value name="ARG0">
                                  <block type="text" id="8y9k?DHsHpiCgnF.S`o=">
                                    <field name="TEXT">LIGHT_FLASH</field>
                                  </block>
                                </value>
                                <next>
                                  <block type="update" id="8viE(:=_WA,IPGi~+0MV">
                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                    <field name="OID">0_userdata.0.BMW.Lichthupe</field>
                                    <field name="WITH_DELAY">TRUE</field>
                                    <field name="DELAY_MS">1000</field>
                                    <field name="UNIT">ms</field>
                                    <field name="CLEAR_RUNNING">FALSE</field>
                                    <value name="VALUE">
                                      <block type="logic_boolean" id="3KW3b{O(!n=5:mg(M_Wv">
                                        <field name="BOOL">FALSE</field>
                                      </block>
                                    </value>
                                  </block>
                                </next>
                              </block>
                            </statement>
                          </block>
                        </statement>
                        <next>
                          <block type="on" id=".`HU#5P7{T)o:1xn*a/?">
                            <field name="OID">0_userdata.0.BMW.Hupen</field>
                            <field name="CONDITION">any</field>
                            <field name="ACK_CONDITION">false</field>
                            <statement name="STATEMENT">
                              <block type="controls_if" id="Qrr/!E+TuG7Gq66FQA;5">
                                <value name="IF0">
                                  <block type="on_source" id="mvXJMfS$OdG+L~5/z^rY">
                                    <field name="ATTR">state.val</field>
                                  </block>
                                </value>
                                <statement name="DO0">
                                  <block type="procedures_callcustomnoreturn" id="%-uafX09p)!Y/xx5^fi2">
                                    <mutation name="Befehl">
                                      <arg name="Befehl"></arg>
                                    </mutation>
                                    <value name="ARG0">
                                      <block type="text" id="}58KZNu_0dQ=K}dkAOS$">
                                        <field name="TEXT">HORN_BLOW</field>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="update" id="GWaADA}?}4ONL*[A[7Fi">
                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                        <field name="OID">0_userdata.0.BMW.Hupen</field>
                                        <field name="WITH_DELAY">TRUE</field>
                                        <field name="DELAY_MS">1000</field>
                                        <field name="UNIT">ms</field>
                                        <field name="CLEAR_RUNNING">FALSE</field>
                                        <value name="VALUE">
                                          <block type="logic_boolean" id="f^.-6^1JVE#^ag9aE_/X">
                                            <field name="BOOL">FALSE</field>
                                          </block>
                                        </value>
                                      </block>
                                    </next>
                                  </block>
                                </statement>
                              </block>
                            </statement>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </next>
          </block>
          <block type="procedures_defnoreturn" id="|j~QSzdhMG38aQ;V1mPc" collapsed="true" x="13" y="63">
            <field name="NAME">Datenpunkte erstellen</field>
            <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
            <statement name="STACK">
              <block type="create" id="!Bqw.`_nnd;$sm~A@{Q3">
                <field name="NAME">0_userdata.0.BMW.NeuerToken</field>
                <value name="COMMON">
                  <block type="text" id="!:1H2(OE_?WjY60~:*g0">
                    <field name="TEXT">{"name": "NeuerToken","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                  </block>
                </value>
                <next>
                  <block type="create" id="13]PXp{s02GRS^2rU@5p">
                    <field name="NAME">0_userdata.0.BMW.Token</field>
                    <value name="COMMON">
                      <block type="text" id="{i=WwB;}YuxwEcmD6j)/">
                        <field name="TEXT">{"name": "Token","role": "","type": "string","desc": "Manuell erzeugt","def": "","read": true,"write": true}</field>
                      </block>
                    </value>
                    <next>
                      <block type="create" id="+F7.+]A.3oWYgBO;o3l@">
                        <field name="NAME">0_userdata.0.BMW.Klimatisieren</field>
                        <value name="COMMON">
                          <block type="text" id="/Ls,.mwrB1gtt4n,OtP?">
                            <field name="TEXT">{"name": "Klimatisieren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                          </block>
                        </value>
                        <next>
                          <block type="create" id="9+lYiXoKcCC}@ra33swp">
                            <field name="NAME">0_userdata.0.BMW.Hupen</field>
                            <value name="COMMON">
                              <block type="text" id="u:n1k-I|L=F=8?JMe!(l">
                                <field name="TEXT">{"name": "Hupen","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                              </block>
                            </value>
                            <next>
                              <block type="create" id="5x9-eg*nuFpH[i2~aI4g">
                                <field name="NAME">0_userdata.0.BMW.Aufsperren</field>
                                <value name="COMMON">
                                  <block type="text" id="vGXV2B#+A==u5HFC!tRT">
                                    <field name="TEXT">{"name": "Aufsperren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                  </block>
                                </value>
                                <next>
                                  <block type="create" id="qfuj7fsIN;X0S`.s~:/1">
                                    <field name="NAME">0_userdata.0.BMW.Zusperren</field>
                                    <value name="COMMON">
                                      <block type="text" id="lG?k08n8yap6EBCwv;kF">
                                        <field name="TEXT">{"name": "Zusperren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="create" id="g27XDJ5cUzQMp;IDa?0V">
                                        <field name="NAME">0_userdata.0.BMW.Lichthupe</field>
                                        <value name="COMMON">
                                          <block type="text" id="%#XQ;ro0{u(B56z26$C@">
                                            <field name="TEXT">{"name": "Lichthupe","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                          </block>
                                        </value>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </statement>
          </block>
        </xml>
        
        M Offline
        M Offline
        mameier1234
        schrieb am zuletzt editiert von
        #202

        @strobelix Einfach Klasse !

        Wenn wir jetzt noch die Statusabfragen hätten, dann wäre es end-Perfekt !!

        Grüße,

        Martin

        bahnuhrB S 2 Antworten Letzte Antwort
        0
        • M mameier1234

          @strobelix Einfach Klasse !

          Wenn wir jetzt noch die Statusabfragen hätten, dann wäre es end-Perfekt !!

          bahnuhrB Online
          bahnuhrB Online
          bahnuhr
          Forum Testing Most Active
          schrieb am zuletzt editiert von
          #203

          @mameier1234 sagte in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:

          @strobelix Einfach Klasse !

          Wenn wir jetzt noch die Statusabfragen hätten, dann wäre es end-Perfekt !!

          Ja, der Befehl wäre wohl so was:
          3cbfac13-47af-4b17-9ce6-fd43858dda6d-image.png

          Habs aber bisher noch nicht hinbekommen.

          Vielleicht hat @Strobelix eine Idee


          Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
          Danke.
          gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
          ScreenToGif :https://www.screentogif.com/downloads.html

          S 1 Antwort Letzte Antwort
          0
          • S Strobelix

            Für alle die sich in Blockly "mehr zu Hause" fühlen als in reinem JS, habe ich das hier noch mal verschönert.
            Alles in einem Blocklyscript, die Zugangsdaten können jetzt direkt im Blockly eingegeben werden und das ist auch nur noch einmalig notwendig.
            Alle Befehlsfunktionen habe ich zusammengefasst. So ist es aufgeräumter und übersichtlicher.

            Hier das "neue" Blockly:

            <xml xmlns="https://developers.google.com/blockly/xml">
              <variables>
                <variable id="XN3*GfIfi@/dz;VqG=f1">Benutzername</variable>
                <variable id="X_?!znf}q.nyV^o^2X|{">Befehl</variable>
                <variable id="g!GS3XBhRJ-^i*r~I#(M">Passwort</variable>
                <variable id="vHSyM|o)Q*AP{F}^8j?A">VIN</variable>
                <variable id="`M`m=udEPjZ8%NR9[7#t">Sicherheitsantwort</variable>
              </variables>
              <block type="variables_set" id="25.7NsDbuJp,f,+kg9f}" x="-12" y="-412">
                <field name="VAR" id="XN3*GfIfi@/dz;VqG=f1">Benutzername</field>
                <value name="VALUE">
                  <block type="text" id="|ogs8P81w~dvfv9YO/LK">
                    <field name="TEXT">Mailadresse</field>
                  </block>
                </value>
                <next>
                  <block type="variables_set" id="A7ExvCH7vJ[i97`qN$cV">
                    <field name="VAR" id="g!GS3XBhRJ-^i*r~I#(M">Passwort</field>
                    <value name="VALUE">
                      <block type="text" id="Xt:`irNXz.ndzQ0dO1uf">
                        <field name="TEXT">Passwort</field>
                      </block>
                    </value>
                    <next>
                      <block type="variables_set" id="PU9tEGVF_V-G-8Lkef[m">
                        <field name="VAR" id="vHSyM|o)Q*AP{F}^8j?A">VIN</field>
                        <value name="VALUE">
                          <block type="text" id="Z=AR.p~z^o~8W%tTE%Dq">
                            <field name="TEXT">WBAT.....</field>
                          </block>
                        </value>
                        <next>
                          <block type="variables_set" id="@j5.B|TqXRajXjYa]f=f">
                            <field name="VAR" id="`M`m=udEPjZ8%NR9[7#t">Sicherheitsantwort</field>
                            <value name="VALUE">
                              <block type="text" id="m#{+]bm?9QK;w(!7).2d">
                                <field name="TEXT">Antwort aus dem Web Portal</field>
                              </block>
                            </value>
                            <next>
                              <block type="procedures_callnoreturn" id="nRnV$Y]d`-z^9MAw8Y.o">
                                <mutation name="Datenpunkte erstellen"></mutation>
                                <next>
                                  <block type="procedures_callcustomnoreturn" id="sCCxQw~6kxo3.d^m)Pp-">
                                    <mutation name="Token abfragen"></mutation>
                                    <next>
                                      <block type="on" id="Lb,dTP]LKtW1;deq|Qoj">
                                        <field name="OID">0_userdata.0.BMW.NeuerToken</field>
                                        <field name="CONDITION">any</field>
                                        <field name="ACK_CONDITION">false</field>
                                        <statement name="STATEMENT">
                                          <block type="controls_if" id="u9vRH6uvBpbtNi5Eb$re">
                                            <value name="IF0">
                                              <block type="on_source" id="[ZV_ZO^d$dk~r;SHUx@7">
                                                <field name="ATTR">state.val</field>
                                              </block>
                                            </value>
                                            <statement name="DO0">
                                              <block type="procedures_callcustomnoreturn" id="iMM#y=#E0[lqAuF{O#,A">
                                                <mutation name="Token abfragen"></mutation>
                                              </block>
                                            </statement>
                                          </block>
                                        </statement>
                                        <next>
                                          <block type="schedule" id="6.1-pU|?K[LZXvgI}cvN">
                                            <field name="SCHEDULE">*/60 * * * *</field>
                                            <statement name="STATEMENT">
                                              <block type="procedures_callcustomnoreturn" id="S_QWZ%P:XPQ1H8HWO%9)">
                                                <mutation name="Token abfragen"></mutation>
                                              </block>
                                            </statement>
                                          </block>
                                        </next>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
              <block type="procedures_defcustomnoreturn" id="C|Hc:`b-c/c[Tgs1y:IM" x="513" y="-413">
                <mutation statements="false">
                  <arg name="Befehl" varid="X_?!znf}q.nyV^o^2X|{"></arg>
                </mutation>
                <field name="NAME">Befehl</field>
                <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogQmVmZWhsLAogICAgJ2Jtd1NrQW5zd2VyJzogU2ljaGVyaGVpdHNhbnR3b3J0Cn07CiAKdmFyIGZvcm1Cb2R5ID0gW107CmZvciAodmFyIHByb3BlcnR5IGluIGRldGFpbHMpIHsKICB2YXIgZW5jb2RlZEtleSA9IGVuY29kZVVSSUNvbXBvbmVudChwcm9wZXJ0eSk7CiAgdmFyIGVuY29kZWRWYWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChkZXRhaWxzW3Byb3BlcnR5XSk7CiAgZm9ybUJvZHkucHVzaChlbmNvZGVkS2V5ICsgIj0iICsgZW5jb2RlZFZhbHVlKTsKfQpmb3JtQm9keSA9IGZvcm1Cb2R5LmpvaW4oIiYiKTsKCgogdmFyIG9wdGlvbnMgPSB7CiAgdXJsOiAnaHR0cHM6Ly9iMnZhcGkuYm13Z3JvdXAuY29tL3dlYmFwaS92MS91c2VyL3ZlaGljbGVzLycrVklOKycvZXhlY3V0ZVNlcnZpY2UnLAogIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCd9LAogIGF1dGg6IHsKICAgIGJlYXJlcjogKGdldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlRva2VuIikudmFsKX0sCiAgYm9keTogZm9ybUJvZHkKfTsKCmZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCByZXNwb25zZSwgYm9keSkgewp2YXIgcmVzdWx0ID0gSlNPTi5wYXJzZShib2R5KTsKY29uc29sZS5sb2cocmVzdWx0KQp9CgoKcmVxdWVzdC5wb3N0KG9wdGlvbnMsIGNhbGxiYWNrKTs=</field>
                <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
              </block>
              <block type="procedures_defcustomnoreturn" id="qLVD,Ua~|Xo7$C,E2/2R" x="512" y="-363">
                <mutation statements="false"></mutation>
                <field name="NAME">Token abfragen</field>
                <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3VzZXJuYW1lJzogQmVudXR6ZXJuYW1lLAogICAgJ3Bhc3N3b3JkJzogUGFzc3dvcnQsCiAgICAnZ3JhbnRfdHlwZSc6ICdwYXNzd29yZCcsCiAgICAnc2NvcGUnOidhdXRoZW50aWNhdGVfdXNlciB2ZWhpY2xlX2RhdGEgcmVtb3RlX3NlcnZpY2VzJwp9OwogCnZhciBmb3JtQm9keSA9IFtdOwpmb3IgKHZhciBwcm9wZXJ0eSBpbiBkZXRhaWxzKSB7CiAgdmFyIGVuY29kZWRLZXkgPSBlbmNvZGVVUklDb21wb25lbnQocHJvcGVydHkpOwogIHZhciBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQoZGV0YWlsc1twcm9wZXJ0eV0pOwogIGZvcm1Cb2R5LnB1c2goZW5jb2RlZEtleSArICI9IiArIGVuY29kZWRWYWx1ZSk7Cn0KZm9ybUJvZHkgPSBmb3JtQm9keS5qb2luKCImIik7CgoKIHZhciBvcHRpb25zID0gewogIHVybDogJ2h0dHBzOi8vYjJ2YXBpLmJtd2dyb3VwLmNvbS9nY2RtL29hdXRoL3Rva2VuJywKICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLCAnQXV0aG9yaXphdGlvbic6ICdCYXNpYyBaRGMyTm1JMU16Y3RZVFkxTkMwMFkySmtMV0V6WkdNdE1HTmhOVFkzTW1RM1pqaGtPakUxWmpZNU4yWTJMV0UxWkRVdE5HTmhaQzA1T1dRNUxUTmhNVFZpWXpkbU16azNNdz09JywgJ0NyZWRlbnRpYWxzJzogJ25RdjZDcXR4SnVYV1A3NHhmM0NKd1VFUDoxekRIeDZ1bjRjRGp5YkxFTk4za3lmdW1YMmtFWWlnV1BjUXBkdkRScElCazdyT0onfSwKICBib2R5OiBmb3JtQm9keQp9OwogCmZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCByZXNwb25zZSwgYm9keSkgewp2YXIgcmVzdWx0ID0gSlNPTi5wYXJzZShib2R5KTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iLypUb2tlbiovLCAoJycgKyByZXN1bHQuYWNjZXNzX3Rva2VuKSk7CmNvbnNvbGUubG9nKHJlc3VsdCkKfQogIApyZXF1ZXN0LnBvc3Qob3B0aW9ucywgY2FsbGJhY2spOw==</field>
                <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
              </block>
              <block type="on" id=")QODy$[H-(7lc9HPc%Xx" x="513" y="-312">
                <field name="OID">0_userdata.0.BMW.Klimatisieren</field>
                <field name="CONDITION">any</field>
                <field name="ACK_CONDITION">false</field>
                <statement name="STATEMENT">
                  <block type="controls_if" id="qi2OU5y9AjO|pE1=!(W`">
                    <value name="IF0">
                      <block type="on_source" id="]6?RDB6_qbNs}FH@FT/5">
                        <field name="ATTR">state.val</field>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="procedures_callcustomnoreturn" id="DC)Em1Ehbz1LW6fj[K!7">
                        <mutation name="Befehl">
                          <arg name="Befehl"></arg>
                        </mutation>
                        <value name="ARG0">
                          <block type="text" id="wekLEjbNhi3sYYeR;bq1">
                            <field name="TEXT">CLIMATE_NOW</field>
                          </block>
                        </value>
                        <next>
                          <block type="update" id="?@kSoXR52NIAnmTbP@is">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                            <field name="OID">0_userdata.0.BMW.Klimatisieren</field>
                            <field name="WITH_DELAY">TRUE</field>
                            <field name="DELAY_MS">1000</field>
                            <field name="UNIT">ms</field>
                            <field name="CLEAR_RUNNING">FALSE</field>
                            <value name="VALUE">
                              <block type="logic_boolean" id="K/F}wA*$n:5CnQHpYr@$">
                                <field name="BOOL">FALSE</field>
                              </block>
                            </value>
                          </block>
                        </next>
                      </block>
                    </statement>
                  </block>
                </statement>
                <next>
                  <block type="on" id="DO.4#e50zzBReVkXk5yb">
                    <field name="OID">0_userdata.0.BMW.Zusperren</field>
                    <field name="CONDITION">any</field>
                    <field name="ACK_CONDITION">false</field>
                    <statement name="STATEMENT">
                      <block type="controls_if" id="OiM7;RsdIpMs*67U$W1}">
                        <value name="IF0">
                          <block type="on_source" id="DUggLU3jpKTMWDwchY@Q">
                            <field name="ATTR">state.val</field>
                          </block>
                        </value>
                        <statement name="DO0">
                          <block type="procedures_callcustomnoreturn" id="6]WNw%0B$@C*pjCV+42;">
                            <mutation name="Befehl">
                              <arg name="Befehl"></arg>
                            </mutation>
                            <value name="ARG0">
                              <block type="text" id="PU^ebj(ix}-k_Y?zFd8u">
                                <field name="TEXT">DOOR_LOCK</field>
                              </block>
                            </value>
                            <next>
                              <block type="update" id="9rlPG|IAAhKHcZ|+99|z">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                <field name="OID">0_userdata.0.BMW.Zusperren</field>
                                <field name="WITH_DELAY">TRUE</field>
                                <field name="DELAY_MS">1000</field>
                                <field name="UNIT">ms</field>
                                <field name="CLEAR_RUNNING">FALSE</field>
                                <value name="VALUE">
                                  <block type="logic_boolean" id="0,a9ZN|M|PkAi}n*T19O">
                                    <field name="BOOL">FALSE</field>
                                  </block>
                                </value>
                              </block>
                            </next>
                          </block>
                        </statement>
                      </block>
                    </statement>
                    <next>
                      <block type="on" id="Mt2*}WFoiR5--row2T8H">
                        <field name="OID">0_userdata.0.BMW.Aufsperren</field>
                        <field name="CONDITION">any</field>
                        <field name="ACK_CONDITION">false</field>
                        <statement name="STATEMENT">
                          <block type="controls_if" id="1tfzyj?EGI~c[$sfM,=H">
                            <value name="IF0">
                              <block type="on_source" id="L-qx[QjgE7YK^@QoxL?s">
                                <field name="ATTR">state.val</field>
                              </block>
                            </value>
                            <statement name="DO0">
                              <block type="procedures_callcustomnoreturn" id="UA+^g5gs#H|-G2i{TbW0">
                                <mutation name="Befehl">
                                  <arg name="Befehl"></arg>
                                </mutation>
                                <value name="ARG0">
                                  <block type="text" id="cyD@aSO~.u2Bx0K/ZDvH">
                                    <field name="TEXT">DOOR_UNLOCK</field>
                                  </block>
                                </value>
                                <next>
                                  <block type="update" id="!W;+jZdtO4Z$.N{oZ!~u">
                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                    <field name="OID">0_userdata.0.BMW.Aufsperren</field>
                                    <field name="WITH_DELAY">TRUE</field>
                                    <field name="DELAY_MS">1000</field>
                                    <field name="UNIT">ms</field>
                                    <field name="CLEAR_RUNNING">FALSE</field>
                                    <value name="VALUE">
                                      <block type="logic_boolean" id="i7H=1Q%)]bTWwtb,mZL^">
                                        <field name="BOOL">FALSE</field>
                                      </block>
                                    </value>
                                  </block>
                                </next>
                              </block>
                            </statement>
                          </block>
                        </statement>
                        <next>
                          <block type="on" id="x3sA~Bo,9#W8+0QQ4?Mk">
                            <field name="OID">0_userdata.0.BMW.Lichthupe</field>
                            <field name="CONDITION">any</field>
                            <field name="ACK_CONDITION">false</field>
                            <statement name="STATEMENT">
                              <block type="controls_if" id="g^t/])A_OBmH:}D:7hx1">
                                <value name="IF0">
                                  <block type="on_source" id="Qk9]ZT(6`yuT9IJ1mS#h">
                                    <field name="ATTR">state.val</field>
                                  </block>
                                </value>
                                <statement name="DO0">
                                  <block type="procedures_callcustomnoreturn" id="?Ar*XxGO6vVdJr~9F;?)">
                                    <mutation name="Befehl">
                                      <arg name="Befehl"></arg>
                                    </mutation>
                                    <value name="ARG0">
                                      <block type="text" id="8y9k?DHsHpiCgnF.S`o=">
                                        <field name="TEXT">LIGHT_FLASH</field>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="update" id="8viE(:=_WA,IPGi~+0MV">
                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                        <field name="OID">0_userdata.0.BMW.Lichthupe</field>
                                        <field name="WITH_DELAY">TRUE</field>
                                        <field name="DELAY_MS">1000</field>
                                        <field name="UNIT">ms</field>
                                        <field name="CLEAR_RUNNING">FALSE</field>
                                        <value name="VALUE">
                                          <block type="logic_boolean" id="3KW3b{O(!n=5:mg(M_Wv">
                                            <field name="BOOL">FALSE</field>
                                          </block>
                                        </value>
                                      </block>
                                    </next>
                                  </block>
                                </statement>
                              </block>
                            </statement>
                            <next>
                              <block type="on" id=".`HU#5P7{T)o:1xn*a/?">
                                <field name="OID">0_userdata.0.BMW.Hupen</field>
                                <field name="CONDITION">any</field>
                                <field name="ACK_CONDITION">false</field>
                                <statement name="STATEMENT">
                                  <block type="controls_if" id="Qrr/!E+TuG7Gq66FQA;5">
                                    <value name="IF0">
                                      <block type="on_source" id="mvXJMfS$OdG+L~5/z^rY">
                                        <field name="ATTR">state.val</field>
                                      </block>
                                    </value>
                                    <statement name="DO0">
                                      <block type="procedures_callcustomnoreturn" id="%-uafX09p)!Y/xx5^fi2">
                                        <mutation name="Befehl">
                                          <arg name="Befehl"></arg>
                                        </mutation>
                                        <value name="ARG0">
                                          <block type="text" id="}58KZNu_0dQ=K}dkAOS$">
                                            <field name="TEXT">HORN_BLOW</field>
                                          </block>
                                        </value>
                                        <next>
                                          <block type="update" id="GWaADA}?}4ONL*[A[7Fi">
                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                            <field name="OID">0_userdata.0.BMW.Hupen</field>
                                            <field name="WITH_DELAY">TRUE</field>
                                            <field name="DELAY_MS">1000</field>
                                            <field name="UNIT">ms</field>
                                            <field name="CLEAR_RUNNING">FALSE</field>
                                            <value name="VALUE">
                                              <block type="logic_boolean" id="f^.-6^1JVE#^ag9aE_/X">
                                                <field name="BOOL">FALSE</field>
                                              </block>
                                            </value>
                                          </block>
                                        </next>
                                      </block>
                                    </statement>
                                  </block>
                                </statement>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
              <block type="procedures_defnoreturn" id="|j~QSzdhMG38aQ;V1mPc" collapsed="true" x="13" y="63">
                <field name="NAME">Datenpunkte erstellen</field>
                <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                <statement name="STACK">
                  <block type="create" id="!Bqw.`_nnd;$sm~A@{Q3">
                    <field name="NAME">0_userdata.0.BMW.NeuerToken</field>
                    <value name="COMMON">
                      <block type="text" id="!:1H2(OE_?WjY60~:*g0">
                        <field name="TEXT">{"name": "NeuerToken","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                      </block>
                    </value>
                    <next>
                      <block type="create" id="13]PXp{s02GRS^2rU@5p">
                        <field name="NAME">0_userdata.0.BMW.Token</field>
                        <value name="COMMON">
                          <block type="text" id="{i=WwB;}YuxwEcmD6j)/">
                            <field name="TEXT">{"name": "Token","role": "","type": "string","desc": "Manuell erzeugt","def": "","read": true,"write": true}</field>
                          </block>
                        </value>
                        <next>
                          <block type="create" id="+F7.+]A.3oWYgBO;o3l@">
                            <field name="NAME">0_userdata.0.BMW.Klimatisieren</field>
                            <value name="COMMON">
                              <block type="text" id="/Ls,.mwrB1gtt4n,OtP?">
                                <field name="TEXT">{"name": "Klimatisieren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                              </block>
                            </value>
                            <next>
                              <block type="create" id="9+lYiXoKcCC}@ra33swp">
                                <field name="NAME">0_userdata.0.BMW.Hupen</field>
                                <value name="COMMON">
                                  <block type="text" id="u:n1k-I|L=F=8?JMe!(l">
                                    <field name="TEXT">{"name": "Hupen","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                  </block>
                                </value>
                                <next>
                                  <block type="create" id="5x9-eg*nuFpH[i2~aI4g">
                                    <field name="NAME">0_userdata.0.BMW.Aufsperren</field>
                                    <value name="COMMON">
                                      <block type="text" id="vGXV2B#+A==u5HFC!tRT">
                                        <field name="TEXT">{"name": "Aufsperren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="create" id="qfuj7fsIN;X0S`.s~:/1">
                                        <field name="NAME">0_userdata.0.BMW.Zusperren</field>
                                        <value name="COMMON">
                                          <block type="text" id="lG?k08n8yap6EBCwv;kF">
                                            <field name="TEXT">{"name": "Zusperren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                          </block>
                                        </value>
                                        <next>
                                          <block type="create" id="g27XDJ5cUzQMp;IDa?0V">
                                            <field name="NAME">0_userdata.0.BMW.Lichthupe</field>
                                            <value name="COMMON">
                                              <block type="text" id="%#XQ;ro0{u(B56z26$C@">
                                                <field name="TEXT">{"name": "Lichthupe","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                              </block>
                                            </value>
                                          </block>
                                        </next>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </statement>
              </block>
            </xml>
            
            S Offline
            S Offline
            Stefan Hanke
            schrieb am zuletzt editiert von
            #204

            @strobelix

            ...Für alle die sich in Blockly "mehr zu Hause" fühlen als in reinem JS, habe ich das hier noch mal verschönert....

            ...sensationell, herzlichen Dank !!!

            👍👍👍

            1 Antwort Letzte Antwort
            0
            • bahnuhrB bahnuhr

              @mameier1234 sagte in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:

              @strobelix Einfach Klasse !

              Wenn wir jetzt noch die Statusabfragen hätten, dann wäre es end-Perfekt !!

              Ja, der Befehl wäre wohl so was:
              3cbfac13-47af-4b17-9ce6-fd43858dda6d-image.png

              Habs aber bisher noch nicht hinbekommen.

              Vielleicht hat @Strobelix eine Idee

              S Offline
              S Offline
              Strobelix
              schrieb am zuletzt editiert von
              #205

              @bahnuhr

              Am Status bin ich dran, allerdings liefert der BMW Server da eine Fehlermeldung a la „server overload“ oder so ähnlich.

              Ich probiere es weiter und geb Rückmeldung

              Raspberrymatic, Homematic & Homematic IP Aktoren, ioBroker auf NUC i3, Nuki, Harmony Hub, Digitalstrom, Diverse Sonoff (Tasmota) und Shellies

              bahnuhrB 1 Antwort Letzte Antwort
              0
              • M mameier1234

                @strobelix Einfach Klasse !

                Wenn wir jetzt noch die Statusabfragen hätten, dann wäre es end-Perfekt !!

                S Offline
                S Offline
                Strobelix
                schrieb am zuletzt editiert von
                #206

                @mameier1234
                Meinst du den Status der Remotebefehle oder die gesamten Statusmeldungen/Zustände des Fahrzeugs?

                Raspberrymatic, Homematic & Homematic IP Aktoren, ioBroker auf NUC i3, Nuki, Harmony Hub, Digitalstrom, Diverse Sonoff (Tasmota) und Shellies

                M 1 Antwort Letzte Antwort
                0
                • S Strobelix

                  @bahnuhr

                  Am Status bin ich dran, allerdings liefert der BMW Server da eine Fehlermeldung a la „server overload“ oder so ähnlich.

                  Ich probiere es weiter und geb Rückmeldung

                  bahnuhrB Online
                  bahnuhrB Online
                  bahnuhr
                  Forum Testing Most Active
                  schrieb am zuletzt editiert von
                  #207

                  @strobelix sagte in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:

                  BMW Server da eine Fehlermeldung

                  Bei mir nicht.

                      var VIN = "WBA5xxxxxxx"           // VIN vom BMW
                      var Obj_Token = "javascript.0.Geräte.BMW.Token"
                  
                  
                              var send = { url: 'https://b2vapi.bmwgroup.com/webapi/v1/user/vehicles/' + VIN + '/serviceExecutionStatus?serviceType=LIGHT_FLASH', headers: {'Content-Type': 'application/x-www-form-urlencoded'}, auth: { bearer: (getState(Obj_Token).val)} };
                              setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 3000); 
                              setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 6000); 
                              setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 9000); 
                              setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 12000); 
                              setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 15000); 
                              setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 18000); 
                              setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 21000); 
                              setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 24000); 
                              setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 27000); 
                              setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 30000); 
                              setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 33000); 
                              setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 36000); 
                  
                  

                  ich bekomme zurück:

                  javascript.0	2021-01-31 19:37:53.275	info	(1062) script.js.Scripte.test4: callback= {"executionStatus":{"serviceType":"LIGHT_FLASH","status":"EXECUTED","eventId":"4732393336303527A9992900@bmw.de","extendedStatus":{"result":"STATUS_CHANGED","i
                  javascript.0	2021-01-31 19:37:50.275	info	(1062) script.js.Scripte.test4: callback= {"executionStatus":{"serviceType":"LIGHT_FLASH","status":"EXECUTED","eventId":"4732393336303527A9992900@bmw.de","extendedStatus":{"result":"STATUS_CHANGED","i
                  javascript.0	2021-01-31 19:37:47.301	info	(1062) script.js.Scripte.test4: callback= {"executionStatus":{"serviceType":"LIGHT_FLASH","status":"EXECUTED","eventId":"4732393336303527A9992900@bmw.de","extendedStatus":{"result":"STATUS_CHANGED","
                  

                  Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                  Danke.
                  gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                  ScreenToGif :https://www.screentogif.com/downloads.html

                  S 1 Antwort Letzte Antwort
                  0
                  • bahnuhrB bahnuhr

                    @strobelix sagte in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:

                    BMW Server da eine Fehlermeldung

                    Bei mir nicht.

                        var VIN = "WBA5xxxxxxx"           // VIN vom BMW
                        var Obj_Token = "javascript.0.Geräte.BMW.Token"
                    
                    
                                var send = { url: 'https://b2vapi.bmwgroup.com/webapi/v1/user/vehicles/' + VIN + '/serviceExecutionStatus?serviceType=LIGHT_FLASH', headers: {'Content-Type': 'application/x-www-form-urlencoded'}, auth: { bearer: (getState(Obj_Token).val)} };
                                setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 3000); 
                                setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 6000); 
                                setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 9000); 
                                setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 12000); 
                                setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 15000); 
                                setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 18000); 
                                setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 21000); 
                                setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 24000); 
                                setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 27000); 
                                setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 30000); 
                                setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 33000); 
                                setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 36000); 
                    
                    

                    ich bekomme zurück:

                    javascript.0	2021-01-31 19:37:53.275	info	(1062) script.js.Scripte.test4: callback= {"executionStatus":{"serviceType":"LIGHT_FLASH","status":"EXECUTED","eventId":"4732393336303527A9992900@bmw.de","extendedStatus":{"result":"STATUS_CHANGED","i
                    javascript.0	2021-01-31 19:37:50.275	info	(1062) script.js.Scripte.test4: callback= {"executionStatus":{"serviceType":"LIGHT_FLASH","status":"EXECUTED","eventId":"4732393336303527A9992900@bmw.de","extendedStatus":{"result":"STATUS_CHANGED","i
                    javascript.0	2021-01-31 19:37:47.301	info	(1062) script.js.Scripte.test4: callback= {"executionStatus":{"serviceType":"LIGHT_FLASH","status":"EXECUTED","eventId":"4732393336303527A9992900@bmw.de","extendedStatus":{"result":"STATUS_CHANGED","
                    
                    S Offline
                    S Offline
                    Strobelix
                    schrieb am zuletzt editiert von
                    #208

                    @bahnuhr said in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:

                    var send = { url: 'https://b2vapi.bmwgroup.com/webapi/v1/user/vehicles/' + VIN + '/serviceExecutionStatus?serviceType=LIGHT_FLASH', headers: {'Content-Type': 'application/x-www-form-urlencoded'}, auth: { bearer: (getState(Obj_Token).val)} }; setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 3000);

                    Ich bekomme da leider ein

                    {'error':{'code':500,'description':'(SmartPhoneUtil-I-300) Unexpected error - server panic. Values to be returned cannot be converted to interface type.'}}
                    

                    Raspberrymatic, Homematic & Homematic IP Aktoren, ioBroker auf NUC i3, Nuki, Harmony Hub, Digitalstrom, Diverse Sonoff (Tasmota) und Shellies

                    bahnuhrB 1 Antwort Letzte Antwort
                    0
                    • S Strobelix

                      @bahnuhr said in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:

                      var send = { url: 'https://b2vapi.bmwgroup.com/webapi/v1/user/vehicles/' + VIN + '/serviceExecutionStatus?serviceType=LIGHT_FLASH', headers: {'Content-Type': 'application/x-www-form-urlencoded'}, auth: { bearer: (getState(Obj_Token).val)} }; setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 3000);

                      Ich bekomme da leider ein

                      {'error':{'code':500,'description':'(SmartPhoneUtil-I-300) Unexpected error - server panic. Values to be returned cannot be converted to interface type.'}}
                      
                      bahnuhrB Online
                      bahnuhrB Online
                      bahnuhr
                      Forum Testing Most Active
                      schrieb am zuletzt editiert von
                      #209

                      @strobelix sagte in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:

                      code':500,'description':

                      bekomme ich auch wenn schon etwas läuft.
                      Beobachte in der BMW Handy App bei Verlauf ob es läuft oder eben nicht.


                      Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                      Danke.
                      gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                      ScreenToGif :https://www.screentogif.com/downloads.html

                      1 Antwort Letzte Antwort
                      0
                      • S Strobelix

                        @mameier1234
                        Meinst du den Status der Remotebefehle oder die gesamten Statusmeldungen/Zustände des Fahrzeugs?

                        M Offline
                        M Offline
                        mameier1234
                        schrieb am zuletzt editiert von
                        #210

                        @strobelix Ich meinte eigentlich den Status der Zustände .. .Aber den Status der Remotebefehle , wäre natürlich auch schön...

                        Grüße,

                        Martin

                        S 1 Antwort Letzte Antwort
                        0
                        • M mameier1234

                          @strobelix Ich meinte eigentlich den Status der Zustände .. .Aber den Status der Remotebefehle , wäre natürlich auch schön...

                          S Offline
                          S Offline
                          Strobelix
                          schrieb am zuletzt editiert von
                          #211

                          @mameier1234
                          Ok aber die funktionieren doch mit dem BMW Adapter noch?!
                          Zumindest bei mir.
                          Diese auszulesen ist recht einfach, allerdings weiss ich nicht ob die bei jedem BMW identisch sind.
                          Ich arbeite daran...

                          Raspberrymatic, Homematic & Homematic IP Aktoren, ioBroker auf NUC i3, Nuki, Harmony Hub, Digitalstrom, Diverse Sonoff (Tasmota) und Shellies

                          S M 2 Antworten Letzte Antwort
                          0
                          • S Strobelix

                            @mameier1234
                            Ok aber die funktionieren doch mit dem BMW Adapter noch?!
                            Zumindest bei mir.
                            Diese auszulesen ist recht einfach, allerdings weiss ich nicht ob die bei jedem BMW identisch sind.
                            Ich arbeite daran...

                            S Offline
                            S Offline
                            Strobelix
                            schrieb am zuletzt editiert von
                            #212

                            So ich bin an den letzten Status-Punkten dran und muss dann nur die Remoteservices in der Baumstruktur umsortieren, damit es übersichtlich bleibt.
                            Die Statusdaten lassen sich dann ohne den BMW Adapter auslesen

                            751B8228-64B5-477E-B2A5-81F7FB010E4A.jpeg

                            Raspberrymatic, Homematic & Homematic IP Aktoren, ioBroker auf NUC i3, Nuki, Harmony Hub, Digitalstrom, Diverse Sonoff (Tasmota) und Shellies

                            1 Antwort Letzte Antwort
                            1
                            • S Strobelix

                              @mameier1234
                              Ok aber die funktionieren doch mit dem BMW Adapter noch?!
                              Zumindest bei mir.
                              Diese auszulesen ist recht einfach, allerdings weiss ich nicht ob die bei jedem BMW identisch sind.
                              Ich arbeite daran...

                              M Offline
                              M Offline
                              mameier1234
                              schrieb am zuletzt editiert von
                              #213

                              @strobelix Bei mir kommen im BMW-Adapter keine Stati mehr an.. .Ich sehe nur noch angaben zum Dealer und die Technischen Daten des KFZ... Höchstgeschwindigkeit, Leistung usw..

                              Grüße,

                              Martin

                              S 1 Antwort Letzte Antwort
                              0
                              • M mameier1234

                                @strobelix Bei mir kommen im BMW-Adapter keine Stati mehr an.. .Ich sehe nur noch angaben zum Dealer und die Technischen Daten des KFZ... Höchstgeschwindigkeit, Leistung usw..

                                S Offline
                                S Offline
                                Strobelix
                                schrieb am zuletzt editiert von
                                #214

                                Ok.. dann hier die erste "Blockly Vollversion" inkl Status und Fahrzeugabfrage.

                                Hier ist die Eingabe der "VIN" nicht mehr notwendig, da die vorher abgefragt wird.
                                Beim Starten des Scripts wird eine neue Datenstruktur angelegt und dann gleich alle Werte abgefragt, also löscht bitte vorher die Datenpunkte aus dem "alten/bisherigen" Blockly.

                                Hinweis:
                                Manche Daten habe ich noch nicht übersetzt, da ich nicht weiß welche Werte da so vorkommen können. Das bringt die Zeit mit sich. Ebenso kenne ich das JSON der Check Control Meldungen nicht, da das bei mir gerade keine Fehlermeldungen bringt.
                                Außerdem weiß ich leider nicht ob es bei anderen BMW's weitere oder andere Datenpunkte gibt.
                                Zusätzlich möchte ich noch darauf hinweisen, das nur der erste BMW im Connected Drive abgefragt wird, wenn ihr also mehrere BMW habt, dann müsst ihr das Script ändern und erweitern.

                                Token wird alle 60 Minuten erneuert (so lange ist er gültig)
                                Fahrzeugdaten und Status wird alle 5 min abgerufen.

                                Ihr müsst nur mailadresse, Passwort und Sicherheitsantwort eingeben und los gehts.
                                uen
                                Viel Spaß damit

                                <xml xmlns="https://developers.google.com/blockly/xml">
                                  <variables>
                                    <variable id="XN3*GfIfi@/dz;VqG=f1">Benutzername</variable>
                                    <variable id="X_?!znf}q.nyV^o^2X|{">Befehl</variable>
                                    <variable id="g!GS3XBhRJ-^i*r~I#(M">Passwort</variable>
                                    <variable id="`M`m=udEPjZ8%NR9[7#t">Sicherheitsantwort</variable>
                                    <variable type="timeout" id="T1">T1</variable>
                                    <variable type="timeout" id="T3">T3</variable>
                                    <variable type="timeout" id="T2">T2</variable>
                                  </variables>
                                  <block type="variables_set" id="25.7NsDbuJp,f,+kg9f}" x="-538" y="-1438">
                                    <field name="VAR" id="XN3*GfIfi@/dz;VqG=f1">Benutzername</field>
                                    <value name="VALUE">
                                      <block type="text" id="|ogs8P81w~dvfv9YO/LK">
                                        <field name="TEXT">Deine BMW Mailadresse</field>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="variables_set" id="A7ExvCH7vJ[i97`qN$cV">
                                        <field name="VAR" id="g!GS3XBhRJ-^i*r~I#(M">Passwort</field>
                                        <value name="VALUE">
                                          <block type="text" id="Xt:`irNXz.ndzQ0dO1uf">
                                            <field name="TEXT">Dein BMW Passwort</field>
                                          </block>
                                        </value>
                                        <next>
                                          <block type="variables_set" id="@j5.B|TqXRajXjYa]f=f">
                                            <field name="VAR" id="`M`m=udEPjZ8%NR9[7#t">Sicherheitsantwort</field>
                                            <value name="VALUE">
                                              <block type="text" id="m#{+]bm?9QK;w(!7).2d">
                                                <field name="TEXT">Sicherheitsantwort aus dem BMW Portal</field>
                                              </block>
                                            </value>
                                            <next>
                                              <block type="procedures_callcustomnoreturn" id=":hC7Hfgpy82Hn#oJY{Zz">
                                                <mutation name="Datenpunkte Fahrzeug erstellen"></mutation>
                                                <next>
                                                  <block type="procedures_callcustomnoreturn" id="q%,[_SU{6#d,O%*sD`Qz">
                                                    <mutation name="Datenpunkte Status erstellen"></mutation>
                                                    <next>
                                                      <block type="procedures_callcustomnoreturn" id="4l2r#`S+v9aFUamx-Esz">
                                                        <mutation name="Datenpunkte Befehle erstellen"></mutation>
                                                        <next>
                                                          <block type="timeouts_settimeout" id=";[W?azy]IW_aXZy;1cLF">
                                                            <field name="NAME">T1</field>
                                                            <field name="DELAY">1000</field>
                                                            <field name="UNIT">ms</field>
                                                            <statement name="STATEMENT">
                                                              <block type="procedures_callcustomnoreturn" id="sCCxQw~6kxo3.d^m)Pp-">
                                                                <mutation name="Token abfragen"></mutation>
                                                              </block>
                                                            </statement>
                                                            <next>
                                                              <block type="timeouts_settimeout" id="g=Sn!j;?yu^1hi77k@8s">
                                                                <field name="NAME">T3</field>
                                                                <field name="DELAY">3000</field>
                                                                <field name="UNIT">ms</field>
                                                                <statement name="STATEMENT">
                                                                  <block type="procedures_callcustomnoreturn" id="m(HG.hOx+O{]c/.2/L`k">
                                                                    <mutation name="Fahrzeugdaten abfragen"></mutation>
                                                                  </block>
                                                                </statement>
                                                                <next>
                                                                  <block type="timeouts_settimeout" id="JzLVGc@D}Hq;ZSwgo6$g">
                                                                    <field name="NAME">T2</field>
                                                                    <field name="DELAY">6000</field>
                                                                    <field name="UNIT">ms</field>
                                                                    <statement name="STATEMENT">
                                                                      <block type="procedures_callcustomnoreturn" id="bItGd$a[?ESTSSIjY-qP">
                                                                        <mutation name="Status Abfragen"></mutation>
                                                                      </block>
                                                                    </statement>
                                                                    <next>
                                                                      <block type="on" id="Lb,dTP]LKtW1;deq|Qoj">
                                                                        <field name="OID">0_userdata.0.BMW.NeuerToken</field>
                                                                        <field name="CONDITION">any</field>
                                                                        <field name="ACK_CONDITION">false</field>
                                                                        <statement name="STATEMENT">
                                                                          <block type="controls_if" id="u9vRH6uvBpbtNi5Eb$re">
                                                                            <value name="IF0">
                                                                              <block type="on_source" id="[ZV_ZO^d$dk~r;SHUx@7">
                                                                                <field name="ATTR">state.val</field>
                                                                              </block>
                                                                            </value>
                                                                            <statement name="DO0">
                                                                              <block type="procedures_callcustomnoreturn" id="iMM#y=#E0[lqAuF{O#,A">
                                                                                <mutation name="Token abfragen"></mutation>
                                                                              </block>
                                                                            </statement>
                                                                          </block>
                                                                        </statement>
                                                                        <next>
                                                                          <block type="on" id="fDMDIB0vfm{,Zq]F}@;Y">
                                                                            <field name="OID">0_userdata.0.BMW.Status abfragen</field>
                                                                            <field name="CONDITION">any</field>
                                                                            <field name="ACK_CONDITION">false</field>
                                                                            <statement name="STATEMENT">
                                                                              <block type="controls_if" id="ablR/e?U@-k_13gD,t+g">
                                                                                <value name="IF0">
                                                                                  <block type="on_source" id="i:D(o^.%d)):M:,_W;,7">
                                                                                    <field name="ATTR">state.val</field>
                                                                                  </block>
                                                                                </value>
                                                                                <statement name="DO0">
                                                                                  <block type="procedures_callcustomnoreturn" id="rx2v:]C(yCH;tQ/7s}#I">
                                                                                    <mutation name="Status Abfragen"></mutation>
                                                                                  </block>
                                                                                </statement>
                                                                              </block>
                                                                            </statement>
                                                                            <next>
                                                                              <block type="schedule" id="6.1-pU|?K[LZXvgI}cvN">
                                                                                <field name="SCHEDULE">*/60 * * * *</field>
                                                                                <statement name="STATEMENT">
                                                                                  <block type="procedures_callcustomnoreturn" id="S_QWZ%P:XPQ1H8HWO%9)">
                                                                                    <mutation name="Token abfragen"></mutation>
                                                                                  </block>
                                                                                </statement>
                                                                                <next>
                                                                                  <block type="schedule" id="W+ma{UTP^+kpN[].v7Zk">
                                                                                    <field name="SCHEDULE">*/5 * * * *</field>
                                                                                    <statement name="STATEMENT">
                                                                                      <block type="procedures_callcustomnoreturn" id="U~v?l1r)Z5Q+Kbb(Z]]y">
                                                                                        <mutation name="Fahrzeugdaten abfragen"></mutation>
                                                                                        <next>
                                                                                          <block type="procedures_callcustomnoreturn" id="PBbJH+;,a,L7x=f3u1!)">
                                                                                            <mutation name="Status Abfragen"></mutation>
                                                                                          </block>
                                                                                        </next>
                                                                                      </block>
                                                                                    </statement>
                                                                                  </block>
                                                                                </next>
                                                                              </block>
                                                                            </next>
                                                                          </block>
                                                                        </next>
                                                                      </block>
                                                                    </next>
                                                                  </block>
                                                                </next>
                                                              </block>
                                                            </next>
                                                          </block>
                                                        </next>
                                                      </block>
                                                    </next>
                                                  </block>
                                                </next>
                                              </block>
                                            </next>
                                          </block>
                                        </next>
                                      </block>
                                    </next>
                                  </block>
                                  <block type="on" id=")QODy$[H-(7lc9HPc%Xx" x="513" y="-1438">
                                    <field name="OID">0_userdata.0.BMW.Befehle.Klimatisieren</field>
                                    <field name="CONDITION">any</field>
                                    <field name="ACK_CONDITION">false</field>
                                    <statement name="STATEMENT">
                                      <block type="controls_if" id="qi2OU5y9AjO|pE1=!(W`">
                                        <value name="IF0">
                                          <block type="on_source" id="]6?RDB6_qbNs}FH@FT/5">
                                            <field name="ATTR">state.val</field>
                                          </block>
                                        </value>
                                        <statement name="DO0">
                                          <block type="procedures_callcustomnoreturn" id="DC)Em1Ehbz1LW6fj[K!7">
                                            <mutation name="Befehl">
                                              <arg name="Befehl"></arg>
                                            </mutation>
                                            <value name="ARG0">
                                              <block type="text" id="wekLEjbNhi3sYYeR;bq1">
                                                <field name="TEXT">CLIMATE_NOW</field>
                                              </block>
                                            </value>
                                            <next>
                                              <block type="update" id="?@kSoXR52NIAnmTbP@is">
                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                <field name="OID">0_userdata.0.BMW.Befehle.Klimatisieren</field>
                                                <field name="WITH_DELAY">TRUE</field>
                                                <field name="DELAY_MS">5000</field>
                                                <field name="UNIT">ms</field>
                                                <field name="CLEAR_RUNNING">FALSE</field>
                                                <value name="VALUE">
                                                  <block type="logic_boolean" id="K/F}wA*$n:5CnQHpYr@$">
                                                    <field name="BOOL">FALSE</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </next>
                                          </block>
                                        </statement>
                                      </block>
                                    </statement>
                                    <next>
                                      <block type="on" id="DO.4#e50zzBReVkXk5yb">
                                        <field name="OID">0_userdata.0.BMW.Befehle.Zusperren</field>
                                        <field name="CONDITION">any</field>
                                        <field name="ACK_CONDITION">false</field>
                                        <statement name="STATEMENT">
                                          <block type="controls_if" id="OiM7;RsdIpMs*67U$W1}">
                                            <value name="IF0">
                                              <block type="on_source" id="DUggLU3jpKTMWDwchY@Q">
                                                <field name="ATTR">state.val</field>
                                              </block>
                                            </value>
                                            <statement name="DO0">
                                              <block type="procedures_callcustomnoreturn" id="6]WNw%0B$@C*pjCV+42;">
                                                <mutation name="Befehl">
                                                  <arg name="Befehl"></arg>
                                                </mutation>
                                                <value name="ARG0">
                                                  <block type="text" id="PU^ebj(ix}-k_Y?zFd8u">
                                                    <field name="TEXT">DOOR_LOCK</field>
                                                  </block>
                                                </value>
                                                <next>
                                                  <block type="update" id="9rlPG|IAAhKHcZ|+99|z">
                                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                    <field name="OID">0_userdata.0.BMW.Befehle.Zusperren</field>
                                                    <field name="WITH_DELAY">TRUE</field>
                                                    <field name="DELAY_MS">5000</field>
                                                    <field name="UNIT">ms</field>
                                                    <field name="CLEAR_RUNNING">FALSE</field>
                                                    <value name="VALUE">
                                                      <block type="logic_boolean" id="0,a9ZN|M|PkAi}n*T19O">
                                                        <field name="BOOL">FALSE</field>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </next>
                                              </block>
                                            </statement>
                                          </block>
                                        </statement>
                                        <next>
                                          <block type="on" id="Mt2*}WFoiR5--row2T8H">
                                            <field name="OID">0_userdata.0.BMW.Befehle.Aufsperren</field>
                                            <field name="CONDITION">any</field>
                                            <field name="ACK_CONDITION">false</field>
                                            <statement name="STATEMENT">
                                              <block type="controls_if" id="1tfzyj?EGI~c[$sfM,=H">
                                                <value name="IF0">
                                                  <block type="on_source" id="L-qx[QjgE7YK^@QoxL?s">
                                                    <field name="ATTR">state.val</field>
                                                  </block>
                                                </value>
                                                <statement name="DO0">
                                                  <block type="procedures_callcustomnoreturn" id="UA+^g5gs#H|-G2i{TbW0">
                                                    <mutation name="Befehl">
                                                      <arg name="Befehl"></arg>
                                                    </mutation>
                                                    <value name="ARG0">
                                                      <block type="text" id="cyD@aSO~.u2Bx0K/ZDvH">
                                                        <field name="TEXT">DOOR_UNLOCK</field>
                                                      </block>
                                                    </value>
                                                    <next>
                                                      <block type="update" id="!W;+jZdtO4Z$.N{oZ!~u">
                                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                        <field name="OID">0_userdata.0.BMW.Befehle.Aufsperren</field>
                                                        <field name="WITH_DELAY">TRUE</field>
                                                        <field name="DELAY_MS">5000</field>
                                                        <field name="UNIT">ms</field>
                                                        <field name="CLEAR_RUNNING">FALSE</field>
                                                        <value name="VALUE">
                                                          <block type="logic_boolean" id="i7H=1Q%)]bTWwtb,mZL^">
                                                            <field name="BOOL">FALSE</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </next>
                                                  </block>
                                                </statement>
                                              </block>
                                            </statement>
                                            <next>
                                              <block type="on" id="x3sA~Bo,9#W8+0QQ4?Mk">
                                                <field name="OID">0_userdata.0.BMW.Befehle.Lichthupe</field>
                                                <field name="CONDITION">any</field>
                                                <field name="ACK_CONDITION">false</field>
                                                <statement name="STATEMENT">
                                                  <block type="controls_if" id="g^t/])A_OBmH:}D:7hx1">
                                                    <value name="IF0">
                                                      <block type="on_source" id="Qk9]ZT(6`yuT9IJ1mS#h">
                                                        <field name="ATTR">state.val</field>
                                                      </block>
                                                    </value>
                                                    <statement name="DO0">
                                                      <block type="procedures_callcustomnoreturn" id="?Ar*XxGO6vVdJr~9F;?)">
                                                        <mutation name="Befehl">
                                                          <arg name="Befehl"></arg>
                                                        </mutation>
                                                        <value name="ARG0">
                                                          <block type="text" id="8y9k?DHsHpiCgnF.S`o=">
                                                            <field name="TEXT">LIGHT_FLASH</field>
                                                          </block>
                                                        </value>
                                                        <next>
                                                          <block type="update" id="8viE(:=_WA,IPGi~+0MV">
                                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                            <field name="OID">0_userdata.0.BMW.Befehle.Lichthupe</field>
                                                            <field name="WITH_DELAY">TRUE</field>
                                                            <field name="DELAY_MS">5000</field>
                                                            <field name="UNIT">ms</field>
                                                            <field name="CLEAR_RUNNING">FALSE</field>
                                                            <value name="VALUE">
                                                              <block type="logic_boolean" id="3KW3b{O(!n=5:mg(M_Wv">
                                                                <field name="BOOL">FALSE</field>
                                                              </block>
                                                            </value>
                                                          </block>
                                                        </next>
                                                      </block>
                                                    </statement>
                                                  </block>
                                                </statement>
                                                <next>
                                                  <block type="on" id=".`HU#5P7{T)o:1xn*a/?">
                                                    <field name="OID">0_userdata.0.BMW.Befehle.Hupen</field>
                                                    <field name="CONDITION">any</field>
                                                    <field name="ACK_CONDITION">false</field>
                                                    <statement name="STATEMENT">
                                                      <block type="controls_if" id="Qrr/!E+TuG7Gq66FQA;5">
                                                        <value name="IF0">
                                                          <block type="on_source" id="mvXJMfS$OdG+L~5/z^rY">
                                                            <field name="ATTR">state.val</field>
                                                          </block>
                                                        </value>
                                                        <statement name="DO0">
                                                          <block type="procedures_callcustomnoreturn" id="%-uafX09p)!Y/xx5^fi2">
                                                            <mutation name="Befehl">
                                                              <arg name="Befehl"></arg>
                                                            </mutation>
                                                            <value name="ARG0">
                                                              <block type="text" id="}58KZNu_0dQ=K}dkAOS$">
                                                                <field name="TEXT">HORN_BLOW</field>
                                                              </block>
                                                            </value>
                                                            <next>
                                                              <block type="update" id="GWaADA}?}4ONL*[A[7Fi">
                                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                                <field name="OID">0_userdata.0.BMW.Befehle.Hupen</field>
                                                                <field name="WITH_DELAY">TRUE</field>
                                                                <field name="DELAY_MS">5000</field>
                                                                <field name="UNIT">ms</field>
                                                                <field name="CLEAR_RUNNING">FALSE</field>
                                                                <value name="VALUE">
                                                                  <block type="logic_boolean" id="f^.-6^1JVE#^ag9aE_/X">
                                                                    <field name="BOOL">FALSE</field>
                                                                  </block>
                                                                </value>
                                                              </block>
                                                            </next>
                                                          </block>
                                                        </statement>
                                                      </block>
                                                    </statement>
                                                  </block>
                                                </next>
                                              </block>
                                            </next>
                                          </block>
                                        </next>
                                      </block>
                                    </next>
                                  </block>
                                  <block type="procedures_defcustomnoreturn" id=":tqG!IfOg@ann$}w1S@h" x="-37" y="-1162">
                                    <mutation statements="false"></mutation>
                                    <field name="NAME">Datenpunkte Befehle erstellen</field>
                                    <field name="SCRIPT">Y3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzIGFiZnJhZ2VuIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlN0YXR1cyBhYmZyYWdlbiIsInJvbGUiOiAiYnV0dG9uIiwidHlwZSI6ICJib29sZWFuIiwicmVhZCI6IHRydWUsIndyaXRlIjogdHJ1ZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjogZmFsc2V9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5OZXVlclRva2VuIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIk5ldWVyVG9rZW4iLCJyb2xlIjogImJ1dHRvbiIsInR5cGUiOiAiYm9vbGVhbiIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IHRydWUsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IGZhbHNlfScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiVG9rZW4iLCJyb2xlIjogIiIsInR5cGUiOiAic3RyaW5nIiwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiAiIiwicmVhZCI6IHRydWUsIndyaXRlIjogdHJ1ZX0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkJlZmVobGUuS2xpbWF0aXNpZXJlbiIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJCZWZlaGwgS2xpbWF0aXNpZXJlbiIsInJvbGUiOiAiYnV0dG9uIiwidHlwZSI6ICJib29sZWFuIiwicmVhZCI6IHRydWUsIndyaXRlIjogdHJ1ZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjogZmFsc2V9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5CZWZlaGxlLkh1cGVuIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkJlZmVobCBIdXBlbiIsInJvbGUiOiAiYnV0dG9uIiwidHlwZSI6ICJib29sZWFuIiwicmVhZCI6IHRydWUsIndyaXRlIjogdHJ1ZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjogZmFsc2V9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5CZWZlaGxlLkF1ZnNwZXJyZW4iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiQmVmZWhsIEF1ZnNwZXJyZW4iLCJyb2xlIjogImJ1dHRvbiIsInR5cGUiOiAiYm9vbGVhbiIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IHRydWUsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IGZhbHNlfScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuQmVmZWhsZS5adXNwZXJyZW4iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiQmVmZWhsIFp1c3BlcnJlbiIsInJvbGUiOiAiYnV0dG9uIiwidHlwZSI6ICJib29sZWFuIiwicmVhZCI6IHRydWUsIndyaXRlIjogdHJ1ZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjogZmFsc2V9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5CZWZlaGxlLkxpY2h0aHVwZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJCZWZlaGwgTGljaHRodXBlIiwicm9sZSI6ICJidXR0b24iLCJ0eXBlIjogImJvb2xlYW4iLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiB0cnVlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiBmYWxzZX0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOw==</field>
                                    <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                  </block>
                                  <block type="procedures_defcustomnoreturn" id="K]RD5Zz+BB5-#J|b@zcu" x="-38" y="-1137">
                                    <mutation statements="false"></mutation>
                                    <field name="NAME">Datenpunkte Fahrzeug erstellen</field>
                                    <field name="SCRIPT">Y3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuRmFocnpldWcuRmFocmdlc3RlbGxudW1tZXIiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRmFocnpldWcgRmFocmdlc3RlbGxudW1tZXIiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5GYWhyemV1Zy5Nb2RlbCIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJGYWhyemV1ZyBNb2RlbCIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkZhaHJ6ZXVnLlR5cCIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJGYWhyemV1ZyBUeXAiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5GYWhyemV1Zy5BbnRyaWViIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkZhaHJ6ZXVnIEFudHJpZWIiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5GYWhyemV1Zy5GYXJiZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJGYWhyemV1ZyBGYXJiZSIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkZhaHJ6ZXVnLkZhcmJjb2RlIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkZhaHJ6ZXVnIEZhcmJjb2RlIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuRmFocnpldWcuQmF1amFociIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJGYWhyemV1ZyBCYXVqYWhyIiwicm9sZSI6ICIiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAwLCJtYXgiOiAzMDAwLCJkZWYiOiAwLCJ1bml0IjogIiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuSMOkbmRsZXIuTmFtZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJIw6RuZGxlciBOYW1lIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuSMOkbmRsZXIuU3RyYcOfZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJIw6RuZGxlciBTdHJhw59lIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuSMOkbmRsZXIuUExaIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkjDpG5kbGVyIFBMWiIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkjDpG5kbGVyLk9ydCIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJIw6RuZGxlciBPcnQiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Iw6RuZGxlci5MYW5kIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkjDpG5kbGVyIExhbmQiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Iw6RuZGxlci5UZWxlZm9uIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkjDpG5kbGVyIFRlbGVmb24iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5GYWhyemV1Zy5BbGFybWFubGFnZSB2b3JoYW5kZW4iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRmFocnpldWcgQWxhcm1hbmxhZ2Ugdm9yaGFuZGVuIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAiYm9vbGVhbiIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiJmYWxzZSJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTs=</field>
                                    <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                  </block>
                                  <block type="procedures_defcustomnoreturn" id="z_62?G;+Z_ju{aky5~UA" x="-37" y="-1113">
                                    <mutation statements="false"></mutation>
                                    <field name="NAME">Datenpunkte Status erstellen</field>
                                    <field name="SCRIPT">Y3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5IYXVwdHVudGVyc3VjaHVuZy5EYXR1bSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJEYXR1bSBIYXVwdHVudGVyc3VjaHVuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5IYXVwdHVudGVyc3VjaHVuZy5TdGF0dXMiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiU3RhdHVzIEhhdXB0dW50ZXJzdWNodW5nIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLkZhaHJ6ZXVnY2hlY2suU3RhdHVzIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlN0YXR1cyBGYWhyemV1Z2NoZWNrIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLkZhaHJ6ZXVnY2hlY2suRGF0dW0iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRGF0dW0gRmFocnpldWdjaGVjayIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5GYWhyemV1Z2NoZWNrLlZlcmJsZWliZW5kZSBrbSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJWZXJibGVpYmVuZGUga20gRmFocnpldWdjaGVjayIsInJvbGUiOiAiIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAwLCJtYXgiOiAxMDAwMDAwMDAsImRlZiI6IDAsInVuaXQiOiAia20ifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5CcmVtc2Zsw7xzc2lna2VpdC5EYXR1bSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJEYXR1bSBCcmVtc2Zsw7xzc2lna2VpdCIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5CcmVtc2Zsw7xzc2lna2VpdC5TdGF0dXMiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiU3RhdHVzIEJyZW1zZmzDvHNzaWdrZWl0Iiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLsOWbHNlcnZpY2UuRGF0dW0iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRGF0dW0gw5Zsc2VydmljZSIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi7DlmxzZXJ2aWNlLlN0YXR1cyIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJTdGF0dXMgw5Zsc2VydmljZSIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi7DlmxzZXJ2aWNlLlZlcmJsZWliZW5kZSBrbSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJWZXJibGVpYmVuZGUga20gw5Zsc2VydmljZSIsInJvbGUiOiAiIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAwLCJtYXgiOiAxMDAwMDAwMDAsImRlZiI6IDAsInVuaXQiOiAia20ifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLktpbG9tZXRlcnN0YW5kIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIktpbG9tZXRlcnN0YW5kIiwicm9sZSI6ICIiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsIm1pbiI6IDAsIm1heCI6IDEwMDAwMDAwMCwiZGVmIjogMCwidW5pdCI6ICJrbSJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVydMO8ciB2b3JuZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJGYWhyZXJ0w7xyIHZvcm5lIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVydMO8ciBoaW50ZW4iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRmFocmVydMO8ciBoaW50ZW4iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJ0w7xyIHZvcm5lIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkJlaWZhaHJlcnTDvHIgdm9ybmUiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJ0w7xyIGhpbnRlbiIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJCZWlmYWhyZXJ0w7xyIGhpbnRlbiIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkZhaHJlcmZlbnN0ZXIgdm9ybmUiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRmFocmVyZmVuc3RlciB2b3JuZSIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkZhaHJlcmZlbnN0ZXIgaGludGVuIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkZhaHJlcmZlbnN0ZXIgaGludGVuIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQmVpZmFocmVyZmVuc3RlciB2b3JuZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJCZWlmYWhyZXJmZW5zdGVyIHZvcm5lIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQmVpZmFocmVyZmVuc3RlciBoaW50ZW4iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiQmVpZmFocmVyZmVuc3RlciBoaW50ZW4iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Lb2ZmZXJyYXVtIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIktvZmZlcnJhdW0iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5IZWNrZmVuc3RlciIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJIZWNrZmVuc3RlciIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLk1vdG9yaGF1YmUiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiTW90b3JoYXViZSIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlTDvHJ2ZXJyaWVnZWx1bmciLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiVMO8cnZlcnJpZWdlbHVuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlBhcmtsZXVjaHRlbiIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJQYXJrbGV1Y2h0ZW4iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5TdGFuZGxpY2h0IiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlN0YW5kbGljaHQiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5LcmFmdHN0b2Zmc3RhbmQgTGl0ZXIiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiS3JhZnRzdG9mZnN0YW5kIExpdGVyIiwicm9sZSI6ICIiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsIm1pbiI6IDAsIm1heCI6IDUwMCwiZGVmIjogMCwidW5pdCI6ICJsIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5MYWRlenVzdGFuZCBrbSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJMYWRlenVzdGFuZCBrbSIsInJvbGUiOiAiIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAwLCJtYXgiOiA1MDAsImRlZiI6IDAsInVuaXQiOiAia20ifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLktvbWJpbmllcnRlIFJlaWNod2VpdGUiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiS29tYmluaWVydGUgUmVpY2h3ZWl0ZSIsInJvbGUiOiAiIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAwLCJtYXgiOiA1MDAsImRlZiI6IDAsInVuaXQiOiAia20ifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLktyYWZ0c3RvZmZzdGFuZCAlIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIktyYWZ0c3RvZmZzdGFuZCAlIiwicm9sZSI6ICIiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsIm1pbiI6IDAsIm1heCI6IDEwMCwiZGVmIjogMCwidW5pdCI6ICIlIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5MYWRlenVzdGFuZCAlIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkxhZGV6dXN0YW5kICUiLCJyb2xlIjogIiIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwibWluIjogMCwibWF4IjogMTAwLCJkZWYiOiAwLCJ1bml0IjogIiUifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlZlcmJpbmR1bmdzc3RhdHVzIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlZlcmJpbmR1bmdzc3RhdHVzIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuTGFkZXN0YXR1cyIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJMYWRlc3RhdHVzIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuVmVyYmxlaWJlbmRlIExhZGV6ZWl0IiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlZlcmJsZWliZW5kZSBMYWRlemVpdCIsInJvbGUiOiAiIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAwLCJtYXgiOiAxMDAwLCJkZWYiOiAwLCJ1bml0IjogIm1pbiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGFuZG9ydC5CcmVpdGVuZ3JhZCIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJTdGFuZG9ydCBCcmVpdGVuZ3JhZCIsInJvbGUiOiAiIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAtMTAwMDAsIm1heCI6IDEwMDAwLCJkZWYiOiAwLCJ1bml0IjogIsKwIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YW5kb3J0LkzDpG5nZW5ncmFkIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlN0YW5kb3J0IEzDpG5nZW5ncmFkIiwicm9sZSI6ICIiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsIm1pbiI6IC0xMDAwMCwibWF4IjogMTAwMDAsImRlZiI6IDAsInVuaXQiOiAiwrAifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhbmRvcnQuUmljaHR1bmciLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiU3RhbmRvcnQgUmljaHR1bmciLCJyb2xlIjogIiIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwibWluIjogLTEwMDAwLCJtYXgiOiAxMDAwMCwiZGVmIjogMCwidW5pdCI6ICLCsCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGFuZG9ydC5TdGF0dXMiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiU3RhbmRvcnQgU3RhdHVzIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuTGV0enRlciBMYWRldm9yZ2FuZyBCZWVuZGlndW5nc2dydW5kIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkxldHp0ZXIgTGFkZXZvcmdhbmcgQmVlbmRpZ3VuZ3NncnVuZCIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkxldHp0ZXIgTGFkZXZvcmdhbmcgRXJnZWJuaXMiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiTGV0enRlciBMYWRldm9yZ2FuZyBFcmdlYm5pcyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkVpbm1hbGlnZSBTb2ZvcnRsYWR1bmciLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRWlubWFsaWdlIFNvZm9ydGxhZHVuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogImJvb2xlYW4iLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiZmFsc2UifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlR5cCBMYWRldmVyYmluZHVuZyIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJUeXAgTGFkZXZlcmJpbmR1bmciLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Qb3NpdGlvbmllcnVuZyBJbmR1a3Rpb25zbGFkdW5nIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlBvc2l0aW9uaWVydW5nIEluZHVrdGlvbnNsYWR1bmciLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5DaGVjayBDb250cm9sIE1lbGR1bmciLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiQ2hlY2sgQ29udHJvbCBNZWxkdW5nIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQ2FicmlvZGFjaCIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJDYWJyaW9kYWNoIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICAK</field>
                                    <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                  </block>
                                  <block type="procedures_defcustomnoreturn" id="Tqmj%!gc`F8vk2zl7MW_" x="-38" y="-1088">
                                    <mutation statements="false"></mutation>
                                    <field name="NAME">Fahrzeugdaten abfragen</field>
                                    <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7Cgp2YXIgb3B0aW9ucyA9IHsKICB1cmw6ICdodHRwczovL2IydmFwaS5ibXdncm91cC5jb20vd2ViYXBpL3YxL3VzZXIvdmVoaWNsZXMvJywKICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfSwKICBhdXRoOiB7CiAgICBiZWFyZXI6IChnZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIpLnZhbCl9Cn07CgpmdW5jdGlvbiBjYWxsYmFjayhlcnJvcixyZXNwb25zZSxib2R5KXsKCnZhciByZXN1bHQyID0gSlNPTi5wYXJzZShib2R5KS52ZWhpY2xlc1swXTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuRmFocnpldWcuRmFocmdlc3RlbGxudW1tZXIiLCAnJytyZXN1bHQyLnZpbiwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkZhaHJ6ZXVnLk1vZGVsIiwgJycrcmVzdWx0Mi5tb2RlbCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkZhaHJ6ZXVnLlR5cCIsICcnK3Jlc3VsdDIuYm9keXR5cGUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5GYWhyemV1Zy5BbnRyaWViIiwgJycrcmVzdWx0Mi5kcml2ZVRyYWluLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuRmFocnpldWcuRmFyYmUiLCAnJytyZXN1bHQyLmNvbG9yLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuRmFocnpldWcuRmFyYmNvZGUiLCAnJytyZXN1bHQyLmNvbG9yQ29kZSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkZhaHJ6ZXVnLkJhdWphaHIiLCBwYXJzZUZsb2F0KHJlc3VsdDIueWVhck9mQ29uc3RydWN0aW9uKSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkjDpG5kbGVyLk5hbWUiLCAnJytyZXN1bHQyLmRlYWxlci5uYW1lLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuSMOkbmRsZXIuU3RyYcOfZSIsICcnK3Jlc3VsdDIuZGVhbGVyLnN0cmVldCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkjDpG5kbGVyLlBMWiIsICcnK3Jlc3VsdDIuZGVhbGVyLnBvc3RhbENvZGUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Iw6RuZGxlci5PcnQiLCAnJytyZXN1bHQyLmRlYWxlci5jaXR5LCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuSMOkbmRsZXIuTGFuZCIsICcnK3Jlc3VsdDIuZGVhbGVyLmNvdW50cnksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Iw6RuZGxlci5UZWxlZm9uIiwgJycrcmVzdWx0Mi5kZWFsZXIucGhvbmUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5GYWhyemV1Zy5BbGFybWFubGFnZSB2b3JoYW5kZW4iLCByZXN1bHQyLmhhc0FsYXJtU3lzdGVtLCB0cnVlKTsKLy9jb25zb2xlLmxvZyhyZXN1bHQyLnZpbikKCn07CnJlcXVlc3QuZ2V0KG9wdGlvbnMsIGNhbGxiYWNrKTsK</field>
                                    <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                  </block>
                                  <block type="procedures_defcustomnoreturn" id="e6N=.RUD+21]!8uv9.EJ" x="-38" y="-1063">
                                    <mutation statements="false"></mutation>
                                    <field name="NAME">Status Abfragen</field>
                                    <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7Cgp2YXIgb3B0aW9ucyA9IHsKICB1cmw6ICdodHRwczovL2IydmFwaS5ibXdncm91cC5jb20vd2ViYXBpL3YxL3VzZXIvdmVoaWNsZXMvJysoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuRmFocnpldWcuRmFocmdlc3RlbGxudW1tZXIiKS52YWwpKycvc3RhdHVzJywKICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfSwKICBhdXRoOiB7CiAgICBiZWFyZXI6IChnZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIpLnZhbCl9Cn07CgpmdW5jdGlvbiBjYWxsYmFjayhlcnJvcixyZXNwb25zZSxib2R5KXsKdmFyIHJlc3VsdCA9IEpTT04ucGFyc2UoYm9keSkudmVoaWNsZVN0YXR1czsKaWYgKHJlc3VsdC5kb29yRHJpdmVyRnJvbnQgPT0gJ0NMT1NFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVydMO8ciB2b3JuZSIsICdHZXNjaGxvc3NlbicsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC5kb29yRHJpdmVyRnJvbnQgPT0gJ09QRU4nKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkZhaHJlcnTDvHIgdm9ybmUiLCAnT2ZmZW4nLCB0cnVlKTsKIH0gZWxzZSB7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5GYWhyZXJ0w7xyIHZvcm5lIiwgJ1VuZGVmaW5pZXJ0JywgdHJ1ZSk7Cn07CmlmIChyZXN1bHQuZG9vckRyaXZlclJlYXIgPT0gJ0NMT1NFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVydMO8ciBoaW50ZW4iLCAnR2VzY2hsb3NzZW4nLCB0cnVlKTsKfSBlbHNlIGlmIChyZXN1bHQuZG9vckRyaXZlclJlYXIgPT0gJ09QRU4nKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkZhaHJlcnTDvHIgaGludGVuIiwgJ09mZmVuJywgdHJ1ZSk7CiB9IGVsc2UgeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVydMO8ciBoaW50ZW4iLCAnVW5kZWZpbmllcnQnLCB0cnVlKTsKfTsKaWYgKHJlc3VsdC5kb29yUGFzc2VuZ2VyRnJvbnQgPT0gJ0NMT1NFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQmVpZmFocmVydMO8ciB2b3JuZSIsICdHZXNjaGxvc3NlbicsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC5kb29yUGFzc2VuZ2VyRnJvbnQgPT0gJ09QRU4nKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkJlaWZhaHJlcnTDvHIgdm9ybmUiLCAnT2ZmZW4nLCB0cnVlKTsKfSAgZWxzZSB7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJ0w7xyIHZvcm5lIiwgJ1VuZGVmaW5pZXJ0JywgdHJ1ZSk7Cn07CmlmIChyZXN1bHQuZG9vclBhc3NlbmdlclJlYXIgPT0gJ0NMT1NFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQmVpZmFocmVydMO8ciBoaW50ZW4iLCAnR2VzY2hsb3NzZW4nLCB0cnVlKTsKfSBlbHNlIGlmIChyZXN1bHQuZG9vclBhc3NlbmdlclJlYXIgPT0gJ09QRU4nKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkJlaWZhaHJlcnTDvHIgaGludGVuIiwgJ09mZmVuJywgdHJ1ZSk7Cn0gIGVsc2UgeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQmVpZmFocmVydMO8ciBoaW50ZW4iLCAnVW5kZWZpbmllcnQnLCB0cnVlKTsKfTsKaWYgKHJlc3VsdC53aW5kb3dEcml2ZXJGcm9udCA9PSAnQ0xPU0VEJykgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5GYWhyZXJmZW5zdGVyIHZvcm5lIiwgJ0dlc2NobG9zc2VuJywgdHJ1ZSk7Cn0gZWxzZSBpZiAocmVzdWx0LndpbmRvd0RyaXZlckZyb250ID09ICdPUEVOJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5GYWhyZXJmZW5zdGVyIHZvcm5lIiwgJ09mZmVuJywgdHJ1ZSk7CiB9IGVsc2UgeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVyZmVuc3RlciB2b3JuZSIsICdVbmRlZmluaWVydCcsIHRydWUpOwp9OwppZiAocmVzdWx0LndpbmRvd0RyaXZlclJlYXIgPT0gJ0NMT1NFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVyZmVuc3RlciBoaW50ZW4iLCAnR2VzY2hsb3NzZW4nLCB0cnVlKTsKfSBlbHNlIGlmIChyZXN1bHQud2luZG93RHJpdmVyUmVhciA9PSAnT1BFTicpeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVyZmVuc3RlciBoaW50ZW4iLCAnT2ZmZW4nLCB0cnVlKTsKfSAgZWxzZSB7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5GYWhyZXJmZW5zdGVyIGhpbnRlbiIsICdVbmRlZmluaWVydCcsIHRydWUpOwp9OwppZiAocmVzdWx0LndpbmRvd1Bhc3NlbmdlckZyb250ID09ICdDTE9TRUQnKSB7CiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkJlaWZhaHJlcmZlbnN0ZXIgdm9ybmUiLCAnR2VzY2hsb3NzZW4nLCB0cnVlKTsKfSBlbHNlIGlmIChyZXN1bHQud2luZG93UGFzc2VuZ2VyRnJvbnQgPT0gJ09QRU4nKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkJlaWZhaHJlcmZlbnN0ZXIgdm9ybmUiLCAnT2ZmZW4nLCB0cnVlKTsKIH0gZWxzZSB7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJmZW5zdGVyIHZvcm5lIiwgJ1VuZGVmaW5pZXJ0JywgdHJ1ZSk7Cn07CmlmIChyZXN1bHQud2luZG93UGFzc2VuZ2VyUmVhciA9PSAnQ0xPU0VEJykgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJmZW5zdGVyIGhpbnRlbiIsICdHZXNjaGxvc3NlbicsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC53aW5kb3dQYXNzZW5nZXJSZWFyID09ICdPUEVOJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJmZW5zdGVyIGhpbnRlbiIsICdPZmZlbicsIHRydWUpOwp9ICBlbHNlIHsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkJlaWZhaHJlcmZlbnN0ZXIgaGludGVuIiwgJ1VuZGVmaW5pZXJ0JywgdHJ1ZSk7Cn07CmlmIChyZXN1bHQudHJ1bmsgPT0gJ0NMT1NFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuS29mZmVycmF1bSIsICdHZXNjaGxvc3NlbicsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC50cnVuayA9PSAnT1BFTicpeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuS29mZmVycmF1bSIsICdPZmZlbicsIHRydWUpOwogfSBlbHNlIHsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLktvZmZlcnJhdW0iLCAnVW5kZWZpbmllcnQnLCB0cnVlKTsKfTsKaWYgKHJlc3VsdC5yZWFyV2luZG93ID09ICdDTE9TRUQnKSB7CiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkhlY2tmZW5zdGVyIiwgJ0dlc2NobG9zc2VuJywgdHJ1ZSk7Cn0gZWxzZSBpZiAocmVzdWx0LnJlYXJXaW5kb3cgPT0gJ09QRU4nKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkhlY2tmZW5zdGVyIiwgJ09mZmVuJywgdHJ1ZSk7Cn0gZWxzZSB7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5IZWNrZmVuc3RlciIsICdOaWNodCB2b3JoYW5kZW4nLCB0cnVlKTsKfTsKaWYgKHJlc3VsdC5jb252ZXJ0aWJsZVJvb2ZTdGF0ZSA9PSAnQ0xPU0VEJykgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5DYWJyaW9kYWNoIiwgJ0dlc2NobG9zc2VuJywgdHJ1ZSk7Cn0gZWxzZSBpZiAocmVzdWx0LmNvbnZlcnRpYmxlUm9vZlN0YXRlID09ICdPUEVOJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5DYWJyaW9kYWNoIiwgJ09mZmVuJywgdHJ1ZSk7Cn0gZWxzZSB7CiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkNhYnJpb2RhY2giLCAnTmljaHQgdm9yaGFuZGVuJywgdHJ1ZSk7Cn07CmlmIChyZXN1bHQuaG9vZCA9PSAnQ0xPU0VEJykgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Nb3RvcmhhdWJlIiwgJ0dlc2NobG9zc2VuJywgdHJ1ZSk7Cn0gZWxzZSBpZiAocmVzdWx0Lmhvb2QgPT0gJ09QRU4nKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLk1vdG9yaGF1YmUiLCAnT2ZmZW4nLCB0cnVlKTsKfSAgZWxzZSB7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Nb3RvcmhhdWJlIiwgJ1VuZGVmaW5pZXJ0JywgdHJ1ZSk7Cn07CmlmIChyZXN1bHQuZG9vckxvY2tTdGF0ZSA9PSAnU0VDVVJFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuVMO8cnZlcnJpZWdlbHVuZyIsICdHZXNpY2hlcnQnLCB0cnVlKTsKfSBlbHNlIGlmIChyZXN1bHQuZG9vckxvY2tTdGF0ZSA9PSAnTE9DS0VEJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Uw7xydmVycmllZ2VsdW5nIiwgJ1ZlcnJpZWdlbHQnLCB0cnVlKTsKfSAgZWxzZSBpZiAocmVzdWx0LmRvb3JMb2NrU3RhdGUgPT0gJ1VOTE9DS0VEJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Uw7xydmVycmllZ2VsdW5nIiwgJ0dlw7ZmZm5ldCcsIHRydWUpOwp9IGVsc2UgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Uw7xydmVycmllZ2VsdW5nIiwgJ1VuZGVmaW5pZXJ0JywgdHJ1ZSk7Cn07CmlmIChyZXN1bHQucGFya2luZ0xpZ2h0ID09ICdPRkYnKSB7CiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlBhcmtsZXVjaHRlbiIsICdBdXMnLCB0cnVlKTsKfSBlbHNlIGlmIChyZXN1bHQucGFya2luZ0xpZ2h0ID09ICdPTicpeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuUGFya2xldWNodGVuIiwgJ0FuJywgdHJ1ZSk7Cn0gIGVsc2UgeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuUGFya2xldWNodGVuIiwgJ1VuZGVmaW5pZXJ0JywgdHJ1ZSk7Cn07CmlmIChyZXN1bHQucG9zaXRpb25MaWdodCA9PSAnT0ZGJykgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5TdGFuZGxpY2h0IiwgJ0F1cycsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC5wb3NpdGlvbkxpZ2h0ID09ICdPTicpeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuU3RhbmRsaWNodCIsICdBbicsIHRydWUpOwp9ICBlbHNlIHsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlN0YW5kbGljaHQiLCAnVW5kZWZpbmllcnQnLCB0cnVlKTsKfTsKCnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlNlcnZpY2ViZWRhcmYuSGF1cHR1bnRlcnN1Y2h1bmcuRGF0dW0iLCAnJytyZXN1bHQuY2JzRGF0YVszXS5jYnNEdWVEYXRlLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5IYXVwdHVudGVyc3VjaHVuZy5TdGF0dXMiLCAnJytyZXN1bHQuY2JzRGF0YVszXS5jYnNTdGF0ZSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlNlcnZpY2ViZWRhcmYuRmFocnpldWdjaGVjay5EYXR1bSIsICcnK3Jlc3VsdC5jYnNEYXRhWzJdLmNic0R1ZURhdGUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLkZhaHJ6ZXVnY2hlY2suU3RhdHVzIiwgJycrcmVzdWx0LmNic0RhdGFbMl0uY2JzU3RhdGUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLkZhaHJ6ZXVnY2hlY2suVmVyYmxlaWJlbmRlIGttIiwgcGFyc2VGbG9hdChyZXN1bHQuY2JzRGF0YVsyXS5jYnNSZW1haW5pbmdNaWxlYWdlKSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlNlcnZpY2ViZWRhcmYuQnJlbXNmbMO8c3NpZ2tlaXQuRGF0dW0iLCAnJytyZXN1bHQuY2JzRGF0YVsxXS5jYnNEdWVEYXRlLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5CcmVtc2Zsw7xzc2lna2VpdC5TdGF0dXMiLCAnJytyZXN1bHQuY2JzRGF0YVsxXS5jYnNTdGF0ZSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlNlcnZpY2ViZWRhcmYuw5Zsc2VydmljZS5EYXR1bSIsICcnK3Jlc3VsdC5jYnNEYXRhWzBdLmNic0R1ZURhdGUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLsOWbHNlcnZpY2UuU3RhdHVzIiwgJycrcmVzdWx0LmNic0RhdGFbMF0uY2JzU3RhdGUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLsOWbHNlcnZpY2UuVmVyYmxlaWJlbmRlIGttIiwgcGFyc2VGbG9hdChyZXN1bHQuY2JzRGF0YVswXS5jYnNSZW1haW5pbmdNaWxlYWdlKSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5LaWxvbWV0ZXJzdGFuZCIsIHBhcnNlRmxvYXQocmVzdWx0Lm1pbGVhZ2UpLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLktyYWZ0c3RvZmZzdGFuZCBMaXRlciIsIHBhcnNlRmxvYXQocmVzdWx0LnJlbWFpbmluZ0Z1ZWwpLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkxhZGV6dXN0YW5kIGttIiwgcGFyc2VGbG9hdChyZXN1bHQucmVtYWluaW5nUmFuZ2VFbGVjdHJpYyksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuS29tYmluaWVydGUgUmVpY2h3ZWl0ZSIsIHBhcnNlRmxvYXQocmVzdWx0LnJlbWFpbmluZ1JhbmdlRnVlbCksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuS3JhZnRzdG9mZnN0YW5kICUiLCBwYXJzZUZsb2F0KHJlc3VsdC5mdWVsUGVyY2VudCksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuTGFkZXp1c3RhbmQgJSIsIHBhcnNlRmxvYXQocmVzdWx0LmNoYXJnaW5nTGV2ZWxIdiksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuVmVyYmluZHVuZ3NzdGF0dXMiLCAnJytyZXN1bHQuY29ubmVjdGlvblN0YXR1cywgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5MYWRlc3RhdHVzIiwgJycrcmVzdWx0LmNoYXJnaW5nU3RhdHVzLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlZlcmJsZWliZW5kZSBMYWRlemVpdCIsIHBhcnNlRmxvYXQocmVzdWx0LmNoYXJnaW5nVGltZVJlbWFpbmluZyksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGFuZG9ydC5CcmVpdGVuZ3JhZCIsIHBhcnNlRmxvYXQocmVzdWx0LnBvc2l0aW9uLmxhdCksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGFuZG9ydC5Mw6RuZ2VuZ3JhZCIsIHBhcnNlRmxvYXQocmVzdWx0LnBvc2l0aW9uLmxvbiksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGFuZG9ydC5SaWNodHVuZyIsIHBhcnNlRmxvYXQocmVzdWx0LnBvc2l0aW9uLmhlYWRpbmcpLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhbmRvcnQuU3RhdHVzIiwgJycrcmVzdWx0LnBvc2l0aW9uLnN0YXR1cywgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5MZXR6dGVyIExhZGV2b3JnYW5nIEJlZW5kaWd1bmdzZ3J1bmQiLCAnJytyZXN1bHQubGFzdENoYXJnaW5nRW5kUmVhc29uLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkxldHp0ZXIgTGFkZXZvcmdhbmcgRXJnZWJuaXMiLCAnJytyZXN1bHQubGFzdENoYXJnaW5nRW5kUmVzdWx0LCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkVpbm1hbGlnZSBTb2ZvcnRsYWR1bmciLCByZXN1bHQuc2luZ2xlSW1tZWRpYXRlQ2hhcmdpbmcsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuVHlwIExhZGV2ZXJiaW5kdW5nIiwgJycrcmVzdWx0LmNoYXJnaW5nQ29ubmVjdGlvblR5cGUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuUG9zaXRpb25pZXJ1bmcgSW5kdWt0aW9uc2xhZHVuZyIsICcnK3Jlc3VsdC5jaGFyZ2luZ0luZHVjdGl2ZVBvc2l0aW9uaW5nLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkNoZWNrIENvbnRyb2wgTWVsZHVuZyIsICcnK3Jlc3VsdC5jaGVja0NvbnRyb2xNZXNzYWdlc1swXSwgdHJ1ZSk7Ci8vY29uc29sZS5sb2cocGFyc2VGbG9hdCgnJytib2R5LmNic0RhdGFbMl0pKQoKfTsKcmVxdWVzdC5nZXQob3B0aW9ucywgY2FsbGJhY2spOwo=</field>
                                    <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                  </block>
                                  <block type="procedures_defcustomnoreturn" id="C|Hc:`b-c/c[Tgs1y:IM" x="-38" y="-1037">
                                    <mutation statements="false">
                                      <arg name="Befehl" varid="X_?!znf}q.nyV^o^2X|{"></arg>
                                    </mutation>
                                    <field name="NAME">Befehl</field>
                                    <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogQmVmZWhsLAogICAgJ2Jtd1NrQW5zd2VyJzogU2ljaGVyaGVpdHNhbnR3b3J0Cn07CiAKdmFyIGZvcm1Cb2R5ID0gW107CmZvciAodmFyIHByb3BlcnR5IGluIGRldGFpbHMpIHsKICB2YXIgZW5jb2RlZEtleSA9IGVuY29kZVVSSUNvbXBvbmVudChwcm9wZXJ0eSk7CiAgdmFyIGVuY29kZWRWYWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChkZXRhaWxzW3Byb3BlcnR5XSk7CiAgZm9ybUJvZHkucHVzaChlbmNvZGVkS2V5ICsgIj0iICsgZW5jb2RlZFZhbHVlKTsKfQpmb3JtQm9keSA9IGZvcm1Cb2R5LmpvaW4oIiYiKTsKCgogdmFyIG9wdGlvbnMgPSB7CiAgdXJsOiAnaHR0cHM6Ly9iMnZhcGkuYm13Z3JvdXAuY29tL3dlYmFwaS92MS91c2VyL3ZlaGljbGVzLycrKGdldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkZhaHJ6ZXVnLkZhaHJnZXN0ZWxsbnVtbWVyIikudmFsKSsnL2V4ZWN1dGVTZXJ2aWNlJywKICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfSwKICBhdXRoOiB7CiAgICBiZWFyZXI6IChnZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIpLnZhbCl9LAogIGJvZHk6IGZvcm1Cb2R5Cn07CgpmdW5jdGlvbiBjYWxsYmFjayhlcnJvciwgcmVzcG9uc2UsIGJvZHkpIHsKdmFyIHJlc3VsdCA9IEpTT04ucGFyc2UoYm9keSk7CmNvbnNvbGUubG9nKHJlc3VsdCkKfQoKCnJlcXVlc3QucG9zdChvcHRpb25zLCBjYWxsYmFjayk7</field>
                                    <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                  </block>
                                  <block type="procedures_defcustomnoreturn" id="qLVD,Ua~|Xo7$C,E2/2R" x="-38" y="-1012">
                                    <mutation statements="false"></mutation>
                                    <field name="NAME">Token abfragen</field>
                                    <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3VzZXJuYW1lJzogQmVudXR6ZXJuYW1lLAogICAgJ3Bhc3N3b3JkJzogUGFzc3dvcnQsCiAgICAnZ3JhbnRfdHlwZSc6ICdwYXNzd29yZCcsCiAgICAnc2NvcGUnOidhdXRoZW50aWNhdGVfdXNlciB2ZWhpY2xlX2RhdGEgcmVtb3RlX3NlcnZpY2VzJwp9OwogCnZhciBmb3JtQm9keSA9IFtdOwpmb3IgKHZhciBwcm9wZXJ0eSBpbiBkZXRhaWxzKSB7CiAgdmFyIGVuY29kZWRLZXkgPSBlbmNvZGVVUklDb21wb25lbnQocHJvcGVydHkpOwogIHZhciBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQoZGV0YWlsc1twcm9wZXJ0eV0pOwogIGZvcm1Cb2R5LnB1c2goZW5jb2RlZEtleSArICI9IiArIGVuY29kZWRWYWx1ZSk7Cn0KZm9ybUJvZHkgPSBmb3JtQm9keS5qb2luKCImIik7CgoKIHZhciBvcHRpb25zID0gewogIHVybDogJ2h0dHBzOi8vYjJ2YXBpLmJtd2dyb3VwLmNvbS9nY2RtL29hdXRoL3Rva2VuJywKICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLCAnQXV0aG9yaXphdGlvbic6ICdCYXNpYyBaRGMyTm1JMU16Y3RZVFkxTkMwMFkySmtMV0V6WkdNdE1HTmhOVFkzTW1RM1pqaGtPakUxWmpZNU4yWTJMV0UxWkRVdE5HTmhaQzA1T1dRNUxUTmhNVFZpWXpkbU16azNNdz09JywgJ0NyZWRlbnRpYWxzJzogJ25RdjZDcXR4SnVYV1A3NHhmM0NKd1VFUDoxekRIeDZ1bjRjRGp5YkxFTk4za3lmdW1YMmtFWWlnV1BjUXBkdkRScElCazdyT0onfSwKICBib2R5OiBmb3JtQm9keQp9OwogCmZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCByZXNwb25zZSwgYm9keSkgewp2YXIgcmVzdWx0ID0gSlNPTi5wYXJzZShib2R5KTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iLypUb2tlbiovLCAoJycgKyByZXN1bHQuYWNjZXNzX3Rva2VuKSk7CmNvbnNvbGUubG9nKHJlc3VsdCkKfQogIApyZXF1ZXN0LnBvc3Qob3B0aW9ucywgY2FsbGJhY2spOw==</field>
                                    <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                  </block>
                                </xml>
                                

                                Raspberrymatic, Homematic & Homematic IP Aktoren, ioBroker auf NUC i3, Nuki, Harmony Hub, Digitalstrom, Diverse Sonoff (Tasmota) und Shellies

                                F 1 Antwort Letzte Antwort
                                1
                                • M Offline
                                  M Offline
                                  mameier1234
                                  schrieb am zuletzt editiert von
                                  #215

                                  Top ! ... Läuft perfekt.

                                  Grüße,

                                  Martin

                                  1 Antwort Letzte Antwort
                                  0
                                  • S Strobelix

                                    Ok.. dann hier die erste "Blockly Vollversion" inkl Status und Fahrzeugabfrage.

                                    Hier ist die Eingabe der "VIN" nicht mehr notwendig, da die vorher abgefragt wird.
                                    Beim Starten des Scripts wird eine neue Datenstruktur angelegt und dann gleich alle Werte abgefragt, also löscht bitte vorher die Datenpunkte aus dem "alten/bisherigen" Blockly.

                                    Hinweis:
                                    Manche Daten habe ich noch nicht übersetzt, da ich nicht weiß welche Werte da so vorkommen können. Das bringt die Zeit mit sich. Ebenso kenne ich das JSON der Check Control Meldungen nicht, da das bei mir gerade keine Fehlermeldungen bringt.
                                    Außerdem weiß ich leider nicht ob es bei anderen BMW's weitere oder andere Datenpunkte gibt.
                                    Zusätzlich möchte ich noch darauf hinweisen, das nur der erste BMW im Connected Drive abgefragt wird, wenn ihr also mehrere BMW habt, dann müsst ihr das Script ändern und erweitern.

                                    Token wird alle 60 Minuten erneuert (so lange ist er gültig)
                                    Fahrzeugdaten und Status wird alle 5 min abgerufen.

                                    Ihr müsst nur mailadresse, Passwort und Sicherheitsantwort eingeben und los gehts.
                                    uen
                                    Viel Spaß damit

                                    <xml xmlns="https://developers.google.com/blockly/xml">
                                      <variables>
                                        <variable id="XN3*GfIfi@/dz;VqG=f1">Benutzername</variable>
                                        <variable id="X_?!znf}q.nyV^o^2X|{">Befehl</variable>
                                        <variable id="g!GS3XBhRJ-^i*r~I#(M">Passwort</variable>
                                        <variable id="`M`m=udEPjZ8%NR9[7#t">Sicherheitsantwort</variable>
                                        <variable type="timeout" id="T1">T1</variable>
                                        <variable type="timeout" id="T3">T3</variable>
                                        <variable type="timeout" id="T2">T2</variable>
                                      </variables>
                                      <block type="variables_set" id="25.7NsDbuJp,f,+kg9f}" x="-538" y="-1438">
                                        <field name="VAR" id="XN3*GfIfi@/dz;VqG=f1">Benutzername</field>
                                        <value name="VALUE">
                                          <block type="text" id="|ogs8P81w~dvfv9YO/LK">
                                            <field name="TEXT">Deine BMW Mailadresse</field>
                                          </block>
                                        </value>
                                        <next>
                                          <block type="variables_set" id="A7ExvCH7vJ[i97`qN$cV">
                                            <field name="VAR" id="g!GS3XBhRJ-^i*r~I#(M">Passwort</field>
                                            <value name="VALUE">
                                              <block type="text" id="Xt:`irNXz.ndzQ0dO1uf">
                                                <field name="TEXT">Dein BMW Passwort</field>
                                              </block>
                                            </value>
                                            <next>
                                              <block type="variables_set" id="@j5.B|TqXRajXjYa]f=f">
                                                <field name="VAR" id="`M`m=udEPjZ8%NR9[7#t">Sicherheitsantwort</field>
                                                <value name="VALUE">
                                                  <block type="text" id="m#{+]bm?9QK;w(!7).2d">
                                                    <field name="TEXT">Sicherheitsantwort aus dem BMW Portal</field>
                                                  </block>
                                                </value>
                                                <next>
                                                  <block type="procedures_callcustomnoreturn" id=":hC7Hfgpy82Hn#oJY{Zz">
                                                    <mutation name="Datenpunkte Fahrzeug erstellen"></mutation>
                                                    <next>
                                                      <block type="procedures_callcustomnoreturn" id="q%,[_SU{6#d,O%*sD`Qz">
                                                        <mutation name="Datenpunkte Status erstellen"></mutation>
                                                        <next>
                                                          <block type="procedures_callcustomnoreturn" id="4l2r#`S+v9aFUamx-Esz">
                                                            <mutation name="Datenpunkte Befehle erstellen"></mutation>
                                                            <next>
                                                              <block type="timeouts_settimeout" id=";[W?azy]IW_aXZy;1cLF">
                                                                <field name="NAME">T1</field>
                                                                <field name="DELAY">1000</field>
                                                                <field name="UNIT">ms</field>
                                                                <statement name="STATEMENT">
                                                                  <block type="procedures_callcustomnoreturn" id="sCCxQw~6kxo3.d^m)Pp-">
                                                                    <mutation name="Token abfragen"></mutation>
                                                                  </block>
                                                                </statement>
                                                                <next>
                                                                  <block type="timeouts_settimeout" id="g=Sn!j;?yu^1hi77k@8s">
                                                                    <field name="NAME">T3</field>
                                                                    <field name="DELAY">3000</field>
                                                                    <field name="UNIT">ms</field>
                                                                    <statement name="STATEMENT">
                                                                      <block type="procedures_callcustomnoreturn" id="m(HG.hOx+O{]c/.2/L`k">
                                                                        <mutation name="Fahrzeugdaten abfragen"></mutation>
                                                                      </block>
                                                                    </statement>
                                                                    <next>
                                                                      <block type="timeouts_settimeout" id="JzLVGc@D}Hq;ZSwgo6$g">
                                                                        <field name="NAME">T2</field>
                                                                        <field name="DELAY">6000</field>
                                                                        <field name="UNIT">ms</field>
                                                                        <statement name="STATEMENT">
                                                                          <block type="procedures_callcustomnoreturn" id="bItGd$a[?ESTSSIjY-qP">
                                                                            <mutation name="Status Abfragen"></mutation>
                                                                          </block>
                                                                        </statement>
                                                                        <next>
                                                                          <block type="on" id="Lb,dTP]LKtW1;deq|Qoj">
                                                                            <field name="OID">0_userdata.0.BMW.NeuerToken</field>
                                                                            <field name="CONDITION">any</field>
                                                                            <field name="ACK_CONDITION">false</field>
                                                                            <statement name="STATEMENT">
                                                                              <block type="controls_if" id="u9vRH6uvBpbtNi5Eb$re">
                                                                                <value name="IF0">
                                                                                  <block type="on_source" id="[ZV_ZO^d$dk~r;SHUx@7">
                                                                                    <field name="ATTR">state.val</field>
                                                                                  </block>
                                                                                </value>
                                                                                <statement name="DO0">
                                                                                  <block type="procedures_callcustomnoreturn" id="iMM#y=#E0[lqAuF{O#,A">
                                                                                    <mutation name="Token abfragen"></mutation>
                                                                                  </block>
                                                                                </statement>
                                                                              </block>
                                                                            </statement>
                                                                            <next>
                                                                              <block type="on" id="fDMDIB0vfm{,Zq]F}@;Y">
                                                                                <field name="OID">0_userdata.0.BMW.Status abfragen</field>
                                                                                <field name="CONDITION">any</field>
                                                                                <field name="ACK_CONDITION">false</field>
                                                                                <statement name="STATEMENT">
                                                                                  <block type="controls_if" id="ablR/e?U@-k_13gD,t+g">
                                                                                    <value name="IF0">
                                                                                      <block type="on_source" id="i:D(o^.%d)):M:,_W;,7">
                                                                                        <field name="ATTR">state.val</field>
                                                                                      </block>
                                                                                    </value>
                                                                                    <statement name="DO0">
                                                                                      <block type="procedures_callcustomnoreturn" id="rx2v:]C(yCH;tQ/7s}#I">
                                                                                        <mutation name="Status Abfragen"></mutation>
                                                                                      </block>
                                                                                    </statement>
                                                                                  </block>
                                                                                </statement>
                                                                                <next>
                                                                                  <block type="schedule" id="6.1-pU|?K[LZXvgI}cvN">
                                                                                    <field name="SCHEDULE">*/60 * * * *</field>
                                                                                    <statement name="STATEMENT">
                                                                                      <block type="procedures_callcustomnoreturn" id="S_QWZ%P:XPQ1H8HWO%9)">
                                                                                        <mutation name="Token abfragen"></mutation>
                                                                                      </block>
                                                                                    </statement>
                                                                                    <next>
                                                                                      <block type="schedule" id="W+ma{UTP^+kpN[].v7Zk">
                                                                                        <field name="SCHEDULE">*/5 * * * *</field>
                                                                                        <statement name="STATEMENT">
                                                                                          <block type="procedures_callcustomnoreturn" id="U~v?l1r)Z5Q+Kbb(Z]]y">
                                                                                            <mutation name="Fahrzeugdaten abfragen"></mutation>
                                                                                            <next>
                                                                                              <block type="procedures_callcustomnoreturn" id="PBbJH+;,a,L7x=f3u1!)">
                                                                                                <mutation name="Status Abfragen"></mutation>
                                                                                              </block>
                                                                                            </next>
                                                                                          </block>
                                                                                        </statement>
                                                                                      </block>
                                                                                    </next>
                                                                                  </block>
                                                                                </next>
                                                                              </block>
                                                                            </next>
                                                                          </block>
                                                                        </next>
                                                                      </block>
                                                                    </next>
                                                                  </block>
                                                                </next>
                                                              </block>
                                                            </next>
                                                          </block>
                                                        </next>
                                                      </block>
                                                    </next>
                                                  </block>
                                                </next>
                                              </block>
                                            </next>
                                          </block>
                                        </next>
                                      </block>
                                      <block type="on" id=")QODy$[H-(7lc9HPc%Xx" x="513" y="-1438">
                                        <field name="OID">0_userdata.0.BMW.Befehle.Klimatisieren</field>
                                        <field name="CONDITION">any</field>
                                        <field name="ACK_CONDITION">false</field>
                                        <statement name="STATEMENT">
                                          <block type="controls_if" id="qi2OU5y9AjO|pE1=!(W`">
                                            <value name="IF0">
                                              <block type="on_source" id="]6?RDB6_qbNs}FH@FT/5">
                                                <field name="ATTR">state.val</field>
                                              </block>
                                            </value>
                                            <statement name="DO0">
                                              <block type="procedures_callcustomnoreturn" id="DC)Em1Ehbz1LW6fj[K!7">
                                                <mutation name="Befehl">
                                                  <arg name="Befehl"></arg>
                                                </mutation>
                                                <value name="ARG0">
                                                  <block type="text" id="wekLEjbNhi3sYYeR;bq1">
                                                    <field name="TEXT">CLIMATE_NOW</field>
                                                  </block>
                                                </value>
                                                <next>
                                                  <block type="update" id="?@kSoXR52NIAnmTbP@is">
                                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                    <field name="OID">0_userdata.0.BMW.Befehle.Klimatisieren</field>
                                                    <field name="WITH_DELAY">TRUE</field>
                                                    <field name="DELAY_MS">5000</field>
                                                    <field name="UNIT">ms</field>
                                                    <field name="CLEAR_RUNNING">FALSE</field>
                                                    <value name="VALUE">
                                                      <block type="logic_boolean" id="K/F}wA*$n:5CnQHpYr@$">
                                                        <field name="BOOL">FALSE</field>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </next>
                                              </block>
                                            </statement>
                                          </block>
                                        </statement>
                                        <next>
                                          <block type="on" id="DO.4#e50zzBReVkXk5yb">
                                            <field name="OID">0_userdata.0.BMW.Befehle.Zusperren</field>
                                            <field name="CONDITION">any</field>
                                            <field name="ACK_CONDITION">false</field>
                                            <statement name="STATEMENT">
                                              <block type="controls_if" id="OiM7;RsdIpMs*67U$W1}">
                                                <value name="IF0">
                                                  <block type="on_source" id="DUggLU3jpKTMWDwchY@Q">
                                                    <field name="ATTR">state.val</field>
                                                  </block>
                                                </value>
                                                <statement name="DO0">
                                                  <block type="procedures_callcustomnoreturn" id="6]WNw%0B$@C*pjCV+42;">
                                                    <mutation name="Befehl">
                                                      <arg name="Befehl"></arg>
                                                    </mutation>
                                                    <value name="ARG0">
                                                      <block type="text" id="PU^ebj(ix}-k_Y?zFd8u">
                                                        <field name="TEXT">DOOR_LOCK</field>
                                                      </block>
                                                    </value>
                                                    <next>
                                                      <block type="update" id="9rlPG|IAAhKHcZ|+99|z">
                                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                        <field name="OID">0_userdata.0.BMW.Befehle.Zusperren</field>
                                                        <field name="WITH_DELAY">TRUE</field>
                                                        <field name="DELAY_MS">5000</field>
                                                        <field name="UNIT">ms</field>
                                                        <field name="CLEAR_RUNNING">FALSE</field>
                                                        <value name="VALUE">
                                                          <block type="logic_boolean" id="0,a9ZN|M|PkAi}n*T19O">
                                                            <field name="BOOL">FALSE</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </next>
                                                  </block>
                                                </statement>
                                              </block>
                                            </statement>
                                            <next>
                                              <block type="on" id="Mt2*}WFoiR5--row2T8H">
                                                <field name="OID">0_userdata.0.BMW.Befehle.Aufsperren</field>
                                                <field name="CONDITION">any</field>
                                                <field name="ACK_CONDITION">false</field>
                                                <statement name="STATEMENT">
                                                  <block type="controls_if" id="1tfzyj?EGI~c[$sfM,=H">
                                                    <value name="IF0">
                                                      <block type="on_source" id="L-qx[QjgE7YK^@QoxL?s">
                                                        <field name="ATTR">state.val</field>
                                                      </block>
                                                    </value>
                                                    <statement name="DO0">
                                                      <block type="procedures_callcustomnoreturn" id="UA+^g5gs#H|-G2i{TbW0">
                                                        <mutation name="Befehl">
                                                          <arg name="Befehl"></arg>
                                                        </mutation>
                                                        <value name="ARG0">
                                                          <block type="text" id="cyD@aSO~.u2Bx0K/ZDvH">
                                                            <field name="TEXT">DOOR_UNLOCK</field>
                                                          </block>
                                                        </value>
                                                        <next>
                                                          <block type="update" id="!W;+jZdtO4Z$.N{oZ!~u">
                                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                            <field name="OID">0_userdata.0.BMW.Befehle.Aufsperren</field>
                                                            <field name="WITH_DELAY">TRUE</field>
                                                            <field name="DELAY_MS">5000</field>
                                                            <field name="UNIT">ms</field>
                                                            <field name="CLEAR_RUNNING">FALSE</field>
                                                            <value name="VALUE">
                                                              <block type="logic_boolean" id="i7H=1Q%)]bTWwtb,mZL^">
                                                                <field name="BOOL">FALSE</field>
                                                              </block>
                                                            </value>
                                                          </block>
                                                        </next>
                                                      </block>
                                                    </statement>
                                                  </block>
                                                </statement>
                                                <next>
                                                  <block type="on" id="x3sA~Bo,9#W8+0QQ4?Mk">
                                                    <field name="OID">0_userdata.0.BMW.Befehle.Lichthupe</field>
                                                    <field name="CONDITION">any</field>
                                                    <field name="ACK_CONDITION">false</field>
                                                    <statement name="STATEMENT">
                                                      <block type="controls_if" id="g^t/])A_OBmH:}D:7hx1">
                                                        <value name="IF0">
                                                          <block type="on_source" id="Qk9]ZT(6`yuT9IJ1mS#h">
                                                            <field name="ATTR">state.val</field>
                                                          </block>
                                                        </value>
                                                        <statement name="DO0">
                                                          <block type="procedures_callcustomnoreturn" id="?Ar*XxGO6vVdJr~9F;?)">
                                                            <mutation name="Befehl">
                                                              <arg name="Befehl"></arg>
                                                            </mutation>
                                                            <value name="ARG0">
                                                              <block type="text" id="8y9k?DHsHpiCgnF.S`o=">
                                                                <field name="TEXT">LIGHT_FLASH</field>
                                                              </block>
                                                            </value>
                                                            <next>
                                                              <block type="update" id="8viE(:=_WA,IPGi~+0MV">
                                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                                <field name="OID">0_userdata.0.BMW.Befehle.Lichthupe</field>
                                                                <field name="WITH_DELAY">TRUE</field>
                                                                <field name="DELAY_MS">5000</field>
                                                                <field name="UNIT">ms</field>
                                                                <field name="CLEAR_RUNNING">FALSE</field>
                                                                <value name="VALUE">
                                                                  <block type="logic_boolean" id="3KW3b{O(!n=5:mg(M_Wv">
                                                                    <field name="BOOL">FALSE</field>
                                                                  </block>
                                                                </value>
                                                              </block>
                                                            </next>
                                                          </block>
                                                        </statement>
                                                      </block>
                                                    </statement>
                                                    <next>
                                                      <block type="on" id=".`HU#5P7{T)o:1xn*a/?">
                                                        <field name="OID">0_userdata.0.BMW.Befehle.Hupen</field>
                                                        <field name="CONDITION">any</field>
                                                        <field name="ACK_CONDITION">false</field>
                                                        <statement name="STATEMENT">
                                                          <block type="controls_if" id="Qrr/!E+TuG7Gq66FQA;5">
                                                            <value name="IF0">
                                                              <block type="on_source" id="mvXJMfS$OdG+L~5/z^rY">
                                                                <field name="ATTR">state.val</field>
                                                              </block>
                                                            </value>
                                                            <statement name="DO0">
                                                              <block type="procedures_callcustomnoreturn" id="%-uafX09p)!Y/xx5^fi2">
                                                                <mutation name="Befehl">
                                                                  <arg name="Befehl"></arg>
                                                                </mutation>
                                                                <value name="ARG0">
                                                                  <block type="text" id="}58KZNu_0dQ=K}dkAOS$">
                                                                    <field name="TEXT">HORN_BLOW</field>
                                                                  </block>
                                                                </value>
                                                                <next>
                                                                  <block type="update" id="GWaADA}?}4ONL*[A[7Fi">
                                                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                                    <field name="OID">0_userdata.0.BMW.Befehle.Hupen</field>
                                                                    <field name="WITH_DELAY">TRUE</field>
                                                                    <field name="DELAY_MS">5000</field>
                                                                    <field name="UNIT">ms</field>
                                                                    <field name="CLEAR_RUNNING">FALSE</field>
                                                                    <value name="VALUE">
                                                                      <block type="logic_boolean" id="f^.-6^1JVE#^ag9aE_/X">
                                                                        <field name="BOOL">FALSE</field>
                                                                      </block>
                                                                    </value>
                                                                  </block>
                                                                </next>
                                                              </block>
                                                            </statement>
                                                          </block>
                                                        </statement>
                                                      </block>
                                                    </next>
                                                  </block>
                                                </next>
                                              </block>
                                            </next>
                                          </block>
                                        </next>
                                      </block>
                                      <block type="procedures_defcustomnoreturn" id=":tqG!IfOg@ann$}w1S@h" x="-37" y="-1162">
                                        <mutation statements="false"></mutation>
                                        <field name="NAME">Datenpunkte Befehle erstellen</field>
                                        <field name="SCRIPT">Y3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzIGFiZnJhZ2VuIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlN0YXR1cyBhYmZyYWdlbiIsInJvbGUiOiAiYnV0dG9uIiwidHlwZSI6ICJib29sZWFuIiwicmVhZCI6IHRydWUsIndyaXRlIjogdHJ1ZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjogZmFsc2V9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5OZXVlclRva2VuIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIk5ldWVyVG9rZW4iLCJyb2xlIjogImJ1dHRvbiIsInR5cGUiOiAiYm9vbGVhbiIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IHRydWUsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IGZhbHNlfScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiVG9rZW4iLCJyb2xlIjogIiIsInR5cGUiOiAic3RyaW5nIiwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiAiIiwicmVhZCI6IHRydWUsIndyaXRlIjogdHJ1ZX0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkJlZmVobGUuS2xpbWF0aXNpZXJlbiIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJCZWZlaGwgS2xpbWF0aXNpZXJlbiIsInJvbGUiOiAiYnV0dG9uIiwidHlwZSI6ICJib29sZWFuIiwicmVhZCI6IHRydWUsIndyaXRlIjogdHJ1ZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjogZmFsc2V9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5CZWZlaGxlLkh1cGVuIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkJlZmVobCBIdXBlbiIsInJvbGUiOiAiYnV0dG9uIiwidHlwZSI6ICJib29sZWFuIiwicmVhZCI6IHRydWUsIndyaXRlIjogdHJ1ZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjogZmFsc2V9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5CZWZlaGxlLkF1ZnNwZXJyZW4iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiQmVmZWhsIEF1ZnNwZXJyZW4iLCJyb2xlIjogImJ1dHRvbiIsInR5cGUiOiAiYm9vbGVhbiIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IHRydWUsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IGZhbHNlfScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuQmVmZWhsZS5adXNwZXJyZW4iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiQmVmZWhsIFp1c3BlcnJlbiIsInJvbGUiOiAiYnV0dG9uIiwidHlwZSI6ICJib29sZWFuIiwicmVhZCI6IHRydWUsIndyaXRlIjogdHJ1ZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjogZmFsc2V9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5CZWZlaGxlLkxpY2h0aHVwZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJCZWZlaGwgTGljaHRodXBlIiwicm9sZSI6ICJidXR0b24iLCJ0eXBlIjogImJvb2xlYW4iLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiB0cnVlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiBmYWxzZX0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOw==</field>
                                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                      </block>
                                      <block type="procedures_defcustomnoreturn" id="K]RD5Zz+BB5-#J|b@zcu" x="-38" y="-1137">
                                        <mutation statements="false"></mutation>
                                        <field name="NAME">Datenpunkte Fahrzeug erstellen</field>
                                        <field name="SCRIPT">Y3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuRmFocnpldWcuRmFocmdlc3RlbGxudW1tZXIiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRmFocnpldWcgRmFocmdlc3RlbGxudW1tZXIiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5GYWhyemV1Zy5Nb2RlbCIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJGYWhyemV1ZyBNb2RlbCIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkZhaHJ6ZXVnLlR5cCIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJGYWhyemV1ZyBUeXAiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5GYWhyemV1Zy5BbnRyaWViIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkZhaHJ6ZXVnIEFudHJpZWIiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5GYWhyemV1Zy5GYXJiZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJGYWhyemV1ZyBGYXJiZSIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkZhaHJ6ZXVnLkZhcmJjb2RlIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkZhaHJ6ZXVnIEZhcmJjb2RlIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuRmFocnpldWcuQmF1amFociIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJGYWhyemV1ZyBCYXVqYWhyIiwicm9sZSI6ICIiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAwLCJtYXgiOiAzMDAwLCJkZWYiOiAwLCJ1bml0IjogIiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuSMOkbmRsZXIuTmFtZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJIw6RuZGxlciBOYW1lIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuSMOkbmRsZXIuU3RyYcOfZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJIw6RuZGxlciBTdHJhw59lIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuSMOkbmRsZXIuUExaIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkjDpG5kbGVyIFBMWiIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkjDpG5kbGVyLk9ydCIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJIw6RuZGxlciBPcnQiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Iw6RuZGxlci5MYW5kIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkjDpG5kbGVyIExhbmQiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Iw6RuZGxlci5UZWxlZm9uIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkjDpG5kbGVyIFRlbGVmb24iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwpjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5GYWhyemV1Zy5BbGFybWFubGFnZSB2b3JoYW5kZW4iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRmFocnpldWcgQWxhcm1hbmxhZ2Ugdm9yaGFuZGVuIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAiYm9vbGVhbiIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiJmYWxzZSJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTs=</field>
                                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                      </block>
                                      <block type="procedures_defcustomnoreturn" id="z_62?G;+Z_ju{aky5~UA" x="-37" y="-1113">
                                        <mutation statements="false"></mutation>
                                        <field name="NAME">Datenpunkte Status erstellen</field>
                                        <field name="SCRIPT">Y3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5IYXVwdHVudGVyc3VjaHVuZy5EYXR1bSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJEYXR1bSBIYXVwdHVudGVyc3VjaHVuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5IYXVwdHVudGVyc3VjaHVuZy5TdGF0dXMiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiU3RhdHVzIEhhdXB0dW50ZXJzdWNodW5nIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLkZhaHJ6ZXVnY2hlY2suU3RhdHVzIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlN0YXR1cyBGYWhyemV1Z2NoZWNrIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLkZhaHJ6ZXVnY2hlY2suRGF0dW0iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRGF0dW0gRmFocnpldWdjaGVjayIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5GYWhyemV1Z2NoZWNrLlZlcmJsZWliZW5kZSBrbSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJWZXJibGVpYmVuZGUga20gRmFocnpldWdjaGVjayIsInJvbGUiOiAiIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAwLCJtYXgiOiAxMDAwMDAwMDAsImRlZiI6IDAsInVuaXQiOiAia20ifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5CcmVtc2Zsw7xzc2lna2VpdC5EYXR1bSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJEYXR1bSBCcmVtc2Zsw7xzc2lna2VpdCIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5CcmVtc2Zsw7xzc2lna2VpdC5TdGF0dXMiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiU3RhdHVzIEJyZW1zZmzDvHNzaWdrZWl0Iiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLsOWbHNlcnZpY2UuRGF0dW0iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRGF0dW0gw5Zsc2VydmljZSIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi7DlmxzZXJ2aWNlLlN0YXR1cyIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJTdGF0dXMgw5Zsc2VydmljZSIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi7DlmxzZXJ2aWNlLlZlcmJsZWliZW5kZSBrbSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJWZXJibGVpYmVuZGUga20gw5Zsc2VydmljZSIsInJvbGUiOiAiIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAwLCJtYXgiOiAxMDAwMDAwMDAsImRlZiI6IDAsInVuaXQiOiAia20ifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLktpbG9tZXRlcnN0YW5kIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIktpbG9tZXRlcnN0YW5kIiwicm9sZSI6ICIiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsIm1pbiI6IDAsIm1heCI6IDEwMDAwMDAwMCwiZGVmIjogMCwidW5pdCI6ICJrbSJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVydMO8ciB2b3JuZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJGYWhyZXJ0w7xyIHZvcm5lIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVydMO8ciBoaW50ZW4iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRmFocmVydMO8ciBoaW50ZW4iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJ0w7xyIHZvcm5lIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkJlaWZhaHJlcnTDvHIgdm9ybmUiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJ0w7xyIGhpbnRlbiIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJCZWlmYWhyZXJ0w7xyIGhpbnRlbiIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkZhaHJlcmZlbnN0ZXIgdm9ybmUiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRmFocmVyZmVuc3RlciB2b3JuZSIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkZhaHJlcmZlbnN0ZXIgaGludGVuIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkZhaHJlcmZlbnN0ZXIgaGludGVuIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQmVpZmFocmVyZmVuc3RlciB2b3JuZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJCZWlmYWhyZXJmZW5zdGVyIHZvcm5lIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQmVpZmFocmVyZmVuc3RlciBoaW50ZW4iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiQmVpZmFocmVyZmVuc3RlciBoaW50ZW4iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Lb2ZmZXJyYXVtIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIktvZmZlcnJhdW0iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5IZWNrZmVuc3RlciIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJIZWNrZmVuc3RlciIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLk1vdG9yaGF1YmUiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiTW90b3JoYXViZSIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlTDvHJ2ZXJyaWVnZWx1bmciLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiVMO8cnZlcnJpZWdlbHVuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlBhcmtsZXVjaHRlbiIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJQYXJrbGV1Y2h0ZW4iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5TdGFuZGxpY2h0IiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlN0YW5kbGljaHQiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5LcmFmdHN0b2Zmc3RhbmQgTGl0ZXIiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiS3JhZnRzdG9mZnN0YW5kIExpdGVyIiwicm9sZSI6ICIiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsIm1pbiI6IDAsIm1heCI6IDUwMCwiZGVmIjogMCwidW5pdCI6ICJsIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5MYWRlenVzdGFuZCBrbSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJMYWRlenVzdGFuZCBrbSIsInJvbGUiOiAiIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAwLCJtYXgiOiA1MDAsImRlZiI6IDAsInVuaXQiOiAia20ifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLktvbWJpbmllcnRlIFJlaWNod2VpdGUiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiS29tYmluaWVydGUgUmVpY2h3ZWl0ZSIsInJvbGUiOiAiIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAwLCJtYXgiOiA1MDAsImRlZiI6IDAsInVuaXQiOiAia20ifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLktyYWZ0c3RvZmZzdGFuZCAlIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIktyYWZ0c3RvZmZzdGFuZCAlIiwicm9sZSI6ICIiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsIm1pbiI6IDAsIm1heCI6IDEwMCwiZGVmIjogMCwidW5pdCI6ICIlIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5MYWRlenVzdGFuZCAlIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkxhZGV6dXN0YW5kICUiLCJyb2xlIjogIiIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwibWluIjogMCwibWF4IjogMTAwLCJkZWYiOiAwLCJ1bml0IjogIiUifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlZlcmJpbmR1bmdzc3RhdHVzIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlZlcmJpbmR1bmdzc3RhdHVzIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuTGFkZXN0YXR1cyIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJMYWRlc3RhdHVzIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuVmVyYmxlaWJlbmRlIExhZGV6ZWl0IiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlZlcmJsZWliZW5kZSBMYWRlemVpdCIsInJvbGUiOiAiIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAwLCJtYXgiOiAxMDAwLCJkZWYiOiAwLCJ1bml0IjogIm1pbiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGFuZG9ydC5CcmVpdGVuZ3JhZCIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJTdGFuZG9ydCBCcmVpdGVuZ3JhZCIsInJvbGUiOiAiIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAtMTAwMDAsIm1heCI6IDEwMDAwLCJkZWYiOiAwLCJ1bml0IjogIsKwIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YW5kb3J0LkzDpG5nZW5ncmFkIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlN0YW5kb3J0IEzDpG5nZW5ncmFkIiwicm9sZSI6ICIiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsIm1pbiI6IC0xMDAwMCwibWF4IjogMTAwMDAsImRlZiI6IDAsInVuaXQiOiAiwrAifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhbmRvcnQuUmljaHR1bmciLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiU3RhbmRvcnQgUmljaHR1bmciLCJyb2xlIjogIiIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwibWluIjogLTEwMDAwLCJtYXgiOiAxMDAwMCwiZGVmIjogMCwidW5pdCI6ICLCsCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGFuZG9ydC5TdGF0dXMiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiU3RhbmRvcnQgU3RhdHVzIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuTGV0enRlciBMYWRldm9yZ2FuZyBCZWVuZGlndW5nc2dydW5kIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkxldHp0ZXIgTGFkZXZvcmdhbmcgQmVlbmRpZ3VuZ3NncnVuZCIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkxldHp0ZXIgTGFkZXZvcmdhbmcgRXJnZWJuaXMiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiTGV0enRlciBMYWRldm9yZ2FuZyBFcmdlYm5pcyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkVpbm1hbGlnZSBTb2ZvcnRsYWR1bmciLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRWlubWFsaWdlIFNvZm9ydGxhZHVuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogImJvb2xlYW4iLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiZmFsc2UifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlR5cCBMYWRldmVyYmluZHVuZyIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJUeXAgTGFkZXZlcmJpbmR1bmciLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Qb3NpdGlvbmllcnVuZyBJbmR1a3Rpb25zbGFkdW5nIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlBvc2l0aW9uaWVydW5nIEluZHVrdGlvbnNsYWR1bmciLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5DaGVjayBDb250cm9sIE1lbGR1bmciLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiQ2hlY2sgQ29udHJvbCBNZWxkdW5nIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQ2FicmlvZGFjaCIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJDYWJyaW9kYWNoIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICAK</field>
                                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                      </block>
                                      <block type="procedures_defcustomnoreturn" id="Tqmj%!gc`F8vk2zl7MW_" x="-38" y="-1088">
                                        <mutation statements="false"></mutation>
                                        <field name="NAME">Fahrzeugdaten abfragen</field>
                                        <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7Cgp2YXIgb3B0aW9ucyA9IHsKICB1cmw6ICdodHRwczovL2IydmFwaS5ibXdncm91cC5jb20vd2ViYXBpL3YxL3VzZXIvdmVoaWNsZXMvJywKICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfSwKICBhdXRoOiB7CiAgICBiZWFyZXI6IChnZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIpLnZhbCl9Cn07CgpmdW5jdGlvbiBjYWxsYmFjayhlcnJvcixyZXNwb25zZSxib2R5KXsKCnZhciByZXN1bHQyID0gSlNPTi5wYXJzZShib2R5KS52ZWhpY2xlc1swXTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuRmFocnpldWcuRmFocmdlc3RlbGxudW1tZXIiLCAnJytyZXN1bHQyLnZpbiwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkZhaHJ6ZXVnLk1vZGVsIiwgJycrcmVzdWx0Mi5tb2RlbCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkZhaHJ6ZXVnLlR5cCIsICcnK3Jlc3VsdDIuYm9keXR5cGUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5GYWhyemV1Zy5BbnRyaWViIiwgJycrcmVzdWx0Mi5kcml2ZVRyYWluLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuRmFocnpldWcuRmFyYmUiLCAnJytyZXN1bHQyLmNvbG9yLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuRmFocnpldWcuRmFyYmNvZGUiLCAnJytyZXN1bHQyLmNvbG9yQ29kZSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkZhaHJ6ZXVnLkJhdWphaHIiLCBwYXJzZUZsb2F0KHJlc3VsdDIueWVhck9mQ29uc3RydWN0aW9uKSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkjDpG5kbGVyLk5hbWUiLCAnJytyZXN1bHQyLmRlYWxlci5uYW1lLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuSMOkbmRsZXIuU3RyYcOfZSIsICcnK3Jlc3VsdDIuZGVhbGVyLnN0cmVldCwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkjDpG5kbGVyLlBMWiIsICcnK3Jlc3VsdDIuZGVhbGVyLnBvc3RhbENvZGUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Iw6RuZGxlci5PcnQiLCAnJytyZXN1bHQyLmRlYWxlci5jaXR5LCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuSMOkbmRsZXIuTGFuZCIsICcnK3Jlc3VsdDIuZGVhbGVyLmNvdW50cnksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Iw6RuZGxlci5UZWxlZm9uIiwgJycrcmVzdWx0Mi5kZWFsZXIucGhvbmUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5GYWhyemV1Zy5BbGFybWFubGFnZSB2b3JoYW5kZW4iLCByZXN1bHQyLmhhc0FsYXJtU3lzdGVtLCB0cnVlKTsKLy9jb25zb2xlLmxvZyhyZXN1bHQyLnZpbikKCn07CnJlcXVlc3QuZ2V0KG9wdGlvbnMsIGNhbGxiYWNrKTsK</field>
                                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                      </block>
                                      <block type="procedures_defcustomnoreturn" id="e6N=.RUD+21]!8uv9.EJ" x="-38" y="-1063">
                                        <mutation statements="false"></mutation>
                                        <field name="NAME">Status Abfragen</field>
                                        <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7Cgp2YXIgb3B0aW9ucyA9IHsKICB1cmw6ICdodHRwczovL2IydmFwaS5ibXdncm91cC5jb20vd2ViYXBpL3YxL3VzZXIvdmVoaWNsZXMvJysoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuRmFocnpldWcuRmFocmdlc3RlbGxudW1tZXIiKS52YWwpKycvc3RhdHVzJywKICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfSwKICBhdXRoOiB7CiAgICBiZWFyZXI6IChnZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIpLnZhbCl9Cn07CgpmdW5jdGlvbiBjYWxsYmFjayhlcnJvcixyZXNwb25zZSxib2R5KXsKdmFyIHJlc3VsdCA9IEpTT04ucGFyc2UoYm9keSkudmVoaWNsZVN0YXR1czsKaWYgKHJlc3VsdC5kb29yRHJpdmVyRnJvbnQgPT0gJ0NMT1NFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVydMO8ciB2b3JuZSIsICdHZXNjaGxvc3NlbicsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC5kb29yRHJpdmVyRnJvbnQgPT0gJ09QRU4nKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkZhaHJlcnTDvHIgdm9ybmUiLCAnT2ZmZW4nLCB0cnVlKTsKIH0gZWxzZSB7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5GYWhyZXJ0w7xyIHZvcm5lIiwgJ1VuZGVmaW5pZXJ0JywgdHJ1ZSk7Cn07CmlmIChyZXN1bHQuZG9vckRyaXZlclJlYXIgPT0gJ0NMT1NFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVydMO8ciBoaW50ZW4iLCAnR2VzY2hsb3NzZW4nLCB0cnVlKTsKfSBlbHNlIGlmIChyZXN1bHQuZG9vckRyaXZlclJlYXIgPT0gJ09QRU4nKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkZhaHJlcnTDvHIgaGludGVuIiwgJ09mZmVuJywgdHJ1ZSk7CiB9IGVsc2UgeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVydMO8ciBoaW50ZW4iLCAnVW5kZWZpbmllcnQnLCB0cnVlKTsKfTsKaWYgKHJlc3VsdC5kb29yUGFzc2VuZ2VyRnJvbnQgPT0gJ0NMT1NFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQmVpZmFocmVydMO8ciB2b3JuZSIsICdHZXNjaGxvc3NlbicsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC5kb29yUGFzc2VuZ2VyRnJvbnQgPT0gJ09QRU4nKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkJlaWZhaHJlcnTDvHIgdm9ybmUiLCAnT2ZmZW4nLCB0cnVlKTsKfSAgZWxzZSB7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJ0w7xyIHZvcm5lIiwgJ1VuZGVmaW5pZXJ0JywgdHJ1ZSk7Cn07CmlmIChyZXN1bHQuZG9vclBhc3NlbmdlclJlYXIgPT0gJ0NMT1NFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQmVpZmFocmVydMO8ciBoaW50ZW4iLCAnR2VzY2hsb3NzZW4nLCB0cnVlKTsKfSBlbHNlIGlmIChyZXN1bHQuZG9vclBhc3NlbmdlclJlYXIgPT0gJ09QRU4nKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkJlaWZhaHJlcnTDvHIgaGludGVuIiwgJ09mZmVuJywgdHJ1ZSk7Cn0gIGVsc2UgeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQmVpZmFocmVydMO8ciBoaW50ZW4iLCAnVW5kZWZpbmllcnQnLCB0cnVlKTsKfTsKaWYgKHJlc3VsdC53aW5kb3dEcml2ZXJGcm9udCA9PSAnQ0xPU0VEJykgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5GYWhyZXJmZW5zdGVyIHZvcm5lIiwgJ0dlc2NobG9zc2VuJywgdHJ1ZSk7Cn0gZWxzZSBpZiAocmVzdWx0LndpbmRvd0RyaXZlckZyb250ID09ICdPUEVOJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5GYWhyZXJmZW5zdGVyIHZvcm5lIiwgJ09mZmVuJywgdHJ1ZSk7CiB9IGVsc2UgeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVyZmVuc3RlciB2b3JuZSIsICdVbmRlZmluaWVydCcsIHRydWUpOwp9OwppZiAocmVzdWx0LndpbmRvd0RyaXZlclJlYXIgPT0gJ0NMT1NFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVyZmVuc3RlciBoaW50ZW4iLCAnR2VzY2hsb3NzZW4nLCB0cnVlKTsKfSBlbHNlIGlmIChyZXN1bHQud2luZG93RHJpdmVyUmVhciA9PSAnT1BFTicpeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVyZmVuc3RlciBoaW50ZW4iLCAnT2ZmZW4nLCB0cnVlKTsKfSAgZWxzZSB7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5GYWhyZXJmZW5zdGVyIGhpbnRlbiIsICdVbmRlZmluaWVydCcsIHRydWUpOwp9OwppZiAocmVzdWx0LndpbmRvd1Bhc3NlbmdlckZyb250ID09ICdDTE9TRUQnKSB7CiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkJlaWZhaHJlcmZlbnN0ZXIgdm9ybmUiLCAnR2VzY2hsb3NzZW4nLCB0cnVlKTsKfSBlbHNlIGlmIChyZXN1bHQud2luZG93UGFzc2VuZ2VyRnJvbnQgPT0gJ09QRU4nKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkJlaWZhaHJlcmZlbnN0ZXIgdm9ybmUiLCAnT2ZmZW4nLCB0cnVlKTsKIH0gZWxzZSB7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJmZW5zdGVyIHZvcm5lIiwgJ1VuZGVmaW5pZXJ0JywgdHJ1ZSk7Cn07CmlmIChyZXN1bHQud2luZG93UGFzc2VuZ2VyUmVhciA9PSAnQ0xPU0VEJykgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJmZW5zdGVyIGhpbnRlbiIsICdHZXNjaGxvc3NlbicsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC53aW5kb3dQYXNzZW5nZXJSZWFyID09ICdPUEVOJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJmZW5zdGVyIGhpbnRlbiIsICdPZmZlbicsIHRydWUpOwp9ICBlbHNlIHsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkJlaWZhaHJlcmZlbnN0ZXIgaGludGVuIiwgJ1VuZGVmaW5pZXJ0JywgdHJ1ZSk7Cn07CmlmIChyZXN1bHQudHJ1bmsgPT0gJ0NMT1NFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuS29mZmVycmF1bSIsICdHZXNjaGxvc3NlbicsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC50cnVuayA9PSAnT1BFTicpeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuS29mZmVycmF1bSIsICdPZmZlbicsIHRydWUpOwogfSBlbHNlIHsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLktvZmZlcnJhdW0iLCAnVW5kZWZpbmllcnQnLCB0cnVlKTsKfTsKaWYgKHJlc3VsdC5yZWFyV2luZG93ID09ICdDTE9TRUQnKSB7CiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkhlY2tmZW5zdGVyIiwgJ0dlc2NobG9zc2VuJywgdHJ1ZSk7Cn0gZWxzZSBpZiAocmVzdWx0LnJlYXJXaW5kb3cgPT0gJ09QRU4nKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkhlY2tmZW5zdGVyIiwgJ09mZmVuJywgdHJ1ZSk7Cn0gZWxzZSB7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5IZWNrZmVuc3RlciIsICdOaWNodCB2b3JoYW5kZW4nLCB0cnVlKTsKfTsKaWYgKHJlc3VsdC5jb252ZXJ0aWJsZVJvb2ZTdGF0ZSA9PSAnQ0xPU0VEJykgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5DYWJyaW9kYWNoIiwgJ0dlc2NobG9zc2VuJywgdHJ1ZSk7Cn0gZWxzZSBpZiAocmVzdWx0LmNvbnZlcnRpYmxlUm9vZlN0YXRlID09ICdPUEVOJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5DYWJyaW9kYWNoIiwgJ09mZmVuJywgdHJ1ZSk7Cn0gZWxzZSB7CiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkNhYnJpb2RhY2giLCAnTmljaHQgdm9yaGFuZGVuJywgdHJ1ZSk7Cn07CmlmIChyZXN1bHQuaG9vZCA9PSAnQ0xPU0VEJykgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Nb3RvcmhhdWJlIiwgJ0dlc2NobG9zc2VuJywgdHJ1ZSk7Cn0gZWxzZSBpZiAocmVzdWx0Lmhvb2QgPT0gJ09QRU4nKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLk1vdG9yaGF1YmUiLCAnT2ZmZW4nLCB0cnVlKTsKfSAgZWxzZSB7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Nb3RvcmhhdWJlIiwgJ1VuZGVmaW5pZXJ0JywgdHJ1ZSk7Cn07CmlmIChyZXN1bHQuZG9vckxvY2tTdGF0ZSA9PSAnU0VDVVJFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuVMO8cnZlcnJpZWdlbHVuZyIsICdHZXNpY2hlcnQnLCB0cnVlKTsKfSBlbHNlIGlmIChyZXN1bHQuZG9vckxvY2tTdGF0ZSA9PSAnTE9DS0VEJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Uw7xydmVycmllZ2VsdW5nIiwgJ1ZlcnJpZWdlbHQnLCB0cnVlKTsKfSAgZWxzZSBpZiAocmVzdWx0LmRvb3JMb2NrU3RhdGUgPT0gJ1VOTE9DS0VEJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Uw7xydmVycmllZ2VsdW5nIiwgJ0dlw7ZmZm5ldCcsIHRydWUpOwp9IGVsc2UgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Uw7xydmVycmllZ2VsdW5nIiwgJ1VuZGVmaW5pZXJ0JywgdHJ1ZSk7Cn07CmlmIChyZXN1bHQucGFya2luZ0xpZ2h0ID09ICdPRkYnKSB7CiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlBhcmtsZXVjaHRlbiIsICdBdXMnLCB0cnVlKTsKfSBlbHNlIGlmIChyZXN1bHQucGFya2luZ0xpZ2h0ID09ICdPTicpeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuUGFya2xldWNodGVuIiwgJ0FuJywgdHJ1ZSk7Cn0gIGVsc2UgeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuUGFya2xldWNodGVuIiwgJ1VuZGVmaW5pZXJ0JywgdHJ1ZSk7Cn07CmlmIChyZXN1bHQucG9zaXRpb25MaWdodCA9PSAnT0ZGJykgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5TdGFuZGxpY2h0IiwgJ0F1cycsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC5wb3NpdGlvbkxpZ2h0ID09ICdPTicpeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuU3RhbmRsaWNodCIsICdBbicsIHRydWUpOwp9ICBlbHNlIHsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlN0YW5kbGljaHQiLCAnVW5kZWZpbmllcnQnLCB0cnVlKTsKfTsKCnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlNlcnZpY2ViZWRhcmYuSGF1cHR1bnRlcnN1Y2h1bmcuRGF0dW0iLCAnJytyZXN1bHQuY2JzRGF0YVszXS5jYnNEdWVEYXRlLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5IYXVwdHVudGVyc3VjaHVuZy5TdGF0dXMiLCAnJytyZXN1bHQuY2JzRGF0YVszXS5jYnNTdGF0ZSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlNlcnZpY2ViZWRhcmYuRmFocnpldWdjaGVjay5EYXR1bSIsICcnK3Jlc3VsdC5jYnNEYXRhWzJdLmNic0R1ZURhdGUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLkZhaHJ6ZXVnY2hlY2suU3RhdHVzIiwgJycrcmVzdWx0LmNic0RhdGFbMl0uY2JzU3RhdGUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLkZhaHJ6ZXVnY2hlY2suVmVyYmxlaWJlbmRlIGttIiwgcGFyc2VGbG9hdChyZXN1bHQuY2JzRGF0YVsyXS5jYnNSZW1haW5pbmdNaWxlYWdlKSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlNlcnZpY2ViZWRhcmYuQnJlbXNmbMO8c3NpZ2tlaXQuRGF0dW0iLCAnJytyZXN1bHQuY2JzRGF0YVsxXS5jYnNEdWVEYXRlLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5CcmVtc2Zsw7xzc2lna2VpdC5TdGF0dXMiLCAnJytyZXN1bHQuY2JzRGF0YVsxXS5jYnNTdGF0ZSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlNlcnZpY2ViZWRhcmYuw5Zsc2VydmljZS5EYXR1bSIsICcnK3Jlc3VsdC5jYnNEYXRhWzBdLmNic0R1ZURhdGUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLsOWbHNlcnZpY2UuU3RhdHVzIiwgJycrcmVzdWx0LmNic0RhdGFbMF0uY2JzU3RhdGUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLsOWbHNlcnZpY2UuVmVyYmxlaWJlbmRlIGttIiwgcGFyc2VGbG9hdChyZXN1bHQuY2JzRGF0YVswXS5jYnNSZW1haW5pbmdNaWxlYWdlKSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5LaWxvbWV0ZXJzdGFuZCIsIHBhcnNlRmxvYXQocmVzdWx0Lm1pbGVhZ2UpLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLktyYWZ0c3RvZmZzdGFuZCBMaXRlciIsIHBhcnNlRmxvYXQocmVzdWx0LnJlbWFpbmluZ0Z1ZWwpLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkxhZGV6dXN0YW5kIGttIiwgcGFyc2VGbG9hdChyZXN1bHQucmVtYWluaW5nUmFuZ2VFbGVjdHJpYyksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuS29tYmluaWVydGUgUmVpY2h3ZWl0ZSIsIHBhcnNlRmxvYXQocmVzdWx0LnJlbWFpbmluZ1JhbmdlRnVlbCksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuS3JhZnRzdG9mZnN0YW5kICUiLCBwYXJzZUZsb2F0KHJlc3VsdC5mdWVsUGVyY2VudCksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuTGFkZXp1c3RhbmQgJSIsIHBhcnNlRmxvYXQocmVzdWx0LmNoYXJnaW5nTGV2ZWxIdiksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuVmVyYmluZHVuZ3NzdGF0dXMiLCAnJytyZXN1bHQuY29ubmVjdGlvblN0YXR1cywgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5MYWRlc3RhdHVzIiwgJycrcmVzdWx0LmNoYXJnaW5nU3RhdHVzLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlZlcmJsZWliZW5kZSBMYWRlemVpdCIsIHBhcnNlRmxvYXQocmVzdWx0LmNoYXJnaW5nVGltZVJlbWFpbmluZyksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGFuZG9ydC5CcmVpdGVuZ3JhZCIsIHBhcnNlRmxvYXQocmVzdWx0LnBvc2l0aW9uLmxhdCksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGFuZG9ydC5Mw6RuZ2VuZ3JhZCIsIHBhcnNlRmxvYXQocmVzdWx0LnBvc2l0aW9uLmxvbiksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGFuZG9ydC5SaWNodHVuZyIsIHBhcnNlRmxvYXQocmVzdWx0LnBvc2l0aW9uLmhlYWRpbmcpLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhbmRvcnQuU3RhdHVzIiwgJycrcmVzdWx0LnBvc2l0aW9uLnN0YXR1cywgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5MZXR6dGVyIExhZGV2b3JnYW5nIEJlZW5kaWd1bmdzZ3J1bmQiLCAnJytyZXN1bHQubGFzdENoYXJnaW5nRW5kUmVhc29uLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkxldHp0ZXIgTGFkZXZvcmdhbmcgRXJnZWJuaXMiLCAnJytyZXN1bHQubGFzdENoYXJnaW5nRW5kUmVzdWx0LCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkVpbm1hbGlnZSBTb2ZvcnRsYWR1bmciLCByZXN1bHQuc2luZ2xlSW1tZWRpYXRlQ2hhcmdpbmcsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuVHlwIExhZGV2ZXJiaW5kdW5nIiwgJycrcmVzdWx0LmNoYXJnaW5nQ29ubmVjdGlvblR5cGUsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuUG9zaXRpb25pZXJ1bmcgSW5kdWt0aW9uc2xhZHVuZyIsICcnK3Jlc3VsdC5jaGFyZ2luZ0luZHVjdGl2ZVBvc2l0aW9uaW5nLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkNoZWNrIENvbnRyb2wgTWVsZHVuZyIsICcnK3Jlc3VsdC5jaGVja0NvbnRyb2xNZXNzYWdlc1swXSwgdHJ1ZSk7Ci8vY29uc29sZS5sb2cocGFyc2VGbG9hdCgnJytib2R5LmNic0RhdGFbMl0pKQoKfTsKcmVxdWVzdC5nZXQob3B0aW9ucywgY2FsbGJhY2spOwo=</field>
                                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                      </block>
                                      <block type="procedures_defcustomnoreturn" id="C|Hc:`b-c/c[Tgs1y:IM" x="-38" y="-1037">
                                        <mutation statements="false">
                                          <arg name="Befehl" varid="X_?!znf}q.nyV^o^2X|{"></arg>
                                        </mutation>
                                        <field name="NAME">Befehl</field>
                                        <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogQmVmZWhsLAogICAgJ2Jtd1NrQW5zd2VyJzogU2ljaGVyaGVpdHNhbnR3b3J0Cn07CiAKdmFyIGZvcm1Cb2R5ID0gW107CmZvciAodmFyIHByb3BlcnR5IGluIGRldGFpbHMpIHsKICB2YXIgZW5jb2RlZEtleSA9IGVuY29kZVVSSUNvbXBvbmVudChwcm9wZXJ0eSk7CiAgdmFyIGVuY29kZWRWYWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChkZXRhaWxzW3Byb3BlcnR5XSk7CiAgZm9ybUJvZHkucHVzaChlbmNvZGVkS2V5ICsgIj0iICsgZW5jb2RlZFZhbHVlKTsKfQpmb3JtQm9keSA9IGZvcm1Cb2R5LmpvaW4oIiYiKTsKCgogdmFyIG9wdGlvbnMgPSB7CiAgdXJsOiAnaHR0cHM6Ly9iMnZhcGkuYm13Z3JvdXAuY29tL3dlYmFwaS92MS91c2VyL3ZlaGljbGVzLycrKGdldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkZhaHJ6ZXVnLkZhaHJnZXN0ZWxsbnVtbWVyIikudmFsKSsnL2V4ZWN1dGVTZXJ2aWNlJywKICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfSwKICBhdXRoOiB7CiAgICBiZWFyZXI6IChnZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIpLnZhbCl9LAogIGJvZHk6IGZvcm1Cb2R5Cn07CgpmdW5jdGlvbiBjYWxsYmFjayhlcnJvciwgcmVzcG9uc2UsIGJvZHkpIHsKdmFyIHJlc3VsdCA9IEpTT04ucGFyc2UoYm9keSk7CmNvbnNvbGUubG9nKHJlc3VsdCkKfQoKCnJlcXVlc3QucG9zdChvcHRpb25zLCBjYWxsYmFjayk7</field>
                                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                      </block>
                                      <block type="procedures_defcustomnoreturn" id="qLVD,Ua~|Xo7$C,E2/2R" x="-38" y="-1012">
                                        <mutation statements="false"></mutation>
                                        <field name="NAME">Token abfragen</field>
                                        <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3VzZXJuYW1lJzogQmVudXR6ZXJuYW1lLAogICAgJ3Bhc3N3b3JkJzogUGFzc3dvcnQsCiAgICAnZ3JhbnRfdHlwZSc6ICdwYXNzd29yZCcsCiAgICAnc2NvcGUnOidhdXRoZW50aWNhdGVfdXNlciB2ZWhpY2xlX2RhdGEgcmVtb3RlX3NlcnZpY2VzJwp9OwogCnZhciBmb3JtQm9keSA9IFtdOwpmb3IgKHZhciBwcm9wZXJ0eSBpbiBkZXRhaWxzKSB7CiAgdmFyIGVuY29kZWRLZXkgPSBlbmNvZGVVUklDb21wb25lbnQocHJvcGVydHkpOwogIHZhciBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQoZGV0YWlsc1twcm9wZXJ0eV0pOwogIGZvcm1Cb2R5LnB1c2goZW5jb2RlZEtleSArICI9IiArIGVuY29kZWRWYWx1ZSk7Cn0KZm9ybUJvZHkgPSBmb3JtQm9keS5qb2luKCImIik7CgoKIHZhciBvcHRpb25zID0gewogIHVybDogJ2h0dHBzOi8vYjJ2YXBpLmJtd2dyb3VwLmNvbS9nY2RtL29hdXRoL3Rva2VuJywKICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLCAnQXV0aG9yaXphdGlvbic6ICdCYXNpYyBaRGMyTm1JMU16Y3RZVFkxTkMwMFkySmtMV0V6WkdNdE1HTmhOVFkzTW1RM1pqaGtPakUxWmpZNU4yWTJMV0UxWkRVdE5HTmhaQzA1T1dRNUxUTmhNVFZpWXpkbU16azNNdz09JywgJ0NyZWRlbnRpYWxzJzogJ25RdjZDcXR4SnVYV1A3NHhmM0NKd1VFUDoxekRIeDZ1bjRjRGp5YkxFTk4za3lmdW1YMmtFWWlnV1BjUXBkdkRScElCazdyT0onfSwKICBib2R5OiBmb3JtQm9keQp9OwogCmZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCByZXNwb25zZSwgYm9keSkgewp2YXIgcmVzdWx0ID0gSlNPTi5wYXJzZShib2R5KTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iLypUb2tlbiovLCAoJycgKyByZXN1bHQuYWNjZXNzX3Rva2VuKSk7CmNvbnNvbGUubG9nKHJlc3VsdCkKfQogIApyZXF1ZXN0LnBvc3Qob3B0aW9ucywgY2FsbGJhY2spOw==</field>
                                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                      </block>
                                    </xml>
                                    
                                    F Offline
                                    F Offline
                                    fastfoot
                                    schrieb am zuletzt editiert von
                                    #216

                                    @strobelix Tolle Arbeit! Bei den Statusabfragen bekomme ich leider nur diese Antwort:

                                    {"error":{"code":500,"description":"(SmartPhoneUtil-A-101) Mandatory parameter(s) missed or blank: dlat and dlon are required for BMW vehicles!"}}
                                    

                                    iobroker läuft unter Docker auf QNAP TS-451+
                                    SkriptRecovery: https://forum.iobroker.net/post/930558

                                    S 1 Antwort Letzte Antwort
                                    0
                                    • F fastfoot

                                      @strobelix Tolle Arbeit! Bei den Statusabfragen bekomme ich leider nur diese Antwort:

                                      {"error":{"code":500,"description":"(SmartPhoneUtil-A-101) Mandatory parameter(s) missed or blank: dlat and dlon are required for BMW vehicles!"}}
                                      
                                      S Offline
                                      S Offline
                                      Strobelix
                                      schrieb am zuletzt editiert von
                                      #217

                                      @fastfoot

                                      Sehr interessant. Das sind beides Parameter die überhaupt nicht in den Abfragen vorkommen oder benötigt werden.
                                      Hat irgendwas mit Standortinformationem zu tun.
                                      Genaueres weiss ich jetzt leider auch nicht.
                                      Mal aus Neugier:
                                      Nutzt du die BMW App (regelmäßig)?

                                      Raspberrymatic, Homematic & Homematic IP Aktoren, ioBroker auf NUC i3, Nuki, Harmony Hub, Digitalstrom, Diverse Sonoff (Tasmota) und Shellies

                                      F 1 Antwort Letzte Antwort
                                      0
                                      • S Strobelix

                                        @fastfoot

                                        Sehr interessant. Das sind beides Parameter die überhaupt nicht in den Abfragen vorkommen oder benötigt werden.
                                        Hat irgendwas mit Standortinformationem zu tun.
                                        Genaueres weiss ich jetzt leider auch nicht.
                                        Mal aus Neugier:
                                        Nutzt du die BMW App (regelmäßig)?

                                        F Offline
                                        F Offline
                                        fastfoot
                                        schrieb am zuletzt editiert von
                                        #218

                                        @strobelix sagte in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:

                                        @fastfoot

                                        Sehr interessant. Das sind beides Parameter die überhaupt nicht in den Abfragen vorkommen oder benötigt werden.
                                        Hat irgendwas mit Standortinformationem zu tun.
                                        Genaueres weiss ich jetzt leider auch nicht.
                                        Mal aus Neugier:
                                        Nutzt du die BMW App (regelmäßig)?

                                        Habe etwas gegoogelt, das sind wohl die Standortdaten des iPhone(bzw. iobroker). Wenn ich diese Daten anhänge(...VIN/status?dlat=mylat&dlon=mylon) Dann erhalte ich diese Daten. Daten zu den Türen etc. sind nicht dabei, diese erhalte ich jedoch in der App auch nicht. Ist die Entfernung zum Auto zu groß dann kommt Position: invalid

                                        {"vehicleStatus":{"vin":"xxxxxxxxxxF187xxx","updateTime":"2021-02-05T17:20:38+0000","position":{"lat":49.xxxxxxxxxxx,"lon":7.xxxxxxxxxxx,"status":"OK"},"vehicleCountry":"DE","DCS_CCH_Activation":"NA","DCS_CCH_Ongoing":false}}
                                        

                                        Die App nutze ich eigentlich nie :-)

                                        BMW: Freude am Fahren = Ja, Freude am ConnectedDrive=Eher mässig

                                        iobroker läuft unter Docker auf QNAP TS-451+
                                        SkriptRecovery: https://forum.iobroker.net/post/930558

                                        S 1 Antwort Letzte Antwort
                                        0
                                        • F fastfoot

                                          @strobelix sagte in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:

                                          @fastfoot

                                          Sehr interessant. Das sind beides Parameter die überhaupt nicht in den Abfragen vorkommen oder benötigt werden.
                                          Hat irgendwas mit Standortinformationem zu tun.
                                          Genaueres weiss ich jetzt leider auch nicht.
                                          Mal aus Neugier:
                                          Nutzt du die BMW App (regelmäßig)?

                                          Habe etwas gegoogelt, das sind wohl die Standortdaten des iPhone(bzw. iobroker). Wenn ich diese Daten anhänge(...VIN/status?dlat=mylat&dlon=mylon) Dann erhalte ich diese Daten. Daten zu den Türen etc. sind nicht dabei, diese erhalte ich jedoch in der App auch nicht. Ist die Entfernung zum Auto zu groß dann kommt Position: invalid

                                          {"vehicleStatus":{"vin":"xxxxxxxxxxF187xxx","updateTime":"2021-02-05T17:20:38+0000","position":{"lat":49.xxxxxxxxxxx,"lon":7.xxxxxxxxxxx,"status":"OK"},"vehicleCountry":"DE","DCS_CCH_Activation":"NA","DCS_CCH_Ongoing":false}}
                                          

                                          Die App nutze ich eigentlich nie :-)

                                          BMW: Freude am Fahren = Ja, Freude am ConnectedDrive=Eher mässig

                                          S Offline
                                          S Offline
                                          Strobelix
                                          schrieb am zuletzt editiert von
                                          #219

                                          @fastfoot

                                          Das habe ich vorher auch kurz ergooglet.
                                          Kommt eben viel auf das Navi Betriebssystem an.

                                          Wenn es mit den Standortwerten geht, ists ja ok.
                                          Ich hab deshalb gefragt, weil evtl ein unregelmäßiges öffnen der App diese Problem auch lösen könnte. Weiss ich aber nicht sicher.

                                          Wenn ich für das alles eine Lösung hätte, oder auf alle Requests der Api eine Antwort generieren könnte, hätte ich längst einen eigenen Adapter entwickelt :-)

                                          Raspberrymatic, Homematic & Homematic IP Aktoren, ioBroker auf NUC i3, Nuki, Harmony Hub, Digitalstrom, Diverse Sonoff (Tasmota) und Shellies

                                          F 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
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          590

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          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