[gelöst] "fehlende" Werte bei Readingsgroup

Begonnen von willyk, 22 September 2015, 10:14:17

Vorheriges Thema - Nächstes Thema

willyk

Hallo an alle Spezialisten!

Für einen schnellen Überblick habe ich eine Readingsgroup definiert (siehe Anhang). Funktioniert ganz gut, allerdings habe ich das Problem dass die angezeigten Devices nicht alle die gleichen Readings abgeben. Das führt dann zu einer etwas schrägen Anzeige (bei "OG_Bad_F" und "EG_Toilette_F").

(http://forum.fhem.de/index.php?action=dlattach;topic=41330.0;attach=37598)

Zusammengebastelt habe ich es so:

define Temperatur readingsGroup <Device>,<Batterie>,<|>,<RSSI>,<|>,<Modus>,<|>,<Temp Soll>,<|>,<Temp Ist>,<|>,<Position>  TYPE=MAX:[Bb]attery,<|>,!RSSI,<|>,mode,<|>,desiredTemperature,<|>,temperature,<|>,valveposition
attr Temperatur alias Status Temperatur
attr Temperatur group Info
attr Temperatur mapping %ALIAS
attr Temperatur room Status
attr Temperatur sortby 9
attr Temperatur valueFormat {battery => "%s", desiredTemperature=>"%.1f", RSSI=>"%.1f",temperature=>"%.1f",valveposition=>"%.0f"}
attr Temperatur valueStyle {  if ($READING eq "battery" && $VALUE ne "ok"){ 'style="color:red;;;;font-weight:bold" ' } else{ 'style="color:blue;;;;text-align:center"' } }
attr Temperatur valueSuffix { temperature => "°C",desiredTemperature => "°C",valveposition=> "%"}
attr Temperatur visibility collapsible



Hat jemand eine Idee, wie ich die "|" ohne Lücken untereinander kriege?

Danke + Gruss
willy

NUC mit Ubuntu, MAX!Cube, CUNO, 6 MAX WT, 16 MAX HT, 2 MAX Fensterkontakt, MaxScanner

marvin78

Das einfachste wäre, den Devices, denen ein oder mehrere Readings fehlen, diese einfach per

setreading DEVICE READING -

zu verpassen. Ich weiß aber nicht, ob readingsGroup eventuell eingebaute Mechanismen dafür hat. Wenn ja, steht's sicher in der Doku.

justme1968

du kannst mit !reading dir anzeige erzwingen auch wenn es das reading nicht gibt.

du kannst dann diesen wert z.b. auf auch einen leeren string mappen.

oder du legst mit valueColumn  fest in welcher spalte ein Wert stehe soll. dann werden leere spalten übersprungen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

willyk

Zitat von: marvin78 am 22 September 2015, 10:16:32
setreading DEVICE READING -
sieht ein wenig unelegant aus. Da steht dann z.B.   "- %".


Zitat von: justme1968 am 22 September 2015, 11:52:03
du kannst mit !reading dir anzeige erzwingen auch wenn es das reading nicht gibt.

du kannst dann diesen wert z.b. auf auch einen leeren string mappen.
dann muss ich fuer alle spalten den default-Wert auf "leer" mappen, richtig? Was mach ich dann mit den Werten in valueSuffix?


Zitat von: justme1968 am 22 September 2015, 11:52:03
oder du legst mit valueColumn  fest in welcher spalte ein Wert stehe soll. dann werden leere spalten übersprungen.

Funktioniert nicht; im Log gibt es dazu eine Meldung:

2015.09.22 13:50:18 1: PERL WARNING: Argument "desiredTemperature => 7" isn't numeric in numeric lt (<) at ./FHEM/33_readingsGroup.pm line 1038.

Mach ich da was falsch?

Danke + Gruss
willy
NUC mit Ubuntu, MAX!Cube, CUNO, 6 MAX WT, 16 MAX HT, 2 MAX Fensterkontakt, MaxScanner

marvin78


willyk

 :-\  Es ist immer das gleiche: kaum macht man es richtig, funktioniert es ....

Danke für die Hilfe !

Gruss
Willy
NUC mit Ubuntu, MAX!Cube, CUNO, 6 MAX WT, 16 MAX HT, 2 MAX Fensterkontakt, MaxScanner

IPWF

Zitat von: justme1968 am 22 September 2015, 11:52:03du kannst mit !reading dir anzeige erzwingen auch wenn es das reading nicht gibt.

du kannst dann diesen wert z.b. auf auch einen leeren string mappen.

Wie geht das Mappen denn genau? In der Commandref finde ich nur das Attribut "mapping", das sich aber nur auf das Ersetzen des Gerätenamens zu beziehen scheint.

Ich möchte, dass die mittels "!reading" erzwungne Anzeige eines nicht vorhandenen Readings ein leeres Feld zeigt und nicht, wie es bei mir der Fall ist, eine "0".
Ich möchte damit nur verhindern, dass weiter rechts in der Tabelle stehende Werte nicht nach links rücken.
FHEM auf Hardkernel ODROID-N2+ mit Ubuntu 22.04 LTS
Funkschnittstelle EnOcean