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. ioBroker Allgemein
  4. Negative Werte in FLOT positiv darstellen

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    5
    1
    46

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

Negative Werte in FLOT positiv darstellen

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
25 Beiträge 6 Kommentatoren 3.8k 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.
  • 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 Nicht stören
    HomoranH Nicht stören
    Homoran
    Global Moderator Administrators
    schrieb am zuletzt editiert von
    #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 - es gibt fast nichts, was nicht auch für andere interessant ist.

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

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

    paul53P 1 Antwort Letzte Antwort
    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
      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von
        #13

        @paul53
        @Homoran

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

        paul53P HomoranH 2 Antworten Letzte Antwort
        0
        • T Offline
          T Offline
          Thirteen37
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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 Nicht stören
            HomoranH Nicht stören
            Homoran
            Global Moderator Administrators
            schrieb am zuletzt editiert von
            #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 - es gibt fast nichts, was nicht auch für andere interessant ist.

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

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

            1 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
              0
              • Ralla66R Ralla66

                @paul53
                @Homoran

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

                HomoranH Nicht stören
                HomoranH Nicht stören
                Homoran
                Global Moderator Administrators
                schrieb am zuletzt editiert von
                #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 - es gibt fast nichts, was nicht auch für andere interessant ist.

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

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

                Ralla66R 1 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                  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 Nicht stören
                    HomoranH Nicht stören
                    Homoran
                    Global Moderator Administrators
                    schrieb am zuletzt editiert von
                    #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 - es gibt fast nichts, was nicht auch für andere interessant ist.

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

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

                    Ralla66R paul53P 2 Antworten Letzte Antwort
                    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
                      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                      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
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        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
                          schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
                          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 Nicht stören
                            HomoranH Nicht stören
                            Homoran
                            Global Moderator Administrators
                            schrieb am zuletzt editiert von
                            #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 - es gibt fast nichts, was nicht auch für andere interessant ist.

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

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

                            1 Antwort Letzte Antwort
                            0
                            • wendy2702W Offline
                              wendy2702W Offline
                              wendy2702
                              schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                              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
                                schrieb am zuletzt editiert von
                                #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 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
                                FAQ Cloud / IOT
                                HowTo: Node.js-Update
                                HowTo: Backup/Restore
                                Downloads
                                BLOG

                                355

                                Online

                                32.5k

                                Benutzer

                                81.7k

                                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