Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Erstellen eines eigenen Objekt

    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

    Erstellen eines eigenen Objekt

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

      Hallo,
      ich habe mal eine Anfängerfrage zu eigenen Objekten, wie erstelle ich eigene Objekte, Beispiel ich habe diese Objekte erstellt und möchte gerne, daß der Eintrag vom unteren Beispiel erscheint
      Anmerkung 2020-08-25 112210.png
      diesen Lx Wert
      ![Anmerkung 2020-08-25 112014.png]
      (/assets/uploads/files/1598347683423-anmerkung-2020-08-25-112014.png)
      Danke im voraus, lg Oskar

      Homoran 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Oskar last edited by

        @Oskar da ist wohl irgendetwas schief gelaufen

        O 1 Reply Last reply Reply Quote 0
        • O
          Oskar @Homoran last edited by

          @Homoran
          Hallo, ja das stimmt, da ist einiges schief gelaufen, deshalb nochmals:
          ich habe mal eine Anfängerfrage zu eigenen Objekten, wie erstelle ich eigene Objekte, Beispiel ich habe dieses Objekte erstellt und will gerne, dass der Eintrag vom unteren Beispiel erscheint
          diesen Lx Wert, daß er den Luxwert übernimmt
          Anmerkung 2020-08-25 112210.png

          Anmerkung 2020-08-25 112014.png
          Der Luxwert sollte in dem eigenen Objekt übernommen werden,

          ich hoffe jetzt ist es verständlich und es kann mir jemand einen Tip geben, lg Oskar

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

            @Oskar sagte:

            Der Luxwert sollte in dem eigenen Objekt übernommen werden,

            Dann benötigt man ein Script / Blockly.
            Ohne Script geht es mit Alias-Datenpunkt.

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

              @paul53
              Hallo, gibt es da noch eine Erklärung wie man den Alias-Datenpunkt erstellen kann,

              lg Oskar

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

                @Oskar sagte:

                wie man den Alias-Datenpunkt erstellen kann

                Du kannst das folgende Script verwenden, nachdem Du idOrigin und idAlias angepasst hast.

                // Original-Datenpunkt
                const idOrigin = 'knx.0.Wohnen.Licht.Esstisch_Taster'; 
                // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
                // Bei Nicht-Verwendung Leerstring '' zuweisen
                const idRead = ''; //'knx.0.Wohnen.Licht.Esstisch_Status';
                 
                // Alias-Datenpunkt
                const idAlias = 'Beleuchtung.Buero';
                var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
                // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
                nameAlias = 'Beleuchtungsstärke';
                desc = 'per Script erstellt';
                // typeAlias = 'boolean'; // oder 'number'
                // read = "val < 20 ? true : false"; // Erkennung "Aus" --> false erfolgt automatisch  
                // write = "val ? true : true";
                // role = 'switch';
                // 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(min !== undefined) obj.common.min = min;
                      if(max !== undefined) obj.common.max = max;
                      if(unit) obj.common.unit = unit;
                      if(states) obj.common.states = states;
                      if(custom && obj.common.custom) obj.common.custom = custom;
                      obj.native = {};
                      setObject(idDst, obj);
                      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);
                
                O 1 Reply Last reply Reply Quote 0
                • O
                  Oskar @paul53 last edited by

                  @paul53
                  Hallo, das habe ich leider noch nicht verstanden, gibt es eine einfachere Erklärung?

                  Lg Oskar

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

                    @Oskar sagte:

                    das habe ich leider noch nicht verstanden

                    Kopiere das Script aus dem Forum in den Javascript-Editor und passe die IDs für idOrigin und idAlias an. Danach starte das Script (kann anschließend wieder gestoppt werden) und der Alias-Datenpunkt wird erstellt.
                    Alternativ kann man Alias-Datenpunkte auch manuell erstellen, was aber viel mehr Kenntnisse voraussetzt.

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    642
                    Online

                    31.8k
                    Users

                    80.0k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    307
                    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