Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Verstrichene Zeit seit Ereignis in der Vis anzeigen

    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

    Verstrichene Zeit seit Ereignis in der Vis anzeigen

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

      Moin!

      Ich würde gerne in meiner Vis anzeigen, wie lange ein Ereignis (z.B. wann ein Fenster geschlossen wurde, oder die Katze nach Hause gekommen ist) her ist.

      Den Zeitpunkt der letzten Änderung habe ich (entweder spuckt der Adapter ihn aus, oder ich berechne mir ihn mit einem Skript). Ich weiß, dass ich diesen Zeitpunkt (als Datum-Zeit, z.B. "26. Februar 2024 13:39") in der Vis anzeigen kann - aber ich würde das lieber relativ zur aktuellen Zeit anzeigen (also "vor 2 Minuten", "vor 3 Stunden 48 Minuten", usw).

      Ich denke mir so etwas müsste doch relativ einfach umzusetzen sein, weil ich garantiert nicht der erste bin, der das gerne machen würde - aber ich habe dazu bis jetzt nichts gefunden. Mein aktueller Ansatz ist es, das ganze extrem unelegant durch ein Skript zu lösen: das Skript löst jede Minute aus, berechnet die Differenz zwischen einen Zeitpunkt (z.B. wann das Fenster geschlossen wurde) und jetzt, und schreibt diesen Wert in eine Variable, welche ich dann in der Vis anzeigen kann.

      var time_diff;
      
      // Wenn sich Fenster-Status ändert
      on({ id: 'hm-rpc.0.MEQ1485502.1.STATE' /* HM-Sec-SCo MEQ1485502:1.STATE */, change: 'ne' }, async (obj) => {
       let value = obj.state.val;
       let oldValue = obj.oldState.val;
       if (getState('hm-rpc.0.MEQ1485502.1.STATE').val == true) {
         // Wenn das Fenster eben geöffnet wurde
         setState('0_userdata.0.window-open-time.Büro.window-open-time' /* window-open-time */, (new Date().getTime()), true);
         while (getState('hm-rpc.0.MEQ1485502.1.STATE').val == true) {
           setState('0_userdata.0.window-open-time.Büro.window-diff' /* window-diff */, (Math.round(((new Date().getTime()) - getState('0_userdata.0.window-open-time.Büro.window-open-time').val) / 60000)), true);
           await wait(60000);
         }
       } else {
         // Wenn das Fenster eben geschlossen wurde
         setState('0_userdata.0.window-open-time.Büro.window-closed-time' /* window-closed-time */, (new Date().getTime()), true);
         time_diff = (getState('0_userdata.0.window-open-time.Büro.window-closed-time').val - getState('0_userdata.0.window-open-time.Büro.window-open-time').val) / 1000;
         // Nachdem was Fenster geschlossen wurde, berechne die Zeitdifferenz zu jetzt
         setState('0_userdata.0.window-open-time.Büro.window-diff' /* window-diff */, (Math.round(time_diff / 60)), true);
         while (getState('hm-rpc.0.MEQ1485502.1.STATE').val == false) {
           setState('0_userdata.0.window-open-time.Büro.time-since-window-closed' /* time-since-window-closed */, (Math.round(((new Date().getTime()) - getState('0_userdata.0.window-open-time.Büro.window-closed-time').val) / 60000)), true);
           await wait(60000);
         }
       }
      });
      

      Wie gesagt, ich finde diesen Ansatz furchtbar unelegant, und ich wollte fragen, ob es dafür eine bessere Idee gäbe? Ich habe schon im Forum gesucht, bin aber leider nicht fündig geworden. Falls die Frage schon woanders beantwortet wurde und ich die Antwort nur nicht gefunden habe, dann wäre ich über einen Link dankbar 🙂

      Ein Bonus wäre, wenn ich die Zeitformatierung auch noch anpassen könnte. Mein Skript spuckt aktuell die Minuten seitdem das Fenster geschlossen wurde aus - das funktioniert zwar, ist aber nicht immer ganz einfach zu lesen (z.B. "vor 827 Minuten"). Ich würde das gerne etwas "lesbarer" formatieren, und dabei auch sinnvoll runden - also anstatt "vor 827 Minuten" lieber "vor 14 Stunden" (denn es spielt ja im Alltag keine Rolle, ob das Fenster jetzt 13 Stunden und 47 Minuten oder 14 Stunden geschlossen war). Gibt es dafür schon eine Lösung auf der ich aufbauen kann, oder soll ich das lieber selbst programmieren?

      Homoran 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @LightsiderTT last edited by Homoran

        @lightsidertt sagte in Verstrichene Zeit seit Ereignis in der Vis anzeigen:

        lieber relativ zur aktuellen Zeit anzeigen (also "vor 2 Minuten", "vor 3 Stunden 48 Minuten", usw).

        bietet das Widget diese Option nicht?
        Screenshot_20240302-114736_Firefox.jpg

        L 1 Reply Last reply Reply Quote 0
        • L
          LightsiderTT @Homoran last edited by

          @homoran Danke für deine Antwort - aber welches Widget ist das?

          Ich kenne die "TimesValue", "Timestamp Value", "Timestamp", und "Last change Timestamp" widgets. Das letzte zeigt immerhin das Datum/Uhrzeit an, an dem ein Wert zuletzt geändert wurde, aber immer nur absolut ("der Wert wurde am 2.3.2024 um 10:32 geändert"). Oder gibt's da eine Einstellung, die ich übersehen habe?

          Screenshot 2024-03-02 115216.png

          Homoran 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @LightsiderTT last edited by

            @lightsidertt sagte in Verstrichene Zeit seit Ereignis in der Vis anzeigen:

            aber welches Widget ist das?

            jedes 😂

            ziemlich unten in den Einstellungen

            L 1 Reply Last reply Reply Quote 0
            • L
              LightsiderTT @Homoran last edited by LightsiderTT

              @homoran

              Ah, über die "Zeige letzte Änderung"-Einstellung?

              Screenshot 2024-03-02 123300.png

              Das ist schon mal super - vielen Dank! 🙂 Ich werde mal damit herumexperimentieren.

              Homoran 1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @LightsiderTT last edited by

                @lightsidertt sagte in Verstrichene Zeit seit Ereignis in der Vis anzeigen:

                Ah, über die "Zeige letzte Änderung"-Einstellung?

                jepp, sieht doch schon mal gut aus

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

                Support us

                ioBroker
                Community Adapters
                Donate

                636
                Online

                31.8k
                Users

                79.9k
                Topics

                1.3m
                Posts

                2
                6
                277
                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