Würde mir gerne in Tablet UI die Laufzeit meines Raspberry anzeigen lassen.
Leider habe ich keinen Plan von Regex und die "Versuch macht Klug Methode" will einfach nicht funktionieren.
Habe auch schon den Regex https://txt2re.com Generator ausprobiert, leider ohne erfolg.
Das Reading sieht folgend aus
2 days, 1:37
Mein Tablet UI Code
<div class="inline">
<div data-type="progress" data-device="Raspberry" data-get="uptime" data-part="1" data-max="364" class="small"></div>
<div data-type="label" class="narrow">Tagen</div>
</div>
<div class="inline">
<div data-type="progress" data-device="Raspberry" data-get="uptime" data-part=" ???? " data-max="24" class="small"></div>
<div data-type="label" class="narrow">Stunden</div>
</div>
<div class="inline">
<div data-type="progress" data-device="Raspberry" data-get="uptime" data-part=" ????? " data-max="60" class="small"></div>
<div data-type="label" class="narrow">Minuten</div>
</div>
Vielleicht könnte jemand mal einen Blick darauf werfen.
Wenn vor der Zeit immer ein Leerzeichen ist, könntest du einfach den dritten Teil nehmen
... ohne RegEx
data-part="3"
Es stimmt nicht gaaaaans ... Die Laufzeit im Beispiel ist ja "2Tage, 1 Stunde und 37 Sekunden".
Das Blöde ist, das bei kurzen Laufzeiten es auch anders aussehen kann ....
Edit:
Würde es außerhalb von sysstat erledigen. uptime zeigt z.B. mit "-p" ein Verständlicheres Format an ..
Oder noch besser:
cat /proc/uptime
Stimmt, ich habe gar nicht auf die Nedeutung geachtet, nur auf die Form.
Was ist denn das Ziel? Warum nicht 1:1 anzeigen?
Gibt es kein Reading, was die Uptime in Sekunden ausgibt?
Da ich SYSSTAT nicht (mehr) verwende, kann ich es Dir nicht sagen ...
Zitat von: setstate am 18 September 2017, 09:45:03
Stimmt, ich habe gar nicht auf die Nedeutung geachtet, nur auf die Form.
Was ist denn das Ziel? Warum nicht 1:1 anzeigen?
Gibt es kein Reading, was die Uptime in Sekunden ausgibt?
Ich kann mir die uptime auch als Sekunden ausgeben lassen, aber ich stehe auf dem Schlauch wie mich das weiter bringt.
Gruß Christian
In dem Du dann die Zeit (Sekunden) in Dein Gewünschtes Format umrechnest ... aber wie solches Rechnen gehst, müsstest Du Spezies von Tables UI fragen ...
In FTUI habe ich es wie folgt integriert:
<li data-row="1" data-col="4" data-sizex="4" data-sizey="2" class="semitransparent">
<div class="hbox items-space-around">
<div class="vbox">
<div class="hbox items-space-around">
<div>RPi:</div>
<div data-type="label" data-device="sysmon" data-get="uptime_text" data-color="grey"/>
</div>
<div class="hbox items-space-around">
<div>FHEM:</div>
<div data-type="label" data-device="sysmon" data-get="fhemuptime_text" data-color="grey"/>
</div>
</div>
</div>
</li>
Wie soll das Format denn aussehen?
Es soll eben nicht nur ein Label benutzt werden, sondern drei Range-Widgets, nach Tage, Stunden und Minuten getrennt. Range hat aber kein data-substitution. Die Werte müssen daher vorher schon im FHEM getrennt werden.
Dann könnte man in FHEM ja einfach die 3 Werte berechnen, wenn die Uptime in Sekunden vorliegt.
hour = uptime / 3600
minute = (uptime - (hour * 3600)) / 60
seconds = (uptime - (hour * 3600) - (minute * 60)
bzw.
day = uptime / 86400
hour = (uptime - (day * 86400)) / 3600
minute = (uptime - (day * 86400) - (hour * 3600)) / 60
seconds = (uptime - (day * 86400) - (hour * 3600) - (minute * 60)
ja. SYSSTAT auf sekunden umstellen und dann drei user readings verwenden.
attr Uptime userReadings Day { int(ReadingsVal("$NAME","seconds",0) / 86400)} , Hour { int((ReadingsVal("$NAME","seconds",0) - (ReadingsVal("$NAME","Day",0) * 86400) / 3600)}
...
usw.
fast.
es muss alles in ein attribut und man sollte das uptime reading in der regex angeben.