Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Alias-Adapter | Mehrere Stats eines Geräts

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Alias-Adapter | Mehrere Stats eines Geräts

    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      n3ucr0n last edited by

      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

      htrecksler 1 Reply Last reply Reply Quote 0
      • htrecksler
        htrecksler Forum Testing @n3ucr0n last edited by

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

        N 1 Reply Last reply Reply Quote 0
        • N
          n3ucr0n @htrecksler last edited by

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

          Kannst du mir das Script verlinken?

          Danke 😊

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @n3ucr0n last edited by

            @n3ucr0n sagte: Script verlinken?

            Alias per Script erzeugen

            N 2 Replies Last reply Reply Quote 1
            • N
              n3ucr0n @paul53 last edited by

              @paul53 perfekt, das meinte ich! danke 😊

              1 Reply Last reply Reply Quote 0
              • N
                n3ucr0n @paul53 last edited by

                @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

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @n3ucr0n last edited by 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 1 Reply Last reply Reply Quote 1
                  • N
                    n3ucr0n @paul53 last edited by

                    @paul53 Das war die Lösung! Danke! 🙂

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    669
                    Online

                    31.9k
                    Users

                    80.2k
                    Topics

                    1.3m
                    Posts

                    adapter alias
                    3
                    8
                    453
                    Loading More Posts
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes
                    Reply
                    • Reply as topic
                    Log in to reply
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    The ioBroker Community 2014-2023
                    logo