Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Anfängerfrage Dashbutton Javascript

    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

    Anfängerfrage Dashbutton Javascript

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

      Hallo,

      aus via google zusammengetragenen Informationen habe ich mir untenstehendes Script gebastelt. Ziel ist es, mittels eines Amazon Dash Buttons eine LIFX Lampe an- bzw. auszuschalten.

      Das Script schaltet auch an und aus, allerdings pro Druck auf den Dash Button mehrfach (Licht geht kurz an und wieder aus, dann nach ein paar Sekunden an). Den Button drücke ih natürlich nur einmal kurz. Beim Ausschalten genau andersum, kurz aus, wieder für ein paar Sekunden an und dann aus.

      Anstatt der LIFX Lampe habe ich das gleiche Script zum Testen auch mit einem Homematic Funkaktor durchlaufen lassen. Hier zeigt sich das gleiche Verhalten.

      Im Scripten habe ich Null Erfahrung. Kann mir jemand helfen und sagen, was falsch läuft?

      Die Randbedingungen: iobroker auf Raspberry Pi, Dash Buttons eingebunden und erkannt, funktionieren und schalten ja auch, nur halt nicht wie gewünscht.

      Und hier das verwendete Script (Adressen durch xxx ersetzt):

      var IAMSDASH = 'amazon-dash.0.xxxxxx.switch';

      var BULB1 = 'lifx.0.Bulb_xxxxxx.state';

      on({id: IAMSDASH, val: true}, function (obj) {

      var b = getState(BULB1).val;

      if (b === false) { setState(BULB1, true); } else { setState(BULB1, false); }

      }

      );

      1 Reply Last reply Reply Quote 0
      • G
        Gubtibubti last edited by

        Ich habe SetState mal zu SetstateDelayed abgeändert und mit den Verzögerungen experimentiert. Jetzt läufts wies soll, allerdings dauert das Schalten so um die 8 Sekunden. Gibts da noch eine andere Option, das Ganze etwas schneller zu gestalten?

        1 Reply Last reply Reply Quote 0
        • arteck
          arteck Developer Most Active last edited by

          @Gubtibubti:

          Ich habe SetState mal zu SetstateDelayed abgeändert und mit den Verzögerungen experimentiert. Jetzt läufts wies soll, allerdings dauert das Schalten so um die 8 Sekunden. Gibts da noch eine andere Option, das Ganze etwas schneller zu gestalten? `

          ja nu der knopp muss jedesmal zuerst die WLAN Verbindung aufbauen das dauert

          1 Reply Last reply Reply Quote 0
          • Uhula
            Uhula last edited by

            @Gubtibubti:

            Gibts da noch eine andere Option, das Ganze etwas schneller zu gestalten? `
            Die gibt es immer 😉

            Statt auf "pressed" zu reagieren, kannst du auch auf den Datenpunkt "switch" reagieren, dieser simuliert praktischerweise schon einen Schalter über den Dashbutton. D.h. er wechselt bei jedem Press zwischen false und true.

            Bsp:

            var oidDash = "amazon-dash.0.xx-xx-xx-xx-xx-xx.switch";
            var oidLicht = "hm-rpc.1.yyyyyyyyyy.1.STATE";
            
            on({id: oidDash, change: "ne"}, function (obj) {
                setState(oidLicht, obj.state.val );
            });
            
            

            Wenn du jedoch von mehreren Stellen aus schalten möchtest, wird dir "switch" nicht helfen. Dann bist du auf "pressed" angewiesen und musst dieses "entprellen". Das geht leicht, in dem die Timestamps (ts, Zeitstempel) vom obj.state und obj.oldState verglichen werden und erst dann geschaltet wird, wenn diese 5 Sek Differenz haben.

            var oidDash = "amazon-dash.0.xx-xx-xx-xx-xx-xx.pressed";
            var oidLicht = "hm-rpc.1.yyyyyyy.1.STATE";
            
            on({id: oidDash, val: true}, function (obj) {
                if ( obj.state.ts - obj.oldState.ts > 5000) {
                    setState(oidLicht, !getState(oidLicht).val );
                }
            });
            
            
            Albert K 1 Reply Last reply Reply Quote 1
            • G
              Gubtibubti last edited by

              Danke für die Rückmeldungen!

              @artek: Das ist mir klar aber er schaltet ja auch früher wenn ich die Verzögerung nicht einbaue. Also könnte die Schalt- (Reaktions-)zeit theoretisch kürzer sein, wenn ich das Mehrfachgeschalte ohne die Verzögerung in den Griff bekomme.

              @Uhula: Bei deinem ersten Script habe ich auch die an/aus oder aus/an Sequenz. Ab und zu tut sich gar nix nach dem Tastendruck. Bei dem 2. Script schaltet die Lampe unregelmäsig, d.h. mehrfach hintereinander so wie sie soll, dann aber manchmal auch nur bei jedem 2., 3. oder 4. Tastendruck. Schema kann ich da keines erkennen.

              1 Reply Last reply Reply Quote 0
              • Albert K
                Albert K @Uhula last edited by

                @Uhula

                genau das hab ich gesucht. Habe 6 Dash Buttons und jetzt funktionieren sie wie sie sollen. Danke im nachhinein 👍

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

                Support us

                ioBroker
                Community Adapters
                Donate

                653
                Online

                31.8k
                Users

                80.0k
                Topics

                1.3m
                Posts

                4
                6
                627
                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