Skip to content
  • 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
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [Vorlage] Alias per Skript erzeugen

NEWS

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

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

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

[Vorlage] Alias per Skript erzeugen

Geplant Angeheftet Gesperrt Verschoben JavaScript
314 Beiträge 38 Kommentatoren 62.4k Aufrufe 66 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.
  • paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von paul53
    #1

    Im folgenden Skript wird ein Alias zu einem Datenpunkt mit dessen common-Eigenschaften erstellt. Bei gewollten Abweichungen von common-Eigenschaften des Alias zum Original muss man die zugehörigen // (Kommentar) entfernen und den gewünschten Wert zuweisen.

    // Original-Datenpunkt
    const idOrigin = 'mqtt.0.switch.status'; 
    // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
    // Bei Nicht-Verwendung Leerstring '' zuweisen
    const idRead = '';
     
    // Alias-Datenpunkt
    const idAlias = 'Pool.Pumpe.Schalter';
    
    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);
    

    Beispiele für Konvertierung (write);

    write = "val ? 1 : 0"; // boolean --> binary
    write = "val ? 'On' : 'Off'"; // boolean --> string
    write = "val.toString()"; // number --> string dezimal
    write = "val.toFixed(2)"; // number --> string mit 2 Nachkommastellen
    

    EDIT(20.12.2019): obj.native ergänzt.
    EDIT(16.01.2020): Abfrage (Zeile 20) geändert
    EDIT(06.02.2020): obj.common.custom ergänzt

    EDIT(17.02.2020): Da man Raum und Gewerk in die Struktur der Alias-ID einbringen kann, sind enums für Raum und Gewerk oftmals nicht erforderlich. Für diejenigen, die den erzeugten Alias-Datenpunkt zu enum.rooms und/oder enum.functions hinzufügen wollen, wurde das Skript erweitert.

    EDIT(21.04.2020): Erweiterung für getrennte Kommando- und Status-Datenpunkte ab js-controller 3.x.

    EDIT(05.12.2020): Wenn Alias-Typ keine Zahl ist, werden min, max und unit gelöscht, falls vorhanden

    EDIT(16.02.2021): Zeile 23 geändert von leerem Array in leeres Objekt

    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

    sigi234S dslraserD Johannes BauerstatterJ SegwayS 4 Antworten Letzte Antwort
    18
    • TroyaT Offline
      TroyaT Offline
      Troya
      schrieb am zuletzt editiert von
      #2

      Hi @paul53,
      will grad anfangen meine Alias mit deinem Script anzulegen.

      Derzeit muss ich anschließend diesen dann händisch eine "Funktion" sowie "Raum" zuweisen.
      Kannst du dein Script damit erweitern?
      Ganz nach der Art deiner anderen Eigenschaften:

      // room = 'EG_Flur';
      // functions = 'Licht';
      
      paul53P 2 Antworten Letzte Antwort
      0
      • TroyaT Troya

        Hi @paul53,
        will grad anfangen meine Alias mit deinem Script anzulegen.

        Derzeit muss ich anschließend diesen dann händisch eine "Funktion" sowie "Raum" zuweisen.
        Kannst du dein Script damit erweitern?
        Ganz nach der Art deiner anderen Eigenschaften:

        // room = 'EG_Flur';
        // functions = 'Licht';
        
        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von paul53
        #3

        @Troya sagte:

        Kannst du dein Script damit erweitern?

        Raum und Gewerk sind eigene Objekte (enums) und keine Eigenschaft des Datenpunktes.

        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

        1 Antwort Letzte Antwort
        0
        • TroyaT Offline
          TroyaT Offline
          Troya
          schrieb am zuletzt editiert von
          #4

          Ok, das heißt dann wohl nein.
          Hatte ich gehofft, weil der Beitrag ganz vielversprechend aussah.

          1 Antwort Letzte Antwort
          0
          • TroyaT Troya

            Hi @paul53,
            will grad anfangen meine Alias mit deinem Script anzulegen.

            Derzeit muss ich anschließend diesen dann händisch eine "Funktion" sowie "Raum" zuweisen.
            Kannst du dein Script damit erweitern?
            Ganz nach der Art deiner anderen Eigenschaften:

            // room = 'EG_Flur';
            // functions = 'Licht';
            
            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von paul53
            #5

            @Troya sagte:

            Kannst du dein Script damit erweitern?

            Versuche es bitte selbst mit folgenden Erweiterungen:

            var raum, gewerk; // Zeile 6 ergänzen
            
            // raum = 'EG_Flur'; // Zeile 18
            // gewerk = 'Licht'; // Zeile 19
            
            // am Ende der Funktion createAlias() ergänzen (hinter setObject())
                  if(raum && getObject('enum.rooms.' + raum)) {
                     let obj = getObject('enum.rooms.' + raum)
                     obj.common.members.push(idDst);
                     setObject('enum.rooms.' + raum, obj);
                  }
                  if(gewerk && getObject('enum.functions.' + gewerk)) {
                     let obj = getObject('enum.functions.' + gewerk)
                     obj.common.members.push(idDst);
                     setObject('enum.functions.' + gewerk, obj);
                  }
            

            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

            TroyaT C 2 Antworten Letzte Antwort
            1
            • paul53P paul53

              @Troya sagte:

              Kannst du dein Script damit erweitern?

              Versuche es bitte selbst mit folgenden Erweiterungen:

              var raum, gewerk; // Zeile 6 ergänzen
              
              // raum = 'EG_Flur'; // Zeile 18
              // gewerk = 'Licht'; // Zeile 19
              
              // am Ende der Funktion createAlias() ergänzen (hinter setObject())
                    if(raum && getObject('enum.rooms.' + raum)) {
                       let obj = getObject('enum.rooms.' + raum)
                       obj.common.members.push(idDst);
                       setObject('enum.rooms.' + raum, obj);
                    }
                    if(gewerk && getObject('enum.functions.' + gewerk)) {
                       let obj = getObject('enum.functions.' + gewerk)
                       obj.common.members.push(idDst);
                       setObject('enum.functions.' + gewerk, obj);
                    }
              
              TroyaT Offline
              TroyaT Offline
              Troya
              schrieb am zuletzt editiert von
              #6

              @paul53
              Klasse das klappt, danke Paul!🤗

              Aber nicht den Satz wie ich falsch verstehen:

              // am Ende der Funktion createAlias() ergänzen (hinter setObject())
              

              Hab das zuerst so verstanden, dass man die Funktion createAlias() in die Gewerk-Funktion hinter setObject() setzen soll.
              ...am Ende der Funktion, createAlias() erzänzen...:man-facepalming:
              ...am Ende der createAlias()-Funktion erzänzen 👍

              --

              Eins noch nebenbei,weil ich das Problem hatte:
              Falls es heißt

              javascript.0	2019-12-09 10:49:50.479	warn	(908) Object "enum.rooms.OG_Bad" does not exist
              

              Achtet bei den IDs der Räume und Gewerke auf die Groß- & Kleinschreibung.
              Lässt man den Haken bei "IDs behalten" angehakt, werden diese nämlich klein geschrieben!
              Das lässt sich aber nachträglich korrigieren über das Stift-Symbol.

              1 Antwort Letzte Antwort
              1
              • GarfonsoG Offline
                GarfonsoG Offline
                Garfonso
                Developer
                schrieb am zuletzt editiert von
                #7

                @paul53
                Hi,
                bitte erweitere dein Skript doch so, dass auch der native Part gesetzt wird, also das hier noch einfügen:

                obj.native = {}
                

                Ansonsten gibt es Probleme mit iot (Alexa, usw.), siehe Diskussion hier

                Danke. 🙂

                Viele Grüße,
                Garfonso

                Ultimativer Lovelace Leitfaden: https://forum.iobroker.net/topic/35937/der-ultimative-iobroker-lovelace-leitfaden-dokumentation

                Lovelace UI Beispiele: https://forum.iobroker.net/topic/35950/zeigt-her-eure-lovelace-visualisierung

                paul53P 1 Antwort Letzte Antwort
                1
                • GarfonsoG Garfonso

                  @paul53
                  Hi,
                  bitte erweitere dein Skript doch so, dass auch der native Part gesetzt wird, also das hier noch einfügen:

                  obj.native = {}
                  

                  Ansonsten gibt es Probleme mit iot (Alexa, usw.), siehe Diskussion hier

                  Danke. 🙂

                  Viele Grüße,
                  Garfonso

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

                  @Garfonso sagte:

                  erweitere dein Skript doch so, dass auch der native Part gesetzt wird

                  Erledigt.

                  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

                  1 Antwort Letzte Antwort
                  1
                  • M Offline
                    M Offline
                    Markus84
                    schrieb am zuletzt editiert von
                    #9

                    Ich bin leider totaler Anfänger und würde mich freuen, wenn mir jemand bezüglich dem Erzeugen von Alias etwas Hilfestellung geben könnte. Ich möchte die Alias-Funktion nutzen, um von Anfang an für den Fall, dass ein Austausch eines Gerätes notwendig wird, vorzusorgen (und nicht alle Verweise in Vis oder Blockly ändern zu müssen). Eine "idiotensichere" Anleitung zum Erstellen eines Alias habe ich leider nicht gefunden - das Skript scheint bereits die einfachste Möglichkeit zu sein. Oder gibt es inzwischen eine einfachere Möglichkeit?

                    Muss ich das oben stehende Skript einfach bei Skripte einfügen und das Skript aktivieren damit der Alias erstellt wird?

                    Wenn ich beispielsweise eine LED Lampe habe, muss ich dann für on/off, brightness, color, etc. das Skirpt für jeden einzelnen Datenpunkt separat laufen lassen? Gibt es eine Funktion, die für alle Datenpunkte eines Geräts auf einmal Alias anlegt?

                    Mir ist nicht ganz klar, wann ich oben im Skript die Auskommentierung rausnehmen muss und wann nicht. Könnte mir das bitte jemand erklären?

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • M Markus84

                      Ich bin leider totaler Anfänger und würde mich freuen, wenn mir jemand bezüglich dem Erzeugen von Alias etwas Hilfestellung geben könnte. Ich möchte die Alias-Funktion nutzen, um von Anfang an für den Fall, dass ein Austausch eines Gerätes notwendig wird, vorzusorgen (und nicht alle Verweise in Vis oder Blockly ändern zu müssen). Eine "idiotensichere" Anleitung zum Erstellen eines Alias habe ich leider nicht gefunden - das Skript scheint bereits die einfachste Möglichkeit zu sein. Oder gibt es inzwischen eine einfachere Möglichkeit?

                      Muss ich das oben stehende Skript einfach bei Skripte einfügen und das Skript aktivieren damit der Alias erstellt wird?

                      Wenn ich beispielsweise eine LED Lampe habe, muss ich dann für on/off, brightness, color, etc. das Skirpt für jeden einzelnen Datenpunkt separat laufen lassen? Gibt es eine Funktion, die für alle Datenpunkte eines Geräts auf einmal Alias anlegt?

                      Mir ist nicht ganz klar, wann ich oben im Skript die Auskommentierung rausnehmen muss und wann nicht. Könnte mir das bitte jemand erklären?

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

                      @Markus84 sagte:

                      Muss ich das oben stehende Skript einfach bei Skripte einfügen und das Skript aktivieren damit der Alias erstellt wird?

                      Ja, vor Aktivierung die IDs (Original und Alias) anpassen. Wenn alle common-Attribute wie im Original bleiben können, genügt das.

                      @Markus84 sagte in [Vorlage] Alias per Skript erzeugen:

                      das Skirpt für jeden einzelnen Datenpunkt separat laufen lassen?

                      Ja, das Skript erzeugt genau einen Alias-Datenpunkt.

                      @Markus84 sagte in [Vorlage] Alias per Skript erzeugen:

                      wann ich oben im Skript die Auskommentierung rausnehmen muss

                      Wenn sich mind. ein common-Attribut(siehe unter "Attribute für bestimmte Objekttypen") im Alias vom Original unterscheiden soll. In der Regel ist es mind. der Name.

                      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

                      M XxJooOX 2 Antworten Letzte Antwort
                      0
                      • paul53P paul53

                        @Markus84 sagte:

                        Muss ich das oben stehende Skript einfach bei Skripte einfügen und das Skript aktivieren damit der Alias erstellt wird?

                        Ja, vor Aktivierung die IDs (Original und Alias) anpassen. Wenn alle common-Attribute wie im Original bleiben können, genügt das.

                        @Markus84 sagte in [Vorlage] Alias per Skript erzeugen:

                        das Skirpt für jeden einzelnen Datenpunkt separat laufen lassen?

                        Ja, das Skript erzeugt genau einen Alias-Datenpunkt.

                        @Markus84 sagte in [Vorlage] Alias per Skript erzeugen:

                        wann ich oben im Skript die Auskommentierung rausnehmen muss

                        Wenn sich mind. ein common-Attribut(siehe unter "Attribute für bestimmte Objekttypen") im Alias vom Original unterscheiden soll. In der Regel ist es mind. der Name.

                        M Offline
                        M Offline
                        Markus84
                        schrieb am zuletzt editiert von
                        #11

                        @paul53 Besten Dank. Jetzt habe ich es (hoffentlich) verstanden und werde es gleich mal versuchen umzusetzen.

                        M 1 Antwort Letzte Antwort
                        0
                        • M Markus84

                          @paul53 Besten Dank. Jetzt habe ich es (hoffentlich) verstanden und werde es gleich mal versuchen umzusetzen.

                          M Offline
                          M Offline
                          Markus84
                          schrieb am zuletzt editiert von
                          #12

                          @Markus84 said in [Vorlage] Alias per Skript erzeugen:

                          @paul53 Besten Dank. Jetzt habe ich es (hoffentlich) verstanden und werde es gleich mal versuchen umzusetzen.

                          Vielleicht habe ich es doch nicht so ganz verstanden... Den Alias anzulegen hat wunderbar funktioniert. Den value synchronisiert er auch sehr schön zwischen Alias und dem zu schaltenden Datenpunkt. Wenn ich Name, state oder role ändere, wird diese Änderung jedoch nicht mitsynchronisiert. Ist das normal? Falls dies normal ist, kann ich bedenkenlos diese Daten im Alias ändern (werden dann logischerweise zwar nicht synchronisiert) oder lässt man besser die Finger davon?

                          paul53P GarfonsoG 2 Antworten Letzte Antwort
                          0
                          • M Markus84

                            @Markus84 said in [Vorlage] Alias per Skript erzeugen:

                            @paul53 Besten Dank. Jetzt habe ich es (hoffentlich) verstanden und werde es gleich mal versuchen umzusetzen.

                            Vielleicht habe ich es doch nicht so ganz verstanden... Den Alias anzulegen hat wunderbar funktioniert. Den value synchronisiert er auch sehr schön zwischen Alias und dem zu schaltenden Datenpunkt. Wenn ich Name, state oder role ändere, wird diese Änderung jedoch nicht mitsynchronisiert. Ist das normal? Falls dies normal ist, kann ich bedenkenlos diese Daten im Alias ändern (werden dann logischerweise zwar nicht synchronisiert) oder lässt man besser die Finger davon?

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

                            @Markus84 sagte:

                            Wenn ich Name, state oder role ändere, wird diese Änderung jedoch nicht mitsynchronisiert. Ist das normal?

                            Ja, das sind statische Attribute. Der Alias kann andere Attribute haben als das Original, wozu bei der Alias-Erzeugung die kommentierten Zeilen im Skript dienen. Einmal erzeugte Attribute können nur manuell geändert werden.

                            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

                            1 Antwort Letzte Antwort
                            0
                            • P Offline
                              P Offline
                              patti72
                              schrieb am zuletzt editiert von patti72
                              #14

                              Hallo, leider wird bei mir der alias.0 nicht angelegt.
                              Im Log steht folgendes:

                              javascript.0 2020-01-04 08:20:56.572 info (2420) script.js.common.alias_anlegen: registered 0 subscriptions and 0 schedules
                              javascript.0 2020-01-04 08:20:56.571 warn (2420) script.js.common.alias_anlegen: setObject(id=alias.0.lampe2, obj={"type":"state","common":{"name":"Lampe1 on","type":"boolean","role":"switch","read":true,"write":true,"alias":{"id":"deconz.0.
                              javascript.0 2020-01-04 08:20:56.569 info (2420) script.js.common.alias_anlegen: getObject(id=deconz.0.Lights.2.on, enumName=undefined) => {"type":"state","common":{"name":"Lampe1 on","type":"boolean","role":"switch","read":true,"write":true
                              javascript.0 2020-01-04 08:20:56.554 info (2420) Start javascript script.js.common.alias_anlegen

                              Das komische auf einer anderen iobroker-Installation geht es. Softwarestand ist der gleiche. Zwei Unterschiede gibt es. Beim funktionierenden läuft iobroker auf ner VM und bei der anderen auf einem Rasberry Pi 3. Der 2te Unterschied es sind weniger Instancen auf der problematischen Installation.
                              Im Skript aber ich nur die Namen angepasst, den Rest auskommentiert gelassen.

                              paul53P 1 Antwort Letzte Antwort
                              0
                              • P patti72

                                Hallo, leider wird bei mir der alias.0 nicht angelegt.
                                Im Log steht folgendes:

                                javascript.0 2020-01-04 08:20:56.572 info (2420) script.js.common.alias_anlegen: registered 0 subscriptions and 0 schedules
                                javascript.0 2020-01-04 08:20:56.571 warn (2420) script.js.common.alias_anlegen: setObject(id=alias.0.lampe2, obj={"type":"state","common":{"name":"Lampe1 on","type":"boolean","role":"switch","read":true,"write":true,"alias":{"id":"deconz.0.
                                javascript.0 2020-01-04 08:20:56.569 info (2420) script.js.common.alias_anlegen: getObject(id=deconz.0.Lights.2.on, enumName=undefined) => {"type":"state","common":{"name":"Lampe1 on","type":"boolean","role":"switch","read":true,"write":true
                                javascript.0 2020-01-04 08:20:56.554 info (2420) Start javascript script.js.common.alias_anlegen

                                Das komische auf einer anderen iobroker-Installation geht es. Softwarestand ist der gleiche. Zwei Unterschiede gibt es. Beim funktionierenden läuft iobroker auf ner VM und bei der anderen auf einem Rasberry Pi 3. Der 2te Unterschied es sind weniger Instancen auf der problematischen Installation.
                                Im Skript aber ich nur die Namen angepasst, den Rest auskommentiert gelassen.

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

                                @patti72 sagte:

                                wird bei mir der alias.0 nicht angelegt.

                                In der Konfiguration der JS-Instanz ist setObject freigegeben ?

                                Logs bitte in Code tags (</>) posten.

                                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

                                1 Antwort Letzte Antwort
                                0
                                • paul53P paul53

                                  @Markus84 sagte:

                                  Muss ich das oben stehende Skript einfach bei Skripte einfügen und das Skript aktivieren damit der Alias erstellt wird?

                                  Ja, vor Aktivierung die IDs (Original und Alias) anpassen. Wenn alle common-Attribute wie im Original bleiben können, genügt das.

                                  @Markus84 sagte in [Vorlage] Alias per Skript erzeugen:

                                  das Skirpt für jeden einzelnen Datenpunkt separat laufen lassen?

                                  Ja, das Skript erzeugt genau einen Alias-Datenpunkt.

                                  @Markus84 sagte in [Vorlage] Alias per Skript erzeugen:

                                  wann ich oben im Skript die Auskommentierung rausnehmen muss

                                  Wenn sich mind. ein common-Attribut(siehe unter "Attribute für bestimmte Objekttypen") im Alias vom Original unterscheiden soll. In der Regel ist es mind. der Name.

                                  XxJooOX Offline
                                  XxJooOX Offline
                                  XxJooO
                                  schrieb am zuletzt editiert von
                                  #16

                                  @paul53

                                  Könntest Du bitte kurz erklären, wie aus einem alias vom typ boolean ein "offen" oder "geschlossen" wird?

                                  Leider fehlen mir die Javascript-Kenntnisse, um Dein Script aus dem ersten Post dahingehend richtig zu interpretieren.

                                  Danke!

                                  Beispiel hier:

                                  {
                                    "_id": "alias.0.Fenster_und_Tuer_Sensoren.Fenster.EG.Esszimmer.Fenster.Stellung",
                                    "type": "state",
                                    "common": {
                                      "name": "Stellung",
                                      "role": "",
                                      "type": "boolean",
                                      "read": true,
                                      "write": true,
                                      "desc": "Manuell erzeugt",
                                      "def": false,
                                      "alias": {
                                        "id": "zigbee.0.00158d00028b5941.opened"
                                      }
                                    },
                                    "native": {},
                                    "from": "system.adapter.admin.0",
                                    "user": "system.user.admin",
                                    "ts": 1577905721582,
                                    "acl": {
                                      "object": 1636,
                                      "state": 1636,
                                      "owner": "system.user.admin",
                                      "ownerGroup": "system.group.administrator"
                                    }
                                  }
                                  

                                  ioBroker auf Intel NUC - Homematic CCU3/pivCCU auf Raspi 3B+

                                  paul53P 1 Antwort Letzte Antwort
                                  0
                                  • XxJooOX XxJooO

                                    @paul53

                                    Könntest Du bitte kurz erklären, wie aus einem alias vom typ boolean ein "offen" oder "geschlossen" wird?

                                    Leider fehlen mir die Javascript-Kenntnisse, um Dein Script aus dem ersten Post dahingehend richtig zu interpretieren.

                                    Danke!

                                    Beispiel hier:

                                    {
                                      "_id": "alias.0.Fenster_und_Tuer_Sensoren.Fenster.EG.Esszimmer.Fenster.Stellung",
                                      "type": "state",
                                      "common": {
                                        "name": "Stellung",
                                        "role": "",
                                        "type": "boolean",
                                        "read": true,
                                        "write": true,
                                        "desc": "Manuell erzeugt",
                                        "def": false,
                                        "alias": {
                                          "id": "zigbee.0.00158d00028b5941.opened"
                                        }
                                      },
                                      "native": {},
                                      "from": "system.adapter.admin.0",
                                      "user": "system.user.admin",
                                      "ts": 1577905721582,
                                      "acl": {
                                        "object": 1636,
                                        "state": 1636,
                                        "owner": "system.user.admin",
                                        "ownerGroup": "system.group.administrator"
                                      }
                                    }
                                    
                                    paul53P Offline
                                    paul53P Offline
                                    paul53
                                    schrieb am zuletzt editiert von
                                    #17

                                    @XxJooO :
                                    Wie sieht das Objekt vom Datenpunkt "zigbee.0.00158d00028b5941.opened" aus ? Welche Werte kann er annehmen ?

                                    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

                                    XxJooOX 1 Antwort Letzte Antwort
                                    0
                                    • paul53P paul53

                                      @XxJooO :
                                      Wie sieht das Objekt vom Datenpunkt "zigbee.0.00158d00028b5941.opened" aus ? Welche Werte kann er annehmen ?

                                      XxJooOX Offline
                                      XxJooOX Offline
                                      XxJooO
                                      schrieb am zuletzt editiert von
                                      #18

                                      @paul53

                                      {
                                        "from": "system.adapter.zigbee.0",
                                        "user": "system.user.admin",
                                        "ts": 1572607261264,
                                        "common": {
                                          "name": "Is open",
                                          "type": "boolean",
                                          "role": "state",
                                          "read": true,
                                          "write": false,
                                          "custom": {
                                            "history.0": {
                                              "enabled": true,
                                              "changesOnly": true,
                                              "debounce": "",
                                              "maxLength": "",
                                              "retention": "31536000",
                                              "changesRelogInterval": "",
                                              "changesMinDelta": "",
                                              "aliasId": ""
                                            },
                                            "influxdb.0": {
                                              "enabled": true,
                                              "changesOnly": true,
                                              "debounce": "",
                                              "maxLength": 10,
                                              "retention": 0,
                                              "changesRelogInterval": "",
                                              "changesMinDelta": "",
                                              "storageType": "",
                                              "aliasId": ""
                                            }
                                          }
                                        },
                                        "native": {},
                                        "acl": {
                                          "object": 1636,
                                          "owner": "system.user.admin",
                                          "ownerGroup": "system.group.administrator",
                                          "state": 1636
                                        },
                                        "_id": "zigbee.0.00158d000288e163.opened",
                                        "type": "state"
                                      }
                                      

                                      ioBroker auf Intel NUC - Homematic CCU3/pivCCU auf Raspi 3B+

                                      paul53P 1 Antwort Letzte Antwort
                                      0
                                      • XxJooOX XxJooO

                                        @paul53

                                        {
                                          "from": "system.adapter.zigbee.0",
                                          "user": "system.user.admin",
                                          "ts": 1572607261264,
                                          "common": {
                                            "name": "Is open",
                                            "type": "boolean",
                                            "role": "state",
                                            "read": true,
                                            "write": false,
                                            "custom": {
                                              "history.0": {
                                                "enabled": true,
                                                "changesOnly": true,
                                                "debounce": "",
                                                "maxLength": "",
                                                "retention": "31536000",
                                                "changesRelogInterval": "",
                                                "changesMinDelta": "",
                                                "aliasId": ""
                                              },
                                              "influxdb.0": {
                                                "enabled": true,
                                                "changesOnly": true,
                                                "debounce": "",
                                                "maxLength": 10,
                                                "retention": 0,
                                                "changesRelogInterval": "",
                                                "changesMinDelta": "",
                                                "storageType": "",
                                                "aliasId": ""
                                              }
                                            }
                                          },
                                          "native": {},
                                          "acl": {
                                            "object": 1636,
                                            "owner": "system.user.admin",
                                            "ownerGroup": "system.group.administrator",
                                            "state": 1636
                                          },
                                          "_id": "zigbee.0.00158d000288e163.opened",
                                          "type": "state"
                                        }
                                        
                                        paul53P Offline
                                        paul53P Offline
                                        paul53
                                        schrieb am zuletzt editiert von
                                        #19

                                        @XxJooO
                                        Der Original-Datenpunkt ist doch ebenfalls vom Typ "boolean", allerdings "read only". Da muss nichts gewandelt werden. Oder möchtest Du Zustandstexte darstellen (Zeile 17) ?

                                        states = {false: 'geschlossen', true: 'offen'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein)
                                        

                                        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

                                        XxJooOX K 2 Antworten Letzte Antwort
                                        0
                                        • paul53P paul53

                                          @XxJooO
                                          Der Original-Datenpunkt ist doch ebenfalls vom Typ "boolean", allerdings "read only". Da muss nichts gewandelt werden. Oder möchtest Du Zustandstexte darstellen (Zeile 17) ?

                                          states = {false: 'geschlossen', true: 'offen'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein)
                                          
                                          XxJooOX Offline
                                          XxJooOX Offline
                                          XxJooO
                                          schrieb am zuletzt editiert von
                                          #20

                                          @paul53

                                          ja, der Ausgabewert soll bei true offen und bei false gern geschlossen sein.

                                          ioBroker auf Intel NUC - Homematic CCU3/pivCCU auf Raspi 3B+

                                          XxJooOX 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

                                          768

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe