Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Negative Werte in FLOT positiv darstellen

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    227

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.5k

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

Negative Werte in FLOT positiv darstellen

Scheduled Pinned Locked Moved ioBroker Allgemein
25 Posts 6 Posters 4.0k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • HomoranH Homoran

    @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

    Ralla66R Offline
    Ralla66R Offline
    Ralla66
    Most Active
    wrote on last edited by
    #8

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

    HomoranH 1 Reply Last reply
    0
    • Ralla66R Ralla66

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

      HomoranH Do not disturb
      HomoranH Do not disturb
      Homoran
      Global Moderator Administrators
      wrote on last edited by
      #9

      @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

      kein Support per PN! - Fragen im Forum stellen -

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      ioBroker freut sich über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      paul53P 1 Reply Last reply
      0
      • HomoranH Homoran

        @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

        paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #10

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

        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

        HomoranH 1 Reply Last reply
        0
        • paul53P paul53

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

          HomoranH Do not disturb
          HomoranH Do not disturb
          Homoran
          Global Moderator Administrators
          wrote on last edited by
          #11

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

          kein Support per PN! - Fragen im Forum stellen -

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          ioBroker freut sich über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          paul53P 1 Reply Last reply
          0
          • HomoranH Homoran

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

            paul53P Offline
            paul53P Offline
            paul53
            wrote on last edited by paul53
            #12

            @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"
                }
            

            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

            Ralla66R 1 Reply Last reply
            0
            • paul53P 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"
                  }
              
              Ralla66R Offline
              Ralla66R Offline
              Ralla66
              Most Active
              wrote on last edited by
              #13

              @paul53
              @Homoran

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

              paul53P HomoranH 2 Replies Last reply
              0
              • T Offline
                T Offline
                Thirteen37
                wrote on last edited by
                #14

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

                HomoranH 1 Reply Last reply
                0
                • T Thirteen37

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

                  HomoranH Do not disturb
                  HomoranH Do not disturb
                  Homoran
                  Global Moderator Administrators
                  wrote on last edited by
                  #15

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

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

                  kein Support per PN! - Fragen im Forum stellen -

                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                  ioBroker freut sich über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                  1 Reply Last reply
                  0
                  • Ralla66R Ralla66

                    @paul53
                    @Homoran

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

                    paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by paul53
                    #16

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

                    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 Reply Last reply
                    0
                    • Ralla66R Ralla66

                      @paul53
                      @Homoran

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

                      HomoranH Do not disturb
                      HomoranH Do not disturb
                      Homoran
                      Global Moderator Administrators
                      wrote on last edited by
                      #17

                      @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

                      kein Support per PN! - Fragen im Forum stellen -

                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                      ioBroker freut sich über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

                      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                      Ralla66R 1 Reply Last reply
                      0
                      • HomoranH Homoran

                        @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

                        Ralla66R Offline
                        Ralla66R Offline
                        Ralla66
                        Most Active
                        wrote on last edited by Ralla66
                        #18

                        @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 +.

                        HomoranH 1 Reply Last reply
                        0
                        • Ralla66R 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 +.

                          HomoranH Do not disturb
                          HomoranH Do not disturb
                          Homoran
                          Global Moderator Administrators
                          wrote on last edited by
                          #19

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

                          kein Support per PN! - Fragen im Forum stellen -

                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                          ioBroker freut sich über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

                          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                          Ralla66R paul53P 2 Replies Last reply
                          0
                          • HomoranH Homoran

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

                            Ralla66R Offline
                            Ralla66R Offline
                            Ralla66
                            Most Active
                            wrote on last edited by Ralla66
                            #20

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

                            paul53P 1 Reply Last reply
                            0
                            • HomoranH Homoran

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

                              paul53P Offline
                              paul53P Offline
                              paul53
                              wrote on last edited by
                              #21

                              @Homoran sagte:

                              üblicherweise unter alias.0

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

                              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 Reply Last reply
                              0
                              • Ralla66R 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.

                                paul53P Offline
                                paul53P Offline
                                paul53
                                wrote on last edited by paul53
                                #22

                                @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  
                                

                                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

                                HomoranH M 2 Replies Last reply
                                0
                                • paul53P 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  
                                  
                                  HomoranH Do not disturb
                                  HomoranH Do not disturb
                                  Homoran
                                  Global Moderator Administrators
                                  wrote on last edited by
                                  #23

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

                                  kein Support per PN! - Fragen im Forum stellen -

                                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                  ioBroker freut sich über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

                                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                  1 Reply Last reply
                                  0
                                  • wendy2702W Offline
                                    wendy2702W Offline
                                    wendy2702
                                    wrote on last edited by wendy2702
                                    #24

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

                                    Bitte keine Fragen per PN, die gehören ins Forum!

                                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                    1 Reply Last reply
                                    0
                                    • paul53P 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  
                                      
                                      M Offline
                                      M Offline
                                      mooly
                                      wrote on last edited by
                                      #25

                                      @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
                                      0
                                      Reply
                                      • Reply as topic
                                      Log in to reply
                                      • Oldest to Newest
                                      • Newest to Oldest
                                      • Most Votes


                                      Support us

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

                                      260

                                      Online

                                      32.7k

                                      Users

                                      82.5k

                                      Topics

                                      1.3m

                                      Posts
                                      Community
                                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                      ioBroker Community 2014-2025
                                      logo
                                      • Login

                                      • Don't have an account? Register

                                      • Login or register to search.
                                      • First post
                                        Last post
                                      0
                                      • Home
                                      • Recent
                                      • Tags
                                      • Unread 0
                                      • Categories
                                      • Unreplied
                                      • Popular
                                      • GitHub
                                      • Docu
                                      • Hilfe