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. Skript für Klingelsignalisierung mit HUE

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

Skript für Klingelsignalisierung mit HUE

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
8 Beiträge 4 Kommentatoren 1.1k Aufrufe
  • Ä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.
  • C Offline
    C Offline
    ceerix
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich habe mir hier mit Hilfe des Forums ein Skript zusammengebastelt, das mir das Klingeln symbolisieren soll.

    Mit der Debouncing Funktion soll erreicht werden, dass bei mehrfach Klingeln der Ablauf nicht unkontrolliert mehrfach gestartet wird.

    Insgesamt soll aber erreicht werden, dass Anfangs die Zustände der HUE Lampen in Variablen geschrieben wird, dann ein Farbwechsel (ROT/BLAU) stattfindet und dann sollte es wieder auf Ursprung zurück. Ursprung kann natürlich AUS sein oder eine andere Helligkeit / Farbtemperatur.

    Es funktioniert auch schon relativ gut, nur wird zum Schluss bei manchen Lampen der Ausgangszustand nicht wieder erreicht. Ich kann mir aber nicht erklären warum. Teils klappt es, teils nicht. Ein Muster ist nicht zu erkennen… Habe das zurücksetzen jetzt schon doppelt eingebaut, aber hilft auch nicht weiter.

    Kann sich das Skript mal jemand ansehen und mir hoffentlich weiterhelfen?

    /*
     debouncing, executes the function if there was no new event in $wait milliseconds
     @param func
     @param wait
     @param immediate (boolean)
     @returns {Function}
    */
    function debounce(func, wait, immediate) {
       var timeout;
       return function() {
          var context = this, args = arguments;
          var later = function() {
             timeout = null;
             if (!immediate) func.apply(context, args);
          };
          var callNow = immediate && !timeout;
          clearTimeout(timeout);
          timeout = setTimeout(later, wait);
          if (callNow) func.apply(context, args);
       };
    }
    
    on("hm-rega.0.27777"/*Klingelbild*/, debounce(function (obj){
        if (obj.newState.val === true || obj.newState.val === "true") {
    
            if (getState("hm-rega.0.5886").val/*Anwesenheit*/ === true || getState("hm-rega.0.5886").val/*Anwesenheit*/ === "true") {
    
                var light1 = "hue.0.Philips_hue.Stehlampe.";
                var light2 = "hue.0.Philips_hue.Lightstrip_Couch.";
                var light3 = "hue.0.Philips_hue.Lightstrip_Sideboard.";
                var light4 = "hue.0.Philips_hue.Pummellampe.";
                var light5 = "hue.0.Philips_hue.Kugellampe.";
                var light6 = "hue.0.Philips_hue.Herzchenlampe.";
    
                var hue1 = getState(light1 + "hue").val;
                var bri1 = getState(light1 + "bri").val;
    			var on1 = getState(light1 + "on").val;
    			var b1 = getState(light1 + "b").val;
                var hue2 = getState(light2 + "hue").val;
                var bri2 = getState(light2 + "bri").val;
    			var on2 = getState(light2 + "on").val;
    			var b2 = getState(light2 + "b").val;
                var hue3 = getState(light3 + "hue").val;
                var bri3 = getState(light3 + "bri").val;
    			var on3 = getState(light3 + "on").val;
    			var b3 = getState(light3 + "b").val;
                var hue4 = getState(light4 + "hue").val;
                var bri4 = getState(light4 + "bri").val;
    			var on4 = getState(light4 + "on").val;
    			var b4 = getState(light4 + "b").val;
                var hue5 = getState(light5 + "hue").val;
                var bri5 = getState(light5 + "bri").val;
    			var on5 = getState(light5 + "on").val;
    			var b5 = getState(light5 + "b").val;
                var hue6 = getState(light6 + "hue").val;
                var bri6 = getState(light6 + "bri").val;
    			var on6 = getState(light6 + "on").val;
    			var b6 = getState(light6 + "b").val;
                for (var count = 0; count < 5; count++) {
                    (function(count){
                        setTimeout(function () {
                            if (count % 2 > 0) {
                            setState(light1 +"bri", 254);
                            setState(light1 +"hue", 43819);
                            setState(light2 +"bri", 254);
                            setState(light2 +"hue", 43819);
                            setState(light3 +"bri", 254);
                            setState(light3 +"hue", 43819);
                            setState(light4 +"bri", 254);
                            setState(light4 +"hue", 43819);
                            setState(light5 +"bri", 50);
                            setState(light5 +"hue", 43819);
                            setState(light6 +"bri", 254);
                            setState(light6 +"hue", 43819);
                            }
                            else {
                            setState(light1 +"bri", 254);
                            setState(light1 +"hue", 65504);
                            setState(light2 +"bri", 254);
                            setState(light2 +"hue", 65504);
                            setState(light3 +"bri", 254);
                            setState(light3 +"hue", 65504);
                            setState(light4 +"bri", 254);
                            setState(light4 +"hue", 65504);
                            setState(light5 +"bri", 50);
                            setState(light5 +"hue", 65504);
                            setState(light6 +"bri", 254);
                            setState(light6 +"hue", 65504);
                            }
    
                        }, count * 1500);
                    }(count));
                }
    
                count++;
    
                setTimeout(function () {
                    //light1 = "hue.0.Philips_hue.Stehlampe.";
                    //light2 = "hue.0.Philips_hue.Lightstrip_Couch.";
                    //light3 = "hue.0.Philips_hue.Lightstrip_Sideboard.";
                    //light4 = "hue.0.Philips_hue.Pummellampe.";
                    //light5 = "hue.0.Philips_hue.Kugellampe.";
                    //light6 = "hue.0.Philips_hue.Herzchenlampe.";
    
                    //Alle rückgängig
    				setState(light1 +"on", on1);
    				setState(light1 +"bri", bri1);
    				setState(light1 +"hue", hue1);
    				setState(light1 +"b", b1);
    				setState(light2 +"on", on2);
    				setState(light2 +"bri", bri2);
    				setState(light2 +"hue", hue2);
    				setState(light2 +"b", b2);
    				setState(light3 +"on", on3);
    				setState(light3 +"bri", bri3);
    				setState(light3 +"hue", hue3);
    				setState(light3 +"b", b3);
    				setState(light4 +"on", on4);
    				setState(light4 +"bri", bri4);
    				setState(light4 +"hue", hue4);
    				setState(light4 +"b", b4);
    				setState(light5 +"on", on5);
    				setState(light5 +"bri", bri5);
    				setState(light5 +"hue", hue5);
    				setState(light5 +"b", b5);
    				setState(light6 +"on", on6);
    				setState(light6 +"bri", bri6);
    				setState(light6 +"hue", hue6);
    				setState(light6 +"b", b6);
    			}, count * 1500);
    
    			setTimeout(function () {
                    //light1 = "hue.0.Philips_hue.Stehlampe.";
                    //light2 = "hue.0.Philips_hue.Lightstrip_Couch.";
                    //light3 = "hue.0.Philips_hue.Lightstrip_Sideboard.";
                    //light4 = "hue.0.Philips_hue.Pummellampe.";
                    //light5 = "hue.0.Philips_hue.Kugellampe.";
                    //light6 = "hue.0.Philips_hue.Herzchenlampe.";
    
                    //Alle rückgängig
    				setState(light1 +"on", on1);
    				setState(light1 +"bri", bri1);
    				setState(light1 +"hue", hue1);
    				setState(light1 +"b", b1);
    				setState(light2 +"on", on2);
    				setState(light2 +"bri", bri2);
    				setState(light2 +"hue", hue2);
    				setState(light2 +"b", b2);
    				setState(light3 +"on", on3);
    				setState(light3 +"bri", bri3);
    				setState(light3 +"hue", hue3);
    				setState(light3 +"b", b3);
    				setState(light4 +"on", on4);
    				setState(light4 +"bri", bri4);
    				setState(light4 +"hue", hue4);
    				setState(light4 +"b", b4);
    				setState(light5 +"on", on5);
    				setState(light5 +"bri", bri5);
    				setState(light5 +"hue", hue5);
    				setState(light5 +"b", b5);
    				setState(light6 +"on", on6);
    				setState(light6 +"bri", bri6);
    				setState(light6 +"hue", hue6);
    				setState(light6 +"b", b6);
    			}, 2000);
            }
        }
    },5000, true));
    
    

    Danke und Grüße

    Alex

    1 Antwort Letzte Antwort
    0
    • C Offline
      C Offline
      ceerix
      schrieb am zuletzt editiert von
      #2

      Hat niemand eine Idee? Ich habe heute nochmal etwas gespielt aber leider bin ich zu keiner neuen Erkenntnis gekommen…

      Gruß Alex

      1 Antwort Letzte Antwort
      0
      • cashC Offline
        cashC Offline
        cash
        Most Active
        schrieb am zuletzt editiert von
        #3

        Ich würde einfach mal vermuten das die hue bridge damit überfordert ist…

        You can send commands to the lights too fast. If you stay roughly around 10 commands per second to the /lights resource as maximum you should be fine. For /groups commands you should keep to a maximum of 1 per second.

        1 Antwort Letzte Antwort
        0
        • Jey CeeJ Online
          Jey CeeJ Online
          Jey Cee
          Developer
          schrieb am zuletzt editiert von
          #4

          Hast du schon mal darüber Nachgedacht einfach die Lernt Funktion von Hue zu benutzen? Das kann soweit weiss jede Hue Lampe, entweder einmal Blinken oder mehrmals. Befehl, lselect oder select, muss in den Datenpunkt alert der jeweiligen Lampe oder Gruppe geschrieben werden.

          Gesendet von Unterwegs

          Persönlicher Support
          Spenden -> paypal.me/J3YC33

          1 Antwort Letzte Antwort
          0
          • C Offline
            C Offline
            ceerix
            schrieb am zuletzt editiert von
            #5

            @cash:

            Ich würde einfach mal vermuten das die hue bridge damit überfordert ist…

            You can send commands to the lights too fast. If you stay roughly around 10 commands per second to the /lights resource as maximum you should be fine. For /groups commands you should keep to a maximum of 1 per second. `

            Guter Tip, aber ich denke das kann nicht das Problem sein, da ich ja am Anfang den aktuellen Status speichere und zum Schluss mit einer Verzögerung von einigen Sekunden erst wieder setze. Da dürfte dann genügend Luft zwischen den Anforderungen zur Bridge sein.

            @Jey Cee:

            Hast du schon mal darüber Nachgedacht einfach die Lernt Funktion von Hue zu benutzen? Das kann soweit weiss jede Hue Lampe, entweder einmal Blinken oder mehrmals. Befehl, lselect oder select, muss in den Datenpunkt alert der jeweiligen Lampe oder Gruppe geschrieben werden.

            Gesendet von Unterwegs `

            Ja den Alert Datenpunkt hätte ich auch schon mal im Auge gehabt. Allerdings meine ich hat der nur die Lampe in ihrem aktuellen Status blinken lassen. Nicht aber wenn sie zu dem Zeitpunkt aus war.

            Lselect / select sagt mir aber nichts.

            Hast du ein Beispiel wie man das nutzen kann?

            Gruß Alex

            1 Antwort Letzte Antwort
            0
            • Jey CeeJ Online
              Jey CeeJ Online
              Jey Cee
              Developer
              schrieb am zuletzt editiert von
              #6

              Der alert Datenpunkt kennt 3 Zustände: lselect (mehrmals Blinken), select (einmal Blinken) und none (eigentlich überflüssigfür iobroker).

              Du Schreibst einfach den Befehl in den Datenpunkt und dann wird er ausgeführt. Ob die Lampe jetzt an sein muss oder nicht weiss ich nicht. Aber auf jedenfall mit den letzten Einstellungen.

              Gesendet von Unterwegs

              Persönlicher Support
              Spenden -> paypal.me/J3YC33

              1 Antwort Letzte Antwort
              0
              • M Offline
                M Offline
                mikiline
                schrieb am zuletzt editiert von
                #7

                Ja, Lampen müssen vorher an sein…..dan blinken diese für 15 sek mit lselect

                wenn sie aus sind, blinkt es nur 1 mal kurz

                1 Antwort Letzte Antwort
                0
                • C Offline
                  C Offline
                  ceerix
                  schrieb am zuletzt editiert von
                  #8

                  Aufgrund eurer Hilfen konnte ich das Skript jetzt umschreiben, so dass es nun seinen Zweck erfüllt :)

                  Ich schalte jetzt eine ganze Gruppe ein und setze die Farbe rot. Danach lasse ich mit lselect 15 Sekunden blinken.

                  Und danach schalte ich alle Lampen mit einem Zeitabstand von jeweils 1 Sekunde zurück in den Ursprungszustand.

                  Klappt sehr gut! Danke!

                  Hier noch das Skript:

                  ! ````
                  /*
                  debouncing, executes the function if there was no new event in $wait milliseconds
                  @param func
                  @param wait
                  @param immediate (boolean)
                  @returns {Function}
                  */
                  function debounce(func, wait, immediate) {
                  var timeout;
                  return function() {
                  var context = this, args = arguments;
                  var later = function() {
                  timeout = null;
                  if (!immediate) func.apply(context, args);
                  };
                  var callNow = immediate && !timeout;
                  clearTimeout(timeout);
                  timeout = setTimeout(later, wait);
                  if (callNow) func.apply(context, args);
                  };
                  }
                  ! on("hm-rega.0.27777"/Klingelbild/, debounce(function (obj){
                  if (obj.newState.val === true || obj.newState.val === "true") {

                      if (getState("hm-rega.0.5886").val/*Anwesenheit*/ === true || getState("hm-rega.0.5886").val/*Anwesenheit*/ === "true") {
                  
                          var light1 = "hue.0.Philips_hue.Stehlampe.";
                          var light2 = "hue.0.Philips_hue.Lightstrip_Couch.";
                          var light3 = "hue.0.Philips_hue.Lightstrip_Sideboard.";
                          var light4 = "hue.0.Philips_hue.Pummellampe.";
                          var light5 = "hue.0.Philips_hue.Kugellampe.";
                          var light6 = "hue.0.Philips_hue.Herzchenlampe.";
                          var light7 = "hue.0.Philips_hue.Iris.";
                  
                          var hue1 = getState(light1 + "hue").val;
                          var bri1 = getState(light1 + "bri").val;
                  		var on1 = getState(light1 + "on").val;
                          var hue2 = getState(light2 + "hue").val;
                          var bri2 = getState(light2 + "bri").val;
                  		var on2 = getState(light2 + "on").val;
                          var hue3 = getState(light3 + "hue").val;
                          var bri3 = getState(light3 + "bri").val;
                  		var on3 = getState(light3 + "on").val;
                          var hue4 = getState(light4 + "hue").val;
                          var bri4 = getState(light4 + "bri").val;
                  		var on4 = getState(light4 + "on").val;
                          var hue5 = getState(light5 + "hue").val;
                          var bri5 = getState(light5 + "bri").val;
                  		var on5 = getState(light5 + "on").val;
                          var hue6 = getState(light6 + "hue").val;
                          var bri6 = getState(light6 + "bri").val;
                  		var on6 = getState(light6 + "on").val;
                          var hue7 = getState(light7 + "hue").val;
                          var bri7 = getState(light7 + "bri").val;
                  		var on7 = getState(light7 + "on").val;			
                  
                          setState("hue.0.Philips_hue.Farbenspiel.bri"/*Philips_hue.Farbenspiel.bri*/, 254);
                          setState("hue.0.Philips_hue.Farbenspiel.hue"/*Philips_hue.Farbenspiel.hue*/,65504);
                          setState("hue.0.Philips_hue.Farbenspiel.alert"/*Philips_hue.Farbenspiel.alert*/,"lselect");
                  
                          setTimeout(function () {
                  

                  ! //Alle rückgängig
                  setState(light1 +"on", on1);
                  setState(light1 +"bri", bri1);
                  setState(light1 +"hue", hue1);
                  //setState(light1 +"b", b1);
                  ! }, 16000);
                  setTimeout(function () {
                  ! //Alle rückgängig
                  setState(light2 +"on", on2);
                  setState(light2 +"bri", bri2);
                  setState(light2 +"hue", hue2);
                  //setState(light2 +"b", b2);
                  ! }, 17000);
                  ! setTimeout(function () {
                  ! //Alle rückgängig
                  setState(light3 +"on", on3);
                  setState(light3 +"bri", bri3);
                  setState(light3 +"hue", hue3);
                  //setState(light3 +"b", b3);
                  ! }, 18000);
                  ! setTimeout(function () {
                  ! //Alle rückgängig
                  setState(light4 +"on", on4);
                  setState(light4 +"bri", bri4);
                  setState(light4 +"hue", hue4);
                  //setState(light4 +"b", b4);
                  ! }, 19000);
                  ! setTimeout(function () {
                  ! //Alle rückgängig
                  setState(light5 +"on", on5);
                  setState(light5 +"bri", bri5);
                  setState(light5 +"hue", hue5);
                  //setState(light5 +"b", b5);
                  ! }, 20000);
                  ! setTimeout(function () {
                  ! //Alle rückgängig
                  setState(light6 +"on", on6);
                  setState(light6 +"bri", bri6);
                  setState(light6 +"hue", hue6);
                  //setState(light6 +"b", b6);
                  ! }, 21000);
                  ! setTimeout(function () {
                  ! //Alle rückgängig
                  setState(light7 +"on", on7);
                  setState(light7 +"bri", bri7);
                  setState(light7 +"hue", hue7);
                  //setState(light7 +"b", b7);
                  ! }, 22000);

                      }
                  }
                  

                  },5000, true));

                  ! ````
                  Beste Grüße

                  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

                  955

                  Online

                  32.4k

                  Benutzer

                  81.5k

                  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