Ankündigung

Einklappen
Keine Ankündigung bisher.

Stoppuhr anzeigen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Stoppuhr anzeigen

    Hi zusammen,

    ich möchte gerne eine Zeitanzeige realisieren, die mir anzeigt, wie lange z.B. schon die HWR-Tür in die Garage offen ist. Dazu habe ich folgende Logik erstellt:

    logik.png
    Bei Öffnung der Tür, setzt der Binärkontakt das Laufzeitobjekt in Gang und schreibt die vergangenen Sekunden in ein iKO.
    Dieses KO, was nur aus Sekunden besteht, soll jetzt am besten in das Format HH:MM:SS übersetzt werden. Folgendes Problem habe ich jetzt:

    Ich habe über eine (vermutlich zu komplizierte) Formel die Sekunden richtig in Stunden:Minuten:Sekunden umgerechnet. Allerdings wird bei einstelligen Werten das
    Format "unschön" angezeigt (z.B. im Bild: 1:2:30 für 1 Stunde, 2 Minuten und 30 Sekunden). Ich hätte aber gerne 01:02:30 als Anzeige.


    output.png


    Irgendwelche Ideen?

    Die Formel für die Umrechnung lautet: {floor(#/3600)}:{floor((#-(3600*(floor(#/3600))))/60)}:{floor(#-(60*floor((#-(3600*(floor(#/3600))))/60)))-3600*(floor(#/3600))}

    Viele Grüße,
    Thomas





    KNX-Neuling - wir werden unser neues Haus mit KNX bauen - den Baufortschritt inkl. KNX dokumentieren wir auf unserem Hausbaublog.

    #2
    Nimm den 19000805 (http://service.knx-user-forum.de/?co...ad&id=19000805) E1 die Sekunden. E2
    PHP-Code:
    gmdate("H:i:s"$E1); 

    Kommentar


      #3
      TOP, Danke Dir, probiere ich gleich mal aus.
      KNX-Neuling - wir werden unser neues Haus mit KNX bauen - den Baufortschritt inkl. KNX dokumentieren wir auf unserem Hausbaublog.

      Kommentar


        #4
        Es gibt auch einen LBS dafür: LBS19000804

        Kommentar


          #5
          Das geht sogar ohne LBS. Einfach die Funktion strtotime(#) verwenden.

          Gruß
          Thomas

          Kommentar


            #6
            Interessant, das die Funktion gar nicht in der Hilfe aufgeführt ist. Es gibt zwar secondstotime(), aber ohne die führende Null bei den Stunden. Die php Funktion strtotime mach aus einem String ein Datum, aber keine Dauer
            Zuletzt geändert von vento66; 08.03.2020, 12:47.

            Kommentar


              #7
              Oh tschuldigung. Ich meine natürlich secondstotime(). Sorry.

              Und auch richtig: die führende Null bei der Stunde fehlt da. Allerdings kann man da vielleicht drüber hinwegsehen. Die führende Null bei den Minuten und Sekunden ist natürlich drin.

              Thomas

              Kommentar


                #8
                Wo gibt es denn diesen LBS (Laufzeit)? Habe im DL-Portal nur einen "komplizierteren" gefunden..

                Kommentar


                  #9
                  Indem Du "Laufzeit" in das Suchfeld eintippst. Im Moment kommen da 2 Ergebnisse. Jetzt noch den 50/50 Joker und du kommst spätestens beim 2.Versuch hier hin: http://service.knx-user-forum.de/?co...ad&id=19000472

                  Kommentar


                    #10
                    Zitat von vento66 Beitrag anzeigen
                    Indem Du "Laufzeit" in das Suchfeld eintippst. Im Moment kommen da 2 Ergebnisse. Jetzt noch den 50/50 Joker und du kommst spätestens beim 2.Versuch hier hin: http://service.knx-user-forum.de/?co...ad&id=19000472
                    Ich habe dann wohl tatsächlich die anderen 50% gefunden.. - danke!

                    Kommentar


                      #11
                      Guten Abend Zusammen,

                      ich möchte bei meiner Laufzeitmessung auch die Tage angezeigt bekommen, wie kann ich das lösen?

                      Ich habe was gefunden weiß aber nicht ob ich das verwenden kann. Kann mir jemand helfen?

                      Habe folgenden Baustein verwendet (19000805)

                      PHP-Code:
                      <?php // Umwandeln von Sekunden in Tage Stunden Minuten und Sekunden
                      function intervall($sek) {  $i sprintf('%d Tag%s, %d Stunde%s,'.  ' %d Minute%s und %d Sekunde%s',  $sek 86400,  floor($sek 86400) != 'e':'',  $sek 3600 24,  floor($sek 3600 24) != 'n':'',  $sek 60 60,  floor($sek 60 60) != 'n':'',  $sek 60,  floor($sek 60) != 'n':''  );  return $i; } echo intervall(99114); ?>
                      Hatte auch schon diverse Änderungen versucht es aber nicht hinbekommen.

                      Dankeschön

                      Kommentar


                        #12
                        Zitat von vento66 Beitrag anzeigen
                        Nimm den 19000805 (http://service.knx-user-forum.de/?co...ad&id=19000805) E1 die Sekunden. E2
                        PHP-Code:
                        gmdate("H:i:s"$E1); 
                        Guten Abend, ich wollte nochmals nachfragen, ob jemand eine Möglichkeit kennt, die Zeit so zu formatieren das man auch die Tage angezeigt bekommt.?

                        Gruß Hardi

                        Kommentar


                          #13
                          Wahrscheinlich dann

                          PHP-Code:

                          gmdate
                          ("d H:i:s"$E1); 

                          Kann man sicher noch erweitern bis:

                          PHP-Code:

                          gmdate
                          ("Y-m-d H:i:s"$E1); 

                          Kommentar


                            #14
                            Zitat von vento66 Beitrag anzeigen

                            PHP-Code:
                            gmdate("d H:i:s"$E1); 
                            Dankeschön für die Schnelle Antwort.

                            Leider habe ich das schon versucht und der fängt dann immer mit Tag 1 an.

                            Was ich möchte ist folgendes:

                            Ich zähle z.b wie lange ein Fenster offen ist:

                            Wenn es 86300 sekunden offen ist, sollte die anzeige 00:23:58:20 anzeigen.
                            Mit diese Code:

                            PHP-Code:

                            gmdate
                            ("d H:i:s"$E1); 
                            Zeigt er aber 01:23:58:20 an.

                            Kennst du dafür auch eine Lösung?

                            Kommentar


                              #15
                              Eventuell sowas:
                              PHP-Code:

                              $E1 
                              86400 gmdate("d H:i:s"$E1) : gmdate("00:H:i:s"$E1); 
                              Ansonsten wird wohl ein eigener LBS notwendig sein.

                              Kommentar

                              Lädt...
                              X