Ich benutze eine readingsGroup um mir die Müllabfuhrtermine aus einem Abfall Kalender anzeigen zu lassen. Dieser ist nach Tagen bis zur Abholung sortiert.
Leider werden aber die Zeilen, für die momentan kein Wert vorhanden ist (Dargestellt in der Tabelle mit dem Wert "-") direkt nach der 0 und vor den anderen Numerischen Werten einsortiert (siehe Screenshot).
Ich hab auch schon versucht statt "-" ein nur ein Leerzeichen zu verwenden oder den String länger zu machen ("- -") aber ich schaffe es nicht, die Zeilen ohne Wert ans Ende der Tabelle zu bekommen.
Habt Ihr mir da einen Tipp?
Tipps sind zielführender, wenn man ein list der fraglichen readingsGroup vor Augen hat ...
Ich weiß nicht, ob das in dem Fall auch so ist, aber ich hänge ein List der readingsGroup natürlich gerne hier an:
Internals:
DEF Muelltermine:<Tag>,<Datum>,<>,<Ereignis>,<Tage>,
Muelltermine:Abfallkalender_GelberSackTonne_weekday,Abfallkalender_GelberSackTonne_date,<%dustbin@yellow>,Abfallkalender_GelberSackTonne_text,Abfallkalender_GelberSackTonne_days
Muelltermine:Abfallkalender_Biotonne_weekday,Abfallkalender_Biotonne_date,<%dustbin@limegreen>,Abfallkalender_Biotonne_text,Abfallkalender_Biotonne_days
Muelltermine:Abfallkalender_Papiertonne_weekday,Abfallkalender_Papiertonne_date,<%dustbin@royalblue>,Abfallkalender_Papiertonne_text,Abfallkalender_Papiertonne_days
Muelltermine:Abfallkalender_Restmuell2-woechentlich_weekday,Abfallkalender_Restmuell2-woechentlich_date,<%dustbin@black>,Abfallkalender_Restmuell2-woechentlich_text,Abfallkalender_Restmuell2-woechentlich_days
Muelltermine:!Abfallkalender_Schadstoffsammlung_weekday,!Abfallkalender_Schadstoffsammlung_date,<%dustbin@black>,!Abfallkalender_Schadstoffsammlung_text,!Abfallkalender_Schadstoffsammlung_days
Muelltermine:!Abfallkalender_Warentauschtag_weekday,!Abfallkalender_Warentauschtag_date,<%recycling@green>,!Abfallkalender_Warentauschtag_text,!Abfallkalender_Warentauschtag_days
FUUID 5c59d11a-f33f-3bc6-5d76-b146b7b55931f527
NAME rg_Abfallkalender
NR 620
NTFY_ORDER 50-rg_Abfallkalender
STATE Initialized
TYPE readingsGroup
changed 0
mayBeVisible 1
CONTENT:
Muelltermine 1
CONTENT2:
DEVICES:
ARRAY(0xa3d6140)
ARRAY(0x9350ab8)
ARRAY(0x9e09b44)
ARRAY(0xa22d554)
ARRAY(0x8fd78f4)
ARRAY(0x92c3a10)
ARRAY(0x9449a50)
fhem:
lastDefChange 38
last_update 1610444784.25364
helper:
DEF
valueFormat {
if ($VALUE eq "Abfallkalender_Schadstoffsammlung_text") {
return 'Schadstoffsammlung';;
} elsif ($VALUE eq "Abfallkalender_Warentauschtag_text") {
return 'Warentauschtag';;
} elsif ($VALUE =~ /_weekday/) {
return '-';;
} elsif ($VALUE =~ /_days/) {
return '-';;
} elsif ($VALUE =~ /_date/) {
return '-';;
} else {
return $VALUE;;
}
}
positions:
Muelltermine.Abfallkalender_Biotonne_date 3:2
Muelltermine.Abfallkalender_Biotonne_days 3:5
Muelltermine.Abfallkalender_Biotonne_text 3:4
Muelltermine.Abfallkalender_Biotonne_weekday 3:1
Muelltermine.Abfallkalender_GelberSackTonne_date 2:2
Muelltermine.Abfallkalender_GelberSackTonne_days 2:5
Muelltermine.Abfallkalender_GelberSackTonne_text 2:4
Muelltermine.Abfallkalender_GelberSackTonne_weekday 2:1
Muelltermine.Abfallkalender_Papiertonne_date 4:2
Muelltermine.Abfallkalender_Papiertonne_days 4:5
Muelltermine.Abfallkalender_Papiertonne_text 4:4
Muelltermine.Abfallkalender_Papiertonne_weekday 4:1
Muelltermine.Abfallkalender_Restmuell2-woechentlich_date 5:2
Muelltermine.Abfallkalender_Restmuell2-woechentlich_days 5:5
Muelltermine.Abfallkalender_Restmuell2-woechentlich_text 5:4
Muelltermine.Abfallkalender_Restmuell2-woechentlich_weekday 5:1
Muelltermine.Abfallkalender_Schadstoffsammlung_date 6:2
Muelltermine.Abfallkalender_Schadstoffsammlung_days 6:5
Muelltermine.Abfallkalender_Schadstoffsammlung_text 6:4
Muelltermine.Abfallkalender_Schadstoffsammlung_weekday 6:1
Muelltermine.Abfallkalender_Warentauschtag_date 7:2
Muelltermine.Abfallkalender_Warentauschtag_days 7:5
Muelltermine.Abfallkalender_Warentauschtag_text 7:4
Muelltermine.Abfallkalender_Warentauschtag_weekday 7:1
recalc:
undef
ARRAY(0x9ae7488)
ARRAY(0x9de0548)
undef
ARRAY(0xa1a64f4)
ARRAY(0x9a23044)
values:
formated:
undef
ARRAY(0x8c59610)
ARRAY(0x9930a3c)
undef
ARRAY(0x9e72758)
ARRAY(0xa267650)
orig:
undef
ARRAY(0xa2620f8)
ARRAY(0x9eaa39c)
undef
ARRAY(0x9a621ac)
ARRAY(0x9d3e90c)
prefixsuffix:
undef
ARRAY(0x8ebcf18)
ARRAY(0x93ad7b0)
undef
ARRAY(0x922cdf4)
ARRAY(0x9467940)
Attributes:
DbLogExclude .*
alias Müllabfuhrtermine
group Kalender
icon recycling
nonames 1
room Haus
sortColumn 5
valueFormat {
if ($VALUE eq "Abfallkalender_Schadstoffsammlung_text") {
return 'Schadstoffsammlung';;
} elsif ($VALUE eq "Abfallkalender_Warentauschtag_text") {
return 'Warentauschtag';;
} elsif ($VALUE =~ /_weekday/) {
return '-';;
} elsif ($VALUE =~ /_days/) {
return '-';;
} elsif ($VALUE =~ /_date/) {
return '-';;
} else {
return $VALUE;;
}
}
... Eine kleine Zwischenfrage ...
Beim Betrachten vom list fällt auf, dass im Attribut valueFormat $VALUE mit Readingnamen verglichen wird. Ist dies tatsächlich möglich? Bei meiner nachgestellten readingsGroup komme ich damit jedenfalls auf keinen grünen Zweig. Bei Dir stehen die "-" vermutlich schon im eigentlichen Reading, oder?
... eigentliches Thema ...
Vom Wert gilt bei numerischer Sortierung nur der numerische Anteil eines Wertes. Bei "-" oder "--" entspricht dies dem Wert 0.
Im einfachsten Fall kann/muss man dem zu ignorierenden Wert eine hohe Zahl unterjubeln, um diese Zeile ans Ende zu bringen. Mögliche Werte wären z.B. "> 90 Tage", o.ä.
Schöner wäre es vielleicht, die datumlose Zeile gar nicht erst darzustellen. Dies geschieht im Attribut valueFormat, indem man bei "positivem" Vergleich den Wert undef zurückgibt. Wichtig dabei ist aber, dies für jede Spalte einer auszublendenden Zeile zu tun.
Der Vergleich von $VALUE mit dem Reading Namen funktioniert in dem Fall, weil das wohl ein Nebeneffekt des ! vor dem Reading Namen im DEF ist. Wenn man über vorangestelltes "!" das Anzeigen von leeren Readings erzwingt - in meinem Fall um das Icon an der richtigen Stelle in der Tabelle zu haben und nicht ganz vorne - dann wird der Name des Readings als $VALUE verwendet.
Vielleicht wäre es in meinem Fall besser, das Icon bei den datumlosen Zeilen irgendwie zu unterdrücken. Die anderen Felder sind ja schon leer... muss ich mir mal ansehen.
Das Unterdrücken der Icons scheint irgendwie nicht zu funktionieren :(
Ich habe versucht, mit $VALUE =~ /recycling\@green/ && ReadingsVal("Muelltermine", "Abfallkalender_Warentauschtag_days", "") eq "" die richtige Spalte in der richtigen Zeile zu erwischen und diese dann als undef zurückzugeben aber das funktioniert so nicht. Scheinbar ist bei den Icons irgendwas anderes im Wert - vermute ich mal.
Ich habe mal ein wenig rumprobiert und auch festgestellt, dass hartverdrahtete Icons wohl nicht unterdrückt werden können.
Verwende ich aber ein "wildes" Reading an der Stelle und
- will die Spalte unterdrücken, dann undef in valueFormat
- soll die Spalte dargestellt werden, dann das gewünschte Icon in valueIcon ermitteln
Da ich kein ABFALL-Device verwende, weiß ich nicht, ob noch ein zusätzliches Reading zur jeweiligen Abfallart existiert. Wenn ja, dann sollte es klappen; wenn nein, dann ...