Seite 1 von 4
Müllkalender - Nächste Abholung
Verfasst: 28. Sep 2021 11:59
von DavGre
Hallo,
ich habe die folgenden Items:
Code: Alles auswählen
DateTime Abfall_Termin_Bio "Biotonne"
DateTime Abfall_Termin_Papier "Papiertonne"
... und so weiter
Darüber lasse ich mir das Abholdatum der jeweiligen Mülltonnen anzeigen. Klappt soweit auch alles wunderbar.
Jetzt würde ich gerne ein weiteres Item ("Nächste Abholung"), dass mir in der Sitemap anzeigt, was für eine Tonne als nächstes abgeholt wird.
Das sollte ja über ein ganz normales String-Item möglich sein. Nur habe ich keinen blassen Schimmer, wie ich das Beschreiben des String-Items in einer Regel formulieren soll.
Im Prinzip benötige ich ja nur eine Regel, die um Mitternacht die verschiedenen DateTime-Items (Biotonne, Papiertonne etc.) auswertet und das String-Item mit dem entsprechenden Wert beschreibt, der dem aktuellen Datum am nächsten ist.
Code: Alles auswählen
rule "Nächste Abholung"
when
Time cron "0 0 0 1/1 * ? *"
then
... ??? ...
end
Kann mir jemand auf die Sprünge helfen?
Re: Müllkalender - Nächste Abholung
Verfasst: 28. Sep 2021 14:21
von int5749
DavGre hat geschrieben: ↑28. Sep 2021 11:59
Kann mir jemand auf die Sprünge helfen?
Ich kann Dir zumindest kurz schreiben, wie ich die gelöst habe. Wobei ich nur die Tage auswerte wann was abgeholt wird und dies wird dann angezeigt.
Um dies auf Deine beiden Müllarten zu beschränken, musst Du dies evtl. etwas anpassen
Abfallkalender heute
Code: Alles auswählen
rule "Abfallkalender heute"
when
Item ABFALL_ICAL_heute changed
then
//Prüfen ob heute Abfall abgeholt wird
if (ABFALL_ICAL_heute.state != "false" && ABFALL_ICAL_heute.state != "Uninitialized"){
postUpdate(ABFALL_AKTIV_heute,ON)
postUpdate(ABFALL_NAME_heute,ABFALL_ICAL_heute.state)
} else {
postUpdate(ABFALL_AKTIV_heute,OFF)
postUpdate(ABFALL_NAME_heute,"false")
}
end
Abfallkalender morgen
Code: Alles auswählen
rule "Abfallkalender morgen"
when
Item ABFALL_ICAL_morgen changed
then
//Prüfen ob morgen Abfall abgeholt wird
if (ABFALL_ICAL_morgen.state != "false" && ABFALL_ICAL_morgen.state != "Uninitialized"){
postUpdate(ABFALL_AKTIV_morgen,ON)
postUpdate(ABFALL_NAME_morgen,ABFALL_ICAL_morgen.state)
} else {
postUpdate(ABFALL_AKTIV_morgen,OFF)
postUpdate(ABFALL_NAME_morgen,"false")
}
end
Dann lasse ich mich noch entsprechend erinnern, einmal am Vorabend und Morgens noch einmal
Code: Alles auswählen
rule "Abfallerinnerung heute"
when
Time cron "0 45 06 ? * * *"
then
val actions = getActions("pushover", "pushover:pushover-account:account")
if (ABFALL_AKTIV_heute.state == ON){
ABFALL_NAME_heute.state)
actions.sendMessageToDevice("iPhone", "An den " + ABFALL_NAME_heute.state + " denken.", "Notification")
}
end
rule "Abfallerinnerung morgen"
when
Time cron "0 30 18 ? * * *"
then
val actions = getActions("pushover", "pushover:pushover-account:account")
if (ABFALL_AKTIV_morgen.state == ON){
ABFALL_NAME_morgen.state)
actions.sendMessageToDevice("iPhone", "Morgen den " + ABFALL_NAME_morgen.state + " rausstellen.", "Notification")
}
end
Meine Items
Code: Alles auswählen
//Abfallkalender
// Nächste Abholung
String ABF1_NAME "Nächste Abholung [%s]" (gWasteCollection) ["Point"] {channel="http:url:abfallkalender:cABF1_NAME"}
DateTime ABF1_DATE "Termin: [%1$ta, %1$td.%1$tm.%1$ty]" (gWasteCollection) ["Point", "Timestamp"] {channel="http:url:abfallkalender:cABF1_DATE"}
//Abfall heute
String ABFALL_ICAL_heute {channel="http:url:abfallkalender:cABFALL_ICAL_heute"}
Switch ABFALL_AKTIV_heute
String ABFALL_NAME_heute
//Abfall morgen
String ABFALL_ICAL_morgen {channel="http:url:abfallkalender:cABFALL_ICAL_morgen"}
Switch ABFALL_AKTIV_morgen
String ABFALL_NAME_morgen
Das Thing, den ics link bekommst Du in der Regel auf der Umwelt Webmedia oder einer Seite Deiner Stadt.
Code: Alles auswählen
/* HTTP Binding */
Bridge http:url:abfallkalender "Abfallkalender" @ "Internet" [
baseURL="https://www.umwelt-webmedia.de/caldownload/f8d00c76fegegegeerherhrhrh59.ics",
refresh=360,
ignoreSSLErrors=false,
commandMethod="GET",
timeout=3000,
bufferSize=2048
] {
Channels:
Type string : cABF1_NAME "Nächste Abholung" [ stateTransformation="JS:abfall_naechste_abholung_name.js", mode="READONLY"]
Type datetime : cABF1_DATE "Datum nächste Abholung" [ stateTransformation="JS:abfall_naechste_abholung_datum.js", mode="READONLY"]
Type string : cABFALL_ICAL_heute "Abholung heute" [ stateTransformation="JS:abfall_heute.js", mode="READONLY"]
Type string : cABFALL_ICAL_morgen "Abholung morgen" [ stateTransformation="JS:abfall_morgen.js", mode="READONLY"]
}
Und die notwendigen Transform Files =>
transform.zip
Re: Müllkalender - Nächste Abholung
Verfasst: 8. Feb 2022 17:52
von magarethe
Hallo Leute,
Ich möchte jetzt auch keinen neuen Müllkalender Eintrag aufmachen. Aber der iCal Kalender unter Oh2.5 lief ja hervorragend. Also es wurde ja angezeigt wann der nächste Abholtermin war und welche Tonnen abgeholt wurden. Alles aus einer ics Datei!
Jetzt nach dem Update auf OH3 kriege ich gar kein Abfallkalender mehr hin. Hat jemand schon einen Abfallkalender unter OH3 realisiert, der wieder auf ein ics basiert, und dann die Termine anzeigt und mit welche Art Tonnen abholt. Bei mir hier z.Bsp: Restabfalltonne, Wertstofftonne und Umweltmobil
Ich kriege es einfach nicht gebacken.
Grüße Magarethe
Re: Müllkalender - Nächste Abholung
Verfasst: 2. Jun 2022 20:50
von maffi91
Hi,
auch wenn der Beitrag schon ein paar Tage alt ist, hier habe ich eine Lösung:
iCalendar-Binding installieren und dann eine things Datei erstellen mit:
Code: Alles auswählen
Bridge icalendar:calendar:abfallkalender "Abfallkalender" @ "RPI4" [ url="http://xx:8080/static/Leerungstermine580443.ics", refreshTime=360 ]
Thing icalendar:eventfilter:ma202205ab "Abfall morgen" (icalendar:calendar:abfallkalender) [ maxEvents=1, datetimeUnit="DAY", datetimeStart=1, datetimeEnd=2, datetimeRound=true ]
Die items erstellen:
Code: Alles auswählen
String ABFALL_heute_name "Abholung heute: [%s]" <calendar> { channel="icalendar:calendar:abfallkalender:current_title" }
String ABFALL_alsnaechstes_name "Abholung als naechstes [%s]" <calendar> { channel="icalendar:calendar:abfallkalender:next_title" }
DateTime ABFALL_alsnaechstes_datum "Abholung am [%1$tT, %1$tY-%1$tm-%1$td]" <calendar> { channel="icalendar:calendar:ma202205ab:next_start" }
String ABFALL_morgen_name "Abholung morgen: [%s]" <calendar> { channel="icalendar:eventfilter:ma202205ab:result_0#title" }
und die Rules:
Code: Alles auswählen
rule "Abfallkalender"
when
Item ABFALL_morgen_name changed
then
if (ABFALL_morgen_name.state != UNDEF) {
sendNotification("xx@xx.de", "Morgen wird folgender Müll abgeholt: " + ABFALL_morgen_name.state)
}
end
Wenn fragen sind, einfach fragen ..
Hab das hier auch auf meinem Blog publiziert:
https://www.maffert.net/openhab-3-abfal ... nd-morgen/
Re: Müllkalender - Nächste Abholung
Verfasst: 3. Jun 2022 16:41
von djuscha
@maffi91 Wo speicherst du den geladenen Kalender ab?
Re: Müllkalender - Nächste Abholung
Verfasst: 3. Jun 2022 23:52
von maffi91
Hi,
habe mir die Datei direkt auf meiner openHAB Installation gelegt, unter dem Ordner: /etc/openhab/html
Dort kann man dann wie folgt die Datei abrufen:
http://IPoderHOSTNAME:8080/static/Leeru ... 609848.ics
Kannst die Datei aber auch auf jeden anderen Webspace hochladen, nur so bleibt alles im Haus

Re: Müllkalender - Nächste Abholung
Verfasst: 4. Jun 2022 12:45
von udo1toni
Der Punkt ist hier, das Binding liest ja nur eine *.ics Datei. Es ist also vollkommen unabhängig von einem "echten" Kalender. Natürlich muss man die *.ics Datei auch irgendwie füllen, aber gerade bei importierten Kalendern wie z.B. Müllabfuhr hat man ja ohnehin eine *.ics Datei.
Sehr elegant!
Re: Müllkalender - Nächste Abholung
Verfasst: 6. Jun 2022 12:54
von djuscha
@maffi91 und die Nachricht kommt dann um 12 uhr Nachts ?
Re: Müllkalender - Nächste Abholung
Verfasst: 6. Jun 2022 13:13
von int5749
djuscha hat geschrieben: ↑6. Jun 2022 12:54
@maffi91 und die Nachricht kommt dann um 12 uhr Nachts ?
In diesem Fall eben wenn das Item
ABFALL_morgen_name sich ändert und dies wird alle 360 Min abgefragt.
Aber Du kannst natürlich auch eine timecron Abfrage machen und Dich entsprechend erinnern lassen.
Re: Müllkalender - Nächste Abholung
Verfasst: 6. Jun 2022 14:38
von maffi91
Genau, hab einfach einen Timer erstellt der uns dann um 11 Uhr jeweils erinnert
createTimer(now.plusHours(11)) [|
sendNotification("E-MailAdresse", "Morgen wird folgender Müll abgeholt: " + ABFALL_morgen_name.state)
]