Ich habe das Anwendungsbeispiel zur Abfall-Entsorgung im Wiki aktualisiert: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Anzahl_der_Tage_bis_zur_Abfall-Entsorgung
Es wird jetzt zusätzlich zur Anzahl der Tage auch der Wochentag und das Datum angezeigt.
Vorausgesetzt wird die Definition des Kalenders namens 'cal' mit Hilfe des Moduls https://wiki.fhem.de/wiki/Calendar.
Es reicht jetzt in der DOIF-Definition lediglich das entsprechende Stichwort, welches im eigenen Kalenders vorkommt, anzupassen (hier fett markiert).
Auszug aus der Definition:
Zitatdefmod Abfall DOIF subs {\
## Hier reicht es den Kalender-Eintrag anzupassen. Zusätzliche Tonnen können zeilenweise hinzugefügt werden bzw. durch Löschen einer Zeile entfernt werden \
## Kalender-Eintrag, Reading, icon \
push @{$_sc},["Altpapier","altpapier","Abfalltonne-Recycling-Logo\@blue"];;\
push @{$_sc},["Restmüll","restmuell","Abfalltonne\@gray"];;\
push @{$_sc},["Bio","bio","Abfalltonne-Recycling-Logo\@green"];;\
push @{$_sc},["Gelbe","gelbe_tonne","Abfalltonne-Recycling-Logo\@yellow"];;\
push @{$_sc},["Grünabfuhr","gruenschnitt","Gartenabfall\@green"];;\
\
## Rest der Definition muss nicht angepasst werden \
...
Funktioniert, danke. :)
Für das Wiki wäre eventuell noch gelber Sack (mit bag) und Weihnachtsbaum-Abholung interessant:
push @{$_sc},["gelber Sack","gelberSack","bag\@yellow"];
push @{$_sc},["Weihnachtsbaum","Weihnachtsbaum","christmas_tree\@green"];Darüberhinaus beschwert sich mein innerer Monk über den fehlenden Punkt hinter dem Monat beim Datum:
my $date=fhem('get cal events timeFormat:"%a %d.%m." filter:field(summary)=~"'.$event.'" limit:count=1,from=0 format:custom="$T1"');
Edit: weil ich nicht richtig gelesen habe und drauf reingefallen bin (reading mit Leerzeichen :'( ), wäre ein makeReadingName (https://wiki.fhem.de/wiki/DevelopmentModuleAPI#makeReadingName) vor dem set_Reading ggf noch sinnvoll?
Gibt es noch ein sinnvolles Icon für "Sperrmüll"?
Und wann wird die Kalenderdatei eingelesen, also wann wirken sich gemachte Änderungen (ohne Zutun) aus?
ical aktualisiert die Kalenderdaten bei mir stündlich. Auch DOIF aktualisiert seine Daten im Stundentakt:
init{[:01];set_Exec("Timer",200,'update()');}
Bei ical kann man per set reload die Aktualisierung manuell auslösen und im DOIF danach per set update.
Ich habe die Einträge bei mir im Google-Kalender eingetragen - das funktioniert seit Jahren zuverlässig.
Zitat von: yersinia am 23 Dezember 2025, 09:05:00Funktioniert, danke. :)
Für das Wiki wäre eventuell noch gelber Sack (mit bag) und Weihnachtsbaum-Abholung interessant:
push @{$_sc},["gelber Sack","gelberSack","bag\@yellow"];
push @{$_sc},["Weihnachtsbaum","Weihnachtsbaum","christmas_tree\@green"];Darüberhinaus beschwert sich mein innerer Monk über den fehlenden Punkt hinter dem Monat beim Datum:
my $date=fhem('get cal events timeFormat:"%a %d.%m." filter:field(summary)=~"'.$event.'" limit:count=1,from=0 format:custom="$T1"');
Edit: weil ich nicht richtig gelesen habe und drauf reingefallen bin (reading mit Leerzeichen :'( ), wäre ein makeReadingName (https://wiki.fhem.de/wiki/DevelopmentModuleAPI#makeReadingName) vor dem set_Reading ggf noch sinnvoll?
Ich habe den Code ergänzt. Übrigens nach DIN 5008 muss auch hinter die Wochentagabkürzung ein Punkt hin :) makeReadingName habe ich nicht eingebaut, weil es aus meiner Sicht unnötiger Overhead ist. Es steht in der Überschrift der Spalte, dass es ein Reading ist und wer das Beispiel so übernimmt und nur seine Stichwörter anpasst, kann nichts falsch machen.
Wie kann ich es verhindern, dass mir der Log vollgemüllt wird?
2025.12.23 16:04:20 3: get cal events timeFormat:"%j" filter:field(summary)=~"Restmüll grün" limit:count=1,from=0 format:custom="$T1" : 357
2025.12.23 16:04:20 3: get cal events timeFormat:"%a. %d.%m." filter:field(summary)=~"Restmüll grün" limit:count=1,from=0 format:custom="$T1" : Di. 23.12.
2025.12.23 16:04:20 3: get cal events timeFormat:"%j" filter:field(summary)=~"gelber Sack" limit:count=1,from=0 format:custom="$T1" : 002
2025.12.23 16:04:20 3: get cal events timeFormat:"%a. %d.%m." filter:field(summary)=~"gelber Sack" limit:count=1,from=0 format:custom="$T1" : Fr. 02.01.
2025.12.23 16:04:20 3: get cal events timeFormat:"%j" filter:field(summary)=~"Papier" limit:count=1,from=0 format:custom="$T1" : 015
2025.12.23 16:04:20 3: get cal events timeFormat:"%a. %d.%m." filter:field(summary)=~"Papier" limit:count=1,from=0 format:custom="$T1" : Do. 15.01.
2025.12.23 16:04:20 3: get cal events timeFormat:"%j" filter:field(summary)=~"Weihnachtsbaum" limit:count=1,from=0 format:custom="$T1" : 007
2025.12.23 16:04:20 3: get cal events timeFormat:"%a. %d.%m." filter:field(summary)=~"Weihnachtsbaum" limit:count=1,from=0 format:custom="$T1" : Mi. 07.01.Calendar und DOIF Device sind auf verbose 2.
Auch benötige ich kein Stündliches update; wie kann ich das Interval erhöhen? Oder noch besser: update nachdem das Calender-Device aktualisiert hat.
Die Logs kommen vom ical-Modul. Da musst du dort in der Doku nachschauen, ebenfalls wird man dort das Intervall zum Abholen der Event angeben können. Das Abholen der Informationen vom cal-Device im DOIF kannst du über den Zeittrigger steuern (siehe DOIF-Doku zu Zeittriggern):
init{[:01];set_Exec("Timer",200,'update()');}
Ebenfalls könntest du statt Zeittrigger einen Eventtrigger auf cal setzen.
Ich habe es mal zum Testen auf einmaliges Abholen nach Mitternacht umgestellt, mal schauen ob es reicht:
init{[00:01];set_Exec("Timer",60,'update()');}
Die Verzögerung von einer Minute ist vor allem nach dem Neustart wichtig, um dem ical-Modul Zeit zu geben, seine Einträge zu aktualisieren.
Ich meine, dass ich damit mal Probleme hatte.
Zitat von: yersinia am 23 Dezember 2025, 16:15:47Wie kann ich es verhindern, dass mir der Log vollgemüllt wird?
https://fhem.de/commandref_modular_DE.html#perl
ZitatUm FHEM-Kommandos in den PERL-Ausdrücken zu verwenden, benutzen Sie bitte die Funktion fhem(), mit einem Textargument. Dieser Text wird als FHEM-Kommando interpretiert.
Beispiel
{ fhem "set light on" }
define n1 notify piri:on { fhem "set light on" }
Bemerkung: Wenn diese Funktion einen wert zurück liefert, wird dieser in der allgemeinen Logdatei gespeichert.. Benutzen sie "1" als zweites Argument um dieses speichern zu verhindern. Sinnvoll ist dieses Argument bei der Abfrage von Werten mittels "get...".
Schöne Weihnachten
Thomas
Zitat von: TomLee am 24 Dezember 2025, 11:25:12...
Bemerkung: Wenn diese Funktion einen wert zurück liefert, wird dieser in der allgemeinen Logdatei gespeichert.. Benutzen sie "1" als zweites Argument um dieses speichern zu verhindern. Sinnvoll ist dieses Argument bei der Abfrage von Werten mittels "get...".
Danke für den Tipp. Ich habe jetzt beim fhem-get-Aufruf eins als zweiten Parameter gesetzt. Damit sollten die Log-Einträge ausbleiben.
Die Aktualisierung der Termine im DOIF habe ich auf einmaliges Abholen nach Mitternacht reduziert, ich hoffe das reicht.
Den Code im Wiki-Beitrag habe ich aktualisiert.
Moin!
ich habe den überarbeiteten Kalender mal eingerichtet. Leider wird jetzt nicht mehr die "Abfallsorte" als Text angezeigt.. mit meinen geringen Kenntnissen habe ich das nicht hinbekommen..
schöne Festtage
Jürgen K.
Zitat von: juergen012 am 24 Dezember 2025, 12:51:43Moin!
ich habe den überarbeiteten Kalender mal eingerichtet. Leider wird jetzt nicht mehr die "Abfallsorte" als Text angezeigt.. mit meinen geringen Kenntnissen habe ich das nicht hinbekommen..
schöne Festtage
Jürgen K.
Wo vermisst du die Abfallsorte? Die wurde vorher auch nicht als Text angezeigt.
Moin,
bisher wurde der Text unter dem icon angezeigt
ic ("bag\@white",[$SELF:restabfall]),"Restmüll"|\
ic ("bag\@04D921",[$SELF:papiertonne]),"Papier"|\
ic ("bag\@darkorange",[$SELF:bio]),"Biomüll"|\
ic ("bag\@FFFF00",[$SELF:gelbe]),"Gelbe Tonne"
Gruß Jürgen K.
Dann scheint es sich um eine angepasste ic-Funktion in uiTable zu handeln. Lt. Wiki gab es diese Version nicht (siehe Bilder): https://wiki.fhem.de/wiki/Datei:Anwendungsbeispiel_Abfall.png
Du kannst aber selbst in uiTable den Eintrag anpassen:
ZitatDEF TPL_Tonne (style([$SELF:$1_date],"",8),ic ('$2',[$SELF:$1]),'$1')
Dann wird der Readingname unter der Tonne angezeigt.
Na Super!!!
DANKE!! Schöne Festtage!!!
Im Mehrspaltenmodus konnte es passieren, dass das Label (icon_label-Funktion in uiTable) hier die Anzahl der Tage in die nächste Zeile gesprungen ist, wenn wenig Platz auf dem Bildschirm war. Durch das div-style "display:inline-flex" statt "display:inline-table" wurde das Problem für Funktion icon_label im DOIF-Modul behoben - neue DOIF-Version wurde eingecheckt.
Hallo Damian,
wäre es ggf. möglich, die Reihenfolge der Tonnen nach dem nächsten Termin anzuordnen?
Gruß
Marco
Zitat von: marboj am 25 Dezember 2025, 15:38:24Hallo Damian,
wäre es ggf. möglich, die Reihenfolge der Tonnen nach dem nächsten Termin anzuordnen?
Die Darstellung der Tonnen wird über das Attribut uiTable generiert. Ein Umsortieren des Arrays mit den Einträgen würde zwar zur Laufzeit funktionieren, allerdings würde die neue Reihenfolge in der Darstellung erst durch das Setzen des uiTable-Attributes stattfinden. Das würde allerdings jedes mal zur Änderung der Konfiguration des DOIF-Devices führen (rotes Fragezeichen), was eher unerwünscht ist.
Zitat von: Damian am 23 Dezember 2025, 16:47:10init{[:01];set_Exec("Timer",200,'update()');}
Der Abfuhrplan ändert sich nicht so oft und ich bau' mir mein Abfallkalender immer noch selber basierend auf den Daten von MyMüll meiner Gemeinde (hier beschrieben (https://forum.fhem.de/index.php?topic=125789.0)). Da reicht es, das uiTable einmal am tag auszulesen und zu aktualisieren - mit
init{[05:01];set_Exec("Timer",200,'update()');}kein Problem. :)
Zitat von: TomLee am 24 Dezember 2025, 11:25:12Zitat von: yersinia am 23 Dezember 2025, 16:15:47Wie kann ich es verhindern, dass mir der Log vollgemüllt wird?
https://fhem.de/commandref_modular_DE.html#perl
ZitatUm FHEM-Kommandos in den PERL-Ausdrücken zu verwenden, benutzen Sie bitte die Funktion fhem(), mit einem Textargument. Dieser Text wird als FHEM-Kommando interpretiert.
Beispiel
{ fhem "set light on" }
define n1 notify piri:on { fhem "set light on" }
Bemerkung: Wenn diese Funktion einen wert zurück liefert, wird dieser in der allgemeinen Logdatei gespeichert.. Benutzen sie "1" als zweites Argument um dieses speichern zu verhindern. Sinnvoll ist dieses Argument bei der Abfrage von Werten mittels "get...".
Das hat geholfen, Danke. :)
Zitat von: Damian am 25 Dezember 2025, 12:17:34Du kannst aber selbst in uiTable den Eintrag anpassen:
ZitatDEF TPL_Tonne (style([$SELF:$1_date],"",8),ic ('$2',[$SELF:$1]),'$1')
Dann wird der Readingname unter der Tonne angezeigt.
Warum den ReadingsName bemühen wenn man (wie bei mir) es aus der Summary des Kalendereintrags auslesen kann (in der DEF ergänzen):
my $summary=fhem('get cal events filter:field(summary)=~"'.$event.'" limit:count=1,from=0 format:custom="$S"',1); set_Reading($reading."_summary",$summary);uiTable attr:
DEF TPL_Tonne (style([$SELF:$1_date],"",8),ic ('$2',[$SELF:$1]),style([$SELF:$1_summary],"",8));
FOR (@{$_sc},TPL_Tonne($_$2,$_$3,$_$4)|);
Das sieht super aus ! Vielen Dank für die Arbeit.
Ich als Berliner kann es aber wohl leider nicht nutzen :-( Ich habe weder bei der BSR Hausmüll noch bei Alba gelber Sack die ical Möglichkeiten gefunden.
Gruß
und guten Rutsch Euch allen
Zitat von: mfeske am 30 Dezember 2025, 21:38:12Ich als Berliner kann es aber wohl leider nicht nutzen :-( Ich habe weder bei der BSR Hausmüll noch bei Alba gelber Sack die ical Möglichkeiten gefunden.
Warum kannst du es nicht nutzen? Ich habe unsere Abfuhrtermine einfach über den Browser im Google-Kalender manuell eingetragen - den nutze ich sonst nicht. Die Termine wiederholen sich im Normalfall. Du kannst mit einer Eintragung z. B. "mittwochs alle zwei Wochen" schon die meisten Termin pro Tonne abdecken, das machst du für jede Tonne ein mal. Danach gehst du durch deinen Kalender und passt die Ausnahmen durch einfaches Verschieben des Termins jeweils an oder fügst einzeln einen zusätzlichen Termin hinzu. Bei mir hat die Aktion vielleicht 20 Minuten gedauert, dann waren alle Termine drin. 20 Minuten Aufwand für ein ganzes Jahr ist ein vertretbarer Aufwand.
Hallo Damian,
vielen Dank. Ich dachte die Abfuhrunternehmen wären so vorbildlich wie in anderen Landkreisen, wo man den Kalender per ICal einfach abonnieren kann. Der Teufel steckt ja immer im Detail wenn sich doch mal etwas verschiebt.
Gruß
Micha
Zitat von: mfeske am 30 Dezember 2025, 21:38:12Ich als Berliner kann es aber wohl leider nicht nutzen :-( Ich habe weder bei der BSR Hausmüll noch bei Alba gelber Sack die ical Möglichkeiten gefunden.
Es gibt doch auch ein Modul für Berlin: AbfallentsorgungBerlin BSR, ALBA und BerlinRecycling - neue Module (https://forum.fhem.de/index.php?topic=73259.0)
Daneben scheint es von der BSR auch einen Abfallkalender zu geben: https://www.bsr.de/abfuhrkalender
Nach Auswahl von Straße und Hausnummer bekommt man einen Kalender und über das Drei-Punkte-Menü über dem Kalender rechts auch die Möglichkeit, den Kalender als ics (ical) runterzuladen - oder eben in FHEM einbinden. Da ich kein Berliner bin, kann ich auch nicht weiter testen ob die Funktion tatsächlich immer nur für den aktuellen Monat etwas zurückliefert (Jahr und Monat werden mitgegeben). Jdfs scheint ein solches Kalender-Device zu funktionieren (hier für die Charlottenburger Straße 12 in Pankow für den aktuellen Monat):
defmod BSR_Test Calendar ical url https://umnewforms.bsr.de/p/de.bsr.adressen.app/abfuhr/kalender/ics/049011000103004050500120?year=%Y&month=%m 86400ein
get BSR_TEST eventsliefert
01.12.2025 00:00 24h Abholung Wertstoffe (Abholung durch ALBA)
01.12.2025 00:00 24h Abholung Biogut
05.12.2025 00:00 24h Abholung Hausmüll
08.12.2025 00:00 24h Abholung Wertstoffe (Abholung durch ALBA)
08.12.2025 00:00 24h Abholung Biogut
12.12.2025 00:00 24h Abholung Hausmüll
15.12.2025 00:00 24h Abholung Biogut
15.12.2025 00:00 24h Abholung Wertstoffe (Abholung durch ALBA)
19.12.2025 00:00 24h Abholung Hausmüll
20.12.2025 00:00 24h Abholung Biogut
20.12.2025 00:00 24h Abholung Wertstoffe (Abholung durch ALBA)
27.12.2025 00:00 24h Abholung Hausmüll
29.12.2025 00:00 24h Abholung Biogut
29.12.2025 00:00 24h Abholung Wertstoffe (Abholung durch ALBA)
Mensch da suche ich so lange nach einer Lösung ;-)
Habe ich gleich mal ausprobiert, vermutlich muss ich wohl noch bis zum Jahreswechsel warten für aktuelle Ergebnisse :-(
09.12.2025 00:00 24h Abholung Wertstoffe (Abholung durch ALBA)
22.12.2025 00:00 24h Abholung Wertstoffe (Abholung durch ALBA)
Visualisierst Du die Ergebnisse auch irgendwie und schickt Dir eine Push Nachricht oder ähnliches ?
Gruß
Micha