Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Fragen / Antworten rund um die neue Alias Funktion

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Fragen / Antworten rund um die neue Alias Funktion

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @hg6806 last edited by paul53

      @hg6806
      Dann kopiere das Script, passe die Alias-ID und den Namen an und starte das Script.

      // Original-Datenpunkt
      const idOrigin = 'smartmeter.0.1-0:1_8_0_255.value';
       
      // Alias-Datenpunkt
      const idAlias = 'smartmeter.zaehler_1.bezug_total';
      var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
      // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
      nameAlias = 'Zähler 1 Bezug total';
      desc = 'per Script erstellt';
      // typeAlias = 'boolean'; // oder 'number'
      // read = "val < 20 ? true : false"; // Erkennung "Aus" --> false erfolgt automatisch  
      // write = "val ? 'Ein' : 'Aus'";
      // role = 'indicator';
      // 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 !
      
      function createAlias(idSrc, idDst) {
         if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn');
         else {
            var obj = {};
            obj.type = 'state';
            obj.common = getObject(idSrc).common;
            obj.common.alias = {};
            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(min !== undefined) obj.common.min = min;
            if(max !== undefined) obj.common.max = max;
            if(unit) obj.common.unit = unit;
            if(states) obj.common.states = states;
            if(custom && obj.common.custom) obj.common.custom = custom;
            obj.native = {};
            setObject(idDst, obj);
            if(raum && getObject('enum.rooms.' + raum)) {
               let obj = getObject('enum.rooms.' + raum)
               obj.common.members.push(idDst);
               setObject('enum.rooms.' + raum, obj);
            }
            if(gewerk && getObject('enum.functions.' + gewerk)) {
               let obj = getObject('enum.functions.' + gewerk)
               obj.common.members.push(idDst);
               setObject('enum.functions.' + gewerk, obj);
            }
         } 
      }
       
      createAlias(idOrigin, 'alias.0.' + idAlias);
      

      Anschließend die Instanz admin.0 neu starten (nicht stoppen !).

      hg6806 1 Reply Last reply Reply Quote 0
      • hg6806
        hg6806 Most Active @paul53 last edited by

        @paul53
        Danke, aber wohin kopieren? Als normales Javascript?

        paul53 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @hg6806 last edited by

          @hg6806 sagte:

          Als normales Javascript?

          Ja.

          1 Reply Last reply Reply Quote 0
          • hg6806
            hg6806 Most Active last edited by hg6806

            Danke, hat soweit geklappt.
            Nun habe ich doch angefangen alle Smartmeterwerte in Alias zu schreiben.
            Damit ich einen Überblick bekomme habe ich sogar mal eine Excel Übersicht darüber erstellt.

            Fragen dazu, kann man hier die Alias-Werte auch runden, bzw die Nachkommastellen angeben?
            Ich habe mit den original Smartmeterwerten immer das Problem, dass durch die vielen Nachkommastellen die History-Werte immer sehr groß werden.

            Noch etwas off-topic. Kann man bei den Datenwerten irgendwie herausfinden wo die Werte überall benutzt werden? Vis, Flot, Javascript, etc.

            paul53 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @hg6806 last edited by

              @hg6806 sagte:

              kann man hier die Alias-Werte auch runden, bzw die Nachkommastellen angeben?

              Ja, siehe hier.

              1 Reply Last reply Reply Quote 0
              • hg6806
                hg6806 Most Active last edited by hg6806

                Moin!
                Hat soweit alles geklappt, habe für die meisten Smartmeter Werte Aliases angelegt.
                Doch seltsamerweise werden dieses irgendwann nicht mehr aktualisiert.
                Aber alle Wert zur gleichen Zeit.
                Wenn ich den Admin neu starte geht wieder alles für ein paar Stunden, dann stoppt das Ganze wieder.

                Woran liegt das und wie kann ich das fixen?

                1 Reply Last reply Reply Quote 0
                • hg6806
                  hg6806 Most Active last edited by

                  Nach einem 2. Neustart läuft nun alles stabil für einige Tage.

                  Noch eine Frage zu Alias. Kann man von einem Datenpunkt zwei Aliase erstellen oder gibt das irgendwo einen Konflikt.
                  Der Monteur hat leider den Stromzähler falsch deklariert und jetzt wollte ich ein 2. Alias erstellen und dann wenn Sourceanalytix mit diesem Punkt parallel läuft und genügend Daten vorhanden sind den alten löschen.
                  Sollte doch gehen, oder?

                  Garfonso 1 Reply Last reply Reply Quote 0
                  • Garfonso
                    Garfonso Developer @hg6806 last edited by

                    @hg6806
                    Du kannst beliebig viele aliase für einen Datenpunkt erstellen.
                    Es kann sogar Sinn machen, das zu tun und zwar, wenn du verschiedene Funktionen in read/write hast. So könntest du für einen Tür-Kontakt, nur einen Datenpunkt closed=true, wenn geschlossen ist zwei aliase machen, einen einfach für closed und einen für opened mir read: !val -> schon hättest du beide.

                    Das ist sehr hilfreich, wenn man seine Geräte auf diese Weise etwas angleicht. 🙂 (habe ich bei einigen Schließkontakten bereits gemacht und ich habe zwei Dachfenster, die unterschiedlicher Meinung waren ob sie jetzt bei 100% offen oder zu sind -> habe ich im vis irgendwie immer falsch gemacht, jetzt sind sie gleich und ich kriege es endlich hin, yeah. 🙂 ).

                    1 Reply Last reply Reply Quote 0
                    • hg6806
                      hg6806 Most Active last edited by

                      Ok, danke für die Info.
                      Hatte das parallel schon gestartet und läuft auch.
                      Manchmal muss man aber komischerweise den Admin 2x restarten.

                      1 Reply Last reply Reply Quote 0
                      • M
                        manmac last edited by

                        Hi, ich würde gerne einen alias für den fibaro RGWB adapter anlegen. der benötigt einen string mit #RRGGBBWW und ich würde das gerne jeweils auf einen alias für R/G/B/W getrennt und jeweils einem integer im range 0-100 mappen.

                        hat das schon jemand von euch probiert?

                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @manmac last edited by paul53

                          @manmac sagte:

                          hat das schon jemand von euch probiert?

                          Nein, aber als Ansatz z.B. für grün versuche mal

                          "read": "Math.round(parseInt(val.substring(3, 5), 16) / 2.55)"
                          

                          Mit "write" wird es aber per Alias nicht funktionieren, da nur einer von 4 erforderlichen Werten vorliegt.

                          M 1 Reply Last reply Reply Quote 0
                          • M
                            manmac @paul53 last edited by manmac

                            @paul53 said in Fragen / Antworten rund um die neue Alias Funktion:

                            "read": "Math.round(parseInt(val.substring(3, 5), 16) / 2.55)"

                            danke 👍 , das hilft schonmal sehr. jetzt muss ich nur mehr das "write" kommando hinbekommen ... das muss ich mir noch überlegen 🤔 kann man eigentlich den alias wert auch über ein script befüllen lassen?

                            paul53 1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 @manmac last edited by

                              @manmac sagte:

                              beim schreiben auch den aktuellen wert der anderen farben brauche, sonst überschreibe ich ja beim setzen einer farbe den wert der andern

                              Das meinte ich mit

                              da nur einer von 4 erforderlichen Werten vorliegt.

                              M 1 Reply Last reply Reply Quote 0
                              • M
                                manmac @paul53 last edited by

                                @paul53

                                du hast schneller geantwortet, als ich dachte 😉
                                🤔 kann man eigentlich den alias wert auch über ein script befüllen lassen?

                                paul53 1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @manmac last edited by

                                  @manmac sagte:

                                  kann man eigentlich den alias wert auch über ein script befüllen lassen?

                                  Ja, dafür ist der Alias gedacht, dass man per Script nicht auf Adapter-Datenpunkte zugreifen muss. Möchtest Du allerdings auch schreibend den #RRGGBBWW-Wert ändern, wirst Du um ein Script nicht herum kommen.

                                  M 1 Reply Last reply Reply Quote 0
                                  • M
                                    manmac @paul53 last edited by

                                    @paul53

                                    ja, da bin ich grad dran.

                                    hab mich nur gefragt, ob ich statt dem "write":"val = ..." auch "write":"<get return value from script>" machen kann.

                                    Garfonso 1 Reply Last reply Reply Quote 0
                                    • Garfonso
                                      Garfonso Developer @manmac last edited by

                                      @manmac
                                      Nein, das geht bisher nicht. Es geht auch bisher nicht in read/write auf andere states zuzugreifen, leider. Damit könnte man dein Problem lösen.

                                      Im Moment würde ich stark empfehlen ein skript mit eigenen datenpunkten dazwischen zu schalten. Also dann Alias tatsächlich nur alias von javascript.x.irgendwas.green -> da dann im skript den RGBW Datenpunkt abonieren und den eigenen Datenpunkt befüllen bzw. umgekehrt vom eigenen Datenpunkt aus den RGBW Datenpunkt setzen (da kannst du ja alle 4 Datenpunkte im Skript leicht abfragen).

                                      1 Reply Last reply Reply Quote 0
                                      • hg6806
                                        hg6806 Most Active last edited by

                                        Noch eine Frage zu Alias.
                                        Ich habe mehrere Datenpunkte aus MQTT wie Flowmeter oder ein induktiver Sensor für die Wasseruhr. Wenn ich den ESP dann neustartet ist "Total Count" dann wieder Null.
                                        Kann man aus dem MQTT Datenpunkt kein Alias erstellen, der das erkennt und nach einem Reboot oder Reset die Werte dann aufaddiert?
                                        Wenn ja, wie?

                                        paul53 Garfonso 2 Replies Last reply Reply Quote 0
                                        • paul53
                                          paul53 @hg6806 last edited by

                                          @hg6806 sagte:

                                          Kann man aus dem MQTT Datenpunkt kein Alias erstellen, der das erkennt

                                          Nein, für solche (speziellen) Anforderungen benötigt man ein Script, da der Alias ein "Abbild" des Original-Datenpunktes mit nur geringen, vordefinierten Abweichungen ist.

                                          1 Reply Last reply Reply Quote 0
                                          • Garfonso
                                            Garfonso Developer @hg6806 last edited by

                                            @hg6806
                                            Das hört sich etwas nach einem Anwendungsfall für Sourceanalytix an.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            837
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            alias js-controller
                                            85
                                            610
                                            127151
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo