Müllkalender - Nächste Abholung

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

DavGre
Beiträge: 84
Registriert: 11. Mär 2019 15:47

Müllkalender - Nächste Abholung

Beitrag 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?

int5749
Beiträge: 1161
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Müllkalender - Nächste Abholung

Beitrag 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
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

magarethe
Beiträge: 45
Registriert: 18. Dez 2019 22:16

Re: Müllkalender - Nächste Abholung

Beitrag 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

maffi91
Beiträge: 3
Registriert: 2. Jun 2022 20:45

Re: Müllkalender - Nächste Abholung

Beitrag 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/

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12

Re: Müllkalender - Nächste Abholung

Beitrag von djuscha »

@maffi91 Wo speicherst du den geladenen Kalender ab?

maffi91
Beiträge: 3
Registriert: 2. Jun 2022 20:45

Re: Müllkalender - Nächste Abholung

Beitrag 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 ;)

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Müllkalender - Nächste Abholung

Beitrag 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!
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12

Re: Müllkalender - Nächste Abholung

Beitrag von djuscha »

@maffi91 und die Nachricht kommt dann um 12 uhr Nachts ?

int5749
Beiträge: 1161
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Müllkalender - Nächste Abholung

Beitrag 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.
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

maffi91
Beiträge: 3
Registriert: 2. Jun 2022 20:45

Re: Müllkalender - Nächste Abholung

Beitrag 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)
]

Antworten