Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Einbinden gemeinsam genutzter Komponenten

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    736

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

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

Einbinden gemeinsam genutzter Komponenten

Scheduled Pinned Locked Moved JavaScript
3 Posts 2 Posters 1.7k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H Offline
    H Offline
    HarlekinX
    wrote on last edited by
    #1

    Ich habe für die Ansteuerung meiner Hue-Birnen ein Skript geschrieben welches eine Liste von Presets in einem Hash ablegt und die Funktion SetHuePreset bereitstellt.

    Da ich meine Skripte zur besseren Übersichtlichkeit nach Geräte-/Funktionsgruppen trenne, z.B. Taster Schlafzimmer oder Anwesenheitsstatus habe ich das Preset-Skript bisher per eval in die einzelnen Skripte eingebunden.

    var fs = require('fs');
    eval(fs.readFileSync('/opt/iobroker/scripts/hue_presets.js','utf8'));
    
    

    Ist das so richtig oder gibt es einen besseren Weg?

    1 Reply Last reply
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      wrote on last edited by
      #2

      @HarlekinX:

      Ich habe für die Ansteuerung meiner Hue-Birnen ein Skript geschrieben welches eine Liste von Presets in einem Hash ablegt und die Funktion SetHuePreset bereitstellt.

      Da ich meine Skripte zur besseren Übersichtlichkeit nach Geräte-/Funktionsgruppen trenne, z.B. Taster Schlafzimmer oder Anwesenheitsstatus habe ich das Preset-Skript bisher per eval in die einzelnen Skripte eingebunden.

      var fs = require('fs');
      eval(fs.readFileSync('/opt/iobroker/scripts/hue_presets.js','utf8'));
      
      

      Ist das so richtig oder gibt es einen besseren Weg? `
      Wie sieht hue_presets.js aus?

      1 Reply Last reply
      0
      • H Offline
        H Offline
        HarlekinX
        wrote on last edited by
        #3
        var ON = true, OFF = false;
        
        var hue_id = {
          "Gang:Deckenlampe":"hue.0.Philips hue.Gang",
          "Büro:Schreibtisch":"hue.0.Philips hue.Schreibtisch",
          "Büro:Deckenlampe":"hue.0.Philips hue.Büro",
          "Büro:Leselampe":"hue.0.Philips hue.Leselampe",
          "Schlafzimmer:Bett":"hue.0.Philips hue.Schlafzimmer"
        };
        
        var hue_group = {
          "Gang":{ "bulbs":[ [hue_id['Gang:Deckenlampe'],0] ], "preset":0 },
          "Büro":{ "bulbs":[ [hue_id['Büro:Deckenlampe'],0], [hue_id['Büro:Schreibtisch'],-64] ], "preset":0 },
          "Leselampe":{ "bulbs":[ [hue_id['Büro:Leselampe'],0] ], "preset":0 },
          "Schlafzimmer":{ "bulbs":[ [hue_id['Schlafzimmer:Bett'],0] ], "preset":0 }
        };
        
        var hue_preset = {
          "72deg 100%":{"bri":254,"colormode":"hs","hue":13122,"sat":212},
          "72deg 75%":{"bri":192,"colormode":"hs","hue":13653,"sat":212},
          "Antique":{"bri":190,"colormode":"ct","ct":497},
          "Beruhigen":{"bri":145,"colormode":"ct","ct":463},
          "Fluorescent":{"bri":254,"colormode":"ct","ct":153},
          "Halogen":{"bri":254,"colormode":"ct","ct":299},
          "Konzentrieren":{"bri":254,"colormode":"ct","ct":234},
          "Lesegeschwindigkeit":{"bri":241,"colormode":"ct","ct":343},
          "Nacht 50%":{"bri":127,"colormode":"hs","hue":65535,"sat":254},
          "Nacht 75%":{"bri":192,"colormode":"hs","hue":65535,"sat":254},
          "Regenerieren":{"bri":204,"colormode":"ct","ct":153},
          "Schwarzlicht":{"bri":50,"colormode":"hs","hue":48000,"sat":254},
          "Standard 100%":{"bri":254,"colormode":"hs","hue":14922,"sat":145},
          "Standard 75%":{"bri":192,"colormode":"hs","hue":14922,"sat":145}
        };
        
        function setHuePreset(preset, group) {
        
            for (var n = 0; n < group.bulbs.length; n++) {
        
                var id_bulb = group.bulbs[n][0];
                var level = preset["bri"] + group.bulbs[n][1];
                if (level < 0) {
                    level = 0;
                }
                if (level > 254) {
                    level = 254;
                }
        
                setState(id_bulb+'.on', ON);
                setState(id_bulb+'.bri', level);
        
                switch(preset.colormode) {
                    case "hs":
                        setState(id_bulb+'.colormode', 'hs');
                        setState(id_bulb+'.hue', preset.hue);
                        setState(id_bulb+'.sat', preset.sat);
                        break;
                    case "ct":
                        setState(id_bulb+'.colormode', 'ct');
                        setState(id_bulb+'.ct', preset.ct);
                        break;
                    default:
                        setState(id_bulb+'.colormode', 'xy');
                        // TODO: Colormode from xy array
                }
            }
        }
        
        

        Dies ist der Code den ich per eval in mehrere Skripte einbinde da ich, wie vorher schon geschrieben, Geräte-/Funktionsgruppen zur besseren Übersicht voneinander trenne.

        hue_id dient nur der Vereinfachung.

        hue_group entstand eigentlich nur da ich in meinem Büro eine Deckenlampe und eine Schreibtischlampe habe und diese in der Regel gleich eingestellt werden, aber die Schreibtischlampe 25% dunkler sein muss, damit beide gleich hell wirken.

        hue_preset enthält die Werte die ich direkt von der Bridge per Paw (Mac Applikation) auslese und in einzelnen Dateien speichere. Damit kann ich Einstellungen die ich mit diversen Apps mache und mir gefallen, dauerhaft sichern. Darüber lasse ich ein Ruby Skript laufen welches alle Dateien ausliest, den kompletten Hash ausgibt und dabei nicht benötigtes weglässt.

        Es funktioniert alles so wie ich es möchte, allerdings habe ich einen kleinen Haken bei dem Hue-Adapter festgestellt. Dazu werde ich aber die Frage im passenden Adapter-Bereich des Forums stellen um nicht vom Thema abzuschweifen.

        1 Reply Last reply
        0

        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

        With your input, this post could be even better 💗

        Register Login
        Reply
        • Reply as topic
        Log in to reply
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes


        Support us

        ioBroker
        Community Adapters
        Donate

        492

        Online

        32.8k

        Users

        82.7k

        Topics

        1.3m

        Posts
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Login

        • Don't have an account? Register

        • Login or register to search.
        • First post
          Last post
        0
        • Home
        • Recent
        • Tags
        • Unread 0
        • Categories
        • Unreplied
        • Popular
        • GitHub
        • Docu
        • Hilfe