Hallo zusammen,
ich habe meine Abfalltermine mit ical google-Kalender eingebunden. Es funktioniert auch soweit alles recht gut.
Wenn der letzte Termin für z.B. Grünbündel in der Vergangenheit liegt und kein weiterer Termin im Kalender eingetragen ist
verschiebt sich das Symbol nach unten da (data-get="Gruenbuendel_weekday") leer bzw. nicht existiert.
Das ist ersteinmel nicht so schlimm, da ich ja die künftigen Termine so schnell wie möglich nachtrage, aber bis dahin sieht es unschön aus.
data-substitution='["","leer"]' funktioniert leider nicht.
hat jemand eine Idee oder kann mir helfen das Problem zu lösen?
Besten DANK
@ms_steini
Kannst Du denn mal ein list vom FHEM-Device sowie den HTML-Code für Deinen Ausschnitt posten?
aber klar doch:
Gruenbuendel_weekday und Gruenbuendel_date ist natürlich nicht dabei, da im google Kalender noch kein Termin eingetragen ist.
Internals:
DEF ical url https://calendar.google.com/calendar/ical/xxxxxxxxxxxxxxxxxxxxxxxxx.calendar.google.com/private-xxxxxxxxxxxxxxxxxxxxxxxxx/basic.ics 43200
FUUID xxxxxxxxxxxxxxxxxxxxxxxxx
NAME Abfall
NOTIFYDEV global
NR 83
NTFY_ORDER 50-Abfall
STATE triggered
TYPE Calendar
READINGS:
2019-11-18 14:04:58 calname Abfallkalender
2019-11-18 14:04:58 lastUpdate 2019-11-18 14:04:56
2019-11-13 08:00:00 modeAlarm
2019-11-13 08:15:00 modeAlarmOrStart
2019-11-12 18:17:34 modeAlarmed
2019-11-13 17:14:41 modeChanged
2019-11-18 14:04:58 modeEnd 2018120573cc610291508944dfadfdfb13e69e43b70cf07ce57cb1334d06eeaea2ff48fc;2019110676a2941181c92e32280f58b137e0356cb70cf07ce57cb1334d06eeaea2ff48fc;201901072910c43b7fcd3ca643530a62d5c7c29bb70cf07ce57cb1334d06eeaea2ff48fc;2019100447152415b564bcd0328897e97ffe5e2fb70cf07ce57cb1334d06eeaea2ff48fc;201909116a28831c22b500062a5937046dfc19a7b70cf07ce57cb1334d06eeaea2ff48fc;20181122629ddff98156acaecaf1134fa27f0cdcb70cf07ce57cb1334d06eeaea2ff48fc;20181210b8787df787a260c4402a250d0ab1bdefb70cf07ce57cb1334d06eeaea2ff48fc;20190821d2396cbcdbc5e98fc537c4ae7f025fd2b70cf07ce57cb1334d06eeaea2ff48fc;20190320be6b463071c897b29a57ebd767023e8ab70cf07ce57cb1334d06eeaea2ff48fc;20191113f1a68dd94da4d515f5579b40093cbc9fb70cf07ce57cb1334d06eeaea2ff48fc;2019060521b0d4279479b6b9a4c31efd9d248b00b70cf07ce57cb1334d06eeaea2ff48fc;20190808af3b8f6a90c8033db5f6a54930a4dfb7b70cf07ce57cb1334d06eeaea2ff48fc;201910238431728749ea503e937c8edac0b65042b70cf07ce57cb1334d06eeaea2ff48fc;201908144775ff00f3954f0e029d50dd716d9c3bb70cf07ce57cb1334d06eeaea2ff48fc;20191030e00cc0cd29fdc2634aabab3e64b313e3b70cf07ce57cb1334d06eeaea2ff48fc;201810242c919577ed6a2b207d2fc128527c6702b70cf07ce57cb1334d06eeaea2ff48fc;20190807f25cd02ab8abcc95c97bc23655850ed2b70cf07ce57cb1334d06eeaea2ff48fc;20190221f4f40e03685ba3c9afd58786223fb26fb70cf07ce57cb1334d06eeaea2ff48fc;201810311dc2cf578185e45fe8e021ecd2fddfb3b70cf07ce57cb1334d06eeaea2ff48fc;20190613d5f2d883eed93ce125de542b5aa59444b70cf07ce57cb1334d06eeaea2ff48fc;20190130e5fa211ba52e21c94e02af26151cb151b70cf07ce57cb1334d06eeaea2ff48fc;20190710ef544713ffac2bca0dedd4f2997fbed0b70cf07ce57cb1334d06eeaea2ff48fc;20190611b68385743bd9af019297ca4bd7dabee7b70cf07ce57cb1334d06eeaea2ff48fc;2019031321c9a8021ace4a1871254fd7ede40b8fb70cf07ce57cb1334d06eeaea2ff48fc;20190731bab58469e2d89e8187585233f5cdc8b8b70cf07ce57cb1334d06eeaea2ff48fc;201906246223172b313e1a8ded0b2793d6ad08deb70cf07ce57cb1334d06eeaea2ff48fc;20190722ea4e770d83a76d513d13f9a3df81c925b70cf07ce57cb1334d06eeaea2ff48fc;20190321778d5445deec2049dfcbc4ccc3c1359eb70cf07ce57cb1334d06eeaea2ff48fc;2019012171bcb78a5cd00eed224b96ec1ff1191eb70cf07ce57cb1334d06eeaea2ff48fc;201811126919b20812fc8d4eec73434ca62fda05b70cf07ce57cb1334d06eeaea2ff48fc;20190717452d48883b5619a710bb93e73b0ec797b70cf07ce57cb1334d06eeaea2ff48fc;2019012330b8fffa234fde3ca3cb89d58cb68494b70cf07ce57cb1334d06eeaea2ff48fc;201907110ce72db0b8d02e150d946d4370584c2cb70cf07ce57cb1334d06eeaea2ff48fc;201902120b3dd7848680684809c2ed702d8674d4b70cf07ce57cb1334d06eeaea2ff48fc;20190805027e28f32ae3a98b80d483dc55547c36b70cf07ce57cb1334d06eeaea2ff48fc;201908193a51791982fbe40f3447a4ae948983b3b70cf07ce57cb1334d06eeaea2ff48fc;2019010940b7432d2f7791f4754695e9554399eeb70cf07ce57cb1334d06eeaea2ff48fc;20190904b6ca1500966486f7e2232dc36be87b13b70cf07ce57cb1334d06eeaea2ff48fc;20181126086581f10b15edc9d28b87d4c4344701b70cf07ce57cb1334d06eeaea2ff48fc;201901119ce43b75f93c7ea5bfa4d6b76cc7d47eb70cf07ce57cb1334d06eeaea2ff48fc;201902042d5d9ea07040681bd664e4f26f23e8ffb70cf07ce57cb1334d06eeaea2ff48fc;201910280075abf9e81e3be4c00fd53b07d48043b70cf07ce57cb1334d06eeaea2ff48fc;20181222587946bebc5b9aadd152abf1b8594190b70cf07ce57cb1334d06eeaea2ff48fc;2019022009fa00300a4cad8a30073af17f4efaa5b70cf07ce57cb1334d06eeaea2ff48fc;201909021d4efc6f14a3ec5305e8f34609a00114b70cf07ce57cb1334d06eeaea2ff48fc;20181212a94a17688ea8c93fa3088e42bc575a6cb70cf07ce57cb1334d06eeaea2ff48fc;201909259c9ede48bfe49ecdac6807df44e026b4b70cf07ce57cb1334d06eeaea2ff48fc;201811078f76104b1bb7e8418da341e3f78de753b70cf07ce57cb1334d06eeaea2ff48fc;201909189b3aa5c9471a1965961152bc79378b1bb70cf07ce57cb1334d06eeaea2ff48fc;20181025fd415691cba7e670b95b44f5b2dd7a5cb70cf07ce57cb1334d06eeaea2ff48fc;20190527e15bc49ce0ae9761467bda917a67767ab70cf07ce57cb1334d06eeaea2ff48fc;20181114984e8101168f5dec01994b0a78b1d112b70cf07ce57cb1334d06eeaea2ff48fc;20190911f330f5d451136731bac171debc4141b3b70cf07ce57cb1334d06eeaea2ff48fc;2018102983da194dd0152f74fc513b18dc6a4127b70cf07ce57cb1334d06eeaea2ff48fc;201905169db58edc4a5b42db456d09cece624596b70cf07ce57cb1334d06eeaea2ff48fc;20190410f1734eccfb131d0d0f5a6f67ecafe000b70cf07ce57cb1334d06eeaea2ff48fc;20191016c7fefd4650636d9683bebbdf8a1253e1b70cf07ce57cb1334d06eeaea2ff48fc;20190513f78e17ea13b607fa827a9076f7f10de0b70cf07ce57cb1334d06eeaea2ff48fc;201909163eda0f0c3b07a9a0d86b941e36bb0232b70cf07ce57cb1334d06eeaea2ff48fc;201910146d78c1967c67190754a1cc26d8aec398b70cf07ce57cb1334d06eeaea2ff48fc;20190703e9a9d8a9179e0f2df7fedac721855bd2b70cf07ce57cb1334d06eeaea2ff48fc;201903186fa4c5a5064a4230d1592479c9982a75b70cf07ce57cb1334d06eeaea2ff48fc;20190213c5bf5ebbe4603a419b8c251ae85bfbd3b70cf07ce57cb1334d06eeaea2ff48fc;2019041693a12eac55fb673e31c6ee512ed82e78b70cf07ce57cb1334d06eeaea2ff48fc;201906140be4a4ee9c2723f908bda1c70dde6d49b70cf07ce57cb1334d06eeaea2ff48fc;2018122067c87767a6f3540023d7c895724ce50ab70cf07ce57cb1334d06eeaea2ff48fc;201908146483d5241e74f4009d345501a1bbf749b70cf07ce57cb1334d06eeaea2ff48fc;201905082c5d623346c21dd25c7aaeb630e20891b70cf07ce57cb1334d06eeaea2ff48fc;2019050244f79a2917c97cb537bc36238b025527b70cf07ce57cb1334d06eeaea2ff48fc;201901161c1e6a22e5f6d0f11cb3b7f196a66c58b70cf07ce57cb1334d06eeaea2ff48fc;2019040398b6e4f32b2be2f86face85317ba2122b70cf07ce57cb1334d06eeaea2ff48fc;20190905cc2121055e52a6b2cde2e2ab326702deb70cf07ce57cb1334d06eeaea2ff48fc;20190218f47eaac54253d97e9acaf1c5425e1ea8b70cf07ce57cb1334d06eeaea2ff48fc;20190828941bed1e53cbcd38d8012fc4cfe868a6b70cf07ce57cb1334d06eeaea2ff48fc;20190417d73be8a4f6aafe77aa71c95bd7b85042b70cf07ce57cb1334d06eeaea2ff48fc;20190425a95efdd25270b8c7a7da8c3f6676405cb70cf07ce57cb1334d06eeaea2ff48fc;201910020fcd8c810e236a29e5f3e600141011b5b70cf07ce57cb1334d06eeaea2ff48fc;20181015dfd4305d64092596d6347937018ec78fb70cf07ce57cb1334d06eeaea2ff48fc;2019062670479e638b483945201b127bdbd9a656b70cf07ce57cb1334d06eeaea2ff48fc;20190708941e1094e6574ad587230b1cccec3b68b70cf07ce57cb1334d06eeaea2ff48fc;20181219a579d6f6ac8c509958259b9e92f4ae48b70cf07ce57cb1334d06eeaea2ff48fc;20181227df9c70d364b0dd1f36797ac550ea9a69b70cf07ce57cb1334d06eeaea2ff48fc;201911110a4ae7ec7ca548df12de9dc82f86cabdb70cf07ce57cb1334d06eeaea2ff48fc;2019052973614901f5993902e0a24976cf455da0b70cf07ce57cb1334d06eeaea2ff48fc;2019100990ce5854d7cd8b97c8ad13436fc8efceb70cf07ce57cb1334d06eeaea2ff48fc;201810177cc626d02e7405ce12763021eab5b4d8b70cf07ce57cb1334d06eeaea2ff48fc;201907241e01113fc15a328b7c33ae662b0cd9edb70cf07ce57cb1334d06eeaea2ff48fc;20191106298ff55a13ded49f3fa4114270c27d60b70cf07ce57cb1334d06eeaea2ff48fc;20190619a4d1967db01a0d720d09aab933980296b70cf07ce57cb1334d06eeaea2ff48fc;201903074b33856edc407ec196e9dcec6a63c262b70cf07ce57cb1334d06eeaea2ff48fc;20191009b25d79e6c80a25287dc9ed671612bad9b70cf07ce57cb1334d06eeaea2ff48fc;201811281c2d996e0dbc4951c2b5a7228bd1bcd6b70cf07ce57cb1334d06eeaea2ff48fc;20190206c041bc30632d33ad7b07f241f9b1e309b70cf07ce57cb1334d06eeaea2ff48fc;20190413082b43184cf1a7cc9268727fbe753167b70cf07ce57cb1334d06eeaea2ff48fc;20181121e8984b33cf9ad53b4f7a78cda24cb550b70cf07ce57cb1334d06eeaea2ff48fc;20190717c9504dd3788008c5efe473d93ace0d9db70cf07ce57cb1334d06eeaea2ff48fc;201910316a28effa1e96453c764f92001b47302cb70cf07ce57cb1334d06eeaea2ff48fc;20190930981835dcc39ea11ede24c9ee85f42fafb70cf07ce57cb1334d06eeaea2ff48fc;2019022785b5ead439a534b11c7d4e0fcb55e695b70cf07ce57cb1334d06eeaea2ff48fc;20181107484de692119ed2dd64c590d27d8fee66b70cf07ce57cb1334d06eeaea2ff48fc;20190401e76b1b17608ee87b278dcecb4056b83bb70cf07ce57cb1334d06eeaea2ff48fc;20190124cd0a824264c6fe04fa22f32289c9a0ccb70cf07ce57cb1334d06eeaea2ff48fc;20190429cf13aed8b4b4c5abc78e2d0bda4c64a7b70cf07ce57cb1334d06eeaea2ff48fc;20190522d58450427e8e90f0cc19d2219b9070cab70cf07ce57cb1334d06eeaea2ff48fc;20190305f76214164ff4b6450bdb00386cc9aeb1b70cf07ce57cb1334d06eeaea2ff48fc;201905152195f3dd538364df733ae883035029efb70cf07ce57cb1334d06eeaea2ff48fc;2019032719ed08c7964080708d6a8954dc292475b70cf07ce57cb1334d06eeaea2ff48fc
2019-11-13 17:14:41 modeEnded
2019-11-13 08:15:00 modeStart
2019-11-13 08:15:00 modeStarted
2019-11-18 14:04:58 modeUpcoming 201911257e343a21e217e2607bb42731f46907bcb70cf07ce57cb1334d06eeaea2ff48fc;2019120960e3ade7d41261a9056a7a7760bc1fb5b70cf07ce57cb1334d06eeaea2ff48fc;201912187f4e70c0c454faa3b67d2ef0c2457f99b70cf07ce57cb1334d06eeaea2ff48fc;20191120c40bcb5064757be0ff961abe3153ebdab70cf07ce57cb1334d06eeaea2ff48fc;2019120465262356c29c240f41bfad426d71a964b70cf07ce57cb1334d06eeaea2ff48fc;20191211c06ce28c3167db9bd72144c0be59a5d0b70cf07ce57cb1334d06eeaea2ff48fc;201912212b560ba98162d73818c0eb67a7a3071fb70cf07ce57cb1334d06eeaea2ff48fc;20191127de2d5c5e34e3ebb6f14e7f820944b0f2b70cf07ce57cb1334d06eeaea2ff48fc;20191227e02ea3533ccaee9438f83c2435bc6c9ab70cf07ce57cb1334d06eeaea2ff48fc;201912248ec677d261b3dd7d0a74188d7438ed48b70cf07ce57cb1334d06eeaea2ff48fc;20191128dda83176e88a55cea9fb48792da34837b70cf07ce57cb1334d06eeaea2ff48fc
2019-11-18 14:04:58 nextUpdate 2019-11-19 02:04:56
2019-11-18 14:04:58 nextWakeup 2019-11-19 02:04:56
2019-11-18 14:04:58 state triggered
Attributes:
DbLogExclude .*
devStateIcon .*:time_calendar@#e56524
group Kalender
icon time_calendar@#2c8293
room Kalender
Internals:
DEF Abfall 21600
FUUID xxxxxxxxxxxxxxxxxxxxxxxxx
KALENDER Abfall
NAME AbfallTermine
NOTIFYDEV Abfall
NR 85
NTFY_ORDER 50-AbfallTermine
STATE Leichtverpackungen in 2 Tag(en)
TYPE ABFALL
OLDREADINGS:
READINGS:
2019-11-18 14:04:58 Bioabfall_date 25.11.2019
2019-11-18 14:04:58 Bioabfall_days 7
2019-11-18 14:04:58 Bioabfall_description
2019-11-18 14:04:58 Bioabfall_location Korschenbroich
2019-11-18 14:04:58 Bioabfall_text Bioabfall
2019-11-18 14:04:58 Bioabfall_uid 201911257e343a21e217e2607bb42731f46907bcb70cf07ce57cb1334d06eeaea2ff48fc
2019-11-18 14:04:58 Bioabfall_weekday Montag
2019-11-18 14:04:58 Leichtverpackungen_date 20.11.2019
2019-11-18 14:04:58 Leichtverpackungen_days 2
2019-11-18 14:04:58 Leichtverpackungen_description
2019-11-18 14:04:58 Leichtverpackungen_location Korschenbroich
2019-11-18 14:04:58 Leichtverpackungen_text Leichtverpackungen
2019-11-18 14:04:58 Leichtverpackungen_uid 20191120c40bcb5064757be0ff961abe3153ebdab70cf07ce57cb1334d06eeaea2ff48fc
2019-11-18 14:04:58 Leichtverpackungen_weekday Mittwoch
2019-11-18 14:04:58 Papier_date 28.11.2019
2019-11-18 14:04:58 Papier_days 10
2019-11-18 14:04:58 Papier_description
2019-11-18 14:04:58 Papier_location Korschenbroich
2019-11-18 14:04:58 Papier_text Papier
2019-11-18 14:04:58 Papier_uid 20191128dda83176e88a55cea9fb48792da34837b70cf07ce57cb1334d06eeaea2ff48fc
2019-11-18 14:04:58 Papier_weekday Donnerstag
2019-11-18 14:04:58 Restabfall_date 27.11.2019
2019-11-18 14:04:58 Restabfall_days 9
2019-11-18 14:04:58 Restabfall_description
2019-11-18 14:04:58 Restabfall_location Korschenbroich
2019-11-18 14:04:58 Restabfall_text Restabfall
2019-11-18 14:04:58 Restabfall_uid 20191127de2d5c5e34e3ebb6f14e7f820944b0f2b70cf07ce57cb1334d06eeaea2ff48fc
2019-11-18 14:04:58 Restabfall_weekday Mittwoch
2019-11-18 14:04:58 next Leichtverpackungen_2
2019-11-18 14:04:58 next_date 20.11.2019
2019-11-18 14:04:58 next_days 2
2019-11-18 14:04:58 next_description
2019-11-18 14:04:58 next_location Korschenbroich
2019-11-18 14:04:58 next_text Leichtverpackungen
2019-11-18 14:04:58 next_weekday Mittwoch
2019-11-18 14:04:58 state 2
Attributes:
DbLogExclude .*
calendarname_praefix 0
date_style date
delimiter_reading |
delimiter_text_reading und
devStateIcon .*:muellwagen@#e56524
icon time_clock
room Kalender
stateFormat next_text in next_days Tag(en)
weekday_mapping Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag
<div class="inline">
<div class="large" style="margin-top:5px"
data-device="AbfallTermine"
data-type="symbol"
data-get="Gruenbuendel_days"
data-icons='["fa-tree warn fa-spin","fa-tree warn"]'
data-colors='["#32A054","#32A054"]'
data-get-on='["0","2"]'
data-background-icon="fa-circle-thin">
</div>
<div style=" padding:2px;
background-color:#AA6900;
color:#eeeeee;
font-size:11px;
font-weight:bold;
position:absolute;
margin-top:-13px;
margin-left:-2px;
text-align:center;
width:70px;">Grünbündel</div>
<div style="margin-top:8px"
data-type="label"
data-device="AbfallTermine"
data-get="Gruenbuendel_weekday"
data-substitution='["","leer"]'
class="e-text e-color">
</div>
<div style="margin-top:-1px"
data-type="label"
data-device="AbfallTermine"
data-get="Gruenbuendel_date"
class="e-text e-color">
</div>
</div>
Könnte dir ggfs schon data-hide* (https://wiki.fhem.de/wiki/FTUI_Widget_Label#Attribute) helfen?
@ms_steini
Das FTUI-Widget "classchanger" scheint zu helfen ...
<div data-type="classchanger" data-device="Test" data-get="Gruenbuendel_weekday" data-get-on="[aA-Za-z]*" data-off-class="hide" class="container bg-green">
<div data-type="label" data-device="Test"
data-get="Gruenbuendel_weekday"
style="margin-top:8px"
class="e-text e-color">
</div>
</div>
<div data-type="classchanger" data-device="Test" data-get="Gruenbuendel_weekday" data-get-on="[A-Za-z]*" data-on-class="hide" class="container bg-red">
<div style="margin-top:8px"
class="e-text e-color">
Kein Termin
</div>
</div>
Ich bin mir aber nicht sicher, ob ich in Deinem Fall nicht eher ein userreading anlegen würde; ausgelöst durch z.B. next_weekday - immer in der Hoffnung, dass es allzeit irgendeinen nächsten Termin geben wird.
oh vielen DANK, das sieht schon sehr gut aus
allerding benötige ich noch für das Datum einen entsprechenden "data-get-on='[]'"------ [aA-Za-z]* funktioniert bei Datum nicht
<div data-type="classchanger" data-device="AbfallTermine" data-get="Gruenbuendel_date" data-get-on="[A-Za-z]*" data-on-class="hide" class="">
habs schon gefunden
^\s*(3[01]|[12][0-9]|0?[1-9])\.(1[012]|0?[1-9])\.((?:19|20)\d{2})\s*$
<div data-type="classchanger" data-device="AbfallTermine" data-get="Gruenbuendel_date" data-get-on="^\s*(3[01]|[12][0-9]|0?[1-9])\.(1[012]|0?[1-9])\.((?:19|20)\d{2})\s*$" data-on-class="hide" class="">
oder gibt es eine elegantere Lösung ?
@ms_steini
Angenommen, Du hast keinen Termin für Grünabfall und willst in dem Fall dann auch für Grünabfall keine Darstellung ...
... dann würde ein Widget vom Typ classchanger reichen.
Willst Du die Darstellung nicht komplett ausschalten, dann wäre ein alternativer Ausdruck für Datum z.B. "[0-9.]*" oder "[0-9\.]".
@OdfFhem
ich habs jetzt so gelöst, genau so wie ich es haben möchte
<div data-type="classchanger" data-device="AbfallTermine" data-get="Bioabfall_date" data-get-on="[0-9.]*" data-off-class="hide" class="">
<div style="margin-top:-1px"
data-type="label"
data-device="AbfallTermine"
data-get="Bioabfall_date"
class="e-text e-color">
</div>
</div>
<div data-type="classchanger" data-device="AbfallTermine" data-get="Bioabfall_date" data-get-on="[0-9.]*" data-on-class="hide" class="">
<div style=""
class="e-text e-color">
Termin
</div>
</div>
SUPER, vielein Dank nochmal!