NEWS
Zeitdifferenz berechnen
-
@Alina sagte:
wie bringe ich dann die Variable auf den DP?
-
Stimmt, sorry für die letzte doofe Frage. Viele Vielen Dank
-
@paul53 Und das Ergebnis sind dann Sekunden, richtig?
-
@Alina
diff_in_ms
-
@Homoran Simmt. Steht da. Danke )
-
Hallo,
ich möchte gerne meinen Rasenmähroboter "smart" machen um folgendes Problem zu lösen:
Der Robotor fährt derzeit nach eingestelltem Zeitplan, jedoch nicht, wenn es regnet oder die Terrassentür geöffnet ist (damit er dem Hund nicht über die Pfote fährt). Hierdurch wird die wöchentliche Mähzeit jedoch zum Teil so stark reduziert, dass der Rasen unzureichend gemäht wird. Das verlängern der Zeitintervalle führt umgekehrt dazu, dass bei anhaltend regenfreiem Wetter und geschlossener Terrassentüre der Rassenrobbi so lange fährt, dass an den Rändern, wo er sich dreht kein Gras mehr wechst.Ich weiß aus Erfahrung jedoch wie lange der Robbi wöchentlich in etwa mähen muss, damit das Gras "im Zaum gehalten wird" und keine kahlen Stellen entstehen.
Mein Plan ist deshalb den Zeitplan des Mähroboters zu erweitern, ihn aber nur dann mähen zu lassen, wenn die wöchentliche max. Mähzeit nicht überschritten ist und ihn bei unterschreiten einer minimalen Mähzeit am Wochenende auch außerhalb des Zeitplans mähen zulassen, um "Mähzeit nachzuholen".
Also möchte ich mir gerne vom ioBroker berechnen lassen, wie lange mein Rasenmähroboter gemäht hat.
Dazu soll wenn der Datenpunkt Zustand auf "mähen" springt, die Startzeit erfasst werden und wenn sich der Zustand ändert soll die Endzeit erfasst werden.
Aus Endzeit - Startzeit soll dann die Mähdauer in der Form SS:MM:ss berechnet werden.
Das habe ich folgendermaßen umgesetzt:Bei der Berechnung der Mähzeit stimmt aber leider der ausgegebene Wert nicht! Dieser ist immer um genau 1 Std. zu hoch!
Könnt ihr mir sagen, was ich falsch mache?
Kann es damit zusammen hängen, dass Systemzeit und Zeitstempel (WARUM AUCH IMMER) 1 Stunde auseinander liegen? -
@matthias-i sagte: Mähdauer in der Form SS:MM:ss berechnet werden.
Die Formatierung berücksichtigt die Zeitzone, die man kompensieren muss.
Es genügt ein Trigger beim Ausschalten (ist kleiner als letztes).
-
@paul53 Vielen Dank, das habe ich hinbekommen
Die Fahrdauer wird jetzt richtig berechnet, jetzt müsste ich nur noch wissen, wie man Zeiten addieren kann.
D.h. wie kann ich zwei Datenpunkte (Zeichenkette in der Form SS:MM:ss) miteinander addieren?Noch eleganter wäre es natürlich eine Liste "TagMähzeiten" anzulegen, die um Mitternacht geleert wird und in der die einzelnen Mähzeiten eingetragen und zum Schluss addiert werden. Ist so etwas auch umsetzbar? (Mit Listen habe ich noch nicht gearbeitet.)
-
@matthias-i sagte: jetzt müsste ich nur noch wissen, wie man Zeiten addieren kann.
"erhöhe einschaltdauer" kumuliert bereits. Man müsste also den Wert einmal pro Woche auf 0 zurück setzen.
-
@paul53 ich habe das auf folgendem Wege gelöst:
Im nächsten Schritt müsste jetzt "LaufzeitAktuell" nach jedem Mähen zu "LaufzeitTag" addiert werden. -
@paul53 ich habe es wie folgt hinbekommen:
Datum/Zeit nach String konvertiert.
Den String "Ziffer" für Ziffer (also ZehnerStunde, EinerStunde, ZehnerMinute, EinerMinute, ZehnerSekunde, EinerSekunde) in Variablen überführt.
Dann stellenweise addiert und ggf. Überträge verrechnet.
Dann den String mit der korrekten Zeitdauer konvertiert nach Datum/Zeit.Das funktioniert, aaaber: Geht das nicht leichter/einfacher/schneller?
Besteht keine Möglichkeit zwei Datenpunkte der Form SS:MM:ss zu addieren, sodass das Ergebnis ebenfalls das Format SS:MM:ss hat? -
@matthias-i sagte: Geht das nicht leichter/einfacher/schneller?
Ja.
@matthias-i sagte in Zeitdifferenz berechnen:
Besteht keine Möglichkeit zwei Datenpunkte der Form SS:MM:ss zu addieren, sodass das Ergebnis ebenfalls das Format SS:MM:ss hat?
Man kann nur Zahlen addieren, keine Strings.
-
@paul53 Wie kann man das realisieren?
Wenn ich dich richtig verstehe müsste man ja dann SS:MM:ss je zu einer Zahl konvertieren, dann die Addition vornehmen und dann von Zahl wieder zu SS:MM:ss konvertieren? Könntest du mir sagen, wie das geht? -
@matthias-i sagte: Mein Plan ist deshalb den Zeitplan des Mähroboters zu erweitern, ihn aber nur dann mähen zu lassen, wenn die wöchentliche max. Mähzeit nicht überschritten ist und ihn bei unterschreiten einer minimalen Mähzeit am Wochenende auch außerhalb des Zeitplans mähen zulassen, um "Mähzeit nachzuholen".
Der Aussage entnehme ich, dass es um die wöchentliche Mäh-Dauer geht? Das Prinzip der Kumulation der Mäh-Dauer habe ich schon hier gezeigt (es wird mit ms gerechnet). Einmal in der Woche muss dann per Zeitplan die Mäh-Dauer zurück gesetzt werden. Unter der Woche kann die schon erreichte Mäh-Dauer ausgewertet werden.
-
@paul53 Vielen Dank für die schnelle Antwort!
Es geht mir auch darum, zu verstehen, wie man mit Datenpunkten des Formates SS:MM:ss rechnen kann.
Auch bei der Ladezeit des E-Autos möchte ich gerne Zeiten auf diese Weise berechnen.
Zusammenfassen kann man also sagen, dass SS:MM:ss in Millisekunden umgewandelt werden muss, dann kann man mit dem Wert (als Zahl) rechnen und wandelt das ganze anschließend wieder in das gewünschte Datum-/Zeitformat wie z.B. SS:MM:ss um, richtig? -
@matthias-i sagte: SS:MM:ss in Millisekunden umgewandelt werden muss
Eine Zeitdifferenz in "hh:mm:ss" muss so gewandelt werden, damit mit der Differenz in ms weiter gerechnet werden kann:
-
Ich möchte nicht unbedingt ein neues Thema eröffnen - ich hoffe, mein Anliegen passt hier rein.
Ich würde gerne die Zeitdifferenz (Minutengenau bzw Stundengenau (als Kommazahl) würde ausreichen) der aktuellen Tageszeit bis zum Sonnenuntergang und Sonnenaufgang berechnen.Habt Ihr eine Idee, ob / wie das möglich ist?
Besten Dank im Voraus
-
@strobi sagte: Stundengenau (als Kommazahl) würde ausreichen) der aktuellen Tageszeit bis zum Sonnenuntergang
-
@paul53 Hallo,
ich möchte gerne die Laufzeit meines Roombas mit Hilfe der Start- und der Endzeit berechnen und habe folgendes Blockly gemacht. Allerdings wird die Differenz/Laufzeit nicht korrekt berechnet. Die berechnete Dauer ist im Bsp. 2St. 16min. Tatsächlich sind es aber 1 Std. und 16 min.
Wer kann mir helfen?
-
@newbie2007 Die berechnette Zeit in Millisekunden ist noch richtig. Sie wird im folgenden jedoch als Timestamp vom 01.01.1970 berechnet und so weit ich mich erinnern kann in der falschen Zeitzone