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. [Gelöst]Alias mit Script erstellen - Button

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    657

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

[Gelöst]Alias mit Script erstellen - Button

Geplant Angeheftet Gesperrt Verschoben JavaScript
blocklycommunicationjavascript
21 Beiträge 3 Kommentatoren 856 Aufrufe 3 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.
  • WszeneW Offline
    WszeneW Offline
    Wszene
    schrieb am zuletzt editiert von Wszene
    #1

    Ich habe hier im Forum ein Script gefunden mit dem man Aliasse anlegen kann
    Leider weiss ich nicht mehr wo

    Hier mal das Script

    // Original-Datenpunkt
    const idOrigin = 'sonoff.0.Lichtschalter-Stube.POWER1'; 
    // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
    // Bei Nicht-Verwendung Leerstring '' zuweisen
    const idRead = '';
     
    // Alias-Datenpunkt
    const idAlias = '01_Stube.01_Schalter.Schalter-Esstisch';
     
    var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
     
    // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
    nameAlias = 'Schalter - Esstisch';
    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);
    

    Das funktioniert so perfekt
    Ich kann mit den Alias z.B, Dein AV-Receiver lauter machen
    Aber nur wenn ich direkt drauf drucke also im Browser direkt auf den Button

    Wenn ich den Button jetzt aber per Blockly anspreche funktioniert leider nichts
    Das betrifft aber nur Alias mit der Rolle "button" andere mit z.B. Rolle "switch" funktionieren.

    Hatte das schon jemand und hat dafür eine Lösung für mich?

    PS:
    Wenn ich im Blocky den Alias gegen den Originalen DP austausche funktioniert es

    Meine Hard- & Software:

    • MSI Cubi 5 10M-049DE mit Proxmox
    • CC2652P Zigbee Stick
    • Steckdosen mit Tasmota und Zigbee
    • Lichtschalter mit Tasmota
    • IKEA TRÅDFRI Glühbirnen
    • Aqara Sensoren
    dslraserD paul53P 3 Antworten Letzte Antwort
    0
    • WszeneW Wszene

      Ich habe hier im Forum ein Script gefunden mit dem man Aliasse anlegen kann
      Leider weiss ich nicht mehr wo

      Hier mal das Script

      // Original-Datenpunkt
      const idOrigin = 'sonoff.0.Lichtschalter-Stube.POWER1'; 
      // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
      // Bei Nicht-Verwendung Leerstring '' zuweisen
      const idRead = '';
       
      // Alias-Datenpunkt
      const idAlias = '01_Stube.01_Schalter.Schalter-Esstisch';
       
      var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
       
      // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
      nameAlias = 'Schalter - Esstisch';
      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);
      

      Das funktioniert so perfekt
      Ich kann mit den Alias z.B, Dein AV-Receiver lauter machen
      Aber nur wenn ich direkt drauf drucke also im Browser direkt auf den Button

      Wenn ich den Button jetzt aber per Blockly anspreche funktioniert leider nichts
      Das betrifft aber nur Alias mit der Rolle "button" andere mit z.B. Rolle "switch" funktionieren.

      Hatte das schon jemand und hat dafür eine Lösung für mich?

      PS:
      Wenn ich im Blocky den Alias gegen den Originalen DP austausche funktioniert es

      dslraserD Offline
      dslraserD Offline
      dslraser
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #2

      @wszene sagte in Alias mit Script erstellen - Button funktionieren nicht:

      Leider weiss ich nicht mehr wo

      https://forum.iobroker.net/post/334261

      1 Antwort Letzte Antwort
      0
      • WszeneW Wszene

        Ich habe hier im Forum ein Script gefunden mit dem man Aliasse anlegen kann
        Leider weiss ich nicht mehr wo

        Hier mal das Script

        // Original-Datenpunkt
        const idOrigin = 'sonoff.0.Lichtschalter-Stube.POWER1'; 
        // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
        // Bei Nicht-Verwendung Leerstring '' zuweisen
        const idRead = '';
         
        // Alias-Datenpunkt
        const idAlias = '01_Stube.01_Schalter.Schalter-Esstisch';
         
        var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
         
        // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
        nameAlias = 'Schalter - Esstisch';
        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);
        

        Das funktioniert so perfekt
        Ich kann mit den Alias z.B, Dein AV-Receiver lauter machen
        Aber nur wenn ich direkt drauf drucke also im Browser direkt auf den Button

        Wenn ich den Button jetzt aber per Blockly anspreche funktioniert leider nichts
        Das betrifft aber nur Alias mit der Rolle "button" andere mit z.B. Rolle "switch" funktionieren.

        Hatte das schon jemand und hat dafür eine Lösung für mich?

        PS:
        Wenn ich im Blocky den Alias gegen den Originalen DP austausche funktioniert es

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

        @wszene sagte: Wenn ich den Button jetzt aber per Blockly anspreche funktioniert leider nichts

        Zeige bitte das Blockly und die RAW-Ansicht der Eigenschaften des Alias-DP (in Code tags).

        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

        WszeneW 1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @wszene sagte: Wenn ich den Button jetzt aber per Blockly anspreche funktioniert leider nichts

          Zeige bitte das Blockly und die RAW-Ansicht der Eigenschaften des Alias-DP (in Code tags).

          WszeneW Offline
          WszeneW Offline
          Wszene
          schrieb am zuletzt editiert von
          #4

          @paul53
          Hier die RAW Ansicht

          {
            "type": "state",
            "common": {
              "name": "AV-Receiver - Leiser",
              "role": "button",
              "type": "number",
              "write": true,
              "read": true,
              "min": 0,
              "alias": {
                "id": "harmony.0.Fernbedienung.Bose-AV-Receiver.VolumeDown"
              },
              "desc": "per Script erstellt"
            },
            "native": {},
            "from": "system.adapter.javascript.0",
            "user": "system.user.admin",
            "ts": 1611037285630,
            "_id": "alias.0.01_Stube.04_Fernbedienung.AV_Receiver-Leiser",
            "acl": {
              "object": 1636,
              "state": 1636,
              "owner": "system.user.admin",
              "ownerGroup": "system.group.administrator"
            }
          }
          

          und Hier das Blockly wie es funktioniert
          Bildschirmfoto 2021-01-20 um 19.39.28.png
          und hier wie ich es gern hätte (nur im erst falls Block geändert)
          Bildschirmfoto 2021-01-20 um 19.42.42.png

          Meine Hard- & Software:

          • MSI Cubi 5 10M-049DE mit Proxmox
          • CC2652P Zigbee Stick
          • Steckdosen mit Tasmota und Zigbee
          • Lichtschalter mit Tasmota
          • IKEA TRÅDFRI Glühbirnen
          • Aqara Sensoren
          paul53P 1 Antwort Letzte Antwort
          0
          • WszeneW Wszene

            @paul53
            Hier die RAW Ansicht

            {
              "type": "state",
              "common": {
                "name": "AV-Receiver - Leiser",
                "role": "button",
                "type": "number",
                "write": true,
                "read": true,
                "min": 0,
                "alias": {
                  "id": "harmony.0.Fernbedienung.Bose-AV-Receiver.VolumeDown"
                },
                "desc": "per Script erstellt"
              },
              "native": {},
              "from": "system.adapter.javascript.0",
              "user": "system.user.admin",
              "ts": 1611037285630,
              "_id": "alias.0.01_Stube.04_Fernbedienung.AV_Receiver-Leiser",
              "acl": {
                "object": 1636,
                "state": 1636,
                "owner": "system.user.admin",
                "ownerGroup": "system.group.administrator"
              }
            }
            

            und Hier das Blockly wie es funktioniert
            Bildschirmfoto 2021-01-20 um 19.39.28.png
            und hier wie ich es gern hätte (nur im erst falls Block geändert)
            Bildschirmfoto 2021-01-20 um 19.42.42.png

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

            @wszene
            Fehler 1:

                "type": "number",
            

            Fehler 2: "wiederhole 8 mal" sendet 8 mal im ms-Abstand
            Fehler 3: Button schaltet man nicht mit "umschalten", sondern mit "steuere" mit "wahr"

            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

            WszeneW 1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @wszene
              Fehler 1:

                  "type": "number",
              

              Fehler 2: "wiederhole 8 mal" sendet 8 mal im ms-Abstand
              Fehler 3: Button schaltet man nicht mit "umschalten", sondern mit "steuere" mit "wahr"

              WszeneW Offline
              WszeneW Offline
              Wszene
              schrieb am zuletzt editiert von
              #6

              @paul53
              Das Script übernimmt doch aber die Daten vom Original DP oder täusche ich mich da und mit dem funktioniert es

              Das mit der Wiederholung ist weil einmal zu wenig ist
              Wie würdest du das denn machen wenn der der Button 8x gedrückt werden soll?

              Das mit steuere habe ich auch erst gehabt aber das hat leider nicht funktioniert

              Meine Hard- & Software:

              • MSI Cubi 5 10M-049DE mit Proxmox
              • CC2652P Zigbee Stick
              • Steckdosen mit Tasmota und Zigbee
              • Lichtschalter mit Tasmota
              • IKEA TRÅDFRI Glühbirnen
              • Aqara Sensoren
              paul53P 1 Antwort Letzte Antwort
              0
              • WszeneW Wszene

                @paul53
                Das Script übernimmt doch aber die Daten vom Original DP oder täusche ich mich da und mit dem funktioniert es

                Das mit der Wiederholung ist weil einmal zu wenig ist
                Wie würdest du das denn machen wenn der der Button 8x gedrückt werden soll?

                Das mit steuere habe ich auch erst gehabt aber das hat leider nicht funktioniert

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

                @wszene sagte: Das mit steuere habe ich auch erst gehabt aber das hat leider nicht funktioniert

                Dann ist es kein Button, also ist die Rolle falsch.

                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

                WszeneW 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @wszene sagte: Das mit steuere habe ich auch erst gehabt aber das hat leider nicht funktioniert

                  Dann ist es kein Button, also ist die Rolle falsch.

                  WszeneW Offline
                  WszeneW Offline
                  Wszene
                  schrieb am zuletzt editiert von Wszene
                  #8

                  @paul53

                  Der Orginal DP ist vom Harmony Adapter da ist es auch ein button

                  EDIT:
                  Ich habe es jetzt nochmal mit steuere probiert
                  Mit dem Originalen DP geht es aber wieder nicht mit dem Alias

                  Hier mal das was das Log dazu sagt

                  javascript.0	2021-01-20 20:22:30.122	warn	(1070) at processTimers (internal/timers.js:497:7)
                  javascript.0	2021-01-20 20:22:30.122	warn	(1070) at listOnTimeout (internal/timers.js:556:17)
                  javascript.0	2021-01-20 20:22:30.118	warn	(1070) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1475:29)
                  javascript.0	2021-01-20 20:22:30.118	warn	(1070) at Object.setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1417:20)
                  javascript.0	2021-01-20 20:22:30.116	warn	(1070) You are assigning a boolean to the state "harmony.0.Fernbedienung.Bose-AV-Receiver.VolumeUp" which expects a number. Please fix your code to use a number or change the state type to boolean. T
                  

                  Meine Hard- & Software:

                  • MSI Cubi 5 10M-049DE mit Proxmox
                  • CC2652P Zigbee Stick
                  • Steckdosen mit Tasmota und Zigbee
                  • Lichtschalter mit Tasmota
                  • IKEA TRÅDFRI Glühbirnen
                  • Aqara Sensoren
                  paul53P 1 Antwort Letzte Antwort
                  0
                  • WszeneW Wszene

                    Ich habe hier im Forum ein Script gefunden mit dem man Aliasse anlegen kann
                    Leider weiss ich nicht mehr wo

                    Hier mal das Script

                    // Original-Datenpunkt
                    const idOrigin = 'sonoff.0.Lichtschalter-Stube.POWER1'; 
                    // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
                    // Bei Nicht-Verwendung Leerstring '' zuweisen
                    const idRead = '';
                     
                    // Alias-Datenpunkt
                    const idAlias = '01_Stube.01_Schalter.Schalter-Esstisch';
                     
                    var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
                     
                    // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
                    nameAlias = 'Schalter - Esstisch';
                    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);
                    

                    Das funktioniert so perfekt
                    Ich kann mit den Alias z.B, Dein AV-Receiver lauter machen
                    Aber nur wenn ich direkt drauf drucke also im Browser direkt auf den Button

                    Wenn ich den Button jetzt aber per Blockly anspreche funktioniert leider nichts
                    Das betrifft aber nur Alias mit der Rolle "button" andere mit z.B. Rolle "switch" funktionieren.

                    Hatte das schon jemand und hat dafür eine Lösung für mich?

                    PS:
                    Wenn ich im Blocky den Alias gegen den Originalen DP austausche funktioniert es

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

                    @wszene sagte: Ich kann mit den Alias z.B, Dein AV-Receiver lauter machen. Aber nur wenn ich direkt drauf drucke also im Browser direkt auf den Button

                    Prüfe mal mit dem Test-Blockly wie sich der Datenpunkt "VolumeDown" verhält, wenn man den Button manuell (Tab Objekte) betätigt.

                    Bild_2021-01-20_203053.png

                    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

                    dslraserD WszeneW 2 Antworten Letzte Antwort
                    0
                    • paul53P paul53

                      @wszene sagte: Ich kann mit den Alias z.B, Dein AV-Receiver lauter machen. Aber nur wenn ich direkt drauf drucke also im Browser direkt auf den Button

                      Prüfe mal mit dem Test-Blockly wie sich der Datenpunkt "VolumeDown" verhält, wenn man den Button manuell (Tab Objekte) betätigt.

                      Bild_2021-01-20_203053.png

                      dslraserD Offline
                      dslraserD Offline
                      dslraser
                      Forum Testing Most Active
                      schrieb am zuletzt editiert von
                      #10

                      @paul53
                      ich habe bei mir gerade mal nachgesehen. Im Harmony Adapter sind die Button tatsächlich alle mit type number.
                      Ist das eigentlich okay ?

                      paul53P 1 Antwort Letzte Antwort
                      0
                      • dslraserD dslraser

                        @paul53
                        ich habe bei mir gerade mal nachgesehen. Im Harmony Adapter sind die Button tatsächlich alle mit type number.
                        Ist das eigentlich okay ?

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

                        @dslraser sagte: Im Harmony Adapter sind die Button tatsächlich alle mit type number.
                        Ist das eigentlich okay ?

                        Nein

                        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

                        dslraserD 2 Antworten Letzte Antwort
                        0
                        • paul53P paul53

                          @dslraser sagte: Im Harmony Adapter sind die Button tatsächlich alle mit type number.
                          Ist das eigentlich okay ?

                          Nein

                          dslraserD Offline
                          dslraserD Offline
                          dslraser
                          Forum Testing Most Active
                          schrieb am zuletzt editiert von
                          #12

                          @paul53
                          nur ein Beispiel...

                          Screenshot_20210120-203711_Chrome.jpg

                          1 Antwort Letzte Antwort
                          0
                          • WszeneW Wszene

                            @paul53

                            Der Orginal DP ist vom Harmony Adapter da ist es auch ein button

                            EDIT:
                            Ich habe es jetzt nochmal mit steuere probiert
                            Mit dem Originalen DP geht es aber wieder nicht mit dem Alias

                            Hier mal das was das Log dazu sagt

                            javascript.0	2021-01-20 20:22:30.122	warn	(1070) at processTimers (internal/timers.js:497:7)
                            javascript.0	2021-01-20 20:22:30.122	warn	(1070) at listOnTimeout (internal/timers.js:556:17)
                            javascript.0	2021-01-20 20:22:30.118	warn	(1070) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1475:29)
                            javascript.0	2021-01-20 20:22:30.118	warn	(1070) at Object.setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1417:20)
                            javascript.0	2021-01-20 20:22:30.116	warn	(1070) You are assigning a boolean to the state "harmony.0.Fernbedienung.Bose-AV-Receiver.VolumeUp" which expects a number. Please fix your code to use a number or change the state type to boolean. T
                            
                            paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von paul53
                            #13

                            @wszene sagte in Alias mit Script erstellen - Button funktionieren nicht:

                            Hier mal das was das Log dazu sagt

                            Die Warnung ist normal, wenn true auf einen Datenpunkt vom Typ "number" geschrieben wird.

                            Ändere mal den Alias common (type, min raus, read und alias.write), damit er nach "boolean" wandelt:

                              "common": {
                                "name": "AV-Receiver - Leiser",
                                "role": "button",
                                "type": "boolean",
                                "write": true,
                                "read": false,
                                "alias": {
                                  "id": "harmony.0.Fernbedienung.Bose-AV-Receiver.VolumeDown",
                                  "write": "val ? 1 : 0"
                                },
                                "desc": "per Script erstellt"
                              },
                            

                            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

                            WszeneW 1 Antwort Letzte Antwort
                            0
                            • paul53P paul53

                              @wszene sagte: Ich kann mit den Alias z.B, Dein AV-Receiver lauter machen. Aber nur wenn ich direkt drauf drucke also im Browser direkt auf den Button

                              Prüfe mal mit dem Test-Blockly wie sich der Datenpunkt "VolumeDown" verhält, wenn man den Button manuell (Tab Objekte) betätigt.

                              Bild_2021-01-20_203053.png

                              WszeneW Offline
                              WszeneW Offline
                              Wszene
                              schrieb am zuletzt editiert von
                              #14

                              @paul53 sagte in Alias mit Script erstellen - Button funktionieren nicht:

                              @wszene sagte: Ich kann mit den Alias z.B, Dein AV-Receiver lauter machen. Aber nur wenn ich direkt drauf drucke also im Browser direkt auf den Button

                              Prüfe mal mit dem Test-Blockly wie sich der Datenpunkt "VolumeDown" verhält, wenn man den Button manuell (Tab Objekte) betätigt.

                              Bild_2021-01-20_203053.png

                              Hier die Ausgabe

                              javascript.0	2021-01-20 20:42:53.243	info	(1070) script.js.Zum_Testen.Test-Skript: Leiser: 0 , ack: true
                              harmony.0	2021-01-20 20:42:53.225	info	(1055) hub busy, stateChange delayed: harmony.0.Fernbedienung.Bose-AV-Receiver.VolumeUp = true
                              

                              Meine Hard- & Software:

                              • MSI Cubi 5 10M-049DE mit Proxmox
                              • CC2652P Zigbee Stick
                              • Steckdosen mit Tasmota und Zigbee
                              • Lichtschalter mit Tasmota
                              • IKEA TRÅDFRI Glühbirnen
                              • Aqara Sensoren
                              paul53P 1 Antwort Letzte Antwort
                              0
                              • WszeneW Wszene

                                @paul53 sagte in Alias mit Script erstellen - Button funktionieren nicht:

                                @wszene sagte: Ich kann mit den Alias z.B, Dein AV-Receiver lauter machen. Aber nur wenn ich direkt drauf drucke also im Browser direkt auf den Button

                                Prüfe mal mit dem Test-Blockly wie sich der Datenpunkt "VolumeDown" verhält, wenn man den Button manuell (Tab Objekte) betätigt.

                                Bild_2021-01-20_203053.png

                                Hier die Ausgabe

                                javascript.0	2021-01-20 20:42:53.243	info	(1070) script.js.Zum_Testen.Test-Skript: Leiser: 0 , ack: true
                                harmony.0	2021-01-20 20:42:53.225	info	(1055) hub busy, stateChange delayed: harmony.0.Fernbedienung.Bose-AV-Receiver.VolumeUp = true
                                
                                paul53P Offline
                                paul53P Offline
                                paul53
                                schrieb am zuletzt editiert von
                                #15

                                @wszene sagte: javascript.0 2021-01-20 20:42:53.243 info (1070) script.js.Zum_Testen.Test-Skript: Leiser: 0 , ack: true

                                Da muss vorher noch ein Log mit ack: false kommen.

                                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                1 Antwort Letzte Antwort
                                0
                                • paul53P paul53

                                  @dslraser sagte: Im Harmony Adapter sind die Button tatsächlich alle mit type number.
                                  Ist das eigentlich okay ?

                                  Nein

                                  dslraserD Offline
                                  dslraserD Offline
                                  dslraser
                                  Forum Testing Most Active
                                  schrieb am zuletzt editiert von
                                  #16

                                  @paul53 sagte in Alias mit Script erstellen - Button funktionieren nicht:

                                  @dslraser sagte: Im Harmony Adapter sind die Button tatsächlich alle mit type number.
                                  Ist das eigentlich okay ?

                                  Nein

                                  ich habe mal ein issue angelegt

                                  https://github.com/Pmant/ioBroker.harmony/issues/68

                                  1 Antwort Letzte Antwort
                                  1
                                  • paul53P paul53

                                    @wszene sagte in Alias mit Script erstellen - Button funktionieren nicht:

                                    Hier mal das was das Log dazu sagt

                                    Die Warnung ist normal, wenn true auf einen Datenpunkt vom Typ "number" geschrieben wird.

                                    Ändere mal den Alias common (type, min raus, read und alias.write), damit er nach "boolean" wandelt:

                                      "common": {
                                        "name": "AV-Receiver - Leiser",
                                        "role": "button",
                                        "type": "boolean",
                                        "write": true,
                                        "read": false,
                                        "alias": {
                                          "id": "harmony.0.Fernbedienung.Bose-AV-Receiver.VolumeDown",
                                          "write": "val ? 1 : 0"
                                        },
                                        "desc": "per Script erstellt"
                                      },
                                    
                                    WszeneW Offline
                                    WszeneW Offline
                                    Wszene
                                    schrieb am zuletzt editiert von
                                    #17

                                    @paul53 sagte in Alias mit Script erstellen - Button funktionieren nicht:

                                    @wszene sagte in Alias mit Script erstellen - Button funktionieren nicht:

                                    Hier mal das was das Log dazu sagt

                                    Die Warnung ist normal, wenn true auf einen Datenpunkt vom Typ "number" geschrieben wird.

                                    Ändere mal den Alias common (type, min raus, read und alias.write), damit er nach "boolean" wandelt:

                                      "common": {
                                        "name": "AV-Receiver - Leiser",
                                        "role": "button",
                                        "type": "boolean",
                                        "write": true,
                                        "read": false,
                                        "alias": {
                                          "id": "harmony.0.Fernbedienung.Bose-AV-Receiver.VolumeDown",
                                          "write": "val ? 1 : 0"
                                        },
                                        "desc": "per Script erstellt"
                                      },
                                    

                                    Mit der Änderung klappt es
                                    Gibt es eine Mäglichkeit diese auch direkt mit dem Script zu machen also beim erstellen des Alias?

                                    Meine Hard- & Software:

                                    • MSI Cubi 5 10M-049DE mit Proxmox
                                    • CC2652P Zigbee Stick
                                    • Steckdosen mit Tasmota und Zigbee
                                    • Lichtschalter mit Tasmota
                                    • IKEA TRÅDFRI Glühbirnen
                                    • Aqara Sensoren
                                    paul53P 1 Antwort Letzte Antwort
                                    0
                                    • WszeneW Wszene

                                      @paul53 sagte in Alias mit Script erstellen - Button funktionieren nicht:

                                      @wszene sagte in Alias mit Script erstellen - Button funktionieren nicht:

                                      Hier mal das was das Log dazu sagt

                                      Die Warnung ist normal, wenn true auf einen Datenpunkt vom Typ "number" geschrieben wird.

                                      Ändere mal den Alias common (type, min raus, read und alias.write), damit er nach "boolean" wandelt:

                                        "common": {
                                          "name": "AV-Receiver - Leiser",
                                          "role": "button",
                                          "type": "boolean",
                                          "write": true,
                                          "read": false,
                                          "alias": {
                                            "id": "harmony.0.Fernbedienung.Bose-AV-Receiver.VolumeDown",
                                            "write": "val ? 1 : 0"
                                          },
                                          "desc": "per Script erstellt"
                                        },
                                      

                                      Mit der Änderung klappt es
                                      Gibt es eine Mäglichkeit diese auch direkt mit dem Script zu machen also beim erstellen des Alias?

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

                                      @wszene sagte: Gibt es eine Mäglichkeit diese auch direkt mit dem Script zu machen also beim erstellen des Alias?

                                      Ja, außer common.read = false. Hier der Anfang:

                                      // Original-Datenpunkt
                                      const idOrigin = 'sonoff.0.Lichtschalter-Stube.POWER1'; 
                                      // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
                                      // Bei Nicht-Verwendung Leerstring '' zuweisen
                                      const idRead = '';
                                       
                                      // Alias-Datenpunkt
                                      const idAlias = '01_Stube.01_Schalter.Schalter-Esstisch';
                                       
                                      var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
                                       
                                      // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
                                      nameAlias = 'Schalter - Esstisch';
                                      desc = 'per Script erstellt';
                                      typeAlias = 'boolean'; // oder 'number'
                                      // read = "val < 0 ? -val : 0"; // Erkennung "Aus" --> false erfolgt automatisch  
                                      write = "val ? 1 : 0";
                                      

                                      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

                                      WszeneW 1 Antwort Letzte Antwort
                                      0
                                      • paul53P paul53

                                        @wszene sagte: Gibt es eine Mäglichkeit diese auch direkt mit dem Script zu machen also beim erstellen des Alias?

                                        Ja, außer common.read = false. Hier der Anfang:

                                        // Original-Datenpunkt
                                        const idOrigin = 'sonoff.0.Lichtschalter-Stube.POWER1'; 
                                        // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
                                        // Bei Nicht-Verwendung Leerstring '' zuweisen
                                        const idRead = '';
                                         
                                        // Alias-Datenpunkt
                                        const idAlias = '01_Stube.01_Schalter.Schalter-Esstisch';
                                         
                                        var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
                                         
                                        // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
                                        nameAlias = 'Schalter - Esstisch';
                                        desc = 'per Script erstellt';
                                        typeAlias = 'boolean'; // oder 'number'
                                        // read = "val < 0 ? -val : 0"; // Erkennung "Aus" --> false erfolgt automatisch  
                                        write = "val ? 1 : 0";
                                        
                                        WszeneW Offline
                                        WszeneW Offline
                                        Wszene
                                        schrieb am zuletzt editiert von
                                        #19

                                        @paul53 sagte in Alias mit Script erstellen - Button funktionieren nicht:

                                        common.read = false

                                        Was macht dieses Kommando nur für mein Verständniss

                                        Meine Hard- & Software:

                                        • MSI Cubi 5 10M-049DE mit Proxmox
                                        • CC2652P Zigbee Stick
                                        • Steckdosen mit Tasmota und Zigbee
                                        • Lichtschalter mit Tasmota
                                        • IKEA TRÅDFRI Glühbirnen
                                        • Aqara Sensoren
                                        paul53P 1 Antwort Letzte Antwort
                                        0
                                        • WszeneW Wszene

                                          @paul53 sagte in Alias mit Script erstellen - Button funktionieren nicht:

                                          common.read = false

                                          Was macht dieses Kommando nur für mein Verständniss

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

                                          @wszene sagte: nur für mein Verständniss

                                          Das bedeutet "write only", hat aber keine Auswirkung auf die Button-Funktionalität.

                                          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

                                          WszeneW 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

                                          879

                                          Online

                                          32.6k

                                          Benutzer

                                          81.9k

                                          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