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

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Funktionen für den hue Adapter

NEWS

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

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

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

Funktionen für den hue Adapter

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
37 Beiträge 9 Kommentatoren 11.8k 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.
  • ruhr70R Offline
    ruhr70R Offline
    ruhr70
    schrieb am zuletzt editiert von
    #1

    [EDIT 2017-04-28]

    Aktuelle Version unter:

    http://forum.iobroker.net/viewtopic.php … 144#p63206

    [EDIT Ende]

    –-

    Ich bin gerade dabei mir einige hue Presets anzulegen, mit den passenden Funktionen. Später dann wahrscheinlich als globales Script.

    Nette Ideen und Presets sind willkommen 😉

    Stand 30.07.2015:

    `// Funktionen für den Philips hue Adapter
    //
    // - definiert eigene Gruppen aus Lampen und Gruppen der Bridge, unabhängig von den Gruppen der Bridge
    // - definiert diverse Presets, die für Gruppen gesetzt werden können
    //
    //
    // Funktionen:
    //------------
    //
    // hueGruppe ("gruppenamen","preset",verzögerung,bri)
    //   Setzt das gewünschte Preset zur gewünschten Verzögerung in die Queue der Gruppe.
    // - gruppenamen:   Gruppenname
    // - preset:        Presetname
    // - verzögerung:   (keine Pflicht, schaltet das Preset nach der Verzögerungszeit in ms ein -> nach der Zeit des letzetn aktiven Presets in der Queue)
    // - bri:           (keine pflicht, überschreibt eine bri (Helligkeit) eines Presets, wenn ein Wert im Preset vorhanden ist
    //
    // hueGruppeStop ("gruppenname")
    //   stoppt und löcht die Queue der Gruppe
    //
    // hueGruppeAus ("gruppenname")
    //   stopt, löscht Queue der Gruppe und schlatet die Lampen der Gruppe aus
    //
    //
    // geplant:
    //---------
    // - viele Standard Presets
    // - ggf. vordefinierte Effekte (Abfolgen von Presets oder Farbveläufen)
    // - ...
    //
    // umgesetzt:
    //-----------
    // - für einzelne Lampen, identisch wie für Gruppen -> Gruppe mit einer einzelnen Lampe anlegen
    // - Queue für die zeitliche verzögerung (automatisch je Gruppe)
    // - Abfangen von Tippfehlern (Gruppennamen, Preset)
    // - die schon abgelaufene Zeit wird bei neuer Verzögerung berücksichtigt
    // 
    
    // Konfiguration:
    //------------------------------------------------------------------------------
    var hueMinDelay = 300;                                                          // min. males Delay zwischen zwei Farbwechsel
    
    // hue IDs (Channel) - Namen können frei vergeben werden
    // hue Lampen
    var idHueGästebadVorne              = "hue.0.Philips_hue.20.1_Gästebad_Vorne";  /*Philips_hue.20.1_Gästebad_Vorne*/
    var idHueGästebadHinten             = "hue.0.Philips_hue.20.2_Gästebad_Hinten"; /*Philips_hue.20.2_Gästebad_Hinten*/
    var idHueWohnzimmerKugel            = "hue.0.Philips_hue.10.4_Wohn_Kugel";      /*Philips_hue.10.4_Wohn_Kugel*/
    var idHueArbeitszimmerSchreibtisch  = "hue.0.Philips_hue.50.1_Arbeit_Schreibtisch"; /*Philips_hue.50.1_Arbeit_Schreibtisch*/
    // hue Gruppen der Bridge
    var idhueGruppeWohnzimmer           = "hue.0.Philips_hue.Wohnzimmer_Küche"/*Philips_hue.Wohnzimmer_Küche*/;
    
    var hueGruppen = {};
    // hue Gruppen im Script (Zuordnung von 1-x Lampen/Gruppen der Bridge, auch gemischt)
    // wo hue Gruppen in der Bridge vorhanden sind, ist es sinnvoll diese zu nutzen (Performance der Bridge) und hier einzutragen
    hueGruppen["arbeitszimmer"] =   [idHueArbeitszimmerSchreibtisch];
    hueGruppen["wohnzimmer"] =      [idHueWohnzimmerKugel];
    hueGruppen["gästebad"] =        [idHueGästebadVorne, idHueGästebadHinten];
    
    hueGruppen["wohnzimmerGruppe"] =      [idhueGruppeWohnzimmer];
    
    var hueParameter = ["on","hue","sat","bri","ct","xy","alert","effect","r","g","b","colormode"];
    
    var huePresets = {
        "standard":         {"hue":14922,"sat":144,"bri":254,"effect":"none","alert":"none"},           // standard - Standardfarbe der hue bei Power on
        "blue":             {"hue":47125,"sat":254,"bri":254},                                          // blue - blau
        "red":              {"r":254,"g":0,"b":0,"bri":254},                                            // red -rot
        "on":               {"on":true},                                                                // on - schaltet die Gruppe ein
        "off":              {"on":false},                                                               // off - schaltet die Gruppe aus
        "effectColorloop":  {"effect":"colorloop"},                                                     // effectColorloop - effect Collor Loop ein
        "effectOff":        {"effect":"none"},                                                          // effectOff
        "alertOn":          {"alert":"lselect"},                                                        // alertOn
        "alertOff":         {"alert":"none"},                                                           // alertOff
        "test2": {
            "hue":      24000,
            "sat":      254,
            "bri":      254,
            "effect":   "none",
            "alert":    "none"
        },
        "test": {
            "hue":      5000,
            "sat":      254,
            "bri":      254,
            "effect":   "none",
            "alert":    "none"
        }
    };
    
    // Variablen für die Funktionen
    
    var hueGruppeAnzahlQueue = [];
    var hueGruppeQueue = [];
    var hueTimer = {};
    
    // Funktionen
    
    function hueVarsAnlegen (){                                                     // Wartefeld Variablen für jede Gruppe erstellen
        var x;
        for (x in hueGruppen) {                                                     // x ist der erste Wert [0] im Array, hier der String des Gruppennamens
            hueGruppeAnzahlQueue[x] = 0;                                            // Anzahl noch nicht abgearbeiteter Presets je Gruppe
            hueGruppeQueue[x] = [];                                                 // Queue mit den abzuarbeitenden Presets je Gruppe 
            hueTimer[x] = null;                                                     // aktiver SetTimeout Timer je Gruppe
        }
    }
    
    function validBri (bri) {                                                       // gibt true/false zurück, ob ein gültiger BRI Wert übergebn wurde oder nicht
        if (bri >= 0 && bri <= 254) {
            log("valid bri wurde übergeben","info");
            return true;
        }
        if (bri > 254) {
            log("bri zu hoch. Werte von 0 bis 254 sind erlaubt.","error");
        }else {
            log("kein bri oder kein validen bri Wert wurde übergeben","info");
        }
        return false;
    }
    
    function hueGruppeStop (gruppenname) {                                          // Stoppe die Queue der Gruppe. Setze Queue zurück. Gruppe bleibt im gerade aktiven Preset.
        clearTimeout(hueTimer[gruppenname]);                                        // SerTimeout Timer der Gruppe stoppen
        log("schalte Gruppe: " + gruppenname + " ### Stop alle Presets in der Queue ### gelöschte Queueeinträge: " + hueGruppeAnzahlQueue[gruppenname],"info");
        hueGruppeAnzahlQueue[gruppenname] = 0;                                      // Zähler für die Queue der Gruppe auf 0 zurücksetzen
        hueGruppeQueue[gruppenname] = [];                                           // GruppenQueue: alle Presets in der Queue löschen
    }
    
    function hueGruppeAus(gruppenname) {                                            // Stopt und löscht die Queue, schaltet die Lampen der Gruppe aus
        hueGruppeStop(gruppenname);
        hueGruppe(gruppenname,"off",0,0)
    }
    
    function hueGruppe (gruppenname,preset,verzögerung,bri) { 
        hueGruppeAnzahlQueue[gruppenname]++;                                        // Zähler Anzahl aktive Presets um 1 erhöhen
    
        if(hueGruppeAnzahlQueue[gruppenname] != 1) {
            if(!verzögerung || verzögerung < hueMinDelay) verzögerung = hueMinDelay;// Preset aktiv, bei zu geringer Verzögerungszeit die Midestverzögerung addieren
            hueGruppeQueue[gruppenname].push([preset,verzögerung,bri]);
            return;
        }
        if(!verzögerung) verzögerung = 0;                                           // kein Preset aktiv, das nächste Preset soll direkt starten
        hueGruppeSet(gruppenname,preset,verzögerung,bri);
    }
    
    function hueGruppeTimerEnd(gruppenname) {                                       // Gruppen Timer aktuelles Preset abgelaufen
        hueGruppeAnzahlQueue[gruppenname]--;                                        // aktive Presets um eins reduzieren (0 es ist kein Preset in der Gruppe mehr aktiv)
        if(hueGruppeAnzahlQueue[gruppenname] > 0) {                                 // es gibt noch Presets in der Queue
            var parameter = hueGruppeQueue[gruppenname].shift();                    // Queue um ein Preset reduzieren und diese Werte zum Setzen übergeben
            log(gruppenname + "," + parameter[0] + "," + parameter[1] + "," + parameter[2] + " aus Queue übergeben","info");
            hueGruppeSet (gruppenname,parameter[0],parameter[1],parameter[2]);      // 
        }
    }
    
    function hueGruppeSet (gruppenname,preset,verzögerung,bri) { 
        log("Queue: Gruppe: " + gruppenname + " ### Preset: " + preset + " ### in: " +verzögerung + " ms zum Ende der Queue dazu.","info");
        if (hueGruppen[gruppenname]) {
            if (hueTimer[gruppenname]) clearTimeout(hueTimer[gruppenname]);
            hueTimer[gruppenname] = setTimeout(function() {                                 // Preset verzögert aktivieren, wenn eingestellt
                hueTimer[gruppenname] = null;
                for (i = 0; i < hueGruppen[gruppenname].length; i++) {                      // jede Lampe aus der Gruppe
                    var presetText = "{";
                    for (j = 0; j < hueParameter.length; j++) {                             // teste alle möglichen hue Parameter
                        if (huePresets[preset]) {
                            if (huePresets[preset].hasOwnProperty(hueParameter[j])){        // nur die im Preset enthaltenen Variablen verarbeiten
                                if (hueParameter[j] != "bri") {                             // bri rausnehmen, da ggf. eigener Wert mitgegeben wurde
                                    setState(hueGruppen[gruppenname][i] + "." + hueParameter[j], huePresets[preset][hueParameter[j]] );
                                    presetText = presetText + hueParameter[j] + ": " + huePresets[preset][hueParameter[j]] + ",";
                                } else {                                                    // es handelt sich um bri
                                    if (!validBri(bri)) {                                   // prüfen, ob ein gültiger bri Wert vom Anwender übergeben wurde
                                        setState(hueGruppen[gruppenname][i] + "." + hueParameter[j], huePresets[preset][hueParameter[j]] );
                                        //presetText = presetText + hueParameter[j] + ": " + bri;
                                    } else {
                                        setState(hueGruppen[gruppenname][i] + ".bri", bri); // wenn ein Helligkeitswert übergeben wurde, diesen verwenden
                                        presetText = presetText + hueParameter[j] + ": " + bri;
                                    }
                                }
                            }
    
                        } else {
                            log("Preset: # " + preset + " # nicht definiert","error");
                            break;
                        }
                    }
                    presetText = presetText.substring(0,presetText.length -1);
                    presetText = presetText + "}";
                    log("Gruppe: " + gruppenname + " ## Preset: "+ preset + " ## Werte: " + presetText + " ## wurde gesetzt","info")
                }
            hueGruppeTimerEnd(gruppenname);                                         // aktueller Timer ist abgelaufen, prüfen ob ein Eintrag in der Queue ist
            }, verzögerung);
        } else {
            log("Gruppenname: # " + gruppenname + " # nicht definiert","error");
        }
    }
    
    // Scriptstart
    //--------------------------------------------------------------------------------------------------------------------------
    hueVarsAnlegen ();                                                              // legt die Variablen für die Queues an, in Abhängigkeit der vorhanden Gruppen im Script
    
    /*
    hueGruppe("wohnzimmerGruppe","standard");
    hueGruppe("wohnzimmerGruppe","blue",5000);
    hueGruppe("wohnzimmerGruppe","off",30000);
    */
    
    hueGruppe("arbeitszimmer","red");
    hueGruppe("arbeitszimmer","alertOn",1000);
    hueGruppe("arbeitszimmer","blue",5000);
    hueGruppe("arbeitszimmer","red",1000);
    hueGruppe("arbeitszimmer","blue",1000);
    hueGruppe("arbeitszimmer","standard",500);
    hueGruppe("arbeitszimmer","blue",500);
    hueGruppe("arbeitszimmer","standard",1000);
    hueGruppe("arbeitszimmer","off",2000);` [/i][/i][/i]
    

    Adapter: Fritzbox, Unify Circuit
    Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

    1 Antwort Letzte Antwort
    0
    • ruhr70R Offline
      ruhr70R Offline
      ruhr70
      schrieb am zuletzt editiert von
      #2

      Script oben wurde auf den Stand heute (30.7.2015) aktualisiert.

      Es können von der hue Bridge unabhängige Gruppen angelegt werden, bestehend aus hue Lampen und hue Gruppen.

      <u>Drei Funktionen:</u>

      hueGruppe ("gruppenname","preset",verzögerung,bri)

      • setzt ein Preset in die Queue für eine Gruppe

      hueGruppeStop("gruppenname")

      • stopt die Queue einer Gruppe. Die Lampen bleiben im aktuellen Zustand

      hueGruppeAus("gruppenname")

      • stopt die Queue einer Gruppe. Die Lampen werden ausgeschaltet

      <u>geplant:</u>

      • viele Presets (fertige, statische Einstellungen für eine Gruppe)

      • Szenen bestehend aus Abläufen von Presets (Rotalarm, Wald, Entspannung, …)

      • ...

      Adapter: Fritzbox, Unify Circuit
      Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

      1 Antwort Letzte Antwort
      0
      • A Offline
        A Offline
        Arminhh
        schrieb am zuletzt editiert von
        #3

        Hallo Ruhr70,

        dein Script sieht soweit sehr gut aus und ich habe den Eindruck es auch für mich verwenden zu können. Ich verstehe nur als Nichtprogrammierer nicht wie ich in dem Script nur eine Funktion z.B Gruppe Wohnzimmer on aufrufen kann. Muss das Script für unterschiedliche Aufrufe angepasst und unter einem anderen Namen abgespeichert werden? Also ein Script für Gruppe Küche on und ein umbenanntes Script für Küche off? Kannst Du mal ein Paar Beispiele schreiben? Evt. auch mit Zeitsteuerung?

        Vielen Dank für Deine Bemühungen!

        mfg

        Arminhh
        327_2018-02-06_last_ohne_sql.png

        1 Antwort Letzte Antwort
        0
        • ruhr70R Offline
          ruhr70R Offline
          ruhr70
          schrieb am zuletzt editiert von
          #4

          Hallo Arminhh,

          vergiss das Script 😉

          Ich poste heute Abend mal ein neues Script. Ich hatte noch einmal ganz neu angefangen.

          Im neuen Script gibt es dynamische Lichtszenen und on() ist schon vorgeleistet und kann direkt ohne Programmierung in VIS verwendet werden.

          Eine Zeitsteuerung wäre nur eine Ergänzung um eine einzelne Zeile. Die mache ich als Beispiel mit rein.

          Ich wollte eigentlich noch ein paar Effekte realisieren (Stroboskop, Rot-Alarm, …) und es erst dann veröffentlichen. Nun poste ich es schon einmal vorab.

          Vielleicht hast Du ja dann noch Ideen und Anregungen.

          Gruß

          Michael

          Adapter: Fritzbox, Unify Circuit
          Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

          1 Antwort Letzte Antwort
          0
          • A Offline
            A Offline
            Arminhh
            schrieb am zuletzt editiert von
            #5

            Super Danke für die schnelle Reaktion! Als Anregung ich könnte eine Lagerfeuerszene wo rot gelb flackert gebrauchen!

            mfg

            Armin

            @ruhr70:

            Hallo Arminhh,

            vergiss das Script 😉

            Ich poste heute Abend mal ein neues Script. Ich hatte noch einmal ganz neu angefangen.

            Im neuen Script gibt es dynamische Lichtszenen und on() ist schon vorgeleistet und kann direkt ohne Programmierung in VIS verwendet werden.

            Eine Zeitsteuerung wäre nur eine Ergänzung um eine einzelne Zeile. Die mache ich als Beispiel mit rein.

            Ich wollte eigentlich noch ein paar Effekte realisieren (Stroboskop, Rot-Alarm, …) und es erst dann veröffentlichen. Nun poste ich es schon einmal vorab.

            Vielleicht hast Du ja dann noch Ideen und Anregungen.

            Gruß

            Michael `

            1 Antwort Letzte Antwort
            0
            • ruhr70R Offline
              ruhr70R Offline
              ruhr70
              schrieb am zuletzt editiert von
              #6

              Vorab das neue Script mit den dynamischen hue Szenen.

              `// hue Szenzen - Script für ioBroker
              // V 0.3.0
              // 
              // es empfiehlt sich den hue-Adapter-Loglevel auf warn zu stellen (viele Farbänderungen) 
              // 
              // 
              
              // todo
              // ----
              //
              // strobo       Effekt
              // Rotalarm     Effekt
              // Feuer        Effekt 
              // 
              // prüfen:
              // -------
              // 
              // 
              // erledigt: 
              // ---------
              // bri          optional übergeben (zur Laufzeit veränderbar)
              // Einschaltzeit beim ersten Einschalten
              // sat          optional übergeben (zur Laufzeit veränderbar)
              // Änderungen sat, bri per on() überwachen und Lampen in aktiver Gruppe sofort anpassen
              // neue DP Strukutur ()
              // 
              // 
              
              // ------------ ANFANG der individuellen Konfiguration ------------
              
              // die eigenen Lampen in Gruppen sortiert (die Farbverläufe und Effekte werden nach Gruppen aktiviert)
              
              var lampen ={
                  "wohnzimmer":       // Lampengruppe
                  [   
                      "hue.0.Philips_hue.wohnzimmer.kugel",
                      "hue.0.Philips_hue.wohnzimmer.stehlampe.oben",
                      "hue.0.Philips_hue.wohnzimmer.stehlampe.mitte",
                      "hue.0.Philips_hue.wohnzimmer.stehlampe.unten",
                      "hue.0.Philips_hue.küche.kühlschrank.lc"
                      ],
                  "schlafzimmer":     // Lampengruppe 
                  [   
                      "hue.0.Philips_hue.schlafzimmer.decke.hinten.links",
                      "hue.0.Philips_hue.schlafzimmer.decke.hinten.mitte",
                      "hue.0.Philips_hue.schlafzimmer.decke.hinten.rechts",
                      "hue.0.Philips_hue.schlafzimmer.decke.vorne.links",
                      "hue.0.Philips_hue.schlafzimmer.decke.vorne.mitte",
                      "hue.0.Philips_hue.schlafzimmer.decke.vorne.rechts"        
                      ],
                  "arbeitszimmer":    // Lampengruppe
                  [
                      "hue.0.Philips_hue.arbeitszimmer.schreibtisch.ls",
                      "hue.0.Philips_hue.arbeitszimmer.regal.li.re"
                      ]
              };
              
              var hueSzenenApapterPfad = "hue.szene.";    // wo sollen die Datenpunkte in den ioBroker Objekten angelegt werden
                                                          // je Lampengruppe werden die Datenpunkte:
                                                          // .szene       -> Änderung der Szene per Datenpunkt, z.B. über VIS oder im Script per szeneStart(lampenGruppe,szene,bri);
                                                          // .bri         -> Änderung der Helligkeit per Datenpunkt (0-254)
                                                          // .sat         -> Änderung der Farbsättigung per Datenpunkt ())0-254)
                                                          // .bri_inc     -> Erhöhung/Verminderung der Helligkeit per Datenpunkt (positiver Wert = Heller, negativer Wert = dunkler)
                                                          // .sat_inc     -> Erhöhung/Verminderung der Sättigung per Datenpunkt  (positiver Wert = mehr Farbe, negativer Wert = blasser)
                                                          // angelegt
                                                          // z.B. unter: javascript.0.hue.szene.arbeitszimmer.szene (Javascfript Instanz 0, Pfad = "hue.szene.")
              
              // globaler Parameter: Zufällige Zeit zwischen den Wechsel zwischen zwei Farben, je Lampe, in der aktivierten Szene in ms
              // (wenn keine individuelle Zeit in der Szene definiert ist)
              var delayMin =  1000;   // minimale Zeit in ms einer Lampe, um in die nächste Farbe zu wechseln
              var delayMax =  3000;   // maximale Zeit in ms einer Lampe, um in die nächste Farbe zu wechseln
              
              // ------------ ENDE der individuellen Konfiguration ------------
              
              // -------------------------------------------------------------------------
              // Script: Logik & Szenen - ab hier muss in der Regel nichts geändert werden
              // -------------------------------------------------------------------------
              
              var szenen = {
                  "beispiel":
                  {
                      "description":  "Beispielszene",    // optional: Beschreibung der Szene
                      "delayMin":     2000,               // optional (ohne werden die globalen Einstellungen verwendet)
                      "delayMax":     9000,               // optional (ohne werden die globalen Einstellungen verwendet)
                      "hueMin":       0,                  // niedrigste Farbe im Verlauf
                      "hueMax":       50000               // höchste Farbe im Verlauf
                  },
                  "kamin":
                  {
                      "description":  "roter Farbverlauf",
                      "hueMin":       0,
                      "hueMax":       10000
                  },
                  "wald":
                  {
                      "description":  "grüner Farbverlauf",
                      "hueMin":       20000,
                      "hueMax":       27000
                  },
                  "sonne":
                  {
                      "description":  "gelb/oranger Farbverlauf",
                      "hueMin":       10000,
                      "hueMax":       17000
                  },
                  "blau":
                  {
                      "description":  "Energie, blauer Farbverlauf",
                      "hueMin":       44000,
                      "hueMax":       48000
                  },
                  "love":
                  {
                      "description":  "langsam wechselnder Farbverlauf im lila/violetten Bereich, bis zu den Endpunkten blau und rot",
                      "delayMin":     5000,
                      "delayMax":     8000,
                      "hueMin":       46920,
                      "hueMax":       65355
                  }
              }
              
              // ##### Script Variablen #####
              
              var timer =             {};
              var nextDelay =         {};
              var szeneAktiv =        [];
              var szene =             [];
              
              //  ##### Script Funktionen #####
              
              function rand(min, max) {
              	return Math.floor(Math.random() * (max - min + 1)) + min;
              }
              
              function dpAnlegen() {
                  for (var lampenGruppe in lampen) {
                      createState(hueSzenenApapterPfad + lampenGruppe + ".szene","aus");
                      createState(hueSzenenApapterPfad + lampenGruppe + ".infoAktiveSzene","keine");
                      createState(hueSzenenApapterPfad + lampenGruppe + ".bri",254);
                      createState(hueSzenenApapterPfad + lampenGruppe + ".bri_inc",0);
                      createState(hueSzenenApapterPfad + lampenGruppe + ".sat",254);
                      createState(hueSzenenApapterPfad + lampenGruppe + ".sat_inc",0);
                      log(hueSzenenApapterPfad + lampenGruppe);
                  }   
              }
              
              function restoreSzenen() {
                  for (var lampenGruppe in lampen) {
                      var aktiveSzene = getState(hueSzenenApapterPfad + lampenGruppe + ".szene").val;
                      var bri = getState(hueSzenenApapterPfad + lampenGruppe + ".bri").val;
                      if (aktiveSzene != "aus") {
                          log("im der Gruppe: " + lampenGruppe + " wurde die Szene: " + aktiveSzene + " wieder aktiviert.");
                          setState(hueSzenenApapterPfad + lampenGruppe + ".infoAktiveSzene",aktiveSzene);
                          szeneStart(lampenGruppe,aktiveSzene,bri);
                      }
                  }
              }
              
              function varsAnlegen() {
                  // Script-Variablen für jede Lampengruppe anlagen
                  for (var lampenGruppe in lampen) {
                      timer[lampenGruppe] =           [];
                      nextDelay[lampenGruppe] =       [];
                      szeneAktiv[lampenGruppe] =      false;
                      szene[lampenGruppe] =           null;
                  // Script-Variablen für jede Lampe in jeder Lampengruppe anlegen
                      for (var i = 0; i < lampen[lampenGruppe].length; i++) {                 // timer und die nächste Delayzeit für jede Lampe zurückstellen
                          timer[lampenGruppe][i] = null; 
                          nextDelay[lampenGruppe][i] = 0;
                      }
                  }
              }
              
              function szenenwechsel (lampenGruppe,lampe,delay) {
                  delay = Math.floor(delay / 100);                                            // der zufällige Wert für die nächste Lichtfarbe wird auch als transitiontime verwendet (dazu wird das delay durch 100 geteilt)
                  //log("aktive Szene: hueMin: " + szenen[szene[lampenGruppe]]["hueMin"] + " hueMax: " + szenen[szene[lampenGruppe]]["hueMax"]);
                  var hue = rand(szenen[szene[lampenGruppe]]["hueMin"],szenen[szene[lampenGruppe]]["hueMax"]);
                  var bri = getState(hueSzenenApapterPfad + lampenGruppe+".bri").val;
                  var sat = getState(hueSzenenApapterPfad + lampenGruppe+".sat").val;
                  var command = '{"on":true,"hue":' + hue + ',"sat":' + sat + ',"bri":' + bri + ',"transitiontime":' + delay + '}';
                      //log ("Lampe: " + lampen[lampenGruppe][lampe] + " # command: " + command);
                  if (bri == 0) command = '{"on":false,"bri":0}';
                  setState(lampen[lampenGruppe][lampe] + ".command", command);
              }
              
              function berechneDelay (lampenGruppe,lampe){
                  // globale Delay-Einstellungen übernehmen
                  var delayMinTemp = delayMin;
                  var delayMaxTemp = delayMax;
                  // globale Delay-Einstellungen überschreiben, wenn in der Szene ein eingener Delay definiert ist
                  if (szenen[szene[lampenGruppe]]["delayMin"]) delayMinTemp = szenen[szene[lampenGruppe]]["delayMin"];
                  if (szenen[szene[lampenGruppe]]["delayMax"]) delayMaxTemp = szenen[szene[lampenGruppe]]["delayMax"];
                  nextDelay[lampenGruppe][lampe] = rand(delayMinTemp,delayMaxTemp);
              }
              
              function szeneTimer(lampenGruppe,lampe) {
                  var delay = nextDelay[lampenGruppe][lampe] || 0;
                  //log("gesetztes Delay: " + delay);
                  if (timer[lampenGruppe][lampe]) clearTimeout(timer[lampenGruppe][lampe]);
                  timer[lampenGruppe][lampe]  = setTimeout(function() {
                      timer[lampenGruppe][lampe] = null;
                      berechneDelay(lampenGruppe,lampe);
                      szenenwechsel(lampenGruppe,lampe,nextDelay[lampenGruppe][lampe]);
                        //log("Delay = " + nextDelay[lampenGruppe][lampe] + " # Lampe: " + lampen[lampenGruppe][lampe]);
                      szeneTimer(lampenGruppe,lampe); // ruft den Timer nach Ablauf wieder auf
                  },delay);
              
              }
              
              function check254(check) {
                  if (check !== 0) if (!check) check = 254;
                  check = parseInt(check);
                  if (check > 254) check =254;
                  if (check <= 0 ) check = 0;
                  return check;
              }
              
              function setBri(lampenGruppe,aktiveSzene,bri) {
                  if (szenen[aktiveSzene]["bri"]) bri = szenen[aktiveSzene]["bri"];
                  bri = check254(bri);
                  setState(hueSzenenApapterPfad + lampenGruppe+".bri", bri);
              }
              
              function setSat(lampenGruppe,aktiveSzene,sat) {
                  if (szenen[aktiveSzene]["sat"]) sat = szenen[aktiveSzene]["sat"];
                  sat = check254(sat);
                  setState(hueSzenenApapterPfad + lampenGruppe+".sat", sat);
              }
              
              function szeneStart(lampenGruppe,aktiveSzene,bri,sat) {
                  if (!szenen[aktiveSzene]) {                                                 // undefinierte Szenen abfangen
                      log("# hue Szenen Script: undefinierte Szene wurde versucht aufzurufen: " + aktiveSzene,"error");
                      return;
                  }
                  szene[lampenGruppe] = aktiveSzene;
                  setBri(lampenGruppe,aktiveSzene,bri);
                  setSat(lampenGruppe,aktiveSzene,sat);
                  if (!szeneAktiv[lampenGruppe]) {
                      szeneAktiv[lampenGruppe] = true;
                      for (var i = 0; i < lampen[lampenGruppe].length; i++) {                 // für alle Lampen den timer starten
                          nextDelay[lampenGruppe][i] = 0;
                          szeneTimer(lampenGruppe,i);
                      }
                  }
              }
              
              function szeneStop(lampenGruppe) {                                              // alle aktiven timer löschen
                  for (var i = 0; i < lampen[lampenGruppe].length; i++) {
                      clearTimeout(timer[lampenGruppe][i]);
                      log("Timer: " + lampen[lampenGruppe][i] + " gestoppt");
                  }
                  szeneAktiv[lampenGruppe] =  false;
                  szene[lampenGruppe] =       null;
              }
              
              function lampenAus(lampenGruppe) {
                  for (var i = 0; i < lampen[lampenGruppe].length; i++) {
                      setState(lampen[lampenGruppe][i]+".command",'{"on":false}');
                  }
              }
              
              function setBriSat(com,wert,lampenGruppe) {
                  if (wert != check254(wert)) {
                      wert = check254(wert);
                      setState(hueSzenenApapterPfad + lampenGruppe + "." + com, wert);    //korrigiert bri/sat und  ruft diese on() Funktion direkt wieder auf
                  } else {
                      log("Lampengruppe: " + lampenGruppe + " # " + com + ": " + wert + " empfangen","warn");
                      if (szeneAktiv[lampenGruppe]) {                                         // wenn die Szene in der Gruppe aktiv ist:
                          for (var i = 0; i < lampen[lampenGruppe].length; i++) {             // für alle Lampen der Gruppe
                              setState(lampen[lampenGruppe][i] + "." + com, wert);            // die Helligkeit/Saturation direkt ändern
                              log(com + ": " + wert + " # " + lampen[lampenGruppe][i] + " gesetzt","warn");
                          }
                      }
                  }    
              }
              
              function changeBriSat (com, wert, lampenGruppe) {
                  com = com.replace("_inc", "");
                  var alterWert = getState(hueSzenenApapterPfad + lampenGruppe + "." + com).val;
                  wert = parseInt(wert) + alterWert;
                  setState(hueSzenenApapterPfad + lampenGruppe + "." + com, wert);            //setzt bri/sat neu. Dies ruft die on() Funktion direkt wieder auf, diesmal mit bri/sat
              }
              
              //  ##### Überwachte Datenpunkte #####
              
              // Änderung der Helligkeit (.bri) oder Farbsättigung (.sat) während der Laufzeit über einen Datenpunkt
              
              var reg = new RegExp("^javascript\\.\\d+\\." + hueSzenenApapterPfad.replace('.', '\\.') + ".*\\.(sat|bri)");
              on({"id":reg , "change": "ne"}, function (obj) {
                  var com = obj.id.split('.').pop();
                  var	str = obj.id.replace(/\.(bri|sat)$/, "");
                  var reg2 = new RegExp("^javascript\\.\\d+\\."+ hueSzenenApapterPfad.replace('.', '\\.'));
                  var lampenGruppe = str.replace(reg2, "");
                  var wert = obj.newState.val;
                  setBriSat (com, wert, lampenGruppe);
              });
              
              // Änderung der Helligkeit oder Farbsättignung als adaptiver Wert (.bri_inc, .sat_inc)
              
              var reg = new RegExp("^javascript\\.\\d+\\." + hueSzenenApapterPfad.replace('.', '\\.') + ".*\\.(sat_inc|bri_inc)");
              on({"id":reg , "change": "any"}, function (obj) {
                  var com = obj.id.split('.').pop();
                  var	str = obj.id.replace(/\.(sat_inc|bri_inc)$/, "");
                  var reg2 = new RegExp("^javascript\\.\\d+\\."+ hueSzenenApapterPfad.replace('.', '\\.'));
                  var lampenGruppe = str.replace(reg2, "");
                  var wert = obj.newState.val;
                  changeBriSat (com, wert, lampenGruppe);
              });
              
              // Änderung einer Szene während der Laufzeit, z.B. über VIS
              
              var reg = new RegExp("^javascript\\.\\d+\\." + hueSzenenApapterPfad.replace('.', '\\.') + ".*\\.szene");
              on(reg , function (obj) {
                  var	str = obj.id.replace(/\.szene$/, "");
                  var reg2 = new RegExp("^javascript\\.\\d+\\."+ hueSzenenApapterPfad.replace('.', '\\.'));
                  var lampenGruppe = str.replace(reg2, "");
                  var szene =         obj.newState.val;
                  log("Lampengruppe: " + lampenGruppe + " # Szene: " + szene + " empfangen");
                  switch (szene) {
                      case "aus":
                          szeneStop(lampenGruppe);
                          lampenAus(lampenGruppe);
                          log(lampenGruppe + " Szene deaktiviert");
                          break;
                      case "stop":
                          szeneStop(lampenGruppe);
                          log(lampenGruppe + " Szene angehalten");
                          break;
                      default:
                          if (szenen[szene]) {
                              // TODO: bri nur ermitteln, wenn in der Szene kein eigener bri festgelegt ist    
                                  var bri = getState(hueSzenenApapterPfad + lampenGruppe+".bri").val;
                                  bri = check254(bri);
                                  if (bri == 0) bri = 254;
                              szeneStart(lampenGruppe,szene,bri);
                              setState(hueSzenenApapterPfad + lampenGruppe+".infoAktiveSzene", szene);
                              log(lampenGruppe + " Szene: " + szene + " gestartet");
                              break;
                          }
                          log("### unbekannte Szene: " + szene,"warn");
                          break;
                    }
               });
              
              //  ##### Scriptstart #####
              
              dpAnlegen();        // je einen Datenpunkt pro Lampengruppe anlegen
              varsAnlegen();      // die für das Script notwendigen Variablen erstellen
              
              // warte bis alle States und Objekte angelegt werden.
              // 500ms und dann starte main();
              function main() {
              
              //  ##### Scriptstart main() #####
              
                  restoreSzenen();    // aktiviert zuletzt eingestellte Szenen
              
              }
              setTimeout(main, 500);` 
              
              Wenn man im Script die eigenen hue IDs eingetragen hat, kann das Script auch über VIS gesteuert werden, ohne dass man in Javascript was programmieren muss.
              
              Ein Beispiel für VIS:
              
               ![327_iobroker_dynamische_hue_szenen_widget.png](/assets/uploads/files/327_iobroker_dynamische_hue_szenen_widget.png) [/i][/i][/i][/i][/i][/i][/i][/i]
              

              Adapter: Fritzbox, Unify Circuit
              Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

              1 Antwort Letzte Antwort
              0
              • ruhr70R Offline
                ruhr70R Offline
                ruhr70
                schrieb am zuletzt editiert von
                #7

                Das Widget kann ich als Export nicht posten, da es im Forum meine Beschränkung auf 60.000 Zeichen gibt und der Export 62.000 Zeichen groß ist.

                Nur die linke Seite des Widgets:

                ! ````
                [{"tpl":"tplBasicState","data":{"oid":"javascript.1.hue.szene.wohnzimmer.szene","visibility-cond":"==","visibility-val":"","value":"aus","html":"Wohnzimmer
                aus","visibility-oid":"","name":"","comment":""},"style":{"left":"60px","top":"70px","background":"rgb(204, 204, 204) none repeat scroll 0% 0% / auto padding-box border-box","width":"90px","height":"42px","z-index":"10","color":"rgb(68, 68, 68)","text-align":"center","text-shadow":"none","font-family":"'Lucida Grande', 'Lucida Sans', Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"12px","line-height":"14px","letter-spacing":"0","word-spacing":"0px","background-position":"0% 0%","background-size":"auto","background-clip":"","background-origin":"","padding":"","box-shadow":"0px 0px 1px 1px","border-style":"solid","border-radius":"","border-width":"1px"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","html":"dynamische Szenen","comment":""},"style":{"left":"60px","top":"150px","width":"192px","height":"24px","color":"rgb(245, 245, 245)","text-align":"center","font-family":"Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"400","font-size":"18px","background":"rgb(105, 105, 105) none repeat scroll 0% 0% / auto padding-box border-box","padding":"","z-index":"auto","padding-top":"","line-height":"24px"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.1.hue.szene.wohnzimmer.szene","visibility-cond":"==","visibility-val":"","value":"kamin","html":"Wohnzimmer
                Kamin","visibility-oid":"","name":"","comment":""},"style":{"left":"160px","top":"180px","background":"rgb(204, 204, 204) none repeat scroll 0% 0% / auto padding-box border-box","width":"90px","height":"42px","z-index":"10","color":"rgb(68, 68, 68)","text-align":"center","text-shadow":"none","font-family":"'Lucida Grande', 'Lucida Sans', Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"12px","line-height":"14px","letter-spacing":"0","word-spacing":"0px","background-position":"0% 0%","background-size":"auto","background-clip":"","background-origin":"","padding":"","box-shadow":"0px 0px 1px 1px","border-style":"solid","border-radius":"","border-width":"1px"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.1.hue.szene.wohnzimmer.szene","visibility-cond":"==","visibility-val":"","value":"blau","html":"Wohnzimmer
                blau","visibility-oid":"","name":"","comment":""},"style":{"left":"60px","top":"230px","background":"rgb(204, 204, 204) none repeat scroll 0% 0% / auto padding-box border-box","width":"90px","height":"42px","z-index":"10","color":"rgb(68, 68, 68)","text-align":"center","text-shadow":"none","font-family":"'Lucida Grande', 'Lucida Sans', Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"12px","line-height":"14px","letter-spacing":"0","word-spacing":"0px","background-position":"0% 0%","background-size":"auto","background-clip":"","background-origin":"","padding":"","box-shadow":"0px 0px 1px 1px","border-style":"solid","border-radius":"","border-width":"1px"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.1.hue.szene.wohnzimmer.szene","visibility-cond":"==","visibility-val":"","value":"sonne","html":"Wohnzimmer
                Sonne","visibility-oid":"","name":"","comment":""},"style":{"left":"160px","top":"230px","background":"rgb(204, 204, 204) none repeat scroll 0% 0% / auto padding-box border-box","width":"90px","height":"42px","z-index":"10","color":"rgb(68, 68, 68)","text-align":"center","text-shadow":"none","font-family":"'Lucida Grande', 'Lucida Sans', Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"12px","line-height":"14px","letter-spacing":"0","word-spacing":"0px","background-position":"0% 0%","background-size":"auto","background-clip":"","background-origin":"","padding":"","box-shadow":"0px 0px 1px 1px","border-style":"solid","border-radius":"","border-width":"1px"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":"aus","refreshInterval":"0","html":"","comment":"","visibility-oid":"javascript.1.hue.szene.wohnzimmer.szene"},"style":{"left":"60px","top":"100px","width":"91px","height":"10px","color":"rgb(245, 245, 245)","text-align":"center","font-family":"Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"400","font-size":"18px","background":"red","padding":"","z-index":"30","padding-top":"","line-height":"24px"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":"kamin","refreshInterval":"0","html":"","comment":"","visibility-oid":"javascript.1.hue.szene.wohnzimmer.szene"},"style":{"left":"160px","top":"210px","width":"91px","height":"10px","color":"rgb(245, 245, 245)","text-align":"center","font-family":"Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"400","font-size":"18px","background":"green","padding":"","z-index":"30","padding-top":"","line-height":"24px"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":"blau","refreshInterval":"0","html":"","comment":"","visibility-oid":"javascript.1.hue.szene.wohnzimmer.szene"},"style":{"left":"60px","top":"260px","width":"91px","height":"10px","color":"rgb(245, 245, 245)","text-align":"center","font-family":"Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"400","font-size":"18px","background":"green","padding":"","z-index":"30","padding-top":"","line-height":"24px"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":"sonne","refreshInterval":"0","html":"","comment":"","visibility-oid":"javascript.1.hue.szene.wohnzimmer.szene"},"style":{"left":"160px","top":"260px","width":"91px","height":"10px","color":"rgb(245, 245, 245)","text-align":"center","font-family":"Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"400","font-size":"18px","background":"green","padding":"","z-index":"30","padding-top":"","line-height":"24px"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.1.hue.szene.wohnzimmer.szene","visibility-cond":"==","visibility-val":"","value":"wald","html":"Wohnzimmer
                Wald","visibility-oid":"","name":"","comment":""},"style":{"left":"60px","top":"180px","background":"rgb(204, 204, 204) none repeat scroll 0% 0% / auto padding-box border-box","width":"90px","height":"42px","z-index":"10","color":"rgb(68, 68, 68)","text-align":"center","text-shadow":"none","font-family":"'Lucida Grande', 'Lucida Sans', Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"12px","line-height":"14px","letter-spacing":"0","word-spacing":"0px","background-position":"0% 0%","background-size":"auto","background-clip":"","background-origin":"","padding":"","box-shadow":"0px 0px 1px 1px","border-style":"solid","border-radius":"","border-width":"1px"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":"wald","refreshInterval":"0","html":"","comment":"","visibility-oid":"javascript.1.hue.szene.wohnzimmer.szene"},"style":{"left":"60px","top":"210px","width":"91px","height":"10px","color":"rgb(245, 245, 245)","text-align":"center","font-family":"Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"400","font-size":"18px","background":"green","padding":"","z-index":"30","padding-top":"","line-height":"24px"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","html":"Wohnzimmer","comment":""},"style":{"left":"50px","top":"40px","width":"213px","height":"24px","color":"rgb(245, 245, 245)","text-align":"center","font-family":"Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"400","font-size":"18px","background":"black","padding":"","z-index":"auto","padding-top":"","line-height":"24px"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.1.hue.szene.wohnzimmer.szene","visibility-cond":"==","visibility-val":"","value":"love","html":"Wohnzimmer
                love","visibility-oid":"","name":"","comment":""},"style":{"left":"60px","top":"280px","background":"rgb(204, 204, 204) none repeat scroll 0% 0% / auto padding-box border-box","width":"90px","height":"42px","z-index":"10","color":"rgb(68, 68, 68)","text-align":"center","text-shadow":"none","font-family":"'Lucida Grande', 'Lucida Sans', Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"12px","line-height":"14px","letter-spacing":"0","word-spacing":"0px","background-position":"0% 0%","background-size":"auto","background-clip":"","background-origin":"","padding":"","box-shadow":"0px 0px 1px 1px","border-style":"solid","border-radius":"","border-width":"1px"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":"love","refreshInterval":"0","html":"","comment":"","visibility-oid":"javascript.1.hue.szene.wohnzimmer.szene"},"style":{"left":"60px","top":"310px","width":"91px","height":"10px","color":"rgb(245, 245, 245)","text-align":"center","font-family":"Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"400","font-size":"18px","background":"green","padding":"","z-index":"30","padding-top":"","line-height":"24px"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.1.hue.szene.wohnzimmer.szene","visibility-cond":"==","visibility-val":"","value":"stop","html":"Wohnzimmer
                pause","visibility-oid":"","name":"","comment":""},"style":{"left":"160px","top":"70px","background":"rgb(204, 204, 204) none repeat scroll 0% 0% / auto padding-box border-box","width":"90px","height":"42px","z-index":"10","color":"rgb(68, 68, 68)","text-align":"center","text-shadow":"none","font-family":"'Lucida Grande', 'Lucida Sans', Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"12px","line-height":"14px","letter-spacing":"0","word-spacing":"0px","background-position":"0% 0%","background-size":"auto","background-clip":"","background-origin":"","padding":"","box-shadow":"0px 0px 1px 1px","border-style":"solid","border-radius":"","border-width":"1px"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":"stop","refreshInterval":"0","html":"","comment":"","visibility-oid":"javascript.1.hue.szene.wohnzimmer.szene"},"style":{"left":"160px","top":"100px","width":"91px","height":"10px","color":"rgb(245, 245, 245)","text-align":"center","font-family":"Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"400","font-size":"18px","background":"rgb(105, 105, 105) none repeat scroll 0% 0% / auto padding-box border-box","padding":"","z-index":"30","padding-top":"","line-height":"24px"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.1.hue.szene.wohnzimmer.bri_inc","visibility-cond":"==","visibility-val":"","value":"-16","html":"Wohnzimmer
                Helligkeit
                -","visibility-oid":"","name":"","comment":""},"style":{"left":"70px","top":"380px","background":"rgb(204, 204, 204) none repeat scroll 0% 0% / auto padding-box border-box","width":"90px","height":"42px","z-index":"10","color":"rgb(68, 68, 68)","text-align":"center","text-shadow":"none","font-family":"'Lucida Grande', 'Lucida Sans', Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"12px","line-height":"14px","letter-spacing":"0","word-spacing":"0px","background-position":"0% 0%","background-size":"auto","background-clip":"","background-origin":"","padding":"","box-shadow":"0px 0px 1px 1px","border-style":"solid","border-radius":"","border-width":"1px"},"widgetSet":"basic"},{"tpl":"tplJquiRadioSteps","data":{"oid":"javascript.1.hue.szene.wohnzimmer.bri","visibility-cond":"==","visibility-val":1,"min":"0","max":"254"},"style":{"left":"60px","top":"430px","width":"","height":"24px","font-size":"xx-small","font-variant":"small-caps","background":"","z-index":"10"},"widgetSet":"jqui"},{"tpl":"tplValueFloat","data":{"oid":"javascript.1.hue.szene.wohnzimmer.bri","visibility-cond":"==","visibility-val":1,"is_comma":"true","factor":"1","html_prepend":"Helligkeit: "},"style":{"left":"60px","top":"360px","z-index":"5","text-align":"center","width":"213px","height":"90px","color":"rgb(68, 68, 68)","background":"rgb(224, 224, 224) none repeat scroll 0% 0% / auto padding-box border-box"},"widgetSet":"basic"},{"tpl":"tplJquiRadioSteps","data":{"oid":"javascript.1.hue.szene.wohnzimmer.sat","visibility-cond":"==","visibility-val":1,"min":"0","max":"254"},"style":{"left":"60px","top":"540px","width":"","height":"24px","font-size":"xx-small","font-variant":"small-caps","background":"","z-index":"10"},"widgetSet":"jqui"},{"tpl":"tplValueFloat","data":{"oid":"javascript.1.hue.szene.wohnzimmer.sat","visibility-cond":"==","visibility-val":1,"is_comma":"true","factor":"1","html_prepend":"Sättigung: "},"style":{"left":"60px","top":"470px","z-index":"5","text-align":"center","width":"213px","height":"90px","color":"rgb(68, 68, 68)","background":"rgb(224, 224, 224) none repeat scroll 0% 0% / auto padding-box border-box"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.1.hue.szene.wohnzimmer.sat_inc","visibility-cond":"==","visibility-val":"","value":"-16","html":"Wohnzimmer
                Sättigung
                -","visibility-oid":"","name":"","comment":""},"style":{"left":"70px","top":"490px","background":"rgb(204, 204, 204) none repeat scroll 0% 0% / auto padding-box border-box","width":91,"height":"42px","z-index":"10","color":"rgb(68, 68, 68)","text-align":"center","text-shadow":"none","font-family":"'Lucida Grande', 'Lucida Sans', Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"12px","line-height":"14px","letter-spacing":"0","word-spacing":"0px","background-position":"0% 0%","background-size":"auto","background-clip":"","background-origin":"","padding":"","box-shadow":"0px 0px 1px 1px","border-style":"solid","border-radius":"","border-width":"1px"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.1.hue.szene.wohnzimmer.sat_inc","visibility-cond":"==","visibility-val":"","value":"16","html":"Wohnzimmer
                Sättigung
                +","visibility-oid":"","name":"","comment":""},"style":{"left":"170px","top":"490px","background":"rgb(204, 204, 204) none repeat scroll 0% 0% / auto padding-box border-box","width":"90px","height":"42px","z-index":"10","color":"rgb(68, 68, 68)","text-align":"center","text-shadow":"none","font-family":"'Lucida Grande', 'Lucida Sans', Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"12px","line-height":"14px","letter-spacing":"0","word-spacing":"0px","background-position":"0% 0%","background-size":"auto","background-clip":"","background-origin":"","padding":"","box-shadow":"0px 0px 1px 1px","border-style":"solid","border-radius":"","border-width":"1px"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.1.hue.szene.wohnzimmer.bri_inc","visibility-cond":"==","visibility-val":"","value":"16","html":"Wohnzimmer
                Helligkeit
                +","visibility-oid":"","name":"","comment":""},"style":{"left":"170px","top":"380px","background":"rgb(204, 204, 204) none repeat scroll 0% 0% / auto padding-box border-box","width":"90px","height":"42px","z-index":"10","color":"rgb(68, 68, 68)","text-align":"center","text-shadow":"none","font-family":"'Lucida Grande', 'Lucida Sans', Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"12px","line-height":"14px","letter-spacing":"0","word-spacing":"0px","background-position":"0% 0%","background-size":"auto","background-clip":"","background-origin":"","padding":"","box-shadow":"0px 0px 1px 1px","border-style":"solid","border-radius":"","border-width":"1px"},"widgetSet":"basic"},{"tpl":"tplValueString","data":{"oid":"javascript.1.hue.szene.wohnzimmer.infoAktiveSzene","visibility-cond":"==","visibility-val":1,"html_prepend":"Szene: "},"style":{"left":"60px","top":"120px","z-index":"5","width":"192px","height":"19px"},"widgetSet":"basic"}]

                Adapter: Fritzbox, Unify Circuit
                Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                1 Antwort Letzte Antwort
                0
                • A Offline
                  A Offline
                  Arminhh
                  schrieb am zuletzt editiert von
                  #8

                  Hallo Ruhr70,

                  danke für das neue Script! 😉 Durch das Importieren der Widgets habe ich auch verstanden wie das Skript in Vis mit Parameter aufgerufen wird. Wenn ich heute Abend zu hause bin werde ich es ausprobieren! Bin schon ganz gespannt!

                  mfg

                  Arminhh

                  1 Antwort Letzte Antwort
                  0
                  • L Offline
                    L Offline
                    looxer01
                    schrieb am zuletzt editiert von
                    #9

                    Hi Ruhr70,

                    klasse gemacht. Ich habe heute innerhalb von zwei Stunden den Hue Adapter, skript und Widgets eingebaut.

                    Besser geht´s nicht. Vielen Dank.

                    Eine Frage habe ich. Und zwar waren die Lampen bisher mit einem Zwichenstecker schaltbar. Ich habe das LichtCount Script im Einsatz.

                    Jetzt würde ich gerne die Zwischenstecker einsparen aber die eingeschalteten Lampen sollten trotzdem gezählt werden.

                    Hast du das evt. schon gemacht ?

                    vG L….

                    /* System Zahl Lichter
                    
                    zählt die Lichter in allen Räumen und meldet die Eingeschalteten namentlich
                    Daten kommen vom Gewerk "Licht"
                    */
                    
                    createState('zählen_Lichter.anzahlLichter', 0);                     // wenn benötigt: Anzahl der vorhandenen Lichter
                    createState('zählen_Lichter.anzahlLichterAn', 0);                   // Anzahl der Lichter, die an sind als Variable unter Javascript.0 anlegen
                    
                    var cacheSelector = $('channel[state.id=*.STATE](functions=Licht)');
                    
                    var cacheSelectorState  = $('channel[state.id=*.STATE](functions=Licht)');
                    var cacheSelectorDimmer = $('channel[state.id=*.LEVEL](functions=Licht)');
                    
                    function countLamps(obj) {
                         // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Licht auf 0
                        var anzahlLichterAn = 0;
                        var anzahlLichter = 0;
                        var textLichterAn = [];
                    
                       log('Auslösender Aktor: ' + obj.id + ': ' + obj.newState.val);   // Info im Log, welcher Zustand sich geändert hat
                    
                       cacheSelectorState.each(function (id, i) {                       // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht
                            var status = getState(id).val;                              // Zustand *.STATE abfragen (jedes Element)
                            var obj    = getObject(id);
                            if (status === true) {                                      // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
                                 textLichterAn.push(obj.common.name);                   // Zu Array hinzufügen
                            }               
                            log("Licht Nr. " + i + ": " + getObject(id).common.name + ": " + status);
                            ++anzahlLichter;                                            // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                        });
                        cacheSelectorDimmer.each(function (id, i) {                     // Schleife für jedes gefundenen Element *.LEVEL im Gewerk Licht
                            var status = getState(id).val;                              // Zustand *.LEVEL abfragen (jedes Element)
                            if (parseFloat(status) > 0) {                               // Wenn Dimmwert über 0
                                textLichterAn.push(obj.common.name);                    // Zu Array hinzufügen
                            }                                                           
                            log("Licht Nr. " + i + ": " + id + ": " + status);          // gibt alle Elemente *.LEVEL im Gewerk Licht mit dem aktuelle Status im Log aus
                            ++anzahlLichter;                                            // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                        });
                    
                        // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
                            log("Text: " + textLichterAn);
                            log("Anzahl Lichter: " + anzahlLichter + " # davon Lichter an: " + anzahlLichterAn);
                    
                        // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                    
                       setState("zählen_Lichter.anzahlLichterAn", textLichterAn.length);        // Schreibt die aktuelle Anzahl der eingeschalteten Lichter
                       setState("zählen_Lichter.anzahlLichter", anzahlLichter);                 // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht
                    }
                    
                    cacheSelectorState.on(function(obj) {    // bei Zustandänderung *. STATE im Gewerk Fenster
                       countLamps(obj);
                    });
                    cacheSelectorDimmer.on(function(obj) {    // bei Zustandänderung *. LEVEL im Gewerk Licht
                       countLamps(obj);
                    })
                    
                    
                    1 Antwort Letzte Antwort
                    0
                    • ruhr70R Offline
                      ruhr70R Offline
                      ruhr70
                      schrieb am zuletzt editiert von
                      #10

                      @looxer01:

                      Eine Frage habe ich. Und zwar waren die Lampen bisher mit einem Zwichenstecker schaltbar. Ich habe das LichtCount Script im Einsatz.

                      Jetzt würde ich gerne die Zwischenstecker einsparen aber die eingeschalteten Lampen sollten trotzdem gezählt werden.

                      Hast du das evt. schon gemacht ? `

                      Du hast bisher die hue Lampen per Zwischenstecker geschaltet?

                      Die konnte man doch schon immer über Datenpunkte an- und ausschalten.

                      Aber zum Thema 😉

                      Im Thread in dem die Scripte für offene Fenster, Anzahl brennenden Lichter, usw. drin standen wurde zuletzt ein Script gepostet, welches auch die hue Lichter zählt. Ich habe den Tread in der Suche auf Anhieb leider nicht gefunden 😞

                      Die hue Szenen über das Script kannst Du übrigens auch über Schalter, usw. schalten, wenn Du dafür den Szenen-Adapter von bluefox verwendest. Einfach als Szene einen Datenpunkt vom Script aussuchen und den gewünschten Wert bei ein und aus setzen. Wenn Du dort als Trigger z.B. einen Lichtschalter oder Kontakt einträgst, kannst Du die dynamischen Szenen acuh ohne Vis und ohne Javascript schalten.

                      Adapter: Fritzbox, Unify Circuit
                      Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                      1 Antwort Letzte Antwort
                      0
                      • L Offline
                        L Offline
                        looxer01
                        schrieb am zuletzt editiert von
                        #11

                        :oops:

                        nein, ich habe heute erst den hue adapter installiert. Die Hue Lampen sind auch recht neu. Vorher waren dort normal Leuchten.

                        also eines nach dem anderen 🙂

                        eigentlich brauche ich ja dann nur den Hue schnipsel vom script. Ich mache mich auf die Suche. Sind auf jeden Fall gute Neuigkeiten.

                        Edit: und gefunden und eingebaut:

                        createState('zählen.anzahlHue', 0);    // wenn benötigt: Anzahl der vorhandenen Lichter
                        createState('zählen.anzahlHueAn', 0);  // Anzahl der Lichter, die an sind als Variable unter Javascript.0 anlegen
                        
                        // var cacheSelector = $('channel[state.id=*.switch]');
                        var cacheSelector = $('state[id=hue.0.][role=switch]');
                        
                        cacheSelector.on(function(obj) {    // bei Zustandänderung *. STATE im Gewerk Licht
                        
                             // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Licht auf 0
                            var anzahlLichterAn = 0;
                            var anzahlLichter = 0;
                        
                            log('New state of ' + obj.id + ': ' + obj.newState.val);    // Info im Log, welcher Zustand sich geändert hat
                        
                            cacheSelector.each(function (id, i) {                       // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht
                                var status = getState(id).val;                          // Zustand *.STATE abfragen (jedes Element)
                                if (status > 0) {++anzahlLichterAn}                // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
                        //        log("Hue Nr. " + i + ": " + id + ": " + status);    // gibt alle Elemente *.STATE im Gewerk Licht mit dem aktuelle Status im Log aus
                                ++anzahlLichter;                                        // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                            });
                        
                            // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
                        
                            log("Anzahl Hue: " + anzahlLichter + " # davon an: " + anzahlLichterAn);
                        
                            // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                            setState("zählen.anzahlHue",anzahlLichter);        // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht
                            setState("zählen.anzahlHueAn",anzahlLichterAn);    // Schreibt die aktuelle Anzahl der eingeschalteten Lichter
                        });
                        
                        

                        vG L…

                        1 Antwort Letzte Antwort
                        0
                        • ruhr70R Offline
                          ruhr70R Offline
                          ruhr70
                          schrieb am zuletzt editiert von
                          #12

                          kleiner Nachtrag…

                          Wenn Du nur statische Lichtszenen benötigst, dann kannst Du auch direkt mit dem SzenenAdapter von bluefox arbeiten und benötigst das Script hier nicht. Das ist nur für die dynamischen Szenen.

                          Die Tage bastel ich dann mal die anderen Szenen. Dein Feuer ,Stroboskop und den Alarm.

                          Adapter: Fritzbox, Unify Circuit
                          Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                          1 Antwort Letzte Antwort
                          0
                          • A Offline
                            A Offline
                            Arminhh
                            schrieb am zuletzt editiert von
                            #13

                            Hallo Ruhr70,

                            gestern Abend installiert und funktionierte sofort! Danke für Deine Mühe und dem Script! Ich habe gleich die Widgets in Metro umgesetzt. Bei Bedarf stelle ich die gerne zur Verfügung!

                            Du fragst nach Ideen?

                            Evt. hätte ich eine. Im HM Forum gibt es eine Möglichkeit für CUX und DMX Geräte eine Playliste zu erstellen. Da kann man individuell Farben setzen Pausen Loops etc. So könnte man dann ein flackerndes LAgerfeuer mit Rot und Gelbtönen erstellen.

                            Nur mal so eine Idee! Bin schon froh das jetzt der Hue Adapter jetzt so gut unterstützt wird.

                            Könntest du ein kleines Beispiel schreiben wie ich das Script per JAva und der Astrofunktion starten kann?

                            mfg

                            Arminhh

                            1 Antwort Letzte Antwort
                            0
                            • A Offline
                              A Offline
                              Arminhh
                              schrieb am zuletzt editiert von
                              #14

                              Hallo Ruhr70,

                              gestern Abend installiert und funktionierte sofort! Danke für Deine Mühe und dem Script! Ich habe gleich die Widgets in Metro umgesetzt. Bei Bedarf stelle ich die gerne zur Verfügung!

                              Du fragst nach Ideen?

                              Evt. hätte ich eine. Im HM Forum gibt es eine Möglichkeit für CUX und DMX Geräte eine Playliste zu erstellen. Da kann man individuell Farben HUE SAT Pausen Loops etc. setzen. So könnte man dann ein flackerndes LAgerfeuer mit Rot und Gelbtönen erstellen.

                              Nur mal so eine Idee! Bin schon froh das jetzt der Hue Adapter jetzt so gut unterstützt wird.

                              Könntest du ein kleines Beispiel schreiben wie ich das Script per JAva und der Astrofunktion starten kann?

                              mfg

                              Arminhh

                              1 Antwort Letzte Antwort
                              0
                              • ruhr70R Offline
                                ruhr70R Offline
                                ruhr70
                                schrieb am zuletzt editiert von
                                #15

                                Hi Arminhh,

                                ja, poste doch mal bitte Deine Metro Widgets.

                                Den hue Adapter hast Du Pman zu verdanken.

                                Schnell wechselnde rot/gelb Töne kannst Du mit dem Script hier schon erzeugen, indem Du dafür eine Szene erstellst. Habe das gestern mal probiert. Mir war es zu hektisch. Du musst nur mit den Delayzeiten aufpassen. Die hue Bridge verträgt nur eine begrenzte Anzahl von Änderungen in einer kurzen Zeit.

                                Deine Playlist kannst Du mit den Szenenadapter von bluefox erzeugen. Da kannst Du innerhalb jeder Szene auch zeitlich nacheinander folgende Zustände eintragen. Als hue Datenpunkt nimmst Du dann am Besten .command, z.B. mit dem Inhalt: {"on":true,"hue":25500,"sat":254,"transitiontime":20}

                                Auch Deine Anforderung mit dem Starten eine hue-Szene kannst Du mit dem Szene Adapter ohne Javascript erledigen. Ebenso zeitlich gesteuert (Trigger im Szenenadapter).

                                Wenn Du zu festen Zeiten hue Szenen an und ausschalten willst kannst Du dort bei an und aus jeweils den CRON benutzen. Als Szene kannst Du dann alle Lampen einzeln hinzufügen oder einfach einen Datenpunkt des Scripts oben.

                                Wenn Du die Astrofunktion der CCU nutzen willst… bin mir nicht sicher was Du meinst. Solange sich aber ein Wert in einer Variable in der CCU ändert, steht diese über hm-rega in ioBroker zur Verfügung. Darauf kannst Du als Trigger im Szenenadapter reagieren und eine Szene ein- oder ausschalten. Bei mir steht in einer CCU Variable Tageszeit zur Zeit eine 3 drin. Dies bedeutet Vormittag. Wenn diese Variable auf 3 geht, kann man eine Szene für Vormittag einschalten.

                                Wenn Du per Javascript eine Szene mit dem Script hier starten willst, geht das z.B. so:

                                // szeneStart(lampenGruppe,szene,bri);
                                
                                szeneStart("wohnzimmer","kamin");
                                
                                

                                Startet die Szene "kamin" in der hue-Lampengruppe "wohnzimmer" mit der zuletzt eingestellten Helligkeit (kein bri angegeben).

                                Für einen zeitlichen Aufruf arbeitest Du mit schedule().

                                VG

                                Michael

                                P.S.

                                das Beispiel für eine Szenen mit schnellem Farbwechsel:

                                    "feuer":
                                    {
                                        "description":  "pulsierende Farben",
                                        "delayMin":     200,
                                        "delayMax":     600,
                                        "hueMin":       0,
                                        "hueMax":       17000
                                    },
                                

                                3473_wetter2.png

                                Adapter: Fritzbox, Unify Circuit
                                Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                                1 Antwort Letzte Antwort
                                0
                                • A Offline
                                  A Offline
                                  Arminhh
                                  schrieb am zuletzt editiert von
                                  #16

                                  Hallo Michael,

                                  danke für deine ausführliche Beschreibung!

                                  Anbei die Metroversion

                                  [{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0"},"style":{"left":"650px","top":"160px","width":"665px","height":"502px","z-index":"1","background-color":"#d35f5f","border-radius":"50px","border-width":"5px","border-color":"#f32020","border-style":"hidden"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","html":"Wohnzimmer Beleuchtung","comment":""},"style":{"left":"650px","top":"170px","width":"664px","height":"21px","color":"#f1fef0","text-align":"center","font-family":"Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"400","font-size":"18px","background":"","padding":"","z-index":"2","padding-top":"","line-height":"24px"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","html":"dynamische Szenen","comment":""},"style":{"left":"650px","top":"320px","width":"664px","height":"21px","color":"rgb(245, 245, 245)","text-align":"center","font-family":"Arial, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"400","font-size":"18px","background":"","padding":"","z-index":"2","padding-top":"","line-height":"24px"},"widgetSet":"basic"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":"true","transform":"true","bg_class_false":"bg-emerald","bg_class_true":"bg-red","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","state_oid":"javascript.0.hue.szene.wohnzimmer.szene","value":"wald","label_false":"Wald","icon_true":"/icons-mfd-svg/scene_x-mas.svg","icon_false":"/icons-mfd-svg/scene_x-mas.svg","icon_width":"98","icon_height":"98","icon_top":"11","icon_left":"25","label_true":"Wald","select_on_value":true},"style":{"left":"670px","top":"360px","text-align":"center","z-index":"2","width":"100","height":"100"},"widgetSet":"metro"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":"true","transform":"true","bg_class_false":"bg-orange","bg_class_true":"bg-red","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","state_oid":"javascript.0.hue.szene.wohnzimmer.szene","value":"kamin","label_false":"Kamin","icon_true":"/icons-mfd-svg/scene_stove.svg","icon_false":"/icons-mfd-svg/scene_stove.svg","icon_width":"98","icon_height":"98","icon_top":"11","icon_left":"25","label_true":"Kamin","select_on_value":true},"style":{"left":"800px","top":"360px","text-align":"center","z-index":"2","width":"100","height":"100"},"widgetSet":"metro"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":"true","transform":"true","bg_class_false":"bg-cyan","bg_class_true":"bg-cobalt","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","state_oid":"javascript.0.hue.szene.wohnzimmer.szene","value":"blau","label_false":"Blau","icon_true":"","icon_false":"","icon_width":"98","icon_height":"98","icon_top":"11","icon_left":"25","label_true":"Blau","select_on_value":true},"style":{"left":"930px","top":"360px","text-align":"center","z-index":"2","width":"100","height":"100"},"widgetSet":"metro"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":"true","transform":"true","bg_class_false":"bg-magenta","bg_class_true":"bg-red","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","state_oid":"javascript.0.hue.szene.wohnzimmer.szene","value":"love","label_false":"Love","icon_true":"/icons-mfd-svg/scene_making_love.svg","icon_false":"/icons-mfd-svg/scene_making_love.svg","icon_width":"98","icon_height":"98","icon_top":"11","icon_left":"25","label_true":"Love","select_on_value":true},"style":{"left":"1060px","top":"360px","text-align":"center","z-index":"2","width":"100","height":"100"},"widgetSet":"metro"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":"true","transform":"true","bg_class_false":"bg-yellow","bg_class_true":"bg-red","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","state_oid":"javascript.0.hue.szene.wohnzimmer.szene","value":"sonne","label_false":"Sonne","icon_true":"/icons-mfd-svg/weather_sun.svg","icon_false":"/icons-mfd-svg/weather_sun.svg","icon_width":"98","icon_height":"98","icon_top":"11","icon_left":"25","label_true":"Sonne","select_on_value":true},"style":{"left":"1190px","top":"360px","text-align":"center","z-index":"2","width":"100","height":"100"},"widgetSet":"metro"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":"true","transform":"true","bg_class_false":"bg-indigo","bg_class_true":"bg-teal","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","state_oid":"javascript.0.hue.szene.wohnzimmer.szene","value":"aus","label_false":"Szene Ausschalten","icon_true":"/icons-mfd-svg/light_light.svg","icon_false":"/icons-mfd-svg/light_light_dim_100.svg","icon_width":"98","icon_height":"98","icon_top":"11","icon_left":"25","label_true":"Szene Ausgeschalten","select_on_value":true},"style":{"left":"670px","top":"210px","text-align":"center","z-index":"2","width":"100","height":"100"},"widgetSet":"metro"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":"true","transform":"true","bg_class_false":"bg-indigo","bg_class_true":"bg-teal","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","state_oid":"javascript.0.hue.szene.wohnzimmer.szene","value":"stop","label_false":"Szene Pause","icon_true":"/icons-mfd-svg/light_light.svg","icon_false":"/icons-mfd-svg/light_light_dim_100.svg","icon_width":"98","icon_height":"98","icon_top":"11","icon_left":"25","label_true":"Szene Pause","select_on_value":true},"style":{"left":"790px","top":"210px","text-align":"center","z-index":"2","width":"100","height":"100"},"widgetSet":"metro"},{"tpl":"tplValueFloat","data":{"oid":"javascript.0.hue.szene.wohnzimmer.sat","visibility-cond":"==","visibility-val":1,"is_comma":"true","factor":"1","html_prepend":"Sätigung:"},"style":{"left":"670px","top":"480px","z-index":"2","text-align":"center","width":"219px","height":"141px","color":"rgb(68, 68, 68)","background":"rgb(224, 224, 224) none repeat scroll 0% 0% / auto padding-box border-box"},"widgetSet":"basic"},{"tpl":"tplValueFloat","data":{"oid":"javascript.0.hue.szene.wohnzimmer.bri","visibility-cond":"==","visibility-val":1,"is_comma":"true","factor":"1","html_prepend":"Helligkeit: "},"style":{"left":"1070px","top":"480px","z-index":"2","text-align":"center","width":"219px","height":"141px","color":"rgb(68, 68, 68)","background":"rgb(224, 224, 224) none repeat scroll 0% 0% / auto padding-box border-box"},"widgetSet":"basic"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":"true","transform":"true","bg_class_false":"bg-gray","bg_class_true":"bg-gray","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","state_oid":"javascript.0.hue.szene.wohnzimmer.sat_inc","value":"-16","label_false":"","icon_true":"/icons-mfd-svg/light_light_dim_10.svg","icon_false":"/icons-mfd-svg/light_light_dim_10.svg","icon_width":"98","icon_height":"98","icon_top":"27","icon_left":"31","label_true":"","select_on_value":false},"style":{"left":"690px","top":"500px","text-align":"center","z-index":"3","width":"80","height":"80"},"widgetSet":"metro"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":"true","transform":"true","bg_class_false":"bg-gray","bg_class_true":"bg-gray","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","state_oid":"javascript.0.hue.szene.wohnzimmer.sat_inc","value":"+16","label_false":"","icon_true":"/icons-mfd-svg/light_light_dim_100.svg","icon_false":"/icons-mfd-svg/light_light_dim_100.svg","icon_width":"98","icon_height":"98","icon_top":"24","icon_left":"28","label_true":"","select_on_value":false},"style":{"left":"780px","top":"500px","text-align":"center","z-index":"3","width":"80","height":"80"},"widgetSet":"metro"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":"true","transform":"true","bg_class_false":"bg-gray","bg_class_true":"bg-gray","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","state_oid":"javascript.0.hue.szene.wohnzimmer.bri_inc","value":"-16","label_false":"","icon_true":"/icons-mfd-svg/light_light_dim_10.svg","icon_false":"/icons-mfd-svg/light_light_dim_10.svg","icon_width":"98","icon_height":"98","icon_top":"27","icon_left":"31","label_true":"","select_on_value":false},"style":{"left":"1090px","top":"500px","text-align":"center","z-index":"3","width":"80","height":"80"},"widgetSet":"metro"},{"tpl":"tplMetroTileState","data":{"visibility-cond":"==","visibility-val":1,"hover":"true","transform":"true","bg_class_false":"bg-gray","bg_class_true":"bg-gray","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","state_oid":"javascript.0.hue.szene.wohnzimmer.bri_inc","value":"+16","label_false":"","icon_true":"/icons-mfd-svg/light_light_dim_100.svg","icon_false":"/icons-mfd-svg/light_light_dim_100.svg","icon_width":"98","icon_height":"98","icon_top":"24","icon_left":"28","label_true":"","select_on_value":false},"style":{"left":"1180px","top":"500px","text-align":"center","z-index":"3","width":"80","height":"80"},"widgetSet":"metro"}]
                                  
                                  1 Antwort Letzte Antwort
                                  0
                                  • A Offline
                                    A Offline
                                    Arminhh
                                    schrieb am zuletzt editiert von
                                    #17

                                    und hier ein Bild
                                    280_screenshot_47.jpg

                                    1 Antwort Letzte Antwort
                                    0
                                    • ruhr70R Offline
                                      ruhr70R Offline
                                      ruhr70
                                      schrieb am zuletzt editiert von
                                      #18

                                      Danke!

                                      Huch, jetzt ist ioBroker erst ab 18 😉

                                      Adapter: Fritzbox, Unify Circuit
                                      Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                                      1 Antwort Letzte Antwort
                                      0
                                      • L Offline
                                        L Offline
                                        looxer01
                                        schrieb am zuletzt editiert von
                                        #19

                                        Danke für den morgendlichen Lacher :)))))))))))))))))))

                                        Blau könntest du mit einem PIC "Glas Bier" klarer machen

                                        1 Antwort Letzte Antwort
                                        0
                                        • A Offline
                                          A Offline
                                          Arminhh
                                          schrieb am zuletzt editiert von
                                          #20

                                          moin, moin,

                                          seit einiger Zeit verwende ich dieses tolle Skript, das bei mir absolut zuverlässig läuft!!

                                          Einen Verbesserungswunsch hätte ich aber.

                                          Ich würde gerne innerhalb einer Gruppe die Lampen mit unterschiedlicher Helligkeit bri betreiben.

                                          z.B. Gruppen Garten

                                          LAmpe 1 70 %

                                          Lampe 2 100%

                                          Lampe 3 100%

                                          ISt das möglich?

                                          mfg

                                          Armin

                                          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

                                          496

                                          Online

                                          32.4k

                                          Benutzer

                                          81.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