Ein Reading mit Minuten in Stunden und Minuten umrechnen

Begonnen von bigmo, 23 August 2017, 10:11:53

Vorheriges Thema - Nächstes Thema

DeeSPe

Zitat von: bigmo am 23 August 2017, 21:33:03
Ok so hat es funktioniert zumindest kommt beim speichern nun kein Fehler mehr. Aber wie kann ich den berechneten Wert nun in der readinggroup aufrufen? Buderus:<%clock>,<Betriebsstunden>,Betriebsstunden\ funktioniert nicht.

Da das nicht zum bisherigen Titel und Verlauf passt, wird Dir wohl niemand weiterhelfen.
Ich würde sagen das fragst Du dann mal im Bereich für readingsGroup nach.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Freee84neu

Hallo

Habe das userReading so angepasst das es zu mir passt. Vielen Dank schon mal dafür

Ich habe einen HourCounter der die Betiebsstunden der Pool-Pumpe dokumentiert.
Der Counter gibt den Tages-Wert in Sekuden aus (pulseTimePerDay).

Mein userreading sieht so aus.
attr PoolCounter userReadings Betriebsstunden:pulseTimePerDay.* {my $hours=ReadingsNum($NAME,"pulseTimePerDay",0)/3600; my $h=int($hours); my $im=$hours - $h; my $m=int($im * 60); "$h:$m"}

Das klappt auch eigentlich wunderbar doch wenn ich jetzt einen Wert habe wo zb. 8 Std und 3 Min rauskommt. Steht dort 8:3 schön wäre wenn es 8:03 wäre ... könnte mir da jemand helfen.

Gruß 

Prof. Dr. Peter Henning

Klar. Perl-funktion sprintf verwenden, siehe dort.

LG

pah

Freee84neu

#18
Hallo

Danke das es mit sprinft zu tun hat habe ich mir schon fast gedacht aber leider bekomme ich das nicht in den Kopf.
Ich bin da jetzt schon so oft drauf gestossen und jedes mal hab ich es nicht wirklich verstanden.
Ich komme wohl besser mit Spannung und Strom zurecht als mit "} und " ".

Bin schon drauf und dran jemanden zu suchen der mal für Geld mein Sytem ordentlich macht ;D da sind bestimmt viele Sachen die nicht wirklich richtig sind aber läuft, denke ich  ;D 



DeeSPe

Oder ohne sprintf:
attr PoolCounter userReadings Betriebsstunden:pulseTimePerDay.* {my $hours=ReadingsNum($NAME,"pulseTimePerDay",0)/3600; my $h=int($hours); my $m=int(($hours - $h)*60); $m="0".$m if ($m=~/^\d$/); "$h:$m"}

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Freee84neu

Wow

Super vielen Dank ... das klappt das hätte ich leider nie hinbekommen ... vielen Dank

carlos

Geht noch einfacher:
attr PoolCounter userReadings uptime_Calc {sprintf("%d Tage %02d Stunden %02d Minuten",SYSMON_decode_time_diff((ReadingsVal($NAME,"uptime",0))*60))}

Gruß

Carlos
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

Freee84neu

#22
Hallo

Und Danke

Hab jetzt mal beides reingeschrieben ....
Aber warum bekomm ich bei dem einen
Betriebsstunden —— 6:04
uptime_Calc      —— 15 Tage 04 Stunden 34 Minuten
Raus

Das Reading im Counter pulseTimePerDay zeigt 21874 .... 6:04 ist also richtig aber das andere ...

userReadings
Betriebsstunden:pulseTimePerDay.* {my $hours=ReadingsNum($NAME,"pulseTimePerDay",0)/3600; my $h=int($hours); my $m=int(($hours - $h)*60); $m="0".$m if ($m=~/^\d$/); "$h:$m"},uptime_Calc {sprintf("%d Tage %02d Stunden %02d Minuten",SYSMON_decode_time_diff((ReadingsVal($NAME,"pulseTimePerDay",0))*60))}



Ah es muss anstatt pulseTimePerDay",0))*60))} so heißen pulseTimePerDay",0))*1))} dann ist es richtig

Super vielen Dank