Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Influx-DB: Summierte true-Zeiten über Zeitraum

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    UNSOLVED Influx-DB: Summierte true-Zeiten über Zeitraum

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      freisei last edited by

      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

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @freisei last edited by 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 1 Reply Last reply Reply Quote 0
        • F
          freisei @paul53 last edited by

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

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @freisei last edited by

            @freisei sagte:

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

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

            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            442
            Online

            31.8k
            Users

            79.9k
            Topics

            1.3m
            Posts

            vis
            2
            4
            383
            Loading More Posts
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes
            Reply
            • Reply as topic
            Log in to reply
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            The ioBroker Community 2014-2023
            logo