Moin liebes Forum,
ich kämpfe gerade mit readingsGroup und bekomme es nicht hin, dass wenn ein Wert nicht vorhanden ist, sich die Zeile nicht verschiebt.
Bei folgenden drei Geräte (bk_Flower_Sensor_Blumenkasten.links, sz_Flower_Sensor_Drachenbaum, sz_Flower_Sensor_Zierspargel) existiert das Reading "moisture_optimal" nicht.
Damit sich die Zeile nicht so unschön verschiebt, wollte ich dort einfach "Undef" reinschreiben.
Ich habe es versucht mit valueFormat zu lösen, jedoch nicht geschafft.
Wie ist es richtig?
Internals:
CFGFN
DEF <Pflanze>,<Trockenheitswarnung>,<Temperatur>,<Feuchtigkeit>,<Optimal>,<Fruchtbarkeit>,<Lux>,<Batterie> .*Flower_Sensor.*:warning,temperature,moisture,moisture_optimal,fertility,lux,batteryPercent
NAME rg_PflanzensensorError
NR 459069
NTFY_ORDER 50-rg_PflanzensensorError
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
CONTENT:
az_Flower_Sensor_Dracaena 1
az_Flower_Sensor_Glueckskastanie 1
az_Flower_Sensor_Gummibaum 1
bk_Flower_Sensor_Blumenkasten.links 1
sz_Flower_Sensor_Bonsai.gross 1
sz_Flower_Sensor_Bonsai.klein 1
sz_Flower_Sensor_Drachenbaum 1
sz_Flower_Sensor_Geldbaum 1
sz_Flower_Sensor_Orchidee.orange 1
sz_Flower_Sensor_Zierspargel 1
t_warning_Pflanze_az_Flower_Sensor_Gummibaum 1
t_warning_Pflanze_sz_Flower_Sensor_Orchidee.orange 1
wz_Flower_Sensor_Bonsai 1
wz_Flower_Sensor_Einblatt 1
wz_Flower_Sensor_Elefantenfuss.links 1
wz_Flower_Sensor_Elefantenfuss.rechts 1
CONTENT2:
DEVICES:
ARRAY(0x557f154ae220)
ARRAY(0x557f17ca4148)
ARRAY(0x557f17cb7d28)
ARRAY(0x557f17c82310)
ARRAY(0x557f17d076b8)
ARRAY(0x557f176fb4c8)
ARRAY(0x557f17c96718)
ARRAY(0x557f17c000d8)
ARRAY(0x557f17283800)
ARRAY(0x557f17ca2220)
ARRAY(0x557f17c97318)
ARRAY(0x557f17d0cdf8)
ARRAY(0x557f17d0a490)
ARRAY(0x557f17cbf520)
ARRAY(0x557f17c02f88)
ARRAY(0x557f17d0df60)
ARRAY(0x557f17cc11a8)
fhem:
lastDefChange 5078
last_update 1549959162.34075
helper:
DEF
nameStyle style="color:red"
valueFormat { 'temperature' => "%0.1f °C",
'moisture' => "%0.1f %",
'lux' => "%0.f lx",
'batteryPercent' => "%0.f %",
'fertility' => "%0.f µ/s",
'moisture_optinal' => "{ return $VALUE if ($VALUE ne 'undef');; return 'Undef';; }"
}
mapping:
az_Flower_Sensor_Dracaena Dracaena (AZ)
az_Flower_Sensor_Glueckskastanie Glueckskastanie (AZ)
az_Flower_Sensor_Gummibaum Gummibaum (AZ)
bk_Flower_Sensor_Blumenkasten.links Balkonkasten Links
sz_Flower_Sensor_Bonsai.gross Bonsai groß (SZ)
sz_Flower_Sensor_Bonsai.klein Bonsai klein (SZ)
sz_Flower_Sensor_Drachenbaum Drachenbaum (SZ)
sz_Flower_Sensor_Geldbaum Geldbaum (SZ)
sz_Flower_Sensor_Orchidee.orange Orchidee Orange (SZ)
sz_Flower_Sensor_Zierspargel Zierspargel (SZ)
wz_Flower_Sensor_Bonsai Bonsai (WZ)
wz_Flower_Sensor_Einblatt Einblatt (WZ)
wz_Flower_Sensor_Elefantenfuss.links Elefantenfuß Links (WZ)
wz_Flower_Sensor_Elefantenfuss.rechts Elefantenfuß Rechts (WZ)
positions:
az_Flower_Sensor_Dracaena.batteryPercent 2:7
az_Flower_Sensor_Dracaena.fertility 2:5
az_Flower_Sensor_Dracaena.lux 2:6
az_Flower_Sensor_Dracaena.moisture 2:3
az_Flower_Sensor_Dracaena.moisture_optimal 2:4
az_Flower_Sensor_Dracaena.temperature 2:2
az_Flower_Sensor_Dracaena.warning 2:1
az_Flower_Sensor_Glueckskastanie.batteryPercent 3:7
az_Flower_Sensor_Glueckskastanie.fertility 3:5
az_Flower_Sensor_Glueckskastanie.lux 3:6
az_Flower_Sensor_Glueckskastanie.moisture 3:3
az_Flower_Sensor_Glueckskastanie.moisture_optimal 3:4
az_Flower_Sensor_Glueckskastanie.temperature 3:2
az_Flower_Sensor_Glueckskastanie.warning 3:1
az_Flower_Sensor_Gummibaum.batteryPercent 4:7
az_Flower_Sensor_Gummibaum.fertility 4:5
az_Flower_Sensor_Gummibaum.lux 4:6
az_Flower_Sensor_Gummibaum.moisture 4:3
az_Flower_Sensor_Gummibaum.moisture_optimal 4:4
az_Flower_Sensor_Gummibaum.temperature 4:2
az_Flower_Sensor_Gummibaum.warning 4:1
bk_Flower_Sensor_Blumenkasten.links.batteryPercent 5:6
bk_Flower_Sensor_Blumenkasten.links.fertility 5:4
bk_Flower_Sensor_Blumenkasten.links.lux 5:5
bk_Flower_Sensor_Blumenkasten.links.moisture 5:3
bk_Flower_Sensor_Blumenkasten.links.temperature 5:2
bk_Flower_Sensor_Blumenkasten.links.warning 5:1
sz_Flower_Sensor_Bonsai.gross.batteryPercent 6:7
sz_Flower_Sensor_Bonsai.gross.fertility 6:5
sz_Flower_Sensor_Bonsai.gross.lux 6:6
sz_Flower_Sensor_Bonsai.gross.moisture 6:3
sz_Flower_Sensor_Bonsai.gross.moisture_optimal 6:4
sz_Flower_Sensor_Bonsai.gross.temperature 6:2
sz_Flower_Sensor_Bonsai.gross.warning 6:1
sz_Flower_Sensor_Bonsai.klein.batteryPercent 7:7
sz_Flower_Sensor_Bonsai.klein.fertility 7:5
sz_Flower_Sensor_Bonsai.klein.lux 7:6
sz_Flower_Sensor_Bonsai.klein.moisture 7:3
sz_Flower_Sensor_Bonsai.klein.moisture_optimal 7:4
sz_Flower_Sensor_Bonsai.klein.temperature 7:2
sz_Flower_Sensor_Bonsai.klein.warning 7:1
sz_Flower_Sensor_Drachenbaum.batteryPercent 8:6
sz_Flower_Sensor_Drachenbaum.fertility 8:4
sz_Flower_Sensor_Drachenbaum.lux 8:5
sz_Flower_Sensor_Drachenbaum.moisture 8:3
sz_Flower_Sensor_Drachenbaum.temperature 8:2
sz_Flower_Sensor_Drachenbaum.warning 8:1
sz_Flower_Sensor_Geldbaum.batteryPercent 9:7
sz_Flower_Sensor_Geldbaum.fertility 9:5
sz_Flower_Sensor_Geldbaum.lux 9:6
sz_Flower_Sensor_Geldbaum.moisture 9:3
sz_Flower_Sensor_Geldbaum.moisture_optimal 9:4
sz_Flower_Sensor_Geldbaum.temperature 9:2
sz_Flower_Sensor_Geldbaum.warning 9:1
sz_Flower_Sensor_Orchidee.orange.batteryPercent 10:7
sz_Flower_Sensor_Orchidee.orange.fertility 10:5
sz_Flower_Sensor_Orchidee.orange.lux 10:6
sz_Flower_Sensor_Orchidee.orange.moisture 10:3
sz_Flower_Sensor_Orchidee.orange.moisture_optimal 10:4
sz_Flower_Sensor_Orchidee.orange.temperature 10:2
sz_Flower_Sensor_Orchidee.orange.warning 10:1
sz_Flower_Sensor_Zierspargel.batteryPercent 11:6
sz_Flower_Sensor_Zierspargel.fertility 11:4
sz_Flower_Sensor_Zierspargel.lux 11:5
sz_Flower_Sensor_Zierspargel.moisture 11:3
sz_Flower_Sensor_Zierspargel.temperature 11:2
sz_Flower_Sensor_Zierspargel.warning 11:1
wz_Flower_Sensor_Bonsai.batteryPercent 14:7
wz_Flower_Sensor_Bonsai.fertility 14:5
wz_Flower_Sensor_Bonsai.lux 14:6
wz_Flower_Sensor_Bonsai.moisture 14:3
wz_Flower_Sensor_Bonsai.moisture_optimal 14:4
wz_Flower_Sensor_Bonsai.temperature 14:2
wz_Flower_Sensor_Bonsai.warning 14:1
wz_Flower_Sensor_Einblatt.batteryPercent 15:7
wz_Flower_Sensor_Einblatt.fertility 15:5
wz_Flower_Sensor_Einblatt.lux 15:6
wz_Flower_Sensor_Einblatt.moisture 15:3
wz_Flower_Sensor_Einblatt.moisture_optimal 15:4
wz_Flower_Sensor_Einblatt.temperature 15:2
wz_Flower_Sensor_Einblatt.warning 15:1
wz_Flower_Sensor_Elefantenfuss.links.batteryPercent 16:7
wz_Flower_Sensor_Elefantenfuss.links.fertility 16:5
wz_Flower_Sensor_Elefantenfuss.links.lux 16:6
wz_Flower_Sensor_Elefantenfuss.links.moisture 16:3
wz_Flower_Sensor_Elefantenfuss.links.moisture_optimal 16:4
wz_Flower_Sensor_Elefantenfuss.links.temperature 16:2
wz_Flower_Sensor_Elefantenfuss.links.warning 16:1
wz_Flower_Sensor_Elefantenfuss.rechts.batteryPercent 17:7
wz_Flower_Sensor_Elefantenfuss.rechts.fertility 17:5
wz_Flower_Sensor_Elefantenfuss.rechts.lux 17:6
wz_Flower_Sensor_Elefantenfuss.rechts.moisture 17:3
wz_Flower_Sensor_Elefantenfuss.rechts.moisture_optimal 17:4
wz_Flower_Sensor_Elefantenfuss.rechts.temperature 17:2
wz_Flower_Sensor_Elefantenfuss.rechts.warning 17:1
recalc:
undef
undef
ARRAY(0x557f17cd07d8)
ARRAY(0x557f17c25be0)
ARRAY(0x557f17c83b50)
ARRAY(0x557f17bb1be0)
valueIcon:
warning.off 10px-kreis-gruen
warning.on 10px-kreis-rot
values:
formated:
undef
ARRAY(0x557f154523e8)
ARRAY(0x557f16216d60)
ARRAY(0x557f17b66a20)
ARRAY(0x557f16f1cfd0)
ARRAY(0x557f17affdb8)
ARRAY(0x557f125b5680)
ARRAY(0x557f17b76058)
orig:
undef
ARRAY(0x557f17b52890)
ARRAY(0x557f17b76430)
ARRAY(0x557f17cc8518)
ARRAY(0x557f15452268)
ARRAY(0x557f177c0670)
ARRAY(0x557f1738e8c0)
ARRAY(0x557f17aa3ac8)
prefixsuffix:
undef
ARRAY(0x557f17b5f880)
ARRAY(0x557f17c80a48)
ARRAY(0x557f1498a078)
ARRAY(0x557f17b51a50)
ARRAY(0x557f17c97be0)
ARRAY(0x557f178f3670)
ARRAY(0x557f17bfeb98)
Attributes:
DbLogExclude .*
mapping {
'az_Flower_Sensor_Dracaena' => 'Dracaena (AZ)',
'az_Flower_Sensor_Glueckskastanie' => 'Glueckskastanie (AZ)',
'az_Flower_Sensor_Gummibaum' => 'Gummibaum (AZ)',
'bk_Flower_Sensor_Blumenkasten.links' => 'Balkonkasten Links',
'sz_Flower_Sensor_Bonsai.gross' => 'Bonsai groß (SZ)',
'sz_Flower_Sensor_Bonsai.klein' => 'Bonsai klein (SZ)',
'sz_Flower_Sensor_Drachenbaum' => 'Drachenbaum (SZ)',
'sz_Flower_Sensor_Geldbaum' => 'Geldbaum (SZ)',
'sz_Flower_Sensor_Orchidee.orange' => 'Orchidee Orange (SZ)',
'sz_Flower_Sensor_Zierspargel' => 'Zierspargel (SZ)',
'wz_Flower_Sensor_Bonsai' => 'Bonsai (WZ)',
'wz_Flower_Sensor_Einblatt' => 'Einblatt (WZ)',
'wz_Flower_Sensor_Elefantenfuss.links' => 'Elefantenfuß Links (WZ)',
'wz_Flower_Sensor_Elefantenfuss.rechts' => 'Elefantenfuß Rechts (WZ)' }
nameStyle style="color:red"
room Pflanzen
valueFormat { 'temperature' => "%0.1f °C",
'moisture' => "%0.1f %",
'lux' => "%0.f lx",
'batteryPercent' => "%0.f %",
'fertility' => "%0.f µ/s",
'moisture_optinal' => "{ return $VALUE if ($VALUE ne 'undef');; return 'Undef';; }"
}
valueIcon {'warning.off' => '10px-kreis-gruen', 'warning.on' => '10px-kreis-rot' }
Gruß
Mathze
Ich denke, in diesem Beispiel im Wiki (https://wiki.fhem.de/wiki/ReadingsGroup#.C3.84ndern_von_Attributen:_Noch_ein_WeekdayTimer_Beispiel) wird sowas gemacht. Vielleicht hilft das weiter.
Leider nicht, an dem Beispiel aus dem Wiki habe ich mich entlang gearbeitet.
Gruß
Mathze
Zitat von: t1me2die am 12 Februar 2019, 09:43:15
Leider nicht, an dem Beispiel aus dem Wiki habe ich mich entlang gearbeitet.
?? Dann hätte ich aber irgendwas äquivalentes zu
<{rg_timer_Wasser_show_conditional($DEVICE,"nextUpdate")}@disabled>
in Deiner RG Definition erwartet, also z.B.
...moisture,<{moisture_optimal_conditional($DEVICE,"moisture_optimal")}>,fertility,...
und dazugehörig eine
moisture_optimal_conditional Subroutine in der 99_myUtils.pm.
Oder in welche Richtung gingen Deine Versuche?
wenn du willst das bestimmte readings immer in bestimmten spalten auftauchen unabhängig von den spalten davor musst du valueColumn verwenden,
wenn du willst das auch für nicht vorhandene readings etwas angezeigt wird musst du in der def ein ! vor dem reading namen verwenden.
Zitat von: justme1968 am 12 Februar 2019, 10:08:04
wenn du willst das bestimmte readings immer in bestimmten spalten auftauchen unabhängig von den spalten davor musst du valueColumn verwenden,
wenn du willst das auch für nicht vorhandene readings etwas angezeigt wird musst du in der def ein ! vor dem reading namen verwenden.
Danke Andre, dass habe ich gesucht!
Ich wollte nun den Wert "moisture_optimal" durch "k.A." ersetzen.
Kann ich dies via valueFormat machen?
{ 'temperature' => "%0.1f °C",
'moisture' => "%0.1f %",
'lux' => "%0.f lx",
'batteryPercent' => "%0.f %",
'fertility' => "%0.f µ/s",
'moisture_optimal' => "{ return $VALUE if ($VALUE ne 'moisture_optimal');; return 'k.A.';; }"
}
Gruß
Mathze
sollte genau so gehen. wenn die reading namen und werte stimmen.
Das dachte ich mir auch, jedoch ist das Ergebnis nicht wie erwartet.
Hier noch einmal ein List vom rg-Device
Internals:
DEF <Pflanze>,<Trockenheitswarnung>,<Temperatur>,<Feuchtigkeit>,<Optimal>,<Fruchtbarkeit>,<Lux>,<Batterie> .._Flower_Sensor.*:warning,temperature,moisture,!moisture_optimal,fertility,lux,batteryPercent
NAME rg_PflanzensensorError
NR 913
NTFY_ORDER 50-rg_PflanzensensorError
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
CONTENT:
az_Flower_Sensor_Dracaena 1
az_Flower_Sensor_Glueckskastanie 1
az_Flower_Sensor_Gummibaum 1
bk_Flower_Sensor_Blumenkasten.links 1
sz_Flower_Sensor_Bonsai.gross 1
sz_Flower_Sensor_Bonsai.klein 1
sz_Flower_Sensor_Drachenbaum 1
sz_Flower_Sensor_Geldbaum 1
sz_Flower_Sensor_Orchidee.orange 1
sz_Flower_Sensor_Zierspargel 1
wz_Flower_Sensor_Bonsai 1
wz_Flower_Sensor_Einblatt 1
wz_Flower_Sensor_Elefantenfuss.links 1
wz_Flower_Sensor_Elefantenfuss.rechts 1
CONTENT2:
DEVICES:
ARRAY(0x5625246d6638)
ARRAY(0x56252cf41698)
ARRAY(0x56252c8db540)
ARRAY(0x56252cf3e418)
ARRAY(0x56252cb28340)
ARRAY(0x56252c8c2df8)
ARRAY(0x56252c67c768)
ARRAY(0x56252c66f818)
ARRAY(0x5625245cac40)
ARRAY(0x56252c826380)
ARRAY(0x56252c644018)
ARRAY(0x56252beaaea8)
ARRAY(0x5625250a2330)
ARRAY(0x56252c634ed8)
ARRAY(0x56252c67c750)
fhem:
lastDefChange 39
last_update 1549964744.54061
helper:
DEF
nameStyle style="color:red"
valueFormat { 'temperature' => "%0.1f °C",
'moisture' => "%.0f %",
'lux' => "%0.f lx",
'batteryPercent' => "%0.f %",
'fertility' => "%0.f µ/s",
'moisture_optimal' => "{ return $VALUE if ($VALUE ne 'moisture_optimal');; return 'k.A.';; }"
}
mapping:
az_Flower_Sensor_Dracaena Dracaena (AZ)
az_Flower_Sensor_Glueckskastanie Glueckskastanie (AZ)
az_Flower_Sensor_Gummibaum Gummibaum (AZ)
bk_Flower_Sensor_Blumenkasten.links Balkonkasten Links
sz_Flower_Sensor_Bonsai.gross Bonsai groß (SZ)
sz_Flower_Sensor_Bonsai.klein Bonsai klein (SZ)
sz_Flower_Sensor_Drachenbaum Drachenbaum (SZ)
sz_Flower_Sensor_Geldbaum Geldbaum (SZ)
sz_Flower_Sensor_Orchidee.orange Orchidee Orange (SZ)
sz_Flower_Sensor_Zierspargel Zierspargel (SZ)
wz_Flower_Sensor_Bonsai Bonsai (WZ)
wz_Flower_Sensor_Einblatt Einblatt (WZ)
wz_Flower_Sensor_Elefantenfuss.links Elefantenfuß Links (WZ)
wz_Flower_Sensor_Elefantenfuss.rechts Elefantenfuß Rechts (WZ)
positions:
az_Flower_Sensor_Dracaena.batteryPercent 2:7
az_Flower_Sensor_Dracaena.fertility 2:5
az_Flower_Sensor_Dracaena.lux 2:6
az_Flower_Sensor_Dracaena.moisture 2:3
az_Flower_Sensor_Dracaena.moisture_optimal 2:4
az_Flower_Sensor_Dracaena.temperature 2:2
az_Flower_Sensor_Dracaena.warning 2:1
az_Flower_Sensor_Glueckskastanie.batteryPercent 3:7
az_Flower_Sensor_Glueckskastanie.fertility 3:5
az_Flower_Sensor_Glueckskastanie.lux 3:6
az_Flower_Sensor_Glueckskastanie.moisture 3:3
az_Flower_Sensor_Glueckskastanie.moisture_optimal 3:4
az_Flower_Sensor_Glueckskastanie.temperature 3:2
az_Flower_Sensor_Glueckskastanie.warning 3:1
az_Flower_Sensor_Gummibaum.batteryPercent 4:7
az_Flower_Sensor_Gummibaum.fertility 4:5
az_Flower_Sensor_Gummibaum.lux 4:6
az_Flower_Sensor_Gummibaum.moisture 4:3
az_Flower_Sensor_Gummibaum.moisture_optimal 4:4
az_Flower_Sensor_Gummibaum.temperature 4:2
az_Flower_Sensor_Gummibaum.warning 4:1
bk_Flower_Sensor_Blumenkasten.links.batteryPercent 5:7
bk_Flower_Sensor_Blumenkasten.links.fertility 5:5
bk_Flower_Sensor_Blumenkasten.links.lux 5:6
bk_Flower_Sensor_Blumenkasten.links.moisture 5:3
bk_Flower_Sensor_Blumenkasten.links.moisture_optimal 5:4
bk_Flower_Sensor_Blumenkasten.links.temperature 5:2
bk_Flower_Sensor_Blumenkasten.links.warning 5:1
sz_Flower_Sensor_Bonsai.gross.batteryPercent 6:7
sz_Flower_Sensor_Bonsai.gross.fertility 6:5
sz_Flower_Sensor_Bonsai.gross.lux 6:6
sz_Flower_Sensor_Bonsai.gross.moisture 6:3
sz_Flower_Sensor_Bonsai.gross.moisture_optimal 6:4
sz_Flower_Sensor_Bonsai.gross.temperature 6:2
sz_Flower_Sensor_Bonsai.gross.warning 6:1
sz_Flower_Sensor_Bonsai.klein.batteryPercent 7:7
sz_Flower_Sensor_Bonsai.klein.fertility 7:5
sz_Flower_Sensor_Bonsai.klein.lux 7:6
sz_Flower_Sensor_Bonsai.klein.moisture 7:3
sz_Flower_Sensor_Bonsai.klein.moisture_optimal 7:4
sz_Flower_Sensor_Bonsai.klein.temperature 7:2
sz_Flower_Sensor_Bonsai.klein.warning 7:1
sz_Flower_Sensor_Drachenbaum.batteryPercent 8:7
sz_Flower_Sensor_Drachenbaum.fertility 8:5
sz_Flower_Sensor_Drachenbaum.lux 8:6
sz_Flower_Sensor_Drachenbaum.moisture 8:3
sz_Flower_Sensor_Drachenbaum.moisture_optimal 8:4
sz_Flower_Sensor_Drachenbaum.temperature 8:2
sz_Flower_Sensor_Drachenbaum.warning 8:1
sz_Flower_Sensor_Geldbaum.batteryPercent 9:7
sz_Flower_Sensor_Geldbaum.fertility 9:5
sz_Flower_Sensor_Geldbaum.lux 9:6
sz_Flower_Sensor_Geldbaum.moisture 9:3
sz_Flower_Sensor_Geldbaum.moisture_optimal 9:4
sz_Flower_Sensor_Geldbaum.temperature 9:2
sz_Flower_Sensor_Geldbaum.warning 9:1
sz_Flower_Sensor_Orchidee.orange.batteryPercent 10:7
sz_Flower_Sensor_Orchidee.orange.fertility 10:5
sz_Flower_Sensor_Orchidee.orange.lux 10:6
sz_Flower_Sensor_Orchidee.orange.moisture 10:3
sz_Flower_Sensor_Orchidee.orange.moisture_optimal 10:4
sz_Flower_Sensor_Orchidee.orange.temperature 10:2
sz_Flower_Sensor_Orchidee.orange.warning 10:1
sz_Flower_Sensor_Zierspargel.batteryPercent 11:7
sz_Flower_Sensor_Zierspargel.fertility 11:5
sz_Flower_Sensor_Zierspargel.lux 11:6
sz_Flower_Sensor_Zierspargel.moisture 11:3
sz_Flower_Sensor_Zierspargel.moisture_optimal 11:4
sz_Flower_Sensor_Zierspargel.temperature 11:2
sz_Flower_Sensor_Zierspargel.warning 11:1
wz_Flower_Sensor_Bonsai.batteryPercent 12:7
wz_Flower_Sensor_Bonsai.fertility 12:5
wz_Flower_Sensor_Bonsai.lux 12:6
wz_Flower_Sensor_Bonsai.moisture 12:3
wz_Flower_Sensor_Bonsai.moisture_optimal 12:4
wz_Flower_Sensor_Bonsai.temperature 12:2
wz_Flower_Sensor_Bonsai.warning 12:1
wz_Flower_Sensor_Einblatt.batteryPercent 13:7
wz_Flower_Sensor_Einblatt.fertility 13:5
wz_Flower_Sensor_Einblatt.lux 13:6
wz_Flower_Sensor_Einblatt.moisture 13:3
wz_Flower_Sensor_Einblatt.moisture_optimal 13:4
wz_Flower_Sensor_Einblatt.temperature 13:2
wz_Flower_Sensor_Einblatt.warning 13:1
wz_Flower_Sensor_Elefantenfuss.links.batteryPercent 14:7
wz_Flower_Sensor_Elefantenfuss.links.fertility 14:5
wz_Flower_Sensor_Elefantenfuss.links.lux 14:6
wz_Flower_Sensor_Elefantenfuss.links.moisture 14:3
wz_Flower_Sensor_Elefantenfuss.links.moisture_optimal 14:4
wz_Flower_Sensor_Elefantenfuss.links.temperature 14:2
wz_Flower_Sensor_Elefantenfuss.links.warning 14:1
wz_Flower_Sensor_Elefantenfuss.rechts.batteryPercent 15:7
wz_Flower_Sensor_Elefantenfuss.rechts.fertility 15:5
wz_Flower_Sensor_Elefantenfuss.rechts.lux 15:6
wz_Flower_Sensor_Elefantenfuss.rechts.moisture 15:3
wz_Flower_Sensor_Elefantenfuss.rechts.moisture_optimal 15:4
wz_Flower_Sensor_Elefantenfuss.rechts.temperature 15:2
wz_Flower_Sensor_Elefantenfuss.rechts.warning 15:1
valueIcon:
warning.off 10px-kreis-gruen
warning.on 10px-kreis-rot
values:
formated:
undef
ARRAY(0x56252cb2b268)
ARRAY(0x56252c792a80)
ARRAY(0x56252c5b7d18)
ARRAY(0x56252cb0b1a8)
ARRAY(0x56252c8565e0)
ARRAY(0x5625245417b0)
ARRAY(0x56252c79a0c0)
orig:
undef
ARRAY(0x56252cb09600)
ARRAY(0x56252b4ea2f0)
ARRAY(0x562524953958)
ARRAY(0x56252c853e78)
ARRAY(0x56252c361000)
ARRAY(0x56252c6de910)
ARRAY(0x56252c662018)
prefixsuffix:
undef
ARRAY(0x56252c50c6d8)
ARRAY(0x56252c83c3f0)
ARRAY(0x56252c082fa8)
ARRAY(0x56252c67c3a8)
ARRAY(0x56252c89a278)
ARRAY(0x56252c7b1980)
ARRAY(0x56252c6637f8)
Attributes:
DbLogExclude .*
mapping {
'az_Flower_Sensor_Dracaena' => 'Dracaena (AZ)',
'az_Flower_Sensor_Glueckskastanie' => 'Glueckskastanie (AZ)',
'az_Flower_Sensor_Gummibaum' => 'Gummibaum (AZ)',
'bk_Flower_Sensor_Blumenkasten.links' => 'Balkonkasten Links',
'sz_Flower_Sensor_Bonsai.gross' => 'Bonsai groß (SZ)',
'sz_Flower_Sensor_Bonsai.klein' => 'Bonsai klein (SZ)',
'sz_Flower_Sensor_Drachenbaum' => 'Drachenbaum (SZ)',
'sz_Flower_Sensor_Geldbaum' => 'Geldbaum (SZ)',
'sz_Flower_Sensor_Orchidee.orange' => 'Orchidee Orange (SZ)',
'sz_Flower_Sensor_Zierspargel' => 'Zierspargel (SZ)',
'wz_Flower_Sensor_Bonsai' => 'Bonsai (WZ)',
'wz_Flower_Sensor_Einblatt' => 'Einblatt (WZ)',
'wz_Flower_Sensor_Elefantenfuss.links' => 'Elefantenfuß Links (WZ)',
'wz_Flower_Sensor_Elefantenfuss.rechts' => 'Elefantenfuß Rechts (WZ)' }
nameStyle style="color:red"
room Pflanzen
valueFormat { 'temperature' => "%0.1f °C",
'moisture' => "%.0f %",
'lux' => "%0.f lx",
'batteryPercent' => "%0.f %",
'fertility' => "%0.f µ/s",
'moisture_optimal' => "{ return $VALUE if ($VALUE ne 'moisture_optimal');; return 'k.A.';; }"
}
valueIcon {'warning.off' => '10px-kreis-gruen', 'warning.on' => '10px-kreis-rot' }
Gruß
Mathze
zeig mal ein list von einem sensor device.
List von einem Device, wo das Reading "moisture_optimal" vorhanden ist:
Internals:
NAME az_Flower_Sensor_Glueckskastanie
NR 829
STATE 15.5 °C
TYPE dummy
Helper:
DBLOG:
fertility:
myDbLog:
TIME 1549965117.43616
VALUE 84
lux:
myDbLog:
TIME 1549965117.18386
VALUE 1104
moisture:
myDbLog:
TIME 1549965117.34293
VALUE 16
state:
myDbLog:
TIME 1549965117.55106
VALUE active
temperature:
myDbLog:
TIME 1549965117.2728
VALUE 15.5
READINGS:
2019-02-11 17:24:53 batteryPercent 99
2019-02-11 17:24:53 batteryState ok
2019-02-12 10:51:57 fertility 84
2019-02-11 17:24:53 firmware 3.1.9
2019-02-12 05:49:37 lastGattError charWrite faild
2019-02-12 10:51:57 lux 1104
2019-02-12 10:51:57 moisture 16
2019-01-13 21:35:31 moisture_max 35
2019-01-13 21:35:33 moisture_min 10
2019-01-13 21:35:25 moisture_optimal 10-35%
2019-02-12 10:51:57 state active
2019-02-12 10:51:57 temperature 15.5
2019-02-03 18:30:35 warning off
Attributes:
DbLogInclude temperature,lux,fertility,moisture
genericDeviceType thermometer
group Pflanzen
icon hue_room_garden
room Arbeitszimmer,Homekit,Pflanzen,XiaomiBTLESens
stateFormat temperature °C
Ein List von einem Device, wo kein Reading mit dem Namen "moisture_optimal" vorhanden ist:
Internals:
NAME bk_Flower_Sensor_Blumenkasten.links
NR 884
STATE 6.5 °C
TYPE dummy
Helper:
DBLOG:
fertility:
myDbLog:
TIME 1549964791.94835
VALUE 210
lastGattError:
myDbLog:
TIME 1549964248.34215
VALUE No route to host (113)
lux:
myDbLog:
TIME 1549964792.176
VALUE 2179
moisture:
myDbLog:
TIME 1549964791.8822
VALUE 9
state:
myDbLog:
TIME 1549964792.24016
VALUE active
temperature:
myDbLog:
TIME 1549964792.00662
VALUE 6.5
READINGS:
2019-02-11 17:29:20 batteryPercent 98
2019-02-11 17:29:20 batteryState ok
2019-02-12 10:46:31 fertility 210
2019-02-11 17:29:20 firmware 3.1.9
2019-02-12 10:37:28 lastGattError No route to host (113)
2019-02-12 10:46:32 lux 2179
2019-02-12 10:46:31 moisture 9
2019-02-12 10:46:32 state active
2019-02-12 10:46:32 temperature 6.5
2019-02-02 18:30:34 warning off
Attributes:
DbLogInclude battery,temperature,lux,fertility,moisture
genericDeviceType thermometer
group Pflanzen
icon hue_room_garden
room Balkon,Homekit,Pflanzen,XiaomiBTLESens
stateFormat temperature °C
Gruß
Mathze
nimm mal zum testen bitte das hier: 'moisture_optimal' => "{ return \">>$VALUE<<\" }"
um zu schauen ob das valueFormat für jede zeile aufgerufen wird.
Habe ich gemacht, hier ein List vom Device:
Internals:
DEF <Pflanze>,<Trockenheitswarnung>,<Temperatur>,<Feuchtigkeit>,<Optimal>,<Fruchtbarkeit>,<Lux>,<Batterie> .._Flower_Sensor.*:warning,temperature,moisture,!moisture_optimal,fertility,lux,batteryPercent
NAME rg_PflanzensensorError
NR 911
NTFY_ORDER 50-rg_PflanzensensorError
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
CONTENT:
az_Flower_Sensor_Dracaena 1
az_Flower_Sensor_Glueckskastanie 1
az_Flower_Sensor_Gummibaum 1
bk_Flower_Sensor_Blumenkasten.links 1
sz_Flower_Sensor_Bonsai.gross 1
sz_Flower_Sensor_Bonsai.klein 1
sz_Flower_Sensor_Drachenbaum 1
sz_Flower_Sensor_Geldbaum 1
sz_Flower_Sensor_Orchidee.orange 1
sz_Flower_Sensor_Zierspargel 1
wz_Flower_Sensor_Bonsai 1
wz_Flower_Sensor_Einblatt 1
wz_Flower_Sensor_Elefantenfuss.links 1
wz_Flower_Sensor_Elefantenfuss.rechts 1
CONTENT2:
DEVICES:
ARRAY(0x56252f07afd0)
ARRAY(0x56252d56d390)
ARRAY(0x56252f0eb508)
ARRAY(0x56252efeafb8)
ARRAY(0x56252eb37d80)
ARRAY(0x56252ef6bd68)
ARRAY(0x56252ef42138)
ARRAY(0x56252eed74a8)
ARRAY(0x56252ef98658)
ARRAY(0x56252e217dd8)
ARRAY(0x56252eff5de0)
ARRAY(0x56252eebd260)
ARRAY(0x56252f0e0798)
ARRAY(0x56252ef97d30)
ARRAY(0x56252da9f740)
fhem:
lastDefChange 204
last_update 1550045712.44487
helper:
DEF
nameStyle style="color:red"
valueFormat { 'temperature' => "%0.1f °C",
'moisture' => "%.0f %",
'lux' => "%0.f lx",
'batteryPercent' => "%0.f %",
'fertility' => "%0.f µ/s",
'moisture_optimal' => "{ return \">>$VALUE<<\" }"
}
mapping:
az_Flower_Sensor_Dracaena Dracaena (AZ)
az_Flower_Sensor_Glueckskastanie Glueckskastanie (AZ)
az_Flower_Sensor_Gummibaum Gummibaum (AZ)
bk_Flower_Sensor_Blumenkasten.links Balkonkasten Links (BK)
sz_Flower_Sensor_Bonsai.gross Bonsai groß (SZ)
sz_Flower_Sensor_Bonsai.klein Bonsai klein (SZ)
sz_Flower_Sensor_Drachenbaum Drachenbaum (SZ)
sz_Flower_Sensor_Geldbaum Geldbaum (SZ)
sz_Flower_Sensor_Orchidee.orange Orchidee Orange (SZ)
sz_Flower_Sensor_Zierspargel Zierspargel (SZ)
wz_Flower_Sensor_Bonsai Bonsai (WZ)
wz_Flower_Sensor_Einblatt Einblatt (WZ)
wz_Flower_Sensor_Elefantenfuss.links Elefantenfuß Links (WZ)
wz_Flower_Sensor_Elefantenfuss.rechts Elefantenfuß Rechts (WZ)
positions:
az_Flower_Sensor_Dracaena.batteryPercent 2:7
az_Flower_Sensor_Dracaena.fertility 2:5
az_Flower_Sensor_Dracaena.lux 2:6
az_Flower_Sensor_Dracaena.moisture 2:3
az_Flower_Sensor_Dracaena.moisture_optimal 2:4
az_Flower_Sensor_Dracaena.temperature 2:2
az_Flower_Sensor_Dracaena.warning 2:1
az_Flower_Sensor_Glueckskastanie.batteryPercent 3:7
az_Flower_Sensor_Glueckskastanie.fertility 3:5
az_Flower_Sensor_Glueckskastanie.lux 3:6
az_Flower_Sensor_Glueckskastanie.moisture 3:3
az_Flower_Sensor_Glueckskastanie.moisture_optimal 3:4
az_Flower_Sensor_Glueckskastanie.temperature 3:2
az_Flower_Sensor_Glueckskastanie.warning 3:1
az_Flower_Sensor_Gummibaum.batteryPercent 4:7
az_Flower_Sensor_Gummibaum.fertility 4:5
az_Flower_Sensor_Gummibaum.lux 4:6
az_Flower_Sensor_Gummibaum.moisture 4:3
az_Flower_Sensor_Gummibaum.moisture_optimal 4:4
az_Flower_Sensor_Gummibaum.temperature 4:2
az_Flower_Sensor_Gummibaum.warning 4:1
bk_Flower_Sensor_Blumenkasten.links.batteryPercent 5:7
bk_Flower_Sensor_Blumenkasten.links.fertility 5:5
bk_Flower_Sensor_Blumenkasten.links.lux 5:6
bk_Flower_Sensor_Blumenkasten.links.moisture 5:3
bk_Flower_Sensor_Blumenkasten.links.moisture_optimal 5:4
bk_Flower_Sensor_Blumenkasten.links.temperature 5:2
bk_Flower_Sensor_Blumenkasten.links.warning 5:1
sz_Flower_Sensor_Bonsai.gross.batteryPercent 6:7
sz_Flower_Sensor_Bonsai.gross.fertility 6:5
sz_Flower_Sensor_Bonsai.gross.lux 6:6
sz_Flower_Sensor_Bonsai.gross.moisture 6:3
sz_Flower_Sensor_Bonsai.gross.moisture_optimal 6:4
sz_Flower_Sensor_Bonsai.gross.temperature 6:2
sz_Flower_Sensor_Bonsai.gross.warning 6:1
sz_Flower_Sensor_Bonsai.klein.batteryPercent 7:7
sz_Flower_Sensor_Bonsai.klein.fertility 7:5
sz_Flower_Sensor_Bonsai.klein.lux 7:6
sz_Flower_Sensor_Bonsai.klein.moisture 7:3
sz_Flower_Sensor_Bonsai.klein.moisture_optimal 7:4
sz_Flower_Sensor_Bonsai.klein.temperature 7:2
sz_Flower_Sensor_Bonsai.klein.warning 7:1
sz_Flower_Sensor_Drachenbaum.batteryPercent 8:7
sz_Flower_Sensor_Drachenbaum.fertility 8:5
sz_Flower_Sensor_Drachenbaum.lux 8:6
sz_Flower_Sensor_Drachenbaum.moisture 8:3
sz_Flower_Sensor_Drachenbaum.moisture_optimal 8:4
sz_Flower_Sensor_Drachenbaum.temperature 8:2
sz_Flower_Sensor_Drachenbaum.warning 8:1
sz_Flower_Sensor_Geldbaum.batteryPercent 9:7
sz_Flower_Sensor_Geldbaum.fertility 9:5
sz_Flower_Sensor_Geldbaum.lux 9:6
sz_Flower_Sensor_Geldbaum.moisture 9:3
sz_Flower_Sensor_Geldbaum.moisture_optimal 9:4
sz_Flower_Sensor_Geldbaum.temperature 9:2
sz_Flower_Sensor_Geldbaum.warning 9:1
sz_Flower_Sensor_Orchidee.orange.batteryPercent 10:7
sz_Flower_Sensor_Orchidee.orange.fertility 10:5
sz_Flower_Sensor_Orchidee.orange.lux 10:6
sz_Flower_Sensor_Orchidee.orange.moisture 10:3
sz_Flower_Sensor_Orchidee.orange.moisture_optimal 10:4
sz_Flower_Sensor_Orchidee.orange.temperature 10:2
sz_Flower_Sensor_Orchidee.orange.warning 10:1
sz_Flower_Sensor_Zierspargel.batteryPercent 11:7
sz_Flower_Sensor_Zierspargel.fertility 11:5
sz_Flower_Sensor_Zierspargel.lux 11:6
sz_Flower_Sensor_Zierspargel.moisture 11:3
sz_Flower_Sensor_Zierspargel.moisture_optimal 11:4
sz_Flower_Sensor_Zierspargel.temperature 11:2
sz_Flower_Sensor_Zierspargel.warning 11:1
wz_Flower_Sensor_Bonsai.batteryPercent 12:7
wz_Flower_Sensor_Bonsai.fertility 12:5
wz_Flower_Sensor_Bonsai.lux 12:6
wz_Flower_Sensor_Bonsai.moisture 12:3
wz_Flower_Sensor_Bonsai.moisture_optimal 12:4
wz_Flower_Sensor_Bonsai.temperature 12:2
wz_Flower_Sensor_Bonsai.warning 12:1
wz_Flower_Sensor_Einblatt.batteryPercent 13:7
wz_Flower_Sensor_Einblatt.fertility 13:5
wz_Flower_Sensor_Einblatt.lux 13:6
wz_Flower_Sensor_Einblatt.moisture 13:3
wz_Flower_Sensor_Einblatt.moisture_optimal 13:4
wz_Flower_Sensor_Einblatt.temperature 13:2
wz_Flower_Sensor_Einblatt.warning 13:1
wz_Flower_Sensor_Elefantenfuss.links.batteryPercent 14:7
wz_Flower_Sensor_Elefantenfuss.links.fertility 14:5
wz_Flower_Sensor_Elefantenfuss.links.lux 14:6
wz_Flower_Sensor_Elefantenfuss.links.moisture 14:3
wz_Flower_Sensor_Elefantenfuss.links.moisture_optimal 14:4
wz_Flower_Sensor_Elefantenfuss.links.temperature 14:2
wz_Flower_Sensor_Elefantenfuss.links.warning 14:1
wz_Flower_Sensor_Elefantenfuss.rechts.batteryPercent 15:7
wz_Flower_Sensor_Elefantenfuss.rechts.fertility 15:5
wz_Flower_Sensor_Elefantenfuss.rechts.lux 15:6
wz_Flower_Sensor_Elefantenfuss.rechts.moisture 15:3
wz_Flower_Sensor_Elefantenfuss.rechts.moisture_optimal 15:4
wz_Flower_Sensor_Elefantenfuss.rechts.temperature 15:2
wz_Flower_Sensor_Elefantenfuss.rechts.warning 15:1
recalc:
undef
undef
ARRAY(0x56252ede2af0)
ARRAY(0x56252f07b390)
undef
ARRAY(0x56252ec5ff00)
ARRAY(0x56252f112778)
valueIcon:
warning.off 10px-kreis-gruen
warning.on 10px-kreis-rot
values:
formated:
undef
ARRAY(0x56252d626048)
ARRAY(0x56252ee4f9a8)
ARRAY(0x56252cfc91d0)
ARRAY(0x56252cfbdf28)
ARRAY(0x56252d9012f0)
ARRAY(0x56252da56a40)
ARRAY(0x56252f197430)
orig:
undef
ARRAY(0x56252d74ccf0)
ARRAY(0x56252d72cbe0)
ARRAY(0x56252d62a488)
ARRAY(0x56252d7c10e0)
ARRAY(0x56252c897410)
ARRAY(0x56252ca198d0)
ARRAY(0x56252ed31260)
prefixsuffix:
undef
ARRAY(0x562529851bc8)
ARRAY(0x56252ca60d90)
ARRAY(0x56252d632b90)
ARRAY(0x56252de278a0)
ARRAY(0x56252d72e328)
ARRAY(0x56252491ca40)
ARRAY(0x56252d28b5c0)
Attributes:
DbLogExclude .*
mapping {
'az_Flower_Sensor_Dracaena' => 'Dracaena (AZ)',
'az_Flower_Sensor_Glueckskastanie' => 'Glueckskastanie (AZ)',
'az_Flower_Sensor_Gummibaum' => 'Gummibaum (AZ)',
'bk_Flower_Sensor_Blumenkasten.links' => 'Balkonkasten Links (BK)',
'sz_Flower_Sensor_Bonsai.gross' => 'Bonsai groß (SZ)',
'sz_Flower_Sensor_Bonsai.klein' => 'Bonsai klein (SZ)',
'sz_Flower_Sensor_Drachenbaum' => 'Drachenbaum (SZ)',
'sz_Flower_Sensor_Geldbaum' => 'Geldbaum (SZ)',
'sz_Flower_Sensor_Orchidee.orange' => 'Orchidee Orange (SZ)',
'sz_Flower_Sensor_Zierspargel' => 'Zierspargel (SZ)',
'wz_Flower_Sensor_Bonsai' => 'Bonsai (WZ)',
'wz_Flower_Sensor_Einblatt' => 'Einblatt (WZ)',
'wz_Flower_Sensor_Elefantenfuss.links' => 'Elefantenfuß Links (WZ)',
'wz_Flower_Sensor_Elefantenfuss.rechts' => 'Elefantenfuß Rechts (WZ)' }
nameStyle style="color:red"
room Pflanzen
valueFormat { 'temperature' => "%0.1f °C",
'moisture' => "%.0f %",
'lux' => "%0.f lx",
'batteryPercent' => "%0.f %",
'fertility' => "%0.f µ/s",
'moisture_optimal' => "{ return \">>$VALUE<<\" }"
}
valueIcon {'warning.off' => '10px-kreis-gruen', 'warning.on' => '10px-kreis-rot' }
Im Anhang habe ich einen Screenshot, wie es ausschaut z.Z.
Sobald ich einen if-Zweig mit einbaue, klappt es nicht mehr.
Funktioniert.
'moisture_optimal' => "{ return \">>HAHA<<\" }"
Fuktioniert nicht:
'moisture_optimal' => "{ return \">>HAHA<<\" if ($VALUE eq \"moisture_optimal\");; }"
oder
'moisture_optimal' => "{ return \">>HAHA<<\" if ($VALUE eq "moisture_optimal");; }"
oder
'moisture_optimal' => "{ return \">>HAHA<<\" if ($VALUE eq 'moisture_optimal') }"
oder
'moisture_optimal' => "{ return \">>HAHA<<\" if ($VALUE =~ /moisture_optimal/) }"
Ich sehe gerade, dass diverse Fehlermeldungen ins Log geschrieben wurden:
2019.02.13 09:15:12 1: PERL WARNING: Invalid conversion in sprintf: "%<" at ./FHEM/33_readingsGroup.pm line 543.
2019.02.13 09:18:14 2: syntax error at (eval 520045) line 1, near "% ne"
2019.02.13 09:18:14 2: syntax error at (eval 520053) line 1, near "% ne"
2019.02.13 09:18:14 2: syntax error at (eval 520061) line 1, near "% ne"
2019.02.13 09:18:14 2: Bareword "moisture_optimal" not allowed while "strict subs" in use at (eval 520069) line 1.
2019.02.13 09:18:14 2: syntax error at (eval 520077) line 1, near "% ne"
2019.02.13 09:18:14 2: syntax error at (eval 520085) line 1, near "% ne"
2019.02.13 09:18:14 2: Bareword "moisture_optimal" not allowed while "strict subs" in use at (eval 520093) line 1.
2019.02.13 09:18:14 2: syntax error at (eval 520101) line 1, near "% ne"
2019.02.13 09:18:14 2: syntax error at (eval 520109) line 1, near "% ne"
2019.02.13 09:18:14 2: Bareword "moisture_optimal" not allowed while "strict subs" in use at (eval 520117) line 1.
2019.02.13 09:18:14 2: syntax error at (eval 520125) line 1, near "% ne"
2019.02.13 09:18:15 2: syntax error at (eval 520133) line 1, near "% ne"
Gruß
Mathze
Habe es leider noch immer nicht hinbekommen.
Hat vielleicht jemand noch einen Tipp für mich?
Gruß
Mathze
Push
Gruß
Mathze
Push, Problem bisher leider noch nicht gelöst.
Gruß
Mathze