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. ioBroker Allgemein
  4. Vielzahl von Aliasen schnell erstellen

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.8k

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

Vielzahl von Aliasen schnell erstellen

Scheduled Pinned Locked Moved ioBroker Allgemein
alias
21 Posts 5 Posters 2.5k Views 4 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.
  • M Offline
    M Offline
    Markus84
    wrote on last edited by
    #1

    Hallo zusammen,

    ich arbeite fast von Beginn an ausschließlich mit Aliasen, was sich absolut bewehrt hat. Ich ziehe in den nächsten Wochen in unseren Neubau und dort habe ich etwa 400 Steckdosen/Wand- und Deckenauslässe etc. die ich ungerne einzeln von Hand verknüpfen möchte.

    Gibt es eine Möglichkeit ordnerweise Aliase zu erstellen? Also z.B. alle Datenpunkte von KNX.0.Ordner_1 zu Alias.0.KNX.Ordner_1?

    Den Alias Manager Adapter habe ich ausprobiert, aber entweder verstehe ich die Funktionsweise nicht oder er ist für diese Funktion nicht vorgesehen...

    A liv-in-skyL paul53P 4 Replies Last reply
    0
    • M Markus84

      Hallo zusammen,

      ich arbeite fast von Beginn an ausschließlich mit Aliasen, was sich absolut bewehrt hat. Ich ziehe in den nächsten Wochen in unseren Neubau und dort habe ich etwa 400 Steckdosen/Wand- und Deckenauslässe etc. die ich ungerne einzeln von Hand verknüpfen möchte.

      Gibt es eine Möglichkeit ordnerweise Aliase zu erstellen? Also z.B. alle Datenpunkte von KNX.0.Ordner_1 zu Alias.0.KNX.Ordner_1?

      Den Alias Manager Adapter habe ich ausprobiert, aber entweder verstehe ich die Funktionsweise nicht oder er ist für diese Funktion nicht vorgesehen...

      A Offline
      A Offline
      Ahnungsbefreit
      wrote on last edited by
      #2

      @markus84 Um's kurz zu machen: Nein. Der Alias-Manager Adapter ist schon eine enorme Erleichterung, aber nicht für Deinen Einsatzzweck.

      Wenn meine Antwort hilfreich war, dürft Ihr das gerne durch einen "Upvote" (der kleine "^" unten rechts) zum Ausdruck bringen.

      1 Reply Last reply
      0
      • M Markus84

        Hallo zusammen,

        ich arbeite fast von Beginn an ausschließlich mit Aliasen, was sich absolut bewehrt hat. Ich ziehe in den nächsten Wochen in unseren Neubau und dort habe ich etwa 400 Steckdosen/Wand- und Deckenauslässe etc. die ich ungerne einzeln von Hand verknüpfen möchte.

        Gibt es eine Möglichkeit ordnerweise Aliase zu erstellen? Also z.B. alle Datenpunkte von KNX.0.Ordner_1 zu Alias.0.KNX.Ordner_1?

        Den Alias Manager Adapter habe ich ausprobiert, aber entweder verstehe ich die Funktionsweise nicht oder er ist für diese Funktion nicht vorgesehen...

        liv-in-skyL Offline
        liv-in-skyL Offline
        liv-in-sky
        wrote on last edited by
        #3

        @markus84 es gibt ein script, welches aliase anlegt - da müßte man halt eine schleife machen und in dieser schleife werden dann die aliase erzeugt

        nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

        M 1 Reply Last reply
        0
        • liv-in-skyL liv-in-sky

          @markus84 es gibt ein script, welches aliase anlegt - da müßte man halt eine schleife machen und in dieser schleife werden dann die aliase erzeugt

          M Offline
          M Offline
          Markus84
          wrote on last edited by
          #4

          @liv-in-sky said in Vielzahl von Aliasen schnell erstellen:

          @markus84 es gibt ein script, welches aliase anlegt - da müßte man halt eine schleife machen und in dieser schleife werden dann die aliase erzeugt

          Ich nutze immer dieses Skript hier: https://forum.iobroker.net/topic/27295/vorlage-alias-per-skript-erzeugen

          Leider übersteigt es meine Kenntnisse hier eine Schleife einzubauen.

          Wenn sich der ursprüngliche Datenpunkt ändern sollte, also z.B. von true/false auf eine Zahl, ändert sich dann eigentlich ein angelegter Alias automatisch mit (natürlich nur wenn man keine Konvertierung eingebaut hat beim Anlegen des Alias)?

          liv-in-skyL 2 Replies Last reply
          0
          • M Markus84

            Hallo zusammen,

            ich arbeite fast von Beginn an ausschließlich mit Aliasen, was sich absolut bewehrt hat. Ich ziehe in den nächsten Wochen in unseren Neubau und dort habe ich etwa 400 Steckdosen/Wand- und Deckenauslässe etc. die ich ungerne einzeln von Hand verknüpfen möchte.

            Gibt es eine Möglichkeit ordnerweise Aliase zu erstellen? Also z.B. alle Datenpunkte von KNX.0.Ordner_1 zu Alias.0.KNX.Ordner_1?

            Den Alias Manager Adapter habe ich ausprobiert, aber entweder verstehe ich die Funktionsweise nicht oder er ist für diese Funktion nicht vorgesehen...

            liv-in-skyL Offline
            liv-in-skyL Offline
            liv-in-sky
            wrote on last edited by liv-in-sky
            #5

            @markus84

            hier das script - MUSS ABER NOCH FÜR DICH ANGEGLICHEN WERDEN

            es wird zum test nur ein ordenr mit allen unter-dp als alias angelegt - bei mir im sonoff adapter

            Image 2.png

            /**************************************************************
            Github - https://github.com/xCruziX/ioBroker-Creating-Alias/blob/master/CreateAlias.js
               			Changelog
            Version 1.1.4
            - fix error by using bCreateAliasPath and bConvertExistingPath (has no target 9/Error creating alias-path)
            **************************************************************/
            
            /**************************************
               	Flags /
               	Variablen
            ***************************************/
            
            // typeAlias = 'boolean'; // oder 'number'
            // read = "val == 'Ein' ? true : false"; // Erkennung "Aus" --> false erfolgt automatisch  
            // write = "val ? 'Ein' : 'Aus'";
            // nameAlias = 'Licht Haustür';
            // role = 'switch';
            // desc = 'per Script erstellt';
            // 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)
            
            
            let bCreateAliasPath = true;  // If this flag is true, each folder is created seperately so rooms and functions can be assigned.
            
            /*
            Requirements: bCreateAliasPath == true
            If this flag is true, existing folders in the path will be converted so rooms and functions can be assigned.
            */
            let bConvertExistingPath = true;
            
            /***************************************
               	Don't change anything from here /
               	Ab hier nichts verändern
            ***************************************/
            
            let arEnum = [];
            let arId = [];
            let timeoutAssignEnum;
            var callbackAlias = undefined;
            function createAlias(idSrc, idDst,raum, gewerk,typeAlias, read, write, nameAlias, role, desc, min, max, unit, states) {
             if(!idDst.includes('alias.0.'))
                 idDst = 'alias.0.' + idDst;
             if(!existsObject(idSrc))
             {
                 log('Source-Id ' + idSrc +' does not exists.','warn');
                 return;
             }
             
             // Create the object Path for alias id, 
             // so you can assign rooms and function to the parents
             var createAliasPath = (id) => {
                  if(bCreateAliasPath){
                       let lisMergedIds = [];
                       let mergedId = 'alias.0';
                       id = id.replace(mergedId + '.', ''); // Remove prefix alias so it will not be changed
                       let split = id.split('.'); 
                       for(let i=0;i<split.length-1;i++){
                           mergedId += '.' + split[i];
                           lisMergedIds.push(mergedId);
                       }
                       
                       function path(){
                           if(lisMergedIds.length == 0) {
                               alias();
                               return;
                           }
                           let tmpId = lisMergedIds[0];
                           lisMergedIds.splice(0,1); // remove element
                           if(!existsObject(tmpId) || bConvertExistingPath){ // not exists
                               let obj;
                               if(existsObject(tmpId))
                                   obj = getObject(tmpId);
                               else
                                   obj = {};
            
                               let bApply = false;
                               if(obj != undefined){
                                   if(obj.type == undefined || String(obj.type) != 'meta'){
                                       obj.type = 'meta';
                                       bApply = true;
                                   }
                                   if(obj.common == undefined){
                                       obj.common = {};
                                       obj.common.type = 'meta.folder';
                                       bApply = true;
                                   }
                                   else if(obj.common.type == undefined || String(obj.common.type) != 'meta.folder'){
                                       obj.common.type = 'meta.folder';
                                       bApply = true;
                                   }
                                   if(obj.native == undefined){
                                       obj.native = {};
                                       bApply = true;
                                   }
                               }
                               else{
                                   path();
                                   log('Object is undefined');
                                   return;
                               }
                               
            
                               if(bApply){
                                   setObject(tmpId, obj, (err) =>{
                                   if(!err){
                                       log('Created Alias-Path ' + tmpId);
                                       path();
                                   }
                                   else
                                       log('Error creating alias-path','error');
                               });
                               }
                               else
                                   path();
                               
                           }
                       }
                       path();
                  }
                  else
                    alias();
             }
             
             
             function alias(){
                 // Create alias object
                 
                   if(!existsObject(idDst)){
                       let obj = {};
                       obj.type = 'state';
                       obj.common = getObject(idSrc).common;
                       obj.common.alias = {};
                       obj.common.alias.id = idSrc;
                       if(typeAlias !== undefined) 
                           obj.common.type = typeAlias;
                       if(obj.common.read !== undefined) 
                           obj.common.alias.read = read;
                       if(obj.common.write !== undefined) 
                           obj.common.alias.write = write;
                       if(nameAlias !== undefined) 
                           obj.common.name = nameAlias;
                       if(role !== undefined) 
                           obj.common.role = role;
                       if(desc !== undefined) 
                           obj.common.desc = desc;
                       if(min !== undefined) 
                           obj.common.min = min;
                       if(max !== undefined) 
                           obj.common.max = max;
                       if(unit !== undefined) 
                           obj.common.unit = unit;
                       if(states !== undefined) 
                           obj.common.states = states;
            
                       obj.native = {};
                       obj.common.custom = []; // Damit die Zuordnung zu iQontrol, Sql etc. nicht übernommen wird
                       log('Created Alias-State ' + idDst);
                       setObject(idDst, obj,(err) =>{ 
                           if(!err)
                               startAttach(); 
                           else
                               log('Error creating-alias','error');
                       });
                   }
                   else
                       startAttach();
             }
             
             
             // Save ID and Enum (room or function)
             var attach = (id, enu,value) => {
                 if(id.length == 0){
                     log('ID has lenght 0, can not attach to enum','warn');
                     return;
                 }
                 if(value.length == 0){
                     log('Value has lenght 0','warn');
                     return;
                 }
               
                 let sEnuId = 'enum.' + enu + '.' + value;
                 if(enu.length > 0 && existsObject(sEnuId)) 
                 {
                     let obj = getObject(sEnuId)
                     let members = obj.common.members;
                     if(!members.includes(id)){
                         arEnum.push(sEnuId);
                         arId.push(id);
                     }
                 }
                 else
              	      log('Can not find enum ' + sEnuId,'warn');
             }
            
            function startAttach(){
               let bRoom = raum !== undefined && raum.length > 0;
               let bGewerk = gewerk !== undefined && gewerk.length > 0;
               
               if(bRoom)
                   attach(idDst,'rooms',raum);
               if(bGewerk)
                   attach(idDst,'functions',gewerk);
               if(bRoom || bGewerk){
                       if(timeoutAssignEnum){
                           clearTimeout(timeoutAssignEnum);
                           timeoutAssignEnum = null;
                       }
                       timeoutAssignEnum = setTimeout(finishScript,100);
               }
            }
            
             createAliasPath(idDst);
            }
            
            function finishScript(){
               assignEnums();
            }
            
            // Add the saved IDs to the rooms/functions
            function assignEnums(){
            if(arEnum.length == 0 || arId.length == 0){
                 return;
            }
            
            if(arEnum.length != arId.length){
                 log('Arrays have different size','error');
                 return;
            }
            let mapEnumId = new Map();
            
            for(let i=0;i < arEnum.length; i++){
                let enu = arEnum[i];
                let id = arId[i];
                if(existsObject(id)){
               	 let obj = getObject(enu)
               	 let members;
               	 if(!mapEnumId.has(enu)){
               		 members = obj.common.members;
               		 mapEnumId.set(enu,members);
               	 }
               	 else
               		 members = mapEnumId.get(enu);    
               	 if(!members.includes(id)){
               		  log("Adding " + id + " to " + enu);
               		  members.push(id);
               	 }	      
                }
                else
                    log('Can not find Alias ' + id,'error');
            }
             
             function setMembers(members,enu,map){
                 let obj = getObject(enu);
                 obj.common.members = members;
                 setObject(enu,obj);
             }
             mapEnumId.forEach(setMembers);
            }
            
            //createAlias('sonoff.0.USBSwitch9.POWER', 'Zimmer.Desk.Luefter.Smoke',undefined, undefined, 'bool', undefined, undefined, 'Zimmer-Desk-Luefter-Smoke', undefined, 'per Script erstellt', undefined, undefined, undefined, undefined)
            
            $('sonoff.1.FontaHomeDose1.*').each(function(id, i) { 
            let nameAlias=id.replace("sonoff.1.",""); nameAlias=nameAlias.replace(".","-"); 
            //log(id.replace("sonoff.1.","Sonoff-"))
            createAlias(id,id.replace("sonoff.1.","Sonoff-Decices.Sonoff-"),undefined, undefined, typeof getState(id).val, undefined, undefined,nameAlias, undefined, 'per Script erstellt', undefined, undefined, undefined, undefined)
            
            });
            
            
            
            
            
            
            
            
            
            
            

            ab zeile 264 ist wichtig

            nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

            M 1 Reply Last reply
            2
            • M Markus84

              @liv-in-sky said in Vielzahl von Aliasen schnell erstellen:

              @markus84 es gibt ein script, welches aliase anlegt - da müßte man halt eine schleife machen und in dieser schleife werden dann die aliase erzeugt

              Ich nutze immer dieses Skript hier: https://forum.iobroker.net/topic/27295/vorlage-alias-per-skript-erzeugen

              Leider übersteigt es meine Kenntnisse hier eine Schleife einzubauen.

              Wenn sich der ursprüngliche Datenpunkt ändern sollte, also z.B. von true/false auf eine Zahl, ändert sich dann eigentlich ein angelegter Alias automatisch mit (natürlich nur wenn man keine Konvertierung eingebaut hat beim Anlegen des Alias)?

              liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              wrote on last edited by
              #6

              @markus84 sagte in Vielzahl von Aliasen schnell erstellen:

              Wenn sich der ursprüngliche Datenpunkt ändern sollte, also z.B. von true/false auf eine Zahl, ändert sich dann eigentlich ein angelegter Alias automatisch mit (natürlich nur wenn man keine Konvertierung eingebaut hat beim Anlegen des Alias)?

              habe ich noch nicht getestet, da man true false in boolean-dp schreibt und eine zahl in number-dp - sollte do nicht unbedingt verwendet werden

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              1 Reply Last reply
              0
              • M Markus84

                @liv-in-sky said in Vielzahl von Aliasen schnell erstellen:

                @markus84 es gibt ein script, welches aliase anlegt - da müßte man halt eine schleife machen und in dieser schleife werden dann die aliase erzeugt

                Ich nutze immer dieses Skript hier: https://forum.iobroker.net/topic/27295/vorlage-alias-per-skript-erzeugen

                Leider übersteigt es meine Kenntnisse hier eine Schleife einzubauen.

                Wenn sich der ursprüngliche Datenpunkt ändern sollte, also z.B. von true/false auf eine Zahl, ändert sich dann eigentlich ein angelegter Alias automatisch mit (natürlich nur wenn man keine Konvertierung eingebaut hat beim Anlegen des Alias)?

                liv-in-skyL Offline
                liv-in-skyL Offline
                liv-in-sky
                wrote on last edited by
                #7

                @markus84

                $('sonoff.1.FontaHomeDose1.*').each(function(id, i) { 
                let nameAlias=id.replace("sonoff.1.",""); nameAlias=nameAlias.replace(".","-"); 
                //log(id.replace("sonoff.1.","Sonoff-"))
                createAlias(id,id.replace("sonoff.1.","Sonoff-Decices.Sonoff-"),undefined, undefined, typeof getState(id).val, undefined, undefined,nameAlias, undefined, 'per Script erstellt', undefined, undefined, undefined, undefined)
                
                 });
                

                das ist die schleife

                teste erst mal mit einem device - nach test kannst du dann in der ersten zeile die schleife ändern

                nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                1 Reply Last reply
                0
                • liv-in-skyL liv-in-sky

                  @markus84

                  hier das script - MUSS ABER NOCH FÜR DICH ANGEGLICHEN WERDEN

                  es wird zum test nur ein ordenr mit allen unter-dp als alias angelegt - bei mir im sonoff adapter

                  Image 2.png

                  /**************************************************************
                  Github - https://github.com/xCruziX/ioBroker-Creating-Alias/blob/master/CreateAlias.js
                     			Changelog
                  Version 1.1.4
                  - fix error by using bCreateAliasPath and bConvertExistingPath (has no target 9/Error creating alias-path)
                  **************************************************************/
                  
                  /**************************************
                     	Flags /
                     	Variablen
                  ***************************************/
                  
                  // typeAlias = 'boolean'; // oder 'number'
                  // read = "val == 'Ein' ? true : false"; // Erkennung "Aus" --> false erfolgt automatisch  
                  // write = "val ? 'Ein' : 'Aus'";
                  // nameAlias = 'Licht Haustür';
                  // role = 'switch';
                  // desc = 'per Script erstellt';
                  // 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)
                  
                  
                  let bCreateAliasPath = true;  // If this flag is true, each folder is created seperately so rooms and functions can be assigned.
                  
                  /*
                  Requirements: bCreateAliasPath == true
                  If this flag is true, existing folders in the path will be converted so rooms and functions can be assigned.
                  */
                  let bConvertExistingPath = true;
                  
                  /***************************************
                     	Don't change anything from here /
                     	Ab hier nichts verändern
                  ***************************************/
                  
                  let arEnum = [];
                  let arId = [];
                  let timeoutAssignEnum;
                  var callbackAlias = undefined;
                  function createAlias(idSrc, idDst,raum, gewerk,typeAlias, read, write, nameAlias, role, desc, min, max, unit, states) {
                   if(!idDst.includes('alias.0.'))
                       idDst = 'alias.0.' + idDst;
                   if(!existsObject(idSrc))
                   {
                       log('Source-Id ' + idSrc +' does not exists.','warn');
                       return;
                   }
                   
                   // Create the object Path for alias id, 
                   // so you can assign rooms and function to the parents
                   var createAliasPath = (id) => {
                        if(bCreateAliasPath){
                             let lisMergedIds = [];
                             let mergedId = 'alias.0';
                             id = id.replace(mergedId + '.', ''); // Remove prefix alias so it will not be changed
                             let split = id.split('.'); 
                             for(let i=0;i<split.length-1;i++){
                                 mergedId += '.' + split[i];
                                 lisMergedIds.push(mergedId);
                             }
                             
                             function path(){
                                 if(lisMergedIds.length == 0) {
                                     alias();
                                     return;
                                 }
                                 let tmpId = lisMergedIds[0];
                                 lisMergedIds.splice(0,1); // remove element
                                 if(!existsObject(tmpId) || bConvertExistingPath){ // not exists
                                     let obj;
                                     if(existsObject(tmpId))
                                         obj = getObject(tmpId);
                                     else
                                         obj = {};
                  
                                     let bApply = false;
                                     if(obj != undefined){
                                         if(obj.type == undefined || String(obj.type) != 'meta'){
                                             obj.type = 'meta';
                                             bApply = true;
                                         }
                                         if(obj.common == undefined){
                                             obj.common = {};
                                             obj.common.type = 'meta.folder';
                                             bApply = true;
                                         }
                                         else if(obj.common.type == undefined || String(obj.common.type) != 'meta.folder'){
                                             obj.common.type = 'meta.folder';
                                             bApply = true;
                                         }
                                         if(obj.native == undefined){
                                             obj.native = {};
                                             bApply = true;
                                         }
                                     }
                                     else{
                                         path();
                                         log('Object is undefined');
                                         return;
                                     }
                                     
                  
                                     if(bApply){
                                         setObject(tmpId, obj, (err) =>{
                                         if(!err){
                                             log('Created Alias-Path ' + tmpId);
                                             path();
                                         }
                                         else
                                             log('Error creating alias-path','error');
                                     });
                                     }
                                     else
                                         path();
                                     
                                 }
                             }
                             path();
                        }
                        else
                          alias();
                   }
                   
                   
                   function alias(){
                       // Create alias object
                       
                         if(!existsObject(idDst)){
                             let obj = {};
                             obj.type = 'state';
                             obj.common = getObject(idSrc).common;
                             obj.common.alias = {};
                             obj.common.alias.id = idSrc;
                             if(typeAlias !== undefined) 
                                 obj.common.type = typeAlias;
                             if(obj.common.read !== undefined) 
                                 obj.common.alias.read = read;
                             if(obj.common.write !== undefined) 
                                 obj.common.alias.write = write;
                             if(nameAlias !== undefined) 
                                 obj.common.name = nameAlias;
                             if(role !== undefined) 
                                 obj.common.role = role;
                             if(desc !== undefined) 
                                 obj.common.desc = desc;
                             if(min !== undefined) 
                                 obj.common.min = min;
                             if(max !== undefined) 
                                 obj.common.max = max;
                             if(unit !== undefined) 
                                 obj.common.unit = unit;
                             if(states !== undefined) 
                                 obj.common.states = states;
                  
                             obj.native = {};
                             obj.common.custom = []; // Damit die Zuordnung zu iQontrol, Sql etc. nicht übernommen wird
                             log('Created Alias-State ' + idDst);
                             setObject(idDst, obj,(err) =>{ 
                                 if(!err)
                                     startAttach(); 
                                 else
                                     log('Error creating-alias','error');
                             });
                         }
                         else
                             startAttach();
                   }
                   
                   
                   // Save ID and Enum (room or function)
                   var attach = (id, enu,value) => {
                       if(id.length == 0){
                           log('ID has lenght 0, can not attach to enum','warn');
                           return;
                       }
                       if(value.length == 0){
                           log('Value has lenght 0','warn');
                           return;
                       }
                     
                       let sEnuId = 'enum.' + enu + '.' + value;
                       if(enu.length > 0 && existsObject(sEnuId)) 
                       {
                           let obj = getObject(sEnuId)
                           let members = obj.common.members;
                           if(!members.includes(id)){
                               arEnum.push(sEnuId);
                               arId.push(id);
                           }
                       }
                       else
                    	      log('Can not find enum ' + sEnuId,'warn');
                   }
                  
                  function startAttach(){
                     let bRoom = raum !== undefined && raum.length > 0;
                     let bGewerk = gewerk !== undefined && gewerk.length > 0;
                     
                     if(bRoom)
                         attach(idDst,'rooms',raum);
                     if(bGewerk)
                         attach(idDst,'functions',gewerk);
                     if(bRoom || bGewerk){
                             if(timeoutAssignEnum){
                                 clearTimeout(timeoutAssignEnum);
                                 timeoutAssignEnum = null;
                             }
                             timeoutAssignEnum = setTimeout(finishScript,100);
                     }
                  }
                  
                   createAliasPath(idDst);
                  }
                  
                  function finishScript(){
                     assignEnums();
                  }
                  
                  // Add the saved IDs to the rooms/functions
                  function assignEnums(){
                  if(arEnum.length == 0 || arId.length == 0){
                       return;
                  }
                  
                  if(arEnum.length != arId.length){
                       log('Arrays have different size','error');
                       return;
                  }
                  let mapEnumId = new Map();
                  
                  for(let i=0;i < arEnum.length; i++){
                      let enu = arEnum[i];
                      let id = arId[i];
                      if(existsObject(id)){
                     	 let obj = getObject(enu)
                     	 let members;
                     	 if(!mapEnumId.has(enu)){
                     		 members = obj.common.members;
                     		 mapEnumId.set(enu,members);
                     	 }
                     	 else
                     		 members = mapEnumId.get(enu);    
                     	 if(!members.includes(id)){
                     		  log("Adding " + id + " to " + enu);
                     		  members.push(id);
                     	 }	      
                      }
                      else
                          log('Can not find Alias ' + id,'error');
                  }
                   
                   function setMembers(members,enu,map){
                       let obj = getObject(enu);
                       obj.common.members = members;
                       setObject(enu,obj);
                   }
                   mapEnumId.forEach(setMembers);
                  }
                  
                  //createAlias('sonoff.0.USBSwitch9.POWER', 'Zimmer.Desk.Luefter.Smoke',undefined, undefined, 'bool', undefined, undefined, 'Zimmer-Desk-Luefter-Smoke', undefined, 'per Script erstellt', undefined, undefined, undefined, undefined)
                  
                  $('sonoff.1.FontaHomeDose1.*').each(function(id, i) { 
                  let nameAlias=id.replace("sonoff.1.",""); nameAlias=nameAlias.replace(".","-"); 
                  //log(id.replace("sonoff.1.","Sonoff-"))
                  createAlias(id,id.replace("sonoff.1.","Sonoff-Decices.Sonoff-"),undefined, undefined, typeof getState(id).val, undefined, undefined,nameAlias, undefined, 'per Script erstellt', undefined, undefined, undefined, undefined)
                  
                  });
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  

                  ab zeile 264 ist wichtig

                  M Offline
                  M Offline
                  Markus84
                  wrote on last edited by
                  #8

                  @liv-in-sky Erst einmal besten Dank! Hast du zufällig irgendwo eine Erklärung dazu?

                  Ich vermute in Zeile 264 muss ich den ursprünglichen Ordner auswählen?
                  In Zeile 265 wird ein Zeichen ersetzt, richtig? Wofür brauche ich das?
                  Zeile 266 verstehe ich leider überhaupt nicht...
                  Und Zeile 267 legt den neuen Ordnernamen unter alias.0. fest?

                  liv-in-skyL 2 Replies Last reply
                  0
                  • M Markus84

                    @liv-in-sky Erst einmal besten Dank! Hast du zufällig irgendwo eine Erklärung dazu?

                    Ich vermute in Zeile 264 muss ich den ursprünglichen Ordner auswählen?
                    In Zeile 265 wird ein Zeichen ersetzt, richtig? Wofür brauche ich das?
                    Zeile 266 verstehe ich leider überhaupt nicht...
                    Und Zeile 267 legt den neuen Ordnernamen unter alias.0. fest?

                    liv-in-skyL Offline
                    liv-in-skyL Offline
                    liv-in-sky
                    wrote on last edited by liv-in-sky
                    #9

                    @markus84

                    • 264 - ist die schleife - in meinem beispiel scanne ich nur ein device - fontahomeedose - mit allen unterordner und dp
                    • 265 - ja - da werden zeichen ersetzt, da ich keine punkte gebrauchen kann
                    • 266 - ist ein log - aber deaktiviert - daher nicht ausgeführt - brauchte ich zum testen (heißt debug in blockly)
                    • 267 -ja

                    nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                    liv-in-skyL 1 Reply Last reply
                    0
                    • liv-in-skyL liv-in-sky

                      @markus84

                      • 264 - ist die schleife - in meinem beispiel scanne ich nur ein device - fontahomeedose - mit allen unterordner und dp
                      • 265 - ja - da werden zeichen ersetzt, da ich keine punkte gebrauchen kann
                      • 266 - ist ein log - aber deaktiviert - daher nicht ausgeführt - brauchte ich zum testen (heißt debug in blockly)
                      • 267 -ja
                      liv-in-skyL Offline
                      liv-in-skyL Offline
                      liv-in-sky
                      wrote on last edited by liv-in-sky
                      #10

                      @markus84 poste die schleife hier im thread, bevor du testest - dann schauen wir uns das nochmal an

                      nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                      1 Reply Last reply
                      0
                      • M Markus84

                        @liv-in-sky Erst einmal besten Dank! Hast du zufällig irgendwo eine Erklärung dazu?

                        Ich vermute in Zeile 264 muss ich den ursprünglichen Ordner auswählen?
                        In Zeile 265 wird ein Zeichen ersetzt, richtig? Wofür brauche ich das?
                        Zeile 266 verstehe ich leider überhaupt nicht...
                        Und Zeile 267 legt den neuen Ordnernamen unter alias.0. fest?

                        liv-in-skyL Offline
                        liv-in-skyL Offline
                        liv-in-sky
                        wrote on last edited by
                        #11

                        @markus84

                        das script sollte nur einmal aktiviert werden - dann legt es alles an - anschliessend deaktiviere das script, sonnst werden die aliase immer bei jeden neustart angelegt - macht zwar nix kaputt - aber erzeugt fehlermeldungen, da sis ja schon exisitieren

                        das ist ein "sonderscript", da es nur einmal laufen muss - bei standard script's ist das anders - die sind immer aktiviert

                        du kanst auch jederzeit deine aliase löschen und nochmal machen, wenn dir was nicht gefällt - natürlich bevor du sie in scripte oder vis einbindest

                        nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                        M 1 Reply Last reply
                        0
                        • M Markus84

                          Hallo zusammen,

                          ich arbeite fast von Beginn an ausschließlich mit Aliasen, was sich absolut bewehrt hat. Ich ziehe in den nächsten Wochen in unseren Neubau und dort habe ich etwa 400 Steckdosen/Wand- und Deckenauslässe etc. die ich ungerne einzeln von Hand verknüpfen möchte.

                          Gibt es eine Möglichkeit ordnerweise Aliase zu erstellen? Also z.B. alle Datenpunkte von KNX.0.Ordner_1 zu Alias.0.KNX.Ordner_1?

                          Den Alias Manager Adapter habe ich ausprobiert, aber entweder verstehe ich die Funktionsweise nicht oder er ist für diese Funktion nicht vorgesehen...

                          paul53P Offline
                          paul53P Offline
                          paul53
                          wrote on last edited by paul53
                          #12

                          @markus84 sagte: Gibt es eine Möglichkeit ordnerweise Aliase zu erstellen?

                          Das wäre Ressourcenverschwendung. Aliase sollten nur zu den Datenpunkten erstellt werden, die in einer Visualisierung oder in einer Logik (Skript) verwendet werden. Das geht nicht automatisch.

                          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

                          liv-in-skyL 1 Reply Last reply
                          0
                          • paul53P paul53

                            @markus84 sagte: Gibt es eine Möglichkeit ordnerweise Aliase zu erstellen?

                            Das wäre Ressourcenverschwendung. Aliase sollten nur zu den Datenpunkten erstellt werden, die in einer Visualisierung oder in einer Logik (Skript) verwendet werden. Das geht nicht automatisch.

                            liv-in-skyL Offline
                            liv-in-skyL Offline
                            liv-in-sky
                            wrote on last edited by
                            #13

                            @paul53

                            da stimme ich zu - man könnte aber bestimmte datenpunkte bestimmen - also eine liste machen, mit dp, von denen man das haben will - das spart einiges

                            nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                            M da_WoodyD 2 Replies Last reply
                            0
                            • liv-in-skyL liv-in-sky

                              @markus84

                              das script sollte nur einmal aktiviert werden - dann legt es alles an - anschliessend deaktiviere das script, sonnst werden die aliase immer bei jeden neustart angelegt - macht zwar nix kaputt - aber erzeugt fehlermeldungen, da sis ja schon exisitieren

                              das ist ein "sonderscript", da es nur einmal laufen muss - bei standard script's ist das anders - die sind immer aktiviert

                              du kanst auch jederzeit deine aliase löschen und nochmal machen, wenn dir was nicht gefällt - natürlich bevor du sie in scripte oder vis einbindest

                              M Offline
                              M Offline
                              Markus84
                              wrote on last edited by
                              #14

                              @liv-in-sky Danke, ich probiere es später aus und melde mich nochmal. Echt top, dass du so viel geholfen hast!

                              @paul53 said in Vielzahl von Aliasen schnell erstellen:

                              @markus84 sagte: Gibt es eine Möglichkeit ordnerweise Aliase zu erstellen?

                              Das wäre Ressourcenverschwendung. Aliase sollten nur zu den Datenpunkten erstellt werden, die in einer Visualisierung oder in einer Logik (Skript) verwendet werden. Das geht nicht automatisch.

                              Naja, ich habe schon vor die Datenpunkte alle in Skripten und/oder in der Vis zu nutzen. Und wenn es nur in einer alles aus Logik ist...

                              A 1 Reply Last reply
                              0
                              • M Markus84

                                @liv-in-sky Danke, ich probiere es später aus und melde mich nochmal. Echt top, dass du so viel geholfen hast!

                                @paul53 said in Vielzahl von Aliasen schnell erstellen:

                                @markus84 sagte: Gibt es eine Möglichkeit ordnerweise Aliase zu erstellen?

                                Das wäre Ressourcenverschwendung. Aliase sollten nur zu den Datenpunkten erstellt werden, die in einer Visualisierung oder in einer Logik (Skript) verwendet werden. Das geht nicht automatisch.

                                Naja, ich habe schon vor die Datenpunkte alle in Skripten und/oder in der Vis zu nutzen. Und wenn es nur in einer alles aus Logik ist...

                                A Offline
                                A Offline
                                Ahnungsbefreit
                                wrote on last edited by
                                #15

                                @markus84 Das ist doch mal wieder die tolle ioBroker Community: Es gibt keine Lösung "out of the box", wie ich oben schon geschrieben habe, und trotzdem hast Du ruck-zuck Hilfe mit einem genau auf Deinen Fall zugeschnittenen Script!

                                Ohne Leute wie @liv-in-sky und @paul53 wäre das nicht möglich, danke!

                                Wenn meine Antwort hilfreich war, dürft Ihr das gerne durch einen "Upvote" (der kleine "^" unten rechts) zum Ausdruck bringen.

                                1 Reply Last reply
                                3
                                • liv-in-skyL liv-in-sky

                                  @paul53

                                  da stimme ich zu - man könnte aber bestimmte datenpunkte bestimmen - also eine liste machen, mit dp, von denen man das haben will - das spart einiges

                                  M Offline
                                  M Offline
                                  Markus84
                                  wrote on last edited by
                                  #16

                                  @liv-in-sky Ich bin leider erst jetzt zum Testen gekommen. Es funktioniert perfekt! Vielen Dank nochmal!

                                  1 Reply Last reply
                                  0
                                  • liv-in-skyL liv-in-sky

                                    @paul53

                                    da stimme ich zu - man könnte aber bestimmte datenpunkte bestimmen - also eine liste machen, mit dp, von denen man das haben will - das spart einiges

                                    da_WoodyD Offline
                                    da_WoodyD Offline
                                    da_Woody
                                    wrote on last edited by
                                    #17

                                    @liv-in-sky diese liste müsstest du aber für jedes gerät ändern! alleine wenn ich mir z.b. fronius, oder grünbeck anschaue, sind da jede menge DP drinnen, die eigentlich gar nicht benützt werden, da es auf die anlage ankommt.
                                    ergo ist das mehr als recourcenverschwendung. auch bei jedem anderen gerät gibts DPs wo mir keiner sagen kann, daß er sie eventuell mal in einem script verwenden wird. und wenn, dann kann man diesen alias einfach schnell erstellen.
                                    ich weis, es ist verdammt viel arbeit, die aber durch den alias-manager schon mehr als easy geworden ist. ich hab voriges jahr noch für ca 60 devices alles benötigte die alias mit @paul53 's script mühevoll angelegt.
                                    IMHO geht der vorteil von alias durch so eine aktion mehr als verloren, weil auch die übersichtlichkeit wieder verloren geht.
                                    von raum und ebenen, sontigen zuordnungen ganz zu schweigen...
                                    just my 2 €...

                                    gruß vom Woody
                                    HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                                    liv-in-skyL 1 Reply Last reply
                                    0
                                    • da_WoodyD da_Woody

                                      @liv-in-sky diese liste müsstest du aber für jedes gerät ändern! alleine wenn ich mir z.b. fronius, oder grünbeck anschaue, sind da jede menge DP drinnen, die eigentlich gar nicht benützt werden, da es auf die anlage ankommt.
                                      ergo ist das mehr als recourcenverschwendung. auch bei jedem anderen gerät gibts DPs wo mir keiner sagen kann, daß er sie eventuell mal in einem script verwenden wird. und wenn, dann kann man diesen alias einfach schnell erstellen.
                                      ich weis, es ist verdammt viel arbeit, die aber durch den alias-manager schon mehr als easy geworden ist. ich hab voriges jahr noch für ca 60 devices alles benötigte die alias mit @paul53 's script mühevoll angelegt.
                                      IMHO geht der vorteil von alias durch so eine aktion mehr als verloren, weil auch die übersichtlichkeit wieder verloren geht.
                                      von raum und ebenen, sontigen zuordnungen ganz zu schweigen...
                                      just my 2 €...

                                      liv-in-skyL Offline
                                      liv-in-skyL Offline
                                      liv-in-sky
                                      wrote on last edited by liv-in-sky
                                      #18

                                      @da_woody

                                      ich hatte ja erwähnt, mit einer liste zu arbeiten - ich würde mir ein array einbauen , welche die dp beinhaltet, die ich brauche und würde dadurch die masse einschränken - meist braucht man eh nicht mehr wie 3- 5 .

                                      @Markus84 wollte aber alle haben

                                      EDIT: natürlich müßte diese liste für verschiedene adapter, verschiedene inhalte haben

                                      nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                                      da_WoodyD 1 Reply Last reply
                                      0
                                      • liv-in-skyL liv-in-sky

                                        @da_woody

                                        ich hatte ja erwähnt, mit einer liste zu arbeiten - ich würde mir ein array einbauen , welche die dp beinhaltet, die ich brauche und würde dadurch die masse einschränken - meist braucht man eh nicht mehr wie 3- 5 .

                                        @Markus84 wollte aber alle haben

                                        EDIT: natürlich müßte diese liste für verschiedene adapter, verschiedene inhalte haben

                                        da_WoodyD Offline
                                        da_WoodyD Offline
                                        da_Woody
                                        wrote on last edited by
                                        #19

                                        @liv-in-sky yes, i know. war nicht gegen deine idea, aber schwer bei dem thema dem richtigen zu antworten. hats halt dich erwischt... 😉
                                        hrnz, du elender editierer du! fish.gif
                                        genau das meinte ich ja! da verbrauchst du mehr zeit für die listen/arrays erstellen, als es vorteile bringt.
                                        allein bei tasmota. ist das ding ein switch, hängen sensoren dran, u.s.w.
                                        shellys, jedes teil bringt andere DPs mit.

                                        gruß vom Woody
                                        HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                                        liv-in-skyL 1 Reply Last reply
                                        0
                                        • da_WoodyD da_Woody

                                          @liv-in-sky yes, i know. war nicht gegen deine idea, aber schwer bei dem thema dem richtigen zu antworten. hats halt dich erwischt... 😉
                                          hrnz, du elender editierer du! fish.gif
                                          genau das meinte ich ja! da verbrauchst du mehr zeit für die listen/arrays erstellen, als es vorteile bringt.
                                          allein bei tasmota. ist das ding ein switch, hängen sensoren dran, u.s.w.
                                          shellys, jedes teil bringt andere DPs mit.

                                          liv-in-skyL Offline
                                          liv-in-skyL Offline
                                          liv-in-sky
                                          wrote on last edited by
                                          #20

                                          @da_woody

                                          das kommt auf die anzahl der devices an -

                                          ein liste mit 5 inhalten ist in 15 sek gemacht - bei 400 devices lohnt sich das

                                          bei 400 geräten ist es auch schwierig noch mit räumen und stockwerken bei der aliaserstellung zu arbeiten - da macht das schon sinn, so einn script zu nutzen

                                          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                                          da_WoodyD 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
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          634

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          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