Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Stefan Hanke last edited by

      @bahnuhr

      ...also der Adapter funktioniert bei mir einwandfrei, lediglich die States für die Connected-Funktionen, Klimaanlage, versperren etc. gibt es nicht mehr seit ich meinen 2020er BMW fahre.

      Deine Fehlermeldung 404 kann zumindest ich nicht bestätigen, hatte ich nicht mit dem Vorgänger und auch nicht mit meinem aktuellen Fahrzeug. Deshalb würde ich sagen wollen, der Adapter ist nicht fehlerhaft...

      Viele Grüße,
      Stefan

      bahnuhr 1 Reply Last reply Reply Quote 0
      • bahnuhr
        bahnuhr Forum Testing Most Active @Stefan Hanke last edited by

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

        @bahnuhr

        ...also der Adapter funktioniert bei mir einwandfrei, lediglich die States für die Connected-Funktionen, Klimaanlage, versperren etc. gibt es nicht mehr seit ich meinen 2020er BMW fahre.

        Deine Fehlermeldung 404 kann zumindest ich nicht bestätigen, hatte ich nicht mit dem Vorgänger und auch nicht mit meinem aktuellen Fahrzeug. Deshalb würde ich sagen wollen, der Adapter ist nicht fehlerhaft...

        Viele Grüße,
        Stefan

        Bei meinem eingestellten issue wurde die bmw api Änderung von jemand anderem bestätigt. Offensichtlich scheint dies bei dir nicht so zu sein.

        S 1 Reply Last reply Reply Quote 0
        • S
          Stefan Hanke @bahnuhr last edited by

          @bahnuhr

          ...ich bezweifle auch nicht Deine Fehlermeldung, wollte mit meiner Antwort nur signalisieren, dass es vermutlich nicht am Adapter generell liegt. Sonst würde ich ja auch diese Fehlermeldung bekommen und dem ist eben nicht so, bei mir funktioniert der absolut zuverlässig...

          Viele Grüße,
          Stefan

          1 Reply Last reply Reply Quote 0
          • OstfrieseUnterwegs
            OstfrieseUnterwegs last edited by

            Bei meinem 2017er 530d gibt's auch keine größeren Probleme eim Abfragen der Daten. Ab und an Fehlermeldungen, die waren aber schon immer da, weil BMW den Service nicht immer zufriedenstellend bereitstellt. Allerdings kann auch nicht mehr die Standheizung einschalten.

            N 1 Reply Last reply Reply Quote 0
            • N
              NetFritz @OstfrieseUnterwegs last edited by

              Hallo
              Ich habe den 225xe Hybrid seit 11/2020.
              Habe gestern nochmal die Zugangsdaten wie auf der BMW eDrive Seite
              eingegeben.
              Adapter neu gestartet, seit dem werden die Objekte ohne Fehlermeldungen
              aktualisiert.
              Gruß NetFritz

              1 Reply Last reply Reply Quote 0
              • bahnuhr
                bahnuhr Forum Testing Most Active last edited by

                nur zur Klarstellung:
                Das Einlesen der Werte funktioniert bei mir auch.

                Was nicht geht:
                Buttons für Lichthupe, Hupe, Klima, etc.

                Hier kommt 404.

                OstfrieseUnterwegs 1 Reply Last reply Reply Quote 0
                • OstfrieseUnterwegs
                  OstfrieseUnterwegs @bahnuhr last edited by

                  @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.

                  bahnuhr 1 Reply Last reply Reply Quote 0
                  • bahnuhr
                    bahnuhr Forum Testing Most Active @OstfrieseUnterwegs last edited by

                    @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 1 Reply Last reply Reply Quote 0
                    • S
                      Strobelix @bahnuhr last edited by 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 S 3 Replies Last reply Reply Quote 2
                      • bahnuhr
                        bahnuhr Forum Testing Most Active last edited by bahnuhr

                        @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

                        1 Reply Last reply Reply Quote 0
                        • F
                          fastfoot @Strobelix last edited by

                          @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 1 Reply Last reply Reply Quote 0
                          • S
                            Strobelix @fastfoot last edited by

                            @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 1 Reply Last reply Reply Quote 0
                            • F
                              fastfoot @Strobelix last edited by

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

                              S 1 Reply Last reply Reply Quote 0
                              • F
                                fastfoot @Strobelix last edited by

                                @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

                                bahnuhr 1 Reply Last reply Reply Quote 0
                                • bahnuhr
                                  bahnuhr Forum Testing Most Active @fastfoot last edited by

                                  @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 1 Reply Last reply Reply Quote 1
                                  • S
                                    Stefan Hanke @Strobelix last edited by

                                    @strobelix

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

                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      Strobelix @fastfoot last edited by Strobelix

                                      @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

                                      1 Reply Last reply Reply Quote 1
                                      • F
                                        fastfoot @bahnuhr last edited by

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

                                        1 Reply Last reply Reply Quote 0
                                        • bahnuhr
                                          bahnuhr Forum Testing Most Active last edited by 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 S E 3 Replies Last reply Reply Quote 1
                                          • M
                                            mameier1234 @bahnuhr last edited by

                                            @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 🙂

                                            bahnuhr 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

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

                                            492
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            49
                                            305
                                            55537
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo