Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Negative Werte in FLOT positiv darstellen

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Negative Werte in FLOT positiv darstellen

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

      @Ralla66 sagte:

      geht das auch für Newbies in Blockly ?

      Was willst Du mit Blockly machen ? Alias-Datenpunkte werden vom js-controller ausgewertet und aktualisiert.

      1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Ralla66 last edited by

        @Ralla66 Du bringst mich jetzt etwas mit deiner Verwendung des Begriffs Alias ins Schleudern.

        Mit Blockly würdest du in einen eigenen Datenpunkt schreiben, ein Alias übernimmt das automatisch für dich ohne Blockly

        Ralla66 1 Reply Last reply Reply Quote 0
        • Ralla66
          Ralla66 Most Active @Homoran last edited by Ralla66

          @Homoran
          @paul53

          Alias hatte ich verstanden als globalen Datenpunkt der in zB mehreren Scripten verwendet werden kann.
          So ne Art globale Variable die auch mehr kann.
          Blockly dafür diesen Alias oder viele,
          von - nach + zu schaufeln.
          Beispiel oben, man kann ja auch 3 Minus Werte haben.
          Wie wäre die verkasperung in Blockly 3 Aliase von - nach +.

          Homoran 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @Ralla66 last edited by

            @Ralla66 nee, nicht ganz.

            Ein Alias ist seit einiger Zeit möglich im Admin zu erstellen, üblicherweise unter alias.0

            Sinnvoll z.B. wenn man komplexe Scripte oder Visus hat und dann auf einmal ein Gerät defekt ist und durch eins mit einer anderen ID ersetzt wird.
            Arbeitet man grundsätzlich mit Aliasen macht das dann gar nichts, dann weist du dem Alias einfach die andere ID zu und in deinen Skripten kann weiter mit dem selben Alias gearbeitet werden.

            Nachdem ich aber mehrere Posts von @paul53 gelesen hatte habe ich gemerkt, dass der Alias ein noch viel mächtigeres Tool sein muss, indem auch Transformationen der Werte in einen Alias durchgeführt werden können.

            @paul53 legt so einen Alias mit all diesen Funktionen immer über javascript an, weil das manuelle Anlegen wohl noch nicht so komfortabel ist.
            Aber sonst haben Aliase mit js/Blockly nichts zu tun.

            ...und ich habe noch mehr zu lernen :seufz:

            Ralla66 paul53 2 Replies Last reply Reply Quote 0
            • Ralla66
              Ralla66 Most Active @Homoran last edited by Ralla66

              @Homoran
              Schwierig zu beschreiben,
              entweder 1 Alias umschreiben von - nach +hier einzelnt,
              oder per Blockly viele Aliase umschreiben von - nach +.
              Wobei für ein Flot Wert wohl per Alias von paul53 reicht.
              Wenn er uns verrät wie das geht.

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

                @Homoran sagte:

                üblicherweise unter alias.0

                Ausschließlich unter alias.0, denn nur dort werden sie vom js-controller als Alias behandelt.

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

                  @Ralla66 sagte:

                  Wenn er uns verrät wie das geht.

                  Passe im folgenden Script idOrigin an, dann wird durch einmaliges Aktivieren des Scripts der Alias erzeugt, der bei Werten kleiner 0 invertiert.

                  // Original-Datenpunkt
                  const idOrigin = '...'; // ID eingeben !
                  // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
                  // Bei Nicht-Verwendung Leerstring '' zuweisen
                  const idRead = ''; //'knx.0.Wohnen.Licht.Esstisch_Status'/*Wohnen Licht Esstisch Status*/;
                   
                  // Alias-Datenpunkt
                  const idAlias = 'PV.Einspeisung';
                  var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
                  
                  // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
                  nameAlias = 'PV Einspeisung';
                  desc = 'per Script erstellt';
                  // typeAlias = 'boolean'; // oder 'number'
                  read = "val < 0 ? -val : 0"; // Erkennung "Aus" --> false erfolgt automatisch  
                  // write = "val ? true : true";
                  // 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(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 && 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);
                  

                  Wenn anschließend idAlias, nameAlias und read angepasst werden, kann gleich noch der Alias für den Bezug erzeugt werden.

                  read = "val > 0 ? val : 0"; // Bezug nur bei positiven Werten  
                  
                  Homoran M 2 Replies Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @paul53 last edited by

                    @paul53 wobei ich da noch auf Antwort von @Thirteen37 warte, was er da genau machen will. bei seinem letzter post sagte er

                    @Thirteen37 sagte in Negative Werte in FLOT positiv darstellen:

                    Momentan habe ich nur die Möglichkeit meine Solaranlage zu messen und den Verbrauch des Hauses nicht, darum würde ich nur ein einfaches Diagramm mit Flot erzeugen wollen, mit einer einzigen Linie für die Solaranlage.

                    1 Reply Last reply Reply Quote 0
                    • wendy2702
                      wendy2702 last edited by wendy2702

                      Huch, leben in dem alten Thread von mir.

                      Ich habe auch einen Wert der per Modbus ausgelesen wird un immer negativ ist.

                      Wie kann ich den denn am einfachsten positiv bekommen?

                      Muss zugeben ich habe beim lesen mit Alias den faden aktuell verloren und bei dem Script bin ich mir nicht sicher ob es das richtige für mich ist oder ob es nur benötigt wird wenn der Wert auch positiv werden kann.

                      EDIT: HAT SICH ERLEDIGT. EIGENTLICH SELBSTERKLÄREND NACH DEM X-TEN LESEN 🙂

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

                        @paul53

                        Super lange her... aber ich habe aktuell genau dieses Problem. Habe dein Skript kopiert und die ID angepasst, aber unter alias finde ich die "PV.Einspeisung" nicht...

                        Mache ich etwas falsch?

                        Viele Grüße!

                        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

                        529
                        Online

                        31.7k
                        Users

                        79.6k
                        Topics

                        1.3m
                        Posts

                        6
                        25
                        2449
                        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