Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Anfängerfrage Dashbutton Javascript

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Anfängerfrage Dashbutton Javascript

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 4 Kommentatoren 683 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • G Offline
    G Offline
    Gubtibubti
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • G Offline
      G Offline
      Gubtibubti
      schrieb am zuletzt editiert von
      #2

      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 Antwort Letzte Antwort
      0
      • arteckA Offline
        arteckA Offline
        arteck
        Developer Most Active
        schrieb am zuletzt editiert von
        #3

        @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

        zigbee hab ich, zwave auch, nuc's genauso und HA auch

        1 Antwort Letzte Antwort
        0
        • UhulaU Offline
          UhulaU Offline
          Uhula
          schrieb am zuletzt editiert von
          #4

          @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 );
              }
          });
          
          

          Uhula - Leise und Weise
          Ex: ioBroker on Gigabyte NUC Proxmox

          Albert KA 1 Antwort Letzte Antwort
          1
          • G Offline
            G Offline
            Gubtibubti
            schrieb am zuletzt editiert von
            #5

            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 Antwort Letzte Antwort
            0
            • UhulaU Uhula

              @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 KA Offline
              Albert KA Offline
              Albert K
              schrieb am zuletzt editiert von
              #6

              @Uhula

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

              1 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              553

              Online

              32.7k

              Benutzer

              82.4k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe