FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: dancatt am 26 Januar 2016, 14:48:26

Titel: Müllabfuhr-Visualisierung mit Modul holiday
Beitrag von: dancatt am 26 Januar 2016, 14:48:26
Hallo zusammen,

hat jemand schon eine vergleichbare Lösung für eine Müllabfuhr-Visualisierung in FTUI wie unter
http://forum.fhem.de/index.php/topic,32382.msg247854.html#msg247854
dargestellt?
Mir geht es vor allem um eine Lösung mit dem Modul holiday.

Alle Lösungen die ich gefunden habe sind mit google realisiert was ich nicht möchte.

Vielen Dank.

Gruß Daniel
Titel: Antw:Müllabfuhr-Visualisierung mit Modul holiday
Beitrag von: wmr72 am 29 Januar 2016, 19:13:43
Hier ist meine Lösung, sie setzt sich zusammen aus einem holiday-Kalender, einem nächtlichen at, das über eine Funktion in 99_MyUtils.pm pro Abfall-"Art" einen dummy befüllt und der Anzeige in Tablet UI. Die Anzeige in der UI blinkt am Vortag der Abholung, ein Klick auf den Button ("Mülltonne wurde rausgestellt") beendet das Blinken.

abfallkalender:
define abfallkalender holiday

und dazugehört dann natürlich eine abfallkalender.holiday:
...
1 01-05 Biomuell
1 01-05 Papier
1 01-05 GelberSack
1 01-11 Restmuell
1 01-11 Glas
...


Dummies:
define abfall_GelberSack dummy
define abfall_Restmuell dummy
define abfall_Biomuell dummy
define abfall_Glas dummy
define abfall_Papier dummy


99_MyUtils.pm:
sub updateAbfallDummys() {
    use DateTime;

    my $now = DateTime->now(locale=>"de_DE", time_zone => 'Europe/Berlin',);

    my %abfall_zeit;

    for (my $i = 35; $i >= 0; $i--) {
        my $dayname = $now->clone->add(days => $i)->day_name();
        my $abfall = fhem("get abfallkalender days $i", 1);
        Log 4, "debug: days $i: $abfall";

        if ($abfall ne "none") {
            my $status = "in $i Tagen";
            if ($i <= 6) {
                if ($i == 0) {
                    $status = "Heute";
                } elsif ($i == 1) {
                    $status = "Morgen";
                } elsif ($i == 2) {
                    $status = "Übermorgen";
                } else {
                    $status = $dayname;
                }
            }

            my @abfallart = split(",", $abfall);
            foreach $a (@abfallart) {
                $a =~ s/\s//g;
                $abfall_zeit{$a} = $status;
                Log 4, "debug: abfall_$a = $status";
            }
        }
    }

    foreach $a (keys %abfall_zeit) {
        my $status = $abfall_zeit{$a};
        fhem("set abfall_$a $status", 1);
        if ($status ne "Heute" && $status ne "Morgen" && $status ne "Übermorgen") {
            Log 4, "debug: setreading abfall_$a alarm off";
            fhem("setreading abfall_$a alarm off");
        } else {
            my $alarm_status = ReadingsVal("abfall_$a", "alarm", "off");
            Log 4, "alarm abfall_$a = $alarm_status";
            if ($alarm_status ne "done") {
                my $newalarm = ($status eq "Übermorgen") ? "warn" : "blink";
                Log 4, "debug: setreading abfall_$a alarm $newalarm";
                fhem("setreading abfall_$a alarm $newalarm", 1);
            }
        }
    }
}


Timer:
define timer_abfall at +*24:00 {updateAbfallDummys()}
attr timer_abfall alignTime 00:30


HTML:

<li data-row="4" data-col="6" data-sizex="3" data-sizey="1">
        <header>ABFALL</header>
        <div class="cell">
            <div class="left left-space">
                <div
                    data-type="pagebutton"
                    data-background-icon="fa-circle-thin"
                    data-off-background-color="#7A7A7A"
                    data-on-background-color="#7A7A7A"
                    data-device="abfall_GelberSack"
                    data-off-color="#E6E600"
                    data-get="alarm"
                    data-get-on='["off","warn|done","blink"]'
                    data-icons='["fa-recycle","fa-recycle warn","fa-recycle warn blink"]'
                    data-fhem-cmd="setreading abfall_GelberSack alarm done"
                    data-on-colors='["#E6E600","#E6E600","#E6E600"]'
                    class="big">
                </div>
                <div data-type="label" data-device="abfall_GelberSack" class="darker thin small"></div>
            </div>
            <div class="left">
                <div
                    data-type="pagebutton"
                    data-background-icon="fa-circle-thin"
                    data-off-background-color="#7A7A7A"
                    data-on-background-color="#7A7A7A"
                    data-device="abfall_Biomuell"
                    data-off-color="#996633"
                    data-get="alarm"
                    data-get-on='["off","warn|done","blink"]'
                    data-icons='["fa-trash","fa-trash warn","fa-trash warn blink"]'
                    data-fhem-cmd="setreading abfall_Biomuell alarm done"
                    data-on-colors='["#996633","#996633","#996633"]'
                    class="big">
                </div>
                <div data-type="label" data-device="abfall_Biomuell" class="darker thin small"></div>
            </div>
            <div class="left">
                <div
                    data-type="pagebutton"
                    data-background-icon="fa-circle-thin"
                    data-off-background-color="#7A7A7A"
                    data-on-background-color="#7A7A7A"
                    data-device="abfall_Papier"
                    data-off-color="green"
                    data-get="alarm"
                    data-get-on='["off","warn|done","blink"]'
                    data-icons='["fa-trash","fa-trash warn","fa-trash warn blink"]'
                    data-fhem-cmd="setreading abfall_Papier alarm done"
                    data-on-colors='["green","green","green"]'
                    class="big">
                </div>
                <div data-type="label" data-device="abfall_Papier" class="darker thin small"></div>
            </div>
            <div class="left">
                <div
                    data-type="pagebutton"
                    data-background-icon="fa-circle-thin"
                    data-off-background-color="#7A7A7A"
                    data-on-background-color="#7A7A7A"
                    data-device="abfall_Restmuell"
                    data-off-color="grey"
                    data-get="alarm"
                    data-get-on='["off","warn|done","blink"]'
                    data-icons='["fa-trash","fa-trash warn","fa-trash warn blink"]'
                    data-fhem-cmd="setreading abfall_Restmuell alarm done"
                    data-on-colors='["gray","gray","gray"]'
                    class="big">
                </div>
                <div data-type="label" data-device="abfall_Restmuell" class="darker thin small"></div>
            </div>
            <div class="left">
                <div
                    data-type="pagebutton"
                    data-background-icon="fa-circle-thin"
                    data-off-background-color="#7A7A7A"
                    data-on-background-color="#7A7A7A"
                    data-device="abfall_Glas"
                    data-off-color="#1bb8f9"
                    data-get="alarm"
                    data-get-on='["off","warn|done","blink"]'
                    data-icons='["wmr-bottles","wmr-bottles warn","wmr-bottles warn blink"]'
                    data-fhem-cmd="setreading abfall_Glas alarm done"
                    data-on-colors='["#1bb8f9","#1bb8f9","#1bb8f9"]'
                    class="big">
                </div>
                <div data-type="label" data-device="abfall_Glas" class="darker thin small"></div>
            </div>
    </div>
</li>

Titel: Antw:Müllabfuhr-Visualisierung mit Modul holiday
Beitrag von: GuidoS am 11 Februar 2016, 13:05:27
Hi,

danke für die Darstellung und posten deiner Lösung. Ich finde die Holiday Funktion PRIMA ! -

Ich habe jedoch das Problem, dass die Dummys nicht aktualisiert werden,...

Idee - Codeänderung ?
Titel: Antw:Müllabfuhr-Visualisierung mit Modul holiday
Beitrag von: gloob am 11 Februar 2016, 13:23:20
Muss man DateTime zusätzlich installieren auf dem Raspberry Pi?

Ich bekomme folgende Fehlermeldung in FHEM:

ERROR:
Can't locate DateTime.pm in @INC (you may need to install the DateTime module) (@INC contains: /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/arm-linux-gnueabihf/perl5/5.20 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl . ./FHEM ./FHEM/lib) at ./FHEM/99_myUtils.pm line 84. BEGIN failed--compilation aborted at ./FHEM/99_myUtils.pm line 84.
Titel: Antw:Müllabfuhr-Visualisierung mit Modul holiday
Beitrag von: gloob am 11 Februar 2016, 14:22:27
Okay ich konnte es mit folgende Kommands lösen:

sudo apt-get update
sudo apt-get install libdatetime-perl


Da ich es auch ohne die zusätzliche Lib lösen wollte habe ich den Code etwas abgeändert. Ich hoffe es ist erlaubt.
Auch konnte ich data-type="pagebutton" nicht finden.

Ich schreibe jetzt nur die Anzahl der Tage bis zur Leerung in den Dummy.

sub updateAbfall() {
    my %abfall_zeit;

    for (my $i = 35; $i >= 0; $i--) {
        my $abfall = fhem("get abfallkalender days $i", 1);
        Log 4, "debug: days $i: $abfall";

        if ($abfall ne "none") {
my $status = $i;

            my @abfallart = split(",", $abfall);
            foreach $a (@abfallart) {
                $a =~ s/\s//g;
                $abfall_zeit{$a} = $status;
                Log 4, "debug: abfall_$a = $status";
            }
        }
    }

    foreach $a (keys %abfall_zeit) {
        my $status = $abfall_zeit{$a};
        fhem("set abfall_$a $status", 1);
    }
}


Dadurch kann ich folgenden Code in FTUI nutzen und mir eine Blase an jedem Symbol anzeigen lassen mit den Tagen bis zur nächsten Leerung:

<li data-row="6" data-col="4" data-sizex="1" data-sizey="1" class="semitransparent">
<header><font size="+1">Abfall</font></header>
<div class="cell">
<div data-type="symbol" data-background-icon="fa-circle-thin " data-off-background-color="#7A7A7A" data-on-background-color="#7A7A7A" data-device="abfall_Restmuell" data-get='STATE' data-off-color="grey" data-get-on='["off","^[01]$","^[1-9][0-9]|[2-9]$"]' data-icons='["fa-trash warn","fa-trash warn blink","fa-trash warn"]' data-on-colors='["gray","gray","gray"]' class=""></div>
<div data-type="symbol" data-background-icon="fa-circle-thin " data-off-background-color="#7A7A7A" data-on-background-color="#7A7A7A" data-device="abfall_GelberSack" data-get='STATE' data-off-color="#E6E600" data-get-on='["off","^[01]$","^[1-9][0-9]|[2-9]$"]' data-icons='["fa-trash warn","fa-trash warn blink","fa-trash warn"]' data-on-colors='["mustard", "mustard", "mustard"]' class=""></div>
<div data-type="symbol" data-background-icon="fa-circle-thin " data-off-background-color="#7A7A7A" data-on-background-color="#7A7A7A" data-device="abfall_Biomuell" data-get='STATE' data-off-color="#996633" data-get-on='["off","^[01]$","^[1-9][0-9]|[2-9]$"]' data-icons='["fa-trash warn","fa-trash warn blink","fa-trash warn"]' data-on-colors='["Blood Red","Blood Red","Blood Red"]' class=""></div>
<div data-type="symbol" data-background-icon="fa-circle-thin " data-off-background-color="#7A7A7A" data-on-background-color="#7A7A7A" data-device="abfall_Papier" data-get='STATE' data-off-color="#4747D1" data-get-on='["off","^[01]$","^[1-9][0-9]|[2-9]$"]' data-icons='["fa-trash warn","fa-trash warn blink","fa-trash warn"]' data-on-colors='["blue","blue","blue"]' class=""></div>
</div>
</li>


Das Blinken des Symbols mit Abholung heute und morgen habe ich beibehalten.
Titel: Antw:Müllabfuhr-Visualisierung mit Modul holiday
Beitrag von: wmr72 am 11 Februar 2016, 16:44:51
@GuidoS: läuft denn Dein at? Wenn ja: Logging hochdrehen, damit sollte recht einfach zu sehen sein was passiert.
Titel: Antw:Müllabfuhr-Visualisierung mit Modul holiday
Beitrag von: GuidoS am 12 Februar 2016, 10:03:23
Hi,

danke für deine Antwort... der Fehler lag an falschen Einträgen im ALARM ... die standen alle auf done (aus welchem Grund uch immer) ggf. sollten die vorher als default / reset  angelegt werden ..

PS:Logging hochdrehen = Log 1, "debug: .... oder geht das noch besser .. so dass man alles durchklicken kann (debug mit klick)

.. habe gerade die Testtermine rausgenommen (welche für die kommenden 4 Tage mal angelegt..) und die Anzeige bleibt ... d.h. die ALTEN Einträge bleiben bestehen ... gibt es da eine Möglichkeit die im Script zu berücksichtigen?

VG

Titel: Antw: Müllabfuhr-Visualisierung mit Modul holiday
Beitrag von: wmr72 am 12 Februar 2016, 17:01:20
Zitat von: GuidoS am 12 Februar 2016, 10:03:23
danke für deine Antwort... der Fehler lag an falschen Einträgen im ALARM ... die standen alle auf done (aus welchem Grund uch immer) ggf. sollten die vorher als default / reset  angelegt werden ..

PS:Logging hochdrehen = Log 1, "debug: .... oder geht das noch besser .. so dass man alles durchklicken kann (debug mit klick)

Wenn Du damit einen Debugger meinst, in dem Du jede einzelne Codezeile durchgehen kannst: keine Ahnung, ich glaube es gibt sowas in perl, wenn dann müsstest Du aber vermutlich das ganze FHEM im Debug-Modus laufen lassen. Damit habe ich aber keine Erfahrung.

Zitat
.. habe gerade die Testtermine rausgenommen (welche für die kommenden 4 Tage mal angelegt..) und die Anzeige bleibt ... d.h. die ALTEN Einträge bleiben bestehen ... gibt es da eine Möglichkeit die im Script zu berücksichtigen?
Geht es um die Anzeige oder um den Status der Dummies? Wenn eine Abfall-Sorte überhaupt nicht mehr in Deinem holiday vorkommt, dann werden die Dummies tatsächlich nicht gelöscht, aber das dürfte im Realbetrieb wohl kaum vorkommen. Beim Testen hilft deletereading.
Titel: Antw:Müllabfuhr-Visualisierung mit Modul holiday
Beitrag von: bmwfan am 28 März 2016, 19:19:21
@gloob:
Ich habe Deinen Code verwendet und es hat fast alles geklappt. Leider schaffe ich es nicht, die Tage bis zum nächsten Termin in einem roten Kreis im Tablet-UI beim Symbol einzublenden. Ich kann die Tage als normales Label unterhalb darstellen, aber nicht innerhalb des Symbols, obwohl ich Deinen Code vom Symbol umgesetzt habe. Wie geht denn das genau?

Wäre schön, wenn Du mir einen Tip egben könntest.

Gruß Jürgen
Titel: Antw:Müllabfuhr-Visualisierung mit Modul holiday
Beitrag von: Waldmensch am 29 März 2016, 13:56:37
Hab die Lösung von @wmr72 nachgebaut - klappt 1A - Danke fürs zur Verfügung stellen. Enorme WAF Steigerung  ;)
Titel: Antw:Müllabfuhr-Visualisierung mit Modul holiday
Beitrag von: mcmidi am 15 April 2016, 15:53:33
Könntet ihr für Newbies bitte noch erklären, wo die einzelnen Codes abgelegt werden. Danke! Was ich mir schon denke ist:

abfallkalender: fhem.cfg
abfallkalender.holiday: ?
Dummies: fhem.cfg
99_MyUtils.pm: ?
Timer: fhem.cfg
HTML: FTUI index.html
Titel: Antw:Müllabfuhr-Visualisierung mit Modul holiday
Beitrag von: mcmidi am 20 April 2016, 10:42:16
Meine Frage selbst gelöst:
abfallkalender.holiday erstellung abgelegt unter: /opt/fhem/FHEM/
99_MyUtils.pm erstellt

Neue Frage:
Meine Mülltonnen zeigen im roten Kreis aber nur ein "!". Woran kann das liegen?
Titel: Antw:Müllabfuhr-Visualisierung mit Modul holiday
Beitrag von: wmr72 am 20 April 2016, 15:01:22
Solltest Du meine Lösung direkt übernommen haben: für mich war es Absicht, ich wollte da keine Zahl haben. Eine Zahl wird dort nur angezeigt, wenn der Wert des Readings eine Zahl ist, bei mir steht da aber "warn", "blink", usw. drin.
Titel: Antw:Müllabfuhr-Visualisierung mit Modul holiday
Beitrag von: Michi240281 am 12 Mai 2016, 14:20:56
Zitat von: wmr72 am 29 Januar 2016, 19:13:43
Hier ist meine Lösung, sie setzt sich zusammen aus einem holiday-Kalender, einem nächtlichen at, das über eine Funktion in 99_MyUtils.pm pro Abfall-"Art" einen dummy befüllt und der Anzeige in Tablet UI. Die Anzeige in der UI blinkt am Vortag der Abholung, ein Klick auf den Button ("Mülltonne wurde rausgestellt") beendet das Blinken.

abfallkalender:
define abfallkalender holiday

und dazugehört dann natürlich eine abfallkalender.holiday:
...
1 01-05 Biomuell
1 01-05 Papier
1 01-05 GelberSack
1 01-11 Restmuell
1 01-11 Glas
...


Dummies:
define abfall_GelberSack dummy
define abfall_Restmuell dummy
define abfall_Biomuell dummy
define abfall_Glas dummy
define abfall_Papier dummy


99_MyUtils.pm:
sub updateAbfallDummys() {
    use DateTime;

    my $now = DateTime->now(locale=>"de_DE", time_zone => 'Europe/Berlin',);

    my %abfall_zeit;

    for (my $i = 35; $i >= 0; $i--) {
        my $dayname = $now->clone->add(days => $i)->day_name();
        my $abfall = fhem("get abfallkalender days $i", 1);
        Log 4, "debug: days $i: $abfall";

        if ($abfall ne "none") {
            my $status = "in $i Tagen";
            if ($i <= 6) {
                if ($i == 0) {
                    $status = "Heute";
                } elsif ($i == 1) {
                    $status = "Morgen";
                } elsif ($i == 2) {
                    $status = "Übermorgen";
                } else {
                    $status = $dayname;
                }
            }

            my @abfallart = split(",", $abfall);
            foreach $a (@abfallart) {
                $a =~ s/\s//g;
                $abfall_zeit{$a} = $status;
                Log 4, "debug: abfall_$a = $status";
            }
        }
    }

    foreach $a (keys %abfall_zeit) {
        my $status = $abfall_zeit{$a};
        fhem("set abfall_$a $status", 1);
        if ($status ne "Heute" && $status ne "Morgen" && $status ne "Übermorgen") {
            Log 4, "debug: setreading abfall_$a alarm off";
            fhem("setreading abfall_$a alarm off");
        } else {
            my $alarm_status = ReadingsVal("abfall_$a", "alarm", "off");
            Log 4, "alarm abfall_$a = $alarm_status";
            if ($alarm_status ne "done") {
                my $newalarm = ($status eq "Übermorgen") ? "warn" : "blink";
                Log 4, "debug: setreading abfall_$a alarm $newalarm";
                fhem("setreading abfall_$a alarm $newalarm", 1);
            }
        }
    }
}


Timer:
define timer_abfall at +*24:00 {updateAbfallDummys()}
attr timer_abfall alignTime 00:30


HTML:

<li data-row="4" data-col="6" data-sizex="3" data-sizey="1">
        <header>ABFALL</header>
        <div class="cell">
            <div class="left left-space">
                <div
                    data-type="pagebutton"
                    data-background-icon="fa-circle-thin"
                    data-off-background-color="#7A7A7A"
                    data-on-background-color="#7A7A7A"
                    data-device="abfall_GelberSack"
                    data-off-color="#E6E600"
                    data-get="alarm"
                    data-get-on='["off","warn|done","blink"]'
                    data-icons='["fa-recycle","fa-recycle warn","fa-recycle warn blink"]'
                    data-fhem-cmd="setreading abfall_GelberSack alarm done"
                    data-on-colors='["#E6E600","#E6E600","#E6E600"]'
                    class="big">
                </div>
                <div data-type="label" data-device="abfall_GelberSack" class="darker thin small"></div>
            </div>
            <div class="left">
                <div
                    data-type="pagebutton"
                    data-background-icon="fa-circle-thin"
                    data-off-background-color="#7A7A7A"
                    data-on-background-color="#7A7A7A"
                    data-device="abfall_Biomuell"
                    data-off-color="#996633"
                    data-get="alarm"
                    data-get-on='["off","warn|done","blink"]'
                    data-icons='["fa-trash","fa-trash warn","fa-trash warn blink"]'
                    data-fhem-cmd="setreading abfall_Biomuell alarm done"
                    data-on-colors='["#996633","#996633","#996633"]'
                    class="big">
                </div>
                <div data-type="label" data-device="abfall_Biomuell" class="darker thin small"></div>
            </div>
            <div class="left">
                <div
                    data-type="pagebutton"
                    data-background-icon="fa-circle-thin"
                    data-off-background-color="#7A7A7A"
                    data-on-background-color="#7A7A7A"
                    data-device="abfall_Papier"
                    data-off-color="green"
                    data-get="alarm"
                    data-get-on='["off","warn|done","blink"]'
                    data-icons='["fa-trash","fa-trash warn","fa-trash warn blink"]'
                    data-fhem-cmd="setreading abfall_Papier alarm done"
                    data-on-colors='["green","green","green"]'
                    class="big">
                </div>
                <div data-type="label" data-device="abfall_Papier" class="darker thin small"></div>
            </div>
            <div class="left">
                <div
                    data-type="pagebutton"
                    data-background-icon="fa-circle-thin"
                    data-off-background-color="#7A7A7A"
                    data-on-background-color="#7A7A7A"
                    data-device="abfall_Restmuell"
                    data-off-color="grey"
                    data-get="alarm"
                    data-get-on='["off","warn|done","blink"]'
                    data-icons='["fa-trash","fa-trash warn","fa-trash warn blink"]'
                    data-fhem-cmd="setreading abfall_Restmuell alarm done"
                    data-on-colors='["gray","gray","gray"]'
                    class="big">
                </div>
                <div data-type="label" data-device="abfall_Restmuell" class="darker thin small"></div>
            </div>
            <div class="left">
                <div
                    data-type="pagebutton"
                    data-background-icon="fa-circle-thin"
                    data-off-background-color="#7A7A7A"
                    data-on-background-color="#7A7A7A"
                    data-device="abfall_Glas"
                    data-off-color="#1bb8f9"
                    data-get="alarm"
                    data-get-on='["off","warn|done","blink"]'
                    data-icons='["wmr-bottles","wmr-bottles warn","wmr-bottles warn blink"]'
                    data-fhem-cmd="setreading abfall_Glas alarm done"
                    data-on-colors='["#1bb8f9","#1bb8f9","#1bb8f9"]'
                    class="big">
                </div>
                <div data-type="label" data-device="abfall_Glas" class="darker thin small"></div>
            </div>
    </div>
</li>


Hi,

ich habe deine Lösung nachgebaut, vielen Dank für den Code! :-)

Funktioniert auch soweit, bis auf eins: Irgendwie wird bei allen Tonnen das Icon mit dem "!" dran angezeigt, obwohl dann im Text/Reading z.B. "in 9 Tagen steht"! Haste ne Idee, woran das liegen könnte?

EDIT 13.05.16: Ich habe das jetzt verstanden. Das Reading "alarm" der Dummies steht nach Betätigen des blinkenden Icons auf "done". Für "warn" und "done" ist ja das "warn-icon" definiert. Also müsste das Reading doch dann wiede den state "off" annehmen. Aber passiert das denn überhaupt irgendwo?
Titel: Antw:Müllabfuhr-Visualisierung mit Modul holiday
Beitrag von: wmr72 am 17 Mai 2016, 14:29:42
Zitat
EDIT 13.05.16: Ich habe das jetzt verstanden. Das Reading "alarm" der Dummies steht nach Betätigen des blinkenden Icons auf "done". Für "warn" und "done" ist ja das "warn-icon" definiert. Also müsste das Reading doch dann wiede den state "off" annehmen. Aber passiert das denn überhaupt irgendwo?

Hallo,

ja das passiert, und zwar hier:

        ...
        if ($status ne "Heute" && $status ne "Morgen" && $status ne "Übermorgen") {
            Log 4, "debug: setreading abfall_$a alarm off";
            fhem("setreading abfall_$a alarm off");
        } else {
        ...

also am ersten Tag nach der Abholung, falls die nicht schon wieder in maximal 2 Tagen stattfindet.

Der Vollständigkeit halber: Wenn Du kein Ausrufezeichen an den Icons dranhaben willst sondern Zahlen, dann muss in dem alarm-Reading eine Zahl als Wert drin stehen.