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. Visualisierung
  4. Grafana true/false anzeigen

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.4k

Grafana true/false anzeigen

Geplant Angeheftet Gesperrt Verschoben Visualisierung
vistemplate
13 Beiträge 4 Kommentatoren 7.5k Aufrufe 4 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.
  • SegwayS Segway

    Hallo,
    ich stehe grad auf dem Schlauch.
    Im Netz habe ich genau dieses Beispiel gefunden, was mir zeigt das es geht.

    Ich möchte einen Wert in Grafana anzeigen lassen, welches mir true / false liefert.
    Benutzen tue ich das Widget in Grafana STAT.
    Ebenso habe ich das value mapping gemacht aber ich bekomme ewig NO DATA.
    Was mache ich falsch ?

    f230c58c-8c43-4ff7-9130-6861b41ce3af-grafik.png ![Bild Text](Bild Link)

    crunchipC Abwesend
    crunchipC Abwesend
    crunchip
    Forum Testing Most Active
    schrieb am zuletzt editiert von crunchip
    #3

    @Segway sagte in Grafana true/false anzeigen:

    Ebenso habe ich das value mapping gemacht

    was gibt dein DP im Ursprung aus?
    (true/false) geht nicht, musst den DP umwandeln in (1/0), dann in Influx speichern als "Number"
    als Beispiel
    539197ce-46aa-470d-8de3-39864beaef44-image.png
    3465f5d5-0811-4434-804f-0948d768c041-image.png

    umgestiegen von Proxmox auf Unraid

    SegwayS 1 Antwort Letzte Antwort
    0
    • crunchipC crunchip

      @Segway sagte in Grafana true/false anzeigen:

      Ebenso habe ich das value mapping gemacht

      was gibt dein DP im Ursprung aus?
      (true/false) geht nicht, musst den DP umwandeln in (1/0), dann in Influx speichern als "Number"
      als Beispiel
      539197ce-46aa-470d-8de3-39864beaef44-image.png
      3465f5d5-0811-4434-804f-0948d768c041-image.png

      SegwayS Offline
      SegwayS Offline
      Segway
      schrieb am zuletzt editiert von
      #4

      @crunchip
      Ne nicht wirklich jetzt oder ?
      Hier der Wert
      97fdbabc-963f-444b-b14a-1e45df5bb831-grafik.png

      Muss ich jetzt zB über ein Blockly diese Werte in 0 und 1 umwandeln ? Oder geht das auch eleganter ?

      Gruß Dirk
      Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

      crunchipC 1 Antwort Letzte Antwort
      0
      • SegwayS Segway

        @crunchip
        Ne nicht wirklich jetzt oder ?
        Hier der Wert
        97fdbabc-963f-444b-b14a-1e45df5bb831-grafik.png

        Muss ich jetzt zB über ein Blockly diese Werte in 0 und 1 umwandeln ? Oder geht das auch eleganter ?

        crunchipC Abwesend
        crunchipC Abwesend
        crunchip
        Forum Testing Most Active
        schrieb am zuletzt editiert von
        #5

        @Segway du kannst nen 2ten DP anlegen(blockly) oder einfach nen alias anlegen

        umgestiegen von Proxmox auf Unraid

        SegwayS 1 Antwort Letzte Antwort
        0
        • crunchipC crunchip

          @Segway du kannst nen 2ten DP anlegen(blockly) oder einfach nen alias anlegen

          SegwayS Offline
          SegwayS Offline
          Segway
          schrieb am zuletzt editiert von
          #6

          @crunchip sagte in Grafana true/false anzeigen:

          @Segway du kannst nen 2ten DP anlegen(blockly) oder einfach nen alias anlegen

          Jo Blockly kriege ich ja irgendwie hin.
          Was meinst du mit ALIAS anlegen ? Habe ich noch nie gemacht - hört sich irgendwie einfacherer an als 1000 Blocklys zu machen :-)

          Gruß Dirk
          Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

          da_WoodyD crunchipC 2 Antworten Letzte Antwort
          0
          • SegwayS Segway

            @crunchip sagte in Grafana true/false anzeigen:

            @Segway du kannst nen 2ten DP anlegen(blockly) oder einfach nen alias anlegen

            Jo Blockly kriege ich ja irgendwie hin.
            Was meinst du mit ALIAS anlegen ? Habe ich noch nie gemacht - hört sich irgendwie einfacherer an als 1000 Blocklys zu machen :-)

            da_WoodyD Offline
            da_WoodyD Offline
            da_Woody
            schrieb am zuletzt editiert von da_Woody
            #7

            @Segway Alias anlegen
            hat den vorteil, bei gerätewechsel nur die id ändern und alles fuzt wieder.

            gruß vom Woody
            HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

            1 Antwort Letzte Antwort
            0
            • SegwayS Segway

              @crunchip sagte in Grafana true/false anzeigen:

              @Segway du kannst nen 2ten DP anlegen(blockly) oder einfach nen alias anlegen

              Jo Blockly kriege ich ja irgendwie hin.
              Was meinst du mit ALIAS anlegen ? Habe ich noch nie gemacht - hört sich irgendwie einfacherer an als 1000 Blocklys zu machen :-)

              crunchipC Abwesend
              crunchipC Abwesend
              crunchip
              Forum Testing Most Active
              schrieb am zuletzt editiert von crunchip
              #8

              @Segway Verwende ich eigentlich auch nicht, hab mittels Adapter "Geräte" einen Alias angelegt, für meinen Wasserverbrauch, beötige ich um die Kosten für Abwasser zu berechnen.
              Du kannst das aber auch manuell anlegen oder das Script verwenden, was hier im Forum zu finden ist, gibt mehrere Möglichkeiten
              hier als script musst nur deinen Datenpunkte angeben

              // Original-Datenpunkt
              const idOrigin = 'mqtt.0.switch.status'; 
              // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
              // Bei Nicht-Verwendung Leerstring '' zuweisen
              const idRead = '';
               
              // Alias-Datenpunkt
              const idAlias = 'Pool.Pumpe.Schalter';
               
              var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
               
              // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
              nameAlias = 'Poolpumpe Ein';
              desc = 'per Script erstellt';
              // typeAlias = 'boolean'; // oder 'number'
              // read = "val < 0 ? -val : 0"; // Erkennung "Aus" --> false erfolgt automatisch  
              // write = "val ? String(1) : String(0)";
              // 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(obj.common.type == 'number') {
                       if(min !== undefined) obj.common.min = min;
                       if(max !== undefined) obj.common.max = max;
                       if(unit) obj.common.unit = unit;
                    } else {
                       if(obj.common.min !== undefined) delete obj.common.min;
                       if(obj.common.max !== undefined) delete obj.common.max;
                       if(obj.common.unit) delete obj.common.unit;
                    }
                    if(states) obj.common.states = states;
                    if(custom && obj.common.custom) obj.common.custom = custom;
                    obj.native = {};
                    setObject(idDst, obj, function() {
                       if(idRd) setState(idRd, getState(idRd).val, true);
                       else setState(idSrc, getState(idSrc).val, true); 
                    });
                    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);
              
              

              umgestiegen von Proxmox auf Unraid

              SegwayS 2 Antworten Letzte Antwort
              0
              • crunchipC crunchip

                @Segway Verwende ich eigentlich auch nicht, hab mittels Adapter "Geräte" einen Alias angelegt, für meinen Wasserverbrauch, beötige ich um die Kosten für Abwasser zu berechnen.
                Du kannst das aber auch manuell anlegen oder das Script verwenden, was hier im Forum zu finden ist, gibt mehrere Möglichkeiten
                hier als script musst nur deinen Datenpunkte angeben

                // Original-Datenpunkt
                const idOrigin = 'mqtt.0.switch.status'; 
                // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
                // Bei Nicht-Verwendung Leerstring '' zuweisen
                const idRead = '';
                 
                // Alias-Datenpunkt
                const idAlias = 'Pool.Pumpe.Schalter';
                 
                var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
                 
                // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
                nameAlias = 'Poolpumpe Ein';
                desc = 'per Script erstellt';
                // typeAlias = 'boolean'; // oder 'number'
                // read = "val < 0 ? -val : 0"; // Erkennung "Aus" --> false erfolgt automatisch  
                // write = "val ? String(1) : String(0)";
                // 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(obj.common.type == 'number') {
                         if(min !== undefined) obj.common.min = min;
                         if(max !== undefined) obj.common.max = max;
                         if(unit) obj.common.unit = unit;
                      } else {
                         if(obj.common.min !== undefined) delete obj.common.min;
                         if(obj.common.max !== undefined) delete obj.common.max;
                         if(obj.common.unit) delete obj.common.unit;
                      }
                      if(states) obj.common.states = states;
                      if(custom && obj.common.custom) obj.common.custom = custom;
                      obj.native = {};
                      setObject(idDst, obj, function() {
                         if(idRd) setState(idRd, getState(idRd).val, true);
                         else setState(idSrc, getState(idSrc).val, true); 
                      });
                      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);
                
                
                SegwayS Offline
                SegwayS Offline
                Segway
                schrieb am zuletzt editiert von
                #9

                @crunchip

                Ach so du meinst das alias.0 --> damit habe ich mich noch nicht beschäftigt. Kommt noch.

                Dann ist es das Beste ich mach ein Blockly. Ich schau mal nach dem Skript hier im Forum - Danke schonmal !

                Wusste echt nicht dass es NUR mit 0 und 1 klappt.

                Gruß Dirk
                Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

                crunchipC 1 Antwort Letzte Antwort
                0
                • crunchipC crunchip

                  @Segway Verwende ich eigentlich auch nicht, hab mittels Adapter "Geräte" einen Alias angelegt, für meinen Wasserverbrauch, beötige ich um die Kosten für Abwasser zu berechnen.
                  Du kannst das aber auch manuell anlegen oder das Script verwenden, was hier im Forum zu finden ist, gibt mehrere Möglichkeiten
                  hier als script musst nur deinen Datenpunkte angeben

                  // Original-Datenpunkt
                  const idOrigin = 'mqtt.0.switch.status'; 
                  // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
                  // Bei Nicht-Verwendung Leerstring '' zuweisen
                  const idRead = '';
                   
                  // Alias-Datenpunkt
                  const idAlias = 'Pool.Pumpe.Schalter';
                   
                  var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
                   
                  // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
                  nameAlias = 'Poolpumpe Ein';
                  desc = 'per Script erstellt';
                  // typeAlias = 'boolean'; // oder 'number'
                  // read = "val < 0 ? -val : 0"; // Erkennung "Aus" --> false erfolgt automatisch  
                  // write = "val ? String(1) : String(0)";
                  // 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(obj.common.type == 'number') {
                           if(min !== undefined) obj.common.min = min;
                           if(max !== undefined) obj.common.max = max;
                           if(unit) obj.common.unit = unit;
                        } else {
                           if(obj.common.min !== undefined) delete obj.common.min;
                           if(obj.common.max !== undefined) delete obj.common.max;
                           if(obj.common.unit) delete obj.common.unit;
                        }
                        if(states) obj.common.states = states;
                        if(custom && obj.common.custom) obj.common.custom = custom;
                        obj.native = {};
                        setObject(idDst, obj, function() {
                           if(idRd) setState(idRd, getState(idRd).val, true);
                           else setState(idSrc, getState(idSrc).val, true); 
                        });
                        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);
                  
                  
                  SegwayS Offline
                  SegwayS Offline
                  Segway
                  schrieb am zuletzt editiert von
                  #10

                  @crunchip

                  Mh, das Skript erzeugt einen Fehler:

                  You are assigning a boolean to the state "linux-control.0.VM_Influx.info.is_online" which expects a string. Please fix your code to use a string or change the state type to boolean. This warnin

                  Gruß Dirk
                  Intel Proxmox Cluster (3x NUC) mit Debian & Proxmox / IoB als VM unter Debian / 60+ Adapter installiert

                  1 Antwort Letzte Antwort
                  0
                  • SegwayS Segway

                    @crunchip

                    Ach so du meinst das alias.0 --> damit habe ich mich noch nicht beschäftigt. Kommt noch.

                    Dann ist es das Beste ich mach ein Blockly. Ich schau mal nach dem Skript hier im Forum - Danke schonmal !

                    Wusste echt nicht dass es NUR mit 0 und 1 klappt.

                    crunchipC Abwesend
                    crunchipC Abwesend
                    crunchip
                    Forum Testing Most Active
                    schrieb am zuletzt editiert von
                    #11

                    @Segway wie gesagt, habt das selbst noch nicht gemacht, denke du musst das auskommentierte noch anpassen
                    type Alias 'number'
                    states = {false: '0', true: '1'}
                    wenn nicht, im Link von @da_Woody nachlesen/fragen

                    umgestiegen von Proxmox auf Unraid

                    C 1 Antwort Letzte Antwort
                    0
                    • crunchipC crunchip

                      @Segway wie gesagt, habt das selbst noch nicht gemacht, denke du musst das auskommentierte noch anpassen
                      type Alias 'number'
                      states = {false: '0', true: '1'}
                      wenn nicht, im Link von @da_Woody nachlesen/fragen

                      C Offline
                      C Offline
                      Chrisidonner
                      schrieb am zuletzt editiert von
                      #12

                      @crunchip
                      Verstehe ich es richtig ?
                      Man kann einen ganz normalen Schalter nicht aufzeigen ob an oder aus ? Bzw nur mit diesem Umweg den Schalter nicht auf True/false sondern 1/0 zu setzen ? Geht das nicht irgendwie in grafana ?

                      crunchipC 1 Antwort Letzte Antwort
                      0
                      • C Chrisidonner

                        @crunchip
                        Verstehe ich es richtig ?
                        Man kann einen ganz normalen Schalter nicht aufzeigen ob an oder aus ? Bzw nur mit diesem Umweg den Schalter nicht auf True/false sondern 1/0 zu setzen ? Geht das nicht irgendwie in grafana ?

                        crunchipC Abwesend
                        crunchipC Abwesend
                        crunchip
                        Forum Testing Most Active
                        schrieb am zuletzt editiert von
                        #13

                        @Chrisidonner sichtbar machen in Grafana ist schon möglich, ein true/false kannst dir schon anzeigen lassen, jedoch bei der Farbe spätestens scheitert es, denn wie willst du Thresholds einstellen, da wird eine Zahl erwartet.

                        umgestiegen von Proxmox auf Unraid

                        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

                        802

                        Online

                        32.4k

                        Benutzer

                        81.6k

                        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