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. Influx-DB: Summierte true-Zeiten über Zeitraum

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Influx-DB: Summierte true-Zeiten über Zeitraum

Geplant Angeheftet Gesperrt Verschoben Ungelöst Visualisierung
vis
4 Beiträge 2 Kommentatoren 475 Aufrufe 1 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.
  • F Offline
    F Offline
    freisei
    schrieb am zuletzt editiert von
    #1

    Servus Beisammen,

    folgende Tabelle:

    Wert	Ack	Quelle	Zeit				
    false 	true 	influxdb.0 	2019-11-13 18:13:28.108 	
    true 	false 	javascript.0 	2019-11-13 18:13:55.834 	
    true 	true 	fhem.0 	2019-11-13 18:13:55.873 	
    true 	true 	fhem.0 	2019-11-13 18:13:56.180 	
    false 	false 	javascript.0 	2019-11-13 18:14:04.290 	
    false 	true 	fhem.0 	2019-11-13 18:14:04.336 	
    false 	true 	fhem.0 	2019-11-13 18:14:04.654 	
    true 	false 	javascript.0 	2019-11-13 18:23:40.851 	
    true 	true 	fhem.0 	2019-11-13 18:23:40.889 	
    true 	true 	fhem.0 	2019-11-13 18:23:41.228
    

    Ich würde nun gerne wissen, wie lang innerhalb eines Bestimmten Zeitraumes der Wert True war. (Also z.B. wie lang war die Lampe diesen Tag an?)

    Krieg ich das so raus?
    Ich müsste ja quasi die Tabelle durchlaufen, wenn der Wert "true" ist den Timestamp merken, und beim nächsten false von diesem Timestamp den gemerkten Abziehen.
    Von diesen Werten Wiederum eine Summe erstellen.
    (und wenns genau gehen soll dann noch Anfange+Ende hinzurechnen, weils ja nicht immer um 0:00 auf True gesetzt wird, falls es schon true ist)

    Gibts da was in Influx das das erleichtert?

    Und wie kommt das dann am einfachsten in iobroker/VIS rein?

    LG Freisei

    paul53P 1 Antwort Letzte Antwort
    0
    • F freisei

      Servus Beisammen,

      folgende Tabelle:

      Wert	Ack	Quelle	Zeit				
      false 	true 	influxdb.0 	2019-11-13 18:13:28.108 	
      true 	false 	javascript.0 	2019-11-13 18:13:55.834 	
      true 	true 	fhem.0 	2019-11-13 18:13:55.873 	
      true 	true 	fhem.0 	2019-11-13 18:13:56.180 	
      false 	false 	javascript.0 	2019-11-13 18:14:04.290 	
      false 	true 	fhem.0 	2019-11-13 18:14:04.336 	
      false 	true 	fhem.0 	2019-11-13 18:14:04.654 	
      true 	false 	javascript.0 	2019-11-13 18:23:40.851 	
      true 	true 	fhem.0 	2019-11-13 18:23:40.889 	
      true 	true 	fhem.0 	2019-11-13 18:23:41.228
      

      Ich würde nun gerne wissen, wie lang innerhalb eines Bestimmten Zeitraumes der Wert True war. (Also z.B. wie lang war die Lampe diesen Tag an?)

      Krieg ich das so raus?
      Ich müsste ja quasi die Tabelle durchlaufen, wenn der Wert "true" ist den Timestamp merken, und beim nächsten false von diesem Timestamp den gemerkten Abziehen.
      Von diesen Werten Wiederum eine Summe erstellen.
      (und wenns genau gehen soll dann noch Anfange+Ende hinzurechnen, weils ja nicht immer um 0:00 auf True gesetzt wird, falls es schon true ist)

      Gibts da was in Influx das das erleichtert?

      Und wie kommt das dann am einfachsten in iobroker/VIS rein?

      LG Freisei

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @freisei sagte:

      wie lang war die Lampe diesen Tag an?

      Genügt nicht ein einfaches Skript, das den Lampenaktor überwacht und um Mitternacht die Einschaltdauer des Tages in einen Datenpunkt schreibt ? Etwa so

      const idActor = '...'; // ID eintragen !
      const idED = '...'; // Einschaltdauer Tag
      
      var midnight = 0;
      var ed = 0;
      var actor = getState(idActor).val;
      
      on(idActor, function(dp) {
          actor = dp.state.val;
          if(!actor) { // Aktor schaltet aus
              var ontime = dp.oldState.lc;
              if(midnight) {
                  ontime = midnight;
                  midnight = 0;
              }
              ed = ed + dp.state.lc - ontime;
          }
      });
      
      schedule('0 0 * * *', function() { // Mitternacht
          if(actor) {
              midnight = Date.now();
              ed = ed + midnight - getState(idActor).lc;
          } else midnight = 0;
          setState(idED, Math.round(ed/60000), true); // Minuten
          ed = 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

      F 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @freisei sagte:

        wie lang war die Lampe diesen Tag an?

        Genügt nicht ein einfaches Skript, das den Lampenaktor überwacht und um Mitternacht die Einschaltdauer des Tages in einen Datenpunkt schreibt ? Etwa so

        const idActor = '...'; // ID eintragen !
        const idED = '...'; // Einschaltdauer Tag
        
        var midnight = 0;
        var ed = 0;
        var actor = getState(idActor).val;
        
        on(idActor, function(dp) {
            actor = dp.state.val;
            if(!actor) { // Aktor schaltet aus
                var ontime = dp.oldState.lc;
                if(midnight) {
                    ontime = midnight;
                    midnight = 0;
                }
                ed = ed + dp.state.lc - ontime;
            }
        });
        
        schedule('0 0 * * *', function() { // Mitternacht
            if(actor) {
                midnight = Date.now();
                ed = ed + midnight - getState(idActor).lc;
            } else midnight = 0;
            setState(idED, Math.round(ed/60000), true); // Minuten
            ed = 0;
        });
        
        F Offline
        F Offline
        freisei
        schrieb am zuletzt editiert von
        #3

        @paul53
        Cooler ansatz, Danke!
        Nachteilig ist, dass ich das dann für alle Einschaltdauer-Einträge ein Script mitlaufen lassen muss. Das wären bei mir dann doch einige.
        Weiterer Nachteil: die Auflösung ist quasi auf den Tag beschränkt, obwohl die daten ja genauer da sind. Das wäre aber zweitrangig.
        Daher hätte mir der Auswertungsansatz aus der DB irgendwie besser gefallen.
        Ich schau mal was sich ergibt.

        Danke aber nochmal!

        paul53P 1 Antwort Letzte Antwort
        0
        • F freisei

          @paul53
          Cooler ansatz, Danke!
          Nachteilig ist, dass ich das dann für alle Einschaltdauer-Einträge ein Script mitlaufen lassen muss. Das wären bei mir dann doch einige.
          Weiterer Nachteil: die Auflösung ist quasi auf den Tag beschränkt, obwohl die daten ja genauer da sind. Das wäre aber zweitrangig.
          Daher hätte mir der Auswertungsansatz aus der DB irgendwie besser gefallen.
          Ich schau mal was sich ergibt.

          Danke aber nochmal!

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @freisei sagte:

          die Auflösung ist quasi auf den Tag beschränkt,

          Das lässt sich einfach mit zusätzlichen Datenpunkten erweitern.

          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
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          409

          Online

          32.6k

          Benutzer

          82.0k

          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