[gelöst] [readingsGroup] Zeile ausblenden, wenn Readings nicht vorhanden

Begonnen von mahowi, 16 August 2017, 07:55:34

Vorheriges Thema - Nächstes Thema

mahowi

Ich habe eine readingsGroup mit meinen Abfallterminen. Da bei uns der Sperrmüll nur zweimal im Jahr abgeholt wird, wird nach der zweiten Abfuhr natürlich kein weiterer Termin angezeigt und es existieren keine Readings mehr dafür. Dementsprechend wird das Symbol dafür in einer ansonsten leeren Zeile angezeigt (siehe Screenshot).

Hier ein list:
Internals:
   CFGFN
   DEF        Abfall:<Tag>,<Datum>,<>,<Ereignis>,<Tage>
Abfall:Restabfall_weekday,Restabfall_date,<%dustbin>,Restabfall_text,Restabfall_days
Abfall:Altpapier_weekday,Altpapier_date,<%dustbin@04D921>,Altpapier_text,Altpapier_days
Abfall:Bioabfall_weekday,Bioabfall_date,<%dustbin@D2691E>,Bioabfall_text,Bioabfall_days
Abfall:GelberSack_weekday,GelberSack_date,<%dustbin@FFFF00>,GelberSack_text,GelberSack_days
Abfall:Sperrmuell_weekday,Sperrmuell_date,<%scene_livingroom@01A3F5>,Sperrmuell_text,Sperrmuell_days
   NAME       rgAbfallkalender
   NR         15
   NTFY_ORDER 50-rgAbfallkalender
   STATE      Initialized
   TYPE       readingsGroup
   mayBeVisible 1
   CONTENT:
     Abfall     1
   CONTENT2:
   DEVICES:
     ARRAY(0x66e8dc0)
     ARRAY(0x6196d40)
     ARRAY(0x67be678)
     ARRAY(0x67be6a8)
     ARRAY(0x66e96c0)
     ARRAY(0x67be660)
   fhem:
     lastDefChange 6
     last_update 1502861533.11627
   helper:
     DEF
     valueStyle { if ($READING =~ ".*days" && $VALUE == 0) { 'style="color:red"'}
elsif ($READING =~ ".*days" && $VALUE == 1 ) { 'style="color:yellow"'}
elsif ($READING =~ ".*days" && $VALUE > 1 && $VALUE < 8) { 'style="color:green"'} }
     positions:
       Abfall.Altpapier_date 3:2
       Abfall.Altpapier_days 3:5
       Abfall.Altpapier_text 3:4
       Abfall.Altpapier_weekday 3:1
       Abfall.Bioabfall_date 4:2
       Abfall.Bioabfall_days 4:5
       Abfall.Bioabfall_text 4:4
       Abfall.Bioabfall_weekday 4:1
       Abfall.GelberSack_date 5:2
       Abfall.GelberSack_days 5:5
       Abfall.GelberSack_text 5:4
       Abfall.GelberSack_weekday 5:1
       Abfall.Restabfall_date 2:2
       Abfall.Restabfall_days 2:5
       Abfall.Restabfall_text 2:4
       Abfall.Restabfall_weekday 2:1
     values:
       formated:
         undef
         ARRAY(0x61670a8)
         ARRAY(0x214b448)
         undef
         ARRAY(0x655cda8)
         ARRAY(0x21390f0)
       orig:
         undef
         ARRAY(0x67ba420)
         ARRAY(0x65a68d0)
         undef
         ARRAY(0x21b29e8)
         ARRAY(0x21890e0)
       prefixsuffix:
         undef
         ARRAY(0x654c6c8)
         ARRAY(0x6254520)
         undef
         ARRAY(0x2d16628)
         ARRAY(0x1fe1ba0)
Attributes:
   alias      Müllabfuhr
   group      Termine
   noheading  1
   nonames    1
   room       Allgemein
   sortColumn 5
   sortby     2
   valueStyle { if ($READING =~ ".*days" && $VALUE == 0) { 'style="color:red"'}
elsif ($READING =~ ".*days" && $VALUE == 1 ) { 'style="color:yellow"'}
elsif ($READING =~ ".*days" && $VALUE > 1 && $VALUE < 8) { 'style="color:green"'} }


Wie kann ich jetzt die Zeile Abfall:Sperrmuell_weekday,Sperrmuell_date,<%scene_livingroom@01A3F5>,Sperrmuell_text,Sperrmuell_days ausblenden, wenn die entsprechenden Readings nicht vorhanden sind? Im Wiki finde ich nur Möglichkeiten, auf Werte der Readings zu filtern.

Edit: Vermutlich liegt es wohl am Icon in der DEF, da das ja auch vorhanden ist, wenn die Readings nicht existieren.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

Elektrolurch

Du kannst ja das Icon auch berechnen lassen und wenn das reading nicht vorhanden ist, muss die Code-Zeile undef zurückliefern.
configDB und Windows befreite Zone!

mahowi

Danke, das hat mir auf die Sprünge geholfen.  :)

Ich habe jetzt die Icons in der DEF durch das bisher ungenutzte Reading ..._description ersetzt und diesem dann über valueIcon ein Icon zugewiesen. Damit wird die Zeile ohne Readings ausgeblendet.

defmod rgAbfallkalender readingsGroup Abfall:<Tag>,<Datum>,<>,<Ereignis>,<Tage>\
Abfall:Restabfall_weekday,Restabfall_date,Restabfall_description,Restabfall_text,Restabfall_days\
Abfall:Altpapier_weekday,Altpapier_date,Altpapier_description,Altpapier_text,Altpapier_days\
Abfall:Bioabfall_weekday,Bioabfall_date,Bioabfall_description,Bioabfall_text,Bioabfall_days\
Abfall:GelberSack_weekday,GelberSack_date,GelberSack_description,GelberSack_text,GelberSack_days\
Abfall:Sperrmuell_weekday,Sperrmuell_date,Sperrmuell_description,Sperrmuell_text,Sperrmuell_days
attr rgAbfallkalender alias Müllabfuhr
attr rgAbfallkalender group Termine
attr rgAbfallkalender noheading 1
attr rgAbfallkalender nonames 1
attr rgAbfallkalender room Allgemein
attr rgAbfallkalender sortColumn 5
attr rgAbfallkalender sortby 2
attr rgAbfallkalender valueIcon { 'Altpapier_description' => 'dustbin@04D921', 'Bioabfall_description' => 'dustbin@D2691E', 'GelberSack_description' => 'dustbin@FFFF00', 'Restabfall_description' => 'dustbin', 'Sperrmuell_description' => 'scene_livingroom@01A3F5' }
attr rgAbfallkalender valueStyle { if ($READING =~ ".*days" && $VALUE == 0) { 'style="color:red"'}\
elsif ($READING =~ ".*days" && $VALUE == 1 ) { 'style="color:yellow"'}\
elsif ($READING =~ ".*days" && $VALUE > 1 && $VALUE < 8) { 'style="color:green"'} }
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee