Skip to content
  • 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
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.0k

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

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

[Vorlage] Alias per Skript erzeugen

[Vorlage] Alias per Skript erzeugen

Scheduled Pinned Locked Moved JavaScript
314 Posts 38 Posters 62.3k Views 66 Watching
  • 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.
  • paul53P Offline
    paul53P Offline
    paul53
    wrote on last edited by 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 Replies Last reply
    18
    • TroyaT Offline
      TroyaT Offline
      Troya
      wrote on last edited by
      #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 Replies Last reply
      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
        wrote on last edited by 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 Reply Last reply
        0
        • TroyaT Offline
          TroyaT Offline
          Troya
          wrote on last edited by
          #4

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

          1 Reply Last reply
          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
            wrote on last edited by 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 Replies Last reply
            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
              wrote on last edited by
              #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 Reply Last reply
              1
              • GarfonsoG Offline
                GarfonsoG Offline
                Garfonso
                Developer
                wrote on last edited by
                #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 Reply Last reply
                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
                  wrote on last edited by
                  #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 Reply Last reply
                  1
                  • M Offline
                    M Offline
                    Markus84
                    wrote on last edited by
                    #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 Reply Last reply
                    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
                      wrote on last edited by 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 Replies Last reply
                      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
                        wrote on last edited by
                        #11

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

                        M 1 Reply Last reply
                        0
                        • M Markus84

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

                          M Offline
                          M Offline
                          Markus84
                          wrote on last edited by
                          #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 Replies Last reply
                          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
                            wrote on last edited by
                            #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 Reply Last reply
                            0
                            • P Offline
                              P Offline
                              patti72
                              wrote on last edited by 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 Reply Last reply
                              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
                                wrote on last edited by
                                #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 Reply Last reply
                                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
                                  wrote on last edited by
                                  #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 Reply Last reply
                                  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
                                    wrote on last edited by
                                    #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 Reply Last reply
                                    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
                                      wrote on last edited by
                                      #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 Reply Last reply
                                      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
                                        wrote on last edited by
                                        #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 Replies Last reply
                                        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
                                          wrote on last edited by
                                          #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 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          597

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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