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
    16
    1
    968

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

[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 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
                          • paul53P paul53

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

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

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

                            @paul53
                            OK danke Dir
                            So funktioniert es
                            Da werde ich jetzt erstmal all meine Aliase die als Button sind neu anlegen

                            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
                            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

                            863

                            Online

                            32.6k

                            Benutzer

                            82.0k

                            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