FHEM Forum

FHEM => Frontends => readingsGroup / readingsHistory => Thema gestartet von: Gisbert am 16 Februar 2025, 09:44:13

Titel: [gelöst] Woher kommt der Timestamp?
Beitrag von: Gisbert am 16 Februar 2025, 09:44:13
Hallo,

ich hab eine readingsGroup für den Batteriezustand, die ich aus dem Wiki kopiert habe. Mit der Definition kommt auch ein sekundengenauer Timestamp mit, der mir aber zu lang ist, da er auf dem Handy ohne Scrollen nicht ganz angezeigt wird.

Ich hätte gerne den Timestamp minutengenau dargestellt - ich weiß nur nicht wie. Bei anderen Fällen könnte ich mir meist selbst behelfen und mit Hilfe der commandref eine Lösung finden.

define Battery.State readingsGroup (Garagentor.Kontakt|HandsenderGarage|TH.Haushaltsraum|TH.Kuhlmannweg8|Wassermelder):([Bb]attery|[Bb]attery[Ss].*)
attr Battery.State alias Battery state
attr Battery.State room Home HM
attr Battery.State valueFormat {return "0" if( $VALUE eq "low" );;\
return "100" if( $VALUE eq "ok" );;}
attr Battery.State valueIcon {'battery.0' => 'measure_battery_0@red', \
'battery.100' => 'measure_battery_100@green', \
'batteryState.0' => 'measure_battery_0@red', \
'batteryState.100' => 'measure_battery_100@green', \
'Battery.0' => 'measure_battery_0@red', \
'Battery.100' => 'measure_battery_100@green', \
'batteryLevel.0' => 'measure_battery_0@red', \
'batteryLevel.100' => 'measure_battery_100@green',}
#  CFGFN      ./FHEM/HomematicAktorenSensoren.cfg
#  DEF        (Garagentor.Kontakt|HandsenderGarage|TH.Haushaltsraum|TH.Kuhlmannweg8|Wassermelder):([Bb]attery|[Bb]attery[Ss].*)
#  FUUID      5c430dca-f33f-b139-eb1f-20fed27be2220e10
#  NAME      Battery.State
#  NR        873
#  NTFY_ORDER 50-Battery.State
#  STATE      Initialized
#  TYPE      readingsGroup
#  changed    0
#  mayBeVisible 1
#  CONTENT:
#    Garagentor.Kontakt 1
#    HandsenderGarage 1
#    TH.Haushaltsraum 1
#    TH.Kuhlmannweg8 1
#    Wassermelder 1
#  CONTENT2:
#  DEVICES:
#    ARRAY(0x5564c21b2bc0)
#    ARRAY(0x5564c31e39c8)
#    ARRAY(0x5564bda1ea50)
#    ARRAY(0x5564c1594d48)
#    ARRAY(0x5564c2f26f18)
#  fhem:
#    lastDefChange 29
#    last_update 1739695007.79656
#  helper:
#    DEF       
#    valueFormat {return "0" if( $VALUE eq "low" );
#return "100" if( $VALUE eq "ok" );}
#    bm:
#      readingsGroup_Attr:
#        cnt        2
#        dmx        -1000
#        dtot      0
#        dtotcnt    0
#        mTS        16.02. 09:25:23
#        max        0.00100612640380859
#        tot        0.00186419486999512
#        mAr:
#          set
#          Battery.State
#          valueFormat
#          {return "0" if( $VALUE eq "low" );
#return "100" if( $VALUE eq "ok" );
#"%.10f";}
#      readingsGroup_Define:
#        cnt        5
#        dmx        -1000
#        dtot      0
#        dtotcnt    0
#        mTS        16.02. 09:11:42
#        max        0.0119278430938721
#        tot        0.0471556186676025
#        mAr:
#          HASH(0x5564b30954e0)
#          Battery.State readingsGroup (Garagentor.Kontakt|HandsenderGarage|TH.Haushaltsraum|TH.Kuhlmannweg8|Wassermelder):([Bb]attery|[Bb]attery[Ss]:r10)
#      readingsGroup_Get:
#        cnt        23
#        dmx        -1000
#        dtot      0
#        dtotcnt    0
#        mTS        16.02. 09:37:04
#        max        7.29560852050781e-05
#        tot        0.000779151916503906
#        mAr:
#          HASH(0x5564b30954e0)
#          Battery.State
#          ?
#      readingsGroup_Notify:
#        cnt        286199
#        dmx        -1000
#        dtot      0
#        dtotcnt    0
#        mTS        15.02. 15:57:03
#        max        0.0145878791809082
#        tot        21.2112565040588
#        mAr:
#          HASH(0x5564b30954e0)
#          HASH(0x5564b4274c48)
#      readingsGroup_Set:
#        cnt        23
#        dmx        -1000
#        dtot      0
#        dtotcnt    0
#        mTS        16.02. 09:13:44
#        max        8.10623168945312e-05
#        tot        0.000891447067260742
#        mAr:
#          HASH(0x5564b30954e0)
#          Battery.State
#          ?
#    positions:
#      Garagentor.Kontakt.battery 1:1
#      HandsenderGarage.battery 2:1
#      TH.Haushaltsraum.battery 3:1
#      TH.Kuhlmannweg8.battery 4:1
#      Wassermelder.battery 5:1
#    valueIcon:
#      Battery.0  measure_battery_0@red
#      Battery.100 measure_battery_100@green
#      battery.0  measure_battery_0@red
#      battery.100 measure_battery_100@green
#      batteryLevel.0 measure_battery_0@red
#      batteryLevel.100 measure_battery_100@green
#      batteryState.0 measure_battery_0@red
#      batteryState.100 measure_battery_100@green
#    values:
#      formated:
#        undef
#        ARRAY(0x5564b892fd78)
#      orig:
#        undef
#        ARRAY(0x5564b7bc3bb0)
#      prefixsuffix:
#        undef
#        ARRAY(0x5564c2ff38c0)
#


Viele Grüße Gisbert
Titel: Aw: Woher kommt der Timestamp?
Beitrag von: Gisbert am 16 Februar 2025, 15:56:37
Screenshot beigefügt (im 1. Beitrag), rechts fehlt minimal etwas Platz. Bei Beschränkung auf minutengenaue Angabe wäre genug Platz da.
Titel: Aw: Woher kommt der Timestamp?
Beitrag von: TomLee am 16 Februar 2025, 17:25:50
Hallo,

wenn man nur einen Wert "einliest", wird der Zeitstempel automatisch dargestellt, wenn man die Spalte mit dem Attribut notime nicht deaktiviert. Liest man mehr Werte aus gibts die Spalte gar nicht.

Es lesen sich Beiträge aus 2013 so, das Gedanken mal da waren sowas wie ein timestampFormat-Attribut einzubauen, ist aber wohl nie passiert.
Mit dem Attribut valueFormat bekommst den Zeitstempel meinem Verständnis nach nicht formatiert. Umständlich in jedem Device ein userReadings definieren mit dem Zeitstempel als Inhalt und das dann in der rG einlesen und mit ValueFormat anpassen ginge.

Hinten sollte doch mehr Platz gewonnen werden für die Sekunden, wenn Du vorne nur den Devicenamen anzeigst, oder?
attr Battery.State mapping %DEVICE
Gruß Thomas
Titel: Aw: Woher kommt der Timestamp?
Beitrag von: Gisbert am 16 Februar 2025, 19:09:46
Hallo Thomas,

vielen Dank für deine Erklärung und die vorgeschlagene Lösung - es hat funktioniert.

Viele Grüße Gisbert