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

NEWS

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

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

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

Influx-DB: Summierte true-Zeiten über Zeitraum

Scheduled Pinned Locked Moved Unsolved Visualisierung
vis
4 Posts 2 Posters 511 Views 1 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.
  • F Offline
    F Offline
    freisei
    wrote on last edited by
    #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 Reply Last reply
    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
      wrote on last edited by 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 Reply Last reply
      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
        wrote on last edited by
        #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 Reply Last reply
        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
          wrote on last edited by
          #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 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

          345

          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