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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. Twinkly - Basisfunktionen mit ioBroker steuern

NEWS

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

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

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

Twinkly - Basisfunktionen mit ioBroker steuern

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
69 Beiträge 8 Kommentatoren 9.8k Aufrufe 9 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • siggi85S Offline
    siggi85S Offline
    siggi85
    schrieb am zuletzt editiert von siggi85
    #1

    Ursprünglich habe ich ein kleines Blockly geschrieben (siehe unten in diesem Post). Allerdings hat mittlerweile @patrickbs96 ein wesentlich umfangreiches Skript erstellt, um Twinkly Systeme zu steuern. Die aktuelle Version davon könnt ihr hier finden.

    Für alle Fälle lasse ich mein altes Blockly hier drin, aber ich würde definitiv das Skript von @patrickbs96 empfehlen.

    Alt:
    Ich habe ein kleines Blockly geschrieben, was über Curl Aufrufe die API anfragt und damit Basisfunktionen steuerbar macht wie an/aus (letzte Szene) und die Helligkeit. Die Datenpunkte habe ich unter 0_userdata.0 gepackt.
    Damit das Ganze funktioniert, einfach die Datenpunkte importieren und im Blockly die IP-Adresse eures Twinkly Devices eintragen. Zusätzlich mit im Javascript Adapter das exec Kommando erlaubt sein. (Konfiguration in der JavaScript Instanz)

    Blockly

    <xml xmlns="https://developers.google.com/blockly/xml">
     <variables>
       <variable id="C2}3(QK:sjn_0;M@WXM6">ip-address</variable>
       <variable id="Li8l,iD*a4lAUfTrR./#">result</variable>
       <variable id="ATDr!5*=f1mXSwF*B31X">onoff</variable>
       <variable id="tvi|}J~k+`CSxDW?#-_G">login_list</variable>
       <variable type="timeout" id="timeout2">timeout2</variable>
       <variable type="timeout" id="timeout3">timeout3</variable>
       <variable type="timeout" id="timeout">timeout</variable>
     </variables>
     <block type="comment" id="7aO~bSI=}sBUF]!Uj5VW" x="113" y="-12">
       <field name="COMMENT">Hier die IP-Adresse des Twinkly angeben.</field>
       <next>
         <block type="variables_set" id="})]:dOnZEgaB;GwFMYm7">
           <field name="VAR" id="C2}3(QK:sjn_0;M@WXM6">ip-address</field>
           <value name="VALUE">
             <block type="text" id="UPk-=X649M@ReWw=d!/Y">
               <field name="TEXT">192.168.1.241</field>
             </block>
           </value>
           <next>
             <block type="on_ext" id="hjfZPnTX~Ue*9(8]/!;C">
               <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
               <field name="CONDITION">ne</field>
               <field name="ACK_CONDITION"></field>
               <value name="OID0">
                 <shadow type="field_oid" id="9twVsr7m@F^_y.SIh3v/">
                   <field name="oid">0_userdata.0.devices.twinkly1.on</field>
                 </shadow>
               </value>
               <statement name="STATEMENT">
                 <block type="controls_if" id="Vyh(4M|:$PiwH3:ODZ(v">
                   <mutation elseif="1"></mutation>
                   <value name="IF0">
                     <block type="on_source" id=".8e69^VPY]Vwj!#QB8;b">
                       <field name="ATTR">state.val</field>
                     </block>
                   </value>
                   <statement name="DO0">
                     <block type="variables_set" id="[Pbb5axB^[hOzmHwfPcs">
                       <field name="VAR" id="ATDr!5*=f1mXSwF*B31X">onoff</field>
                       <value name="VALUE">
                         <block type="text" id="qYAqrB@?4{kDiZ*iP5Nv">
                           <field name="TEXT">movie</field>
                         </block>
                       </value>
                     </block>
                   </statement>
                   <value name="IF1">
                     <block type="logic_negate" id="[)WH1r7P]c-i1[{xOXce">
                       <value name="BOOL">
                         <block type="on_source" id="LfiaUSvy[Zo`?iQA0%AA">
                           <field name="ATTR">state.val</field>
                         </block>
                       </value>
                     </block>
                   </value>
                   <statement name="DO1">
                     <block type="variables_set" id="$75d~3~;/E1{z?f6Uw`7">
                       <field name="VAR" id="ATDr!5*=f1mXSwF*B31X">onoff</field>
                       <value name="VALUE">
                         <block type="text" id="t`KFGE2EgS={pHOe({dy">
                           <field name="TEXT">off</field>
                         </block>
                       </value>
                     </block>
                   </statement>
                   <next>
                     <block type="exec" id="a8Xsf6X|RT_RKWu+m|4D">
                       <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                       <field name="WITH_STATEMENT">TRUE</field>
                       <field name="LOG"></field>
                       <value name="COMMAND">
                         <shadow type="text">
                           <field name="TEXT">text</field>
                         </shadow>
                         <block type="text_join" id="x.E)Ijwm[WHV!_bPRK4/">
                           <mutation items="9"></mutation>
                           <value name="ADD0">
                             <block type="text" id="bMn%~Q14lVR9+BCwRR/1">
                               <field name="TEXT">curl -d '{"mode":"</field>
                             </block>
                           </value>
                           <value name="ADD1">
                             <block type="variables_get" id="6yJXT{FImP5pG}/rrtNy">
                               <field name="VAR" id="ATDr!5*=f1mXSwF*B31X">onoff</field>
                             </block>
                           </value>
                           <value name="ADD2">
                             <block type="text" id="^ujE4oo_X%]da4,(ppuL">
                               <field name="TEXT">"}' -H 'Content-Type: application/json</field>
                             </block>
                           </value>
                           <value name="ADD3">
                             <block type="text_newline" id="c!_Px216Os[.$S/~rarw">
                               <field name="Type">\n</field>
                             </block>
                           </value>
                           <value name="ADD4">
                             <block type="text" id="$Fg2yhXiAQ){16U@!ZSu">
                               <field name="TEXT">X-Auth-Token: </field>
                             </block>
                           </value>
                           <value name="ADD5">
                             <block type="get_value" id="IXl+3AbS2B.l]YvbqzM6">
                               <field name="ATTR">val</field>
                               <field name="OID">0_userdata.0.devices.twinkly1.token</field>
                             </block>
                           </value>
                           <value name="ADD6">
                             <block type="text" id="S{EEHm.[zP|vcm#1tnS#">
                               <field name="TEXT">'  http://</field>
                             </block>
                           </value>
                           <value name="ADD7">
                             <block type="variables_get" id="]u@TMc}oUr*ZKNMfa4*r">
                               <field name="VAR" id="C2}3(QK:sjn_0;M@WXM6">ip-address</field>
                             </block>
                           </value>
                           <value name="ADD8">
                             <block type="text" id="bz;89=2*~U#c3SZm,`3R">
                               <field name="TEXT">/xled/v1/led/mode</field>
                             </block>
                           </value>
                         </block>
                       </value>
                       <statement name="STATEMENT">
                         <block type="control" id=")*EuNf:*?Mej|oX]c[YG">
                           <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                           <field name="OID">0_userdata.0.devices.twinkly1.last_response</field>
                           <field name="WITH_DELAY">FALSE</field>
                           <value name="VALUE">
                             <block type="variables_get" id="sO6_Jt^$^o?%u_FndEof">
                               <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                             </block>
                           </value>
                           <next>
                             <block type="controls_if" id="6G?]0D()J)}!$||^GZ[g">
                               <value name="IF0">
                                 <block type="logic_compare" id="{`cuuloZIeqXKe;Iydaw">
                                   <field name="OP">EQ</field>
                                   <value name="A">
                                     <block type="variables_get" id=".|80~sPZrcTq)~D%FLqS">
                                       <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                                     </block>
                                   </value>
                                   <value name="B">
                                     <block type="text" id="V1j|Yla.{Pkhx;t!dL5A">
                                       <field name="TEXT">Invalid Token</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <statement name="DO0">
                                 <block type="timeouts_settimeout" id="*hEGRE,x!rFyGvx1sGnk">
                                   <field name="NAME">timeout2</field>
                                   <field name="DELAY">1000</field>
                                   <field name="UNIT">ms</field>
                                   <statement name="STATEMENT">
                                     <block type="procedures_callnoreturn" id="47rDf|TIj){(r%S/jL|t">
                                       <mutation name="tokenerstellung"></mutation>
                                       <next>
                                         <block type="exec" id="vmrb/I[xcD|UrCR{N5,}">
                                           <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                                           <field name="WITH_STATEMENT">TRUE</field>
                                           <field name="LOG"></field>
                                           <value name="COMMAND">
                                             <shadow type="text" id="1oqX0]_@1GCaqA|AYG9V">
                                               <field name="TEXT">text</field>
                                             </shadow>
                                             <block type="text_join" id=";|wMTJLvzMlbPBE.f}8(">
                                               <mutation items="9"></mutation>
                                               <value name="ADD0">
                                                 <block type="text" id="vSqJqFViMtF_b70KZZ4U">
                                                   <field name="TEXT">curl -d '{"mode":"</field>
                                                 </block>
                                               </value>
                                               <value name="ADD1">
                                                 <block type="variables_get" id="iL*:FiISRruR#*B:SpWU">
                                                   <field name="VAR" id="ATDr!5*=f1mXSwF*B31X">onoff</field>
                                                 </block>
                                               </value>
                                               <value name="ADD2">
                                                 <block type="text" id="_H7ZwE!fF3Lh:;B6+mC`">
                                                   <field name="TEXT">"}' -H 'Content-Type: application/json</field>
                                                 </block>
                                               </value>
                                               <value name="ADD3">
                                                 <block type="text_newline" id="EMmO8}AnS:G1L0.zG*(K">
                                                   <field name="Type">\n</field>
                                                 </block>
                                               </value>
                                               <value name="ADD4">
                                                 <block type="text" id="IffU.a}O8pGD]^*9G,e5">
                                                   <field name="TEXT">X-Auth-Token: </field>
                                                 </block>
                                               </value>
                                               <value name="ADD5">
                                                 <block type="get_value" id="KN#wwJ9wRg[}}Tbh4A)S">
                                                   <field name="ATTR">val</field>
                                                   <field name="OID">0_userdata.0.devices.twinkly1.token</field>
                                                 </block>
                                               </value>
                                               <value name="ADD6">
                                                 <block type="text" id="?QBxH#Gn#va8-Fur=Mri">
                                                   <field name="TEXT">'  http://</field>
                                                 </block>
                                               </value>
                                               <value name="ADD7">
                                                 <block type="variables_get" id="F8ff%~_KvjsS/r{.$)!A">
                                                   <field name="VAR" id="C2}3(QK:sjn_0;M@WXM6">ip-address</field>
                                                 </block>
                                               </value>
                                               <value name="ADD8">
                                                 <block type="text" id="bZ1Z,*N[OcaWiEp;f%P8">
                                                   <field name="TEXT">/xled/v1/led/mode</field>
                                                 </block>
                                               </value>
                                             </block>
                                           </value>
                                           <statement name="STATEMENT">
                                             <block type="control" id="Dq-:j;brnrXMKn(MM*]8">
                                               <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                               <field name="OID">0_userdata.0.devices.twinkly1.last_response</field>
                                               <field name="WITH_DELAY">FALSE</field>
                                               <value name="VALUE">
                                                 <block type="variables_get" id="%1_~*tS$$o%-C~FLfV,A">
                                                   <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                                                 </block>
                                               </value>
                                             </block>
                                           </statement>
                                         </block>
                                       </next>
                                     </block>
                                   </statement>
                                 </block>
                               </statement>
                             </block>
                           </next>
                         </block>
                       </statement>
                     </block>
                   </next>
                 </block>
               </statement>
               <next>
                 <block type="on_ext" id="*d77h3XvC|Tj~C2z*Gd`">
                   <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                   <field name="CONDITION">ne</field>
                   <field name="ACK_CONDITION"></field>
                   <value name="OID0">
                     <shadow type="field_oid" id="sl:%ZP;c-3T~K6vz?rya">
                       <field name="oid">0_userdata.0.devices.twinkly1.bri</field>
                     </shadow>
                   </value>
                   <statement name="STATEMENT">
                     <block type="exec" id="SwV21J;Rhw=V[z^`IJw,">
                       <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                       <field name="WITH_STATEMENT">TRUE</field>
                       <field name="LOG"></field>
                       <value name="COMMAND">
                         <shadow type="text">
                           <field name="TEXT">text</field>
                         </shadow>
                         <block type="text_join" id="9G(1o6:8.FmD^^LOK8Cn">
                           <mutation items="9"></mutation>
                           <value name="ADD0">
                             <block type="text" id="+GA1[uhyM:KfX1qzqUEF">
                               <field name="TEXT">curl -d '{"value":</field>
                             </block>
                           </value>
                           <value name="ADD1">
                             <block type="on_source" id="_l@jyLbrNk{7FxZj$Zmh">
                               <field name="ATTR">state.val</field>
                             </block>
                           </value>
                           <value name="ADD2">
                             <block type="text" id="|7^t}Cu}B6~Y1mC(0#UL">
                               <field name="TEXT">,"mode":"enabled","type":"A"}' -H 'Content-Type: application/json</field>
                             </block>
                           </value>
                           <value name="ADD3">
                             <block type="text_newline" id="cm,kmJNBdr]RQ%aT^mz.">
                               <field name="Type">\n</field>
                             </block>
                           </value>
                           <value name="ADD4">
                             <block type="text" id="z;)h^VxAjQk8sNE@yXm6">
                               <field name="TEXT">X-Auth-Token: </field>
                             </block>
                           </value>
                           <value name="ADD5">
                             <block type="get_value" id="SN0q;T8G^i,z`[mK|cbi">
                               <field name="ATTR">val</field>
                               <field name="OID">0_userdata.0.devices.twinkly1.token</field>
                             </block>
                           </value>
                           <value name="ADD6">
                             <block type="text" id="Qs]@)sCx^T~4~O:-~N%]">
                               <field name="TEXT">'  http://</field>
                             </block>
                           </value>
                           <value name="ADD7">
                             <block type="variables_get" id="Q3qO2s#P(jH/]+s=`sg;">
                               <field name="VAR" id="C2}3(QK:sjn_0;M@WXM6">ip-address</field>
                             </block>
                           </value>
                           <value name="ADD8">
                             <block type="text" id="[GRuP4kVQ)yBXm_~?XLn">
                               <field name="TEXT">/xled/v1/led/out/brightness</field>
                             </block>
                           </value>
                         </block>
                       </value>
                       <statement name="STATEMENT">
                         <block type="control" id="w46r4o:A,,aVgr@NCGW2">
                           <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                           <field name="OID">0_userdata.0.devices.twinkly1.last_response</field>
                           <field name="WITH_DELAY">FALSE</field>
                           <value name="VALUE">
                             <block type="variables_get" id="VXXDL).b0.4NB_KKb(+v">
                               <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                             </block>
                           </value>
                           <next>
                             <block type="controls_if" id="+3OyyHh$$_UZAgnj,!EX">
                               <value name="IF0">
                                 <block type="logic_compare" id="*r7*K4LHSml!_+c@?0nf">
                                   <field name="OP">EQ</field>
                                   <value name="A">
                                     <block type="variables_get" id="oFL-r!ZE;^X3v-E5{q@r">
                                       <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                                     </block>
                                   </value>
                                   <value name="B">
                                     <block type="text" id=".crTI6#$|W5R_}1|8c~D">
                                       <field name="TEXT">Invalid Token</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <statement name="DO0">
                                 <block type="timeouts_settimeout" id="]!]T:3c[:^C]UD/4vpaV">
                                   <field name="NAME">timeout3</field>
                                   <field name="DELAY">1000</field>
                                   <field name="UNIT">ms</field>
                                   <statement name="STATEMENT">
                                     <block type="procedures_callnoreturn" id="EiS$0K4lv~,deH6%Vqi*">
                                       <mutation name="tokenerstellung"></mutation>
                                       <next>
                                         <block type="exec" id="{nu5Ft~q(!9,39eE8O,H">
                                           <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                                           <field name="WITH_STATEMENT">TRUE</field>
                                           <field name="LOG"></field>
                                           <value name="COMMAND">
                                             <shadow type="text" id="]MnC9RK!/]8A^d2-p{.$">
                                               <field name="TEXT">text</field>
                                             </shadow>
                                             <block type="text_join" id="y6bUQx$R#^T}AEn?e(^r">
                                               <mutation items="9"></mutation>
                                               <value name="ADD0">
                                                 <block type="text" id="m:@7^x{FFQvWHWfZ?K0r">
                                                   <field name="TEXT">curl -d '{"value":</field>
                                                 </block>
                                               </value>
                                               <value name="ADD1">
                                                 <block type="on_source" id="{A,ZJ=}qtv?/9{U-J5Z}">
                                                   <field name="ATTR">state.val</field>
                                                 </block>
                                               </value>
                                               <value name="ADD2">
                                                 <block type="text" id="DaHQVOV.9DNj`NPEJ;LE">
                                                   <field name="TEXT">,"mode":"enabled","type":"A"}' -H 'Content-Type: application/json</field>
                                                 </block>
                                               </value>
                                               <value name="ADD3">
                                                 <block type="text_newline" id="1#3uF7ndLmSv1*Am2g[7">
                                                   <field name="Type">\n</field>
                                                 </block>
                                               </value>
                                               <value name="ADD4">
                                                 <block type="text" id="KDy19da_TUp?9`Xb@L|F">
                                                   <field name="TEXT">X-Auth-Token: </field>
                                                 </block>
                                               </value>
                                               <value name="ADD5">
                                                 <block type="get_value" id="7_ycWMaJu(pS;yvdSQId">
                                                   <field name="ATTR">val</field>
                                                   <field name="OID">0_userdata.0.devices.twinkly1.token</field>
                                                 </block>
                                               </value>
                                               <value name="ADD6">
                                                 <block type="text" id="3C;CZ]:wKA*AK6l`f8:}">
                                                   <field name="TEXT">'  http://</field>
                                                 </block>
                                               </value>
                                               <value name="ADD7">
                                                 <block type="variables_get" id="K4er1ePuhS)xrpTBSh1+">
                                                   <field name="VAR" id="C2}3(QK:sjn_0;M@WXM6">ip-address</field>
                                                 </block>
                                               </value>
                                               <value name="ADD8">
                                                 <block type="text" id="BLz=[InZOBRg#-5m/jvo">
                                                   <field name="TEXT">/xled/v1/led/out/brightness</field>
                                                 </block>
                                               </value>
                                             </block>
                                           </value>
                                           <statement name="STATEMENT">
                                             <block type="control" id="1%ERGs|hD2^:gC[sA^}z">
                                               <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                               <field name="OID">0_userdata.0.devices.twinkly1.last_response</field>
                                               <field name="WITH_DELAY">FALSE</field>
                                               <value name="VALUE">
                                                 <block type="variables_get" id="L1-0?qL3zOPU)]Q8L-^~">
                                                   <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                                                 </block>
                                               </value>
                                             </block>
                                           </statement>
                                         </block>
                                       </next>
                                     </block>
                                   </statement>
                                 </block>
                               </statement>
                             </block>
                           </next>
                         </block>
                       </statement>
                     </block>
                   </statement>
                 </block>
               </next>
             </block>
           </next>
         </block>
       </next>
     </block>
     <block type="on_ext" id="*=Rz8c^+(Uep[d%kgN^Z" x="913" y="113">
       <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
       <field name="CONDITION">any</field>
       <field name="ACK_CONDITION"></field>
       <value name="OID0">
         <shadow type="field_oid" id="b-H}2tTFUu5fH^xR5S0G">
           <field name="oid">0_userdata.0.devices.twinkly1.generate_token</field>
         </shadow>
       </value>
       <statement name="STATEMENT">
         <block type="controls_if" id="w)JwIcM8fG[^G2o@g#IU">
           <value name="IF0">
             <block type="on_source" id="S7l^Ygh^qp/THpb#N/Vi">
               <field name="ATTR">state.val</field>
             </block>
           </value>
           <statement name="DO0">
             <block type="procedures_callnoreturn" id="glH8Vnu3lq|zhdL*!B4P">
               <mutation name="tokenerstellung"></mutation>
             </block>
           </statement>
         </block>
       </statement>
     </block>
     <block type="procedures_defnoreturn" id="^9??;ZMVyU07(54V3Eu6" x="938" y="388">
       <field name="NAME">tokenerstellung</field>
       <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
       <statement name="STACK">
         <block type="exec" id="Bq5LNu.#~ON+t,OLyd(I">
           <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
           <field name="WITH_STATEMENT">TRUE</field>
           <field name="LOG"></field>
           <value name="COMMAND">
             <shadow type="text" id="O9{;*_0^t`dZ%{JAl{J{">
               <field name="TEXT"></field>
             </shadow>
             <block type="text_join" id="#jTB:KIs,db`$/4bj!]I">
               <mutation items="3"></mutation>
               <value name="ADD0">
                 <block type="text" id="lO4T;Ob7;f$%g?a{lMLD">
                   <field name="TEXT">curl -d '{"challenge": "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8="}' -H 'Content-Type: application/json' http://</field>
                 </block>
               </value>
               <value name="ADD1">
                 <block type="variables_get" id="N(fQwlPipS~;`%=JO?7G">
                   <field name="VAR" id="C2}3(QK:sjn_0;M@WXM6">ip-address</field>
                 </block>
               </value>
               <value name="ADD2">
                 <block type="text" id=")UJ3i2ob.UVF3E3)9TO@">
                   <field name="TEXT">/xled/v1/login</field>
                 </block>
               </value>
             </block>
           </value>
           <statement name="STATEMENT">
             <block type="control" id="Y3E;QMmY1QNsX#EJBcAF">
               <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
               <field name="OID">0_userdata.0.devices.twinkly1.invalid_token_counter</field>
               <field name="WITH_DELAY">FALSE</field>
               <value name="VALUE">
                 <block type="math_arithmetic" id="`C:HNYfvK.FSEllWcW:W">
                   <field name="OP">ADD</field>
                   <value name="A">
                     <shadow type="math_number" id="^:exn5EkqE)Xz?D|SKy}">
                       <field name="NUM">1</field>
                     </shadow>
                     <block type="get_value" id="vy(qI~n0+neTVRz79^xM">
                       <field name="ATTR">val</field>
                       <field name="OID">0_userdata.0.devices.twinkly1.invalid_token_counter</field>
                     </block>
                   </value>
                   <value name="B">
                     <shadow type="math_number" id="BE#f|Dp3linv[rzbqD7,">
                       <field name="NUM">1</field>
                     </shadow>
                   </value>
                 </block>
               </value>
               <next>
                 <block type="control" id="us?L?4O4rHFC5D!fDsdJ">
                   <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                   <field name="OID">0_userdata.0.devices.twinkly1.last_response</field>
                   <field name="WITH_DELAY">FALSE</field>
                   <value name="VALUE">
                     <block type="variables_get" id="7S0c3_b[:aEVF](uS:iX">
                       <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                     </block>
                   </value>
                   <next>
                     <block type="debug" id="7`oD1gOEU#uh+EL?AUc.">
                       <field name="Severity">log</field>
                       <value name="TEXT">
                         <shadow type="text" id="^IpRqdiDT*-j/Q^/QW,_">
                           <field name="TEXT">Starte Tokenerstellung</field>
                         </shadow>
                       </value>
                       <next>
                         <block type="debug" id="Xs6X/K_nR}k-ykL[M`16" disabled="true">
                           <field name="Severity">log</field>
                           <value name="TEXT">
                             <shadow type="text" id="js$]6ILdYcAJhz8W=;/n">
                               <field name="TEXT">test</field>
                             </shadow>
                             <block type="variables_get" id="aI{(nALcBG$eenM_JT=b">
                               <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                             </block>
                           </value>
                           <next>
                             <block type="variables_set" id="B5y.Gk@ojBh]^gBn7Ri|">
                               <field name="VAR" id="tvi|}J~k+`CSxDW?#-_G">login_list</field>
                               <value name="VALUE">
                                 <block type="lists_split" id="`#WZQy~#_]DAD#ySTlVV">
                                   <mutation mode="SPLIT"></mutation>
                                   <field name="MODE">SPLIT</field>
                                   <value name="INPUT">
                                     <block type="variables_get" id="M]:lZztzzg!QI;t@mWzg">
                                       <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                                     </block>
                                   </value>
                                   <value name="DELIM">
                                     <shadow type="text" id="f;7]A0]C9Iorq7FUh*+I">
                                       <field name="TEXT">"</field>
                                     </shadow>
                                   </value>
                                 </block>
                               </value>
                               <next>
                                 <block type="control" id="2`c=|y/iww3.=^}.8I59">
                                   <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                   <field name="OID">0_userdata.0.devices.twinkly1.token</field>
                                   <field name="WITH_DELAY">FALSE</field>
                                   <value name="VALUE">
                                     <block type="lists_getIndex" id="F1-qcRR[;NFa^DMlqV{o">
                                       <mutation statement="false" at="true"></mutation>
                                       <field name="MODE">GET</field>
                                       <field name="WHERE">FROM_START</field>
                                       <value name="VALUE">
                                         <block type="variables_get" id="R2XhFDen:RGmV1nikpp[">
                                           <field name="VAR" id="tvi|}J~k+`CSxDW?#-_G">login_list</field>
                                         </block>
                                       </value>
                                       <value name="AT">
                                         <block type="math_number" id="270Qn=t=#(OQM?R3r!+u">
                                           <field name="NUM">4</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="timeouts_settimeout" id=",hW#SP83S3D]=+0I3JoQ">
                                       <field name="NAME">timeout</field>
                                       <field name="DELAY">1000</field>
                                       <field name="UNIT">ms</field>
                                       <statement name="STATEMENT">
                                         <block type="debug" id="^=K4IGZtu1BUem~dDnFk" disabled="true">
                                           <field name="Severity">log</field>
                                           <value name="TEXT">
                                             <shadow type="text" id=".g[a3HxSe}og?21x+^Qk">
                                               <field name="TEXT">test</field>
                                             </shadow>
                                             <block type="get_value" id="qV_*%10mt5bVx~B/53[A">
                                               <field name="ATTR">val</field>
                                               <field name="OID">0_userdata.0.devices.twinkly1.token</field>
                                             </block>
                                           </value>
                                           <next>
                                             <block type="exec" id="F?4D@ZgD!6%*)kMw+C`#">
                                               <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                                               <field name="WITH_STATEMENT">TRUE</field>
                                               <field name="LOG"></field>
                                               <value name="COMMAND">
                                                 <shadow type="text" id="hpVJ5z*?j?fV#n/rTh}i">
                                                   <field name="TEXT">text</field>
                                                 </shadow>
                                                 <block type="text_join" id="9#Ev1:g,Ufv^SHikoIon">
                                                   <mutation items="7"></mutation>
                                                   <value name="ADD0">
                                                     <block type="text" id="7CCd?lZeczQAQpjj6(??">
                                                       <field name="TEXT">curl -d '{"challenge-response": "4ecffc0c669796ea843c4ef4dc7d2a33cf081d92"}' -H 'Content-Type: application/json</field>
                                                     </block>
                                                   </value>
                                                   <value name="ADD1">
                                                     <block type="text_newline" id="{79JO}FxsmNg_rO],+T^">
                                                       <field name="Type">\n</field>
                                                     </block>
                                                   </value>
                                                   <value name="ADD2">
                                                     <block type="text" id="$n6sdnx`e!VGaK*!He[G">
                                                       <field name="TEXT">X-Auth-Token: </field>
                                                     </block>
                                                   </value>
                                                   <value name="ADD3">
                                                     <block type="get_value" id="L^*fU+dFPAr!s;E{H`EJ">
                                                       <field name="ATTR">val</field>
                                                       <field name="OID">0_userdata.0.devices.twinkly1.token</field>
                                                     </block>
                                                   </value>
                                                   <value name="ADD4">
                                                     <block type="text" id="F5J!U?U$yq-,3xS7UPO(">
                                                       <field name="TEXT">'  http://</field>
                                                     </block>
                                                   </value>
                                                   <value name="ADD5">
                                                     <block type="variables_get" id="{rr$];i8Kyl{k0boEz[S">
                                                       <field name="VAR" id="C2}3(QK:sjn_0;M@WXM6">ip-address</field>
                                                     </block>
                                                   </value>
                                                   <value name="ADD6">
                                                     <block type="text" id="$`0sn]I1P5!8_rl3`:hx">
                                                       <field name="TEXT">/xled/v1/verify</field>
                                                     </block>
                                                   </value>
                                                 </block>
                                               </value>
                                               <statement name="STATEMENT">
                                                 <block type="control" id="|4x]CJ+``GuPe~viuF}*">
                                                   <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                   <field name="OID">0_userdata.0.devices.twinkly1.last_response</field>
                                                   <field name="WITH_DELAY">FALSE</field>
                                                   <value name="VALUE">
                                                     <block type="variables_get" id="9HuL3|uRhcfeHa.dU$G6">
                                                       <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                                                     </block>
                                                   </value>
                                                   <next>
                                                     <block type="controls_if" id="JjJG3UmSBHE@6./RA~1K">
                                                       <mutation else="1"></mutation>
                                                       <value name="IF0">
                                                         <block type="logic_compare" id="9GB#=W%O2|z3oZc(QCV)">
                                                           <field name="OP">EQ</field>
                                                           <value name="A">
                                                             <block type="variables_get" id="AsZF48_sLRx}5(@:O=hQ">
                                                               <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                                                             </block>
                                                           </value>
                                                           <value name="B">
                                                             <block type="text" id="1fN*O!Pf=sm`ovt,0/nN">
                                                               <field name="TEXT">{"code":1000}</field>
                                                             </block>
                                                           </value>
                                                         </block>
                                                       </value>
                                                       <statement name="DO0">
                                                         <block type="debug" id="NHzT/CsYQxEDy9~R6MSQ">
                                                           <field name="Severity">log</field>
                                                           <value name="TEXT">
                                                             <shadow type="text" id="#fx%mvWHriHU8Vw{rnw8">
                                                               <field name="TEXT">Tokenerstellung erfolgreich.</field>
                                                             </shadow>
                                                           </value>
                                                           <next>
                                                             <block type="control" id="{9;o6mIpuEf`7xT-n)3L">
                                                               <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                               <field name="OID">0_userdata.0.devices.twinkly1.token_verify</field>
                                                               <field name="WITH_DELAY">FALSE</field>
                                                               <value name="VALUE">
                                                                 <block type="logic_boolean" id="}=yzK!`!Q@E_hN):CP_d">
                                                                   <field name="BOOL">TRUE</field>
                                                                 </block>
                                                               </value>
                                                             </block>
                                                           </next>
                                                         </block>
                                                       </statement>
                                                       <statement name="ELSE">
                                                         <block type="debug" id="+2J+Qkd$;V|:M.)E)4qK">
                                                           <field name="Severity">log</field>
                                                           <value name="TEXT">
                                                             <shadow type="text" id="}TE#6+G@7Zq*9jwGt]}`">
                                                               <field name="TEXT">Tokenerstellung fehlgeschlagen.</field>
                                                             </shadow>
                                                           </value>
                                                           <next>
                                                             <block type="control" id="2;nVgYFKxBDzpT+aGsxq">
                                                               <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                               <field name="OID">0_userdata.0.devices.twinkly1.token_verify</field>
                                                               <field name="WITH_DELAY">FALSE</field>
                                                               <value name="VALUE">
                                                                 <block type="logic_boolean" id="V(w(5r+]OyK6/=sn{xA@">
                                                                   <field name="BOOL">FALSE</field>
                                                                 </block>
                                                               </value>
                                                             </block>
                                                           </next>
                                                         </block>
                                                       </statement>
                                                     </block>
                                                   </next>
                                                 </block>
                                               </statement>
                                             </block>
                                           </next>
                                         </block>
                                       </statement>
                                     </block>
                                   </next>
                                 </block>
                               </next>
                             </block>
                           </next>
                         </block>
                       </next>
                     </block>
                   </next>
                 </block>
               </next>
             </block>
           </statement>
         </block>
       </statement>
     </block>
    </xml>
    

    Datenpunkte


    0_userdata.0.devices.twinkly1.json

    Die API Dokumentation habe ich hierher.
    Ich habe auch versucht die MQTT Konfiguration anzupassen, jedoch scheint diese mittlerweile verschlüsselt zu sein (zumindest laut meinen Netzwerk Mitschnitten). Man kann den Datenverkehr zwar zum ioBroker schicken, der kann ohne passendes Zertifikat aber leider nichts damit anfangen. Ich konnte die Verschlüsselung über die API leider nicht deaktvieren oder anpassen. Schade, denn über MQTT lassen sich anscheinend auch die jeweiligen Szenen ansteuern.
    Achja, ich bin kein Programmierer. Bspw. ist die direkte Umsetzung in Javascript sicher wesentlich eleganter und/oder das gleichzeitige packen in einen Adapter. Ich bitte um Nachsicht und hoffe einfach, dass ihr (so wie ich jetzt auch) zumindest zufrieden seid, wenn ihr euer Twinkly nun per ioBroker zumindest an und aus schalten könnt. 🙂

    F patrickbs96P 2 Antworten Letzte Antwort
    2
    • siggi85S siggi85

      Ursprünglich habe ich ein kleines Blockly geschrieben (siehe unten in diesem Post). Allerdings hat mittlerweile @patrickbs96 ein wesentlich umfangreiches Skript erstellt, um Twinkly Systeme zu steuern. Die aktuelle Version davon könnt ihr hier finden.

      Für alle Fälle lasse ich mein altes Blockly hier drin, aber ich würde definitiv das Skript von @patrickbs96 empfehlen.

      Alt:
      Ich habe ein kleines Blockly geschrieben, was über Curl Aufrufe die API anfragt und damit Basisfunktionen steuerbar macht wie an/aus (letzte Szene) und die Helligkeit. Die Datenpunkte habe ich unter 0_userdata.0 gepackt.
      Damit das Ganze funktioniert, einfach die Datenpunkte importieren und im Blockly die IP-Adresse eures Twinkly Devices eintragen. Zusätzlich mit im Javascript Adapter das exec Kommando erlaubt sein. (Konfiguration in der JavaScript Instanz)

      Blockly

      <xml xmlns="https://developers.google.com/blockly/xml">
       <variables>
         <variable id="C2}3(QK:sjn_0;M@WXM6">ip-address</variable>
         <variable id="Li8l,iD*a4lAUfTrR./#">result</variable>
         <variable id="ATDr!5*=f1mXSwF*B31X">onoff</variable>
         <variable id="tvi|}J~k+`CSxDW?#-_G">login_list</variable>
         <variable type="timeout" id="timeout2">timeout2</variable>
         <variable type="timeout" id="timeout3">timeout3</variable>
         <variable type="timeout" id="timeout">timeout</variable>
       </variables>
       <block type="comment" id="7aO~bSI=}sBUF]!Uj5VW" x="113" y="-12">
         <field name="COMMENT">Hier die IP-Adresse des Twinkly angeben.</field>
         <next>
           <block type="variables_set" id="})]:dOnZEgaB;GwFMYm7">
             <field name="VAR" id="C2}3(QK:sjn_0;M@WXM6">ip-address</field>
             <value name="VALUE">
               <block type="text" id="UPk-=X649M@ReWw=d!/Y">
                 <field name="TEXT">192.168.1.241</field>
               </block>
             </value>
             <next>
               <block type="on_ext" id="hjfZPnTX~Ue*9(8]/!;C">
                 <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                 <field name="CONDITION">ne</field>
                 <field name="ACK_CONDITION"></field>
                 <value name="OID0">
                   <shadow type="field_oid" id="9twVsr7m@F^_y.SIh3v/">
                     <field name="oid">0_userdata.0.devices.twinkly1.on</field>
                   </shadow>
                 </value>
                 <statement name="STATEMENT">
                   <block type="controls_if" id="Vyh(4M|:$PiwH3:ODZ(v">
                     <mutation elseif="1"></mutation>
                     <value name="IF0">
                       <block type="on_source" id=".8e69^VPY]Vwj!#QB8;b">
                         <field name="ATTR">state.val</field>
                       </block>
                     </value>
                     <statement name="DO0">
                       <block type="variables_set" id="[Pbb5axB^[hOzmHwfPcs">
                         <field name="VAR" id="ATDr!5*=f1mXSwF*B31X">onoff</field>
                         <value name="VALUE">
                           <block type="text" id="qYAqrB@?4{kDiZ*iP5Nv">
                             <field name="TEXT">movie</field>
                           </block>
                         </value>
                       </block>
                     </statement>
                     <value name="IF1">
                       <block type="logic_negate" id="[)WH1r7P]c-i1[{xOXce">
                         <value name="BOOL">
                           <block type="on_source" id="LfiaUSvy[Zo`?iQA0%AA">
                             <field name="ATTR">state.val</field>
                           </block>
                         </value>
                       </block>
                     </value>
                     <statement name="DO1">
                       <block type="variables_set" id="$75d~3~;/E1{z?f6Uw`7">
                         <field name="VAR" id="ATDr!5*=f1mXSwF*B31X">onoff</field>
                         <value name="VALUE">
                           <block type="text" id="t`KFGE2EgS={pHOe({dy">
                             <field name="TEXT">off</field>
                           </block>
                         </value>
                       </block>
                     </statement>
                     <next>
                       <block type="exec" id="a8Xsf6X|RT_RKWu+m|4D">
                         <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                         <field name="WITH_STATEMENT">TRUE</field>
                         <field name="LOG"></field>
                         <value name="COMMAND">
                           <shadow type="text">
                             <field name="TEXT">text</field>
                           </shadow>
                           <block type="text_join" id="x.E)Ijwm[WHV!_bPRK4/">
                             <mutation items="9"></mutation>
                             <value name="ADD0">
                               <block type="text" id="bMn%~Q14lVR9+BCwRR/1">
                                 <field name="TEXT">curl -d '{"mode":"</field>
                               </block>
                             </value>
                             <value name="ADD1">
                               <block type="variables_get" id="6yJXT{FImP5pG}/rrtNy">
                                 <field name="VAR" id="ATDr!5*=f1mXSwF*B31X">onoff</field>
                               </block>
                             </value>
                             <value name="ADD2">
                               <block type="text" id="^ujE4oo_X%]da4,(ppuL">
                                 <field name="TEXT">"}' -H 'Content-Type: application/json</field>
                               </block>
                             </value>
                             <value name="ADD3">
                               <block type="text_newline" id="c!_Px216Os[.$S/~rarw">
                                 <field name="Type">\n</field>
                               </block>
                             </value>
                             <value name="ADD4">
                               <block type="text" id="$Fg2yhXiAQ){16U@!ZSu">
                                 <field name="TEXT">X-Auth-Token: </field>
                               </block>
                             </value>
                             <value name="ADD5">
                               <block type="get_value" id="IXl+3AbS2B.l]YvbqzM6">
                                 <field name="ATTR">val</field>
                                 <field name="OID">0_userdata.0.devices.twinkly1.token</field>
                               </block>
                             </value>
                             <value name="ADD6">
                               <block type="text" id="S{EEHm.[zP|vcm#1tnS#">
                                 <field name="TEXT">'  http://</field>
                               </block>
                             </value>
                             <value name="ADD7">
                               <block type="variables_get" id="]u@TMc}oUr*ZKNMfa4*r">
                                 <field name="VAR" id="C2}3(QK:sjn_0;M@WXM6">ip-address</field>
                               </block>
                             </value>
                             <value name="ADD8">
                               <block type="text" id="bz;89=2*~U#c3SZm,`3R">
                                 <field name="TEXT">/xled/v1/led/mode</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <statement name="STATEMENT">
                           <block type="control" id=")*EuNf:*?Mej|oX]c[YG">
                             <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                             <field name="OID">0_userdata.0.devices.twinkly1.last_response</field>
                             <field name="WITH_DELAY">FALSE</field>
                             <value name="VALUE">
                               <block type="variables_get" id="sO6_Jt^$^o?%u_FndEof">
                                 <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                               </block>
                             </value>
                             <next>
                               <block type="controls_if" id="6G?]0D()J)}!$||^GZ[g">
                                 <value name="IF0">
                                   <block type="logic_compare" id="{`cuuloZIeqXKe;Iydaw">
                                     <field name="OP">EQ</field>
                                     <value name="A">
                                       <block type="variables_get" id=".|80~sPZrcTq)~D%FLqS">
                                         <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                                       </block>
                                     </value>
                                     <value name="B">
                                       <block type="text" id="V1j|Yla.{Pkhx;t!dL5A">
                                         <field name="TEXT">Invalid Token</field>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                                 <statement name="DO0">
                                   <block type="timeouts_settimeout" id="*hEGRE,x!rFyGvx1sGnk">
                                     <field name="NAME">timeout2</field>
                                     <field name="DELAY">1000</field>
                                     <field name="UNIT">ms</field>
                                     <statement name="STATEMENT">
                                       <block type="procedures_callnoreturn" id="47rDf|TIj){(r%S/jL|t">
                                         <mutation name="tokenerstellung"></mutation>
                                         <next>
                                           <block type="exec" id="vmrb/I[xcD|UrCR{N5,}">
                                             <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                                             <field name="WITH_STATEMENT">TRUE</field>
                                             <field name="LOG"></field>
                                             <value name="COMMAND">
                                               <shadow type="text" id="1oqX0]_@1GCaqA|AYG9V">
                                                 <field name="TEXT">text</field>
                                               </shadow>
                                               <block type="text_join" id=";|wMTJLvzMlbPBE.f}8(">
                                                 <mutation items="9"></mutation>
                                                 <value name="ADD0">
                                                   <block type="text" id="vSqJqFViMtF_b70KZZ4U">
                                                     <field name="TEXT">curl -d '{"mode":"</field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD1">
                                                   <block type="variables_get" id="iL*:FiISRruR#*B:SpWU">
                                                     <field name="VAR" id="ATDr!5*=f1mXSwF*B31X">onoff</field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD2">
                                                   <block type="text" id="_H7ZwE!fF3Lh:;B6+mC`">
                                                     <field name="TEXT">"}' -H 'Content-Type: application/json</field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD3">
                                                   <block type="text_newline" id="EMmO8}AnS:G1L0.zG*(K">
                                                     <field name="Type">\n</field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD4">
                                                   <block type="text" id="IffU.a}O8pGD]^*9G,e5">
                                                     <field name="TEXT">X-Auth-Token: </field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD5">
                                                   <block type="get_value" id="KN#wwJ9wRg[}}Tbh4A)S">
                                                     <field name="ATTR">val</field>
                                                     <field name="OID">0_userdata.0.devices.twinkly1.token</field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD6">
                                                   <block type="text" id="?QBxH#Gn#va8-Fur=Mri">
                                                     <field name="TEXT">'  http://</field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD7">
                                                   <block type="variables_get" id="F8ff%~_KvjsS/r{.$)!A">
                                                     <field name="VAR" id="C2}3(QK:sjn_0;M@WXM6">ip-address</field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD8">
                                                   <block type="text" id="bZ1Z,*N[OcaWiEp;f%P8">
                                                     <field name="TEXT">/xled/v1/led/mode</field>
                                                   </block>
                                                 </value>
                                               </block>
                                             </value>
                                             <statement name="STATEMENT">
                                               <block type="control" id="Dq-:j;brnrXMKn(MM*]8">
                                                 <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                 <field name="OID">0_userdata.0.devices.twinkly1.last_response</field>
                                                 <field name="WITH_DELAY">FALSE</field>
                                                 <value name="VALUE">
                                                   <block type="variables_get" id="%1_~*tS$$o%-C~FLfV,A">
                                                     <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                                                   </block>
                                                 </value>
                                               </block>
                                             </statement>
                                           </block>
                                         </next>
                                       </block>
                                     </statement>
                                   </block>
                                 </statement>
                               </block>
                             </next>
                           </block>
                         </statement>
                       </block>
                     </next>
                   </block>
                 </statement>
                 <next>
                   <block type="on_ext" id="*d77h3XvC|Tj~C2z*Gd`">
                     <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                     <field name="CONDITION">ne</field>
                     <field name="ACK_CONDITION"></field>
                     <value name="OID0">
                       <shadow type="field_oid" id="sl:%ZP;c-3T~K6vz?rya">
                         <field name="oid">0_userdata.0.devices.twinkly1.bri</field>
                       </shadow>
                     </value>
                     <statement name="STATEMENT">
                       <block type="exec" id="SwV21J;Rhw=V[z^`IJw,">
                         <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                         <field name="WITH_STATEMENT">TRUE</field>
                         <field name="LOG"></field>
                         <value name="COMMAND">
                           <shadow type="text">
                             <field name="TEXT">text</field>
                           </shadow>
                           <block type="text_join" id="9G(1o6:8.FmD^^LOK8Cn">
                             <mutation items="9"></mutation>
                             <value name="ADD0">
                               <block type="text" id="+GA1[uhyM:KfX1qzqUEF">
                                 <field name="TEXT">curl -d '{"value":</field>
                               </block>
                             </value>
                             <value name="ADD1">
                               <block type="on_source" id="_l@jyLbrNk{7FxZj$Zmh">
                                 <field name="ATTR">state.val</field>
                               </block>
                             </value>
                             <value name="ADD2">
                               <block type="text" id="|7^t}Cu}B6~Y1mC(0#UL">
                                 <field name="TEXT">,"mode":"enabled","type":"A"}' -H 'Content-Type: application/json</field>
                               </block>
                             </value>
                             <value name="ADD3">
                               <block type="text_newline" id="cm,kmJNBdr]RQ%aT^mz.">
                                 <field name="Type">\n</field>
                               </block>
                             </value>
                             <value name="ADD4">
                               <block type="text" id="z;)h^VxAjQk8sNE@yXm6">
                                 <field name="TEXT">X-Auth-Token: </field>
                               </block>
                             </value>
                             <value name="ADD5">
                               <block type="get_value" id="SN0q;T8G^i,z`[mK|cbi">
                                 <field name="ATTR">val</field>
                                 <field name="OID">0_userdata.0.devices.twinkly1.token</field>
                               </block>
                             </value>
                             <value name="ADD6">
                               <block type="text" id="Qs]@)sCx^T~4~O:-~N%]">
                                 <field name="TEXT">'  http://</field>
                               </block>
                             </value>
                             <value name="ADD7">
                               <block type="variables_get" id="Q3qO2s#P(jH/]+s=`sg;">
                                 <field name="VAR" id="C2}3(QK:sjn_0;M@WXM6">ip-address</field>
                               </block>
                             </value>
                             <value name="ADD8">
                               <block type="text" id="[GRuP4kVQ)yBXm_~?XLn">
                                 <field name="TEXT">/xled/v1/led/out/brightness</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <statement name="STATEMENT">
                           <block type="control" id="w46r4o:A,,aVgr@NCGW2">
                             <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                             <field name="OID">0_userdata.0.devices.twinkly1.last_response</field>
                             <field name="WITH_DELAY">FALSE</field>
                             <value name="VALUE">
                               <block type="variables_get" id="VXXDL).b0.4NB_KKb(+v">
                                 <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                               </block>
                             </value>
                             <next>
                               <block type="controls_if" id="+3OyyHh$$_UZAgnj,!EX">
                                 <value name="IF0">
                                   <block type="logic_compare" id="*r7*K4LHSml!_+c@?0nf">
                                     <field name="OP">EQ</field>
                                     <value name="A">
                                       <block type="variables_get" id="oFL-r!ZE;^X3v-E5{q@r">
                                         <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                                       </block>
                                     </value>
                                     <value name="B">
                                       <block type="text" id=".crTI6#$|W5R_}1|8c~D">
                                         <field name="TEXT">Invalid Token</field>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                                 <statement name="DO0">
                                   <block type="timeouts_settimeout" id="]!]T:3c[:^C]UD/4vpaV">
                                     <field name="NAME">timeout3</field>
                                     <field name="DELAY">1000</field>
                                     <field name="UNIT">ms</field>
                                     <statement name="STATEMENT">
                                       <block type="procedures_callnoreturn" id="EiS$0K4lv~,deH6%Vqi*">
                                         <mutation name="tokenerstellung"></mutation>
                                         <next>
                                           <block type="exec" id="{nu5Ft~q(!9,39eE8O,H">
                                             <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                                             <field name="WITH_STATEMENT">TRUE</field>
                                             <field name="LOG"></field>
                                             <value name="COMMAND">
                                               <shadow type="text" id="]MnC9RK!/]8A^d2-p{.$">
                                                 <field name="TEXT">text</field>
                                               </shadow>
                                               <block type="text_join" id="y6bUQx$R#^T}AEn?e(^r">
                                                 <mutation items="9"></mutation>
                                                 <value name="ADD0">
                                                   <block type="text" id="m:@7^x{FFQvWHWfZ?K0r">
                                                     <field name="TEXT">curl -d '{"value":</field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD1">
                                                   <block type="on_source" id="{A,ZJ=}qtv?/9{U-J5Z}">
                                                     <field name="ATTR">state.val</field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD2">
                                                   <block type="text" id="DaHQVOV.9DNj`NPEJ;LE">
                                                     <field name="TEXT">,"mode":"enabled","type":"A"}' -H 'Content-Type: application/json</field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD3">
                                                   <block type="text_newline" id="1#3uF7ndLmSv1*Am2g[7">
                                                     <field name="Type">\n</field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD4">
                                                   <block type="text" id="KDy19da_TUp?9`Xb@L|F">
                                                     <field name="TEXT">X-Auth-Token: </field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD5">
                                                   <block type="get_value" id="7_ycWMaJu(pS;yvdSQId">
                                                     <field name="ATTR">val</field>
                                                     <field name="OID">0_userdata.0.devices.twinkly1.token</field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD6">
                                                   <block type="text" id="3C;CZ]:wKA*AK6l`f8:}">
                                                     <field name="TEXT">'  http://</field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD7">
                                                   <block type="variables_get" id="K4er1ePuhS)xrpTBSh1+">
                                                     <field name="VAR" id="C2}3(QK:sjn_0;M@WXM6">ip-address</field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD8">
                                                   <block type="text" id="BLz=[InZOBRg#-5m/jvo">
                                                     <field name="TEXT">/xled/v1/led/out/brightness</field>
                                                   </block>
                                                 </value>
                                               </block>
                                             </value>
                                             <statement name="STATEMENT">
                                               <block type="control" id="1%ERGs|hD2^:gC[sA^}z">
                                                 <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                 <field name="OID">0_userdata.0.devices.twinkly1.last_response</field>
                                                 <field name="WITH_DELAY">FALSE</field>
                                                 <value name="VALUE">
                                                   <block type="variables_get" id="L1-0?qL3zOPU)]Q8L-^~">
                                                     <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                                                   </block>
                                                 </value>
                                               </block>
                                             </statement>
                                           </block>
                                         </next>
                                       </block>
                                     </statement>
                                   </block>
                                 </statement>
                               </block>
                             </next>
                           </block>
                         </statement>
                       </block>
                     </statement>
                   </block>
                 </next>
               </block>
             </next>
           </block>
         </next>
       </block>
       <block type="on_ext" id="*=Rz8c^+(Uep[d%kgN^Z" x="913" y="113">
         <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
         <field name="CONDITION">any</field>
         <field name="ACK_CONDITION"></field>
         <value name="OID0">
           <shadow type="field_oid" id="b-H}2tTFUu5fH^xR5S0G">
             <field name="oid">0_userdata.0.devices.twinkly1.generate_token</field>
           </shadow>
         </value>
         <statement name="STATEMENT">
           <block type="controls_if" id="w)JwIcM8fG[^G2o@g#IU">
             <value name="IF0">
               <block type="on_source" id="S7l^Ygh^qp/THpb#N/Vi">
                 <field name="ATTR">state.val</field>
               </block>
             </value>
             <statement name="DO0">
               <block type="procedures_callnoreturn" id="glH8Vnu3lq|zhdL*!B4P">
                 <mutation name="tokenerstellung"></mutation>
               </block>
             </statement>
           </block>
         </statement>
       </block>
       <block type="procedures_defnoreturn" id="^9??;ZMVyU07(54V3Eu6" x="938" y="388">
         <field name="NAME">tokenerstellung</field>
         <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
         <statement name="STACK">
           <block type="exec" id="Bq5LNu.#~ON+t,OLyd(I">
             <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
             <field name="WITH_STATEMENT">TRUE</field>
             <field name="LOG"></field>
             <value name="COMMAND">
               <shadow type="text" id="O9{;*_0^t`dZ%{JAl{J{">
                 <field name="TEXT"></field>
               </shadow>
               <block type="text_join" id="#jTB:KIs,db`$/4bj!]I">
                 <mutation items="3"></mutation>
                 <value name="ADD0">
                   <block type="text" id="lO4T;Ob7;f$%g?a{lMLD">
                     <field name="TEXT">curl -d '{"challenge": "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8="}' -H 'Content-Type: application/json' http://</field>
                   </block>
                 </value>
                 <value name="ADD1">
                   <block type="variables_get" id="N(fQwlPipS~;`%=JO?7G">
                     <field name="VAR" id="C2}3(QK:sjn_0;M@WXM6">ip-address</field>
                   </block>
                 </value>
                 <value name="ADD2">
                   <block type="text" id=")UJ3i2ob.UVF3E3)9TO@">
                     <field name="TEXT">/xled/v1/login</field>
                   </block>
                 </value>
               </block>
             </value>
             <statement name="STATEMENT">
               <block type="control" id="Y3E;QMmY1QNsX#EJBcAF">
                 <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                 <field name="OID">0_userdata.0.devices.twinkly1.invalid_token_counter</field>
                 <field name="WITH_DELAY">FALSE</field>
                 <value name="VALUE">
                   <block type="math_arithmetic" id="`C:HNYfvK.FSEllWcW:W">
                     <field name="OP">ADD</field>
                     <value name="A">
                       <shadow type="math_number" id="^:exn5EkqE)Xz?D|SKy}">
                         <field name="NUM">1</field>
                       </shadow>
                       <block type="get_value" id="vy(qI~n0+neTVRz79^xM">
                         <field name="ATTR">val</field>
                         <field name="OID">0_userdata.0.devices.twinkly1.invalid_token_counter</field>
                       </block>
                     </value>
                     <value name="B">
                       <shadow type="math_number" id="BE#f|Dp3linv[rzbqD7,">
                         <field name="NUM">1</field>
                       </shadow>
                     </value>
                   </block>
                 </value>
                 <next>
                   <block type="control" id="us?L?4O4rHFC5D!fDsdJ">
                     <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                     <field name="OID">0_userdata.0.devices.twinkly1.last_response</field>
                     <field name="WITH_DELAY">FALSE</field>
                     <value name="VALUE">
                       <block type="variables_get" id="7S0c3_b[:aEVF](uS:iX">
                         <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                       </block>
                     </value>
                     <next>
                       <block type="debug" id="7`oD1gOEU#uh+EL?AUc.">
                         <field name="Severity">log</field>
                         <value name="TEXT">
                           <shadow type="text" id="^IpRqdiDT*-j/Q^/QW,_">
                             <field name="TEXT">Starte Tokenerstellung</field>
                           </shadow>
                         </value>
                         <next>
                           <block type="debug" id="Xs6X/K_nR}k-ykL[M`16" disabled="true">
                             <field name="Severity">log</field>
                             <value name="TEXT">
                               <shadow type="text" id="js$]6ILdYcAJhz8W=;/n">
                                 <field name="TEXT">test</field>
                               </shadow>
                               <block type="variables_get" id="aI{(nALcBG$eenM_JT=b">
                                 <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                               </block>
                             </value>
                             <next>
                               <block type="variables_set" id="B5y.Gk@ojBh]^gBn7Ri|">
                                 <field name="VAR" id="tvi|}J~k+`CSxDW?#-_G">login_list</field>
                                 <value name="VALUE">
                                   <block type="lists_split" id="`#WZQy~#_]DAD#ySTlVV">
                                     <mutation mode="SPLIT"></mutation>
                                     <field name="MODE">SPLIT</field>
                                     <value name="INPUT">
                                       <block type="variables_get" id="M]:lZztzzg!QI;t@mWzg">
                                         <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                                       </block>
                                     </value>
                                     <value name="DELIM">
                                       <shadow type="text" id="f;7]A0]C9Iorq7FUh*+I">
                                         <field name="TEXT">"</field>
                                       </shadow>
                                     </value>
                                   </block>
                                 </value>
                                 <next>
                                   <block type="control" id="2`c=|y/iww3.=^}.8I59">
                                     <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                     <field name="OID">0_userdata.0.devices.twinkly1.token</field>
                                     <field name="WITH_DELAY">FALSE</field>
                                     <value name="VALUE">
                                       <block type="lists_getIndex" id="F1-qcRR[;NFa^DMlqV{o">
                                         <mutation statement="false" at="true"></mutation>
                                         <field name="MODE">GET</field>
                                         <field name="WHERE">FROM_START</field>
                                         <value name="VALUE">
                                           <block type="variables_get" id="R2XhFDen:RGmV1nikpp[">
                                             <field name="VAR" id="tvi|}J~k+`CSxDW?#-_G">login_list</field>
                                           </block>
                                         </value>
                                         <value name="AT">
                                           <block type="math_number" id="270Qn=t=#(OQM?R3r!+u">
                                             <field name="NUM">4</field>
                                           </block>
                                         </value>
                                       </block>
                                     </value>
                                     <next>
                                       <block type="timeouts_settimeout" id=",hW#SP83S3D]=+0I3JoQ">
                                         <field name="NAME">timeout</field>
                                         <field name="DELAY">1000</field>
                                         <field name="UNIT">ms</field>
                                         <statement name="STATEMENT">
                                           <block type="debug" id="^=K4IGZtu1BUem~dDnFk" disabled="true">
                                             <field name="Severity">log</field>
                                             <value name="TEXT">
                                               <shadow type="text" id=".g[a3HxSe}og?21x+^Qk">
                                                 <field name="TEXT">test</field>
                                               </shadow>
                                               <block type="get_value" id="qV_*%10mt5bVx~B/53[A">
                                                 <field name="ATTR">val</field>
                                                 <field name="OID">0_userdata.0.devices.twinkly1.token</field>
                                               </block>
                                             </value>
                                             <next>
                                               <block type="exec" id="F?4D@ZgD!6%*)kMw+C`#">
                                                 <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                                                 <field name="WITH_STATEMENT">TRUE</field>
                                                 <field name="LOG"></field>
                                                 <value name="COMMAND">
                                                   <shadow type="text" id="hpVJ5z*?j?fV#n/rTh}i">
                                                     <field name="TEXT">text</field>
                                                   </shadow>
                                                   <block type="text_join" id="9#Ev1:g,Ufv^SHikoIon">
                                                     <mutation items="7"></mutation>
                                                     <value name="ADD0">
                                                       <block type="text" id="7CCd?lZeczQAQpjj6(??">
                                                         <field name="TEXT">curl -d '{"challenge-response": "4ecffc0c669796ea843c4ef4dc7d2a33cf081d92"}' -H 'Content-Type: application/json</field>
                                                       </block>
                                                     </value>
                                                     <value name="ADD1">
                                                       <block type="text_newline" id="{79JO}FxsmNg_rO],+T^">
                                                         <field name="Type">\n</field>
                                                       </block>
                                                     </value>
                                                     <value name="ADD2">
                                                       <block type="text" id="$n6sdnx`e!VGaK*!He[G">
                                                         <field name="TEXT">X-Auth-Token: </field>
                                                       </block>
                                                     </value>
                                                     <value name="ADD3">
                                                       <block type="get_value" id="L^*fU+dFPAr!s;E{H`EJ">
                                                         <field name="ATTR">val</field>
                                                         <field name="OID">0_userdata.0.devices.twinkly1.token</field>
                                                       </block>
                                                     </value>
                                                     <value name="ADD4">
                                                       <block type="text" id="F5J!U?U$yq-,3xS7UPO(">
                                                         <field name="TEXT">'  http://</field>
                                                       </block>
                                                     </value>
                                                     <value name="ADD5">
                                                       <block type="variables_get" id="{rr$];i8Kyl{k0boEz[S">
                                                         <field name="VAR" id="C2}3(QK:sjn_0;M@WXM6">ip-address</field>
                                                       </block>
                                                     </value>
                                                     <value name="ADD6">
                                                       <block type="text" id="$`0sn]I1P5!8_rl3`:hx">
                                                         <field name="TEXT">/xled/v1/verify</field>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </value>
                                                 <statement name="STATEMENT">
                                                   <block type="control" id="|4x]CJ+``GuPe~viuF}*">
                                                     <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                     <field name="OID">0_userdata.0.devices.twinkly1.last_response</field>
                                                     <field name="WITH_DELAY">FALSE</field>
                                                     <value name="VALUE">
                                                       <block type="variables_get" id="9HuL3|uRhcfeHa.dU$G6">
                                                         <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                                                       </block>
                                                     </value>
                                                     <next>
                                                       <block type="controls_if" id="JjJG3UmSBHE@6./RA~1K">
                                                         <mutation else="1"></mutation>
                                                         <value name="IF0">
                                                           <block type="logic_compare" id="9GB#=W%O2|z3oZc(QCV)">
                                                             <field name="OP">EQ</field>
                                                             <value name="A">
                                                               <block type="variables_get" id="AsZF48_sLRx}5(@:O=hQ">
                                                                 <field name="VAR" id="Li8l,iD*a4lAUfTrR./#">result</field>
                                                               </block>
                                                             </value>
                                                             <value name="B">
                                                               <block type="text" id="1fN*O!Pf=sm`ovt,0/nN">
                                                                 <field name="TEXT">{"code":1000}</field>
                                                               </block>
                                                             </value>
                                                           </block>
                                                         </value>
                                                         <statement name="DO0">
                                                           <block type="debug" id="NHzT/CsYQxEDy9~R6MSQ">
                                                             <field name="Severity">log</field>
                                                             <value name="TEXT">
                                                               <shadow type="text" id="#fx%mvWHriHU8Vw{rnw8">
                                                                 <field name="TEXT">Tokenerstellung erfolgreich.</field>
                                                               </shadow>
                                                             </value>
                                                             <next>
                                                               <block type="control" id="{9;o6mIpuEf`7xT-n)3L">
                                                                 <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                 <field name="OID">0_userdata.0.devices.twinkly1.token_verify</field>
                                                                 <field name="WITH_DELAY">FALSE</field>
                                                                 <value name="VALUE">
                                                                   <block type="logic_boolean" id="}=yzK!`!Q@E_hN):CP_d">
                                                                     <field name="BOOL">TRUE</field>
                                                                   </block>
                                                                 </value>
                                                               </block>
                                                             </next>
                                                           </block>
                                                         </statement>
                                                         <statement name="ELSE">
                                                           <block type="debug" id="+2J+Qkd$;V|:M.)E)4qK">
                                                             <field name="Severity">log</field>
                                                             <value name="TEXT">
                                                               <shadow type="text" id="}TE#6+G@7Zq*9jwGt]}`">
                                                                 <field name="TEXT">Tokenerstellung fehlgeschlagen.</field>
                                                               </shadow>
                                                             </value>
                                                             <next>
                                                               <block type="control" id="2;nVgYFKxBDzpT+aGsxq">
                                                                 <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                 <field name="OID">0_userdata.0.devices.twinkly1.token_verify</field>
                                                                 <field name="WITH_DELAY">FALSE</field>
                                                                 <value name="VALUE">
                                                                   <block type="logic_boolean" id="V(w(5r+]OyK6/=sn{xA@">
                                                                     <field name="BOOL">FALSE</field>
                                                                   </block>
                                                                 </value>
                                                               </block>
                                                             </next>
                                                           </block>
                                                         </statement>
                                                       </block>
                                                     </next>
                                                   </block>
                                                 </statement>
                                               </block>
                                             </next>
                                           </block>
                                         </statement>
                                       </block>
                                     </next>
                                   </block>
                                 </next>
                               </block>
                             </next>
                           </block>
                         </next>
                       </block>
                     </next>
                   </block>
                 </next>
               </block>
             </statement>
           </block>
         </statement>
       </block>
      </xml>
      

      Datenpunkte


      0_userdata.0.devices.twinkly1.json

      Die API Dokumentation habe ich hierher.
      Ich habe auch versucht die MQTT Konfiguration anzupassen, jedoch scheint diese mittlerweile verschlüsselt zu sein (zumindest laut meinen Netzwerk Mitschnitten). Man kann den Datenverkehr zwar zum ioBroker schicken, der kann ohne passendes Zertifikat aber leider nichts damit anfangen. Ich konnte die Verschlüsselung über die API leider nicht deaktvieren oder anpassen. Schade, denn über MQTT lassen sich anscheinend auch die jeweiligen Szenen ansteuern.
      Achja, ich bin kein Programmierer. Bspw. ist die direkte Umsetzung in Javascript sicher wesentlich eleganter und/oder das gleichzeitige packen in einen Adapter. Ich bitte um Nachsicht und hoffe einfach, dass ihr (so wie ich jetzt auch) zumindest zufrieden seid, wenn ihr euer Twinkly nun per ioBroker zumindest an und aus schalten könnt. 🙂

      F Offline
      F Offline
      Finnenzauber
      schrieb am zuletzt editiert von
      #2

      @siggi85 Hallo siggi85,

      vielen Dank für deine Arbeit und Mühe.

      Da ich gerne meine Twinklyleuchterkette außen mit einem Helligkeitssensor verknüpfen möchte für An/AUS, würde ich gerne meine Kette in den IOBoker einbinden. Würdest Du mir die einzelnen Schritte genauer erklären wie das mache, da ich keine Ahnung habe wie ich das bewerkstellige?

      Vielen Dank auf jeden Fall schon mal im Voraus.

      Finnenzauber

      siggi85S 1 Antwort Letzte Antwort
      0
      • F Finnenzauber

        @siggi85 Hallo siggi85,

        vielen Dank für deine Arbeit und Mühe.

        Da ich gerne meine Twinklyleuchterkette außen mit einem Helligkeitssensor verknüpfen möchte für An/AUS, würde ich gerne meine Kette in den IOBoker einbinden. Würdest Du mir die einzelnen Schritte genauer erklären wie das mache, da ich keine Ahnung habe wie ich das bewerkstellige?

        Vielen Dank auf jeden Fall schon mal im Voraus.

        Finnenzauber

        siggi85S Offline
        siggi85S Offline
        siggi85
        schrieb am zuletzt editiert von
        #3

        @Finnenzauber Du musst das Blocky unter Skripte importieren. Dann die IP Adresse im Blockly oben ändern auf die deines Twinkly Gerätes.
        Zusätzlich den JSON Export in der Objektstruktur importieren.
        Wenn du dann das Skript dann startest, sollten der neu erstellte Datenpunkt für an/aus und der Helligkeitsdatenpunkt dein Twinkly Device schalten.

        Kleiner Nachteil: wenn du Twinkly außerhalb von ioBroker steuerst, dann wird das nicht in ioBroker übernommen. Ich hatte damals auf die Schnelle nicht gesehen, wie ich den aktuellen Status bezüglich an/aus abfragen kann.

        Am besten dem Hersteller schreiben und ihn bitten, eine offizielle API herauszugeben. Umso mehr das machen, umso eher kommt vielleicht was dabei raus. Ich habe das damals auch gemacht und der Supporter hat das mitgenommen. 👍

        F 1 Antwort Letzte Antwort
        0
        • siggi85S siggi85

          @Finnenzauber Du musst das Blocky unter Skripte importieren. Dann die IP Adresse im Blockly oben ändern auf die deines Twinkly Gerätes.
          Zusätzlich den JSON Export in der Objektstruktur importieren.
          Wenn du dann das Skript dann startest, sollten der neu erstellte Datenpunkt für an/aus und der Helligkeitsdatenpunkt dein Twinkly Device schalten.

          Kleiner Nachteil: wenn du Twinkly außerhalb von ioBroker steuerst, dann wird das nicht in ioBroker übernommen. Ich hatte damals auf die Schnelle nicht gesehen, wie ich den aktuellen Status bezüglich an/aus abfragen kann.

          Am besten dem Hersteller schreiben und ihn bitten, eine offizielle API herauszugeben. Umso mehr das machen, umso eher kommt vielleicht was dabei raus. Ich habe das damals auch gemacht und der Supporter hat das mitgenommen. 👍

          F Offline
          F Offline
          Finnenzauber
          schrieb am zuletzt editiert von
          #4

          @siggi85 Super - vielen Dank für die Erläuterung - und versprochen; ich kratze mal an der Tür von Twinkly wegen der API. Nochmals Dank und viele Grüsse Finnenzauber

          siggi85S 1 Antwort Letzte Antwort
          1
          • F Finnenzauber

            @siggi85 Super - vielen Dank für die Erläuterung - und versprochen; ich kratze mal an der Tür von Twinkly wegen der API. Nochmals Dank und viele Grüsse Finnenzauber

            siggi85S Offline
            siggi85S Offline
            siggi85
            schrieb am zuletzt editiert von
            #5

            Zur Info, falls ihr auch mehrere Twinkly Devices habt:
            Ich habe gerade von Twinkly die Festoon Lichterkette mit Verlängerung aufgebaut. Im Blockly Export und im Datenpunkt export einfach "Suchen/Ersetzen" --> "twinkly1/twinkly2" (oder wie auch immer ihr euer Device nennen wollt), importieren, IP-Adresse anpassen und fertig. 🙂

            1 Antwort Letzte Antwort
            0
            • A Offline
              A Offline
              AndreasK
              schrieb am zuletzt editiert von AndreasK
              #6

              Hallo,
              leider funktioniert es nicht. Bekomme folgende Fehlermeldungen in der Log

              javascript.0	2020-11-26 19:20:56.131	error	(1265) script.js.Meine_Geräte.Beleuchtung.Twinkly: setForeignState: undefined is not a valid state value
              javascript.0	2020-11-26 19:20:56.130	warn	(1265) at processImmediate (internal/timers.js:463:21)
              javascript.0	2020-11-26 19:20:56.130	warn	(1265) at Immediate._onImmediate (script.js.Meine_Geräte.Beleuchtung.Twinkly:38:7)
              javascript.0	2020-11-26 19:20:56.129	warn	(1265) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1411:20)
              javascript.0	2020-11-26 19:20:56.127	warn	(1265) You are assigning a undefined to the state "0_userdata.0.devices.twinkly1.last_response" which expects a string. Please fix your code to use a string or change the state type to undefined. This
              javascript.0	2020-11-26 19:20:56.125	info	(1265) script.js.Meine_Geräte.Beleuchtung.Twinkly: exec is not available. Please enable "Enable Exec" option in instance settings
              javascript.0	2020-11-26 19:20:56.124	error	(1265) exec is not available. Please enable "Enable Exec" option in instance settings
              
              1 Antwort Letzte Antwort
              0
              • A Offline
                A Offline
                AndreasK
                schrieb am zuletzt editiert von
                #7

                Das mit der Fehlermeldung konnte ich lösen.
                Leider funktioniert es trotzdem nicht.
                Scheinbar wird ein invalider Token generiert. Der invalid_toke-counter wird immer nur hochgezählt

                siggi85S 2 Antworten Letzte Antwort
                0
                • A AndreasK

                  Das mit der Fehlermeldung konnte ich lösen.
                  Leider funktioniert es trotzdem nicht.
                  Scheinbar wird ein invalider Token generiert. Der invalid_toke-counter wird immer nur hochgezählt

                  siggi85S Offline
                  siggi85S Offline
                  siggi85
                  schrieb am zuletzt editiert von siggi85
                  #8

                  @AndreasK Ansonsten Mal auf der Kommandozeile die curl Befehle direkt ausführen. Müsstest du dir aus dem Blockly ableiten können. (Steckt in der Funktion zur Tokengenerierung).
                  Falls es nicht klappt, schreibe ich die beiden Befehle zur Tokengenerierung später hier rein, bin gerade nur am Handy.
                  EDIT: Das in der JavaScript Instanz exec erlaubt sein muss, habe ich Mal im ersten Beitrag ergänzt. Hatte ich vergessen.
                  EDIT2: Was steht denn im Token Datenpunkt? Müsste ungefähr so aussehen:
                  O+hjKfbLhGs=

                  1 Antwort Letzte Antwort
                  0
                  • A AndreasK

                    Das mit der Fehlermeldung konnte ich lösen.
                    Leider funktioniert es trotzdem nicht.
                    Scheinbar wird ein invalider Token generiert. Der invalid_toke-counter wird immer nur hochgezählt

                    siggi85S Offline
                    siggi85S Offline
                    siggi85
                    schrieb am zuletzt editiert von siggi85
                    #9

                    Antwort ausversehen editiert und dabei gelöscht... 😕 Notwendige Befehle stehen aber ein paar Antworten weiter unten.

                    1 Antwort Letzte Antwort
                    0
                    • A Offline
                      A Offline
                      AndreasK
                      schrieb am zuletzt editiert von
                      #10

                      @siggi85 Hier das Ergebnis

                      {"authentication_token":"uyXHFBPzFzo=","authentication_token_expires_in":14400,"challenge-response":"8d927c5e0a832f65a3f82a89b2bb045238e02a87","code":1000}
                      

                      Des weiteren mal ein Screenshot der Objekte
                      2020-11-28 19_42_59-objects - ioBroker.png

                      Als Firmware ist die 2.5.6 aufgespielt

                      1 Antwort Letzte Antwort
                      0
                      • A Offline
                        A Offline
                        AndreasK
                        schrieb am zuletzt editiert von
                        #11

                        Hi,
                        ich habe das Ganze mal über das Homebridge-Plugin mal in ins Homekit gebracht.
                        Da ist es auch so, dass beim einschalten nichts passiert. Hier ist mir aber aufgefallen, dass immer mit 0% Helligkeit eingeschaltet wird. Drehe ich im Homekit die Helligkeit hoch, geht Twinky an und lässt sich steuern. Auch Ausschalten funktioniert.
                        Ggf. ist das hier das gleiche Problem. Wobei ich auch schon versucht habe Helligkeit 100 nachzusenden. Brachte leider nichts.

                        siggi85S 2 Antworten Letzte Antwort
                        0
                        • A AndreasK

                          Hi,
                          ich habe das Ganze mal über das Homebridge-Plugin mal in ins Homekit gebracht.
                          Da ist es auch so, dass beim einschalten nichts passiert. Hier ist mir aber aufgefallen, dass immer mit 0% Helligkeit eingeschaltet wird. Drehe ich im Homekit die Helligkeit hoch, geht Twinky an und lässt sich steuern. Auch Ausschalten funktioniert.
                          Ggf. ist das hier das gleiche Problem. Wobei ich auch schon versucht habe Helligkeit 100 nachzusenden. Brachte leider nichts.

                          siggi85S Offline
                          siggi85S Offline
                          siggi85
                          schrieb am zuletzt editiert von
                          #12

                          @AndreasK
                          Den Code 1004 den du als Rückgabewert hast, habe ich bei meinen beiden Twinklys nicht. In der inoffiziellen Doku steht dazu

                          1104
                          Error - malformed JSON on input?

                          Ich schicke dir demnächst mal den "händischen Weg" ohne Blockly, dann kannst du das mal versuchen. Anscheinend funktioniert das Parsing im Blockly Import bei dir nicht richtig, also wo der Request zusammengebaut wird. Der Befehl auf der Kommandozeile sieht zumindest gut aus und gibt korrekt Code 1000 zurück.

                          1 Antwort Letzte Antwort
                          0
                          • A AndreasK

                            Hi,
                            ich habe das Ganze mal über das Homebridge-Plugin mal in ins Homekit gebracht.
                            Da ist es auch so, dass beim einschalten nichts passiert. Hier ist mir aber aufgefallen, dass immer mit 0% Helligkeit eingeschaltet wird. Drehe ich im Homekit die Helligkeit hoch, geht Twinky an und lässt sich steuern. Auch Ausschalten funktioniert.
                            Ggf. ist das hier das gleiche Problem. Wobei ich auch schon versucht habe Helligkeit 100 nachzusenden. Brachte leider nichts.

                            siggi85S Offline
                            siggi85S Offline
                            siggi85
                            schrieb am zuletzt editiert von
                            #13

                            @AndreasK @AndreasK Versuch auf der Kommadozeile mal folgendes:

                            Schritt1

                            curl -d '{"challenge": "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8="}' -H 'Content-Type: application/json' http://IP-ADRESSE/xled/v1/login
                            

                            Dann den authentication token der Antwort nutzen um folgendes abzusetzen (in allen folgenden Befehlen TOKEN und IP-ADRESSE ersetzen):

                            Schritt 2

                            curl -d '{"challenge-response": "4ecffc0c669796ea843c4ef4dc7d2a33cf081d92"}' -H 'Content-Type: application/json\
                            X-Auth-Token: TOKEN'  http://IP-ADRESSE/xled/v1/verify
                            

                            Danach mit dem Token folgendes ausführen:

                            An schalten:

                            curl -d '{"mode":"movie"}' -H 'Content-Type: application/json\ 
                            X-Auth-Token: TOKEN'  http://IP-ADRESSE/xled/v1/led/mode
                            

                            Aus schalten:

                            curl -d '{"mode":"off"}' -H 'Content-Type: application/json\ 
                            X-Auth-Token: TOKEN'  http://IP-ADRESSE/xled/v1/led/mode
                            

                            Sollte die Antwort kommen, dass der Token nicht mehr gültig ist, Schritt 1 und Schritt 2 wiederholen um neuen Token zu generieren.

                            Bitte teste das mal und gebe mir Rückmeldung ob du so dein Twinkly an und aus machen kannst.

                            patrickbs96P 1 Antwort Letzte Antwort
                            0
                            • siggi85S siggi85

                              @AndreasK @AndreasK Versuch auf der Kommadozeile mal folgendes:

                              Schritt1

                              curl -d '{"challenge": "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8="}' -H 'Content-Type: application/json' http://IP-ADRESSE/xled/v1/login
                              

                              Dann den authentication token der Antwort nutzen um folgendes abzusetzen (in allen folgenden Befehlen TOKEN und IP-ADRESSE ersetzen):

                              Schritt 2

                              curl -d '{"challenge-response": "4ecffc0c669796ea843c4ef4dc7d2a33cf081d92"}' -H 'Content-Type: application/json\
                              X-Auth-Token: TOKEN'  http://IP-ADRESSE/xled/v1/verify
                              

                              Danach mit dem Token folgendes ausführen:

                              An schalten:

                              curl -d '{"mode":"movie"}' -H 'Content-Type: application/json\ 
                              X-Auth-Token: TOKEN'  http://IP-ADRESSE/xled/v1/led/mode
                              

                              Aus schalten:

                              curl -d '{"mode":"off"}' -H 'Content-Type: application/json\ 
                              X-Auth-Token: TOKEN'  http://IP-ADRESSE/xled/v1/led/mode
                              

                              Sollte die Antwort kommen, dass der Token nicht mehr gültig ist, Schritt 1 und Schritt 2 wiederholen um neuen Token zu generieren.

                              Bitte teste das mal und gebe mir Rückmeldung ob du so dein Twinkly an und aus machen kannst.

                              patrickbs96P Offline
                              patrickbs96P Offline
                              patrickbs96
                              Developer
                              schrieb am zuletzt editiert von
                              #14

                              Hallo @siggi85, danke für dein Blockly-Skript.

                              Anhand deiner Vorlage und dem Python-Skript von jschlyter habe ich mir daraus ein Skript in Javascript erstellt. Es sind soweit alle Befehle aus der inoffiziellen API implementiert.
                              Ich habe es auch so umgesetzt, dass es sehr einfach um weitere Lichterketten erweitert werden.

                              Meine Twinkly Lichterketten werden leider erst am Wochenende geliefert, daher werde ich bis dahin noch abwarten müssen bevor ich es testen kann. Falls danach alles klappt kann ich es euch gerne zur Verfügung stellen.

                              siggi85S 2 Antworten Letzte Antwort
                              1
                              • patrickbs96P patrickbs96

                                Hallo @siggi85, danke für dein Blockly-Skript.

                                Anhand deiner Vorlage und dem Python-Skript von jschlyter habe ich mir daraus ein Skript in Javascript erstellt. Es sind soweit alle Befehle aus der inoffiziellen API implementiert.
                                Ich habe es auch so umgesetzt, dass es sehr einfach um weitere Lichterketten erweitert werden.

                                Meine Twinkly Lichterketten werden leider erst am Wochenende geliefert, daher werde ich bis dahin noch abwarten müssen bevor ich es testen kann. Falls danach alles klappt kann ich es euch gerne zur Verfügung stellen.

                                siggi85S Offline
                                siggi85S Offline
                                siggi85
                                schrieb am zuletzt editiert von siggi85
                                #15

                                @patrickbs96 Das hört sich super an! 😊👍

                                EDIT: Hast du damit auch ein regelmäßiges Polling integrieren können? Also dass bspw. der an/aus Status in ioBroker angepasst wird, auch wenn es über die App gesteuert. Das fehlt mir bei meiner Version. 😉

                                patrickbs96P 1 Antwort Letzte Antwort
                                0
                                • siggi85S siggi85

                                  @patrickbs96 Das hört sich super an! 😊👍

                                  EDIT: Hast du damit auch ein regelmäßiges Polling integrieren können? Also dass bspw. der an/aus Status in ioBroker angepasst wird, auch wenn es über die App gesteuert. Das fehlt mir bei meiner Version. 😉

                                  patrickbs96P Offline
                                  patrickbs96P Offline
                                  patrickbs96
                                  Developer
                                  schrieb am zuletzt editiert von
                                  #16

                                  @siggi85 Die Lichterkette kam früher als gedacht. Musste noch ein paar Fehler ausbügeln aber sollte jetzt soweit funktionieren. Ich habe teilweise eigene Funktionen verwendet die ich bei mir im GLOBAL stehen habe. Ich habe diese am Ende des Skripts hinzugefügt. Falls doch noch eine fehlen sollte, kann ich das noch ergänzen 🙂

                                  Zum Thema Polling: Aktuell werden einmal die Minute die Informationen abgefragt. Falls weniger gewünscht sein sollte müsste ich die Logik nochmal überarbeiteten, da ich mit schedule nicht weniger eintragen konnte.

                                  Das Skript habe ich hier abgelegt.

                                  siggi85S 2 Antworten Letzte Antwort
                                  1
                                  • patrickbs96P patrickbs96

                                    @siggi85 Die Lichterkette kam früher als gedacht. Musste noch ein paar Fehler ausbügeln aber sollte jetzt soweit funktionieren. Ich habe teilweise eigene Funktionen verwendet die ich bei mir im GLOBAL stehen habe. Ich habe diese am Ende des Skripts hinzugefügt. Falls doch noch eine fehlen sollte, kann ich das noch ergänzen 🙂

                                    Zum Thema Polling: Aktuell werden einmal die Minute die Informationen abgefragt. Falls weniger gewünscht sein sollte müsste ich die Logik nochmal überarbeiteten, da ich mit schedule nicht weniger eintragen konnte.

                                    Das Skript habe ich hier abgelegt.

                                    siggi85S Offline
                                    siggi85S Offline
                                    siggi85
                                    schrieb am zuletzt editiert von
                                    #17

                                    @patrickbs96 Das schaue ich mir die Tage an. Bin schon gespannt. 😊👍

                                    1 Antwort Letzte Antwort
                                    0
                                    • patrickbs96P patrickbs96

                                      @siggi85 Die Lichterkette kam früher als gedacht. Musste noch ein paar Fehler ausbügeln aber sollte jetzt soweit funktionieren. Ich habe teilweise eigene Funktionen verwendet die ich bei mir im GLOBAL stehen habe. Ich habe diese am Ende des Skripts hinzugefügt. Falls doch noch eine fehlen sollte, kann ich das noch ergänzen 🙂

                                      Zum Thema Polling: Aktuell werden einmal die Minute die Informationen abgefragt. Falls weniger gewünscht sein sollte müsste ich die Logik nochmal überarbeiteten, da ich mit schedule nicht weniger eintragen konnte.

                                      Das Skript habe ich hier abgelegt.

                                      siggi85S Offline
                                      siggi85S Offline
                                      siggi85
                                      schrieb am zuletzt editiert von
                                      #18

                                      @patrickbs96 sagte in Twinkly - Basisfunktionen mit ioBroker steuern:

                                      Ich habe diese am Ende des Skripts hinzugefügt. Falls doch noch eine fehlen sollte, kann ich das noch ergänzen 🙂

                                      Funktioniert leider nicht bei mir. Ich vermute mal MS_PER_SECOND fehlt noch, oder? 🙂

                                      javascript.1	2020-12-03 19:42:04.044	error	(19045) at Script.runInContext (vm.js:131:20)
                                      javascript.1	2020-12-03 19:42:04.044	error	(19045) at script.js.05_Helper.Twinkly_new:667:1
                                      javascript.1	2020-12-03 19:42:04.043	error	(19045) at init (script.js.05_Helper.Twinkly_new:203:20)
                                      javascript.1	2020-12-03 19:42:04.043	error	(19045) ReferenceError: MS_PER_SECOND is not defined
                                      javascript.1	2020-12-03 19:42:04.043	error	(19045) ^
                                      javascript.1	2020-12-03 19:42:04.043	error	(19045) }, 2 * MS_PER_SECOND);
                                      javascript.1	2020-12-03 19:42:04.043	error	(19045) script.js.05_Helper.Twinkly_new: script.js.05_Helper.Twinkly_new:203
                                      
                                      patrickbs96P 1 Antwort Letzte Antwort
                                      0
                                      • siggi85S siggi85

                                        @patrickbs96 sagte in Twinkly - Basisfunktionen mit ioBroker steuern:

                                        Ich habe diese am Ende des Skripts hinzugefügt. Falls doch noch eine fehlen sollte, kann ich das noch ergänzen 🙂

                                        Funktioniert leider nicht bei mir. Ich vermute mal MS_PER_SECOND fehlt noch, oder? 🙂

                                        javascript.1	2020-12-03 19:42:04.044	error	(19045) at Script.runInContext (vm.js:131:20)
                                        javascript.1	2020-12-03 19:42:04.044	error	(19045) at script.js.05_Helper.Twinkly_new:667:1
                                        javascript.1	2020-12-03 19:42:04.043	error	(19045) at init (script.js.05_Helper.Twinkly_new:203:20)
                                        javascript.1	2020-12-03 19:42:04.043	error	(19045) ReferenceError: MS_PER_SECOND is not defined
                                        javascript.1	2020-12-03 19:42:04.043	error	(19045) ^
                                        javascript.1	2020-12-03 19:42:04.043	error	(19045) }, 2 * MS_PER_SECOND);
                                        javascript.1	2020-12-03 19:42:04.043	error	(19045) script.js.05_Helper.Twinkly_new: script.js.05_Helper.Twinkly_new:203
                                        
                                        patrickbs96P Offline
                                        patrickbs96P Offline
                                        patrickbs96
                                        Developer
                                        schrieb am zuletzt editiert von patrickbs96
                                        #19

                                        @siggi85 Ach verdammt, da habe ich doch noch was übersehen... War leider eine meiner Helper-Konstante 😄
                                        Ich habe es auf GitHub korrigiert. Wenn du 2 * MS_PER_SECOND durch 2000 ersetzt führt es zum gleichen Ergebnis, wie wenn du diese Konstante definierst 😉

                                        const MS_PER_SECOND = 1000;
                                        
                                        W 1 Antwort Letzte Antwort
                                        0
                                        • patrickbs96P patrickbs96

                                          @siggi85 Ach verdammt, da habe ich doch noch was übersehen... War leider eine meiner Helper-Konstante 😄
                                          Ich habe es auf GitHub korrigiert. Wenn du 2 * MS_PER_SECOND durch 2000 ersetzt führt es zum gleichen Ergebnis, wie wenn du diese Konstante definierst 😉

                                          const MS_PER_SECOND = 1000;
                                          
                                          W Offline
                                          W Offline
                                          W0RSCHD
                                          schrieb am zuletzt editiert von
                                          #20

                                          @patrickbs96

                                          ich bekomme folgende Fehlermeldungen im Log

                                          javascript.0	2020-12-03 20:55:29.616	error	(1036) script.js.Schaltungen.Twinkly: setForeignState: undefined is not a valid state value
                                          javascript.0	2020-12-03 20:55:29.616	warn	(1036) at Pipe.<anonymous> (net.js:675:12)
                                          javascript.0	2020-12-03 20:55:29.616	warn	(1036) at Socket.EventEmitter.emit (domain.js:483:12)
                                          javascript.0	2020-12-03 20:55:29.615	warn	(1036) at Socket.emit (events.js:314:20)
                                          javascript.0	2020-12-03 20:55:29.615	warn	(1036) at Socket.<anonymous> (internal/child_process.js:444:11)
                                          javascript.0	2020-12-03 20:55:29.615	warn	(1036) at maybeClose (internal/child_process.js:1022:16)
                                          javascript.0	2020-12-03 20:55:29.614	warn	(1036) at ChildProcess.EventEmitter.emit (domain.js:483:12)
                                          javascript.0	2020-12-03 20:55:29.614	warn	(1036) at ChildProcess.emit (events.js:314:20)
                                          javascript.0	2020-12-03 20:55:29.614	warn	(1036) at ChildProcess.exithandler (child_process.js:315:5)
                                          javascript.0	2020-12-03 20:55:29.613	warn	(1036) at script.js.Schaltungen.Twinkly:10:5
                                          javascript.0	2020-12-03 20:55:29.613	warn	(1036) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1411:20)
                                          javascript.0	2020-12-03 20:55:29.611	warn	(1036) You are assigning a undefined to the state "0_userdata.0.devices.twinkly1.token" which expects a string. Please fix your code to use a string or change the state type to undefined. This warning
                                          javascript.0	2020-12-03 20:55:29.610	info	(1036) script.js.Schaltungen.Twinkly: Starte Tokenerstellung
                                          javascript.0	2020-12-03 20:55:29.600	error	(1036) script.js.Schaltungen.Twinkly: setForeignState: undefined is not a valid state value
                                          

                                          Direkt nach erstellen des Skriptes hat alles funktioniert, jetzt wo der Token abgelaufen ist geht nichts mehr.
                                          Wenn ich den Befehl zum erstellen des Tokens manuell per Telnet eingebe klappt das einwandfrei.
                                          Was mach ich falsch?

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          402

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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