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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

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

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    414

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    5.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.4k

Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten

Scheduled Pinned Locked Moved ioBroker Allgemein
305 Posts 49 Posters 81.8k Views 27 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Strobelix

    @neueinsteiger
    Wenn du hier ein paar Beiträge hoch scrollst, entdeckst du, dass der BMW Adapter nicht mehr richtig funktioniert. Dafür habe ich aber ein Blockly gebaut, welches die Daten ausliest

    S Offline
    S Offline
    Stefan Hanke
    wrote on last edited by
    #251

    ...sehr merkwürdig wie unterschiedlich hier die Funktion des BMW-Adapters bewertet wird.

    Bei mir funktioniert der einwandfrei bis auf die „connected-Funktionen“, Standheizung, Öffnen, Verschließen, Lichthupe und Hupe.

    Beim mir werden alle Datenpunkte korrekt und fehlerfrei eingelesen.

    Für die Connected-Funktionen und nur für diese, habe ich das Blockly hier aus diesem Thread laufen - auch das funktioniert perfekt und ist für mich die ideale Ergänzung.
    Danke nochmals dafür !

    Wirklich merkwürdig, dass der Adapter bei manchen BMW-Modellen so gar nicht funktionieren mag...

    Viele Grüße,
    Stefan

    Q 1 Reply Last reply
    0
    • S Stefan Hanke

      ...sehr merkwürdig wie unterschiedlich hier die Funktion des BMW-Adapters bewertet wird.

      Bei mir funktioniert der einwandfrei bis auf die „connected-Funktionen“, Standheizung, Öffnen, Verschließen, Lichthupe und Hupe.

      Beim mir werden alle Datenpunkte korrekt und fehlerfrei eingelesen.

      Für die Connected-Funktionen und nur für diese, habe ich das Blockly hier aus diesem Thread laufen - auch das funktioniert perfekt und ist für mich die ideale Ergänzung.
      Danke nochmals dafür !

      Wirklich merkwürdig, dass der Adapter bei manchen BMW-Modellen so gar nicht funktionieren mag...

      Viele Grüße,
      Stefan

      Q Offline
      Q Offline
      qwertz
      wrote on last edited by
      #252

      @stefan-hanke said in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:

      Bei mir funktioniert der einwandfrei bis auf die „connected-Funktionen“, Standheizung, Öffnen, Verschließen, Lichthupe und Hupe.

      Bei meinem i3 mit dem Adapter genau so: Lesen geht, nur Steuern der Klima nicht und das ist nun mal die wichtigste Funktion für Viele.

      N 1 Reply Last reply
      0
      • Q qwertz

        @stefan-hanke said in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:

        Bei mir funktioniert der einwandfrei bis auf die „connected-Funktionen“, Standheizung, Öffnen, Verschließen, Lichthupe und Hupe.

        Bei meinem i3 mit dem Adapter genau so: Lesen geht, nur Steuern der Klima nicht und das ist nun mal die wichtigste Funktion für Viele.

        N Offline
        N Offline
        neueinsteiger
        wrote on last edited by
        #253

        Guten abend zusammen,

        Mein Gedanke war jetzt eher das der Fehler bei mir liegt. Ich fahre einen 540i BJ 19. Wie bekomme ich nun raaus ob der Fehler vom gin oder von mir kommt? :)

        1 Reply Last reply
        0
        • S Strobelix

          @neueinsteiger
          Wenn du hier ein paar Beiträge hoch scrollst, entdeckst du, dass der BMW Adapter nicht mehr richtig funktioniert. Dafür habe ich aber ein Blockly gebaut, welches die Daten ausliest

          S Do not disturb
          S Do not disturb
          stenmic
          wrote on last edited by
          #254

          @strobelix super Arbeit, Danke!
          Leider kommt bei mir auch dieser Feher im Log (3er touring 2020)

          Image 079.jpg

          Die "Befehle" funktionieren.
          "Farzeug" und "Händler" werden angezeigt.
          Beim "Servicebedarf" und "Standort" sind keine Einträge vorhanden.
          Der "Status" wird nur zur Hälfte befüllt. (Kilometerangaben und Kraftstoff fehlen)

          Hast du eine Idee?

          R 1 Reply Last reply
          0
          • R Offline
            R Offline
            Rookie50
            wrote on last edited by
            #255

            @strobelix Erstmal DANKE für Dein Script. Die habe ich nun genutzt um die Daten meines MINI Cabrio's einzulesen. Hat im Grund "fast" sofort funktioniert. Allerdings sind beim MINI auch die csbData Einträge verschoben. Die habe ich angepasst und nun kommen auch die Status Daten ohne Fehlermeldung.
            Hier also nochmal das Script für ein MINI Cabrio:

            <xml xmlns="https://developers.google.com/blockly/xml">
              <variables>
                <variable id="XN3*GfIfi@/dz;VqG=f1">Benutzername</variable>
                <variable id="Ryywje#7IoGUwl?[YLYR">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="T4">T4</variable>
                <variable type="timeout" id="T3">T3</variable>
                <variable type="timeout" id="T5">T5</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">EMAIL ACCOUNT</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="@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">PINCODE</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.Neuer Token</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>
                                <next>
                                  <block type="timeouts_cleartimeout" id="HV:pG3Rpo#DDVKbG+daU">
                                    <field name="NAME">T4</field>
                                    <next>
                                      <block type="timeouts_settimeout" id="K^b0}p1E-~Xb4ASC]Q4H">
                                        <field name="NAME">T4</field>
                                        <field name="DELAY">20</field>
                                        <field name="UNIT">sec</field>
                                        <statement name="STATEMENT">
                                          <block type="procedures_callcustomnoreturn" id="%#uB?:We,O/HPC5~o8mu">
                                            <mutation name="Status Abfragen"></mutation>
                                          </block>
                                        </statement>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </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>
                                    <next>
                                      <block type="timeouts_cleartimeout" id="kCFL4[xJS;D7/KIfiBAX">
                                        <field name="NAME">T5</field>
                                        <next>
                                          <block type="timeouts_settimeout" id="o8MuetpKi;us4cd)*xEw">
                                            <field name="NAME">T5</field>
                                            <field name="DELAY">20</field>
                                            <field name="UNIT">sec</field>
                                            <statement name="STATEMENT">
                                              <block type="procedures_callcustomnoreturn" id="R9@II,t5ByNf2K*gJ[xo">
                                                <mutation name="Status Abfragen"></mutation>
                                              </block>
                                            </statement>
                                          </block>
                                        </next>
                                      </block>
                                    </next>
                                  </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>
                                <next>
                                  <block type="on" id="Vhk9JdYK#{eK`xo9l]hS">
                                    <field name="OID">0_userdata.0.BMW.Befehle.Türen verriegelt boolean</field>
                                    <field name="CONDITION">ne</field>
                                    <field name="ACK_CONDITION">false</field>
                                    <statement name="STATEMENT">
                                      <block type="controls_if" id="=32B-jUiOxfo-@z%Enkk">
                                        <mutation else="1"></mutation>
                                        <value name="IF0">
                                          <block type="on_source" id="~~AZ={~tQ?Y!E}_f7D~]">
                                            <field name="ATTR">state.val</field>
                                          </block>
                                        </value>
                                        <statement name="DO0">
                                          <block type="control" id="+rt4k;*u!=Diy{KbOU(8">
                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                            <field name="OID">0_userdata.0.BMW.Befehle.Zusperren</field>
                                            <field name="WITH_DELAY">FALSE</field>
                                            <value name="VALUE">
                                              <block type="logic_boolean" id="vq-.Och#,2*o%xQARVeP">
                                                <field name="BOOL">TRUE</field>
                                              </block>
                                            </value>
                                          </block>
                                        </statement>
                                        <statement name="ELSE">
                                          <block type="control" id="9!u{=):MD$_iG09[}T0A">
                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                            <field name="OID">0_userdata.0.BMW.Befehle.Aufsperren</field>
                                            <field name="WITH_DELAY">FALSE</field>
                                            <value name="VALUE">
                                              <block type="logic_boolean" id="fa-4=P/n|:C`K{-ixe3S">
                                                <field name="BOOL">TRUE</field>
                                              </block>
                                            </value>
                                          </block>
                                        </statement>
                                      </block>
                                    </statement>
                                    <next>
                                      <block type="on" id="1ADkR3Z`F_-a)|M:fB7-">
                                        <field name="OID">0_userdata.0.BMW.Status.Türverriegelung</field>
                                        <field name="CONDITION">ne</field>
                                        <field name="ACK_CONDITION">true</field>
                                        <statement name="STATEMENT">
                                          <block type="controls_if" id="v!Vu7EO:!dG(jpe;x2xD">
                                            <mutation else="1"></mutation>
                                            <value name="IF0">
                                              <block type="logic_compare" id="GXN9SU]9FjxoypMbH3QD">
                                                <field name="OP">EQ</field>
                                                <value name="A">
                                                  <block type="on_source" id="Q.J_$G`AzV2??o(MyP`R">
                                                    <field name="ATTR">state.val</field>
                                                  </block>
                                                </value>
                                                <value name="B">
                                                  <block type="text" id="}^BDPcKx]3rmlx-*%UN#">
                                                    <field name="TEXT">Entriegelt</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                            <statement name="DO0">
                                              <block type="update" id="tixY~5k,`[b;Uyon{Z3N">
                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                <field name="OID">0_userdata.0.BMW.Befehle.Türen verriegelt boolean</field>
                                                <field name="WITH_DELAY">FALSE</field>
                                                <value name="VALUE">
                                                  <block type="logic_boolean" id="I8cRbAkI}r9c:WqD+xQD">
                                                    <field name="BOOL">FALSE</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </statement>
                                            <statement name="ELSE">
                                              <block type="update" id="rU$~CF:N/Aj;=ODV+;)D">
                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                <field name="OID">0_userdata.0.BMW.Befehle.Türen verriegelt boolean</field>
                                                <field name="WITH_DELAY">FALSE</field>
                                                <value name="VALUE">
                                                  <block type="logic_boolean" id="r5W(~)`uh/rW@uA*b2?*">
                                                    <field name="BOOL">TRUE</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </statement>
                                          </block>
                                        </statement>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </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">Y3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzIGFiZnJhZ2VuIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlN0YXR1cyBhYmZyYWdlbiIsInJvbGUiOiAiYnV0dG9uIiwidHlwZSI6ICJib29sZWFuIiwicmVhZCI6IHRydWUsIndyaXRlIjogdHJ1ZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjogZmFsc2V9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5OZXVlciBUb2tlbiIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJOZXVlciBUb2tlbiIsInJvbGUiOiAiYnV0dG9uIiwidHlwZSI6ICJib29sZWFuIiwicmVhZCI6IHRydWUsIndyaXRlIjogdHJ1ZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjogZmFsc2V9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJUb2tlbiIsInJvbGUiOiAiIiwidHlwZSI6ICJzdHJpbmciLCJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6ICIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiB0cnVlfScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuQmVmZWhsZS5LbGltYXRpc2llcmVuIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkJlZmVobCBLbGltYXRpc2llcmVuIiwicm9sZSI6ICJidXR0b24iLCJ0eXBlIjogImJvb2xlYW4iLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiB0cnVlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiBmYWxzZX0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkJlZmVobGUuSHVwZW4iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiQmVmZWhsIEh1cGVuIiwicm9sZSI6ICJidXR0b24iLCJ0eXBlIjogImJvb2xlYW4iLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiB0cnVlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiBmYWxzZX0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkJlZmVobGUuQXVmc3BlcnJlbiIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJCZWZlaGwgQXVmc3BlcnJlbiIsInJvbGUiOiAiYnV0dG9uIiwidHlwZSI6ICJib29sZWFuIiwicmVhZCI6IHRydWUsIndyaXRlIjogdHJ1ZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjogZmFsc2V9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5CZWZlaGxlLlp1c3BlcnJlbiIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJCZWZlaGwgWnVzcGVycmVuIiwicm9sZSI6ICJidXR0b24iLCJ0eXBlIjogImJvb2xlYW4iLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiB0cnVlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiBmYWxzZX0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLkJlZmVobGUuTGljaHRodXBlIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkJlZmVobCBMaWNodGh1cGUiLCJyb2xlIjogImJ1dHRvbiIsInR5cGUiOiAiYm9vbGVhbiIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IHRydWUsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IGZhbHNlfScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuQmVmZWhsZS5Uw7xyZW4gdmVycmllZ2VsdCBib29sZWFuIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlTDvHJlbiB2ZXJyaWVnZWx0IGJvb2xlYW4iLCJyb2xlIjogInN3aXRjaCIsInR5cGUiOiAiYm9vbGVhbiIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IHRydWUsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IGZhbHNlfScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7</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">Y3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5IYXVwdHVudGVyc3VjaHVuZy5EYXR1bSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJEYXR1bSBIYXVwdHVudGVyc3VjaHVuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5IYXVwdHVudGVyc3VjaHVuZy5TdGF0dXMiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiU3RhdHVzIEhhdXB0dW50ZXJzdWNodW5nIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLkZhaHJ6ZXVnY2hlY2suU3RhdHVzIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlN0YXR1cyBGYWhyemV1Z2NoZWNrIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLkZhaHJ6ZXVnY2hlY2suRGF0dW0iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRGF0dW0gRmFocnpldWdjaGVjayIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5GYWhyemV1Z2NoZWNrLlZlcmJsZWliZW5kZSBrbSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJWZXJibGVpYmVuZGUga20gRmFocnpldWdjaGVjayIsInJvbGUiOiAiIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAwLCJtYXgiOiAxMDAwMDAwMDAsImRlZiI6IDAsInVuaXQiOiAia20ifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5CcmVtc2Zsw7xzc2lna2VpdC5EYXR1bSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJEYXR1bSBCcmVtc2Zsw7xzc2lna2VpdCIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5CcmVtc2Zsw7xzc2lna2VpdC5TdGF0dXMiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiU3RhdHVzIEJyZW1zZmzDvHNzaWdrZWl0Iiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLsOWbHNlcnZpY2UuRGF0dW0iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRGF0dW0gw5Zsc2VydmljZSIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi7DlmxzZXJ2aWNlLlN0YXR1cyIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJTdGF0dXMgw5Zsc2VydmljZSIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi7DlmxzZXJ2aWNlLlZlcmJsZWliZW5kZSBrbSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJWZXJibGVpYmVuZGUga20gw5Zsc2VydmljZSIsInJvbGUiOiAiIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAwLCJtYXgiOiAxMDAwMDAwMDAsImRlZiI6IDAsInVuaXQiOiAia20ifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLktpbG9tZXRlcnN0YW5kIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIktpbG9tZXRlcnN0YW5kIiwicm9sZSI6ICIiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsIm1pbiI6IDAsIm1heCI6IDEwMDAwMDAwMCwiZGVmIjogMCwidW5pdCI6ICJrbSJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVydMO8ciB2b3JuZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJGYWhyZXJ0w7xyIHZvcm5lIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVydMO8ciBoaW50ZW4iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRmFocmVydMO8ciBoaW50ZW4iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJ0w7xyIHZvcm5lIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkJlaWZhaHJlcnTDvHIgdm9ybmUiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJ0w7xyIGhpbnRlbiIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJCZWlmYWhyZXJ0w7xyIGhpbnRlbiIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkZhaHJlcmZlbnN0ZXIgdm9ybmUiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRmFocmVyZmVuc3RlciB2b3JuZSIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkZhaHJlcmZlbnN0ZXIgaGludGVuIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkZhaHJlcmZlbnN0ZXIgaGludGVuIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQmVpZmFocmVyZmVuc3RlciB2b3JuZSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJCZWlmYWhyZXJmZW5zdGVyIHZvcm5lIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQmVpZmFocmVyZmVuc3RlciBoaW50ZW4iLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiQmVpZmFocmVyZmVuc3RlciBoaW50ZW4iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Lb2ZmZXJyYXVtIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIktvZmZlcnJhdW0iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5IZWNrZmVuc3RlciIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJIZWNrZmVuc3RlciIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLk1vdG9yaGF1YmUiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiTW90b3JoYXViZSIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlTDvHJ2ZXJyaWVnZWx1bmciLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiVMO8cnZlcnJpZWdlbHVuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlBhcmtsZXVjaHRlbiIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJQYXJrbGV1Y2h0ZW4iLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5TdGFuZGxpY2h0IiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlN0YW5kbGljaHQiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5LcmFmdHN0b2Zmc3RhbmQgTGl0ZXIiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiS3JhZnRzdG9mZnN0YW5kIExpdGVyIiwicm9sZSI6ICIiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsIm1pbiI6IDAsIm1heCI6IDUwMCwiZGVmIjogMCwidW5pdCI6ICJsIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5MYWRlenVzdGFuZCBrbSIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJMYWRlenVzdGFuZCBrbSIsInJvbGUiOiAiIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAwLCJtYXgiOiA1MDAsImRlZiI6IDAsInVuaXQiOiAia20ifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLktvbWJpbmllcnRlIFJlaWNod2VpdGUiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiS29tYmluaWVydGUgUmVpY2h3ZWl0ZSIsInJvbGUiOiAiIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAwLCJtYXgiOiA1MDAsImRlZiI6IDAsInVuaXQiOiAia20ifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLktyYWZ0c3RvZmZzdGFuZCAlIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIktyYWZ0c3RvZmZzdGFuZCAlIiwicm9sZSI6ICIiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsIm1pbiI6IDAsIm1heCI6IDEwMCwiZGVmIjogMCwidW5pdCI6ICIlIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5MYWRlenVzdGFuZCAlIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkxhZGV6dXN0YW5kICUiLCJyb2xlIjogIiIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwibWluIjogMCwibWF4IjogMTAwLCJkZWYiOiAwLCJ1bml0IjogIiUifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlZlcmJpbmR1bmdzc3RhdHVzIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlZlcmJpbmR1bmdzc3RhdHVzIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuTGFkZXN0YXR1cyIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJMYWRlc3RhdHVzIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuVmVyYmxlaWJlbmRlIExhZGV6ZWl0IiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlZlcmJsZWliZW5kZSBMYWRlemVpdCIsInJvbGUiOiAiIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAwLCJtYXgiOiAxMDAwLCJkZWYiOiAwLCJ1bml0IjogIm1pbiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGFuZG9ydC5CcmVpdGVuZ3JhZCIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJTdGFuZG9ydCBCcmVpdGVuZ3JhZCIsInJvbGUiOiAiIiwidHlwZSI6ICJudW1iZXIiLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJtaW4iOiAtMTAwMDAsIm1heCI6IDEwMDAwLCJkZWYiOiAwLCJ1bml0IjogIsKwIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIGNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YW5kb3J0LkzDpG5nZW5ncmFkIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIlN0YW5kb3J0IEzDpG5nZW5ncmFkIiwicm9sZSI6ICIiLCJ0eXBlIjogIm51bWJlciIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsIm1pbiI6IC0xMDAwMCwibWF4IjogMTAwMDAsImRlZiI6IDAsInVuaXQiOiAiwrAifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhbmRvcnQuUmljaHR1bmciLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiU3RhbmRvcnQgUmljaHR1bmciLCJyb2xlIjogIiIsInR5cGUiOiAibnVtYmVyIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwibWluIjogLTEwMDAwLCJtYXgiOiAxMDAwMCwiZGVmIjogMCwidW5pdCI6ICLCsCJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGFuZG9ydC5TdGF0dXMiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiU3RhbmRvcnQgU3RhdHVzIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuTGV0enRlciBMYWRldm9yZ2FuZyBCZWVuZGlndW5nc2dydW5kIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkxldHp0ZXIgTGFkZXZvcmdhbmcgQmVlbmRpZ3VuZ3NncnVuZCIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkxldHp0ZXIgTGFkZXZvcmdhbmcgRXJnZWJuaXMiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiTGV0enRlciBMYWRldm9yZ2FuZyBFcmdlYm5pcyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkVpbm1hbGlnZSBTb2ZvcnRsYWR1bmciLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiRWlubWFsaWdlIFNvZm9ydGxhZHVuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogImJvb2xlYW4iLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiZmFsc2UifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkxhZGV2ZXJiaW5kdW5nIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkxhZGV2ZXJiaW5kdW5nIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuUG9zaXRpb25pZXJ1bmcgSW5kdWt0aW9uc2xhZHVuZyIsIEpTT04ucGFyc2UoJ3sibmFtZSI6ICJQb3NpdGlvbmllcnVuZyBJbmR1a3Rpb25zbGFkdW5nIiwicm9sZSI6ICJzdGF0ZSIsInR5cGUiOiAic3RyaW5nIiwicmVhZCI6IHRydWUsIndyaXRlIjogZmFsc2UsICJkZXNjIjogIk1hbnVlbGwgZXJ6ZXVndCIsImRlZiI6IiJ9JyksIGFzeW5jIGZ1bmN0aW9uICgpIHsKICB9KTsKICBjcmVhdGVTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQ2hlY2sgQ29udHJvbCBNZWxkdW5nIiwgSlNPTi5wYXJzZSgneyJuYW1lIjogIkNoZWNrIENvbnRyb2wgTWVsZHVuZyIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkNhYnJpb2RhY2giLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiQ2FicmlvZGFjaCIsInJvbGUiOiAic3RhdGUiLCJ0eXBlIjogInN0cmluZyIsInJlYWQiOiB0cnVlLCJ3cml0ZSI6IGZhbHNlLCAiZGVzYyI6ICJNYW51ZWxsIGVyemV1Z3QiLCJkZWYiOiIifScpLCBhc3luYyBmdW5jdGlvbiAoKSB7CiAgfSk7CiAgY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhbmRvcnQuR29vZ2xlIE1hcHMiLCBKU09OLnBhcnNlKCd7Im5hbWUiOiAiU3RhbmRvcnQgR29vZ2xlIE1hcHMiLCJyb2xlIjogInN0YXRlIiwidHlwZSI6ICJzdHJpbmciLCJyZWFkIjogdHJ1ZSwid3JpdGUiOiBmYWxzZSwgImRlc2MiOiAiTWFudWVsbCBlcnpldWd0IiwiZGVmIjoiIn0nKSwgYXN5bmMgZnVuY3Rpb24gKCkgewogIH0pOwogIAo=</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">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7Cgp2YXIgb3B0aW9ucyA9IHsKICB1cmw6ICdodHRwczovL2IydmFwaS5ibXdncm91cC5jb20vd2ViYXBpL3YxL3VzZXIvdmVoaWNsZXMvJysoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuRmFocnpldWcuRmFocmdlc3RlbGxudW1tZXIiKS52YWwpKycvc3RhdHVzJywKICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfSwKICBhdXRoOiB7CiAgICBiZWFyZXI6IChnZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIpLnZhbCl9Cn07CgpmdW5jdGlvbiBjYWxsYmFjayhlcnJvcixyZXNwb25zZSxib2R5KXsKdmFyIHJlc3VsdCA9IEpTT04ucGFyc2UoYm9keSkudmVoaWNsZVN0YXR1czsKaWYgKHJlc3VsdC5kb29yRHJpdmVyRnJvbnQgPT0gJ0NMT1NFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRmFocmVydMO8ciB2b3JuZSIsICdHZXNjaGxvc3NlbicsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC5kb29yRHJpdmVyRnJvbnQgPT0gJ09QRU4nKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkZhaHJlcnTDvHIgdm9ybmUiLCAnT2ZmZW4nLCB0cnVlKTsKIH0gZWxzZSB7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5GYWhyZXJ0w7xyIHZvcm5lIiwgJycrIHJlc3VsdC5kb29yRHJpdmVyRnJvbnQsIHRydWUpOwp9OwppZiAocmVzdWx0LmRvb3JEcml2ZXJSZWFyID09ICdDTE9TRUQnKSB7CiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkZhaHJlcnTDvHIgaGludGVuIiwgJ0dlc2NobG9zc2VuJywgdHJ1ZSk7Cn0gZWxzZSBpZiAocmVzdWx0LmRvb3JEcml2ZXJSZWFyID09ICdPUEVOJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5GYWhyZXJ0w7xyIGhpbnRlbiIsICdPZmZlbicsIHRydWUpOwogfSBlbHNlIHsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkZhaHJlcnTDvHIgaGludGVuIiwgJycrIHJlc3VsdC5kb29yRHJpdmVyUmVhciwgdHJ1ZSk7Cn07CmlmIChyZXN1bHQuZG9vclBhc3NlbmdlckZyb250ID09ICdDTE9TRUQnKSB7CiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkJlaWZhaHJlcnTDvHIgdm9ybmUiLCAnR2VzY2hsb3NzZW4nLCB0cnVlKTsKfSBlbHNlIGlmIChyZXN1bHQuZG9vclBhc3NlbmdlckZyb250ID09ICdPUEVOJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJ0w7xyIHZvcm5lIiwgJ09mZmVuJywgdHJ1ZSk7Cn0gIGVsc2UgeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQmVpZmFocmVydMO8ciB2b3JuZSIsICcnKyByZXN1bHQuZG9vclBhc3NlbmdlckZyb250LCB0cnVlKTsKfTsKaWYgKHJlc3VsdC5kb29yUGFzc2VuZ2VyUmVhciA9PSAnQ0xPU0VEJykgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJ0w7xyIGhpbnRlbiIsICdHZXNjaGxvc3NlbicsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC5kb29yUGFzc2VuZ2VyUmVhciA9PSAnT1BFTicpeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQmVpZmFocmVydMO8ciBoaW50ZW4iLCAnT2ZmZW4nLCB0cnVlKTsKfSAgZWxzZSB7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJ0w7xyIGhpbnRlbiIsICcnKyByZXN1bHQuZG9vclBhc3NlbmdlclJlYXIsIHRydWUpOwp9OwppZiAocmVzdWx0LndpbmRvd0RyaXZlckZyb250ID09ICdDTE9TRUQnKSB7CiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkZhaHJlcmZlbnN0ZXIgdm9ybmUiLCAnR2VzY2hsb3NzZW4nLCB0cnVlKTsKfSBlbHNlIGlmIChyZXN1bHQud2luZG93RHJpdmVyRnJvbnQgPT0gJ09QRU4nKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkZhaHJlcmZlbnN0ZXIgdm9ybmUiLCAnT2ZmZW4nLCB0cnVlKTsKIH0gZWxzZSB7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5GYWhyZXJmZW5zdGVyIHZvcm5lIiwgJycrIHJlc3VsdC53aW5kb3dEcml2ZXJGcm9udCwgdHJ1ZSk7Cn07CmlmIChyZXN1bHQud2luZG93RHJpdmVyUmVhciA9PSAnQ0xPU0VEJykgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5GYWhyZXJmZW5zdGVyIGhpbnRlbiIsICdHZXNjaGxvc3NlbicsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC53aW5kb3dEcml2ZXJSZWFyID09ICdPUEVOJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5GYWhyZXJmZW5zdGVyIGhpbnRlbiIsICdPZmZlbicsIHRydWUpOwp9ICBlbHNlIHsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkZhaHJlcmZlbnN0ZXIgaGludGVuIiwgJycrIHJlc3VsdC53aW5kb3dEcml2ZXJSZWFyLCB0cnVlKTsKfTsKaWYgKHJlc3VsdC53aW5kb3dQYXNzZW5nZXJGcm9udCA9PSAnQ0xPU0VEJykgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJmZW5zdGVyIHZvcm5lIiwgJ0dlc2NobG9zc2VuJywgdHJ1ZSk7Cn0gZWxzZSBpZiAocmVzdWx0LndpbmRvd1Bhc3NlbmdlckZyb250ID09ICdPUEVOJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJmZW5zdGVyIHZvcm5lIiwgJ09mZmVuJywgdHJ1ZSk7CiB9IGVsc2UgeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQmVpZmFocmVyZmVuc3RlciB2b3JuZSIsICcnKyByZXN1bHQud2luZG93UGFzc2VuZ2VyRnJvbnQsIHRydWUpOwp9OwppZiAocmVzdWx0LndpbmRvd1Bhc3NlbmdlclJlYXIgPT0gJ0NMT1NFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQmVpZmFocmVyZmVuc3RlciBoaW50ZW4iLCAnR2VzY2hsb3NzZW4nLCB0cnVlKTsKfSBlbHNlIGlmIChyZXN1bHQud2luZG93UGFzc2VuZ2VyUmVhciA9PSAnT1BFTicpeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQmVpZmFocmVyZmVuc3RlciBoaW50ZW4iLCAnT2ZmZW4nLCB0cnVlKTsKfSAgZWxzZSB7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5CZWlmYWhyZXJmZW5zdGVyIGhpbnRlbiIsICcnKyByZXN1bHQud2luZG93UGFzc2VuZ2VyUmVhciwgdHJ1ZSk7Cn07CmlmIChyZXN1bHQudHJ1bmsgPT0gJ0NMT1NFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuS29mZmVycmF1bSIsICdHZXNjaGxvc3NlbicsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC50cnVuayA9PSAnT1BFTicpeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuS29mZmVycmF1bSIsICdPZmZlbicsIHRydWUpOwogfSBlbHNlIHsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLktvZmZlcnJhdW0iLCAnJysgcmVzdWx0LnRydW5rLCB0cnVlKTsKfTsKaWYgKHJlc3VsdC5yZWFyV2luZG93ID09ICdDTE9TRUQnKSB7CiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkhlY2tmZW5zdGVyIiwgJ0dlc2NobG9zc2VuJywgdHJ1ZSk7Cn0gZWxzZSBpZiAocmVzdWx0LnJlYXJXaW5kb3cgPT0gJ09QRU4nKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkhlY2tmZW5zdGVyIiwgJ09mZmVuJywgdHJ1ZSk7Cn0gZWxzZSB7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5IZWNrZmVuc3RlciIsICdOaWNodCB2b3JoYW5kZW4nLCB0cnVlKTsKfTsKaWYgKHJlc3VsdC5jb252ZXJ0aWJsZVJvb2ZTdGF0ZSA9PSAnQ0xPU0VEU0VDVVJFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQ2FicmlvZGFjaCIsICdHZXNjaGxvc3NlbicsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC5jb252ZXJ0aWJsZVJvb2ZTdGF0ZSA9PSAnT1BFTicpeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuQ2FicmlvZGFjaCIsICdPZmZlbicsIHRydWUpOwp9IGVsc2UgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5DYWJyaW9kYWNoIiwgJ05pY2h0IHZvcmhhbmRlbicsIHRydWUpOwp9OwppZiAocmVzdWx0Lmhvb2QgPT0gJ0NMT1NFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuTW90b3JoYXViZSIsICdHZXNjaGxvc3NlbicsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC5ob29kID09ICdPUEVOJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Nb3RvcmhhdWJlIiwgJ09mZmVuJywgdHJ1ZSk7Cn0gIGVsc2UgeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuTW90b3JoYXViZSIsICcnKyByZXN1bHQuaG9vZCwgdHJ1ZSk7Cn07CmlmIChyZXN1bHQuZG9vckxvY2tTdGF0ZSA9PSAnU0VDVVJFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuVMO8cnZlcnJpZWdlbHVuZyIsICdHZXNpY2hlcnQnLCB0cnVlKTsKfSBlbHNlIGlmIChyZXN1bHQuZG9vckxvY2tTdGF0ZSA9PSAnTE9DS0VEJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Uw7xydmVycmllZ2VsdW5nIiwgJ1ZlcnJpZWdlbHQnLCB0cnVlKTsKfSAgZWxzZSBpZiAocmVzdWx0LmRvb3JMb2NrU3RhdGUgPT0gJ1VOTE9DS0VEJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Uw7xydmVycmllZ2VsdW5nIiwgJ0VudHJpZWdlbHQnLCB0cnVlKTsKfSAgZWxzZSBpZiAocmVzdWx0LmRvb3JMb2NrU3RhdGUgPT0gJ1NFTEVDVElWRV9MT0NLRUQnKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlTDvHJ2ZXJyaWVnZWx1bmciLCAnRW50cmllZ2VsdCcsIHRydWUpOwp9IGVsc2UgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Uw7xydmVycmllZ2VsdW5nIiwgJycrIHJlc3VsdC5kb29yTG9ja1N0YXRlLCB0cnVlKTsKfTsKaWYgKHJlc3VsdC5wYXJraW5nTGlnaHQgPT0gJ09GRicpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuUGFya2xldWNodGVuIiwgJ0F1cycsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC5wYXJraW5nTGlnaHQgPT0gJ09OJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5QYXJrbGV1Y2h0ZW4iLCAnQW4nLCB0cnVlKTsKfSAgZWxzZSB7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5QYXJrbGV1Y2h0ZW4iLCAnJysgcmVzdWx0LnBhcmtpbmdMaWdodCwgdHJ1ZSk7Cn07CmlmIChyZXN1bHQucG9zaXRpb25MaWdodCA9PSAnT0ZGJykgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5TdGFuZGxpY2h0IiwgJ0F1cycsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC5wb3NpdGlvbkxpZ2h0ID09ICdPTicpeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuU3RhbmRsaWNodCIsICdBbicsIHRydWUpOwp9ICBlbHNlIHsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlN0YW5kbGljaHQiLCAnJysgcmVzdWx0LnBvc2l0aW9uTGlnaHQsIHRydWUpOwp9OwppZiAocmVzdWx0Lmxhc3RDaGFyZ2luZ0VuZFJlYXNvbiA9PSAnQ0hBUkdJTkdfR09BTF9SRUFDSEVEJykgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5MZXR6dGVyIExhZGV2b3JnYW5nIEJlZW5kaWd1bmdzZ3J1bmQiLCAnTGFkZXppZWwgZXJyZWljaHQnLCB0cnVlKTsKfSBlbHNlIGlmIChyZXN1bHQubGFzdENoYXJnaW5nRW5kUmVhc29uID09ICdFTkRfUkVRVUVTVEVEX0JZX0RSSVZFUicpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuTGV0enRlciBMYWRldm9yZ2FuZyBCZWVuZGlndW5nc2dydW5kIiwgJ0R1cmNoIEZhaHJlciBiZWVuZGV0JywgdHJ1ZSk7Cn0gZWxzZSBpZiAocmVzdWx0Lmxhc3RDaGFyZ2luZ0VuZFJlYXNvbiA9PSAnVU5LTk9XTicpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuTGV0enRlciBMYWRldm9yZ2FuZyBCZWVuZGlndW5nc2dydW5kIiwgJ1VuYmVrYW5udCcsIHRydWUpOwp9ICBlbHNlIHsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkxldHp0ZXIgTGFkZXZvcmdhbmcgQmVlbmRpZ3VuZ3NncnVuZCIsICcnK3Jlc3VsdC5sYXN0Q2hhcmdpbmdFbmRSZWFzb24sIHRydWUpOwp9OwppZiAocmVzdWx0Lmxhc3RDaGFyZ2luZ0VuZFJlc3VsdCA9PSAnU1VDQ0VTUycpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuTGV0enRlciBMYWRldm9yZ2FuZyBFcmdlYm5pcyIsICdFcmZvbGdyZWljaCcsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC5sYXN0Q2hhcmdpbmdFbmRSZXN1bHQgPT0gJ1VOS05PV04nKSB7CiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkxldHp0ZXIgTGFkZXZvcmdhbmcgRXJnZWJuaXMiLCAnVW5iZWthbm50JywgdHJ1ZSk7Cn0gIGVsc2UgeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuTGV0enRlciBMYWRldm9yZ2FuZyBFcmdlYm5pcyIsICcnK3Jlc3VsdC5sYXN0Q2hhcmdpbmdFbmRSZXN1bHQsIHRydWUpOwp9OwppZiAocmVzdWx0LmNoYXJnaW5nVGltZVJlbWFpbmluZyA9PSBudWxsKSB7CiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlZlcmJsZWliZW5kZSBMYWRlemVpdCIsIDAsIHRydWUpOwp9ICBlbHNlIHsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlZlcmJsZWliZW5kZSBMYWRlemVpdCIsIHBhcnNlRmxvYXQocmVzdWx0LmNoYXJnaW5nVGltZVJlbWFpbmluZyksIHRydWUpOwp9OwppZiAocmVzdWx0LmNvbm5lY3Rpb25TdGF0dXMgPT0gJ0RJU0NPTk5FQ1RFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuVmVyYmluZHVuZ3NzdGF0dXMiLCAnTmljaHQgdmVyYnVuZGVuJywgdHJ1ZSk7Cn0gZWxzZSBpZiAocmVzdWx0LmNvbm5lY3Rpb25TdGF0dXMgPT0gJ0NPTk5FQ1RFRCcpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuVmVyYmluZHVuZ3NzdGF0dXMiLCAnVmVyYnVuZGVuJywgdHJ1ZSk7Cn0gZWxzZSB7CiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLlZlcmJpbmR1bmdzc3RhdHVzIiwgJycrcmVzdWx0LmNvbm5lY3Rpb25TdGF0dXMsIHRydWUpOwp9OwppZiAocmVzdWx0LmNoYXJnaW5nSW5kdWN0aXZlUG9zaXRpb25pbmcgPT0gJ05PVF9QT1NJVElPTkVEJykgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Qb3NpdGlvbmllcnVuZyBJbmR1a3Rpb25zbGFkdW5nIiwgJ05pY2h0IHBvc2l0aW9uaWVydCcsIHRydWUpOwp9IGVsc2UgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5Qb3NpdGlvbmllcnVuZyBJbmR1a3Rpb25zbGFkdW5nIiwgJycrcmVzdWx0LmNoYXJnaW5nSW5kdWN0aXZlUG9zaXRpb25pbmcsIHRydWUpOwp9OwppZiAocmVzdWx0LmNoYXJnaW5nU3RhdHVzID09ICdDSEFSR0lORycpIHsKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuTGFkZXN0YXR1cyIsICdMYWRlbiBha3RpdicsIHRydWUpOwp9IGVsc2UgaWYgKHJlc3VsdC5jaGFyZ2luZ1N0YXR1cyA9PSAnRVJST1InKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkxhZGVzdGF0dXMiLCAnRmVobGVyJywgdHJ1ZSk7Cn0gIGVsc2UgaWYgKHJlc3VsdC5jaGFyZ2luZ1N0YXR1cyA9PSAnRklOSVNIRURfRlVMTFlfQ0hBUkdFRCcpeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuTGFkZXN0YXR1cyIsICdWb2xsc3TDpG5kaWcgZ2VsYWRlbicsIHRydWUpOwp9ICBlbHNlIGlmIChyZXN1bHQuY2hhcmdpbmdTdGF0dXMgPT0gJ0ZJTklTSEVEX05PVF9GVUxMJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5MYWRlc3RhdHVzIiwgJ1Vudm9sbHN0w6RuZGlnIGdlbGFkZW4nLCB0cnVlKTsKfSAgZWxzZSBpZiAocmVzdWx0LmNoYXJnaW5nU3RhdHVzID09ICdJTlZBTElEJyl7IAogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5MYWRlc3RhdHVzIiwgJ1VuZ8O8bHRpZycsIHRydWUpOwp9ICBlbHNlIGlmIChyZXN1bHQuY2hhcmdpbmdTdGF0dXMgPT0gJ05PVF9DSEFSR0lORycpeyAKICBzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuTGFkZXN0YXR1cyIsICdMYWRlbiBpbmFrdGl2JywgdHJ1ZSk7Cn0gIGVsc2UgaWYgKHJlc3VsdC5jaGFyZ2luZ1N0YXR1cyA9PSAnV0FJVElOR19GT1JfQ0hBUkdJTkcnKXsgCiAgc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkxhZGVzdGF0dXMiLCAnV2FydGUgYXVmIExhZGVzdGFydCcsIHRydWUpOwp9IGVsc2UgewogIHNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5MYWRlc3RhdHVzIiwgJycrcmVzdWx0LmNoYXJnaW5nU3RhdHVzLCB0cnVlKTsKfTsKCgovL3NldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlNlcnZpY2ViZWRhcmYuSGF1cHR1bnRlcnN1Y2h1bmcuRGF0dW0iLCAnJytyZXN1bHQuY2JzRGF0YVsxXS5jYnNEdWVEYXRlLCB0cnVlKTsKLy9zZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLkhhdXB0dW50ZXJzdWNodW5nLlN0YXR1cyIsICcnK3Jlc3VsdC5jYnNEYXRhWzFdLmNic1N0YXRlLCB0cnVlKTsKLy9jYnNEYXRhIApzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLkZhaHJ6ZXVnY2hlY2suRGF0dW0iLCAnJytyZXN1bHQuY2JzRGF0YVsxXS5jYnNEdWVEYXRlLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5GYWhyemV1Z2NoZWNrLlN0YXR1cyIsICcnK3Jlc3VsdC5jYnNEYXRhWzFdLmNic1N0YXRlLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi5GYWhyemV1Z2NoZWNrLlZlcmJsZWliZW5kZSBrbSIsIHBhcnNlRmxvYXQocmVzdWx0LmNic0RhdGFbMV0uY2JzUmVtYWluaW5nTWlsZWFnZSksIHRydWUpOwovL2Nic0RBVEEgMQpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLkJyZW1zZmzDvHNzaWdrZWl0LkRhdHVtIiwgJycrcmVzdWx0LmNic0RhdGFbMl0uY2JzRHVlRGF0ZSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlNlcnZpY2ViZWRhcmYuQnJlbXNmbMO8c3NpZ2tlaXQuU3RhdHVzIiwgJycrcmVzdWx0LmNic0RhdGFbMl0uY2JzU3RhdGUsIHRydWUpOwovL2NiZERBVEEgMApzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TZXJ2aWNlYmVkYXJmLsOWbHNlcnZpY2UuRGF0dW0iLCAnJytyZXN1bHQuY2JzRGF0YVswXS5jYnNEdWVEYXRlLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi7DlmxzZXJ2aWNlLlN0YXR1cyIsICcnK3Jlc3VsdC5jYnNEYXRhWzBdLmNic1N0YXRlLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU2VydmljZWJlZGFyZi7DlmxzZXJ2aWNlLlZlcmJsZWliZW5kZSBrbSIsIHBhcnNlRmxvYXQocmVzdWx0LmNic0RhdGFbMF0uY2JzUmVtYWluaW5nTWlsZWFnZSksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuS2lsb21ldGVyc3RhbmQiLCBwYXJzZUZsb2F0KHJlc3VsdC5taWxlYWdlKSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5LcmFmdHN0b2Zmc3RhbmQgTGl0ZXIiLCBwYXJzZUZsb2F0KHJlc3VsdC5yZW1haW5pbmdGdWVsKSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5MYWRlenVzdGFuZCBrbSIsIHBhcnNlRmxvYXQocmVzdWx0LnJlbWFpbmluZ1JhbmdlRWxlY3RyaWMpLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLktvbWJpbmllcnRlIFJlaWNod2VpdGUiLCBwYXJzZUZsb2F0KHJlc3VsdC5yZW1haW5pbmdSYW5nZUZ1ZWwpLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLktyYWZ0c3RvZmZzdGFuZCAlIiwgcGFyc2VGbG9hdChyZXN1bHQuZnVlbFBlcmNlbnQpLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkxhZGV6dXN0YW5kICUiLCBwYXJzZUZsb2F0KHJlc3VsdC5jaGFyZ2luZ0xldmVsSHYpLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhbmRvcnQuQnJlaXRlbmdyYWQiLCBwYXJzZUZsb2F0KHJlc3VsdC5wb3NpdGlvbi5sYXQpLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhbmRvcnQuTMOkbmdlbmdyYWQiLCBwYXJzZUZsb2F0KHJlc3VsdC5wb3NpdGlvbi5sb24pLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhbmRvcnQuUmljaHR1bmciLCBwYXJzZUZsb2F0KHJlc3VsdC5wb3NpdGlvbi5oZWFkaW5nKSwgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YW5kb3J0LlN0YXR1cyIsICcnK3Jlc3VsdC5wb3NpdGlvbi5zdGF0dXMsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGFuZG9ydC5Hb29nbGUgTWFwcyIsICdodHRwczovL3d3dy5nb29nbGUuY29tL21hcHMvZGlyL2hvbWUvJysoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhbmRvcnQuQnJlaXRlbmdyYWQiKS52YWwpKycsJysoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhbmRvcnQuTMOkbmdlbmdyYWQiKS52YWwpKycvQD9obD1kZScsIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5TdGF0dXMuRWlubWFsaWdlIFNvZm9ydGxhZHVuZyIsIHJlc3VsdC5zaW5nbGVJbW1lZGlhdGVDaGFyZ2luZywgdHJ1ZSk7CnNldFN0YXRlKCIwX3VzZXJkYXRhLjAuQk1XLlN0YXR1cy5MYWRldmVyYmluZHVuZyIsICcnK3Jlc3VsdC5jaGFyZ2luZ0Nvbm5lY3Rpb25UeXBlLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuU3RhdHVzLkNoZWNrIENvbnRyb2wgTWVsZHVuZyIsICcnK3Jlc3VsdC5jaGVja0NvbnRyb2xNZXNzYWdlc1swXSwgdHJ1ZSk7CgovL2NvbnNvbGUubG9nKHJlc3VsdC5kb29yTG9ja1N0YXRlKTsKCn07CnJlcXVlc3QuZ2V0KG9wdGlvbnMsIGNhbGxiYWNrKTsK</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="Ryywje#7IoGUwl?[YLYR"></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>
            

            Gruß Rookie

            H Bernd 0B 2 Replies Last reply
            1
            • S stenmic

              @strobelix super Arbeit, Danke!
              Leider kommt bei mir auch dieser Feher im Log (3er touring 2020)

              Image 079.jpg

              Die "Befehle" funktionieren.
              "Farzeug" und "Händler" werden angezeigt.
              Beim "Servicebedarf" und "Standort" sind keine Einträge vorhanden.
              Der "Status" wird nur zur Hälfte befüllt. (Kilometerangaben und Kraftstoff fehlen)

              Hast du eine Idee?

              R Offline
              R Offline
              Rookie50
              wrote on last edited by
              #256

              @stenmic dann stimmt die Nummerierung der empfangenen cbsData Einträge nicht mit den Abfragen des Scriptes überein, hier ein Beispiel:

              In der Javascript Funktion "Status abfragen"

              869e82cc-8337-4b09-a33c-caec869543f7-image.png

              Du musst den Output des json checken und die Nummern in den eckigen Klammern anpassen.

              Gruß

              S 1 Reply Last reply
              1
              • R Rookie50

                @stenmic dann stimmt die Nummerierung der empfangenen cbsData Einträge nicht mit den Abfragen des Scriptes überein, hier ein Beispiel:

                In der Javascript Funktion "Status abfragen"

                869e82cc-8337-4b09-a33c-caec869543f7-image.png

                Du musst den Output des json checken und die Nummern in den eckigen Klammern anpassen.

                Gruß

                S Do not disturb
                S Do not disturb
                stenmic
                wrote on last edited by stenmic
                #257

                @rookie50 danke, hat geklappt.
                Die HU war bei mir auch der Grund.

                1 Reply Last reply
                0
                • W Offline
                  W Offline
                  wohlstandskind2711
                  wrote on last edited by
                  #258

                  Hallo zusammen,
                  im neuen Portal gibt es keine Sicherheitsabfrage mehr, gibt es da Abhilfe?

                  bahnuhrB 1 Reply Last reply
                  0
                  • W wohlstandskind2711

                    Hallo zusammen,
                    im neuen Portal gibt es keine Sicherheitsabfrage mehr, gibt es da Abhilfe?

                    bahnuhrB Online
                    bahnuhrB Online
                    bahnuhr
                    Forum Testing Most Active
                    wrote on last edited by
                    #259

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

                    Hallo zusammen,
                    im neuen Portal gibt es keine Sicherheitsabfrage mehr, gibt es da Abhilfe?

                    doch gibt es!
                    https://forum.iobroker.net/topic/7457/adapter-bmw-zum-auslesen-von-bmw-s-connecteddrive-daten/190?_=1616526948976


                    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

                    W 1 Reply Last reply
                    0
                    • bahnuhrB bahnuhr

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

                      Hallo zusammen,
                      im neuen Portal gibt es keine Sicherheitsabfrage mehr, gibt es da Abhilfe?

                      doch gibt es!
                      https://forum.iobroker.net/topic/7457/adapter-bmw-zum-auslesen-von-bmw-s-connecteddrive-daten/190?_=1616526948976

                      W Offline
                      W Offline
                      wohlstandskind2711
                      wrote on last edited by
                      #260

                      @bahnuhr
                      altes Portal, gugg mal nach....

                      bahnuhrB 1 Reply Last reply
                      0
                      • W wohlstandskind2711

                        @bahnuhr
                        altes Portal, gugg mal nach....

                        bahnuhrB Online
                        bahnuhrB Online
                        bahnuhr
                        Forum Testing Most Active
                        wrote on last edited by
                        #261

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

                        @bahnuhr
                        altes Portal, gugg mal nach....

                        ja, scheinst recht zu haben.

                        Ich sehe bei bmw gar nichts mehr. Kein remote, etc.
                        Mir werden nur angebote angezeigt.
                        Und was ich gebucht habe.


                        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

                        W 1 Reply Last reply
                        0
                        • bahnuhrB bahnuhr

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

                          @bahnuhr
                          altes Portal, gugg mal nach....

                          ja, scheinst recht zu haben.

                          Ich sehe bei bmw gar nichts mehr. Kein remote, etc.
                          Mir werden nur angebote angezeigt.
                          Und was ich gebucht habe.

                          W Offline
                          W Offline
                          wohlstandskind2711
                          wrote on last edited by
                          #262

                          @bahnuhr
                          Arbeite bei BMW, Remotebefehle gehen nur noch über die APP. Im Portal soll das wohl ab sofort nicht mehr gehen....

                          bahnuhrB H 2 Replies Last reply
                          0
                          • W wohlstandskind2711

                            @bahnuhr
                            Arbeite bei BMW, Remotebefehle gehen nur noch über die APP. Im Portal soll das wohl ab sofort nicht mehr gehen....

                            bahnuhrB Online
                            bahnuhrB Online
                            bahnuhr
                            Forum Testing Most Active
                            wrote on last edited by
                            #263

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

                            @bahnuhr
                            Arbeite bei BMW, Remotebefehle gehen nur noch über die APP. Im Portal soll das wohl ab sofort nicht mehr gehen....

                            Ok,
                            dann stellt sich aber wirklich die Frage wo man dieses Sicherheitsabfrage dann eingibt.


                            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 Reply Last reply
                            0
                            • W wohlstandskind2711

                              @bahnuhr
                              Arbeite bei BMW, Remotebefehle gehen nur noch über die APP. Im Portal soll das wohl ab sofort nicht mehr gehen....

                              H Offline
                              H Offline
                              HansDampf1969
                              wrote on last edited by HansDampf1969
                              #264

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

                              Arbeite bei BMW, Remotebefehle gehen nur noch über die APP. Im Portal soll das wohl ab sofort nicht mehr gehen....

                              Hallo Wohlstandskind2711,
                              was wird denn zukünftig überhaupt noch möglich sein, denn dieser ich nenne es einmal Umbau auf das ach so tolle "myBMW" verfolgt ja ein bestimmtes Ziel.

                              Ob dieses "Ziel" von BMW, unseren Ansprüchen weiterhin Daten vom BMW Server zu erhalten entspricht, wäre doch die entscheidende Frage die sicherlich alle hier interessiert?

                              Kurz gesagt, will man den Kunden zukünftig aussperren oder die Informationen die bisher erhältlich waren deutlich beschneiden ooooooder uns noch mehr Einblicke gewähren (das halte ich aber für sehr unwahrscheinlich)?

                              1 Reply Last reply
                              0
                              • S Strobelix

                                @qwertz
                                Ich nutze beide Apps um zu Vergleichen, aber die aktuelle Api gilt für beide Apps.

                                Sollte also hoffentlich jetzt erst mal so bleiben.
                                Manche Modelle reagieren aber noch auf die alte API. Keiner weiss warum und bis zu welchem Modell

                                H Offline
                                H Offline
                                HansDampf1969
                                wrote on last edited by
                                #265

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

                                @qwertz
                                Ich nutze beide Apps um zu Vergleichen, aber die aktuelle Api gilt für beide Apps.

                                was bedeutet denn "aktuelle API", gibt es dazu nun von BMW eine offizielle Veröffentlichung?

                                Ich dachte bisher hat man die Zugänge Rückwärts über die BMW connected Drive Webseite ermittelt, was ja nun durch das Abschalten und die Umstellung auf die "APP" Zugänge nicht mehr möglich sein wird.

                                1 Reply Last reply
                                0
                                • L Offline
                                  L Offline
                                  lolax
                                  wrote on last edited by
                                  #266

                                  Hallo zusammen,
                                  kann man irgendwie mit dem Adapter auslesen wieviel kWh bei der letzten Ladung ins Auto gegangen sind?
                                  In der BMW App sieht man es, daher sollte es ja eigentlich auch so einen Datenpunkt geben können.

                                  Mit freundlichen Grüßen
                                  Lolax

                                  E 1 Reply Last reply
                                  0
                                  • L lolax

                                    Hallo zusammen,
                                    kann man irgendwie mit dem Adapter auslesen wieviel kWh bei der letzten Ladung ins Auto gegangen sind?
                                    In der BMW App sieht man es, daher sollte es ja eigentlich auch so einen Datenpunkt geben können.

                                    Mit freundlichen Grüßen
                                    Lolax

                                    E Offline
                                    E Offline
                                    elgander
                                    wrote on last edited by
                                    #267

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

                                    Hallo zusammen,
                                    kann man irgendwie mit dem Adapter auslesen wieviel kWh bei der letzten Ladung ins Auto gegangen sind?
                                    In der BMW App sieht man es, daher sollte es ja eigentlich auch so einen Datenpunkt geben können.

                                    Mit freundlichen Grüßen
                                    Lolax

                                    Ich denke schon, das es möglich ist. Ich habe leider kein E-Auto und kann es nicht genau sagen. Bei Audi ist das jedenfalls möglich.
                                    siehe hier: https://forum.iobroker.net/assets/uploads/files/1610565202047-audi.jpg

                                    Vielleicht kann ja mal jemand sein View vom BMW-Adapter hier zur Verfügung stellen.

                                    1 Reply Last reply
                                    0
                                    • 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

                                      E Offline
                                      E Offline
                                      elgander
                                      wrote on last edited by
                                      #268

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

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

                                      Hallo Dieter,
                                      hast du vielleicht eine Idee, wie ich die Ausgabe vom BMW Adapter im View auf deutsch übersetzen kann und je nach Zustand farblich darstellen? @Glasfaser hat das für Audi mit dem ValueList HTML Style gelöst, allerdings erfolgt die Ausgabe bei Audi als Zahlenwert und nicht als Text.
                                      7a59778f-7673-4148-9a90-bf87fa112280-image.png

                                      bahnuhrB 2 Replies Last reply
                                      0
                                      • E elgander

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

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

                                        Hallo Dieter,
                                        hast du vielleicht eine Idee, wie ich die Ausgabe vom BMW Adapter im View auf deutsch übersetzen kann und je nach Zustand farblich darstellen? @Glasfaser hat das für Audi mit dem ValueList HTML Style gelöst, allerdings erfolgt die Ausgabe bei Audi als Zahlenwert und nicht als Text.
                                        7a59778f-7673-4148-9a90-bf87fa112280-image.png

                                        bahnuhrB Online
                                        bahnuhrB Online
                                        bahnuhr
                                        Forum Testing Most Active
                                        wrote on last edited by
                                        #269

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

                                        Hallo Dieter,
                                        hast du vielleicht eine Idee, wie ich die Ausgabe vom BMW Adapter im View auf deutsch übersetzen kann

                                        Ja,
                                        jqui - select valuelist
                                        ist die Lösung


                                        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 Reply Last reply
                                        0
                                        • E elgander

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

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

                                          Hallo Dieter,
                                          hast du vielleicht eine Idee, wie ich die Ausgabe vom BMW Adapter im View auf deutsch übersetzen kann und je nach Zustand farblich darstellen? @Glasfaser hat das für Audi mit dem ValueList HTML Style gelöst, allerdings erfolgt die Ausgabe bei Audi als Zahlenwert und nicht als Text.
                                          7a59778f-7673-4148-9a90-bf87fa112280-image.png

                                          bahnuhrB Online
                                          bahnuhrB Online
                                          bahnuhr
                                          Forum Testing Most Active
                                          wrote on last edited by
                                          #270

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

                                          je nach Zustand farblich darstellen?

                                          Und da ein binding


                                          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

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          633

                                          Online

                                          32.7k

                                          Users

                                          82.5k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe