Hauptmenü

Abfall-Entsorgung

Begonnen von Damian, 22 Dezember 2025, 19:48:53

Vorheriges Thema - Nächstes Thema

Damian

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 \
...

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

yersinia

#1
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 vor dem set_Reading ggf noch sinnvoll?
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Per

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?

Damian

#3
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.



Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#4
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 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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

yersinia

#5
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.
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Damian

#6
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.



Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF