Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Vis Button Long Press

    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

    Vis Button Long Press

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

      @Mr_Sans sagte:

      Hat jemand eine Tipp für mich?

      Buttons in Vis ändern meines Wissens den Wert nicht und reagieren nicht auf "Loslassen", sondern nur auf "Drücken". Was möglich wäre, einen einfachen Klick von einem Doppelklick zu unterscheiden, wobei zwischen zwei Aktualisierungen immer 1 s vergeht - egal wie schnell man den 2. Klick ausführt. Mit einem Blockly könnte man unterscheiden:

      Blockly_temp.JPG

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

        @paul53

        Hey Paul. Danke für dein Feedback.
        Ich tüftle gerade an einem JS.
        Ich nehme einen Button Toggle, welcher nach 1 Sekunde wider auf false geht. wenn ich diesen aber gedrückt halte, bleibt er auf true.
        Jetzt muss ich nur noch prüfen ob er durchgängig 2-3 Sekunden auf true steht.
        Da funktioniert es leider noch nicht ganz.
        Problematik ist, das wenn ich mehrmals hintereinander "short" drücke, er auch mal das Gefühl haben kann, es sei "long" wenn beide Bedingungen per Zufall erfüllt sind.
        Mach wohl einen Denkfehler.

        Irgend ein Denkanstoss?

        // -----------------------------------------------
        // Variable
        // -----------------------------------------------
         
        createState('javascript.0.Status.Shutter.Button',false);
        createState('javascript.0.Status.Shutter.Button-long',false);
        createState('javascript.0.Status.Shutter.Button-short',false);
        var idTrigger = "javascript.0.Status.Shutter.Button";
        var buttonlong = "javascript.0.Status.Shutter.Button-long";
        var buttonshort = "javascript.0.Status.Shutter.Button-short";
        var timer = null;
        // -----------------------------------------------
        // Trigger
        // -----------------------------------------------
        on(
            {
            id: idTrigger,
            val: false
            }, 
         
        // -----------------------------------------------
        // Aktion
        // -----------------------------------------------    
            function (obj) 
            {
                log('reset');
        	    setState('javascript.0.Status.Shutter.countdown', 4);
            }
        );
        
        on(
            {
            id: idTrigger,
            val: true
            }, 
         
        // -----------------------------------------------
        // Aktion
        // -----------------------------------------------    
            function (obj) 
            {
                count();
                log('Starte Countdonw');
        
        
                    log('short');
                    setState(buttonlong, false);
                    setState(buttonshort, true);
        
                
                if(getState(idTrigger).val == true && getState('javascript.0.Status.Shutter.countdown').val < 2 ) {
                    log('long');
                    setState(buttonlong, true);
                    setState(buttonshort, false);
                }
            }
        );
         
        // Reset-Funktion
        function long(){
            if(getState(idTrigger).val == true) {
                log('long');
                setState(buttonlong, true);
                setState(buttonshort, false);
            }   
            log('reset');
        	timer = null;
        }
        function count() {
            setTimeout(function () {
                var timer = getState('javascript.0.Status.Shutter.countdown').val || 4;
                if (timer > 1) {
                    setState('javascript.0.Status.Shutter.countdown', timer - 1);
                    count();
                } else {
                    setState('javascript.0.Status.Shutter.countdown', 4);
                }
            }, 1000);
        }
        

        Danke dir

        @CrunkFX
        Das hab ich schon gesehn, hat aber leider nicht geholfen! Danke Trotzdem

        CrunkFX 1 Reply Last reply Reply Quote 0
        • CrunkFX
          CrunkFX Forum Testing @Mr_Sans last edited by

          @Mr_Sans Das kannst du via HQWidget´s machen. Nimm dazu einen HQWidget´s Button und konfiguriere diesen als Taster. Trage dann bei max die Aktion ein die bei mousedown passieren soll und bei min mouseup.

          MFG
          CrunkFX

          M 1 Reply Last reply Reply Quote 0
          • M
            Mr_Sans @CrunkFX last edited by

            @CrunkFX

            Danke für den Tipp. Aber auch das löst mein Problem nicht!
            Wenn ich den Taster drücke gibts ein True, wenn ich ihn loslasse ein false. Das habe ich schon mit einem anderen Taster.
            Mein Problem besteht darin, das wenn ich kurz drück (0.5-1s) der Taster DP 1 ansprechen soll. (Wert des Tasters geht auf True beim druck und beim loslassen auf false). Wenn ich nun den selben Taster aber lang drücke (2-3s) der Taster nun DP 2 ansprechen soll. (Auch hier geht der Wert des Tasters True beim druck und beim loslassen auf false). Der einzige Unterschied besteht in der dauer zwischen true und zurück auf false.
            Zusätzliches Problem ist noch, das die Widgets bei der Taster-Funktion schon eine Verzögerung von true to false haben (ca 0.5-1s)

            CrunkFX paul53 2 Replies Last reply Reply Quote 0
            • CrunkFX
              CrunkFX Forum Testing @Mr_Sans last edited by

              @Mr_Sans Du musst dein timeout mit true starten und mit false abbrechen, jenachdem wie du das einstellst kannst du dann sagen wenn der Taster 2sekunden auf true ist tue etwas, geht er vorher auf false brich den timer ab.

              M 1 Reply Last reply Reply Quote 0
              • M
                Mr_Sans @CrunkFX last edited by

                @CrunkFX
                🙂 genau. Das versuche ich ja mit meinm Script oben. klappt nur leider nicht 😞

                CrunkFX 1 Reply Last reply Reply Quote 0
                • CrunkFX
                  CrunkFX Forum Testing @Mr_Sans last edited by

                  @Mr_Sans Ich schau gleich Mal ob ich was bauen kann, ich mach das aus Mangel an wissen immer mit nem Zähler den ich hochzählen lassen und dann wieder resette. Vielleicht hat ja @paul53 vorher ne Lösung, sonst Schau ich später, bin noch auf der Arbeit.

                  M 1 Reply Last reply Reply Quote 0
                  • M
                    Mr_Sans @CrunkFX last edited by

                    @CrunkFX

                    Klasse Danke.

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

                      @Mr_Sans sagte:

                      die Widgets bei der Taster-Funktion schon eine Verzögerung von true to false haben (ca 0.5-1s)

                      Ich habe ca. 1 s festgestellt, deshalb Timeout mit 1,1 s.

                      Blockly_temp.JPG

                      <xml xmlns="https://developers.google.com/blockly/xml">
                       <variables>
                         <variable type="timeout" id="timeout">timeout</variable>
                       </variables>
                       <block type="comment" id="`H+EHE5(mX*J,~jzat[Y" x="88" y="37">
                         <field name="COMMENT">Vis-Taster</field>
                         <next>
                           <block type="on_ext" id="QnP6N}CZn$kjr9LouPz]">
                             <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="j=?$H=l`b#_V$G!~#8Rs">
                                 <field name="oid">0_userdata.0.Test.Taster</field>
                               </shadow>
                             </value>
                             <statement name="STATEMENT">
                               <block type="controls_if" id="pQ=Zm@FVA)n;(lQeqmOA">
                                 <mutation elseif="1" else="1"></mutation>
                                 <value name="IF0">
                                   <block type="on_source" id="^`:J!`HBvil=,Ls@Ei,e">
                                     <field name="ATTR">state.val</field>
                                   </block>
                                 </value>
                                 <statement name="DO0">
                                   <block type="timeouts_settimeout" id="meNtgBr|;rA..^dob[`D">
                                     <field name="NAME">timeout</field>
                                     <field name="DELAY">1100</field>
                                     <field name="UNIT">ms</field>
                                     <statement name="STATEMENT">
                                       <block type="timeouts_cleartimeout" id="mym/;j[_,?Q2^znXWKY}">
                                         <field name="NAME">timeout</field>
                                         <next>
                                           <block type="debug" id="02oW2IVBv]Ju@)C{$!):">
                                             <field name="Severity">log</field>
                                             <value name="TEXT">
                                               <shadow type="text" id="rBFXdHx}vBmC#gtCt.AC">
                                                 <field name="TEXT">Taste lang</field>
                                               </shadow>
                                             </value>
                                           </block>
                                         </next>
                                       </block>
                                     </statement>
                                   </block>
                                 </statement>
                                 <value name="IF1">
                                   <block type="variables_get" id="oXNU=#T;Ssaq/R|:DOG3">
                                     <field name="VAR" id="timeout" variabletype="timeout">timeout</field>
                                   </block>
                                 </value>
                                 <statement name="DO1">
                                   <block type="timeouts_cleartimeout" id="Ieb*osZ0^S?6Pai5$y*i">
                                     <field name="NAME">timeout</field>
                                     <next>
                                       <block type="debug" id="N@v4NSgO``W[!wjc;O^E">
                                         <field name="Severity">log</field>
                                         <value name="TEXT">
                                           <shadow type="text" id="D0g`Sv!ErzygC{/`Burs">
                                             <field name="TEXT">Taste kurz</field>
                                           </shadow>
                                         </value>
                                       </block>
                                     </next>
                                   </block>
                                 </statement>
                                 <statement name="ELSE">
                                   <block type="debug" id="YHn5cLd0^~JXfoIByXUv">
                                     <field name="Severity">log</field>
                                     <value name="TEXT">
                                       <shadow type="text" id="c~?i/WoZbZ|G(Vx-P{s/">
                                         <field name="TEXT">Taste losgelassen</field>
                                       </shadow>
                                     </value>
                                   </block>
                                 </statement>
                               </block>
                             </statement>
                           </block>
                         </next>
                       </block>
                      </xml>
                      

                      M 1 Reply Last reply Reply Quote 1
                      • M
                        Mr_Sans @paul53 last edited by Mr_Sans

                        @paul53
                        Wow --- klasse das funktioniert gemäss Log schon mal bestens!
                        Jetzt setzte ich dies am Wochenende zuhause mal um. muss das Skript nun 16 mal 2 (rauf und Runter der Rolladen) also 32mal einsetzten.

                        Herzlichen Dank für dein Engagement!

                        EDIT:
                        Schon Umgesetzt bei 2 Rolladen....Funktioniert auch in echt wunder bar!

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        871
                        Online

                        31.9k
                        Users

                        80.1k
                        Topics

                        1.3m
                        Posts

                        vis
                        3
                        12
                        1720
                        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