Wann muss welche Mülltonne raus? Skript?

Hallo,

ich würde gerne im WF visualisieren, wann welche Mülltonne raus muss.

Leider stellt unser Entsorger keine Termine online zur Verfügung.

Aber dies könnte ich ja per Hand eingeben.

Jede Woche Dienstag Bio
Jeden zweiten Montag Rest
Jeden vierten Mittwoch Papier
Jeden zweiten Mittwoch Plastik

Hat vielleicht jemand ein solches Skript schon am Laufen?

Zum Beispiel so?

<?
$BrauneTonne			= array("23.02.10", "9.03.10", "23.03.10", "6.04.10", "20.04.10", "4.05.10", "18.05.10", "31.05.10", "7.06.10", "15.06.10", "21.06.10", "29.06.10", "5.07.10", "13.07.10", "19.07.10", "27.07.10", "2.08.10", "10.08.10", "16.08.10", "24.08.10", "7.09.10", "21.09.10", "5.10.10", "19.10.10", "2.11.10", "16.11.10", "30.11.10", "14.12.10", "28.12.10");
$TermineMuellTonne 	= array("16.02.10", "2.03.10", "16.03.10", "30.03.10", "13.04.10", "27.04.10", "11.05.10", "26.05.10", "8.06.10", "22.06.10", "6.07.10", "20.07.10", "3.08.10", "17.08.10", "31.08.10", "14.09.10", "28.09.10", "12.10.10", "26.10.10", "9.11.10", "23.11.10", "7.12.10", "31.08.12");
$GelberSack          = array("11.03.10", "9.04.10", "6.05.10", "1.06.10", "1.07.10", "15.07.10", "29.07.10", "12.08.10", "26.08.10", "9.9.10", "23.09.10", "21.10.10", "18.11.10", "16.12.10");
$Alt                 = array("8.03.10", "6.04.10", "4.05.10", "8.06.10", "6.07.10", "3.08.10", "1.09.10", "1.10.10", "5.11.10", "2.12.10");

foreach($TermineMuellTonne as $date)
{
    if(strtotime("20".substr($date, 6, 2)."-".substr($date, 3, 2)."-".substr($date, 0, 2)) >= time())
    {
        SetValueString(CreateVariableByName($IPS_SELF, "Datum Mülltonne", 3), $date);
        break;
    }
}

foreach($BrauneTonne as $date)
{
    if(strtotime("20".substr($date, 6, 2)."-".substr($date, 3, 2)."-".substr($date, 0, 2)) >= time())
    {
        SetValueString(CreateVariableByName($IPS_SELF, "Datum Braune Tonne", 3), $date);
        break;
    }
}

foreach($GelberSack as $date)
{
    if(strtotime("20".substr($date, 6, 2)."-".substr($date, 3, 2)."-".substr($date, 0, 2)) >= time())
    {
        SetValueString(CreateVariableByName($IPS_SELF, "Datum GelberSack", 3), $date);
        break;
    }
}

foreach($Alt as $date)
{
    if(strtotime("20".substr($date, 6, 2)."-".substr($date, 3, 2)."-".substr($date, 0, 2)) >= time())
    {
        SetValueString(CreateVariableByName($IPS_SELF, "Datum Altpapier", 3), $date);
        break;
    }
}

function CreateVariableByName($id, $name, $type)
{
   global $IPS_SELF;
   $vid = @IPS_GetVariableIDByName($name, $id);
   if($vid===false) {
      $vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, $id);
      IPS_SetName($vid, $name);
      IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
   }
   return $vid;
}
?>

Cool Danke Uwe…

Leider bin ich nicht soooooo der PHP und Skripte Pro…

Kannst du mir noch sagen, was dieses Skript macht und welche Variablen ich manuell erstellen muss?

Moin,

ich habe eine solche Lösung mit Google Calendar am laufen. Unser Entsorger stellt eine iCal-Datei zur Verfügung, aber man kann die Termine dort auch händisch als wiederkehrende Termine anlegen. (Durch die ganzen Feiertags-Abweichungen wäre das aber ganz schön nervig)

Mein Skript holt sich die dann von Google die 3 nächsten Einträge und schreibt sie in eine String-Variable (HTMLBox). Zudem gibt es am Tag der Abholung morgens drei TTS-Ansagen, damit das auch nicht vergessen wird :slight_smile:

Bei Interesse kann ich das gerne Veröffentlichen.

Ja bitte veröffentlichen, sehr gerne :slight_smile:

Gugst Du hier.

Ich habe mir jetzt ein System programmiert, dass auf die Auswertung der E-Mail vom Entsorgungsunternehmen funktioniert.
Nach Anmeldung bekommt man einen Tag vor Abholung eine E-Mail in der steht welche Tonne abgeholt wird.
Momentan bin ich noch in der Testphase. Kann den Code aber bei Bedarf auch hier einstellen

Ja, genau sowas macht die RSVG (mein Ver- und Entsorger auch) würde mich also sehr interessieren.

@dpoessl

Eigentlich musst Du nichts machen. Ausser für die jeweilige Tonne das Datum eintragen. Danach auf Ausführen, und wie in meinem Fall werden dann drei Variablen erstellt mit Datum wann es denn abgeholt wird. Dann noch ein Ereignis einmal in der Nacht ausführen lassen.

Und hiermit lass ich mir es dann Ansagen, wann immer Du es willst.

<?

$d=strftime ( '%d.%m.%y %R', time () )+1;
$d=$d.'.14';
echo $d;
if (GetValue(12446 /*[Müll_Termine\Müllterminabfrage\Datum Mülltonne]*/) == $d)
{
	TTS_Speak(46333 /*[Tools\Text To Speech]*/, "Achtung. Für, morgen Mülltonne rausstellen", true);
}


if (GetValue(48345 /*[Müll_Termine\Müllterminabfrage\Datum Braune Tonne]*/ ) == $d)
{
	TTS_Speak(46333 /*[Tools\Text To Speech]*/ , "Achtung. Für morgen, Braune Tonne rausstellen", true);
}

if (GetValue(46222 /*[Müll_Termine\Müllterminabfrage\Datum Altpapier]*/) == $d)
{
	TTS_Speak(46333 /*[Tools\Text To Speech]*/, "Achtung. Für morgen, Altpapier rausstellen", true);
}

if (GetValue(54775 /*[Müll_Termine\Müllterminabfrage\Datum GelberSack]*/) == $d)
{
	TTS_Speak(46333 /*[Tools\Text To Speech]*/, "Achtung. Für morgen, Gelben Sack rausstellen", true);
}
?>


<?
$IdImap =00000; // ID des Imap Postfaches
$IdHeute =00000; // ID einer Textbox für die Tonnen, die am nächsten Tag geleert werden
$IdMorgen =00000; // ID einer Textbox für die Tonnen die heute geleert werden.

// Das Sktipt wird täglich um 6:00 Uhr ausgeführt
// Die E-Mails treffen i.d.r. gegen 2:00 Uhr am Tag vor der abholung ein


// Ab hier ist kein Änderung nötig ggf müssen die Strings in den Funkionen "strpos" geändert werden


$Morgen = GetValue($IdMorgen);
$Emails = (IMAP_GetCachedMails($IdImap));

$Restmuell = false;
$Biomuell = false;
$Altpapier = false;
$Leichtverpackungen = false;

foreach ($Emails as $Email)
{
	if(date("zY",$Email["Date"])==date("zY",time()))
		{
		$EmailData =  IMAP_GetMailEx($IdImap, $Email["UID"]);
		$EmailText = $EmailData["Text"];
		if(strpos($EmailText,"Restabfall")!=False) $Restmuell = true;
		if(strpos($EmailText,"Bioabfall")!=False) $Biomuell = true;
		if(strpos($EmailText,"Altpapier")!=False) $Altpapier = true;
		if(strpos($EmailText,"Leichtverpackungen")!=False) $Leichtverpackungen = true;
		}
}

$MorgenNeu = "";
if($Restmuell) $MorgenNeu= $MorgenNeu . "Restmüll"."
";
if($Biomuell) $MorgenNeu= $MorgenNeu . "Biomüll"."
";
if($Altpapier) $MorgenNeu= $MorgenNeu . "Altpapier"."
";
if($Leichtverpackungen) $MorgenNeu= $MorgenNeu . "Leichtverpackungen"."
";
SetValue($IdHeute,$Morgen);
SetValue($IdMorgen,$MorgenNeu);
?>