Müllabfuhr: eMail auslesen ?

Moin, ich bekomme in Hamburg jeden Tag vor der Abholung einer unser vier Mülltonnen eine eMail, in der steht welche Mülltonne wann abgeholt wird.

Ich habe hier schonmal nach einem passenden Skript gesucht, das einzige passige was ich gefunden habe war aber noch aus IPS 1.0 …

Gibt es ein schönes Tool mit dem ich z.B. meinen GMX Account nach einer eMail eines bestimmten Versenders durchforsten kann, Text und Betreff auslese und darauf hin eine Schaltung vornehme ?

Hat jemand sowas im Einsatz ?

Paresy hatte hier mal etwas gepostet womit man IPS-Befehle per Email anstossen kann. Vielleicht wäre das ein Denkanstoss: Klick

Hab genau das im Einsatz; kann ich heut abend posten.

Super, da bin ich gespannt ! :slight_smile:

Moin,

das ja spannend - vielen Dank für den Hinweis. :slight_smile:

@dfhome: konntest Du das Skript noch finden ? :o

Hab um 21:00 meine Kleine ins Bett gebracht und bin mit eingeschlafen… :smiley:
Kommt heute nachmittag. :slight_smile:

Sodele:


<?
if (GetValue(10328 /*[Konfiguration\Skripte\Trigger_minütlich\Status_LAN\Status\WAN]*/)) {
	$mbox = IMAP_GetCachedMails(30618 /*[Konfiguration\Email\Email]*/);
	for ($i = 0; $i < count($mbox); $i++) {
		$subject = $mbox[$i]['Subject'];
		if (preg_match('/Abfallwirtschaftsamts/', $subject) == true) {
		   $mail = IMAP_GetMailEx(30618 /*[Konfiguration\Email\Email Dirk]*/, $mbox[$i]['UID']);
			$text = $mail['Text'];
			if (preg_match('/Biomüll/', $text) == true) {
				$posi = strpos($text, 'Biomüll');
	         $date = substr($text, $posi-13, 10);
			   SetValue(38647 /*[Konfiguration\Müllabfuhrtermine\Biotonne\Datum]*/, $date);
			   IPS_SetVariableProfileAssociation("Biotonne", 1, $date, "ArrowRight", 0xA02000);
			   SetValue(54668 /*[Konfiguration\Müllabfuhrtermine\Biotonne]*/, true);
			   IPS_SetEventCyclic(20122 /*[Konfiguration\Müllabfuhrtermine\Biotonne\Zurücksetzen\]*/, 1, 0, 0, 0, 0, 0);
			   IPS_SetEventCyclicDateBounds(20122 /*[Konfiguration\Müllabfuhrtermine\Biotonne\Zurücksetzen\]*/, strtotime($date), strtotime($date));
			   IPS_SetEventCyclicTimeBounds(20122 /*[Konfiguration\Müllabfuhrtermine\Biotonne\Zurücksetzen\]*/, mktime("5","0","0"), mktime("5","0","0"));
				IPS_SetEventActive(20122 /*[Konfiguration\Müllabfuhrtermine\Biotonne\Zurücksetzen\]*/, true);
				$imap = imap_open("{server}", "email", "passwort");
				$retval = imap_search($imap, 'SUBJECT "Abfallwirtschaftsamts"');
				if ($retval != false) {
					imap_delete($imap, $retval[0]);
					imap_expunge($imap);
					imap_close($imap);
				}
			}
		}
	}
}
?>

Ich hab zusätzlich die imap-Extension eingebunden, damit ich die Mail automatisch nach dem Auslesen löschen kann.
Ich lese auch aus, wann der Termin ist und zeig mir das im WF an (per Boolean-Variable).
Bei Fragen einfach melden.

Gruß
dfhome

Hier noch die Zuordnung zu den entsprechenden ID´s.

Das „Zurücksetzen“-Ereignis triggert ein Skript, welches mich an dem Abholtag morgends nochmal per Prowl an die Mülltonne erinnert. Danach setzt es sich selber noch mal einen Timer, damit die Info am Abholtag um 12:00 zurückgesetzt wird.
Das Skript kann ich bei Bedarf auch noch posten.

Danke schon einmal, konnte schon einiges übernehmen und anpassen !

Ich weiß nicht warum, aber mir schmeisst das Skript noch eine Fehler meldung aus :

Warning: Unsupported ContentType: in [**Programme\Müllabfuhr\Abfuhrtermine] on line 8

  $mail = IMAP_GetMailEx(27007 /*[**Programme\E-Mail empfangen (IMAP) GMX]*/, $mbox[$i]['UID']);

Hiermit scheint er nicht klar zu kommen, ne Idee ?
Desweiteren schreibt er mir in die Boolean Variable leider nicht deine „>2 Tage“ ansicht, sondern nur das Datum mit „Tage“ dahinter…

Kannst Du dein „Zurücksetzen Skript“ noch einmal posten ?

Und hast du für jede Mülltonne ein einzelnes Abfrageskript oder löst Du alles in einem großen Skript ?

Hmm, was das für ein Fehler ist, kA… paresy?
Ich hab für alle Mülltonnen (Bio, Restmüll, Gelber Sack) alles in dem obigen Skript drin. Das läuft alle 2H.
Das Skript für´s Zurücksetzen kann ich heut abend posten.
Bzgl. der Anzeige: ich schreib ja in das Variablenprofil beim „True“-Wert das Datum rein, das Zurücksetzenskript setzt die Boolean-Variable auf False, so dass darüber die „> 2 Tage“ angezeigt werden (siehe Screenshot).

Gruß
Dirk

php_imap.dll installiert ?

Oder vielleicht das gleiche Problem wie bei mir

Hab ich auch bei der 2.7 als Fehler gemeldet, leider keine Reaktion von paresy

Mit pop3 geht es

Desweiteren schreibt er mir in die Boolean Variable leider nicht deine „>2 Tage“ ansicht, sondern nur das Datum mit „Tage“ dahinter…

Mische mich hier mal ein :wink:

Hab damals eine ausführlichere Install-Anleitung von Dirk bekommen:

  • 3 Boolean-Variablen anlegen für Restmüll, Biotonne und Gelber Sack
  • Unter jede Variable noch eine Variable „Datum“ (String) sowie ein Skript „Zurücksetzen“
  • Für jedes Skript einen Timer anlegen
  • 3 Variablenprofile anlegen (analog Müllart oben)
  • Assoziation: False : „> 2 Tage“, True egal, da es durch das Skript gesetzt wird
  • Icon: False: „Script“, True wird wieder durch das Skript gesetzt
  • ID´s anpassen (Variablen, Timer, IPS IMAP-Postfach)

Kannst Du dein „Zurücksetzen Skript“ noch einmal posten ?

<?			
SetValue(12345 /*[Übersicht\Abfuhrtermine\Biotonne]*/, false);
IPS_SetEventActive(12345 /*[Übersicht\Abfuhrtermine\Biotonne\Zurücksetzen\]*/, false);
?>

Gruß
Bruno

habe die php_imap.dll nicht, kann ich die irgendwo saugen ?

Korrektur. Ist im „ext“ Verzeichnis…

So, habe es hinbekommen. Lag bei meinen vielen Tests an der noch nicht wieder aktualisierten Mail Abfrage durch das IMAP Modul.

Hast du dann in einem Skript 3 mal den Code für die jeweiligen Mülltonnen untereinander geklatscht ? Oder wie gelöst ?

Ja, einfach hintereinander hängen.
Zum Zurücksetzen-Skript: durch die (für meine Frau notwendige) Erinnerung per Prowl am Abholtag sieht mein Skript mittlerweile so aus:


<?
include('ProwlPHP.php');

if ($_IPS['SENDER'] != "WebFront") {
	if (date("H", time()) == "05") {
	   $date = date("d.m.Y");
	   // Dirk
		$prowl = new Prowl('xxx');
		$prowl->push(array('application'=>'Information', 'event'=>utf8_encode('Müllabfuhrtermin'), 'description'=>utf8_encode('Heute Abfuhrtermin für Restmüll.'), 'priority'=>0), true);
		// Caro
		$prowl = new Prowl('xxx');
		$prowl->push(array('application'=>'Information', 'event'=>utf8_encode('Müllabfuhrtermin'), 'description'=>utf8_encode('Heute Abfuhrtermin für Restmüll.'), 'priority'=>0), true);
	   IPS_SetEventCyclic(29132 /*[Konfiguration\Müllabfuhrtermine\Restmüll\Zurücksetzen\]*/, 1, 0, 0, 0, 0, 0);
	   IPS_SetEventCyclicDateBounds(29132 /*[Konfiguration\Müllabfuhrtermine\Restmüll\Zurücksetzen\]*/, strtotime($date), strtotime($date));
	   IPS_SetEventCyclicTimeBounds(29132 /*[Konfiguration\Müllabfuhrtermine\Restmüll\Zurücksetzen\]*/, mktime("12","0","0"), mktime("12","0","0"));
		IPS_SetEventActive(29132 /*[Konfiguration\Müllabfuhrtermine\Restmüll\Zurücksetzen\]*/, true);
	} else {
		SetValue(19491 /*[Konfiguration\Müllabfuhrtermine\Restmüll]*/, false);
		IPS_SetEventActive(29132 /*[Konfiguration\Müllabfuhrtermine\Restmüll\Zurücksetzen\]*/, false);
	}
}
?>

Das obige Skript ist das vom Restmüll; die anderen sind entsprechend anzupassen.
Durch die Push-Erinnerung seh ich morgends halt nochmal, bevor ich aus dem Haus geh und nicht auf den Touch geschaut hab, dass die Tonne raus muss. Ganz praktisch.

Gruß
dfhome

Ja habs auch mit iOS Push und einer GIRA RGB LED an der Haustür gekoppelt, die die Farbe der Mülltonne morgens und abends anzeigt.

Hallo,

vielen Dank fürs Bereitstellen des Skriptes. Ich habe gerade eine php_imap.dll in ext eingebunden und auch in php.ini. Allerdings kommt jetzt die Meldung, call to undefined function imap_open(). Das gleiche gilt für alle anderen imap Funktionen. Ich habe die Version von php 5.5.7. Kann es daran liegen? Computer oder IPS Dienst Neustart haben nichts geholfen.

Viele Grüße
Robert

Wunderschönen guten Morgen (:

Ziehe mitte des Jahres um und muss ab dann auch die Mülltonnen rausstellen.

Hast du das script noch im Einsatz? Ist ja jetzt nicht gerade gestern das das Thema aktuell war.

Vielleicht hättest du die musse es noch einmal im ganzen hier rein zu stellen?

Grüße