Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Lautstärke regeln mit Blockly

    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

    Lautstärke regeln mit Blockly

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @Robert 0 last edited by paul53

      @robert-0 sagte: wie meinst du das?

      Etwa so:

      Blockly_temp.JPG

      <xml xmlns="https://developers.google.com/blockly/xml">
       <variables>
         <variable type="interval" id="leiser">leiser</variable>
         <variable type="interval" id="lauter">lauter</variable>
       </variables>
       <block type="comment" id="-fZ{%Tx}y:l4L~Htf)]=" x="162" y="64">
         <field name="COMMENT">Button lauter</field>
         <next>
           <block type="on_ext" id="BvIk``_6wyevdCM?nrEQ">
             <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
             <field name="CONDITION">true</field>
             <field name="ACK_CONDITION"></field>
             <value name="OID0">
               <shadow type="field_oid" id="QXw5*b^Pp^P|#DlH/L:^">
                 <field name="oid">default</field>
               </shadow>
             </value>
             <statement name="STATEMENT">
               <block type="controls_if" id="2s0QwHEf(I@~uCF$mN**">
                 <mutation else="1"></mutation>
                 <value name="IF0">
                   <block type="variables_get" id="~Gg4w7^kePpH[.o^;BOL">
                     <field name="VAR" id="leiser" variabletype="interval">leiser</field>
                   </block>
                 </value>
                 <statement name="DO0">
                   <block type="timeouts_clearinterval" id="]Z(4:qoOI9pGGBh7H@:]">
                     <field name="NAME">leiser</field>
                   </block>
                 </statement>
                 <statement name="ELSE">
                   <block type="timeouts_setinterval" id="^;AmW+meFBLc)v[igQ$v">
                     <field name="NAME">lauter</field>
                     <field name="INTERVAL">500</field>
                     <field name="UNIT">ms</field>
                     <statement name="STATEMENT">
                       <block type="comment" id="aX{yCNAc92R.Z/~Kd{hJ">
                         <field name="COMMENT">Button +1</field>
                         <next>
                           <block type="control" id="](7/0QpQk/xHfFz9UqC6">
                             <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                             <field name="OID">Object ID</field>
                             <field name="WITH_DELAY">FALSE</field>
                             <value name="VALUE">
                               <block type="logic_boolean" id="Vo0G_f=^|11fQep7OB}P">
                                 <field name="BOOL">TRUE</field>
                               </block>
                             </value>
                           </block>
                         </next>
                       </block>
                     </statement>
                   </block>
                 </statement>
               </block>
             </statement>
             <next>
               <block type="comment" id="WYa^gz[j_)K~E6NUQ_Ue">
                 <field name="COMMENT">Button leiser</field>
                 <next>
                   <block type="on_ext" id="t69l9h/XMa+VG-glcwsk">
                     <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                     <field name="CONDITION">true</field>
                     <field name="ACK_CONDITION"></field>
                     <value name="OID0">
                       <shadow type="field_oid" id="hhdS@wDs=nJ2c6.{!?Ob">
                         <field name="oid">default</field>
                       </shadow>
                     </value>
                     <statement name="STATEMENT">
                       <block type="controls_if" id="O0}#]C1,5y6qkxK:ABpT">
                         <mutation else="1"></mutation>
                         <value name="IF0">
                           <block type="variables_get" id="ul@O_-N@A#ysQg5k}@gL">
                             <field name="VAR" id="lauter" variabletype="interval">lauter</field>
                           </block>
                         </value>
                         <statement name="DO0">
                           <block type="timeouts_clearinterval" id="$G$LSkK+#xspu$~[B|+B">
                             <field name="NAME">lauter</field>
                           </block>
                         </statement>
                         <statement name="ELSE">
                           <block type="timeouts_setinterval" id="=jEWNVi4(V!-2FErcsf/">
                             <field name="NAME">leiser</field>
                             <field name="INTERVAL">500</field>
                             <field name="UNIT">ms</field>
                             <statement name="STATEMENT">
                               <block type="comment" id="s80UBi0s|zv^N;m:(+,G">
                                 <field name="COMMENT">Button -1</field>
                                 <next>
                                   <block type="control" id="6ajOnOdQoLVQuRCjb|)1">
                                     <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                     <field name="OID">Object ID</field>
                                     <field name="WITH_DELAY">FALSE</field>
                                     <value name="VALUE">
                                       <block type="logic_boolean" id="38x?7_?o}A37.0M(?$$!">
                                         <field name="BOOL">TRUE</field>
                                       </block>
                                     </value>
                                   </block>
                                 </next>
                               </block>
                             </statement>
                           </block>
                         </statement>
                       </block>
                     </statement>
                   </block>
                 </next>
               </block>
             </next>
           </block>
         </next>
       </block>
      </xml>
      

      mickym Robert 0 3 Replies Last reply Reply Quote 0
      • mickym
        mickym Most Active @paul53 last edited by mickym

        @paul53 Ich weiß nicht ob Dein Blockly funktionieren würde - da bin ich nicht fit:

        Ich habe das so realisiert:
        5d2fe1d6-5ee6-4189-bb86-43086030df31-image.png
        Der trigger wird durch false beendet.
        4e4cee2f-cbd2-49b7-9872-e09e8aa18637-image.png
        Innerhalb Deiner zyklischen Ausführung müsste diese gestoppt werden, wenn der gleiche Datenpunkt false wird. Sobald bei Dir ja die zyklische Ausführung gestartet ist - müsste innerhalb dieser ja die Datenpunktüberprüfung permanent erfolgen. Im Prinzip müsstest Du sowas wie dieser trigger Node in meinen Augen programmieren.

        So wie das bei Dir jetzt aussieht würde es immer lauter werden ohne dass das mit der Dauer des Tastendrucks korreliert - außerdem wie stoppst du die zyklische Ausführung durch die leiser Taste?

        Also ich denke das geht nur asynchron zu lösen, indem irgendein Timer immer den Status eines Datenpunktes abfragt.

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

          @paul53 das könnte funktionieren, ich versuche es morgen mal. Eine Frage habe ich dazu noch, was kommt bei default rein, sorry bin blutiger Anfänger😉

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

            @paul53 habe nicht warten wollen, habe dein Blockly importiert, leider funktioniert es nur bedingt, sobald ich den Button lauter drücke geht eine Schleife los die nicht mehr zu stoppen ist. Ich muss den Script stoppen und den Harmony Hub reseten. Muss man evtl. noch was einabuen im Blockly?

            paul53 mickym 2 Replies Last reply Reply Quote 0
            • paul53
              paul53 @Robert 0 last edited by paul53

              @robert-0 sagte: sobald ich den Button lauter drücke geht eine Schleife los die nicht mehr zu stoppen ist.

              Der Trigger-Datenpunkt muss ein virtueller Datenpunkt sein, der z.B. in Vis betätigt wird. Du hast zum Triggern den gleichen Datenpunkt verwendet, der die Lautstärke um 1 erhöht?

              Ergänze bitte noch zwei Intervall-Stopps, damit mit Sicherheit nur ein Intervall läuft.

              Bild_2021-04-05_234615.png

              Robert 0 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @Robert 0 last edited by mickym

                @robert-0 Wie gesagt Du siehst ja unter Deinen Objekten im Harmony Adapter schaust, dass Du keinen Zahlenwert addierst, sondern nur die Taste drückst:

                a4a048f2-7efe-4116-85c6-3c86d7afdc69-image.png

                Mit jedem Drücken (senden durch true) erhöhst Du genau um 1.

                Der Harmony Hub speichert weder Zustände noch Werte sondern gibt IR einfach den Befehl weiter - deshalb hast Du hier nur Tastendrücke.

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

                  @paul53 danke für deine Antwort, leider habe ich es nicht hinbekommen einen virtuellen Datenpunkt zu erstellen. Kannst du mir helfen, wie muss ich den erfassen?

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

                    @robert-0 sagte: es nicht hinbekommen einen virtuellen Datenpunkt zu erstellen.

                    Tab "Objekte": "0_userdata.0" selektieren --> + (drittes Symbol von rechts) Datenpunkt Typ "Logikwert" mit Name "Soundbar.lauter" hinzufügen --> Rolle "button" eintragen

                    userdp_neu.JPGBild_2021-04-06_113353.png

                    Ebenso für "leiser".

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

                      @paul53 danke für die Angaben, kannst du mir noch sagen mit was für einem Widget ich das am besten steuere. Momentan habe ich das hqwidget pool.button mal versucht. Sobald ich das wähle fährt die LS hoch bis ich den leiser Button drücke. Ich denke da müsste ein anderer Button eingesetzt werden.

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

                        @robert-0 sagte: mit was für einem Widget ich das am besten steuere.

                        Mit Vis kenne ich mich nicht aus.

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

                          @paul53 danke dir vielmals, hast mir sehr geholfen. Weisst du evtl. noch eine Möglichkeit wie ich mir das Wissen aneignen kann, kennst du ein gutes Lehrmittel oder Video, einfach verständlich?

                          paul53 BananaJoe 2 Replies Last reply Reply Quote 0
                          • paul53
                            paul53 @Robert 0 last edited by paul53

                            @robert-0 sagte: Möglichkeit wie ich mir das Wissen aneignen kann

                            Das Wissen worüber?

                            • ioBroker
                            • Javascript
                            • Funktionen des Javascript-Adapters
                            • Blockly
                            Robert 0 1 Reply Last reply Reply Quote 0
                            • BananaJoe
                              BananaJoe Most Active @Robert 0 last edited by

                              @robert-0 sagte in Lautstärke regeln mit Blockly:

                              @paul53 danke dir vielmals, hast mir sehr geholfen. Weisst du evtl. noch eine Möglichkeit wie ich mir das Wissen aneignen kann, kennst du ein gutes Lehrmittel oder Video, einfach verständlich?

                              Also am besten lernt man wenn man einen konkrete Aufgabe hat. Nur auf den blauen Dunst bringt - zumindest mir - wenig.
                              Und so waren es am Anfang viele Blockly-Skripte die ich mir zusammen-gegoogelt habe (wie eine Schleife machen, wie Datenpunkte anlegen usw.), dann eigene, dann JavaScript.

                              Um dann viele Dinge vom Anfang noch mal neu zu machen weil man es inzwischen besser kann.
                              Es muss ja am Anfang nicht gleich 100%-tig sein, es soll nur funktionieren.

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

                                @paul53 danke dir, werde ich mal nachlesen. In der Zwischenzeit habe ich die LS Regelung mal direkt in den Objekten getestet. Sie verhält sich gleich wie im VIS, sobald ich den +Button einmal kurz drücke regelt die Lautstärke endlos hoch, ich muss dann den -Button einmal drücken um zu stoppen. Kann man das irgendwo konfigurieren. Idealerweise wäre die Funktion so, dass nur solange ich den Button drücke es regelt, siehst du da eine Möglichkeit?

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

                                  @mickym danke für den Input, genau so verhält es sich im Moment.

                                  mickym 1 Reply Last reply Reply Quote 0
                                  • mickym
                                    mickym Most Active @Robert 0 last edited by

                                    @robert-0 Nun ich habe Dir ja ein paar Lösungsansätze beschrieben, wie es ginge - aber ich kanns Dir halt nicht mit Blockly umsetzen. Und mit Javascript bin ich mir mit der assynchronen Programmierung zu unsicher. Wie gesagt wenn Du Node Red als Logikmaschine einsetzen würdest - hättest Du schnell einen kurze Lösung.

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

                                      @robert-0 sagte: nur solange ich den Button drücke es regelt, siehst du da eine Möglichkeit?

                                      Nur, wenn es in Vis einen Button gibt, der beim Loslassen von true auf false wechselt.

                                      mickym 1 Reply Last reply Reply Quote 0
                                      • mickym
                                        mickym Most Active @paul53 last edited by mickym

                                        @paul53 Das macht dieses Widget doch - habe ich doch gesagt, weil man es als Taster konfigurieren kann. Der Datenpunkt ist solange true, solange gedrückt und wechselt auf false beim Loslassen.

                                        Das ist hier aber langsam mein letzter Beitrag - weil ich hier irgendwie das Gefühl habe, dass meine Beiträge hier niemand liest.

                                        paul53 Robert 0 2 Replies Last reply Reply Quote 0
                                        • paul53
                                          paul53 @mickym last edited by

                                          @mickym sagte: Das macht dieses Widget doch - habe ich doch gesagt, weil man es als Taster konfigurieren kann. Der Datenpunkt ist solange true, solange gedrückt und wechselt auf false beim Loslassen.

                                          Dann kann man es so in Blockly umsetzen:

                                          Bild_2021-04-06_150927.png

                                          Wert findet man unter "Trigger".

                                          mickym Robert 0 2 Replies Last reply Reply Quote 0
                                          • mickym
                                            mickym Most Active @paul53 last edited by mickym

                                            @paul53 Das glaube ich halt nicht, ausser Du erklärst es mir - meines Erachtens muss das asynchron laufen.

                                            bd8fc8a4-30cf-483a-a4d9-f8106e02e98b-image.png

                                            Während er sich in dieser Schleife befindet erhöht/erniedrigt er permanent - aber fragt nicht mehr ab, wenn der Datenpunkt false wird. Der bleibt doch in dieser Schleife gefangen????

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            829
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            51
                                            2345
                                            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