Sekunden in Stunden und Minuten ausgeben

Begonnen von B.Stromberg, 06 Mai 2019, 05:19:28

Vorheriges Thema - Nächstes Thema

rabehd

#15
Zitatnd bei Google wäre ich wohl völlig wo anders gelandet beim Wort "beschneiden")  ;D

Nur wie bitte soll ein ANFÄNGER auf split kommen????

Meine erste Suche wäre mit folgenden Begriffen "fhem" und "beschneiden".
Und siehe da, genau die Treffer  ;D

Ich bin auch gegen fertige Lösungen und freue mich, dass Du mit einem solchen Tip weiterkommst.  ;)
Auch funktionierende Lösungen kann man hinterfragen.

Christoph Morrison

#16
Zitat von: B.Stromberg am 06 Mai 2019, 13:54:18
Der Anova gibt die Startzeit mit folgendem Reading aus:
status_current_job_job_start_time
2019-05-06T02:53:48.962904Z

Mal als Stichwort: das ist ein ISO-8601-formatiertes Datum. Das kannst du mit str2time() in eine Zahl konvertieren:


{ use Data::Dumper;; Dumper str2time("2019-05-06T02:53:48.962904Z");; }


ergibt


$VAR1 = '1557111228.9629';


Ein userReadings könnte so aussehen. Korrekt wäre auch 04:53, denn 2:53 ist UTC, nicht lokale Zeit.


uptime_human {
    my $time = str2time(ReadingsVal("$name", "status_current_job_job_start_time", undef));
    return POSIX::strftime("%d.%m.  %H:%M", localtime $time) if $time;
    return "";
}


B.Stromberg

Zitat von: Christoph Morrison am 06 Mai 2019, 14:24:08
Mal als Stichwort: das ist ein ISO-8601-formatiertes Datum. Das kannst du mit str2time() in eine Zahl konvertieren:


{ use Data::Dumper;; Dumper str2time("2019-05-06T02:53:48.962904Z");; }


ergibt


$VAR1 = '1557111228.9629';


Ein userReadings könnte so aussehen. Korrekt wäre auch 04:53, denn 2:53 ist UTC, nicht lokale Zeit.


uptime_human {
    my $time = str2time(ReadingsVal("$name", "status_current_job_job_start_time" undef));
    return POSIX::strftime("%d.%m.  %h:%m", localtime $time) if $time;
    return "";
}


Ich gebe mir wirklich Mühe dies nun irgendwie zu verstehen...

Bei diesem UserReading bekomme ich eine Fehlermeldung:

Zitat
Error evaluating anova userReading uptime_human: syntax error at (eval 246) line 1, near ""status_current_job_job_start_time" undef"
Global symbol "$time" requires explicit package name (did you forget to declare "my $time"?) at (eval 246) line 1.
Global symbol "$time" requires explicit package name (did you forget to declare "my $time"?) at (eval 246) line 1.

Christoph Morrison

Ich hatte den Beitrag noch mal editiert. Du warst zu schnell ;-)

B.Stromberg

Zitat von: Christoph Morrison am 06 Mai 2019, 14:56:12
Ich hatte den Beitrag noch mal editiert. Du warst zu schnell ;-)

Vielen Dank das du dich hier mit mir "rumschlägst" ;)

Aktualisiert kommt nun diese Fehlermeldung:

Zitat
Error evaluating anova userReading uptime_human: Undefined subroutine &main::str2time called at (eval 159) line 2.

Christoph Morrison

Ich glaube str2time kommt aus dem Perl-Paket Date::Parse. Das müsstest du dazu nachinstallieren (mit cpan, cpanm oder deinem Paketmanager, z.B. aptitude libdatetime-format-dateparse-perl).

Wernieman

Wobei mit apt-get besser als mit cpam ist, da updatefest!
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Beta-User

Soweit erkennbar ohne cpan/apt: strftime

{strftime("%H:%M", localtime(ReadingsAge('MYSENSOR_98','state',0)))}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

B.Stromberg

Zitat von: Christoph Morrison am 06 Mai 2019, 15:13:17
Ich glaube str2time kommt aus dem Perl-Paket Date::Parse. Das müsstest du dazu nachinstallieren (mit cpan, cpanm oder deinem Paketmanager, z.B. aptitude libdatetime-format-dateparse-perl).

so
habe ein apt-get install libdatetime-format-dateparse-perl gemacht.

Fehler bleibt leider...

Christoph Morrison


B.Stromberg

#25
Zitat von: Christoph Morrison am 06 Mai 2019, 16:25:26
FHEM neu gestartet?

Ja habe ich

Wobei, der Fehler ist wieder ein Anderer:


Error evaluating anova userReading uptime_human: syntax error at (eval 211) line 2, near ""status_current_job_job_start_time" undef"
Global symbol "$time" requires explicit package name (did you forget to declare "my $time"?) at (eval 211) line 3.
Global symbol "$time" requires explicit package name (did you forget to declare "my $time"?) at (eval 211) line 3.


Blödsinn, das war nun mein Fehler

Bleibt bei

Zitat
Error evaluating anova userReading uptime_human: Undefined subroutine &main::str2time called at (eval 146) line 1.

Christoph Morrison

Versuch mal


uptime_human {
    use Date::Parse;
    my $time = Date::Parse::str2time(ReadingsVal("$name", "status_current_job_job_start_time", undef));
    return POSIX::strftime("%d.%m.  %H:%M", localtime $time) if $time;
    return "";
}


B.Stromberg