Noch eine eigentlich simple Sache.
Über ein userreading lasse ich mir von der Fritz!Box die Zeitdauer angeben.
call_min {ReadingsVal("fbCallMonitor","call_duration",0)/60 ." min"}
Ergebnis bei 14 Sekunden:
0.233333333333333 min
Passt. Kann ich das nicht direkt mit einem über sprintf kürzen lassen auf 2 Stellen?
Meine Idee wäre diese.
call_min {sprintf("%.2f",(ReadingsVal("fbCallMonitor ","call_duration","?")/60))}
abgeleitet aus dem Forum hier von:
druckineu {sprintf("%.0f",(ReadingsVal("druckmesser_log","drucki","?")/10))}
call_min {round(ReadingsNum("fbCallMonitor","call_duration",0)/60,2) ." min"}
Aber wäre eine Anzeige im Format 00:00:14 nicht schöner?
{sprintf ("%02d:%02d:%02d",(gmtime(ReadingsNum("fbCallMonitor","call_duration",0)))[2,1,0])}
Jawohl, ist viel schöner.
Ach hätte ich doch nur halb so viel Ahnung wie einige von euch.
So gefällt mir das.
VIELEN DANK
Und wenn ich jetzt noch den reading Zeitstempel in ein userreading umwandeln könnte wäre es perfekt.
Dann würde ich noch sehen wann der letzte Anruf war. Das gibt fbCallist nicht her.
Zitat von: Brad Majors am 21 Januar 2023, 18:33:31
Und wenn ich jetzt noch den reading Zeitstempel in ein userreading umwandeln könnte wäre es perfekt.
Wo ist das Problem?
Den kannst Du per ReadingsTimestamp() genau so einfach auslesen wie einen Wert per ReadingsVal().
Kein Problem, wenn man die Funktion kennt ;)
Getestet und für gut befunden 8)
Als Test:
attr sysmon userReadings cpu_update_time {ReadingsTimestamp("sysmon","cpu_temp",0)}
Resultat:
cpu_update_time
2023-01-22 09:49:39
Und noch mal Dankeschön.
Zitat von: Brad Majors am 22 Januar 2023, 09:52:33
Kein Problem, wenn man die Funktion kennt
Und wenn man sie nicht kennt, hilft es, einen Blick in die FHEM Doku zu werfen. Da steht sowas drin. ReadingsVal() hast Du ja auch gefunden.
Wenn man weiss nach was man suchen soll hast du recht :).
Wenn nicht wird es mit der besten Doku schwer.
Um es komplett zu haben die Zeilen die mir aus dem fbCall_Monitor die Daten rausziehen.
attr fbCallMonitor userReadings call_min {sprintf ("%02d:%02d:%02d",(gmtime(ReadingsNum("fbCallMonitor","call_duration",0)))[2,1,0])}, call_time {ReadingsTimestamp("fbCallMonitor","direction",0)}
Zitat von: Brad Majors am 22 Januar 2023, 10:55:39
Wenn man weiss nach was man suchen soll hast du recht :).
Wenn nicht wird es mit der besten Doku schwer.
Wenn man gar keinen Plan hat, wo man suchen soll, ist der allgemeine Teil der commandref immer ein guter Einstieg.
Insbesondere hier https://commandref.fhem.de/#perl ist ein nahezu unerschlöpflicher Quell von hilfreichen Informationen.