NEWS
Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten
-
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 natĂŒrlich den Remotestatus abfragen, ob der Befehl auch verarbeitet wurde.
Aber das im nĂ€chsten SchrittAber 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
-
@fastfoot sagte in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:
Wo finde ich diese Sicherheitsantwort?
Im Browser in connected drive anmelden, dann:

Hier:

-
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:
Und dann das eigentliche Script:
Jeder der will, kann es gerne benutzen.
mfg
Dieter -
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:
Und dann das eigentliche Script:
Jeder der will, kann es gerne benutzen.
mfg
DieterSupergeil.. 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 :-)
-
@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 brauchtmfg
Dieter -
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 :-)
@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.
-
@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.
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...
-
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...
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 -
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:
Und dann das eigentliche Script:
Jeder der will, kann es gerne benutzen.
mfg
Dieter -
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> -
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>@strobelix Einfach Klasse !
Wenn wir jetzt noch die Statusabfragen hÀtten, dann wÀre es end-Perfekt !!
-
@strobelix Einfach Klasse !
Wenn wir jetzt noch die Statusabfragen hÀtten, dann wÀre es end-Perfekt !!
@mameier1234 sagte in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:
@strobelix Einfach Klasse !
Wenn wir jetzt noch die Statusabfragen hÀtten, dann wÀre es end-Perfekt !!
Ja, der Befehl wÀre wohl so was:

Habs aber bisher noch nicht hinbekommen.
Vielleicht hat @Strobelix eine Idee
-
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>...FĂŒr alle die sich in Blockly "mehr zu Hause" fĂŒhlen als in reinem JS, habe ich das hier noch mal verschönert....
...sensationell, herzlichen Dank !!!
đđđ
-
@mameier1234 sagte in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:
@strobelix Einfach Klasse !
Wenn wir jetzt noch die Statusabfragen hÀtten, dann wÀre es end-Perfekt !!
Ja, der Befehl wÀre wohl so was:

Habs aber bisher noch nicht hinbekommen.
Vielleicht hat @Strobelix eine Idee
-
@strobelix Einfach Klasse !
Wenn wir jetzt noch die Statusabfragen hÀtten, dann wÀre es end-Perfekt !!
@mameier1234
Meinst du den Status der Remotebefehle oder die gesamten Statusmeldungen/ZustÀnde des Fahrzeugs? -
Am Status bin ich dran, allerdings liefert der BMW Server da eine Fehlermeldung a la âserver overloadâ oder so Ă€hnlich.
Ich probiere es weiter und geb RĂŒckmeldung
@strobelix sagte in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:
BMW Server da eine Fehlermeldung
Bei mir nicht.
var VIN = "WBA5xxxxxxx" // VIN vom BMW var Obj_Token = "javascript.0.GerĂ€te.BMW.Token" var send = { url: 'https://b2vapi.bmwgroup.com/webapi/v1/user/vehicles/' + VIN + '/serviceExecutionStatus?serviceType=LIGHT_FLASH', headers: {'Content-Type': 'application/x-www-form-urlencoded'}, auth: { bearer: (getState(Obj_Token).val)} }; setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 3000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 6000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 9000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 12000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 15000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 18000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 21000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 24000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 27000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 30000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 33000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 36000);ich bekomme zurĂŒck:
javascript.0 2021-01-31 19:37:53.275 info (1062) script.js.Scripte.test4: callback= {"executionStatus":{"serviceType":"LIGHT_FLASH","status":"EXECUTED","eventId":"4732393336303527A9992900@bmw.de","extendedStatus":{"result":"STATUS_CHANGED","i javascript.0 2021-01-31 19:37:50.275 info (1062) script.js.Scripte.test4: callback= {"executionStatus":{"serviceType":"LIGHT_FLASH","status":"EXECUTED","eventId":"4732393336303527A9992900@bmw.de","extendedStatus":{"result":"STATUS_CHANGED","i javascript.0 2021-01-31 19:37:47.301 info (1062) script.js.Scripte.test4: callback= {"executionStatus":{"serviceType":"LIGHT_FLASH","status":"EXECUTED","eventId":"4732393336303527A9992900@bmw.de","extendedStatus":{"result":"STATUS_CHANGED"," -
@strobelix sagte in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:
BMW Server da eine Fehlermeldung
Bei mir nicht.
var VIN = "WBA5xxxxxxx" // VIN vom BMW var Obj_Token = "javascript.0.GerĂ€te.BMW.Token" var send = { url: 'https://b2vapi.bmwgroup.com/webapi/v1/user/vehicles/' + VIN + '/serviceExecutionStatus?serviceType=LIGHT_FLASH', headers: {'Content-Type': 'application/x-www-form-urlencoded'}, auth: { bearer: (getState(Obj_Token).val)} }; setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 3000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 6000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 9000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 12000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 15000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 18000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 21000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 24000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 27000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 30000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 33000); setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 36000);ich bekomme zurĂŒck:
javascript.0 2021-01-31 19:37:53.275 info (1062) script.js.Scripte.test4: callback= {"executionStatus":{"serviceType":"LIGHT_FLASH","status":"EXECUTED","eventId":"4732393336303527A9992900@bmw.de","extendedStatus":{"result":"STATUS_CHANGED","i javascript.0 2021-01-31 19:37:50.275 info (1062) script.js.Scripte.test4: callback= {"executionStatus":{"serviceType":"LIGHT_FLASH","status":"EXECUTED","eventId":"4732393336303527A9992900@bmw.de","extendedStatus":{"result":"STATUS_CHANGED","i javascript.0 2021-01-31 19:37:47.301 info (1062) script.js.Scripte.test4: callback= {"executionStatus":{"serviceType":"LIGHT_FLASH","status":"EXECUTED","eventId":"4732393336303527A9992900@bmw.de","extendedStatus":{"result":"STATUS_CHANGED","@bahnuhr said in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:
var send = { url: 'https://b2vapi.bmwgroup.com/webapi/v1/user/vehicles/' + VIN + '/serviceExecutionStatus?serviceType=LIGHT_FLASH', headers: {'Content-Type': 'application/x-www-form-urlencoded'}, auth: { bearer: (getState(Obj_Token).val)} }; setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 3000);
Ich bekomme da leider ein
{'error':{'code':500,'description':'(SmartPhoneUtil-I-300) Unexpected error - server panic. Values to be returned cannot be converted to interface type.'}} -
@bahnuhr said in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:
var send = { url: 'https://b2vapi.bmwgroup.com/webapi/v1/user/vehicles/' + VIN + '/serviceExecutionStatus?serviceType=LIGHT_FLASH', headers: {'Content-Type': 'application/x-www-form-urlencoded'}, auth: { bearer: (getState(Obj_Token).val)} }; setTimeout(function(){ request(send, function (error, response, body) { log ("callback= " + body); })}, 3000);
Ich bekomme da leider ein
{'error':{'code':500,'description':'(SmartPhoneUtil-I-300) Unexpected error - server panic. Values to be returned cannot be converted to interface type.'}}@strobelix sagte in Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten:
code':500,'description':
bekomme ich auch wenn schon etwas lÀuft.
Beobachte in der BMW Handy App bei Verlauf ob es lÀuft oder eben nicht. -
@mameier1234
Meinst du den Status der Remotebefehle oder die gesamten Statusmeldungen/ZustĂ€nde des Fahrzeugs?@strobelix Ich meinte eigentlich den Status der ZustĂ€nde .. .Aber den Status der Remotebefehle , wĂ€re natĂŒrlich auch schön...
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen BeitrĂ€ge zu scrollen? Wenn du dich fĂŒr ein Konto anmeldest, kommst du immer genau dorthin zurĂŒck, wo du zuvor warst, und kannst dich ĂŒber neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und BeitrĂ€ge positiv bewerten, um anderen Community-Mitgliedern deine WertschĂ€tzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden đ
Registrieren Anmelden