Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Ordner und DPs per ID Selektor erstellen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Ordner und DPs per ID Selektor erstellen

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

      Tag,
      heutiges Projekt soll sein, dass ich per ID Selektor meine AlexaDevices abfrage und automatisch Ordnernamen der jeweiligen Geräte unter

      0_userdata.0.AmazonDevices
      

      angelegt werden.
      Erweitertes Ziel ist es dass dann auch noch einige Infos aus original DPs der Devices (z.B. SN, ...) als DP unter den jeweiligen angelegten Ordner zu schreiben (mit original Wert).

      Bisher habe ich das etwas aufwändig folgend gelöst:

      Screenshot 2022-07-18 081605.png

      Habe für jedes Device manuell einen Ordner und darunter DPs angelegt.
      Ist dann halt pflegeintensiv wenn ein neues Device hinzukommt oder eines wegfällt.

      Ob mir da etwas geholfen werden kann?

      Dankeschön

      David G. 1 Reply Last reply Reply Quote 0
      • David G.
        David G. @DJMarc75 last edited by David G.

        @djmarc75

        In der Art kann man es machen.

        Screenshot_20220718-093618_Firefox.jpg

        <xml xmlns="https://developers.google.com/blockly/xml">
         <variables>
           <variable id="I?IY,pbmgtKHwd9L]VLd">id</variable>
           <variable id="%62`(Q[9y{,UvP3o}T|/">i</variable>
           <variable id="GI^dumJfw0)4Nzi2HVw`">ParentID</variable>
           <variable id="bcl|+G6)P$l:,Gn9x$[Q">lowbat</variable>
           <variable id="sX4P;:Fyd]5~^1a(_}UP">rssi_device</variable>
         </variables>
         <block type="procedures_defcustomreturn" id="S;%2#n?7.W0Cko92rdS9" x="1263" y="563">
           <mutation statements="false">
             <arg name="id" varid="I?IY,pbmgtKHwd9L]VLd"></arg>
           </mutation>
           <field name="NAME">werterhalten</field>
           <field name="SCRIPT">aWYoZXhpc3RzU3RhdGUoaWQpKSByZXR1cm4gZ2V0U3RhdGUoaWQpLnZhbDsgLy8gZmFsc2UgLyB0cnVlDQpyZXR1cm4gLTE=</field>
           <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
         </block>
         <block type="controls_forEach" id="fuX0?t}`q26ik90d]-gs" x="1262" y="613">
           <field name="VAR" id="%62`(Q[9y{,UvP3o}T|/">i</field>
           <value name="LIST">
             <block type="selector" id="%_*9dXZ9|]7KBP1Y%W@4">
               <field name="TEXT">zigbee.0.*.available</field>
             </block>
           </value>
           <statement name="DO">
             <block type="variables_set" id="p/_H.Q]AMU:yv9KJ4e%}">
               <field name="VAR" id="GI^dumJfw0)4Nzi2HVw`">ParentID</field>
               <value name="VALUE">
                 <block type="text_getSubstring" id="vK4A(n:9J$;z+Ctsym+7" inline="false">
                   <mutation at1="true" at2="true"></mutation>
                   <field name="WHERE1">FROM_START</field>
                   <field name="WHERE2">FROM_START</field>
                   <value name="STRING">
                     <block type="variables_get" id="0FneE0reR[]F{cs1]a/8">
                       <field name="VAR" id="%62`(Q[9y{,UvP3o}T|/">i</field>
                     </block>
                   </value>
                   <value name="AT1">
                     <block type="math_number" id="p$Se(4EeE3a#GN+#Sod-">
                       <field name="NUM">1</field>
                     </block>
                   </value>
                   <value name="AT2">
                     <block type="math_arithmetic" id="G!vJ5Y|L=!0!zqpz#c;r" inline="false">
                       <field name="OP">MINUS</field>
                       <value name="A">
                         <shadow type="math_number">
                           <field name="NUM">1</field>
                         </shadow>
                         <block type="text_indexOf" id="?l(!U$rbxlq(SCV[!SNh" inline="false">
                           <field name="END">LAST</field>
                           <value name="VALUE">
                             <block type="variables_get" id="B]=#1xDF@L{tIlO/,./9">
                               <field name="VAR" id="%62`(Q[9y{,UvP3o}T|/">i</field>
                             </block>
                           </value>
                           <value name="FIND">
                             <shadow type="text" id="@8HBD+(]H+7T8P/!/PT(">
                               <field name="TEXT">.available</field>
                             </shadow>
                           </value>
                         </block>
                       </value>
                       <value name="B">
                         <shadow type="math_number" id="3Dv/DU?/5!u_S/k]vyLT">
                           <field name="NUM">1</field>
                         </shadow>
                       </value>
                     </block>
                   </value>
                 </block>
               </value>
               <next>
                 <block type="variables_set" id="d]Tr+rm9oX0n24?7g:Xs">
                   <field name="VAR" id="bcl|+G6)P$l:,Gn9x$[Q">lowbat</field>
                   <value name="VALUE">
                     <block type="procedures_callcustomreturn" id="B#MVf5k/g+-I5t-CNAq2">
                       <mutation name="werterhalten">
                         <arg name="id"></arg>
                       </mutation>
                       <value name="ARG0">
                         <block type="text_join" id="C/_Q30a%|TqW7;%L%3C@" inline="true">
                           <mutation items="2"></mutation>
                           <value name="ADD0">
                             <block type="variables_get" id="CnjKB;U7]V4Z9vb7x[!5">
                               <field name="VAR" id="GI^dumJfw0)4Nzi2HVw`">ParentID</field>
                             </block>
                           </value>
                           <value name="ADD1">
                             <block type="text" id="ib-MAR+QnNYMCrGSF,;i">
                               <field name="TEXT">.battery</field>
                             </block>
                           </value>
                         </block>
                       </value>
                     </block>
                   </value>
                   <next>
                     <block type="variables_set" id="d0}ynFzUB+tqfEGnqWy(">
                       <field name="VAR" id="sX4P;:Fyd]5~^1a(_}UP">rssi_device</field>
                       <value name="VALUE">
                         <block type="procedures_callcustomreturn" id="UJ}ohia}Y[h^zU4o+z(9">
                           <mutation name="werterhalten">
                             <arg name="id"></arg>
                           </mutation>
                           <value name="ARG0">
                             <block type="text_join" id="850gAQTowhRKTwFi~)l7" inline="true">
                               <mutation items="2"></mutation>
                               <value name="ADD0">
                                 <block type="variables_get" id="1/g,dybzm|Md2f]PMr#e">
                                   <field name="VAR" id="GI^dumJfw0)4Nzi2HVw`">ParentID</field>
                                 </block>
                               </value>
                               <value name="ADD1">
                                 <block type="text" id="[BLpKsrq(ntnaw0p0f|j">
                                   <field name="TEXT">.link_quality</field>
                                 </block>
                               </value>
                             </block>
                           </value>
                         </block>
                       </value>
                       <next>
                         <block type="telegram" id="n7cBdMhNcXaQb+yIjQ=M">
                           <field name="INSTANCE">.0</field>
                           <field name="LOG"></field>
                           <field name="SILENT">FALSE</field>
                           <field name="PARSEMODE">default</field>
                           <field name="DISABLE_WEB_PAGE_PREVIEW">FALSE</field>
                           <value name="MESSAGE">
                             <shadow type="text" id="TVuWRrO2*Fpa#O$pkI5`">
                               <field name="TEXT">text</field>
                             </shadow>
                             <block type="text_join" id="6rRi#@kO[~[X;$%ldzyt">
                               <mutation items="3"></mutation>
                               <value name="ADD0">
                                 <block type="variables_get" id="-Ao^f1zAmGDZV]66sF.R">
                                   <field name="VAR" id="bcl|+G6)P$l:,Gn9x$[Q">lowbat</field>
                                 </block>
                               </value>
                               <value name="ADD1">
                                 <block type="variables_get" id="g~u:q3nY$t*nGC*kP#mS">
                                   <field name="VAR" id="sX4P;:Fyd]5~^1a(_}UP">rssi_device</field>
                                 </block>
                               </value>
                             </block>
                           </value>
                         </block>
                       </next>
                     </block>
                   </next>
                 </block>
               </next>
             </block>
           </statement>
         </block>
        </xml>
        


        (Missbrauche telegram immer als debug....)

        Beim oberen Block wie du die Variable parentid gesetzt. Da nimmst du einen Datenpunkt den JEDES Gerät hat.
        Dann wird es beschnitten bis auf die Ebene wo die relevanten Datenpunkte anfangen.

        Weiter unten muss man dann den restlichen Pfad zu den gewünschten Datenpunkten angeben.

        In der Art habe ich zb diese Tabelle erstellt.

        Screenshot_20220718-084128_Fully Kiosk Browser.jpg

        Wenn du für alles einen Datenpunkt haben möchtest, kannst du diesen ja in der Schleife mit anlegen. Siehe hier. Kann man ja auch über Text erstellen so bauen wie man es dann braucht.

        Wie man den Name vom Gerät erhält ist von Adapter zu Adapter was anders. Nutze Alexa nicht (sehe grad in deinem Bild, dass es einen Datenpunkt mit dem Name gibt. Dann kannst du den ja nehmen.).

        DJMarc75 1 Reply Last reply Reply Quote 1
        • DJMarc75
          DJMarc75 @David G. last edited by

          @david-g Der Ansatz funktioniert schon mal ganz gut.
          Ja, habe den Name genommen.
          Merci

          David G. 1 Reply Last reply Reply Quote 0
          • David G.
            David G. @DJMarc75 last edited by

            @djmarc75

            Top.

            Weiß nur nicht, ob man beim Datenpunkt erstellen einen Variablen Namen vergeben kann. Steht in dem Link nichts zu.
            Evtl kann man da wie beim timeout den Namen einer Variablen reinschreiben?

            DJMarc75 1 Reply Last reply Reply Quote 0
            • DJMarc75
              DJMarc75 @David G. last edited by

              @david-g
              Das teste ich nachher einfach mal aus wenn ich die ganzen Werte korrekt in den Debugs sehe.
              Der Tag ist ja gsd noch jung 😁

              David G. 1 Reply Last reply Reply Quote 0
              • David G.
                David G. @DJMarc75 last edited by David G.

                @djmarc75

                Hans grad mal mit einer Variablen zum Erstellen vom Datenpunkt getestet.
                Screenshot_20220718-103935_Chrome.jpg
                Klappt nicht.

                Evtl muss man dann eine JS Funktion nehmen. Keine Ahnung.

                @paul53 hat da bestimmt eine Idee.

                P.s.
                Für was kann man in den Block zum Erstellen unten nochwas rein machen. Beschreiben kann man ihn ja schon mit Init-Wert.

                1 Reply Last reply Reply Quote 0
                • David G.
                  David G. last edited by

                  So klappt es, noch was gefunden:

                  Screenshot_20220718-123248_Chrome.jpg

                  Für die Funktion:

                  createState('0_userdata.0.' + id, init, JSON.parse(common));
                  
                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  904
                  Online

                  32.0k
                  Users

                  80.5k
                  Topics

                  1.3m
                  Posts

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