Hauptmenü

Einfache readingsGroup

Begonnen von NewbieNew, 15 März 2022, 07:47:24

Vorheriges Thema - Nächstes Thema

NewbieNew

Guten Morgen,
ich habe viele Batteriegeräte und habe folgende Readinggruppe erstellt:

defmod 02_Batterie readingsGroup .*:[Bb]attery .*:[Bb]atteryLevel .*:BATTERY .*:Battwechsel
attr 02_Batterie comment https://forum.fhem.de/index.php?topic=28326.0
attr 02_Batterie valueFormat {return "0" if( $VALUE eq "low" );; return "100" if( $VALUE eq "ok" );; return "25" if( $VALUE < 2.1 );; return "50" if( $VALUE < 2.3 );; return "75" if( $VALUE < 2.5 );; return "100"}
attr 02_Batterie 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.25' => 'measure_battery_25@red','batteryLevel.50' => 'measure_battery_50@orange','batteryLevel.75' => 'measure_battery_75@green','batteryLevel.100' => 'measure_battery_100@green'}


Klappt super.
Nun wollte ich das mit einem Batteriewechseldatum ergänzen:

in der global ein userattr Battwechsel gesetzt und bei jedem Gerät den letzten Battwechsel eingtragen.

list .* Battwechsel:

HM_HZ_Dusche             2022-03-13
HM_HZ_Kueche             2022-03-13
HM_HZ_Schlaf01           2022-02-25


Ich habe also vorerst nichts formatiert. Nur Text im "Battwechsel"

in der readingGroup nun:

.*:[Bb]attery .*:[Bb]atteryLevel .*:BATTERY .*:Battwechsel, also .*:Battwechsel ergänzt.

Angezeigt wird mir aber ein Datum incl. Zeit.

z.B.

HM_HZ_Kueche:battery  (icon)   2022-03-13 20:25:22

Bei vielen aber der jetzige Zeitpunkt, egal ob was bei Battwechsel eingetragen ist oder nicht.

Was mache ich falsch?

Beste Grüße

OdfFhem

@NewbieNew

Datum und Zeit entsprechen dem Zeitstempel eines Readings; im Zweifel unterbindet man die Anzeige  mit dem Attribut notime.

Laut Deiner Definition kann ein Gerät mehrfach in der readingsGroup vorkommen ... korrekt bzw. gewollt ?

MadMax-FHEM

#2
Wenn du ein Attribut anzeigen willst, dann:

Zitat von: https://wiki.fhem.de/wiki/ReadingsGroup#Internal_Values_ausgeben
Das FHEM-Hilfsmodul readingsGroup bietet eine einfache Möglichkeit, Readings (kein Präfix vor dem Reading-Namen), Internals (Präfix "+" vor dem Namen des internen Wertes) und Attributes (Präfix "?" vor dem Namen des Attributs) von einem oder mehreren Devices darzustellen und flexibel zu formatieren.

also ein Fragezeichen davor...

Bzgl. Mehrfachanzeige/-auftauchen in der RG hat ja OdfFhem schon was geschrieben ;)

Ich nutze ja das hier: https://forum.fhem.de/index.php/topic,82637.msg747514.html#msg747514
Inkl. autom. Erkennung von Batteriewechsel und Auflistung des letzten Wechsels inkl. Lebesdauerberechnung (nicht im Forum-Code) und "Prüfung", ob Batterien vorhanden und wenn nicht, Nachricht welche zu besorgen (nicht im Forums-Code)...

Es gibt wohl auch was "von DOIF" inkl. einer Übersichtsanzeige (nutze ich aber nicht, musst du mal [im DOIF-Unterforum] suchen)...


Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

 :) dann werfe ich hier mal noch als weiteren Aspekt "valueFormat" in den Raum...

Hier sollte wohl das Datum speziell behandelt werden, also eine erste Prüfung auf das Format erfolgen? Ungetestet in etwa so:
return $VALUE if $VALUE =~ m,\d+-\d+-\d+,;
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

NewbieNew

Hallo
Hallo,
Zitat von: OdfFhem am 15 März 2022, 09:10:29
@NewbieNew
Datum und Zeit entsprechen dem Zeitstempel eines Readings; im Zweifel unterbindet man die Anzeige  mit dem Attribut notime.

wo, in der Readingsgroup? Da erscheint dann keine Zeit mehr. Ist da meine Definition flasch? Es sollte doch das Userreading
angezeigt werden, was bei
list .* Battwechsel
richtig angezeigt wird.

Zitat
Laut Deiner Definition kann ein Gerät mehrfach in der readingsGroup vorkommen ... korrekt bzw. gewollt ?
nein, aber in Ermangelung von Fachwissen zähneknischend akzeptiert. Gibts da eine Lösung für?

Dankeschön

MadMax-FHEM

#5
Noch mal: BattWechsel ist laut deiner Angabe ein Attribut.

(leider kein list eines "Ausgangsdevices", dann würde man das gesehen haben ;) )

Dann muss in die readingsGroup VOR BattWechsel ein "Fragezeichen" -> "Abfrage" eines Attributes:


defmod 02_Batterie readingsGroup .*:[Bb]attery .*:[Bb]atteryLevel .*:BATTERY .*:?Battwechsel

(so ich das richtig interpretiere)

Zitat von: NewbieNew am 15 März 2022, 09:46:24
nein, aber in Ermangelung von Fachwissen zähneknischend akzeptiert. Gibts da eine Lösung für?
Filter setzen, also so, dass für den jeweiligen Typ nur eines genommen wird, selbst wenn mehrere Batteriewerte/-readings vorhanden sind oder "einzeln aufführen", also statt .*:[B|b]attery -> DeviceA:battery DeviceB:batteryLevel usw. (unschön und nicht flexibel)...
...oder das nehmen was ich nutze ;)
Oder mal schauen wie das bei einem (bestimmt vorhandenen) DOIF-Beispiel gelöst wurde...
(Vermute: Filter)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

defmod 02_Batterie readingsGroup .*:[Bb]attery,[Bb]atteryLevel,?Battwechsel
attr 02_Batterie valueFormat {return $VALUE if $VALUE =~ m,\d+-\d+-\d+,;; return 0 if $VALUE eq 'low';; return 100 if $VALUE eq 'ok';; return 25 if $VALUE < 2.1;; return '50' if $VALUE < 2.3;; return 75 if $VALUE < 2.5;; return 100}

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

NewbieNew

#7
Hallo,
sieht langsam gut aus, danke allen und BetaUser.

Die doppelten Devices sind weg. Allerdings verwerfen die Attribute

battery
und
batteryLevel

die Tabelle, da sie manchmal "entweder oder" oder beide vorhanden sind?

Kann man die Spalten, wenn kein Eintrag da ist dennoch mit leer anzeigen? Damit die Spalten richtig bleiben.

Dankeschön

Beta-User

...jein...
Es gibt "das Aufrufezeichen":
defmod 02_Batterie readingsGroup .*:![Bb]attery,[Bb]atteryLevel,?Battwechsel

Das "Problem" hier ist, dass dann uU. alle (!) Geräte gelistet werden. Es ist daher m.E. für diese ".*"-readingsGroup besser, dafür zu sorgen, dass das "allgemeingültige" Reading batteryLevel ordentlich gefüllt ist (und ganz auf [Bb]attery zu verzichten).
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