Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Alias aus Liste erstellen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    987

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Alias aus Liste erstellen

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
17 Beiträge 6 Kommentatoren 1.1k Aufrufe 7 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • K Kuddel

    Hallo zusammen,

    meine Alias erstelle ich aktuell per Skript, welches ich mir hier aus dem Forum kopiert habe.
    Bei einer neuen Erstellung eines Alias, muss ich dann immer die Daten wie Raum, Name und original DP eingeben.

    Skript:

    // Original Datenpunkt, der im Alias verwendet werden soll
    // Beispiel: fritzdect.0.DECT200_087610209660.temp, sonoff.0.SD_KZ_Lichterkette.POWER
    const original_datenpunkt = 'shelly.0.SHSW-25#C45BBE755073#1.Shutter.Open'
    
    // Alias Typ Definitionen
    // Schalter =     .STATE
    // Steckdosen =   .SET
    // Leistung =     .POWER
    // Verbrauch =    .POWER_SUM
    // Sensoren =     .ACTUAL
    // Temepraturen = .TEMP
    // Helligkeit =    .BRIGHTNESS
    // Rolladen =      .Level / .Pause / .Up / .Down
    
    
    // Aliasname Besipiel
    // Steckdosen =      SD_RAUMKÜRZEL_NAME.SET
    // Leistung =        SD_RAUMKÜRZEL_NAME.POWER
    // Fenstersensor =   FS_RAUMKÜRZEL_NAME.ACTUAL
    // Heizung =         HZ_RAUMKÜRZEL_NAME.TEMP
    // Heizung Aktuell = HZ_EAUMKÜRZEL_NAME.ACTUAL
    // Lichtschalter =   LS_SD_RAUMKÜRZEL_NAME.STATE
    // Rolloaden  =      RA_SZ_Velux.Level
    const alias_name = 'RA_SZ_Front.Up';
    
    // Raumname
    // Beispiele: Buero, Flur, Garten, Kinderzimmer, Kueche, Schlafzimmer, Wohnzimmer
    const raum_name = 'Schlafzimmer';
    
    
    
    // AB HIER NICHTS MEHR ÄNDERN
    
    // Original-Datenpunkt
    const idOrigin = original_datenpunkt; 
    // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
    // Bei Nicht-Verwendung Leerstring '' zuweisen
    const idRead = '';
    
    // Alias-Datenpunkt
    const idAlias = raum_name+'.'+alias_name;
    var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
    
    // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
    nameAlias = alias_name
    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);
    
    

    Ist es möglich das Ganze auch mit Hilfe einer Liste und einer Schleife zu machen?

    Die Liste könnte dann so aussehen:

    Raum;Name;OrigDP;Gewerk

    Ich komme aus der Windows / Powershell Ecke und bin daher in Javascript noch ganz am Anfang.

    GlasfaserG Offline
    GlasfaserG Offline
    Glasfaser
    schrieb am zuletzt editiert von Glasfaser
    #2

    @kuddel

    ich nutze dieses Script :

    /**************************************************************
    Github - https://github.com/xCruziX/ioBroker-Creating-Alias/blob/master/CreateAlias.js
    				Changelog
    
    {} in Zeile 175 geändert 
    
    Version 1.1.5
    - added flag for correcting source id
    
    Version 1.1.4
    - fix error by using bCreateAliasPath and bConvertExistingPath (has no target 9/Error creating alias-path)
    
    Version 1.1.3
      - use callbacks in 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 = false;  // 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 = false;
    
    /*
    If the alias already exists and there is a difference between the new source id and the source id in the existing alias,
    the source id will be changed.
    This can be used for changing the source ids of an alias, for example for a devices change.
    */
    let bCorrectSource = false;
    
    /***************************************
    		Dont'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) {// Zu Ende erstellt
                        alias();
                        return;
                    }
                    let tmpId = lisMergedIds[0];
                    lisMergedIds.splice(0,1); // entferne 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 if(bCorrectSource){
                // Check the Source ID
                // log('Checking Sourcepath');
                let obj = getObject(idDst);
                if(obj != undefined && obj.common != undefined && obj.common.alias != undefined && obj.common.alias.id != undefined
                && obj.common.alias.id != idSrc){
                    let before = obj.common.alias.id;
                    obj.common.alias.id = idSrc;
                    setObject(idDst, obj,(err) =>{ 
                        if(!err){
                            log(idDst + ': Correcting Sourcepath from \''  + before + '\' to \'' +  idSrc + '\'');
                            startAttach(); 
                        }
                        else
                            log('Error correcting path','error');
                        });
                }
                else
                    startAttach();
            }
            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);
    }
    
    
    function createAliasWithObject({
        idSrc, 
        idDst, 
        raum = undefined, 
        gewerk = undefined, 
        typeAlias = undefined, 
        read = undefined,
        write = undefined,
        nameAlias = undefined, 
        role = undefined, 
        desc = undefined, 
        min = undefined, 
        max = undefined,
        unit = undefined, 
        states = undefined
    }) {
        createAlias(idSrc, idDst,raum, gewerk,typeAlias, read, write, nameAlias, role, desc, min, max, unit, states);
    }
    
    createAliasWithObject({
        idSrc: 'smartmeter.0.1-0:16_7_0__255.value',
        idDst: "alias.0.Strom.Smartmeter.value"
        
    });
    
    

    dort ist ganz unten eine Vorgabe , durch "function createAliasWithObject" geregelt

    createAliasWithObject({
    
        idSrc: 'smartmeter.0.1-0:16_7_0__255.value',
        idDst: "alias.0.Strom.Smartmeter.value"
      
    });
    

    jenachdem was du brauchts einfach erweitern :

    Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

    1 Antwort Letzte Antwort
    0
    • frana120500F Offline
      frana120500F Offline
      frana120500
      schrieb am zuletzt editiert von frana120500
      #3

      @Glasfaser

      Ich bin bei JS leider nicht so firm. Könntest du bitte anhand eines Beispiels zeigen wie ich den 'idDst' erweitern muss wenn ich z.b. noch 'Raum' und 'Funktion' definieren will.

      Und wie trege ich da mehrere Source-DP und Aliase ein?

      Danke dir.

      Edit: ok, die erweiterung um Rolle, Raum etc. habe ich selber hinbekommen. Aber wie kann ich denn jetzt für mehrere DP gleichzeitig einen Alias anlegen?

      1. Edit: Ok, vergiss meine Nachfrage gg Habe es durch probieren selber hinbekommen.
      createAliasWithObject({
      
          idSrc: 'hm-rpc.0.OEQ04432621.1.STATE',
      
          idDst: 'alias.0.Terrasse.Lampe',
      
          raum: 'Terrasse',
      
          idSrc: 'hm-rpc.0.OEQ12213302.1.STATE',
      
          idDst: 'alias.0.Terrasse.Dose',
      
          raum: 'Terrasse'
      
      frana120500F 1 Antwort Letzte Antwort
      0
      • frana120500F frana120500

        @Glasfaser

        Ich bin bei JS leider nicht so firm. Könntest du bitte anhand eines Beispiels zeigen wie ich den 'idDst' erweitern muss wenn ich z.b. noch 'Raum' und 'Funktion' definieren will.

        Und wie trege ich da mehrere Source-DP und Aliase ein?

        Danke dir.

        Edit: ok, die erweiterung um Rolle, Raum etc. habe ich selber hinbekommen. Aber wie kann ich denn jetzt für mehrere DP gleichzeitig einen Alias anlegen?

        1. Edit: Ok, vergiss meine Nachfrage gg Habe es durch probieren selber hinbekommen.
        createAliasWithObject({
        
            idSrc: 'hm-rpc.0.OEQ04432621.1.STATE',
        
            idDst: 'alias.0.Terrasse.Lampe',
        
            raum: 'Terrasse',
        
            idSrc: 'hm-rpc.0.OEQ12213302.1.STATE',
        
            idDst: 'alias.0.Terrasse.Dose',
        
            raum: 'Terrasse'
        
        frana120500F Offline
        frana120500F Offline
        frana120500
        schrieb am zuletzt editiert von
        #4

        @Glasfaser

        Ich brauche doch noch deine Hilfe. Wenn ich es so mache wie im Beitrag davor, legt er mir immer den letzten Eintrag an (in dem fall den Alias "Dose"

        Wo mache ich da den Fehler?

        N 1 Antwort Letzte Antwort
        0
        • frana120500F frana120500

          @Glasfaser

          Ich brauche doch noch deine Hilfe. Wenn ich es so mache wie im Beitrag davor, legt er mir immer den letzten Eintrag an (in dem fall den Alias "Dose"

          Wo mache ich da den Fehler?

          N Offline
          N Offline
          Nordischerjung
          schrieb am zuletzt editiert von Nordischerjung
          #5

          @frana120500 Moin,

          so 100% weiß ich es auch nicht, aber versuch doch mal so:

          function createAliasWithObject({
          
              idSrc,
              idDst, 
              raum = undefined,  */hier das undefined entfernen bei dem du es benötigst*/
              gewerk = undefined, 
              typeAlias = undefined, 
              read = undefined,
              write = undefined,
              nameAlias = undefined, 
              role = undefined, 
              desc = undefined, 
              min = undefined, 
              max = undefined,
              unit = undefined, 
              states = undefined
          
          }) {
          
              createAlias(idSrc, idDst,raum, gewerk,typeAlias, read, write, nameAlias, role, desc, min, max, unit, states);
          
          }
          
          
          createAliasWithObject({
          
              idSrc: 'smartmeter.0.1-0:16_7_0__255.value',
              idDst: "alias.0.Strom.Smartmeter.value"
              raum: 'Wohnzimmer'  */und hier dan beschreiben*/
              
          
          });
          

          siehe Beispiel raum

          Gruß Nordischerjung

          sonnige Grüße von der Ostsee

          frana120500F 1 Antwort Letzte Antwort
          0
          • N Nordischerjung

            @frana120500 Moin,

            so 100% weiß ich es auch nicht, aber versuch doch mal so:

            function createAliasWithObject({
            
                idSrc,
                idDst, 
                raum = undefined,  */hier das undefined entfernen bei dem du es benötigst*/
                gewerk = undefined, 
                typeAlias = undefined, 
                read = undefined,
                write = undefined,
                nameAlias = undefined, 
                role = undefined, 
                desc = undefined, 
                min = undefined, 
                max = undefined,
                unit = undefined, 
                states = undefined
            
            }) {
            
                createAlias(idSrc, idDst,raum, gewerk,typeAlias, read, write, nameAlias, role, desc, min, max, unit, states);
            
            }
            
            
            createAliasWithObject({
            
                idSrc: 'smartmeter.0.1-0:16_7_0__255.value',
                idDst: "alias.0.Strom.Smartmeter.value"
                raum: 'Wohnzimmer'  */und hier dan beschreiben*/
                
            
            });
            

            siehe Beispiel raum

            frana120500F Offline
            frana120500F Offline
            frana120500
            schrieb am zuletzt editiert von
            #6

            @nordischerjung ja, das funktioniert. aber wie muss der Code aussehen, wenn ich einen zweiten Alias anlegen möchte? Dann legt er bei mir nur den letzten Eintrag an

            frana120500F 1 Antwort Letzte Antwort
            0
            • frana120500F frana120500

              @nordischerjung ja, das funktioniert. aber wie muss der Code aussehen, wenn ich einen zweiten Alias anlegen möchte? Dann legt er bei mir nur den letzten Eintrag an

              frana120500F Offline
              frana120500F Offline
              frana120500
              schrieb am zuletzt editiert von
              #7

              ich habe das
              = undefined
              beim raum gelöscht, so dass oben nur noch steht

              raum,
              

              der Code für den/das Alias sieht bei mir so aus

              createAliasWithObject({
              
                  idSrc: 'sonoff.0.Bewässerung.POWER1',
              
                  idDst: 'alias.0.Garten.BewaesserungKreis1EIN',
              
                  raum: 'Garten',
              
                  idSrc: 'sonoff.0.Bewässerung.POWER2',
              
                  idDst: 'alias.0.Garten.BewaesserungKreis1AUS',
              
                  raum: 'Garten',
              
                  idSrc: 'sonoff.0.Bewässerung.POWER3',
              
                  idDst: 'alias.0.Garten.BewaesserungKreis2EIN',
              
                  raum: 'Garten',
              
                  idSrc: 'sonoff.0.Bewässerung.POWER4',
              
                  idDst: 'alias.0.Garten.BewaesserungKreis2AUS',
              
                  raum: 'Garten'
              
              GlasfaserG 1 Antwort Letzte Antwort
              0
              • frana120500F frana120500

                ich habe das
                = undefined
                beim raum gelöscht, so dass oben nur noch steht

                raum,
                

                der Code für den/das Alias sieht bei mir so aus

                createAliasWithObject({
                
                    idSrc: 'sonoff.0.Bewässerung.POWER1',
                
                    idDst: 'alias.0.Garten.BewaesserungKreis1EIN',
                
                    raum: 'Garten',
                
                    idSrc: 'sonoff.0.Bewässerung.POWER2',
                
                    idDst: 'alias.0.Garten.BewaesserungKreis1AUS',
                
                    raum: 'Garten',
                
                    idSrc: 'sonoff.0.Bewässerung.POWER3',
                
                    idDst: 'alias.0.Garten.BewaesserungKreis2EIN',
                
                    raum: 'Garten',
                
                    idSrc: 'sonoff.0.Bewässerung.POWER4',
                
                    idDst: 'alias.0.Garten.BewaesserungKreis2AUS',
                
                    raum: 'Garten'
                
                GlasfaserG Offline
                GlasfaserG Offline
                Glasfaser
                schrieb am zuletzt editiert von Glasfaser
                #8

                @frana120500 sagte in Alias aus Liste erstellen:

                Pro Alias 1 x , nicht mehere idSrc: da rein

                createAliasWithObject({
                

                Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                frana120500F 1 Antwort Letzte Antwort
                0
                • GlasfaserG Glasfaser

                  @frana120500 sagte in Alias aus Liste erstellen:

                  Pro Alias 1 x , nicht mehere idSrc: da rein

                  createAliasWithObject({
                  
                  frana120500F Offline
                  frana120500F Offline
                  frana120500
                  schrieb am zuletzt editiert von
                  #9

                  @glasfaser also so?

                  createAliasWithObject({
                   
                      idSrc: 'sonoff.0.Bewässerung.POWER1',
                   
                      idDst: 'alias.0.Garten.BewaesserungKreis1EIN',
                   
                      raum: 'Garten',
                  
                  createAliasWithObject({
                   
                      idSrc: 'sonoff.0.Bewässerung.POWER2',
                   
                      idDst: 'alias.0.Garten.BewaesserungKreis1AUS',
                   
                      raum: 'Garten',
                   
                  createAliasWithObject({
                      idSrc: 'sonoff.0.Bewässerung.POWER3',
                   
                      idDst: 'alias.0.Garten.BewaesserungKreis2EIN',
                   
                      raum: 'Garten',
                   
                  createAliasWithObject({
                  
                      idSrc: 'sonoff.0.Bewässerung.POWER4',
                   
                      idDst: 'alias.0.Garten.BewaesserungKreis2AUS',
                   
                      raum: 'Garten'
                  
                  GlasfaserG 1 Antwort Letzte Antwort
                  0
                  • frana120500F frana120500

                    @glasfaser also so?

                    createAliasWithObject({
                     
                        idSrc: 'sonoff.0.Bewässerung.POWER1',
                     
                        idDst: 'alias.0.Garten.BewaesserungKreis1EIN',
                     
                        raum: 'Garten',
                    
                    createAliasWithObject({
                     
                        idSrc: 'sonoff.0.Bewässerung.POWER2',
                     
                        idDst: 'alias.0.Garten.BewaesserungKreis1AUS',
                     
                        raum: 'Garten',
                     
                    createAliasWithObject({
                        idSrc: 'sonoff.0.Bewässerung.POWER3',
                     
                        idDst: 'alias.0.Garten.BewaesserungKreis2EIN',
                     
                        raum: 'Garten',
                     
                    createAliasWithObject({
                    
                        idSrc: 'sonoff.0.Bewässerung.POWER4',
                     
                        idDst: 'alias.0.Garten.BewaesserungKreis2AUS',
                     
                        raum: 'Garten'
                    
                    GlasfaserG Offline
                    GlasfaserG Offline
                    Glasfaser
                    schrieb am zuletzt editiert von
                    #10

                    @frana120500 sagte in Alias aus Liste erstellen:

                    createAliasWithObject({

                    So ,

                    createAliasWithObject({
                    
                        idSrc: 'sonoff.0.Bewässerung.POWER1',
                    
                        idDst: 'alias.0.Garten.BewaesserungKreis1EIN',
                    
                        raum: 'Garten'
                    });
                    

                    Komma am Ende raus und es schließen mit });

                    Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                    frana120500F 1 Antwort Letzte Antwort
                    0
                    • GlasfaserG Glasfaser

                      @frana120500 sagte in Alias aus Liste erstellen:

                      createAliasWithObject({

                      So ,

                      createAliasWithObject({
                      
                          idSrc: 'sonoff.0.Bewässerung.POWER1',
                      
                          idDst: 'alias.0.Garten.BewaesserungKreis1EIN',
                      
                          raum: 'Garten'
                      });
                      

                      Komma am Ende raus und es schließen mit });

                      frana120500F Offline
                      frana120500F Offline
                      frana120500
                      schrieb am zuletzt editiert von
                      #11

                      @glasfaser ahhhh, die Kleinigkeiten. Jetzt gehts es. und den Block wiederhole ich halt für jedes Alias. Funzt. Danke

                      K 1 Antwort Letzte Antwort
                      0
                      • frana120500F frana120500

                        @glasfaser ahhhh, die Kleinigkeiten. Jetzt gehts es. und den Block wiederhole ich halt für jedes Alias. Funzt. Danke

                        K Offline
                        K Offline
                        Kuddel
                        schrieb am zuletzt editiert von
                        #12

                        Ich habe es mittlerweile hinbekommen, aus einer JSON Liste mit allen originalen DPs und weiteren Infos wie Name, Raum etc. vollautomatisch alle Alias einrichten zu lassen.

                        Bin noch bis nächste Woche im Urlaub und kann dann mein Skript posten

                        frana120500F W 2 Antworten Letzte Antwort
                        0
                        • K Kuddel

                          Ich habe es mittlerweile hinbekommen, aus einer JSON Liste mit allen originalen DPs und weiteren Infos wie Name, Raum etc. vollautomatisch alle Alias einrichten zu lassen.

                          Bin noch bis nächste Woche im Urlaub und kann dann mein Skript posten

                          frana120500F Offline
                          frana120500F Offline
                          frana120500
                          schrieb am zuletzt editiert von
                          #13

                          was ich mich noch frage: Ich habe das bisher über den Devices Adapter angelegt. Da kann ich ja recht einfach das Gerät austauschen wenn es defekt ist. Wie passe ich denn das Alias an wenn ich es mit dem Script hier erstellt habe?

                          Die Aliase die mit dem Script erstellt worden sind, tauchen zwar unter alias.0 auf, aber nicht im Devices Adapter. Muss ich da die RAW Daten vom Alias bearbeiten?

                          Oder steh ich grad auf dem Schlauch?

                          K 1 Antwort Letzte Antwort
                          0
                          • frana120500F frana120500

                            was ich mich noch frage: Ich habe das bisher über den Devices Adapter angelegt. Da kann ich ja recht einfach das Gerät austauschen wenn es defekt ist. Wie passe ich denn das Alias an wenn ich es mit dem Script hier erstellt habe?

                            Die Aliase die mit dem Script erstellt worden sind, tauchen zwar unter alias.0 auf, aber nicht im Devices Adapter. Muss ich da die RAW Daten vom Alias bearbeiten?

                            Oder steh ich grad auf dem Schlauch?

                            K Offline
                            K Offline
                            Kuddel
                            schrieb am zuletzt editiert von
                            #14

                            @frana120500 ich kann meine per Skript erstellten Alias im Menü unter dem Punkt Geräte anpassen.

                            Alternativ den alten Alias löschen und neu erstellen

                            1 Antwort Letzte Antwort
                            0
                            • crunchipC Offline
                              crunchipC Offline
                              crunchip
                              Forum Testing Most Active
                              schrieb am zuletzt editiert von
                              #15

                              @frana120500 sagte in Alias aus Liste erstellen:

                              Muss ich da die RAW Daten vom Alias bearbeiten?

                              theoretisch ja, würde ich sagen

                              @frana120500 sagte in Alias aus Liste erstellen:

                              den Devices Adapter

                              ich verwende den alias Manager, ist flexibler

                              umgestiegen von Proxmox auf Unraid

                              1 Antwort Letzte Antwort
                              0
                              • K Kuddel

                                Ich habe es mittlerweile hinbekommen, aus einer JSON Liste mit allen originalen DPs und weiteren Infos wie Name, Raum etc. vollautomatisch alle Alias einrichten zu lassen.

                                Bin noch bis nächste Woche im Urlaub und kann dann mein Skript posten

                                W Offline
                                W Offline
                                Whilk-and-Misky
                                schrieb am zuletzt editiert von
                                #16

                                @Kuddel Kannst Du noch dein Script / Lösungsweg posten? Danke im Voraus :-)

                                ioBroker 6.x.x auf Debian 11 (Miniforum HM80 / AMD Ryzen 7 4800U, 8 Cores, 16 Threads / 32 GB RAM / Proxmox 7.x)

                                K 1 Antwort Letzte Antwort
                                0
                                • W Whilk-and-Misky

                                  @Kuddel Kannst Du noch dein Script / Lösungsweg posten? Danke im Voraus :-)

                                  K Offline
                                  K Offline
                                  Kuddel
                                  schrieb am zuletzt editiert von
                                  #17

                                  @whilk-and-misky

                                  Hier mein Skript. Es funktioniert in meinen Augen sehr gut, hat aber bestimmt noch Verbesserungspotential

                                  let geraete = [
                                     //Ankleide
                                     {"raum": "AZ","name": "Deckenlampe","gewerk": "LS","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "AZ","name": "Velux","gewerk": "RA","dp": "klf200.0.products.2.targetPosition"},
                                     {"raum": "AZ","name": "Velux","gewerk": "FS","dp": "zigbee.0.xxxxxxxxxxxxxxxx.opened"},
                                     {"raum": "AZ","name": "Heizkoerper","gewerk": "HZ","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.SET_TEMPERATURE"},
                                     {"raum": "AZ","name": "Heizkoerper","gewerk": "TH","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.ACTUAL_TEMPERATURE"},
                                     
                                     //Badezimmer
                                     {"raum": "BZ","name": "Deckenlampe","gewerk": "LS","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "BZ","name": "Spiegel","gewerk": "LS","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay1.Switch"},
                                     {"raum": "BZ","name": "Velux","gewerk": "RA","dp": "klf200.0.products.3.targetPosition"},
                                     {"raum": "BZ","name": "Velux","gewerk": "FS","dp": "zigbee.0.xxxxxxxxxxxxxxxx.opened"},
                                  
                                     //Buero
                                     {"raum": "BR","name": "Fenster-Links","gewerk": "DK","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"},
                                     {"raum": "BR","name": "Fenster-Rechts","gewerk": "DK","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"},
                                     {"raum": "BR","name": "Heizkoerper","gewerk": "HZ","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.SET_TEMPERATURE"},
                                     {"raum": "BR","name": "Heizkoerper","gewerk": "TH","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.ACTUAL_TEMPERATURE"},
                                     {"raum": "BR","name": "Deckenlampe","gewerk": "LS","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "BR","name": "Fenster","gewerk": "RA","dp": "homepilot20.0.Actuator.1-xxxxxxxxxxxxxxxx.Position_inverted"},
                                     {"raum": "BR","name": "3D-Drucker","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "BR","name": "Ladegeraet","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "BR","name": "Ladegeraet","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Power"},
                                     {"raum": "BR","name": "PC-Monitore","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "BR","name": "PC-Monitore","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Power"},
                                     {"raum": "BR","name": "PCs","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "BR","name": "PCs","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Power"},
                                  
                                     
                                     //Flur
                                     {"raum": "FL","name": "Bewegungsmelder","gewerk": "BM","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.MOTION"},
                                     {"raum": "FL","name": "Briefkasten-Deckel","gewerk": "FS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"},
                                     {"raum": "FL","name": "Haustuer","gewerk": "FS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"},
                                     {"raum": "FL","name": "Aussenlampe","gewerk": "LS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"},
                                     {"raum": "FL","name": "Lichterkette","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "FL","name": "Nachtlicht","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     
                                     //Garten
                                     {"raum": "GA","name": "Haustuer","gewerk": "BM","dp": "zigbee.0.xxxxxxxxxxxxxxxx.occupancy"},
                                     {"raum": "GA","name": "Kamera-Haustuer","gewerk": "BM","dp": "synology.0.SurveillanceStation.cameras.Haustuer.motionDetected"},
                                     {"raum": "GA","name": "Kamera-Balkon","gewerk": "BM","dp": "synology.0.SurveillanceStation.cameras.Balkon.motionDetected"},
                                     {"raum": "GA","name": "Parkplatz","gewerk": "BM","dp": "zigbee.0.xxxxxxxxxxxxxxxx.occupancy"},
                                     {"raum": "GA","name": "Pavillon","gewerk": "BM","dp": "zigbee.0.xxxxxxxxxxxxxxxx.occupancy"},
                                     {"raum": "GA","name": "Stufenbeleuchtung","gewerk": "HA","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"},
                                     {"raum": "GA","name": "Gartenbeleuchtung","gewerk": "HA","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"},
                                     {"raum": "GA","name": "Pavillon","gewerk": "HA","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.2.STATE"},
                                     {"raum": "GA","name": "Pavillon","gewerk": "HA","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.2.STATE"},
                                     {"raum": "GA","name": "Whirlpool","gewerk": "SD","dp": "fritzdect.0.DECT_xxxxxxxxxxxxxxxx.state"},
                                     {"raum": "GA","name": "Whirlpool","gewerk": "POWER","dp": "fritzdect.0.DECT_xxxxxxxxxxxxxxxx.power"},
                                     {"raum": "GA","name": "Whirlpool","gewerk": "POWER_SUM","dp": "fritzdect.0.DECT_xxxxxxxxxxxxxxxx.energy"},
                                     {"raum": "GA","name": "Whirlpool","gewerk": "TH","dp": "shelly.0.xxxxxxxxxxxxxxxx.ext.temperatureC1"},
                                     
                                     //Kinderzimmer
                                     {"raum": "KZ","name": "Balkontuer","gewerk": "DK","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"},
                                     {"raum": "KZ","name": "Heizkoerper","gewerk": "HZ","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.SET_TEMPERATURE"},
                                     {"raum": "KZ","name": "Heizkoerper","gewerk": "TH","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.ACTUAL_TEMPERATURE"},
                                     {"raum": "KZ","name": "Front","gewerk": "RA","dp": "shelly.0.xxxxxxxxxxxxxxxx.Shutter.Position"},
                                     {"raum": "KZ","name": "Front","gewerk": "UP","dp": "shelly.0.xxxxxxxxxxxxxxxx.Shutter.Open"},
                                     {"raum": "KZ","name": "Front","gewerk": "DOWN","dp": "shelly.0.xxxxxxxxxxxxxxxx1.Shutter.Close"},
                                     {"raum": "KZ","name": "Front","gewerk": "STOP","dp": "shelly.0.xxxxxxxxxxxxxxxx.Shutter.Pause"},
                                     {"raum": "KZ","name": "Velux","gewerk": "RA","dp": "klf200.0.products.1.targetPosition"},
                                     {"raum": "KZ","name": "Lichterkette","gewerk": "SD","dp": "sonoff.0.SD_KZ_Lichterkette.POWER"},
                                     {"raum": "KZ","name": "Velux","gewerk": "FS","dp": "zigbee.0.xxxxxxxxxxxxxxxx.opened"},
                                     {"raum": "KZ","name": "Front","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Shutter.Power"},
                                     
                                  
                                     //Keller
                                     {"raum": "KE","name": "ESX-NUC","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "KE","name": "ESX-NUC","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Power"},
                                     {"raum": "KE","name": "ESX-NUC-Backup","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "KE","name": "ESX-NUC-Backup","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Power"},    
                                     {"raum": "KE","name": "ESXP01","gewerk": "SD","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.state"},
                                     {"raum": "KE","name": "ESXP01","gewerk": "POWER","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.power"},
                                     {"raum": "KE","name": "ESXP02","gewerk": "SD","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.state"},
                                     {"raum": "KE","name": "ESXP02","gewerk": "POWER","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.power"},
                                     {"raum": "KE","name": "Trockner","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "KE","name": "Trockner","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Power"},
                                     {"raum": "KE","name": "USV","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "KE","name": "USV","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Power"},
                                     {"raum": "KE","name": "Waschmaschine","gewerk": "SD","dp": "xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "KE","name": "Waschmaschine","gewerk": "POWER","dp": "xxxxxxxxxxxxxxxx.Relay0.Power"},
                                     
                                     //Kueche
                                     {"raum": "KU","name": "Kuechenfenster","gewerk": "FS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"},
                                     {"raum": "KU","name": "Heizkoerper","gewerk": "HZ","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.SET_TEMPERATURE"},
                                     {"raum": "KU","name": "Heizkoerper","gewerk": "TH","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.ACTUAL_TEMPERATURE"},
                                     {"raum": "KU","name": "Deckenlampe","gewerk": "LS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"},
                                     {"raum": "KU","name": "Schrankbeleuchtung","gewerk": "LS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"},
                                     {"raum": "KU","name": "Fenster","gewerk": "RA","dp": "homepilot20.0.Actuator.2-xxxxxxxxxxxxxxxx.Position_inverted"},
                                     {"raum": "KU","name": "Geschirrspueler","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "KU","name": "Geschirrspueler","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Power"},
                                     
                                     //Schlafzimmer
                                     {"raum": "SZ","name": "Balkontuer","gewerk": "DK","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"},
                                     {"raum": "SZ","name": "Heizkoerper","gewerk": "HZ","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.SET_TEMPERATURE"},
                                     {"raum": "SZ","name": "Heizkoerper","gewerk": "TH","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.ACTUAL_TEMPERATURE"},
                                     {"raum": "SZ","name": "Deckenlampe","gewerk": "LS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"},
                                     {"raum": "SZ","name": "Velux","gewerk": "RA","dp": "klf200.0.products.0.targetPosition"},
                                     {"raum": "SZ","name": "Front","gewerk": "RA","dp": "shelly.0.xxxxxxxxxxxxxxxx.Shutter.Position"},
                                     {"raum": "SZ","name": "Front","gewerk": "UP","dp": "shelly.0.xxxxxxxxxxxxxxxx.Shutter.Open"},
                                     {"raum": "SZ","name": "Front","gewerk": "DOWN","dp": "shelly.0.xxxxxxxxxxxxxxxx.Shutter.Close"},
                                     {"raum": "SZ","name": "Front","gewerk": "STOP","dp": "shelly.0.xxxxxxxxxxxxxxxx.Shutter.Pause"},
                                     {"raum": "SZ","name": "Front","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Shutter.Power"},
                                     {"raum": "SZ","name": "Balkon","gewerk": "SD","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.state"},
                                     {"raum": "SZ","name": "SchlafzimmerTV","gewerk": "SD","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.state"},
                                     {"raum": "SZ","name": "SchlafzimmerTV","gewerk": "POWER","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.power"},
                                     {"raum": "SZ","name": "Kommode","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "SZ","name": "Lichterkette","gewerk": "SD","dp": "sonoff.0.SD_SZ_Lichterkette.POWER"},
                                     {"raum": "SZ","name": "Balkon","gewerk": "TH","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.celsius"},
                                     {"raum": "SZ","name": "Velux","gewerk": "FS","dp": "zigbee.0.xxxxxxxxxxxxxxxx.opened"},
                                  
                                     
                                     //Wohnzimmer
                                     {"raum": "WZ","name": "Front-Links","gewerk": "FS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"},
                                     {"raum": "WZ","name": "Front-Rechts","gewerk": "FS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"},
                                     {"raum": "WZ","name": "Seite-Links","gewerk": "FS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"},
                                     {"raum": "WZ","name": "Seite-Rechts","gewerk": "FS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"},
                                     {"raum": "WZ","name": "Heizkoerper","gewerk": "HZ","dp": "hm-rpc.1.INT0000001.1.SET_TEMPERATURE"},
                                     {"raum": "WZ","name": "Heizkoerper","gewerk": "TH","dp": "hm-rpc.1.INT0000001.1.ACTUAL_TEMPERATURE"},
                                     {"raum": "WZ","name": "Heizkoerper-Seite","gewerk": "TH","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.ACTUAL_TEMPERATURE"},
                                     {"raum": "WZ","name": "Heizkoerper-Front","gewerk": "TH","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.ACTUAL_TEMPERATURE"},
                                     {"raum": "WZ","name": "Esstischlampe","gewerk": "LS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.LEVEL"},
                                     {"raum": "WZ","name": "Wohnzimmerlampe","gewerk": "LS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.LEVEL"},
                                     {"raum": "WZ","name": "Front-Links","gewerk": "RA","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.LEVEL"},
                                     {"raum": "WZ","name": "Front-Rechts","gewerk": "RA","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.LEVEL"},
                                     {"raum": "WZ","name": "Leinwand","gewerk": "RA","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.LEVEL"},
                                     {"raum": "WZ","name": "Seite","gewerk": "RA","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.LEVEL"},
                                     {"raum": "WZ","name": "AV-Receiver","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "WZ","name": "FireTV","gewerk": "SD","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.state"},
                                     {"raum": "WZ","name": "Front","gewerk": "SD","dp": "sonoff.0.SD_WZ_Front.POWER"},
                                     {"raum": "WZ","name": "Kodi","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "WZ","name": "Kodi","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Power"},
                                     {"raum": "WZ","name": "Lichtkugeln","gewerk": "SD","dp": "shelly.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "WZ","name": "PS-4-Luefter","gewerk": "SD","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.state"},
                                     {"raum": "WZ","name": "PS-4-Luefter","gewerk": "TH","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.celsius"},
                                     {"raum": "WZ","name": "Schriftleuchte","gewerk": "SD","dp": "zigbee.0.xxxxxxxxxxxxxxxx.state"},
                                     {"raum": "WZ","name": "Seite","gewerk": "SD","dp": "sonoff.0.SD_WZ_Seite.POWER"},
                                     {"raum": "WZ","name": "TV","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "WZ","name": "Tablet","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"},
                                     {"raum": "WZ","name": "Wii","gewerk": "SD","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.STATE"},
                                     
                                     	
                                  ];
                                  
                                  
                                  //Jedes Gerät abarbeiten
                                  geraete.forEach(geraet => {
                                     //Raumname definieren
                                     if(geraet.raum == "AZ"){var raumname = "Ankleide"};
                                     if(geraet.raum == "BZ"){var raumname = "Badezimmer"};
                                     if(geraet.raum == "BR"){var raumname = "Buero"};
                                     if(geraet.raum == "FL"){var raumname = "Flur"};
                                     if(geraet.raum == "GA"){var raumname = "Garten"};
                                     if(geraet.raum == "KE"){var raumname = "Keller"};
                                     if(geraet.raum == "KZ"){var raumname = "Kinderzimmer"};
                                     if(geraet.raum == "KU"){var raumname = "Kueche"};
                                     if(geraet.raum == "SZ"){var raumname = "Schlafzimmer"};
                                     if(geraet.raum == "WZ"){var raumname = "Wohnzimmer"};
                                  
                                     //Statuskuerzel definieren
                                     if(geraet.gewerk == "BM") {var statuskuerzel = "ACTUAL"; var gewerk = "BM"};
                                     if(geraet.gewerk == "DK") {var statuskuerzel = "ACTUAL"; var gewerk = "DK"};
                                     if(geraet.gewerk == "FS") {var statuskuerzel = "ACTUAL"; var gewerk = "FS"};
                                     if(geraet.gewerk == "HA") {var statuskuerzel = "STATE"; var gewerk = "HA"};
                                     if(geraet.gewerk == "HZ") {var statuskuerzel = "TEMP"; var gewerk = "HZ"};
                                     if(geraet.gewerk == "LS") {var statuskuerzel = "STATE"; var gewerk = "LS"};
                                     if(geraet.gewerk == "RA") {var statuskuerzel = "LEVEL"; var gewerk = "RA"};
                                     if(geraet.gewerk == "SD") {var statuskuerzel = "STATE"; var gewerk = "SD"};
                                     if(geraet.gewerk == "TH") {var statuskuerzel = "TEMP"; var gewerk = "TH"};
                                  
                                     //Sonderstatuskuerzel definieren
                                     if(geraet.gewerk == "POWER") {var statuskuerzel = "POWER"; var gewerk = "SD"};
                                     if(geraet.gewerk == "POWER_SUM") {var statuskuerzel = "POWER_SUM"; var gewerk = "SD"};
                                     if(geraet.gewerk == "DOWN") {var statuskuerzel = "DOWN"; var gewerk = "RA"};
                                     if(geraet.gewerk == "UP") {var statuskuerzel = "UP"; var gewerk = "RA"};
                                     if(geraet.gewerk == "STOP") {var statuskuerzel = "STOP"; var gewerk = "RA"};
                                     if(geraet.gewerk == "POWER" && geraet.dp.match(/^.*.Shutter.Power$/)) {var statuskuerzel = "POWER"; var gewerk = "RA"};
                                  
                                  
                                     //Variablen für Erstellung definieren
                                     const original_datenpunkt = geraet.dp;
                                     const alias_name =  gewerk + '_' + geraet.raum + '_' + geraet.name + '.' + statuskuerzel;
                                     const raum_name = raumname;
                                  
                                  
                                     /////////////////////////////////
                                     // AB HIER NICHTS MEHR ÄNDERN  //
                                     /////////////////////////////////
                                  
                                     // Original-Datenpunkt
                                     const idOrigin = original_datenpunkt; 
                                     // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
                                     // Bei Nicht-Verwendung Leerstring '' zuweisen
                                     const idRead = '';
                                      
                                     // Alias-Datenpunkt
                                     const idAlias = raum_name+'.'+alias_name;
                                     var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
                                      
                                     // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
                                     nameAlias = alias_name
                                     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{
                                        if(!existsState(idDst)){ 
                                           console.log('alias.0.' + raumname + "." + alias_name + ' wird erstellt')
                                     	  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);
                                     
                                  });
                                  

                                  1 Antwort Letzte Antwort
                                  0
                                  Antworten
                                  • In einem neuen Thema antworten
                                  Anmelden zum Antworten
                                  • Älteste zuerst
                                  • Neuste zuerst
                                  • Meiste Stimmen


                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  485

                                  Online

                                  32.6k

                                  Benutzer

                                  82.3k

                                  Themen

                                  1.3m

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

                                  • Du hast noch kein Konto? Registrieren

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