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

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. Alias-Adapter | Mehrere Stats eines Geräts

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Alias-Adapter | Mehrere Stats eines Geräts

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
adapteralias
8 Beiträge 3 Kommentatoren 692 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.
  • N Offline
    N Offline
    n3ucr0n
    schrieb am zuletzt editiert von
    #1

    Hallo alle zusammen,

    ich habe angefangen den Alias-Adapter zu nutzen.
    Im ersten Schritt für meine Beleuchtung.

    Nun habe ich bisher nur die On / Off States in den Alias Adapter hinzugefügt.
    Für diesen einen Status klappt das hervorragend.

    Nun haben diverse Lampen aber weitere interessante States (Dimmen, Farbe, etc.)

    Gibt es eine Möglichkeit, diese weiteren Stats mit unter dem Alias Ordner hinzuzufügen - also zusätzlich zu dem SET Datenpunkt?
    Unbenannt.PNG

    Natürlich könnte ich den weiteren Datenpunkt mit einem anderen Alias Namen hinzufügen, aber anders wäre es deutlich schöner für mich.

    Danke und liebe Grüße
    Micha

    htreckslerH 1 Antwort Letzte Antwort
    0
    • N n3ucr0n

      Hallo alle zusammen,

      ich habe angefangen den Alias-Adapter zu nutzen.
      Im ersten Schritt für meine Beleuchtung.

      Nun habe ich bisher nur die On / Off States in den Alias Adapter hinzugefügt.
      Für diesen einen Status klappt das hervorragend.

      Nun haben diverse Lampen aber weitere interessante States (Dimmen, Farbe, etc.)

      Gibt es eine Möglichkeit, diese weiteren Stats mit unter dem Alias Ordner hinzuzufügen - also zusätzlich zu dem SET Datenpunkt?
      Unbenannt.PNG

      Natürlich könnte ich den weiteren Datenpunkt mit einem anderen Alias Namen hinzufügen, aber anders wäre es deutlich schöner für mich.

      Danke und liebe Grüße
      Micha

      htreckslerH Offline
      htreckslerH Offline
      htrecksler
      Forum Testing
      schrieb am zuletzt editiert von
      #2

      @n3ucr0n so?
      Alias.PNG
      Hab ich mit dem Script hier aus dem Forum gemacht

      Gruss Hermann

      ioBroker auf Proxmox (Debian) auf IntelNuc als Produktivsystem

      N 1 Antwort Letzte Antwort
      0
      • htreckslerH htrecksler

        @n3ucr0n so?
        Alias.PNG
        Hab ich mit dem Script hier aus dem Forum gemacht

        N Offline
        N Offline
        n3ucr0n
        schrieb am zuletzt editiert von
        #3

        @htrecksler ja, ich glaube das sieht so aus wie ich das gerne hätte!

        Kannst du mir das Script verlinken?

        Danke 😊

        paul53P 1 Antwort Letzte Antwort
        0
        • N n3ucr0n

          @htrecksler ja, ich glaube das sieht so aus wie ich das gerne hätte!

          Kannst du mir das Script verlinken?

          Danke 😊

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @n3ucr0n sagte: Script verlinken?

          Alias per Script erzeugen

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          N 2 Antworten Letzte Antwort
          1
          • paul53P paul53

            @n3ucr0n sagte: Script verlinken?

            Alias per Script erzeugen

            N Offline
            N Offline
            n3ucr0n
            schrieb am zuletzt editiert von
            #5

            @paul53 perfekt, das meinte ich! danke 😊

            1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @n3ucr0n sagte: Script verlinken?

              Alias per Script erzeugen

              N Offline
              N Offline
              n3ucr0n
              schrieb am zuletzt editiert von
              #6

              @paul53 Leider scheint es doch nicht so zu klappen wie ich das gehofft habe.
              Ich kann zwar einen Alias Datenpunkt anlegen, aber anstelle, dass der Datenpunkt zu den vorhandenem Strukturbaum des Alias-Adapters hinzugefügt wird, wird ein komplett neuer Baum erzeugt.
              Das Bringt mich leider nicht weiter...

              Was habe ich falsch gemacht?

              Vorhandene (durch den Alias-Adapter angelegte) Datenstruktur:
              Unbenannt.JPG

              Script

              // Original-Datenpunkt
              const idOrigin = 'zigbee.0.00124b0021929b4c.color'; 
              // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
              // Bei Nicht-Verwendung Leerstring '' zuweisen
              const idRead = '';
               
              // Alias-Datenpunkt
              const idAlias = 'alias.0.Büro.Büro_Schreibtisch.Farbe';
               
              var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
               
              // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
              nameAlias = 'Poolpumpe Ein';
              desc = 'per Script erstellt';
              // typeAlias = 'boolean'; // oder 'number'
              // read = "val < 0 ? -val : 0"; // Erkennung "Aus" --> false erfolgt automatisch  
              // write = "val ? String(1) : String(0)";
              // role = 'value';
              // min = 0; // nur Zahlen
              // max = 100; // nur Zahlen
              // unit = '%'; // nur für Zahlen
              // states = {0: 'Aus', 1: 'Auto', 2: 'Ein'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein)
              custom = []; // verhindert doppelte Ausführung von history, ...
              // raum = 'EG_Flur'; // Groß-/Kleinschreibung in der ID beachten !
              // gewerk = 'Licht'; // Groß-/Kleinschreibung in der ID beachten !
               
              // Ab hier nichts ändern !!
              function createAlias(idDst, idSrc, idRd) {
                 if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn');
                 else {
                    var obj = {};
                    obj.type = 'state';
                    obj.common = getObject(idSrc).common;
                    obj.common.alias = {};
                    if(idRd) {
                        obj.common.alias.id = {};
                        obj.common.alias.id.read = idRd;
                        obj.common.alias.id.write = idSrc;
                        obj.common.read = true;
                    } else obj.common.alias.id = idSrc;
                    if(typeAlias) obj.common.type = typeAlias;
                    if(obj.common.read !== false && read) obj.common.alias.read = read;
                    if(obj.common.write !== false && write) obj.common.alias.write = write;
                    if(nameAlias) obj.common.name = nameAlias;
                    if(role) obj.common.role = role;
                    if(desc) obj.common.desc = desc;
                    if(obj.common.type == 'number') {
                       if(min !== undefined) obj.common.min = min;
                       if(max !== undefined) obj.common.max = max;
                       if(unit) obj.common.unit = unit;
                    } else {
                       if(obj.common.min !== undefined) delete obj.common.min;
                       if(obj.common.max !== undefined) delete obj.common.max;
                       if(obj.common.unit) delete obj.common.unit;
                    }
                    if(states) obj.common.states = states;
                    if(custom && obj.common.custom) obj.common.custom = custom;
                    obj.native = {};
                    setObject(idDst, obj, function() {
                       if(idRd) setState(idRd, getState(idRd).val, true);
                       else setState(idSrc, getState(idSrc).val, true); 
                    });
                    if(raum && existsObject('enum.rooms.' + raum)) {
                       let obj = getObject('enum.rooms.' + raum)
                       obj.common.members.push(idDst);
                       setObject('enum.rooms.' + raum, obj);
                    }
                    if(gewerk && existsObject('enum.functions.' + gewerk)) {
                       let obj = getObject('enum.functions.' + gewerk)
                       obj.common.members.push(idDst);
                       setObject('enum.functions.' + gewerk, obj);
                    }
                 } 
              }
               
              createAlias('alias.0.' + idAlias, idOrigin, idRead);
              

              (Hinweis: Den Namen "Poolpumpe Ein" habe ich gesehen -> Ist für das Problem jetzt aber nicht erheblich)

              Erstellte Datenstruktur durch das Script:
              Unbenannt2.JPG

              Beide "alias Objektbäume" existieren nun parallel.
              Wie kann die mit dem Script die Datenpunkte des Objektbaumes erweitern, welcher durch den Alias Adapter angelegt wurde?
              Und eine Verwaltung der über das Skript angelegten Alias ist dann im Nachgang auch nicht möglich, oder?

              Ich finde ja grade den Alias Adapter klasse und würde gerne das Management über eben diesen nutzen.
              Dafür gibt es noch keine Lösung?

              Danke und liebe Grüße

              paul53P 1 Antwort Letzte Antwort
              0
              • N n3ucr0n

                @paul53 Leider scheint es doch nicht so zu klappen wie ich das gehofft habe.
                Ich kann zwar einen Alias Datenpunkt anlegen, aber anstelle, dass der Datenpunkt zu den vorhandenem Strukturbaum des Alias-Adapters hinzugefügt wird, wird ein komplett neuer Baum erzeugt.
                Das Bringt mich leider nicht weiter...

                Was habe ich falsch gemacht?

                Vorhandene (durch den Alias-Adapter angelegte) Datenstruktur:
                Unbenannt.JPG

                Script

                // Original-Datenpunkt
                const idOrigin = 'zigbee.0.00124b0021929b4c.color'; 
                // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
                // Bei Nicht-Verwendung Leerstring '' zuweisen
                const idRead = '';
                 
                // Alias-Datenpunkt
                const idAlias = 'alias.0.Büro.Büro_Schreibtisch.Farbe';
                 
                var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
                 
                // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
                nameAlias = 'Poolpumpe Ein';
                desc = 'per Script erstellt';
                // typeAlias = 'boolean'; // oder 'number'
                // read = "val < 0 ? -val : 0"; // Erkennung "Aus" --> false erfolgt automatisch  
                // write = "val ? String(1) : String(0)";
                // role = 'value';
                // min = 0; // nur Zahlen
                // max = 100; // nur Zahlen
                // unit = '%'; // nur für Zahlen
                // states = {0: 'Aus', 1: 'Auto', 2: 'Ein'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein)
                custom = []; // verhindert doppelte Ausführung von history, ...
                // raum = 'EG_Flur'; // Groß-/Kleinschreibung in der ID beachten !
                // gewerk = 'Licht'; // Groß-/Kleinschreibung in der ID beachten !
                 
                // Ab hier nichts ändern !!
                function createAlias(idDst, idSrc, idRd) {
                   if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn');
                   else {
                      var obj = {};
                      obj.type = 'state';
                      obj.common = getObject(idSrc).common;
                      obj.common.alias = {};
                      if(idRd) {
                          obj.common.alias.id = {};
                          obj.common.alias.id.read = idRd;
                          obj.common.alias.id.write = idSrc;
                          obj.common.read = true;
                      } else obj.common.alias.id = idSrc;
                      if(typeAlias) obj.common.type = typeAlias;
                      if(obj.common.read !== false && read) obj.common.alias.read = read;
                      if(obj.common.write !== false && write) obj.common.alias.write = write;
                      if(nameAlias) obj.common.name = nameAlias;
                      if(role) obj.common.role = role;
                      if(desc) obj.common.desc = desc;
                      if(obj.common.type == 'number') {
                         if(min !== undefined) obj.common.min = min;
                         if(max !== undefined) obj.common.max = max;
                         if(unit) obj.common.unit = unit;
                      } else {
                         if(obj.common.min !== undefined) delete obj.common.min;
                         if(obj.common.max !== undefined) delete obj.common.max;
                         if(obj.common.unit) delete obj.common.unit;
                      }
                      if(states) obj.common.states = states;
                      if(custom && obj.common.custom) obj.common.custom = custom;
                      obj.native = {};
                      setObject(idDst, obj, function() {
                         if(idRd) setState(idRd, getState(idRd).val, true);
                         else setState(idSrc, getState(idSrc).val, true); 
                      });
                      if(raum && existsObject('enum.rooms.' + raum)) {
                         let obj = getObject('enum.rooms.' + raum)
                         obj.common.members.push(idDst);
                         setObject('enum.rooms.' + raum, obj);
                      }
                      if(gewerk && existsObject('enum.functions.' + gewerk)) {
                         let obj = getObject('enum.functions.' + gewerk)
                         obj.common.members.push(idDst);
                         setObject('enum.functions.' + gewerk, obj);
                      }
                   } 
                }
                 
                createAlias('alias.0.' + idAlias, idOrigin, idRead);
                

                (Hinweis: Den Namen "Poolpumpe Ein" habe ich gesehen -> Ist für das Problem jetzt aber nicht erheblich)

                Erstellte Datenstruktur durch das Script:
                Unbenannt2.JPG

                Beide "alias Objektbäume" existieren nun parallel.
                Wie kann die mit dem Script die Datenpunkte des Objektbaumes erweitern, welcher durch den Alias Adapter angelegt wurde?
                Und eine Verwaltung der über das Skript angelegten Alias ist dann im Nachgang auch nicht möglich, oder?

                Ich finde ja grade den Alias Adapter klasse und würde gerne das Management über eben diesen nutzen.
                Dafür gibt es noch keine Lösung?

                Danke und liebe Grüße

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von paul53
                #7

                @n3ucr0n
                Du musst eine identische ID für die Ordner ohne "alias.0." angeben:

                const idAlias = 'Büro.Büro_Schreibtisch.Farbe';
                

                Ich würde Umlaute in der ID vermeiden (im Namen kein Problem).

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                N 1 Antwort Letzte Antwort
                1
                • paul53P paul53

                  @n3ucr0n
                  Du musst eine identische ID für die Ordner ohne "alias.0." angeben:

                  const idAlias = 'Büro.Büro_Schreibtisch.Farbe';
                  

                  Ich würde Umlaute in der ID vermeiden (im Namen kein Problem).

                  N Offline
                  N Offline
                  n3ucr0n
                  schrieb am zuletzt editiert von
                  #8

                  @paul53 Das war die Lösung! Danke! :-)

                  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

                  672

                  Online

                  32.6k

                  Benutzer

                  82.3k

                  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