Hauptmenü

[gelöst] HH:MM:SS in Sekunden

Begonnen von holle75, 30 Mai 2018, 14:46:55

Vorheriges Thema - Nächstes Thema

betateilchen

Zitat von: holle75 am 30 Mai 2018, 16:45:44
Edit: wo/wie kann ich mir das Ergebnis von hsm2secs anzeigen lassen?

In der Befehlszeile von FHEM {hms2secs(<hier kommt der Wert rein>)}

Zitat von: holle75 am 30 Mai 2018, 16:45:44
Auf die Klammerlogik wär ich nicht ansatzweise gekommen.

ich auch nicht, ich hätte ReadingsVal() verwendet, das ist nämlich logischer :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

holle75

Zitat von: betateilchen am 30 Mai 2018, 17:46:46
In der Befehlszeile von FHEM {hms2secs(<hier kommt der Wert rein>)}
Danke dir

so:
{hms2secs("AnwesenheitHaupt","statStateDaypresent")}
{hms2secs(AnwesenheitHaupt,statStateDaypresent)}



will er nicht. Wie wärs richtig?

Damian

#17
Warum willst du überhaupt umrechnen, ein Stringvergleich sollte für deinen Zweck ausrechend sein.

Wenn das Format immer HH:MM:SS ist, dann kannst du ganz einfach vergleichen:

([AnwesenheitHaupt:statStateDaypresent] gt "01:02:01")
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

holle75

Oh nee, wirklich jetzt? Hätte nicht gedacht, dass perl/DOIF auch Zeitstrings auf Größe vergleichen kann. Aber was gelernt.

Die Antwort darauf
Zitat von: holle75 am 30 Mai 2018, 18:10:36
Danke dir

so:
{hms2secs("AnwesenheitHaupt","statStateDaypresent")}
{hms2secs(AnwesenheitHaupt,statStateDaypresent)}



will er nicht. Wie wärs richtig?

würde mich aber trotzdem noch sehr interessieren.

Vielen Dank an euch

amenomade

Zitat von: holle75 am 30 Mai 2018, 19:35:26
Oh nee, wirklich jetzt? Hätte nicht gedacht, dass perl/DOIF auch Zeitstrings auf Größe vergleichen kann. Aber was gelernt.

Die Antwort darauf
würde mich aber trotzdem noch sehr interessieren.

Vielen Dank an euch

{hms2secs(ReadingsVal("AnwesenheitHaupt","statStateDaypresent",0))}
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

holle75


Per

Zitat von: holle75 am 30 Mai 2018, 19:35:26Hätte nicht gedacht, dass perl/DOIF auch Zeitstrings auf Größe vergleichen kann. Aber was gelernt.
Macht es auch nicht, aber im GGsatz zum deutschen Datumsformat passt der Textvergleich bei der Zeit, wenn du mit führender Null bzw. führendem Leerzeichen arbeitest. Sonst musst du auffüllen.

Sailor

Zitat von: betateilchen am 30 Mai 2018, 15:32:03
In meiner 99_myUtils.pm gibt es dafür eine Funktion...


sub hms2secs($){
my ($t) = @_;
return substr($t,0,2) * 3600 + substr($t,3,2) * 60 + substr($t,6,2);
}


Ich habe es mal ein bisschen verfeinert...


sub hms2secs($) {
my ($t) = @_;
my $TimeSec;

### Time: HH:MM:SS
if ($t =~ /^(2[0-3]|[01]?[0-9]):([0-5]?[0-9]):([0-5]?[0-9])$/) {
$TimeSec = substr($t,0,2) * 3600 + substr($t,3,2) * 60 + substr($t,6,2);
}
### Time: HH:MM
elsif ($t =~ /^(2[0-3]|[01]?[0-9]):([0-5]?[0-9])$/) {
$TimeSec = substr($t,0,2) * 3600 + substr($t,3,2) * 60;
}
### Time: HH
elsif ($t =~ /^(2[0-3]|[01]?[0-9])/) {
$TimeSec = substr($t,0,2) * 3600;
}
### Time: Undefined as criteria above
else {
$TimeSec = 0;
}
### For debugging purpose only
Log 5, "mUtils - hms2secs - t                                               : " . $t;
Log 5, "mUtils - hms2secs - TimeSec                                         : " . $TimeSec;

return($TimeSec);
}


Gruß
    Sailor
******************************
Man wird immer besser...