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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Negative Werte in FLOT positiv darstellen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators @Thirteen37 last edited by Homoran

      @Thirteen37 muss ich mal direkt nachsehen wie ich das damals gemacht habe. hatte auch erst alles negativ.

      soll wohl dann etwa so aussehen, oder?
      positives.png

      die dünne hellgelbe Linie ist die Einspeisung, also der "eigentlich" negative Wert vom Zweirichtungszähler

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

        Genau, es ist nämlich auf den ersten Blick etwas verwirrend, dass meine Linie immer weiter nach oben (Richtung 0) geht, je weniger Sonnenlicht da ist 😂
        Ist zwar logisch aber das wirkt erst so, als würde die Anlage gerade mehr KWh einspeisen 🤣

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

          @Thirteen37 Habe gerade noch einen alten Screenshot gesucht und gefunden:
          Kostal_Solar.png

          mit der richtigen Markierung kann man aber damit leben

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

            @Homoran
            @paul53

            so rein Interesse halber,
            geht das nicht mit einem kleinem Blockly ?
            Wenn du Bsp.: -5xxx hast einfach das - nicht betrachten und die 5xxx
            in einen neuen Datenpunkt schreiben ?

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

              @Ralla66 sagte in Negative Werte in FLOT positiv darstellen:

              geht das nicht mit einem kleinem Blockly ?
              Wenn du Bsp.: -5xxx hast einfach das - nicht betrachten und die 5xxx
              in einen neuen Datenpunkt schreiben ?

              so habe ich das gemacht.

              Heute würde man ein Alias nehmen

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

                @Homoran
                ja ok Alias, drehen von - nach + bleibt aber.

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

                  @Ralla66 sagte in Negative Werte in FLOT positiv darstellen:

                  ja ok Alias, drehen von - nach + bleibt aber.

                  ich habe mich noch nie mit aliasen beschäftigt, angeblichkann man da auch Rechenoperationen einbinden

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

                    @Homoran sagte:

                    angeblichkann man da auch Rechenoperationen einbinden

                    Nicht nur angeblich.

                    @Ralla66 sagte in Negative Werte in FLOT positiv darstellen:

                    drehen von - nach + bleibt aber.

                    Das ist mit Alias eine leichte Übung.

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

                      @paul53 Wieso wusste ich, dass du das sagen wirst 😉

                      Warten wir erst einmal auf den TE.
                      Wenn es bei ihm so läuft wie bei mir muss er die positive und die negative Wirkleistung auf zwei Datenpunkte Vverteilen um sinnvoll damit zu arbeiten negative Werte sind die Einspeisung und positive Werte sind der Bezug.
                      Sinnvoll ist es IMHO nur, wenn man das splittet in zwei positive Werte (Einspeisung/Bezug)

                      geht so etwas etwa auch mit Aliasen????

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

                        @Homoran sagte :

                        splittet in zwei positive Werte (Einspeisung/Bezug)
                        geht so etwas etwa auch mit Aliasen????

                        Ja (gerade getestet).
                        Mit Invertierung:

                            "alias": {
                              "id": "0_userdata.0.Aussen.Klima.Temperatur",
                              "read": "val < 0 ? -val : 0"
                            }
                        
                        Ralla66 1 Reply Last reply Reply Quote 0
                        • Ralla66
                          Ralla66 Most Active @paul53 last edited by

                          @paul53
                          @Homoran

                          geht das auch für Newbies in Blockly ?
                          Also Alias 1, 2 usw Invertieren.
                          Aus reiner Neugierde.

                          paul53 Homoran 2 Replies Last reply Reply Quote 0
                          • T
                            Thirteen37 last edited by

                            Also ich bin selbst auch ganz neu im Thema ioBroker und muss mich erst zurecht finden 😁
                            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.

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

                              @Thirteen37 Also hast du "nur" einen Wert und der ist immer negativ?

                              dann wäre ein alias ja für dich am besten geeignet

                              1 Reply Last reply Reply Quote 0
                              • 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
                                            • First post
                                              Last post

                                            Support us

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

                                            910
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

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