Neues Modul für Abfallkalender ABFALL

Begonnen von uniqueck, 27 Januar 2016, 01:02:41

Vorheriges Thema - Nächstes Thema

KyleK

Ich würde noch einen 3. Hut in den Ring werfen: DOIF + uiTable  8)
https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Anzahl_der_Tage_bis_zur_Abfall-Entsorgung

Ich bin vom ABFALL-Modul auf diese Variante umgestiegen, und bin zufrieden.
FHEM on Raspberry Pi 3B+
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

yersinia

Zitat von: bartman121 am 16 November 2022, 13:14:35

  • die ReadingNamen sind minimal anders, aber das ist kein Problem ....
  • das Splitten bei "," geht nicht, das "," wird bei deiner Version nicht durch KOMMA ersetzt. Ersetze ich das Komma vorher, wie in meinem Beispiel dann läuft es
die ReadingNamen sind minimal anders, aber das ist kein Problem ....
Ja, Teile des Readingsnamen werden sicherheitshalber nochmal von makeReadingName kontrolliert/korrigiert.
Ansonsten ist "minimal anders" sehr unspezifisch. ;)

Zitat von: bartman121 am 16 November 2022, 13:14:35Zum Thema days_left:
bei meinem Kalender startet der Termin um 7:00Uhr.

Nehmen wir als an: 18.11.2022 07:00Uhr ist $e_start
Es ist aktuell 16.11.2022 12:45Uhr

Bei meiner Rechnung kommt dann 1,xx raus, durch die Konvertierung zu int kommt halt 1 raus. Jetzt kann man das drehen wie man will, 1 Tag ist definitv falsch. Außerdem ziehen wir die Startzeit heran, am Tag der "Abholung" wird dadurch days_left negativ werden, bewirkt die konvertierung. Mit der Prüfung ob days_left <= 0 ist wir der Termin dann bereits ignoriert, das kann gewünscht sein, würde ich aber so nicht machen wollen.
Immer wieder faszinierend, wie unterschiedlich die Welt ist und wenn man seinen Würfel verlässt plötzlich andere Konstellationen bei rum kommen. ;D

Danke für die Fehlerkorrektur und die days_left Optimierung.

Zitat von: bartman121 am 16 November 2022, 13:14:35Aus meiner Sicht, sollte man sich aber nicht an die "onCreateEvent"-Geschichte anhängen, sondern eigentlich müsste man ein notify verwenden, alle Events holen und dabei "sinnvoll sortieren", die Events dann mit einer Routine (ähnlich zu dieser) durchrattern. Dann würde man sich Mehrfach-Änderungen der Readings sparen. Weiterhin kann man so auch auf das löschen der Readings verzichten. Aber genau dann wird die Unterscheidung zwischen myUtils und eigenem Modul nicht mehr eindeutig ;)
Völlig dacor. Und damit beende ich dies für mich hier auch damit:
sub garbage_pickup_readings {
# onCreateEvent => {main::garbage_pickup_readings("device",$e->start,$e->summary)}
  use POSIX qw( strftime );
  use Time::Local;
  my $caldev = shift;
  my $e_start   = shift;
  my $e_summary = shift;
  my $dt = strftime("%d.%m.%Y", localtime($e_start)); #Nur Datum des Events ermitteln
  my $devhash = $defs{$caldev};
   
  my %replacement = ("ä" => "ae", "Ä" => "Ae", "ü" => "ue", "Ü" => "Ue", "ö" => "oe", "Ö" => "Oe", "ß" => "ss", "Leerung " => "");
  my $replacementKeys = join ("|", keys(%replacement));
  $e_summary =~ s/($replacementKeys)/$replacement{$1}/eg;
  #$e_summary =~ tr/a-zA-Z0-9\-_//dc; #from ABFALL Modul; not needed -> we use makeReadingsName
$e_summary =~ s/, /KOMMA/g; # , durch das Wort KOMMA ersetzen

  my @tonnen = split(/KOMMA/,$e_summary); #shift @tonnen; #Events splitten falls durch KOMMA getrennt

  #benutzte Variablen deklarieren
  my $reading_date;
  my $reading_name;
  my $reading_epoch;
  my $reading_days_left;
  my $reading_weekday;
  my $days_left;
  my $weekday;
  my %wdDE = ("Monday" => "Montag", "Tuesday" => "Dienstag", "Wednesday" => "Mittwoch", "Thursday" => "Donnerstag", "Friday" => "Freitag", "Saturday" => "Samstag", "Sunday" => "Sonntag");
  my $wdDEKeys = join ("|", keys(%wdDE));

  readingsBeginUpdate($devhash);
 
  foreach my $a (@tonnen) {
  #Reading-Namen zusammensetzen
$a = makeReadingName($a);
$reading_date = "waste_".$a."_date";
$reading_name = "waste_".$a."_name";
$reading_epoch = "waste_".$a."_epoch";
$reading_days_left = "waste_".$a."_days_left";
$reading_weekday= "waste_".$a."_weekday";

#Wenn Readings nicht existiert oder $e_start < aktuell eingetragenes Datum
#days left berechnen
#$days_left = int(($e_start - time)/86400);
$days_left = int((time_str2num(strftime("%Y-%m-%d", localtime($e_start))." 00:00:00") - time_str2num(strftime("%Y-%m-%d", localtime(time)). " 00:00:00"))/86400);
if (($days_left >= 0) &&
((ReadingsNum($caldev,$reading_epoch,0) >= $e_start) || (ReadingsNum($caldev,$reading_epoch,0) == 0))) {

#Wochentag ermitteln
$weekday = strftime("%A",localtime($e_start));
$weekday =~ s/($wdDEKeys)/$wdDE{$1}/eg;

readingsBulkUpdate($devhash, $reading_epoch, $e_start);
$a =~ s/_/ /g;
readingsBulkUpdate($devhash, $reading_name, $a);
readingsBulkUpdate($devhash, $reading_date, $dt);
readingsBulkUpdate($devhash, $reading_days_left, $days_left);
readingsBulkUpdate($devhash, $reading_weekday, $weekday);
}
  }
  readingsEndUpdate($devhash, 1);
}

Interessanter Zeitvertreib, aber führt so nicht zum Ziel.

Zitat von: bartman121 am 16 November 2022, 13:14:35Ich würde gern Yersinia als neuen Maintainer ins Rampenlicht schieben :P
Nein Danke. Dafür habe ich zu wenig Ahnung von FHEM, Perl, dem ABFALL-Modul im speziellen und wie man richtig programmiert. Und wenn man keine Ahnung hat aber bei den Großen mitspielen will, dann :-X
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | 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

yersinia

Zitat von: KyleK am 16 November 2022, 14:00:19Ich würde noch einen 3. Hut in den Ring werfen: DOIF + uiTable  8)
https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Anzahl_der_Tage_bis_zur_Abfall-Entsorgung

Ich bin vom ABFALL-Modul auf diese Variante umgestiegen, und bin zufrieden.
Hast du die Reading davon auch in FTUI als icon eingebunden? Soweit ich das verstehe, ist DOIF uiTable "nur" für FHEMWEB, oder?
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | 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

ch.eick

Zitat von: yersinia am 16 November 2022, 14:13:15
Hast du die Reading davon auch in FTUI als icon eingebunden? Soweit ich das verstehe, ist DOIF uiTable "nur" für FHEMWEB, oder?
uiTable ist DOIF im Perl Modus und für das FHEMWEB

Deine extra readings für ftui würde ich in der Funktion days sehen.
Da ich das Abfall DOIF jetzt auch erst neu kennenlerne werde ich mich da erstmal reindenken, denn es passt sehr gut in mein FHEMWEB Umfeld.

Vielen Dank für den Hinweis
      Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

OdfFhem

Zitat von: yersinia am 16 November 2022, 08:43:04
@OdfFhem: wie bindest du dies in FTUI3 ein? Über calview component oder auch via icons?

Über ftui-icon samt ftui-badge
... normalerweise erfolgt die Steuerung der Anzeige einer Abfallart ausschließlich mit dem Reading t_001_daysleft
    ... 0 Tage ... stehende Tonne PLUS Heute aufblenden oder das farbig hervorgehobene 0-Badge ... Tonne mit Entleerungsanimation
    ... 1 Tag ... stehende Tonne PLUS Morgen aufblenden oder das farbig hervorgehobene 1-Badge ... Tonne mit Rollanimation (zum Strassenrand)
    ... > 1 Tag ... stehende Tonne PLUS das farbig hervorgehobene Badge mit der Anzahl verbleibender Tage
... wenn die Icons nicht aussagekräftig genug wären, könnte man noch das alias-Attribut ins Spiel bringen

... s. Screenshot

OdfFhem

Zitat von: bartman121 am 16 November 2022, 09:38:54
Sicher?
Die Frage ist hier vermutlich was klarkommen bedeutet:
Mein Entsorger schreibt mehrere Tonnen in einen Termin, damit ergibt sich als Summary zum Beispiel: "Bio-Tonne, Papier-Tonne"

Bei deinem Beispiel würden beide Calview-Devices diesen Termin bereitstellen, mit dem Ergebnis, dass du zweimal das gleiche Ereignis-triggern würdest, falls du hinten dran Automatismen hättest. Natürlich kann man das alles gegeneinander verriegeln, aber günstig wäre, wenn man vorher alle Eventualitäten ausschließen könnte.

Mein Ansatz ist ja, dass ich pro Abfallart ein CALVIEW-Device anlege und damit wird jeweils die nächste Abholung als Event bereitgestellt.
Normalerweise wird dadurch eine je Abfallart eingefärbte Tonne mit verbleibenden Resttagen dargestellt; sollte dennoch der Name der Abfallart interessant sein, könnte man z.B. das jeweilige alias-Attribut verwenden.

In Deinem Anwendungsfall könnte es sinnvoll sein, dass Du zwar pro Abfallart ein CALVIEW-Device anlegst - sofern für eine abfallgetrennte Darstellung benötigt.
Benötigst Du den nächsten abfallartübergreifenden Abholtermin und Dein Datenlieferant hat immer alle Abfallarten zu einem Termin zusammengefasst, würde vermutlich ein (zusätzliches) CALVIEW-Device genügen - der nächstgelegene Termin wäre dann wohl der gesuchte Termin ... der reguläre Ausdruck wäre .* und das resultierende Event sollte es nur einmal geben ...

OdfFhem

Zitat von: yersinia am 16 November 2022, 14:13:15
Hast du die Reading davon auch in FTUI als icon eingebunden? Soweit ich das verstehe, ist DOIF uiTable "nur" für FHEMWEB, oder?

Hier wurde das Thema vor Kurzem behandelt:
https://forum.fhem.de/index.php/topic,129898.0.html

Gisbert

Hallo zusammen,

seit neuestem (ab 2023) haben wir eine Biotonne. Dadurch reduziert sich unsere Restmülltonne auf eine 4-wöchentliche Leerung, es gibt aber nach wie die 2-wöchentliche Leerung für die, die keine Biotonne haben.

Kann man im Modul nach dem Typ selektieren, der für einen selbst zutrifft?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

sinus61

Zitat von: OdfFhem am 16 November 2022, 21:33:37
Mein Ansatz ist ja, dass ich pro Abfallart ein CALVIEW-Device anlege und damit wird jeweils die nächste Abholung als Event bereitgestellt.

So hab ich bei mir auch gemacht, ich hab 4 Abfallarten und dafür 4 Icons in FTUI. Da der Entsorger aber "Papier / Gelber Sack" als einen Kalendereintrag liefert, Müll und Bio als getrennte Einträge hab ich dafür 3 CALVIEW angelegt, die Papier und Gelber Sack Icons halten sich dann eben an einen CALVIEW. Funktioniert easy und ist in 5 Minuten eingerichtet. Da hat man doch alle Readings die notwendig sind. Ein userreading schaut dann noch welches übergreifend der nächste Abfuhrtermin ist, da spar ich mir ein extra CALVIEW nur dafür.

Wenn ich mal viel Zeit und Langeweile habe würde ich vielleicht auch mal versuchen das nur direkt mit dem CALENDAR Device umzusetzen.   

yersinia

#1434
Zitat von: Gisbert am 29 Dezember 2022, 08:58:28seit neuestem (ab 2023) haben wir eine Biotonne. Dadurch reduziert sich unsere Restmülltonne auf eine 4-wöchentliche Leerung, es gibt aber nach wie die 2-wöchentliche Leerung für die, die keine Biotonne haben.
Müsste das Modul nicht je Abfallart/Abholung jeweils eigene Readings generieren? Die AVEA bietet doch derzeit jeweils einzelne Termine für die Abholung von
- Biotonne
- Gelber Sack
- Restmülltonne
- Restmülltonne 4-wöchentlich
- Weihnachtsbaumsammlung
an.
Man kann dann das jeweils andere Reading ignorieren - wenn man eine Biotonne hat, nutzt man eben Restmülltonne 4-wöchentlich und man kann Restmülltonne ignorieren; wer keine Biotonne hat, schaut nur auf Restmülltonne.

READINGS:
     2023-01-03 09:43:15   Biotonne_date   16.01.2023
     2023-01-03 09:43:15   Biotonne_days   13
     2023-01-03 09:43:15   Biotonne_description
     2023-01-03 09:43:15   Biotonne_text   Biotonne
     2023-01-03 09:43:15   Biotonne_uid    20230103T094244CET0434pg9VBGaveainfo
     2023-01-03 09:43:15   Biotonne_weekday Montag
     2023-01-03 09:43:15   GelberSack_date 09.01.2023
     2023-01-03 09:43:15   GelberSack_days 6
     2023-01-03 09:43:15   GelberSack_description Bei Fragen zur Abholung der Gelben Säcke wenden Sie sich bitte an die: REMONDIS GmbH & Co. KG, Heide 39, 51399 Burscheid, Tel.: 0800 1223255
     2023-01-03 09:43:15   GelberSack_text Gelber Sack
     2023-01-03 09:43:15   GelberSack_uid  20230103T094244CET042590XP6xaveainfo
     2023-01-03 09:43:15   GelberSack_weekday Montag
     2023-01-03 09:43:15   Papiertonne_date 23.01.2023
     2023-01-03 09:43:15   Papiertonne_days 20
     2023-01-03 09:43:15   Papiertonne_description
     2023-01-03 09:43:15   Papiertonne_text Papiertonne
     2023-01-03 09:43:15   Papiertonne_uid 20230103T094244CET0443suk5UKaveainfo
     2023-01-03 09:43:15   Papiertonne_weekday Montag
     2023-01-03 09:43:15   Restmuelltonne4-woechentlich_date 16.01.2023
     2023-01-03 09:43:15   Restmuelltonne4-woechentlich_days 13
     2023-01-03 09:43:15   Restmuelltonne4-woechentlich_description
     2023-01-03 09:43:15   Restmuelltonne4-woechentlich_text Restmülltonne 4-wöchentlich
     2023-01-03 09:43:15   Restmuelltonne4-woechentlich_uid 20230103T094244CET04368rwlrEaveainfo
     2023-01-03 09:43:15   Restmuelltonne4-woechentlich_weekday Montag
     2023-01-03 09:43:15   Restmuelltonne_date 16.01.2023
     2023-01-03 09:43:15   Restmuelltonne_days 13
     2023-01-03 09:43:15   Restmuelltonne_description
     2023-01-03 09:43:15   Restmuelltonne_text Restmülltonne
     2023-01-03 09:43:15   Restmuelltonne_uid 20230103T094244CET0428ljbu3Taveainfo
     2023-01-03 09:43:15   Restmuelltonne_weekday Montag
     2023-01-03 09:43:15   Weihnachtsbaumsammlung_date 16.01.2023
     2023-01-03 09:43:15   Weihnachtsbaumsammlung_days 13
     2023-01-03 09:43:15   Weihnachtsbaumsammlung_description
     2023-01-03 09:43:15   Weihnachtsbaumsammlung_text Weihnachtsbaumsammlung
     2023-01-03 09:43:15   Weihnachtsbaumsammlung_uid 20230103T094244CET0431dbLIPwaveainfo
     2023-01-03 09:43:15   Weihnachtsbaumsammlung_weekday Montag
     2023-01-03 09:43:15   next            GelberSack_6
     2023-01-03 09:43:15   next_date       09.01.2023
     2023-01-03 09:43:15   next_days       6
     2023-01-03 09:43:15   next_description Bei Fragen zur Abholung der Gelben Säcke wenden Sie sich bitte an die: REMONDIS GmbH & Co. KG, Heide 39, 51399 Burscheid, Tel.: 0800 1223255
     2023-01-03 09:43:15   next_text       Gelber Sack
     2023-01-03 09:43:15   next_weekday    Montag
     2023-01-03 09:43:15   state           6
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | 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

andi11

evl kann das helfen? Bei uns ist Restmüll und Biotonne ein gemeinsamer Termin. Im Sommer gibts aber zusätzlich noch reine Biomüll Leerungen. Dafür hab ich mir ein Userreading erstellt:
MyBiotonne_days {if (ReadingsVal($NAME,"RestmuellBiotonne_days",999)<ReadingsVal($NAME,"Biotonne_days",999)) {ReadingsVal($NAME,"RestmuellBiotonne_days",999)}else{ReadingsVal($NAME,"Biotonne_days",999)}}

Badflex

Hallo, bei mir wird am Tag der Abholung keine 0 mehr angezeigt sondern gleich der nächste Termin also 14.
Das irritiert total.
Hat sich da was geändert?
Raspberry Pi, CUL868(SlowRF), FB 7490, SmartVisu, fast nur HomeMatic wenig FS20, Netatmo

Xanti19

Bei mir überspringt die Datums-Anzeige für den Restmüll (Restmuellgrau_date) seit 2023 zwei Termine. Der aktuelle Tag (di_Muelltonnen_AktuellerTag) wird richtig angezeigt. Die Termine für Papier, Biotonne und Gelbe Tonne werden richtig angezeigt. Ich kann beim ics-Kalender für 2023 keine Änderungen zu den Vorjahren erkennen.  :(

Badflex

Zitat von: Badflex am 24 Januar 2023, 12:38:24
Hallo, bei mir wird am Tag der Abholung keine 0 mehr angezeigt sondern gleich der nächste Termin also 14.
Das irritiert total.
Hat sich da was geändert?
Hat keiner das gleiche Problem?
Raspberry Pi, CUL868(SlowRF), FB 7490, SmartVisu, fast nur HomeMatic wenig FS20, Netatmo

bartman121

Schau doch Mal in den Kalender wie der Termin dort eingetragen ist ....

Die days-left Thematik lässt viel Spielraum. Wenn der Termin z.b. nur von 7uhr bis 8uhr eingetragen ist, du aber um 9uhr schaust, dann gilt halt der nächste Termin....

Ich vermute dein Entsorger hat von ganztägigen Terminen auf zeitlich begrenzten Termine umgestellt.....