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

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

Community Forum

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

NEWS

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

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

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

Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
305 Beiträge 49 Kommentatoren 74.4k Aufrufe 27 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • OstfrieseUnterwegsO OstfrieseUnterwegs

    @bahnuhr Die Buttons sind bei mir seit einiger Zeit gar nicht mehr da. Und auch direkt in der BMW App (Android) fehlen einige Funktionen: Ich kann die Standheizung nicht mehr programmieren (Start geht noch). Lichthupe geht , Hupe ist nicht mehr vorhanden. Ich nehme an, dass BMW da das API geändert hat.

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

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

    Ich nehme an, dass BMW da das API geändert hat.

    Ja, das habe ich ja oben geschrieben.
    Aber leider antwortet @frankjoke hier nicht und auch nicht auf issue.


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

    S 1 Antwort Letzte Antwort
    0
    • bahnuhrB bahnuhr

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

      Ich nehme an, dass BMW da das API geändert hat.

      Ja, das habe ich ja oben geschrieben.
      Aber leider antwortet @frankjoke hier nicht und auch nicht auf issue.

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

      Hallo,

      ich kann zwar den Adapter nicht umprogrammieren, hab aber die neue Remote Execution API als Blockly gebaut. Wenn ihr also die Remote Funktionen nutzen wollt, könnt ihr das hier gern kopieren. Habe die API bei IPSymcom gefunden und mal quick&dirty in Javascript umgebaut.

      Es sind zwei Blocklys. Das erste legt die Datenpunkte an und holt stündlich einen neuen Token, das zweite Blockly stellt die Befehle zur Verfügung.

      Hier das erste Blockly "Login"
      Ihr müsst hier euer Zugangsdaten user/pass in die Javascriptfunktion "Token abfragen" eingeben.
      Die Felder dazu sind gekennzeichnet:

      <xml xmlns="https://developers.google.com/blockly/xml">
        <block type="procedures_defcustomnoreturn" id="C|Hc:`b-c/c[Tgs1y:IM" x="12" y="-338">
          <mutation statements="false"></mutation>
          <field name="NAME">Token abfragen</field>
          <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3VzZXJuYW1lJzogJ01BSUxBRFJFU1NFIEVJTkdFQkVOJywgLypIaWVyIGRpZSBNYWlsYWRyZXNzZSBlaW5nZWJlbiovCiAgICAncGFzc3dvcmQnOiAnUEFTU1dPUlQgRUlOR0VCRU4nLCAvKkhpZXIgZGFzIFBhc3N3b3J0IGVpbmdlYmVuKi8KICAgICdncmFudF90eXBlJzogJ3Bhc3N3b3JkJywKICAgICdzY29wZSc6J2F1dGhlbnRpY2F0ZV91c2VyIHZlaGljbGVfZGF0YSByZW1vdGVfc2VydmljZXMnCn07CiAKdmFyIGZvcm1Cb2R5ID0gW107CmZvciAodmFyIHByb3BlcnR5IGluIGRldGFpbHMpIHsKICB2YXIgZW5jb2RlZEtleSA9IGVuY29kZVVSSUNvbXBvbmVudChwcm9wZXJ0eSk7CiAgdmFyIGVuY29kZWRWYWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChkZXRhaWxzW3Byb3BlcnR5XSk7CiAgZm9ybUJvZHkucHVzaChlbmNvZGVkS2V5ICsgIj0iICsgZW5jb2RlZFZhbHVlKTsKfQpmb3JtQm9keSA9IGZvcm1Cb2R5LmpvaW4oIiYiKTsKCgogdmFyIG9wdGlvbnMgPSB7CiAgdXJsOiAnaHR0cHM6Ly9iMnZhcGkuYm13Z3JvdXAuY29tL2djZG0vb2F1dGgvdG9rZW4nLAogIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsICdBdXRob3JpemF0aW9uJzogJ0Jhc2ljIFpEYzJObUkxTXpjdFlUWTFOQzAwWTJKa0xXRXpaR010TUdOaE5UWTNNbVEzWmpoa09qRTFaalk1TjJZMkxXRTFaRFV0TkdOaFpDMDVPV1E1TFROaE1UVmlZemRtTXprM013PT0nLCAnQ3JlZGVudGlhbHMnOiAnblF2NkNxdHhKdVhXUDc0eGYzQ0p3VUVQOjF6REh4NnVuNGNEanliTEVOTjNreWZ1bVgya0VZaWdXUGNRcGR2RFJwSUJrN3JPSid9LAogIGJvZHk6IGZvcm1Cb2R5Cn07CiAKZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlLCBib2R5KSB7CnZhciByZXN1bHQgPSBKU09OLnBhcnNlKGJvZHkpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIvKlRva2VuKi8sICgnJyArIHJlc3VsdC5hY2Nlc3NfdG9rZW4pKTsKfQogIApyZXF1ZXN0LnBvc3Qob3B0aW9ucywgY2FsbGJhY2spOw==</field>
          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
        </block>
        <block type="create" id="!Bqw.`_nnd;$sm~A@{Q3" x="437" y="-338">
          <field name="NAME">0_userdata.0.BMW.NeuerToken</field>
          <value name="COMMON">
            <block type="text" id="!:1H2(OE_?WjY60~:*g0">
              <field name="TEXT">{"name": "NeuerToken","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
            </block>
          </value>
          <next>
            <block type="create" id="13]PXp{s02GRS^2rU@5p">
              <field name="NAME">0_userdata.0.BMW.Token</field>
              <value name="COMMON">
                <block type="text" id="{i=WwB;}YuxwEcmD6j)/">
                  <field name="TEXT">{"name": "Token","role": "","type": "string","desc": "Manuell erzeugt","def": "","read": true,"write": true}</field>
                </block>
              </value>
              <next>
                <block type="create" id="+F7.+]A.3oWYgBO;o3l@">
                  <field name="NAME">0_userdata.0.BMW.Klimatisieren</field>
                  <value name="COMMON">
                    <block type="text" id="/Ls,.mwrB1gtt4n,OtP?">
                      <field name="TEXT">{"name": "Klimatisieren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                    </block>
                  </value>
                  <next>
                    <block type="create" id="9+lYiXoKcCC}@ra33swp">
                      <field name="NAME">0_userdata.0.BMW.Hupen</field>
                      <value name="COMMON">
                        <block type="text" id="u:n1k-I|L=F=8?JMe!(l">
                          <field name="TEXT">{"name": "Hupen","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                        </block>
                      </value>
                      <next>
                        <block type="create" id="5x9-eg*nuFpH[i2~aI4g">
                          <field name="NAME">0_userdata.0.BMW.Aufsperren</field>
                          <value name="COMMON">
                            <block type="text" id="vGXV2B#+A==u5HFC!tRT">
                              <field name="TEXT">{"name": "Aufsperren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                            </block>
                          </value>
                          <next>
                            <block type="create" id="qfuj7fsIN;X0S`.s~:/1">
                              <field name="NAME">0_userdata.0.BMW.Zusperren</field>
                              <value name="COMMON">
                                <block type="text" id="lG?k08n8yap6EBCwv;kF">
                                  <field name="TEXT">{"name": "Zusperren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                </block>
                              </value>
                              <next>
                                <block type="create" id="g27XDJ5cUzQMp;IDa?0V">
                                  <field name="NAME">0_userdata.0.BMW.Lichthupe</field>
                                  <value name="COMMON">
                                    <block type="text" id="%#XQ;ro0{u(B56z26$C@">
                                      <field name="TEXT">{"name": "Lichthupe","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                    </block>
                                  </value>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </next>
        </block>
        <block type="on" id=")QODy$[H-(7lc9HPc%Xx" x="12" y="-263">
          <field name="OID">0_userdata.0.BMW.NeuerToken</field>
          <field name="CONDITION">any</field>
          <field name="ACK_CONDITION">false</field>
          <statement name="STATEMENT">
            <block type="controls_if" id="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="Token abfragen"></mutation>
                </block>
              </statement>
            </block>
          </statement>
          <next>
            <block type="schedule" id="6.1-pU|?K[LZXvgI}cvN">
              <field name="SCHEDULE">*/60 * * * *</field>
              <statement name="STATEMENT">
                <block type="procedures_callcustomnoreturn" id="S_QWZ%P:XPQ1H8HWO%9)">
                  <mutation name="Token abfragen"></mutation>
                </block>
              </statement>
              <next>
                <block type="procedures_callcustomnoreturn" id="sCCxQw~6kxo3.d^m)Pp-">
                  <mutation name="Token abfragen"></mutation>
                </block>
              </next>
            </block>
          </next>
        </block>
      </xml>
      

      Und hier das zweite Blockly "Befehle"
      Hier müsst ihr eure VIN (Fahrgestellnummer) in ALLE Javascriptfunktionen eintragen.
      Bei "Aufsperren" müsst ihr ganz oben zusätzlich die Sicherheitsantwort aus dem BMW Portal angeben.

      <xml xmlns="https://developers.google.com/blockly/xml">
        <block type="on" id=")QODy$[H-(7lc9HPc%Xx" x="13" y="-287">
          <field name="OID">0_userdata.0.BMW.Klimatisieren</field>
          <field name="CONDITION">any</field>
          <field name="ACK_CONDITION">false</field>
          <statement name="STATEMENT">
            <block type="controls_if" id="qi2OU5y9AjO|pE1=!(W`">
              <value name="IF0">
                <block type="on_source" id="]6?RDB6_qbNs}FH@FT/5">
                  <field name="ATTR">state.val</field>
                </block>
              </value>
              <statement name="DO0">
                <block type="procedures_callcustomnoreturn" id="DC)Em1Ehbz1LW6fj[K!7">
                  <mutation name="Klimatisieren"></mutation>
                  <next>
                    <block type="update" id="?@kSoXR52NIAnmTbP@is">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                      <field name="OID">0_userdata.0.BMW.Klimatisieren</field>
                      <field name="WITH_DELAY">TRUE</field>
                      <field name="DELAY_MS">1000</field>
                      <field name="UNIT">ms</field>
                      <field name="CLEAR_RUNNING">FALSE</field>
                      <value name="VALUE">
                        <block type="logic_boolean" id="K/F}wA*$n:5CnQHpYr@$">
                          <field name="BOOL">FALSE</field>
                        </block>
                      </value>
                    </block>
                  </next>
                </block>
              </statement>
            </block>
          </statement>
          <next>
            <block type="on" id="DO.4#e50zzBReVkXk5yb">
              <field name="OID">0_userdata.0.BMW.Zusperren</field>
              <field name="CONDITION">any</field>
              <field name="ACK_CONDITION">false</field>
              <statement name="STATEMENT">
                <block type="controls_if" id="OiM7;RsdIpMs*67U$W1}">
                  <value name="IF0">
                    <block type="on_source" id="DUggLU3jpKTMWDwchY@Q">
                      <field name="ATTR">state.val</field>
                    </block>
                  </value>
                  <statement name="DO0">
                    <block type="procedures_callcustomnoreturn" id="hY^fO{SGL}0AzHm[W~Fl">
                      <mutation name="Zusperren"></mutation>
                      <next>
                        <block type="update" id="9rlPG|IAAhKHcZ|+99|z">
                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                          <field name="OID">0_userdata.0.BMW.Zusperren</field>
                          <field name="WITH_DELAY">TRUE</field>
                          <field name="DELAY_MS">1000</field>
                          <field name="UNIT">ms</field>
                          <field name="CLEAR_RUNNING">FALSE</field>
                          <value name="VALUE">
                            <block type="logic_boolean" id="0,a9ZN|M|PkAi}n*T19O">
                              <field name="BOOL">FALSE</field>
                            </block>
                          </value>
                        </block>
                      </next>
                    </block>
                  </statement>
                </block>
              </statement>
              <next>
                <block type="on" id="Mt2*}WFoiR5--row2T8H">
                  <field name="OID">0_userdata.0.BMW.Aufsperren</field>
                  <field name="CONDITION">any</field>
                  <field name="ACK_CONDITION">false</field>
                  <statement name="STATEMENT">
                    <block type="controls_if" id="1tfzyj?EGI~c[$sfM,=H">
                      <value name="IF0">
                        <block type="on_source" id="L-qx[QjgE7YK^@QoxL?s">
                          <field name="ATTR">state.val</field>
                        </block>
                      </value>
                      <statement name="DO0">
                        <block type="procedures_callcustomnoreturn" id="n,S8U%3H3QzLAxik#m6U">
                          <mutation name="Aufsperren"></mutation>
                          <next>
                            <block type="update" id="!W;+jZdtO4Z$.N{oZ!~u">
                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                              <field name="OID">0_userdata.0.BMW.Aufsperren</field>
                              <field name="WITH_DELAY">TRUE</field>
                              <field name="DELAY_MS">1000</field>
                              <field name="UNIT">ms</field>
                              <field name="CLEAR_RUNNING">FALSE</field>
                              <value name="VALUE">
                                <block type="logic_boolean" id="i7H=1Q%)]bTWwtb,mZL^">
                                  <field name="BOOL">FALSE</field>
                                </block>
                              </value>
                            </block>
                          </next>
                        </block>
                      </statement>
                    </block>
                  </statement>
                  <next>
                    <block type="on" id="x3sA~Bo,9#W8+0QQ4?Mk">
                      <field name="OID">0_userdata.0.BMW.Lichthupe</field>
                      <field name="CONDITION">any</field>
                      <field name="ACK_CONDITION">false</field>
                      <statement name="STATEMENT">
                        <block type="controls_if" id="g^t/])A_OBmH:}D:7hx1">
                          <value name="IF0">
                            <block type="on_source" id="Qk9]ZT(6`yuT9IJ1mS#h">
                              <field name="ATTR">state.val</field>
                            </block>
                          </value>
                          <statement name="DO0">
                            <block type="procedures_callcustomnoreturn" id="KVXZu3,oTqe$DHeLgS{e">
                              <mutation name="Lichthupe"></mutation>
                              <next>
                                <block type="update" id="8viE(:=_WA,IPGi~+0MV">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                  <field name="OID">0_userdata.0.BMW.Lichthupe</field>
                                  <field name="WITH_DELAY">TRUE</field>
                                  <field name="DELAY_MS">1000</field>
                                  <field name="UNIT">ms</field>
                                  <field name="CLEAR_RUNNING">FALSE</field>
                                  <value name="VALUE">
                                    <block type="logic_boolean" id="3KW3b{O(!n=5:mg(M_Wv">
                                      <field name="BOOL">FALSE</field>
                                    </block>
                                  </value>
                                </block>
                              </next>
                            </block>
                          </statement>
                        </block>
                      </statement>
                      <next>
                        <block type="on" id=".`HU#5P7{T)o:1xn*a/?">
                          <field name="OID">0_userdata.0.BMW.Hupen</field>
                          <field name="CONDITION">any</field>
                          <field name="ACK_CONDITION">false</field>
                          <statement name="STATEMENT">
                            <block type="controls_if" id="Qrr/!E+TuG7Gq66FQA;5">
                              <value name="IF0">
                                <block type="on_source" id="mvXJMfS$OdG+L~5/z^rY">
                                  <field name="ATTR">state.val</field>
                                </block>
                              </value>
                              <statement name="DO0">
                                <block type="procedures_callcustomnoreturn" id="Gi$6[_*-6XPaypdt!S%S">
                                  <mutation name="Hupen"></mutation>
                                  <next>
                                    <block type="update" id="GWaADA}?}4ONL*[A[7Fi">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                      <field name="OID">0_userdata.0.BMW.Hupen</field>
                                      <field name="WITH_DELAY">TRUE</field>
                                      <field name="DELAY_MS">1000</field>
                                      <field name="UNIT">ms</field>
                                      <field name="CLEAR_RUNNING">FALSE</field>
                                      <value name="VALUE">
                                        <block type="logic_boolean" id="f^.-6^1JVE#^ag9aE_/X">
                                          <field name="BOOL">FALSE</field>
                                        </block>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                            </block>
                          </statement>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </next>
        </block>
        <block type="procedures_defcustomnoreturn" id="C|Hc:`b-c/c[Tgs1y:IM" x="263" y="-287">
          <mutation statements="false"></mutation>
          <field name="NAME">Klimatisieren</field>
          <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0NMSU1BVEVfTk9XJwp9OwogCnZhciBmb3JtQm9keSA9IFtdOwpmb3IgKHZhciBwcm9wZXJ0eSBpbiBkZXRhaWxzKSB7CiAgdmFyIGVuY29kZWRLZXkgPSBlbmNvZGVVUklDb21wb25lbnQocHJvcGVydHkpOwogIHZhciBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQoZGV0YWlsc1twcm9wZXJ0eV0pOwogIGZvcm1Cb2R5LnB1c2goZW5jb2RlZEtleSArICI9IiArIGVuY29kZWRWYWx1ZSk7Cn0KZm9ybUJvZHkgPSBmb3JtQm9keS5qb2luKCImIik7CgoKIHZhciBvcHRpb25zID0gewogIHVybDogJ2h0dHBzOi8vYjJ2YXBpLmJtd2dyb3VwLmNvbS93ZWJhcGkvdjEvdXNlci92ZWhpY2xlcy9WSU4vZXhlY3V0ZVNlcnZpY2UnLCAvKkhpZXIgVklOIG1pdCBldXJlciBWSU4gZXJzZXR6dGVuKi8KICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfSwKICBhdXRoOiB7CiAgICBiZWFyZXI6IChnZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIpLnZhbCl9LAogIGJvZHk6IGZvcm1Cb2R5Cn07CgpmdW5jdGlvbiBjYWxsYmFjayhlcnJvciwgcmVzcG9uc2UsIGJvZHkpIHsKdmFyIHJlc3VsdCA9IEpTT04ucGFyc2UoYm9keSk7Ci8qY29uc29sZS5sb2cocmVzdWx0KSovCn0KCgpyZXF1ZXN0LnBvc3Qob3B0aW9ucywgY2FsbGJhY2spOw==</field>
          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
        </block>
        <block type="procedures_defcustomnoreturn" id="[nCTA52$4Wk}$Z+;/Ybc" x="263" y="-62">
          <mutation statements="false"></mutation>
          <field name="NAME">Zusperren</field>
          <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0RPT1JfTE9DSycKfTsKIAp2YXIgZm9ybUJvZHkgPSBbXTsKZm9yICh2YXIgcHJvcGVydHkgaW4gZGV0YWlscykgewogIHZhciBlbmNvZGVkS2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KHByb3BlcnR5KTsKICB2YXIgZW5jb2RlZFZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KGRldGFpbHNbcHJvcGVydHldKTsKICBmb3JtQm9keS5wdXNoKGVuY29kZWRLZXkgKyAiPSIgKyBlbmNvZGVkVmFsdWUpOwp9CmZvcm1Cb2R5ID0gZm9ybUJvZHkuam9pbigiJiIpOwoKCiB2YXIgb3B0aW9ucyA9IHsKICB1cmw6ICdodHRwczovL2IydmFwaS5ibXdncm91cC5jb20vd2ViYXBpL3YxL3VzZXIvdmVoaWNsZXMvVklOL2V4ZWN1dGVTZXJ2aWNlJywgLypIaWVyIFZJTiBtaXQgZXVyZXIgVklOIGVyc2V0enRlbiovCiAgaGVhZGVyczogeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ30sCiAgYXV0aDogewogICAgYmVhcmVyOiAoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iKS52YWwpfSwKICBib2R5OiBmb3JtQm9keQp9OwoKZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlLCBib2R5KSB7CnZhciByZXN1bHQgPSBKU09OLnBhcnNlKGJvZHkpOwovKmNvbnNvbGUubG9nKHJlc3VsdCkqLwp9CgoKcmVxdWVzdC5wb3N0KG9wdGlvbnMsIGNhbGxiYWNrKTs=</field>
          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
        </block>
        <block type="procedures_defcustomnoreturn" id="J)0OO1_$ZW[Tc_/ko95F" x="263" y="188">
          <mutation statements="false"></mutation>
          <field name="NAME">Aufsperren</field>
          <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0RPT1JfVU5MT0NLJywKICAgICdibXdTa0Fuc3dlcic6ICdTaWNoZXJoZWl0c2FudHdvcnQnIC8qSGllciBldXJlIFNpY2hlcmhlaXRzYW50d29ydCBlaW5nZWJlbiovCn07CiAKdmFyIGZvcm1Cb2R5ID0gW107CmZvciAodmFyIHByb3BlcnR5IGluIGRldGFpbHMpIHsKICB2YXIgZW5jb2RlZEtleSA9IGVuY29kZVVSSUNvbXBvbmVudChwcm9wZXJ0eSk7CiAgdmFyIGVuY29kZWRWYWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChkZXRhaWxzW3Byb3BlcnR5XSk7CiAgZm9ybUJvZHkucHVzaChlbmNvZGVkS2V5ICsgIj0iICsgZW5jb2RlZFZhbHVlKTsKfQpmb3JtQm9keSA9IGZvcm1Cb2R5LmpvaW4oIiYiKTsKCgogdmFyIG9wdGlvbnMgPSB7CiAgIHVybDogJ2h0dHBzOi8vYjJ2YXBpLmJtd2dyb3VwLmNvbS93ZWJhcGkvdjEvdXNlci92ZWhpY2xlcy9WSU4vZXhlY3V0ZVNlcnZpY2UnLCAvKkhpZXIgVklOIG1pdCBldXJlciBWSU4gZXJzZXR6dGVuKi8KICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfSwKICBhdXRoOiB7CiAgICBiZWFyZXI6IChnZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIpLnZhbCl9LAogIGJvZHk6IGZvcm1Cb2R5Cn07CgpmdW5jdGlvbiBjYWxsYmFjayhlcnJvciwgcmVzcG9uc2UsIGJvZHkpIHsKdmFyIHJlc3VsdCA9IEpTT04ucGFyc2UoYm9keSk7Ci8qY29uc29sZS5sb2cocmVzdWx0KSovCn0KCgpyZXF1ZXN0LnBvc3Qob3B0aW9ucywgY2FsbGJhY2spOw==</field>
          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
        </block>
        <block type="procedures_defcustomnoreturn" id=",hTkY9![0|J~J!B_c8t+" x="263" y="413">
          <mutation statements="false"></mutation>
          <field name="NAME">Lichthupe</field>
          <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0xJR0hUX0ZMQVNIJwp9OwogCnZhciBmb3JtQm9keSA9IFtdOwpmb3IgKHZhciBwcm9wZXJ0eSBpbiBkZXRhaWxzKSB7CiAgdmFyIGVuY29kZWRLZXkgPSBlbmNvZGVVUklDb21wb25lbnQocHJvcGVydHkpOwogIHZhciBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQoZGV0YWlsc1twcm9wZXJ0eV0pOwogIGZvcm1Cb2R5LnB1c2goZW5jb2RlZEtleSArICI9IiArIGVuY29kZWRWYWx1ZSk7Cn0KZm9ybUJvZHkgPSBmb3JtQm9keS5qb2luKCImIik7CgoKIHZhciBvcHRpb25zID0gewogICB1cmw6ICdodHRwczovL2IydmFwaS5ibXdncm91cC5jb20vd2ViYXBpL3YxL3VzZXIvdmVoaWNsZXMvVklOL2V4ZWN1dGVTZXJ2aWNlJywgLypIaWVyIFZJTiBtaXQgZXVyZXIgVklOIGVyc2V0enRlbiovCiAgaGVhZGVyczogeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ30sCiAgYXV0aDogewogICAgYmVhcmVyOiAoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iKS52YWwpfSwKICBib2R5OiBmb3JtQm9keQp9OwoKZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlLCBib2R5KSB7CnZhciByZXN1bHQgPSBKU09OLnBhcnNlKGJvZHkpOwovKmNvbnNvbGUubG9nKHJlc3VsdCkqLwp9CgoKcmVxdWVzdC5wb3N0KG9wdGlvbnMsIGNhbGxiYWNrKTs=</field>
          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
        </block>
        <block type="procedures_defcustomnoreturn" id=".](occ0C^rIaxJ7Qge8!" x="263" y="663">
          <mutation statements="false"></mutation>
          <field name="NAME">Hupen</field>
          <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0hPUk5fQkxPVycKfTsKIAp2YXIgZm9ybUJvZHkgPSBbXTsKZm9yICh2YXIgcHJvcGVydHkgaW4gZGV0YWlscykgewogIHZhciBlbmNvZGVkS2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KHByb3BlcnR5KTsKICB2YXIgZW5jb2RlZFZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KGRldGFpbHNbcHJvcGVydHldKTsKICBmb3JtQm9keS5wdXNoKGVuY29kZWRLZXkgKyAiPSIgKyBlbmNvZGVkVmFsdWUpOwp9CmZvcm1Cb2R5ID0gZm9ybUJvZHkuam9pbigiJiIpOwoKCiB2YXIgb3B0aW9ucyA9IHsKICB1cmw6ICdodHRwczovL2IydmFwaS5ibXdncm91cC5jb20vd2ViYXBpL3YxL3VzZXIvdmVoaWNsZXMvVklOL2V4ZWN1dGVTZXJ2aWNlJywgLypIaWVyIFZJTiBtaXQgZXVyZXIgVklOIGVyc2V0enRlbiovCiAgaGVhZGVyczogeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ30sCiAgYXV0aDogewogICAgYmVhcmVyOiAoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iKS52YWwpfSwKICBib2R5OiBmb3JtQm9keQp9OwoKZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlLCBib2R5KSB7CnZhciByZXN1bHQgPSBKU09OLnBhcnNlKGJvZHkpOwovKmNvbnNvbGUubG9nKHJlc3VsdCkqLwp9CgoKcmVxdWVzdC5wb3N0KG9wdGlvbnMsIGNhbGxiYWNrKTs=</field>
          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
        </block>
      </xml>
      

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

      F S 3 Antworten Letzte Antwort
      2
      • bahnuhrB Online
        bahnuhrB Online
        bahnuhr
        Forum Testing Most Active
        schrieb am zuletzt editiert von bahnuhr
        #185

        @Strobelix

        Super klasse.
        Funktioniert einwandfrei.

        Schade nur, dass sich der Adapter Entwickler nicht meldet.
        Weder hier noch bei den issue.

        Der Adapter BMW ist dadurch für mich unbrauchbar geworden. Werde ihn löschen.

        mfg
        Dieter


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

        1 Antwort Letzte Antwort
        0
        • S Strobelix

          Hallo,

          ich kann zwar den Adapter nicht umprogrammieren, hab aber die neue Remote Execution API als Blockly gebaut. Wenn ihr also die Remote Funktionen nutzen wollt, könnt ihr das hier gern kopieren. Habe die API bei IPSymcom gefunden und mal quick&dirty in Javascript umgebaut.

          Es sind zwei Blocklys. Das erste legt die Datenpunkte an und holt stündlich einen neuen Token, das zweite Blockly stellt die Befehle zur Verfügung.

          Hier das erste Blockly "Login"
          Ihr müsst hier euer Zugangsdaten user/pass in die Javascriptfunktion "Token abfragen" eingeben.
          Die Felder dazu sind gekennzeichnet:

          <xml xmlns="https://developers.google.com/blockly/xml">
            <block type="procedures_defcustomnoreturn" id="C|Hc:`b-c/c[Tgs1y:IM" x="12" y="-338">
              <mutation statements="false"></mutation>
              <field name="NAME">Token abfragen</field>
              <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3VzZXJuYW1lJzogJ01BSUxBRFJFU1NFIEVJTkdFQkVOJywgLypIaWVyIGRpZSBNYWlsYWRyZXNzZSBlaW5nZWJlbiovCiAgICAncGFzc3dvcmQnOiAnUEFTU1dPUlQgRUlOR0VCRU4nLCAvKkhpZXIgZGFzIFBhc3N3b3J0IGVpbmdlYmVuKi8KICAgICdncmFudF90eXBlJzogJ3Bhc3N3b3JkJywKICAgICdzY29wZSc6J2F1dGhlbnRpY2F0ZV91c2VyIHZlaGljbGVfZGF0YSByZW1vdGVfc2VydmljZXMnCn07CiAKdmFyIGZvcm1Cb2R5ID0gW107CmZvciAodmFyIHByb3BlcnR5IGluIGRldGFpbHMpIHsKICB2YXIgZW5jb2RlZEtleSA9IGVuY29kZVVSSUNvbXBvbmVudChwcm9wZXJ0eSk7CiAgdmFyIGVuY29kZWRWYWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChkZXRhaWxzW3Byb3BlcnR5XSk7CiAgZm9ybUJvZHkucHVzaChlbmNvZGVkS2V5ICsgIj0iICsgZW5jb2RlZFZhbHVlKTsKfQpmb3JtQm9keSA9IGZvcm1Cb2R5LmpvaW4oIiYiKTsKCgogdmFyIG9wdGlvbnMgPSB7CiAgdXJsOiAnaHR0cHM6Ly9iMnZhcGkuYm13Z3JvdXAuY29tL2djZG0vb2F1dGgvdG9rZW4nLAogIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsICdBdXRob3JpemF0aW9uJzogJ0Jhc2ljIFpEYzJObUkxTXpjdFlUWTFOQzAwWTJKa0xXRXpaR010TUdOaE5UWTNNbVEzWmpoa09qRTFaalk1TjJZMkxXRTFaRFV0TkdOaFpDMDVPV1E1TFROaE1UVmlZemRtTXprM013PT0nLCAnQ3JlZGVudGlhbHMnOiAnblF2NkNxdHhKdVhXUDc0eGYzQ0p3VUVQOjF6REh4NnVuNGNEanliTEVOTjNreWZ1bVgya0VZaWdXUGNRcGR2RFJwSUJrN3JPSid9LAogIGJvZHk6IGZvcm1Cb2R5Cn07CiAKZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlLCBib2R5KSB7CnZhciByZXN1bHQgPSBKU09OLnBhcnNlKGJvZHkpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIvKlRva2VuKi8sICgnJyArIHJlc3VsdC5hY2Nlc3NfdG9rZW4pKTsKfQogIApyZXF1ZXN0LnBvc3Qob3B0aW9ucywgY2FsbGJhY2spOw==</field>
              <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
            </block>
            <block type="create" id="!Bqw.`_nnd;$sm~A@{Q3" x="437" y="-338">
              <field name="NAME">0_userdata.0.BMW.NeuerToken</field>
              <value name="COMMON">
                <block type="text" id="!:1H2(OE_?WjY60~:*g0">
                  <field name="TEXT">{"name": "NeuerToken","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                </block>
              </value>
              <next>
                <block type="create" id="13]PXp{s02GRS^2rU@5p">
                  <field name="NAME">0_userdata.0.BMW.Token</field>
                  <value name="COMMON">
                    <block type="text" id="{i=WwB;}YuxwEcmD6j)/">
                      <field name="TEXT">{"name": "Token","role": "","type": "string","desc": "Manuell erzeugt","def": "","read": true,"write": true}</field>
                    </block>
                  </value>
                  <next>
                    <block type="create" id="+F7.+]A.3oWYgBO;o3l@">
                      <field name="NAME">0_userdata.0.BMW.Klimatisieren</field>
                      <value name="COMMON">
                        <block type="text" id="/Ls,.mwrB1gtt4n,OtP?">
                          <field name="TEXT">{"name": "Klimatisieren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                        </block>
                      </value>
                      <next>
                        <block type="create" id="9+lYiXoKcCC}@ra33swp">
                          <field name="NAME">0_userdata.0.BMW.Hupen</field>
                          <value name="COMMON">
                            <block type="text" id="u:n1k-I|L=F=8?JMe!(l">
                              <field name="TEXT">{"name": "Hupen","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                            </block>
                          </value>
                          <next>
                            <block type="create" id="5x9-eg*nuFpH[i2~aI4g">
                              <field name="NAME">0_userdata.0.BMW.Aufsperren</field>
                              <value name="COMMON">
                                <block type="text" id="vGXV2B#+A==u5HFC!tRT">
                                  <field name="TEXT">{"name": "Aufsperren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                </block>
                              </value>
                              <next>
                                <block type="create" id="qfuj7fsIN;X0S`.s~:/1">
                                  <field name="NAME">0_userdata.0.BMW.Zusperren</field>
                                  <value name="COMMON">
                                    <block type="text" id="lG?k08n8yap6EBCwv;kF">
                                      <field name="TEXT">{"name": "Zusperren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="create" id="g27XDJ5cUzQMp;IDa?0V">
                                      <field name="NAME">0_userdata.0.BMW.Lichthupe</field>
                                      <value name="COMMON">
                                        <block type="text" id="%#XQ;ro0{u(B56z26$C@">
                                          <field name="TEXT">{"name": "Lichthupe","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                        </block>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </next>
            </block>
            <block type="on" id=")QODy$[H-(7lc9HPc%Xx" x="12" y="-263">
              <field name="OID">0_userdata.0.BMW.NeuerToken</field>
              <field name="CONDITION">any</field>
              <field name="ACK_CONDITION">false</field>
              <statement name="STATEMENT">
                <block type="controls_if" id="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="Token abfragen"></mutation>
                    </block>
                  </statement>
                </block>
              </statement>
              <next>
                <block type="schedule" id="6.1-pU|?K[LZXvgI}cvN">
                  <field name="SCHEDULE">*/60 * * * *</field>
                  <statement name="STATEMENT">
                    <block type="procedures_callcustomnoreturn" id="S_QWZ%P:XPQ1H8HWO%9)">
                      <mutation name="Token abfragen"></mutation>
                    </block>
                  </statement>
                  <next>
                    <block type="procedures_callcustomnoreturn" id="sCCxQw~6kxo3.d^m)Pp-">
                      <mutation name="Token abfragen"></mutation>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </xml>
          

          Und hier das zweite Blockly "Befehle"
          Hier müsst ihr eure VIN (Fahrgestellnummer) in ALLE Javascriptfunktionen eintragen.
          Bei "Aufsperren" müsst ihr ganz oben zusätzlich die Sicherheitsantwort aus dem BMW Portal angeben.

          <xml xmlns="https://developers.google.com/blockly/xml">
            <block type="on" id=")QODy$[H-(7lc9HPc%Xx" x="13" y="-287">
              <field name="OID">0_userdata.0.BMW.Klimatisieren</field>
              <field name="CONDITION">any</field>
              <field name="ACK_CONDITION">false</field>
              <statement name="STATEMENT">
                <block type="controls_if" id="qi2OU5y9AjO|pE1=!(W`">
                  <value name="IF0">
                    <block type="on_source" id="]6?RDB6_qbNs}FH@FT/5">
                      <field name="ATTR">state.val</field>
                    </block>
                  </value>
                  <statement name="DO0">
                    <block type="procedures_callcustomnoreturn" id="DC)Em1Ehbz1LW6fj[K!7">
                      <mutation name="Klimatisieren"></mutation>
                      <next>
                        <block type="update" id="?@kSoXR52NIAnmTbP@is">
                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                          <field name="OID">0_userdata.0.BMW.Klimatisieren</field>
                          <field name="WITH_DELAY">TRUE</field>
                          <field name="DELAY_MS">1000</field>
                          <field name="UNIT">ms</field>
                          <field name="CLEAR_RUNNING">FALSE</field>
                          <value name="VALUE">
                            <block type="logic_boolean" id="K/F}wA*$n:5CnQHpYr@$">
                              <field name="BOOL">FALSE</field>
                            </block>
                          </value>
                        </block>
                      </next>
                    </block>
                  </statement>
                </block>
              </statement>
              <next>
                <block type="on" id="DO.4#e50zzBReVkXk5yb">
                  <field name="OID">0_userdata.0.BMW.Zusperren</field>
                  <field name="CONDITION">any</field>
                  <field name="ACK_CONDITION">false</field>
                  <statement name="STATEMENT">
                    <block type="controls_if" id="OiM7;RsdIpMs*67U$W1}">
                      <value name="IF0">
                        <block type="on_source" id="DUggLU3jpKTMWDwchY@Q">
                          <field name="ATTR">state.val</field>
                        </block>
                      </value>
                      <statement name="DO0">
                        <block type="procedures_callcustomnoreturn" id="hY^fO{SGL}0AzHm[W~Fl">
                          <mutation name="Zusperren"></mutation>
                          <next>
                            <block type="update" id="9rlPG|IAAhKHcZ|+99|z">
                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                              <field name="OID">0_userdata.0.BMW.Zusperren</field>
                              <field name="WITH_DELAY">TRUE</field>
                              <field name="DELAY_MS">1000</field>
                              <field name="UNIT">ms</field>
                              <field name="CLEAR_RUNNING">FALSE</field>
                              <value name="VALUE">
                                <block type="logic_boolean" id="0,a9ZN|M|PkAi}n*T19O">
                                  <field name="BOOL">FALSE</field>
                                </block>
                              </value>
                            </block>
                          </next>
                        </block>
                      </statement>
                    </block>
                  </statement>
                  <next>
                    <block type="on" id="Mt2*}WFoiR5--row2T8H">
                      <field name="OID">0_userdata.0.BMW.Aufsperren</field>
                      <field name="CONDITION">any</field>
                      <field name="ACK_CONDITION">false</field>
                      <statement name="STATEMENT">
                        <block type="controls_if" id="1tfzyj?EGI~c[$sfM,=H">
                          <value name="IF0">
                            <block type="on_source" id="L-qx[QjgE7YK^@QoxL?s">
                              <field name="ATTR">state.val</field>
                            </block>
                          </value>
                          <statement name="DO0">
                            <block type="procedures_callcustomnoreturn" id="n,S8U%3H3QzLAxik#m6U">
                              <mutation name="Aufsperren"></mutation>
                              <next>
                                <block type="update" id="!W;+jZdtO4Z$.N{oZ!~u">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                  <field name="OID">0_userdata.0.BMW.Aufsperren</field>
                                  <field name="WITH_DELAY">TRUE</field>
                                  <field name="DELAY_MS">1000</field>
                                  <field name="UNIT">ms</field>
                                  <field name="CLEAR_RUNNING">FALSE</field>
                                  <value name="VALUE">
                                    <block type="logic_boolean" id="i7H=1Q%)]bTWwtb,mZL^">
                                      <field name="BOOL">FALSE</field>
                                    </block>
                                  </value>
                                </block>
                              </next>
                            </block>
                          </statement>
                        </block>
                      </statement>
                      <next>
                        <block type="on" id="x3sA~Bo,9#W8+0QQ4?Mk">
                          <field name="OID">0_userdata.0.BMW.Lichthupe</field>
                          <field name="CONDITION">any</field>
                          <field name="ACK_CONDITION">false</field>
                          <statement name="STATEMENT">
                            <block type="controls_if" id="g^t/])A_OBmH:}D:7hx1">
                              <value name="IF0">
                                <block type="on_source" id="Qk9]ZT(6`yuT9IJ1mS#h">
                                  <field name="ATTR">state.val</field>
                                </block>
                              </value>
                              <statement name="DO0">
                                <block type="procedures_callcustomnoreturn" id="KVXZu3,oTqe$DHeLgS{e">
                                  <mutation name="Lichthupe"></mutation>
                                  <next>
                                    <block type="update" id="8viE(:=_WA,IPGi~+0MV">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                      <field name="OID">0_userdata.0.BMW.Lichthupe</field>
                                      <field name="WITH_DELAY">TRUE</field>
                                      <field name="DELAY_MS">1000</field>
                                      <field name="UNIT">ms</field>
                                      <field name="CLEAR_RUNNING">FALSE</field>
                                      <value name="VALUE">
                                        <block type="logic_boolean" id="3KW3b{O(!n=5:mg(M_Wv">
                                          <field name="BOOL">FALSE</field>
                                        </block>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                            </block>
                          </statement>
                          <next>
                            <block type="on" id=".`HU#5P7{T)o:1xn*a/?">
                              <field name="OID">0_userdata.0.BMW.Hupen</field>
                              <field name="CONDITION">any</field>
                              <field name="ACK_CONDITION">false</field>
                              <statement name="STATEMENT">
                                <block type="controls_if" id="Qrr/!E+TuG7Gq66FQA;5">
                                  <value name="IF0">
                                    <block type="on_source" id="mvXJMfS$OdG+L~5/z^rY">
                                      <field name="ATTR">state.val</field>
                                    </block>
                                  </value>
                                  <statement name="DO0">
                                    <block type="procedures_callcustomnoreturn" id="Gi$6[_*-6XPaypdt!S%S">
                                      <mutation name="Hupen"></mutation>
                                      <next>
                                        <block type="update" id="GWaADA}?}4ONL*[A[7Fi">
                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                          <field name="OID">0_userdata.0.BMW.Hupen</field>
                                          <field name="WITH_DELAY">TRUE</field>
                                          <field name="DELAY_MS">1000</field>
                                          <field name="UNIT">ms</field>
                                          <field name="CLEAR_RUNNING">FALSE</field>
                                          <value name="VALUE">
                                            <block type="logic_boolean" id="f^.-6^1JVE#^ag9aE_/X">
                                              <field name="BOOL">FALSE</field>
                                            </block>
                                          </value>
                                        </block>
                                      </next>
                                    </block>
                                  </statement>
                                </block>
                              </statement>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </next>
            </block>
            <block type="procedures_defcustomnoreturn" id="C|Hc:`b-c/c[Tgs1y:IM" x="263" y="-287">
              <mutation statements="false"></mutation>
              <field name="NAME">Klimatisieren</field>
              <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0NMSU1BVEVfTk9XJwp9OwogCnZhciBmb3JtQm9keSA9IFtdOwpmb3IgKHZhciBwcm9wZXJ0eSBpbiBkZXRhaWxzKSB7CiAgdmFyIGVuY29kZWRLZXkgPSBlbmNvZGVVUklDb21wb25lbnQocHJvcGVydHkpOwogIHZhciBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQoZGV0YWlsc1twcm9wZXJ0eV0pOwogIGZvcm1Cb2R5LnB1c2goZW5jb2RlZEtleSArICI9IiArIGVuY29kZWRWYWx1ZSk7Cn0KZm9ybUJvZHkgPSBmb3JtQm9keS5qb2luKCImIik7CgoKIHZhciBvcHRpb25zID0gewogIHVybDogJ2h0dHBzOi8vYjJ2YXBpLmJtd2dyb3VwLmNvbS93ZWJhcGkvdjEvdXNlci92ZWhpY2xlcy9WSU4vZXhlY3V0ZVNlcnZpY2UnLCAvKkhpZXIgVklOIG1pdCBldXJlciBWSU4gZXJzZXR6dGVuKi8KICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfSwKICBhdXRoOiB7CiAgICBiZWFyZXI6IChnZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIpLnZhbCl9LAogIGJvZHk6IGZvcm1Cb2R5Cn07CgpmdW5jdGlvbiBjYWxsYmFjayhlcnJvciwgcmVzcG9uc2UsIGJvZHkpIHsKdmFyIHJlc3VsdCA9IEpTT04ucGFyc2UoYm9keSk7Ci8qY29uc29sZS5sb2cocmVzdWx0KSovCn0KCgpyZXF1ZXN0LnBvc3Qob3B0aW9ucywgY2FsbGJhY2spOw==</field>
              <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
            </block>
            <block type="procedures_defcustomnoreturn" id="[nCTA52$4Wk}$Z+;/Ybc" x="263" y="-62">
              <mutation statements="false"></mutation>
              <field name="NAME">Zusperren</field>
              <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0RPT1JfTE9DSycKfTsKIAp2YXIgZm9ybUJvZHkgPSBbXTsKZm9yICh2YXIgcHJvcGVydHkgaW4gZGV0YWlscykgewogIHZhciBlbmNvZGVkS2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KHByb3BlcnR5KTsKICB2YXIgZW5jb2RlZFZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KGRldGFpbHNbcHJvcGVydHldKTsKICBmb3JtQm9keS5wdXNoKGVuY29kZWRLZXkgKyAiPSIgKyBlbmNvZGVkVmFsdWUpOwp9CmZvcm1Cb2R5ID0gZm9ybUJvZHkuam9pbigiJiIpOwoKCiB2YXIgb3B0aW9ucyA9IHsKICB1cmw6ICdodHRwczovL2IydmFwaS5ibXdncm91cC5jb20vd2ViYXBpL3YxL3VzZXIvdmVoaWNsZXMvVklOL2V4ZWN1dGVTZXJ2aWNlJywgLypIaWVyIFZJTiBtaXQgZXVyZXIgVklOIGVyc2V0enRlbiovCiAgaGVhZGVyczogeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ30sCiAgYXV0aDogewogICAgYmVhcmVyOiAoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iKS52YWwpfSwKICBib2R5OiBmb3JtQm9keQp9OwoKZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlLCBib2R5KSB7CnZhciByZXN1bHQgPSBKU09OLnBhcnNlKGJvZHkpOwovKmNvbnNvbGUubG9nKHJlc3VsdCkqLwp9CgoKcmVxdWVzdC5wb3N0KG9wdGlvbnMsIGNhbGxiYWNrKTs=</field>
              <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
            </block>
            <block type="procedures_defcustomnoreturn" id="J)0OO1_$ZW[Tc_/ko95F" x="263" y="188">
              <mutation statements="false"></mutation>
              <field name="NAME">Aufsperren</field>
              <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0RPT1JfVU5MT0NLJywKICAgICdibXdTa0Fuc3dlcic6ICdTaWNoZXJoZWl0c2FudHdvcnQnIC8qSGllciBldXJlIFNpY2hlcmhlaXRzYW50d29ydCBlaW5nZWJlbiovCn07CiAKdmFyIGZvcm1Cb2R5ID0gW107CmZvciAodmFyIHByb3BlcnR5IGluIGRldGFpbHMpIHsKICB2YXIgZW5jb2RlZEtleSA9IGVuY29kZVVSSUNvbXBvbmVudChwcm9wZXJ0eSk7CiAgdmFyIGVuY29kZWRWYWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChkZXRhaWxzW3Byb3BlcnR5XSk7CiAgZm9ybUJvZHkucHVzaChlbmNvZGVkS2V5ICsgIj0iICsgZW5jb2RlZFZhbHVlKTsKfQpmb3JtQm9keSA9IGZvcm1Cb2R5LmpvaW4oIiYiKTsKCgogdmFyIG9wdGlvbnMgPSB7CiAgIHVybDogJ2h0dHBzOi8vYjJ2YXBpLmJtd2dyb3VwLmNvbS93ZWJhcGkvdjEvdXNlci92ZWhpY2xlcy9WSU4vZXhlY3V0ZVNlcnZpY2UnLCAvKkhpZXIgVklOIG1pdCBldXJlciBWSU4gZXJzZXR6dGVuKi8KICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfSwKICBhdXRoOiB7CiAgICBiZWFyZXI6IChnZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIpLnZhbCl9LAogIGJvZHk6IGZvcm1Cb2R5Cn07CgpmdW5jdGlvbiBjYWxsYmFjayhlcnJvciwgcmVzcG9uc2UsIGJvZHkpIHsKdmFyIHJlc3VsdCA9IEpTT04ucGFyc2UoYm9keSk7Ci8qY29uc29sZS5sb2cocmVzdWx0KSovCn0KCgpyZXF1ZXN0LnBvc3Qob3B0aW9ucywgY2FsbGJhY2spOw==</field>
              <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
            </block>
            <block type="procedures_defcustomnoreturn" id=",hTkY9![0|J~J!B_c8t+" x="263" y="413">
              <mutation statements="false"></mutation>
              <field name="NAME">Lichthupe</field>
              <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0xJR0hUX0ZMQVNIJwp9OwogCnZhciBmb3JtQm9keSA9IFtdOwpmb3IgKHZhciBwcm9wZXJ0eSBpbiBkZXRhaWxzKSB7CiAgdmFyIGVuY29kZWRLZXkgPSBlbmNvZGVVUklDb21wb25lbnQocHJvcGVydHkpOwogIHZhciBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQoZGV0YWlsc1twcm9wZXJ0eV0pOwogIGZvcm1Cb2R5LnB1c2goZW5jb2RlZEtleSArICI9IiArIGVuY29kZWRWYWx1ZSk7Cn0KZm9ybUJvZHkgPSBmb3JtQm9keS5qb2luKCImIik7CgoKIHZhciBvcHRpb25zID0gewogICB1cmw6ICdodHRwczovL2IydmFwaS5ibXdncm91cC5jb20vd2ViYXBpL3YxL3VzZXIvdmVoaWNsZXMvVklOL2V4ZWN1dGVTZXJ2aWNlJywgLypIaWVyIFZJTiBtaXQgZXVyZXIgVklOIGVyc2V0enRlbiovCiAgaGVhZGVyczogeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ30sCiAgYXV0aDogewogICAgYmVhcmVyOiAoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iKS52YWwpfSwKICBib2R5OiBmb3JtQm9keQp9OwoKZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlLCBib2R5KSB7CnZhciByZXN1bHQgPSBKU09OLnBhcnNlKGJvZHkpOwovKmNvbnNvbGUubG9nKHJlc3VsdCkqLwp9CgoKcmVxdWVzdC5wb3N0KG9wdGlvbnMsIGNhbGxiYWNrKTs=</field>
              <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
            </block>
            <block type="procedures_defcustomnoreturn" id=".](occ0C^rIaxJ7Qge8!" x="263" y="663">
              <mutation statements="false"></mutation>
              <field name="NAME">Hupen</field>
              <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0hPUk5fQkxPVycKfTsKIAp2YXIgZm9ybUJvZHkgPSBbXTsKZm9yICh2YXIgcHJvcGVydHkgaW4gZGV0YWlscykgewogIHZhciBlbmNvZGVkS2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KHByb3BlcnR5KTsKICB2YXIgZW5jb2RlZFZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KGRldGFpbHNbcHJvcGVydHldKTsKICBmb3JtQm9keS5wdXNoKGVuY29kZWRLZXkgKyAiPSIgKyBlbmNvZGVkVmFsdWUpOwp9CmZvcm1Cb2R5ID0gZm9ybUJvZHkuam9pbigiJiIpOwoKCiB2YXIgb3B0aW9ucyA9IHsKICB1cmw6ICdodHRwczovL2IydmFwaS5ibXdncm91cC5jb20vd2ViYXBpL3YxL3VzZXIvdmVoaWNsZXMvVklOL2V4ZWN1dGVTZXJ2aWNlJywgLypIaWVyIFZJTiBtaXQgZXVyZXIgVklOIGVyc2V0enRlbiovCiAgaGVhZGVyczogeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ30sCiAgYXV0aDogewogICAgYmVhcmVyOiAoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iKS52YWwpfSwKICBib2R5OiBmb3JtQm9keQp9OwoKZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlLCBib2R5KSB7CnZhciByZXN1bHQgPSBKU09OLnBhcnNlKGJvZHkpOwovKmNvbnNvbGUubG9nKHJlc3VsdCkqLwp9CgoKcmVxdWVzdC5wb3N0KG9wdGlvbnMsIGNhbGxiYWNrKTs=</field>
              <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
            </block>
          </xml>
          
          F Offline
          F Offline
          fastfoot
          schrieb am zuletzt editiert von
          #186

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

          Habe die API bei IPSymcom gefunden und

          Hättest du einen Link dazu?

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

          S 1 Antwort Letzte Antwort
          0
          • F fastfoot

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

            Habe die API bei IPSymcom gefunden und

            Hättest du einen Link dazu?

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

            @fastfoot

            https://github.com/Wolbolar/IPSymconBMWConnectedDrive/compare/master...demel42:new_api

            In der module.php

            Wobei die Daten auch hier zu finden sind:

            https://github.com/edent/BMW-i-Remote

            Denke es gab da immer schon zwei API Endpunkte und der hier genutzte wurde eingestellt

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

            F 1 Antwort Letzte Antwort
            0
            • S Strobelix

              @fastfoot

              https://github.com/Wolbolar/IPSymconBMWConnectedDrive/compare/master...demel42:new_api

              In der module.php

              Wobei die Daten auch hier zu finden sind:

              https://github.com/edent/BMW-i-Remote

              Denke es gab da immer schon zwei API Endpunkte und der hier genutzte wurde eingestellt

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

              @strobelix Vielen Dank, mal sehen ob ich noch was finde zum Einbauen...

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

              S 1 Antwort Letzte Antwort
              0
              • S Strobelix

                Hallo,

                ich kann zwar den Adapter nicht umprogrammieren, hab aber die neue Remote Execution API als Blockly gebaut. Wenn ihr also die Remote Funktionen nutzen wollt, könnt ihr das hier gern kopieren. Habe die API bei IPSymcom gefunden und mal quick&dirty in Javascript umgebaut.

                Es sind zwei Blocklys. Das erste legt die Datenpunkte an und holt stündlich einen neuen Token, das zweite Blockly stellt die Befehle zur Verfügung.

                Hier das erste Blockly "Login"
                Ihr müsst hier euer Zugangsdaten user/pass in die Javascriptfunktion "Token abfragen" eingeben.
                Die Felder dazu sind gekennzeichnet:

                <xml xmlns="https://developers.google.com/blockly/xml">
                  <block type="procedures_defcustomnoreturn" id="C|Hc:`b-c/c[Tgs1y:IM" x="12" y="-338">
                    <mutation statements="false"></mutation>
                    <field name="NAME">Token abfragen</field>
                    <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3VzZXJuYW1lJzogJ01BSUxBRFJFU1NFIEVJTkdFQkVOJywgLypIaWVyIGRpZSBNYWlsYWRyZXNzZSBlaW5nZWJlbiovCiAgICAncGFzc3dvcmQnOiAnUEFTU1dPUlQgRUlOR0VCRU4nLCAvKkhpZXIgZGFzIFBhc3N3b3J0IGVpbmdlYmVuKi8KICAgICdncmFudF90eXBlJzogJ3Bhc3N3b3JkJywKICAgICdzY29wZSc6J2F1dGhlbnRpY2F0ZV91c2VyIHZlaGljbGVfZGF0YSByZW1vdGVfc2VydmljZXMnCn07CiAKdmFyIGZvcm1Cb2R5ID0gW107CmZvciAodmFyIHByb3BlcnR5IGluIGRldGFpbHMpIHsKICB2YXIgZW5jb2RlZEtleSA9IGVuY29kZVVSSUNvbXBvbmVudChwcm9wZXJ0eSk7CiAgdmFyIGVuY29kZWRWYWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChkZXRhaWxzW3Byb3BlcnR5XSk7CiAgZm9ybUJvZHkucHVzaChlbmNvZGVkS2V5ICsgIj0iICsgZW5jb2RlZFZhbHVlKTsKfQpmb3JtQm9keSA9IGZvcm1Cb2R5LmpvaW4oIiYiKTsKCgogdmFyIG9wdGlvbnMgPSB7CiAgdXJsOiAnaHR0cHM6Ly9iMnZhcGkuYm13Z3JvdXAuY29tL2djZG0vb2F1dGgvdG9rZW4nLAogIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsICdBdXRob3JpemF0aW9uJzogJ0Jhc2ljIFpEYzJObUkxTXpjdFlUWTFOQzAwWTJKa0xXRXpaR010TUdOaE5UWTNNbVEzWmpoa09qRTFaalk1TjJZMkxXRTFaRFV0TkdOaFpDMDVPV1E1TFROaE1UVmlZemRtTXprM013PT0nLCAnQ3JlZGVudGlhbHMnOiAnblF2NkNxdHhKdVhXUDc0eGYzQ0p3VUVQOjF6REh4NnVuNGNEanliTEVOTjNreWZ1bVgya0VZaWdXUGNRcGR2RFJwSUJrN3JPSid9LAogIGJvZHk6IGZvcm1Cb2R5Cn07CiAKZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlLCBib2R5KSB7CnZhciByZXN1bHQgPSBKU09OLnBhcnNlKGJvZHkpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIvKlRva2VuKi8sICgnJyArIHJlc3VsdC5hY2Nlc3NfdG9rZW4pKTsKfQogIApyZXF1ZXN0LnBvc3Qob3B0aW9ucywgY2FsbGJhY2spOw==</field>
                    <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                  </block>
                  <block type="create" id="!Bqw.`_nnd;$sm~A@{Q3" x="437" y="-338">
                    <field name="NAME">0_userdata.0.BMW.NeuerToken</field>
                    <value name="COMMON">
                      <block type="text" id="!:1H2(OE_?WjY60~:*g0">
                        <field name="TEXT">{"name": "NeuerToken","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                      </block>
                    </value>
                    <next>
                      <block type="create" id="13]PXp{s02GRS^2rU@5p">
                        <field name="NAME">0_userdata.0.BMW.Token</field>
                        <value name="COMMON">
                          <block type="text" id="{i=WwB;}YuxwEcmD6j)/">
                            <field name="TEXT">{"name": "Token","role": "","type": "string","desc": "Manuell erzeugt","def": "","read": true,"write": true}</field>
                          </block>
                        </value>
                        <next>
                          <block type="create" id="+F7.+]A.3oWYgBO;o3l@">
                            <field name="NAME">0_userdata.0.BMW.Klimatisieren</field>
                            <value name="COMMON">
                              <block type="text" id="/Ls,.mwrB1gtt4n,OtP?">
                                <field name="TEXT">{"name": "Klimatisieren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                              </block>
                            </value>
                            <next>
                              <block type="create" id="9+lYiXoKcCC}@ra33swp">
                                <field name="NAME">0_userdata.0.BMW.Hupen</field>
                                <value name="COMMON">
                                  <block type="text" id="u:n1k-I|L=F=8?JMe!(l">
                                    <field name="TEXT">{"name": "Hupen","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                  </block>
                                </value>
                                <next>
                                  <block type="create" id="5x9-eg*nuFpH[i2~aI4g">
                                    <field name="NAME">0_userdata.0.BMW.Aufsperren</field>
                                    <value name="COMMON">
                                      <block type="text" id="vGXV2B#+A==u5HFC!tRT">
                                        <field name="TEXT">{"name": "Aufsperren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="create" id="qfuj7fsIN;X0S`.s~:/1">
                                        <field name="NAME">0_userdata.0.BMW.Zusperren</field>
                                        <value name="COMMON">
                                          <block type="text" id="lG?k08n8yap6EBCwv;kF">
                                            <field name="TEXT">{"name": "Zusperren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                          </block>
                                        </value>
                                        <next>
                                          <block type="create" id="g27XDJ5cUzQMp;IDa?0V">
                                            <field name="NAME">0_userdata.0.BMW.Lichthupe</field>
                                            <value name="COMMON">
                                              <block type="text" id="%#XQ;ro0{u(B56z26$C@">
                                                <field name="TEXT">{"name": "Lichthupe","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                              </block>
                                            </value>
                                          </block>
                                        </next>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                  <block type="on" id=")QODy$[H-(7lc9HPc%Xx" x="12" y="-263">
                    <field name="OID">0_userdata.0.BMW.NeuerToken</field>
                    <field name="CONDITION">any</field>
                    <field name="ACK_CONDITION">false</field>
                    <statement name="STATEMENT">
                      <block type="controls_if" id="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="Token abfragen"></mutation>
                          </block>
                        </statement>
                      </block>
                    </statement>
                    <next>
                      <block type="schedule" id="6.1-pU|?K[LZXvgI}cvN">
                        <field name="SCHEDULE">*/60 * * * *</field>
                        <statement name="STATEMENT">
                          <block type="procedures_callcustomnoreturn" id="S_QWZ%P:XPQ1H8HWO%9)">
                            <mutation name="Token abfragen"></mutation>
                          </block>
                        </statement>
                        <next>
                          <block type="procedures_callcustomnoreturn" id="sCCxQw~6kxo3.d^m)Pp-">
                            <mutation name="Token abfragen"></mutation>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </xml>
                

                Und hier das zweite Blockly "Befehle"
                Hier müsst ihr eure VIN (Fahrgestellnummer) in ALLE Javascriptfunktionen eintragen.
                Bei "Aufsperren" müsst ihr ganz oben zusätzlich die Sicherheitsantwort aus dem BMW Portal angeben.

                <xml xmlns="https://developers.google.com/blockly/xml">
                  <block type="on" id=")QODy$[H-(7lc9HPc%Xx" x="13" y="-287">
                    <field name="OID">0_userdata.0.BMW.Klimatisieren</field>
                    <field name="CONDITION">any</field>
                    <field name="ACK_CONDITION">false</field>
                    <statement name="STATEMENT">
                      <block type="controls_if" id="qi2OU5y9AjO|pE1=!(W`">
                        <value name="IF0">
                          <block type="on_source" id="]6?RDB6_qbNs}FH@FT/5">
                            <field name="ATTR">state.val</field>
                          </block>
                        </value>
                        <statement name="DO0">
                          <block type="procedures_callcustomnoreturn" id="DC)Em1Ehbz1LW6fj[K!7">
                            <mutation name="Klimatisieren"></mutation>
                            <next>
                              <block type="update" id="?@kSoXR52NIAnmTbP@is">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                <field name="OID">0_userdata.0.BMW.Klimatisieren</field>
                                <field name="WITH_DELAY">TRUE</field>
                                <field name="DELAY_MS">1000</field>
                                <field name="UNIT">ms</field>
                                <field name="CLEAR_RUNNING">FALSE</field>
                                <value name="VALUE">
                                  <block type="logic_boolean" id="K/F}wA*$n:5CnQHpYr@$">
                                    <field name="BOOL">FALSE</field>
                                  </block>
                                </value>
                              </block>
                            </next>
                          </block>
                        </statement>
                      </block>
                    </statement>
                    <next>
                      <block type="on" id="DO.4#e50zzBReVkXk5yb">
                        <field name="OID">0_userdata.0.BMW.Zusperren</field>
                        <field name="CONDITION">any</field>
                        <field name="ACK_CONDITION">false</field>
                        <statement name="STATEMENT">
                          <block type="controls_if" id="OiM7;RsdIpMs*67U$W1}">
                            <value name="IF0">
                              <block type="on_source" id="DUggLU3jpKTMWDwchY@Q">
                                <field name="ATTR">state.val</field>
                              </block>
                            </value>
                            <statement name="DO0">
                              <block type="procedures_callcustomnoreturn" id="hY^fO{SGL}0AzHm[W~Fl">
                                <mutation name="Zusperren"></mutation>
                                <next>
                                  <block type="update" id="9rlPG|IAAhKHcZ|+99|z">
                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                    <field name="OID">0_userdata.0.BMW.Zusperren</field>
                                    <field name="WITH_DELAY">TRUE</field>
                                    <field name="DELAY_MS">1000</field>
                                    <field name="UNIT">ms</field>
                                    <field name="CLEAR_RUNNING">FALSE</field>
                                    <value name="VALUE">
                                      <block type="logic_boolean" id="0,a9ZN|M|PkAi}n*T19O">
                                        <field name="BOOL">FALSE</field>
                                      </block>
                                    </value>
                                  </block>
                                </next>
                              </block>
                            </statement>
                          </block>
                        </statement>
                        <next>
                          <block type="on" id="Mt2*}WFoiR5--row2T8H">
                            <field name="OID">0_userdata.0.BMW.Aufsperren</field>
                            <field name="CONDITION">any</field>
                            <field name="ACK_CONDITION">false</field>
                            <statement name="STATEMENT">
                              <block type="controls_if" id="1tfzyj?EGI~c[$sfM,=H">
                                <value name="IF0">
                                  <block type="on_source" id="L-qx[QjgE7YK^@QoxL?s">
                                    <field name="ATTR">state.val</field>
                                  </block>
                                </value>
                                <statement name="DO0">
                                  <block type="procedures_callcustomnoreturn" id="n,S8U%3H3QzLAxik#m6U">
                                    <mutation name="Aufsperren"></mutation>
                                    <next>
                                      <block type="update" id="!W;+jZdtO4Z$.N{oZ!~u">
                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                        <field name="OID">0_userdata.0.BMW.Aufsperren</field>
                                        <field name="WITH_DELAY">TRUE</field>
                                        <field name="DELAY_MS">1000</field>
                                        <field name="UNIT">ms</field>
                                        <field name="CLEAR_RUNNING">FALSE</field>
                                        <value name="VALUE">
                                          <block type="logic_boolean" id="i7H=1Q%)]bTWwtb,mZL^">
                                            <field name="BOOL">FALSE</field>
                                          </block>
                                        </value>
                                      </block>
                                    </next>
                                  </block>
                                </statement>
                              </block>
                            </statement>
                            <next>
                              <block type="on" id="x3sA~Bo,9#W8+0QQ4?Mk">
                                <field name="OID">0_userdata.0.BMW.Lichthupe</field>
                                <field name="CONDITION">any</field>
                                <field name="ACK_CONDITION">false</field>
                                <statement name="STATEMENT">
                                  <block type="controls_if" id="g^t/])A_OBmH:}D:7hx1">
                                    <value name="IF0">
                                      <block type="on_source" id="Qk9]ZT(6`yuT9IJ1mS#h">
                                        <field name="ATTR">state.val</field>
                                      </block>
                                    </value>
                                    <statement name="DO0">
                                      <block type="procedures_callcustomnoreturn" id="KVXZu3,oTqe$DHeLgS{e">
                                        <mutation name="Lichthupe"></mutation>
                                        <next>
                                          <block type="update" id="8viE(:=_WA,IPGi~+0MV">
                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                            <field name="OID">0_userdata.0.BMW.Lichthupe</field>
                                            <field name="WITH_DELAY">TRUE</field>
                                            <field name="DELAY_MS">1000</field>
                                            <field name="UNIT">ms</field>
                                            <field name="CLEAR_RUNNING">FALSE</field>
                                            <value name="VALUE">
                                              <block type="logic_boolean" id="3KW3b{O(!n=5:mg(M_Wv">
                                                <field name="BOOL">FALSE</field>
                                              </block>
                                            </value>
                                          </block>
                                        </next>
                                      </block>
                                    </statement>
                                  </block>
                                </statement>
                                <next>
                                  <block type="on" id=".`HU#5P7{T)o:1xn*a/?">
                                    <field name="OID">0_userdata.0.BMW.Hupen</field>
                                    <field name="CONDITION">any</field>
                                    <field name="ACK_CONDITION">false</field>
                                    <statement name="STATEMENT">
                                      <block type="controls_if" id="Qrr/!E+TuG7Gq66FQA;5">
                                        <value name="IF0">
                                          <block type="on_source" id="mvXJMfS$OdG+L~5/z^rY">
                                            <field name="ATTR">state.val</field>
                                          </block>
                                        </value>
                                        <statement name="DO0">
                                          <block type="procedures_callcustomnoreturn" id="Gi$6[_*-6XPaypdt!S%S">
                                            <mutation name="Hupen"></mutation>
                                            <next>
                                              <block type="update" id="GWaADA}?}4ONL*[A[7Fi">
                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                <field name="OID">0_userdata.0.BMW.Hupen</field>
                                                <field name="WITH_DELAY">TRUE</field>
                                                <field name="DELAY_MS">1000</field>
                                                <field name="UNIT">ms</field>
                                                <field name="CLEAR_RUNNING">FALSE</field>
                                                <value name="VALUE">
                                                  <block type="logic_boolean" id="f^.-6^1JVE#^ag9aE_/X">
                                                    <field name="BOOL">FALSE</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </next>
                                          </block>
                                        </statement>
                                      </block>
                                    </statement>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                  <block type="procedures_defcustomnoreturn" id="C|Hc:`b-c/c[Tgs1y:IM" x="263" y="-287">
                    <mutation statements="false"></mutation>
                    <field name="NAME">Klimatisieren</field>
                    <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0NMSU1BVEVfTk9XJwp9OwogCnZhciBmb3JtQm9keSA9IFtdOwpmb3IgKHZhciBwcm9wZXJ0eSBpbiBkZXRhaWxzKSB7CiAgdmFyIGVuY29kZWRLZXkgPSBlbmNvZGVVUklDb21wb25lbnQocHJvcGVydHkpOwogIHZhciBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQoZGV0YWlsc1twcm9wZXJ0eV0pOwogIGZvcm1Cb2R5LnB1c2goZW5jb2RlZEtleSArICI9IiArIGVuY29kZWRWYWx1ZSk7Cn0KZm9ybUJvZHkgPSBmb3JtQm9keS5qb2luKCImIik7CgoKIHZhciBvcHRpb25zID0gewogIHVybDogJ2h0dHBzOi8vYjJ2YXBpLmJtd2dyb3VwLmNvbS93ZWJhcGkvdjEvdXNlci92ZWhpY2xlcy9WSU4vZXhlY3V0ZVNlcnZpY2UnLCAvKkhpZXIgVklOIG1pdCBldXJlciBWSU4gZXJzZXR6dGVuKi8KICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfSwKICBhdXRoOiB7CiAgICBiZWFyZXI6IChnZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIpLnZhbCl9LAogIGJvZHk6IGZvcm1Cb2R5Cn07CgpmdW5jdGlvbiBjYWxsYmFjayhlcnJvciwgcmVzcG9uc2UsIGJvZHkpIHsKdmFyIHJlc3VsdCA9IEpTT04ucGFyc2UoYm9keSk7Ci8qY29uc29sZS5sb2cocmVzdWx0KSovCn0KCgpyZXF1ZXN0LnBvc3Qob3B0aW9ucywgY2FsbGJhY2spOw==</field>
                    <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                  </block>
                  <block type="procedures_defcustomnoreturn" id="[nCTA52$4Wk}$Z+;/Ybc" x="263" y="-62">
                    <mutation statements="false"></mutation>
                    <field name="NAME">Zusperren</field>
                    <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0RPT1JfTE9DSycKfTsKIAp2YXIgZm9ybUJvZHkgPSBbXTsKZm9yICh2YXIgcHJvcGVydHkgaW4gZGV0YWlscykgewogIHZhciBlbmNvZGVkS2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KHByb3BlcnR5KTsKICB2YXIgZW5jb2RlZFZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KGRldGFpbHNbcHJvcGVydHldKTsKICBmb3JtQm9keS5wdXNoKGVuY29kZWRLZXkgKyAiPSIgKyBlbmNvZGVkVmFsdWUpOwp9CmZvcm1Cb2R5ID0gZm9ybUJvZHkuam9pbigiJiIpOwoKCiB2YXIgb3B0aW9ucyA9IHsKICB1cmw6ICdodHRwczovL2IydmFwaS5ibXdncm91cC5jb20vd2ViYXBpL3YxL3VzZXIvdmVoaWNsZXMvVklOL2V4ZWN1dGVTZXJ2aWNlJywgLypIaWVyIFZJTiBtaXQgZXVyZXIgVklOIGVyc2V0enRlbiovCiAgaGVhZGVyczogeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ30sCiAgYXV0aDogewogICAgYmVhcmVyOiAoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iKS52YWwpfSwKICBib2R5OiBmb3JtQm9keQp9OwoKZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlLCBib2R5KSB7CnZhciByZXN1bHQgPSBKU09OLnBhcnNlKGJvZHkpOwovKmNvbnNvbGUubG9nKHJlc3VsdCkqLwp9CgoKcmVxdWVzdC5wb3N0KG9wdGlvbnMsIGNhbGxiYWNrKTs=</field>
                    <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                  </block>
                  <block type="procedures_defcustomnoreturn" id="J)0OO1_$ZW[Tc_/ko95F" x="263" y="188">
                    <mutation statements="false"></mutation>
                    <field name="NAME">Aufsperren</field>
                    <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0RPT1JfVU5MT0NLJywKICAgICdibXdTa0Fuc3dlcic6ICdTaWNoZXJoZWl0c2FudHdvcnQnIC8qSGllciBldXJlIFNpY2hlcmhlaXRzYW50d29ydCBlaW5nZWJlbiovCn07CiAKdmFyIGZvcm1Cb2R5ID0gW107CmZvciAodmFyIHByb3BlcnR5IGluIGRldGFpbHMpIHsKICB2YXIgZW5jb2RlZEtleSA9IGVuY29kZVVSSUNvbXBvbmVudChwcm9wZXJ0eSk7CiAgdmFyIGVuY29kZWRWYWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChkZXRhaWxzW3Byb3BlcnR5XSk7CiAgZm9ybUJvZHkucHVzaChlbmNvZGVkS2V5ICsgIj0iICsgZW5jb2RlZFZhbHVlKTsKfQpmb3JtQm9keSA9IGZvcm1Cb2R5LmpvaW4oIiYiKTsKCgogdmFyIG9wdGlvbnMgPSB7CiAgIHVybDogJ2h0dHBzOi8vYjJ2YXBpLmJtd2dyb3VwLmNvbS93ZWJhcGkvdjEvdXNlci92ZWhpY2xlcy9WSU4vZXhlY3V0ZVNlcnZpY2UnLCAvKkhpZXIgVklOIG1pdCBldXJlciBWSU4gZXJzZXR6dGVuKi8KICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfSwKICBhdXRoOiB7CiAgICBiZWFyZXI6IChnZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIpLnZhbCl9LAogIGJvZHk6IGZvcm1Cb2R5Cn07CgpmdW5jdGlvbiBjYWxsYmFjayhlcnJvciwgcmVzcG9uc2UsIGJvZHkpIHsKdmFyIHJlc3VsdCA9IEpTT04ucGFyc2UoYm9keSk7Ci8qY29uc29sZS5sb2cocmVzdWx0KSovCn0KCgpyZXF1ZXN0LnBvc3Qob3B0aW9ucywgY2FsbGJhY2spOw==</field>
                    <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                  </block>
                  <block type="procedures_defcustomnoreturn" id=",hTkY9![0|J~J!B_c8t+" x="263" y="413">
                    <mutation statements="false"></mutation>
                    <field name="NAME">Lichthupe</field>
                    <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0xJR0hUX0ZMQVNIJwp9OwogCnZhciBmb3JtQm9keSA9IFtdOwpmb3IgKHZhciBwcm9wZXJ0eSBpbiBkZXRhaWxzKSB7CiAgdmFyIGVuY29kZWRLZXkgPSBlbmNvZGVVUklDb21wb25lbnQocHJvcGVydHkpOwogIHZhciBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQoZGV0YWlsc1twcm9wZXJ0eV0pOwogIGZvcm1Cb2R5LnB1c2goZW5jb2RlZEtleSArICI9IiArIGVuY29kZWRWYWx1ZSk7Cn0KZm9ybUJvZHkgPSBmb3JtQm9keS5qb2luKCImIik7CgoKIHZhciBvcHRpb25zID0gewogICB1cmw6ICdodHRwczovL2IydmFwaS5ibXdncm91cC5jb20vd2ViYXBpL3YxL3VzZXIvdmVoaWNsZXMvVklOL2V4ZWN1dGVTZXJ2aWNlJywgLypIaWVyIFZJTiBtaXQgZXVyZXIgVklOIGVyc2V0enRlbiovCiAgaGVhZGVyczogeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ30sCiAgYXV0aDogewogICAgYmVhcmVyOiAoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iKS52YWwpfSwKICBib2R5OiBmb3JtQm9keQp9OwoKZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlLCBib2R5KSB7CnZhciByZXN1bHQgPSBKU09OLnBhcnNlKGJvZHkpOwovKmNvbnNvbGUubG9nKHJlc3VsdCkqLwp9CgoKcmVxdWVzdC5wb3N0KG9wdGlvbnMsIGNhbGxiYWNrKTs=</field>
                    <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                  </block>
                  <block type="procedures_defcustomnoreturn" id=".](occ0C^rIaxJ7Qge8!" x="263" y="663">
                    <mutation statements="false"></mutation>
                    <field name="NAME">Hupen</field>
                    <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0hPUk5fQkxPVycKfTsKIAp2YXIgZm9ybUJvZHkgPSBbXTsKZm9yICh2YXIgcHJvcGVydHkgaW4gZGV0YWlscykgewogIHZhciBlbmNvZGVkS2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KHByb3BlcnR5KTsKICB2YXIgZW5jb2RlZFZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KGRldGFpbHNbcHJvcGVydHldKTsKICBmb3JtQm9keS5wdXNoKGVuY29kZWRLZXkgKyAiPSIgKyBlbmNvZGVkVmFsdWUpOwp9CmZvcm1Cb2R5ID0gZm9ybUJvZHkuam9pbigiJiIpOwoKCiB2YXIgb3B0aW9ucyA9IHsKICB1cmw6ICdodHRwczovL2IydmFwaS5ibXdncm91cC5jb20vd2ViYXBpL3YxL3VzZXIvdmVoaWNsZXMvVklOL2V4ZWN1dGVTZXJ2aWNlJywgLypIaWVyIFZJTiBtaXQgZXVyZXIgVklOIGVyc2V0enRlbiovCiAgaGVhZGVyczogeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ30sCiAgYXV0aDogewogICAgYmVhcmVyOiAoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iKS52YWwpfSwKICBib2R5OiBmb3JtQm9keQp9OwoKZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlLCBib2R5KSB7CnZhciByZXN1bHQgPSBKU09OLnBhcnNlKGJvZHkpOwovKmNvbnNvbGUubG9nKHJlc3VsdCkqLwp9CgoKcmVxdWVzdC5wb3N0KG9wdGlvbnMsIGNhbGxiYWNrKTs=</field>
                    <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                  </block>
                </xml>
                
                F Offline
                F Offline
                fastfoot
                schrieb am zuletzt editiert von
                #189

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

                Bei "Aufsperren" müsst ihr ganz oben zusätzlich die Sicherheitsantwort aus dem BMW Portal angeben.

                Wo finde ich diese Sicherheitsantwort? Hab mir einen Wolf gesucht aber da gibt es keine Sicherheitsantwort, weder im WEB noch in der APP bei meinen Zugangsdaten

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

                bahnuhrB 1 Antwort Letzte Antwort
                0
                • F fastfoot

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

                  Bei "Aufsperren" müsst ihr ganz oben zusätzlich die Sicherheitsantwort aus dem BMW Portal angeben.

                  Wo finde ich diese Sicherheitsantwort? Hab mir einen Wolf gesucht aber da gibt es keine Sicherheitsantwort, weder im WEB noch in der APP bei meinen Zugangsdaten

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

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

                  Wo finde ich diese Sicherheitsantwort?

                  Im Browser in connected drive anmelden, dann:
                  2b7b7919-1c25-47c6-a91d-f4e7ef89f7af-image.png

                  Hier:
                  04e9bf66-e467-4cc3-922c-dd073d7b6000-image.png


                  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

                  F 1 Antwort Letzte Antwort
                  1
                  • S Strobelix

                    Hallo,

                    ich kann zwar den Adapter nicht umprogrammieren, hab aber die neue Remote Execution API als Blockly gebaut. Wenn ihr also die Remote Funktionen nutzen wollt, könnt ihr das hier gern kopieren. Habe die API bei IPSymcom gefunden und mal quick&dirty in Javascript umgebaut.

                    Es sind zwei Blocklys. Das erste legt die Datenpunkte an und holt stündlich einen neuen Token, das zweite Blockly stellt die Befehle zur Verfügung.

                    Hier das erste Blockly "Login"
                    Ihr müsst hier euer Zugangsdaten user/pass in die Javascriptfunktion "Token abfragen" eingeben.
                    Die Felder dazu sind gekennzeichnet:

                    <xml xmlns="https://developers.google.com/blockly/xml">
                      <block type="procedures_defcustomnoreturn" id="C|Hc:`b-c/c[Tgs1y:IM" x="12" y="-338">
                        <mutation statements="false"></mutation>
                        <field name="NAME">Token abfragen</field>
                        <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3VzZXJuYW1lJzogJ01BSUxBRFJFU1NFIEVJTkdFQkVOJywgLypIaWVyIGRpZSBNYWlsYWRyZXNzZSBlaW5nZWJlbiovCiAgICAncGFzc3dvcmQnOiAnUEFTU1dPUlQgRUlOR0VCRU4nLCAvKkhpZXIgZGFzIFBhc3N3b3J0IGVpbmdlYmVuKi8KICAgICdncmFudF90eXBlJzogJ3Bhc3N3b3JkJywKICAgICdzY29wZSc6J2F1dGhlbnRpY2F0ZV91c2VyIHZlaGljbGVfZGF0YSByZW1vdGVfc2VydmljZXMnCn07CiAKdmFyIGZvcm1Cb2R5ID0gW107CmZvciAodmFyIHByb3BlcnR5IGluIGRldGFpbHMpIHsKICB2YXIgZW5jb2RlZEtleSA9IGVuY29kZVVSSUNvbXBvbmVudChwcm9wZXJ0eSk7CiAgdmFyIGVuY29kZWRWYWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChkZXRhaWxzW3Byb3BlcnR5XSk7CiAgZm9ybUJvZHkucHVzaChlbmNvZGVkS2V5ICsgIj0iICsgZW5jb2RlZFZhbHVlKTsKfQpmb3JtQm9keSA9IGZvcm1Cb2R5LmpvaW4oIiYiKTsKCgogdmFyIG9wdGlvbnMgPSB7CiAgdXJsOiAnaHR0cHM6Ly9iMnZhcGkuYm13Z3JvdXAuY29tL2djZG0vb2F1dGgvdG9rZW4nLAogIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsICdBdXRob3JpemF0aW9uJzogJ0Jhc2ljIFpEYzJObUkxTXpjdFlUWTFOQzAwWTJKa0xXRXpaR010TUdOaE5UWTNNbVEzWmpoa09qRTFaalk1TjJZMkxXRTFaRFV0TkdOaFpDMDVPV1E1TFROaE1UVmlZemRtTXprM013PT0nLCAnQ3JlZGVudGlhbHMnOiAnblF2NkNxdHhKdVhXUDc0eGYzQ0p3VUVQOjF6REh4NnVuNGNEanliTEVOTjNreWZ1bVgya0VZaWdXUGNRcGR2RFJwSUJrN3JPSid9LAogIGJvZHk6IGZvcm1Cb2R5Cn07CiAKZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlLCBib2R5KSB7CnZhciByZXN1bHQgPSBKU09OLnBhcnNlKGJvZHkpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIvKlRva2VuKi8sICgnJyArIHJlc3VsdC5hY2Nlc3NfdG9rZW4pKTsKfQogIApyZXF1ZXN0LnBvc3Qob3B0aW9ucywgY2FsbGJhY2spOw==</field>
                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                      </block>
                      <block type="create" id="!Bqw.`_nnd;$sm~A@{Q3" x="437" y="-338">
                        <field name="NAME">0_userdata.0.BMW.NeuerToken</field>
                        <value name="COMMON">
                          <block type="text" id="!:1H2(OE_?WjY60~:*g0">
                            <field name="TEXT">{"name": "NeuerToken","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                          </block>
                        </value>
                        <next>
                          <block type="create" id="13]PXp{s02GRS^2rU@5p">
                            <field name="NAME">0_userdata.0.BMW.Token</field>
                            <value name="COMMON">
                              <block type="text" id="{i=WwB;}YuxwEcmD6j)/">
                                <field name="TEXT">{"name": "Token","role": "","type": "string","desc": "Manuell erzeugt","def": "","read": true,"write": true}</field>
                              </block>
                            </value>
                            <next>
                              <block type="create" id="+F7.+]A.3oWYgBO;o3l@">
                                <field name="NAME">0_userdata.0.BMW.Klimatisieren</field>
                                <value name="COMMON">
                                  <block type="text" id="/Ls,.mwrB1gtt4n,OtP?">
                                    <field name="TEXT">{"name": "Klimatisieren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                  </block>
                                </value>
                                <next>
                                  <block type="create" id="9+lYiXoKcCC}@ra33swp">
                                    <field name="NAME">0_userdata.0.BMW.Hupen</field>
                                    <value name="COMMON">
                                      <block type="text" id="u:n1k-I|L=F=8?JMe!(l">
                                        <field name="TEXT">{"name": "Hupen","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="create" id="5x9-eg*nuFpH[i2~aI4g">
                                        <field name="NAME">0_userdata.0.BMW.Aufsperren</field>
                                        <value name="COMMON">
                                          <block type="text" id="vGXV2B#+A==u5HFC!tRT">
                                            <field name="TEXT">{"name": "Aufsperren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                          </block>
                                        </value>
                                        <next>
                                          <block type="create" id="qfuj7fsIN;X0S`.s~:/1">
                                            <field name="NAME">0_userdata.0.BMW.Zusperren</field>
                                            <value name="COMMON">
                                              <block type="text" id="lG?k08n8yap6EBCwv;kF">
                                                <field name="TEXT">{"name": "Zusperren","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                              </block>
                                            </value>
                                            <next>
                                              <block type="create" id="g27XDJ5cUzQMp;IDa?0V">
                                                <field name="NAME">0_userdata.0.BMW.Lichthupe</field>
                                                <value name="COMMON">
                                                  <block type="text" id="%#XQ;ro0{u(B56z26$C@">
                                                    <field name="TEXT">{"name": "Lichthupe","role": "button","type": "boolean","read": true,"write": true, "desc": "Manuell erzeugt","def": false}</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </next>
                                          </block>
                                        </next>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                      <block type="on" id=")QODy$[H-(7lc9HPc%Xx" x="12" y="-263">
                        <field name="OID">0_userdata.0.BMW.NeuerToken</field>
                        <field name="CONDITION">any</field>
                        <field name="ACK_CONDITION">false</field>
                        <statement name="STATEMENT">
                          <block type="controls_if" id="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="Token abfragen"></mutation>
                              </block>
                            </statement>
                          </block>
                        </statement>
                        <next>
                          <block type="schedule" id="6.1-pU|?K[LZXvgI}cvN">
                            <field name="SCHEDULE">*/60 * * * *</field>
                            <statement name="STATEMENT">
                              <block type="procedures_callcustomnoreturn" id="S_QWZ%P:XPQ1H8HWO%9)">
                                <mutation name="Token abfragen"></mutation>
                              </block>
                            </statement>
                            <next>
                              <block type="procedures_callcustomnoreturn" id="sCCxQw~6kxo3.d^m)Pp-">
                                <mutation name="Token abfragen"></mutation>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </xml>
                    

                    Und hier das zweite Blockly "Befehle"
                    Hier müsst ihr eure VIN (Fahrgestellnummer) in ALLE Javascriptfunktionen eintragen.
                    Bei "Aufsperren" müsst ihr ganz oben zusätzlich die Sicherheitsantwort aus dem BMW Portal angeben.

                    <xml xmlns="https://developers.google.com/blockly/xml">
                      <block type="on" id=")QODy$[H-(7lc9HPc%Xx" x="13" y="-287">
                        <field name="OID">0_userdata.0.BMW.Klimatisieren</field>
                        <field name="CONDITION">any</field>
                        <field name="ACK_CONDITION">false</field>
                        <statement name="STATEMENT">
                          <block type="controls_if" id="qi2OU5y9AjO|pE1=!(W`">
                            <value name="IF0">
                              <block type="on_source" id="]6?RDB6_qbNs}FH@FT/5">
                                <field name="ATTR">state.val</field>
                              </block>
                            </value>
                            <statement name="DO0">
                              <block type="procedures_callcustomnoreturn" id="DC)Em1Ehbz1LW6fj[K!7">
                                <mutation name="Klimatisieren"></mutation>
                                <next>
                                  <block type="update" id="?@kSoXR52NIAnmTbP@is">
                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                    <field name="OID">0_userdata.0.BMW.Klimatisieren</field>
                                    <field name="WITH_DELAY">TRUE</field>
                                    <field name="DELAY_MS">1000</field>
                                    <field name="UNIT">ms</field>
                                    <field name="CLEAR_RUNNING">FALSE</field>
                                    <value name="VALUE">
                                      <block type="logic_boolean" id="K/F}wA*$n:5CnQHpYr@$">
                                        <field name="BOOL">FALSE</field>
                                      </block>
                                    </value>
                                  </block>
                                </next>
                              </block>
                            </statement>
                          </block>
                        </statement>
                        <next>
                          <block type="on" id="DO.4#e50zzBReVkXk5yb">
                            <field name="OID">0_userdata.0.BMW.Zusperren</field>
                            <field name="CONDITION">any</field>
                            <field name="ACK_CONDITION">false</field>
                            <statement name="STATEMENT">
                              <block type="controls_if" id="OiM7;RsdIpMs*67U$W1}">
                                <value name="IF0">
                                  <block type="on_source" id="DUggLU3jpKTMWDwchY@Q">
                                    <field name="ATTR">state.val</field>
                                  </block>
                                </value>
                                <statement name="DO0">
                                  <block type="procedures_callcustomnoreturn" id="hY^fO{SGL}0AzHm[W~Fl">
                                    <mutation name="Zusperren"></mutation>
                                    <next>
                                      <block type="update" id="9rlPG|IAAhKHcZ|+99|z">
                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                        <field name="OID">0_userdata.0.BMW.Zusperren</field>
                                        <field name="WITH_DELAY">TRUE</field>
                                        <field name="DELAY_MS">1000</field>
                                        <field name="UNIT">ms</field>
                                        <field name="CLEAR_RUNNING">FALSE</field>
                                        <value name="VALUE">
                                          <block type="logic_boolean" id="0,a9ZN|M|PkAi}n*T19O">
                                            <field name="BOOL">FALSE</field>
                                          </block>
                                        </value>
                                      </block>
                                    </next>
                                  </block>
                                </statement>
                              </block>
                            </statement>
                            <next>
                              <block type="on" id="Mt2*}WFoiR5--row2T8H">
                                <field name="OID">0_userdata.0.BMW.Aufsperren</field>
                                <field name="CONDITION">any</field>
                                <field name="ACK_CONDITION">false</field>
                                <statement name="STATEMENT">
                                  <block type="controls_if" id="1tfzyj?EGI~c[$sfM,=H">
                                    <value name="IF0">
                                      <block type="on_source" id="L-qx[QjgE7YK^@QoxL?s">
                                        <field name="ATTR">state.val</field>
                                      </block>
                                    </value>
                                    <statement name="DO0">
                                      <block type="procedures_callcustomnoreturn" id="n,S8U%3H3QzLAxik#m6U">
                                        <mutation name="Aufsperren"></mutation>
                                        <next>
                                          <block type="update" id="!W;+jZdtO4Z$.N{oZ!~u">
                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                            <field name="OID">0_userdata.0.BMW.Aufsperren</field>
                                            <field name="WITH_DELAY">TRUE</field>
                                            <field name="DELAY_MS">1000</field>
                                            <field name="UNIT">ms</field>
                                            <field name="CLEAR_RUNNING">FALSE</field>
                                            <value name="VALUE">
                                              <block type="logic_boolean" id="i7H=1Q%)]bTWwtb,mZL^">
                                                <field name="BOOL">FALSE</field>
                                              </block>
                                            </value>
                                          </block>
                                        </next>
                                      </block>
                                    </statement>
                                  </block>
                                </statement>
                                <next>
                                  <block type="on" id="x3sA~Bo,9#W8+0QQ4?Mk">
                                    <field name="OID">0_userdata.0.BMW.Lichthupe</field>
                                    <field name="CONDITION">any</field>
                                    <field name="ACK_CONDITION">false</field>
                                    <statement name="STATEMENT">
                                      <block type="controls_if" id="g^t/])A_OBmH:}D:7hx1">
                                        <value name="IF0">
                                          <block type="on_source" id="Qk9]ZT(6`yuT9IJ1mS#h">
                                            <field name="ATTR">state.val</field>
                                          </block>
                                        </value>
                                        <statement name="DO0">
                                          <block type="procedures_callcustomnoreturn" id="KVXZu3,oTqe$DHeLgS{e">
                                            <mutation name="Lichthupe"></mutation>
                                            <next>
                                              <block type="update" id="8viE(:=_WA,IPGi~+0MV">
                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                <field name="OID">0_userdata.0.BMW.Lichthupe</field>
                                                <field name="WITH_DELAY">TRUE</field>
                                                <field name="DELAY_MS">1000</field>
                                                <field name="UNIT">ms</field>
                                                <field name="CLEAR_RUNNING">FALSE</field>
                                                <value name="VALUE">
                                                  <block type="logic_boolean" id="3KW3b{O(!n=5:mg(M_Wv">
                                                    <field name="BOOL">FALSE</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </next>
                                          </block>
                                        </statement>
                                      </block>
                                    </statement>
                                    <next>
                                      <block type="on" id=".`HU#5P7{T)o:1xn*a/?">
                                        <field name="OID">0_userdata.0.BMW.Hupen</field>
                                        <field name="CONDITION">any</field>
                                        <field name="ACK_CONDITION">false</field>
                                        <statement name="STATEMENT">
                                          <block type="controls_if" id="Qrr/!E+TuG7Gq66FQA;5">
                                            <value name="IF0">
                                              <block type="on_source" id="mvXJMfS$OdG+L~5/z^rY">
                                                <field name="ATTR">state.val</field>
                                              </block>
                                            </value>
                                            <statement name="DO0">
                                              <block type="procedures_callcustomnoreturn" id="Gi$6[_*-6XPaypdt!S%S">
                                                <mutation name="Hupen"></mutation>
                                                <next>
                                                  <block type="update" id="GWaADA}?}4ONL*[A[7Fi">
                                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                    <field name="OID">0_userdata.0.BMW.Hupen</field>
                                                    <field name="WITH_DELAY">TRUE</field>
                                                    <field name="DELAY_MS">1000</field>
                                                    <field name="UNIT">ms</field>
                                                    <field name="CLEAR_RUNNING">FALSE</field>
                                                    <value name="VALUE">
                                                      <block type="logic_boolean" id="f^.-6^1JVE#^ag9aE_/X">
                                                        <field name="BOOL">FALSE</field>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </next>
                                              </block>
                                            </statement>
                                          </block>
                                        </statement>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                      <block type="procedures_defcustomnoreturn" id="C|Hc:`b-c/c[Tgs1y:IM" x="263" y="-287">
                        <mutation statements="false"></mutation>
                        <field name="NAME">Klimatisieren</field>
                        <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0NMSU1BVEVfTk9XJwp9OwogCnZhciBmb3JtQm9keSA9IFtdOwpmb3IgKHZhciBwcm9wZXJ0eSBpbiBkZXRhaWxzKSB7CiAgdmFyIGVuY29kZWRLZXkgPSBlbmNvZGVVUklDb21wb25lbnQocHJvcGVydHkpOwogIHZhciBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQoZGV0YWlsc1twcm9wZXJ0eV0pOwogIGZvcm1Cb2R5LnB1c2goZW5jb2RlZEtleSArICI9IiArIGVuY29kZWRWYWx1ZSk7Cn0KZm9ybUJvZHkgPSBmb3JtQm9keS5qb2luKCImIik7CgoKIHZhciBvcHRpb25zID0gewogIHVybDogJ2h0dHBzOi8vYjJ2YXBpLmJtd2dyb3VwLmNvbS93ZWJhcGkvdjEvdXNlci92ZWhpY2xlcy9WSU4vZXhlY3V0ZVNlcnZpY2UnLCAvKkhpZXIgVklOIG1pdCBldXJlciBWSU4gZXJzZXR6dGVuKi8KICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfSwKICBhdXRoOiB7CiAgICBiZWFyZXI6IChnZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIpLnZhbCl9LAogIGJvZHk6IGZvcm1Cb2R5Cn07CgpmdW5jdGlvbiBjYWxsYmFjayhlcnJvciwgcmVzcG9uc2UsIGJvZHkpIHsKdmFyIHJlc3VsdCA9IEpTT04ucGFyc2UoYm9keSk7Ci8qY29uc29sZS5sb2cocmVzdWx0KSovCn0KCgpyZXF1ZXN0LnBvc3Qob3B0aW9ucywgY2FsbGJhY2spOw==</field>
                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                      </block>
                      <block type="procedures_defcustomnoreturn" id="[nCTA52$4Wk}$Z+;/Ybc" x="263" y="-62">
                        <mutation statements="false"></mutation>
                        <field name="NAME">Zusperren</field>
                        <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0RPT1JfTE9DSycKfTsKIAp2YXIgZm9ybUJvZHkgPSBbXTsKZm9yICh2YXIgcHJvcGVydHkgaW4gZGV0YWlscykgewogIHZhciBlbmNvZGVkS2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KHByb3BlcnR5KTsKICB2YXIgZW5jb2RlZFZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KGRldGFpbHNbcHJvcGVydHldKTsKICBmb3JtQm9keS5wdXNoKGVuY29kZWRLZXkgKyAiPSIgKyBlbmNvZGVkVmFsdWUpOwp9CmZvcm1Cb2R5ID0gZm9ybUJvZHkuam9pbigiJiIpOwoKCiB2YXIgb3B0aW9ucyA9IHsKICB1cmw6ICdodHRwczovL2IydmFwaS5ibXdncm91cC5jb20vd2ViYXBpL3YxL3VzZXIvdmVoaWNsZXMvVklOL2V4ZWN1dGVTZXJ2aWNlJywgLypIaWVyIFZJTiBtaXQgZXVyZXIgVklOIGVyc2V0enRlbiovCiAgaGVhZGVyczogeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ30sCiAgYXV0aDogewogICAgYmVhcmVyOiAoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iKS52YWwpfSwKICBib2R5OiBmb3JtQm9keQp9OwoKZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlLCBib2R5KSB7CnZhciByZXN1bHQgPSBKU09OLnBhcnNlKGJvZHkpOwovKmNvbnNvbGUubG9nKHJlc3VsdCkqLwp9CgoKcmVxdWVzdC5wb3N0KG9wdGlvbnMsIGNhbGxiYWNrKTs=</field>
                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                      </block>
                      <block type="procedures_defcustomnoreturn" id="J)0OO1_$ZW[Tc_/ko95F" x="263" y="188">
                        <mutation statements="false"></mutation>
                        <field name="NAME">Aufsperren</field>
                        <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0RPT1JfVU5MT0NLJywKICAgICdibXdTa0Fuc3dlcic6ICdTaWNoZXJoZWl0c2FudHdvcnQnIC8qSGllciBldXJlIFNpY2hlcmhlaXRzYW50d29ydCBlaW5nZWJlbiovCn07CiAKdmFyIGZvcm1Cb2R5ID0gW107CmZvciAodmFyIHByb3BlcnR5IGluIGRldGFpbHMpIHsKICB2YXIgZW5jb2RlZEtleSA9IGVuY29kZVVSSUNvbXBvbmVudChwcm9wZXJ0eSk7CiAgdmFyIGVuY29kZWRWYWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChkZXRhaWxzW3Byb3BlcnR5XSk7CiAgZm9ybUJvZHkucHVzaChlbmNvZGVkS2V5ICsgIj0iICsgZW5jb2RlZFZhbHVlKTsKfQpmb3JtQm9keSA9IGZvcm1Cb2R5LmpvaW4oIiYiKTsKCgogdmFyIG9wdGlvbnMgPSB7CiAgIHVybDogJ2h0dHBzOi8vYjJ2YXBpLmJtd2dyb3VwLmNvbS93ZWJhcGkvdjEvdXNlci92ZWhpY2xlcy9WSU4vZXhlY3V0ZVNlcnZpY2UnLCAvKkhpZXIgVklOIG1pdCBldXJlciBWSU4gZXJzZXR6dGVuKi8KICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfSwKICBhdXRoOiB7CiAgICBiZWFyZXI6IChnZXRTdGF0ZSgiMF91c2VyZGF0YS4wLkJNVy5Ub2tlbiIpLnZhbCl9LAogIGJvZHk6IGZvcm1Cb2R5Cn07CgpmdW5jdGlvbiBjYWxsYmFjayhlcnJvciwgcmVzcG9uc2UsIGJvZHkpIHsKdmFyIHJlc3VsdCA9IEpTT04ucGFyc2UoYm9keSk7Ci8qY29uc29sZS5sb2cocmVzdWx0KSovCn0KCgpyZXF1ZXN0LnBvc3Qob3B0aW9ucywgY2FsbGJhY2spOw==</field>
                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                      </block>
                      <block type="procedures_defcustomnoreturn" id=",hTkY9![0|J~J!B_c8t+" x="263" y="413">
                        <mutation statements="false"></mutation>
                        <field name="NAME">Lichthupe</field>
                        <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0xJR0hUX0ZMQVNIJwp9OwogCnZhciBmb3JtQm9keSA9IFtdOwpmb3IgKHZhciBwcm9wZXJ0eSBpbiBkZXRhaWxzKSB7CiAgdmFyIGVuY29kZWRLZXkgPSBlbmNvZGVVUklDb21wb25lbnQocHJvcGVydHkpOwogIHZhciBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQoZGV0YWlsc1twcm9wZXJ0eV0pOwogIGZvcm1Cb2R5LnB1c2goZW5jb2RlZEtleSArICI9IiArIGVuY29kZWRWYWx1ZSk7Cn0KZm9ybUJvZHkgPSBmb3JtQm9keS5qb2luKCImIik7CgoKIHZhciBvcHRpb25zID0gewogICB1cmw6ICdodHRwczovL2IydmFwaS5ibXdncm91cC5jb20vd2ViYXBpL3YxL3VzZXIvdmVoaWNsZXMvVklOL2V4ZWN1dGVTZXJ2aWNlJywgLypIaWVyIFZJTiBtaXQgZXVyZXIgVklOIGVyc2V0enRlbiovCiAgaGVhZGVyczogeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ30sCiAgYXV0aDogewogICAgYmVhcmVyOiAoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iKS52YWwpfSwKICBib2R5OiBmb3JtQm9keQp9OwoKZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlLCBib2R5KSB7CnZhciByZXN1bHQgPSBKU09OLnBhcnNlKGJvZHkpOwovKmNvbnNvbGUubG9nKHJlc3VsdCkqLwp9CgoKcmVxdWVzdC5wb3N0KG9wdGlvbnMsIGNhbGxiYWNrKTs=</field>
                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                      </block>
                      <block type="procedures_defcustomnoreturn" id=".](occ0C^rIaxJ7Qge8!" x="263" y="663">
                        <mutation statements="false"></mutation>
                        <field name="NAME">Hupen</field>
                        <field name="SCRIPT">dmFyIGh0dHBzID0gcmVxdWlyZSgiaHR0cHMiKTsKdmFyIHJlcXVlc3QgPSByZXF1aXJlKCJyZXF1ZXN0Iik7CnZhciBkZXRhaWxzID0gewogICAgJ3NlcnZpY2VUeXBlJzogJ0hPUk5fQkxPVycKfTsKIAp2YXIgZm9ybUJvZHkgPSBbXTsKZm9yICh2YXIgcHJvcGVydHkgaW4gZGV0YWlscykgewogIHZhciBlbmNvZGVkS2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KHByb3BlcnR5KTsKICB2YXIgZW5jb2RlZFZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KGRldGFpbHNbcHJvcGVydHldKTsKICBmb3JtQm9keS5wdXNoKGVuY29kZWRLZXkgKyAiPSIgKyBlbmNvZGVkVmFsdWUpOwp9CmZvcm1Cb2R5ID0gZm9ybUJvZHkuam9pbigiJiIpOwoKCiB2YXIgb3B0aW9ucyA9IHsKICB1cmw6ICdodHRwczovL2IydmFwaS5ibXdncm91cC5jb20vd2ViYXBpL3YxL3VzZXIvdmVoaWNsZXMvVklOL2V4ZWN1dGVTZXJ2aWNlJywgLypIaWVyIFZJTiBtaXQgZXVyZXIgVklOIGVyc2V0enRlbiovCiAgaGVhZGVyczogeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ30sCiAgYXV0aDogewogICAgYmVhcmVyOiAoZ2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5CTVcuVG9rZW4iKS52YWwpfSwKICBib2R5OiBmb3JtQm9keQp9OwoKZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHJlc3BvbnNlLCBib2R5KSB7CnZhciByZXN1bHQgPSBKU09OLnBhcnNlKGJvZHkpOwovKmNvbnNvbGUubG9nKHJlc3VsdCkqLwp9CgoKcmVxdWVzdC5wb3N0KG9wdGlvbnMsIGNhbGxiYWNrKTs=</field>
                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                      </block>
                    </xml>
                    
                    S Offline
                    S Offline
                    Stefan Hanke
                    schrieb am zuletzt editiert von
                    #191

                    @strobelix

                    ...funktioniert einwandfrei, perfekt, VIELEN DANK !!!
                    😊👍

                    1 Antwort Letzte Antwort
                    0
                    • F fastfoot

                      @strobelix Vielen Dank, mal sehen ob ich noch was finde zum Einbauen...

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

                      @fastfoot
                      Der nächste Schritt wäre natürlich das Blockly mit Variablen zu füllen, damit man die Daten seines BMW nur 1x eintragen muss. Aber ich wollte euch das so schnell es geht zur Verfügung stellen.

                      Danach könnte man (nach einer Funktionsauslösung) natürlich den Remotestatus abfragen, ob der Befehl auch verarbeitet wurde.
                      Aber das im nächsten Schritt

                      Aber mir was es jetzt wichtig die fehlenden Funktionen einzubauen, denn die Standheizung bei meinem Hybrid ist natürlich erst perfekt, wenn ich sie per ioBroker mitnutzen kann

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

                      1 Antwort Letzte Antwort
                      1
                      • bahnuhrB bahnuhr

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

                        Wo finde ich diese Sicherheitsantwort?

                        Im Browser in connected drive anmelden, dann:
                        2b7b7919-1c25-47c6-a91d-f4e7ef89f7af-image.png

                        Hier:
                        04e9bf66-e467-4cc3-922c-dd073d7b6000-image.png

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

                        @bahnuhr Danke Dir, ich war seit der Ersteinrichtung vor Jahren nicht mehr im Portal, da hätte ich nicht gesucht

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

                        1 Antwort Letzte Antwort
                        0
                        • bahnuhrB Online
                          bahnuhrB Online
                          bahnuhr
                          Forum Testing Most Active
                          schrieb am zuletzt editiert von bahnuhr
                          #194

                          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


                          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

                          M S E 3 Antworten Letzte Antwort
                          1
                          • 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

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

                            @bahnuhr

                            Supergeil.. vom ersten BMW Adapter war ich auch immer ein bisschen enttäuscht, da man ja nix steuern konnte ... Aber so .. Hut ab !!!

                            Läuft bei mir auf Anhieb,

                            Beim Zusperren bleiben die Spiegel ausgefahren ?

                            Und die BMW-Api ist ja echt superschnell :-)

                            Grüße,

                            Martin

                            bahnuhrB 1 Antwort Letzte Antwort
                            0
                            • bahnuhrB Online
                              bahnuhrB Online
                              bahnuhr
                              Forum Testing Most Active
                              schrieb am zuletzt editiert von
                              #196

                              @Strobelix
                              Ne Frage zu deinem blockly.

                              Warum holst du den Token jede Stunde ?
                              Wäre es nicht einfacher/sinnvoller diesen nur zu holen wenn man ihn braucht

                              mfg
                              Dieter


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

                              1 Antwort Letzte Antwort
                              0
                              • M mameier1234

                                @bahnuhr

                                Supergeil.. vom ersten BMW Adapter war ich auch immer ein bisschen enttäuscht, da man ja nix steuern konnte ... Aber so .. Hut ab !!!

                                Läuft bei mir auf Anhieb,

                                Beim Zusperren bleiben die Spiegel ausgefahren ?

                                Und die BMW-Api ist ja echt superschnell :-)

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

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

                                Beim Zusperren bleiben die Spiegel ausgefahren ?

                                Bei mir werden die Spiegel eingefahren wenn ich länger auf zu klicke und halte.

                                Scheint per api nicht zu funktionieren.


                                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

                                M 1 Antwort Letzte Antwort
                                0
                                • bahnuhrB bahnuhr

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

                                  Beim Zusperren bleiben die Spiegel ausgefahren ?

                                  Bei mir werden die Spiegel eingefahren wenn ich länger auf zu klicke und halte.

                                  Scheint per api nicht zu funktionieren.

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

                                  @bahnuhr

                                  Aufsperren geht einwandfrei (ich sehe das Auto...) Auto blinkt, Spiegel fahren auf....

                                  Aber in der BMW App bleibt der Status auf "Verriegelt" ....

                                  Wenn ich dann in der BMW App verriegele, sehe ich aber , dass diesmal der Blinker nicht blinkt , Status in der App ist immer noch Verriegelt und im Verlauf steht: Verriegeln erfolgreich. Wenn ich dann mit dem Schlüssel ganz normal kurz auf Abschließen klicke, blinkt er, die Spiegel fahren ein...

                                  Grüße,

                                  Martin

                                  S 1 Antwort Letzte Antwort
                                  0
                                  • M mameier1234

                                    @bahnuhr

                                    Aufsperren geht einwandfrei (ich sehe das Auto...) Auto blinkt, Spiegel fahren auf....

                                    Aber in der BMW App bleibt der Status auf "Verriegelt" ....

                                    Wenn ich dann in der BMW App verriegele, sehe ich aber , dass diesmal der Blinker nicht blinkt , Status in der App ist immer noch Verriegelt und im Verlauf steht: Verriegeln erfolgreich. Wenn ich dann mit dem Schlüssel ganz normal kurz auf Abschließen klicke, blinkt er, die Spiegel fahren ein...

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

                                    @mameier1234

                                    Also die Spiegel klappen bei mir per App oder Api grundsätzlich nicht ein. Keine Ahnung warum.

                                    @bahnuhr
                                    Der Token ist 3600sekunden gültig, daher hole ich ihn stündlich ab.
                                    Natürlich reicht das auch „bei Bedarf“, ich weiss aber nicht was die Api macht, wenn man mehrere Befehle in kurzer Zeit abgibt und dazu jedesmal einen neuen Token holt

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

                                    1 Antwort Letzte Antwort
                                    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

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

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

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

                                      S 1 Antwort Letzte Antwort
                                      0
                                      • S Strobelix

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

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

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

                                        Hier das "neue" Blockly:

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

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

                                        M S 2 Antworten Letzte Antwort
                                        1
                                        • S Strobelix

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

                                          Hier das "neue" Blockly:

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

                                          @strobelix Einfach Klasse !

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

                                          Grüße,

                                          Martin

                                          bahnuhrB S 2 Antworten Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

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

                                          833

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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