Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [Gelöst] Wert aus Werteliste ansprechen?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Gelöst] Wert aus Werteliste ansprechen?

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

      Juten Tach!

      Ich komme nicht klar mit einer Werteliste / einem Array.

      Ich würde mich gerne auf verschiedene Arten und Weisen von Alexa begrüßen lassen. Hatte das erst in meinem Guten-Morgen-Skript ganz einfach über eine Variable gelöst; funktioniert auch soweit. Ich möchte diese Anrede nun aber über den ganzen Tag verteilt auch in anderen Skripts verwenden.

      Soweit ich das verstanden habe, ist ja eine Variable nur in dem jeweiligen Skript und nicht übergreifend verfügbar. D. h., ich hätte meine Anredenliste in jedem einzelnen Skript einpflegen müssen. Das ist aber bestimmt nicht die eleganteste Lösung und bedeutet auch Pflegeaufwand in allen Skripts, wenn ich die Liste erweitern möchte.

      Daher habe ich einen Datenpunkt in Userdata erstellt als Werteliste. Diese Liste befülle ich morgens per Cronjob. Meine Idee war, dann im Skript eine Variable aus diesem Datenpunkt zu befüllen und aus dieser Variable ein zufälliges Element zu wählen.

      Gelöst momentan so:

      Cronjob morgens:

      1.JPG

      Im Skript befülle ich dann eine Variable und gebe einen zufälligen Wert aus (habe alles gelöscht bis auf die hier relevanten Teile):

      2.JPG

      Resultat: Alexa liest immer die komplette Liste, also alle Anreden nacheinander vor.

      Frage: Wie greife ich auf ein einzelnes Element im Datenpunkt bzw. in der Variable zu? Ich komm da echt nicht weiter.

      Grüße, Jürgen

      J.A.R.V.I.S. paul53 dslraser 3 Replies Last reply Reply Quote 0
      • J.A.R.V.I.S.
        J.A.R.V.I.S. Developer @Pilot0423 last edited by J.A.R.V.I.S.

        Hey, ich werde mir das später mal anschauen und dir eine Rückmeldung geben.

        Wie ich das aber gerade sehe, nimmst du nicht den Wert der Variable, sondern die komplette Variabel. Du müsstest einen "Wert von Variable"-Block nehmen.

        1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @Pilot0423 last edited by

          @Pilot0423 sagte in Wie Wert aus Datenpunkt-Werteliste ansprechen?:

          Datenpunkt in Userdata erstellt als Werteliste.

          Eine Werteliste ist ein Datenpunkt vom Typ "number" und kein Array / keine Liste. Der Datenpunkt muss vom Typ "Feld"(array) sein.

          Wenn der Datenpunkt bereits eine Liste enthält, ist das falsch:
          setze Anrede-Name auf erzeuge Liste mit Wert vom Objekt Anrede
          Richtig:
          setze Anrede-Name auf Wert vom Objekt Anrede

          1 Reply Last reply Reply Quote 0
          • dslraser
            dslraser Forum Testing Most Active @Pilot0423 last edited by

            @Pilot0423

            Beispiel:

            Bildschirmfoto 2019-12-15 um 15.46.00.png

            <xml xmlns="http://www.w3.org/1999/xhtml">
             <variables>
               <variable type="" id="^lbL`[/|tB:vyR3j/t4T">text</variable>
             </variables>
             <block type="variables_set" id="mJ=h023,;]Ix8UPE1Hy]" x="12" y="87">
               <field name="VAR" id="^lbL`[/|tB:vyR3j/t4T" variabletype="">text</field>
               <value name="VALUE">
                 <block type="lists_create_with" id="$6cCfz1{6FzI3b2[%!Yc">
                   <mutation items="4"></mutation>
                   <value name="ADD0">
                     <block type="text" id="c}.w$OTDmz)S6Fjm{U#!">
                       <field name="TEXT">Meister</field>
                     </block>
                   </value>
                   <value name="ADD1">
                     <block type="text" id="KH)O}PSyJfAAf{uv%[73">
                       <field name="TEXT">Kollege</field>
                     </block>
                   </value>
                   <value name="ADD2">
                     <block type="text" id="~Nd.;}2wEqG*-!+~kii+">
                       <field name="TEXT">Digga</field>
                     </block>
                   </value>
                   <value name="ADD3">
                     <block type="text" id="2F}6~!lyHo)F}`x-}G%c">
                       <field name="TEXT">Alter</field>
                     </block>
                   </value>
                 </block>
               </value>
               <next>
                 <block type="control" id="q;YQqu/~Jn]XE%V=dL-F">
                   <mutation delay_input="false"></mutation>
                   <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field>
                   <field name="WITH_DELAY">FALSE</field>
                   <value name="VALUE">
                     <block type="lists_getIndex" id=";s=8~:yu0q6%aOYbY*Zh">
                       <mutation statement="false" at="false"></mutation>
                       <field name="MODE">GET</field>
                       <field name="WHERE">RANDOM</field>
                       <value name="VALUE">
                         <block type="variables_get" id="S!DyhTGzq2:u#krkFR0L">
                           <field name="VAR" id="^lbL`[/|tB:vyR3j/t4T" variabletype="">text</field>
                         </block>
                       </value>
                     </block>
                   </value>
                 </block>
               </next>
             </block>
            </xml>
            

            1 Reply Last reply Reply Quote 0
            • P
              Pilot0423 last edited by Pilot0423

              Vielen Dank, dslraser. Aber das ist ja genau das, was ich hatte und was auch funktionierte (also mit einer Variablen arbeiten). Das müsste ich aber in jedem Skript machen (also die Liste befüllen), denn die Variable habe ich ja in anderen Skripts nicht mehr zur Verfügung.

              Ich möchte einen globalen Datenpunkt, den ich nur an einer Stelle pflege und in allen Skripts zur Verfügung habe. Und da möchte ich auf einen einzelnen Wert zugreifen. Verstehe leider immer noch nicht, welche Syntax ich da nehmen muss bzw. wie das Blockly optisch aussehen muss.

              Edit: JEEEEEEEEEEEEEEETZT ist der Groschen gefallen dank Paul53! Vielen Dank! Liste mit Liste befüllen = nix gut 🙂

              Schöne Weihnachtstage Euch,

              Jürgen

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

              Support us

              ioBroker
              Community Adapters
              Donate

              808
              Online

              31.9k
              Users

              80.3k
              Topics

              1.3m
              Posts

              blockly
              4
              5
              1337
              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