+ Antworten
Seite 1 von 4 1 2 3 ... LetzteLetzte
Ergebnis 1 bis 10 von 32
  1. #1
    Registriert seit
    Mar 2015
    Beiträge
    92

    Standard Müll-Reminder: Bring den Müll raus!

    Hallo,

    damit ich das lästige "Müllen gehen!" nicht mehr vergesse, habe ich hier einen kleinen Müll-Reminder.

    Was macht er:

    1. Prüft jeden Abend um 19:00 ob am nächsten morgen der Müll abgeholt wird und schickt entsprechend eine PUSH-Nachricht an eingerichtete Handys.

    2. Speichert in einer Stringvariable die nächste Leerung in folgendem Format: "Nächste Leerung am Freitag morgen: Restmüll und Plastik"

    Wie wird's eingerichtet:

    Das Ganze ist ne quick and dirty Lösung, also bitte keine Beanstandungen an die architecture stellen :-)

    1. Das unten stehende Skript per copy&paste in Symcon einfügen.

    2. Irgendwo eine Stringvariable erstellen. Bei mir heisst die "Nächste Abholung" und ist unter dem Müll-Reminderskript abgelegt.

    3. Instanz-ID der Stringvariable oben im Skript anpassen. Webfront ID anpassen.

    4. Die Datumsangaben aus eurem städtischen Müllkalender in die Arrays (Biomüll, Restmüll, Plastik, Glas) einfügen.

    5. Symcon Push-Notifications einrichten (Notification Control — IP-Symcon :: Automatisierungssoftware)

    6. Skript testen (siehe Debug Meldungen als Skriptausgabe)

    7. fertig.

    PHP-Code:

    <?

        setlocale
    (LC_TIME"de_DE");
        
    //Einfache String-Variable, speichert Text wie diesen: "Nächste Leerung am Freitag morgen: Restmüll und Plastik"
        
    $naechste_Abholung_Variable 54518 /*[System\Skripte\Abfallkalender\Nächste Abholung]*/;
        
    $webfront_id 16219 /*[Webfront]*/;

        
    $bio =
        [
            new 
    DateTime("2016-01-07"),
            new 
    DateTime("2016-01-21"),
            new 
    DateTime("2016-02-04"),
            new 
    DateTime("2016-02-18"),
            new 
    DateTime("2016-03-03"),
            new 
    DateTime("2016-03-17"),
            new 
    DateTime("2016-04-01"),
            new 
    DateTime("2016-04-14"),
            new 
    DateTime("2016-04-28"),
            new 
    DateTime("2016-05-12"),
            new 
    DateTime("2016-05-27"),
            new 
    DateTime("2016-06-09"),
            new 
    DateTime("2016-06-23"),
            new 
    DateTime("2016-07-07"),
            new 
    DateTime("2016-07-14"),
            new 
    DateTime("2016-07-21"),
            new 
    DateTime("2016-07-28"),
            new 
    DateTime("2016-08-04"),
            new 
    DateTime("2016-08-11"),
            new 
    DateTime("2016-08-18"),
            new 
    DateTime("2016-08-25"),
            new 
    DateTime("2016-09-01"),
            new 
    DateTime("2016-09-15"),
            new 
    DateTime("2016-09-29"),
            new 
    DateTime("2016-10-13"),
            new 
    DateTime("2016-10-27"),
            new 
    DateTime("2016-11-10"),
            new 
    DateTime("2016-11-24"),
            new 
    DateTime("2016-12-08"),
            new 
    DateTime("2016-12-22")
    ]    ;

        
    $papier_glas =
        [
            new 
    DateTime("2016-01-07"),
            new 
    DateTime("2016-01-21"),
            new 
    DateTime("2016-02-04"),
            new 
    DateTime("2016-02-18"),
            new 
    DateTime("2016-03-03"),
            new 
    DateTime("2016-03-17"),
            new 
    DateTime("2016-04-01"),
            new 
    DateTime("2016-04-14"),
            new 
    DateTime("2016-04-28"),
            new 
    DateTime("2016-05-12"),
            new 
    DateTime("2016-05-27"),
            new 
    DateTime("2016-06-09"),
            new 
    DateTime("2016-06-23"),
            new 
    DateTime("2016-07-07"),
            new 
    DateTime("2016-07-21"),
            new 
    DateTime("2016-08-04"),
            new 
    DateTime("2016-08-18"),
            new 
    DateTime("2016-09-01"),
            new 
    DateTime("2016-09-15"),
            new 
    DateTime("2016-09-29"),
            new 
    DateTime("2016-10-13"),
            new 
    DateTime("2016-10-27"),
            new 
    DateTime("2016-11-10"),
            new 
    DateTime("2016-11-24"),
            new 
    DateTime("2016-12-08"),
            new 
    DateTime("2016-12-22")
        ];

        
    $rest_lvp =
        [
            new 
    DateTime("2016-01-14"),
            new 
    DateTime("2016-01-28"),
            new 
    DateTime("2016-02-11"),
            new 
    DateTime("2016-02-25"),
            new 
    DateTime("2016-03-10"),
            new 
    DateTime("2016-03-24"),
            new 
    DateTime("2016-04-07"),
            new 
    DateTime("2016-04-21"),
            new 
    DateTime("2016-05-06"),
            new 
    DateTime("2016-05-20"),
            new 
    DateTime("2016-06-02"),
            new 
    DateTime("2016-06-16"),
            new 
    DateTime("2016-06-30"),
            new 
    DateTime("2016-07-14"),
            new 
    DateTime("2016-07-28"),
            new 
    DateTime("2016-08-11"),
            new 
    DateTime("2016-08-25"),
            new 
    DateTime("2016-09-08"),
            new 
    DateTime("2016-09-22"),
            new 
    DateTime("2016-10-07"),
            new 
    DateTime("2016-10-20"),
            new 
    DateTime("2016-11-04"),
            new 
    DateTime("2016-11-17"),
            new 
    DateTime("2016-12-01"),
            new 
    DateTime("2016-12-15"),
            new 
    DateTime("2016-12-30")
        ];

        
    $today = new DateTime();

        
    $next_bio "";
        
    $next_papier_glas "";
        
    $next_rest_lvp "";
        
    $i=-1;
        foreach (
    $bio as &$d) {
            
    $i++;
              
    // loop through values
            
    $diff $today->diff($d);
            if((int)
    $diff->format("%r%a") >= 0){
                
    $next_bio $bio[$i];
                break;
            }
            
        }

        
    $i=-1;
        foreach (
    $papier_glas as &$d) {
            
    $i++;
              
    // loop through values
            
    $diff $today->diff($d);
            if((int)
    $diff->format("%r%a") >= 0){
                
    $next_papier_glas $papier_glas[$i];
                break;
            }
        }

        
    $i=-1;
        foreach (
    $rest_lvp as &$d) {
           
    $i++;
              
    // loop through values
            
    $diff $today->diff($d);
            if((int)
    $diff->format("%r%a") >= 0){
                
    $next_rest_lvp $rest_lvp[$i];
                break;
            }
        }

        
    $diff_bio $today->diff($next_biofalse);
        
    $diff_papier_glas $today->diff($next_papier_glasfalse);
        
    $diff_rest_lvp $today->diff($next_rest_lvpfalse);
        
        
    $diff_bio_in_tagen = (int)$diff_bio->format("%r%a");
        
    $diff_papier_glas_in_tagen = (int)$diff_papier_glas->format("%r%a");
        
    $diff_rest_lvp_in_tagen = (int)$diff_rest_lvp->format("%r%a");

       
    $wasJunkDayToday false;
       if(
    $next_bio->format('Y-m-d') == $today->format('Y-m-d')) $wasJunkDayToday true;
       if(
    $next_papier_glas->format('Y-m-d') == $today->format('Y-m-d')) $wasJunkDayToday true;
       if(
    $next_rest_lvp->format('Y-m-d') == $today->format('Y-m-d')) $wasJunkDayToday true;
        
        echo 
    "Today is " $today->format("y-m-d") ."\n";
        echo 
    "Next Bio in "$diff_bio_in_tagen ."\n";
        echo 
    "Next Papier/Glas in "$diff_papier_glas_in_tagen ."\n";
        echo 
    "Next Rest/LVP in "$diff_rest_lvp_in_tagen ."\n";
        echo 
    "Was junk day today (this morning): " . ($wasJunkDayToday "yes\n" "no\n");


        
    //kleinstes Datum ist nächste Leerung
        
    $next_leerung_in_tagen min($diff_bio_in_tagen$diff_papier_glas_in_tagen$diff_rest_lvp_in_tagen);
        if(
    $next_leerung_in_tagen == 0){
           
    $txt_leerung_tage 7;
        }
        
        echo 
    "next = " .$next_leerung_in_tagen ."\n";

        
    $result "Error";
        if(
    $next_leerung_in_tagen == $diff_bio_in_tagen){
            
    //nächste Leerung ist Biomüll
            
    $result "Nächste Leerung am "strftime("%A"$next_bio->getTimestamp()) . " morgen: Biomüll";
            if(
    $next_leerung_in_tagen == $diff_papier_glas_in_tagen){
               
    $result .= " und Papier- und Glasmüll";
            }
            if(
    $next_leerung_in_tagen == $diff_rest_lvp_in_tagen){
               
    $result .= " und Restmüll und Plastik";
            }
        }else    if(
    $next_leerung_in_tagen == $diff_rest_lvp_in_tagen){
           
    //nächste Leerung ist Restmüll
            
    $result "Nächste Leerung am " strftime("%A"$next_rest_lvp->getTimestamp()) . " morgen: Restmüll und Plastik";
            if(
    $next_leerung_in_tagen == $diff_papier_glas_in_tagen){
               
    $result .= " und Papier- und Glasmüll";
            }
        }else    if(
    $next_leerung_in_tagen == $diff_rest_lvp_in_tagen){
            
    //nächste Leerung ist Papier und Glas
            
    $result "Nächste Leerung am "strftime("%A"$next_papier_glas->getTimestamp()) . " morgen: Papier- und Glasmüll";
        }
        
        
    SetValue($naechste_Abholung_Variable$result);
        
        if(
    $next_leerung_in_tagen == 0){
           
    //push notification
           
    $notification "Müll Skript fehlerhaft";
            if(
    $next_leerung_in_tagen == $diff_bio_in_tagen){
                
    //nächste Leerung ist Biomüll
                
    $notification "Biomüll";
                if(
    $next_leerung_in_tagen == $diff_papier_glas_in_tagen){
                   
    $notification .= " und Papier- und Glasmüll";
                }
                if(
    $next_leerung_in_tagen == $diff_rest_lvp_in_tagen){
                   
    $notification .= " und Restmüll und Plastik";
                }
            }else    if(
    $next_leerung_in_tagen == $diff_rest_lvp_in_tagen){
               
    //nächste Leerung ist Restmüll
                
    $notification "Restmüll und Plastik";
                if(
    $next_leerung_in_tagen == $diff_papier_glas_in_tagen){
                   
    $notification .= " und Papier- und Glasmüll";
                }
            }else    if(
    $next_leerung_in_tagen == $diff_rest_lvp_in_tagen){
                
    //nächste Leerung ist Papier und Glas
                
    $notification "Papier- und Glasmüll";
            }
            
    //Meldung nur abschicken, wenn Leerung "morgen" stattfindet. "Heute um 19:00" ist zu spät, denn es wird immer morgens geleert.
            
    if($wasJunkDayToday == false){
                
    WFC_PushNotification($webfront_id'Müllen gehen!''Morgen wird '$notification " geleert."'trickling'0);
            }
        }
    ?>

  2. #2
    Registriert seit
    May 2006
    Ort
    Hannover
    Beiträge
    2,982

    Wenn du nicht alle Termine einzeln pflegen möchtest und sie regelmäßig an festen Tagen in einer geraden/ungeraden Woche sind, dann kannst du z.B. mein Beispiel zur Optimierung nutzen .
    MfG Ralf

  3. #3
    Registriert seit
    Mar 2015
    Beiträge
    92

    Zitat Zitat von ralf Beitrag anzeigen
    Wenn du nicht alle Termine einzeln pflegen möchtest und sie regelmäßig an festen Tagen in einer geraden/ungeraden Woche sind, dann kannst du z.B. mein Beispiel zur Optimierung nutzen .
    Hallo ralf,

    danke für den Hinweis. Daran habe ich auch schon gedacht. Aber leider ist der Müllplan bei uns nicht so simpel. Bei Wochen mit Feiertagen kommt es beispielsweise zu Verschiebungen. Und die sind nicht immer gleich. Manchmal vor den Feiertag, manchmal danach, etc.

    Deshalb habe ich alles einzeln eingegeben. Geht eigentlich auch in 5 Minuten und das muss man ja zum Glück auch nur einmal im Jahr machen

  4. #4
    Registriert seit
    May 2006
    Ort
    Hannover
    Beiträge
    2,982

    Zitat Zitat von mesa Beitrag anzeigen
    Bei Wochen mit Feiertagen kommt es beispielsweise zu Verschiebungen. Und die sind nicht immer gleich. Manchmal vor den Feiertag, manchmal danach, etc.
    Einen Tag Verschiebung nach hinten habe ich mit drin, aber wenn die Verschiebung unterschiedlich ist, dann kann man das nur schwer abfangen.
    MfG Ralf

  5. #5
    Registriert seit
    Dec 2013
    Ort
    Zörbig
    Beiträge
    28

    Standard Mülldaten aus email in IPS

    Hallo ich bekomme folgende mail von meinem Entsorger zugesandt.
    Sehr geehrte(r) Nutzer(in) des ABIKW-Online-Abfallkalenders,

    Ihr/-e nächster/-en Abfuhrtermin/-e ist/sind
    für die von Ihnen getroffene Ortsauswahl...
    Ortsteil, Stadt, Landkreis:

    Mo, 23.05.2016: Restabfalltonne

    Weitere Informationen zur Abfallentsorgung im Landkreis Anhalt-Bitterfeld
    über Abfallwirtschaft im Landkreis Anhalt-Bitterfeld und Startseite.

    Das würde ich gern irgendwie grafisch einbauen. Hat wer ne Idee?

  6. #6
    Registriert seit
    Jan 2016
    Ort
    Lüneburg
    Beiträge
    162

    Hallo zusammen,

    vielen Dank erst einmal für das geniale Script. Ich habe schon immer mal daran gedacht sowas umzusetzen und nun kann ich es einfach "kopieren"

    Ich habe leider noch das Problem, dass er mit die Tage (Montag, Dienstag, Mittwoch...) in der String Variable in Englisch ausgibt (Monday, Tuesday, Wednesday.....). Das Windowssystem ist Deutsch und IPS ist ebenfalls auf Deutsch installiert. Irgendwas in der php.ini? Jemand eine Idee?

    ****EDIT****

    du hast als erste Zeile "setlocale". Ich meine mich zu erinnern, dass dies nicht mehr mit IPS 4 geht und nicht übernommen wird, oder verwechsel ich da etwas komplett?

    *******EDIT und LÖSUNG*******

    musste bei mir "setlocale(LC_TIME, "deu_deu");" setzen und dann gehts...warum das so geht kann ich aber leider nicht sagen
    Geändert von lahlor (24.05.16 um 14:38 Uhr)
    Gruß
    Lars

  7. #7
    Registriert seit
    Mar 2015
    Beiträge
    92

    Zitat Zitat von lahlor Beitrag anzeigen
    Das Windowssystem ist Deutsch und IPS ist ebenfalls auf Deutsch installiert
    ....
    musste bei mir "setlocale(LC_TIME, "deu_deu");" setzen und dann gehts...warum das so geht kann ich aber leider nicht sagen
    Ja unter Windows ist alles etwas anders :-) Dort geht auch setlocale(LC_ALL, ''), dann nutzt er die Systemeinstellung des Hostsystems.

    Danke für den Hinweis.

  8. #8
    Registriert seit
    Feb 2009
    Ort
    Dortmund
    Beiträge
    85

    Standard Danke Mesa - mein dazutun für 4 Tonnen

    Hallo Mesa,

    und alle anderen Müllentsorger.
    Prima Lösung für die "Müllentsorgung", naja man muss immer noch selbst Hand anlegen und den Müll raus bringen.
    Bei mir sind es 4 Tonnen die befüllt werden müssen und auch an verschiedenen Tagen entsorgt werden. Mit deinem Script bin ich für mich fündig geworden und habe es auf meine Bedürfnisse angepasst. Damit für alle nutzbar, hier meine gepatchte Version mit kleinen Anpassungen an Variablen und Texten und einer vierten Tonne.

    Bitte auch den ersten Post lesen - den Punkt 6 habe ich angepasst und die "echos" entfernt

    Jetzt zum Abendessen dann vor die Glotze - EM2016 und Daumen drücken, auch für Euch damit auch alles klappt und es nicht für die Tonne ist.

    PHP-Code:
    <?

    //******************************************************************
    // Urheber dieser Version ist 'mesa' Stand 20.05.2016
    // https://www.symcon.de/forum/threads/31601-M%C3%BCll-Reminder-Bring-den-M%C3%BCll-raus%21?highlight=m%FCllplan

    // überarbeitet von mir D.Voss, da ich mehr als 3 Tonnen habe und die Beschreibungen der Behälter anders sind.
    // Danke an 'mesa' ich hätte die Berechnungen in PHP so nicht hinbekommen, lesen, verstehen sowie copy & paste
    // sind mir nicht fremd - also auf gehts...

    // Meine Umgebung ein Rpi2, der seit Ende 2015 im Livebetrieb ist
    // Fragen zu dem eigentlichen Script "Urheber" kann mesa bestimmt besser beantworten

    // Danke mesa coole Sache

    //******************************************************************

        
    setlocale(LC_TIME"de_DE");

        
    // Einfache String-Variable, speichert Text wie diesen: "Nächste Leerung am Freitag morgen: Wertstoff - gelbe Tonne"
        // Die String Variable muss selbst angelegt werden, siehe Zeile "$nächste_termin" und "$webfront_id" anpassen
    // Eingabe nötig
        // Dieses Script muss mit einem Timer versehen werden, um es jeden Tag um z.B. 18:00 zu starten,
        // Ziel ist es dann eine Pushnachricht zu senden um am Abend noch den Müll raus zu bringen
        // mein Beispiel 4 Tonnen oder die 4. Tonne als Erinnerung zu nutzen 
        // z.B. am Jahresende oder Quartalsweise um neue Termine einzutragen
        // 1 Wertstoff Tonne
        // 2 Altpapier Tonne
        // 3 Restabfall Tonne
        // 4 Bioabfall > oder neue Termine eingeben erinnern

    // Was habe ich geleistet - nicht viel
    // anpassen der Variablen damit diese mit meinen Beschreibungen der Entsorgungstonnen zusammen passen
    // und eine zusätzliche Tonne "4" 
    // natürlich noch die "IF" abfragen bei denen ich erst ein wenig geschwitzt habe - in der Hoffnung das
    // ein Fehler nicht dabei ist. 

        // Link zu meinem Entsorger (also eurem Entsorger)
        // Link - jedes Jahr vergessen also hier speichern - https://www.meinentsorger.de/info-service.htm

    // Eingabe nötig
    // Termin "Nächste Leerung" als Stringvariable anlegen
    // kann dann im Webfront angezeigt werden
    //******************************************************************
        
    $nächste_termin 12345;        // Bitte eigene Werte eintragen*
    //******************************************************************

    // Eingabe nötig
    // Webfront ID zur Pushnachrichten Übertagung
    //******************************************************************
        
    $webfront_id 12345;           // Bitte eigene Werte eintragen*
    //******************************************************************

    // In diesem Script sind folgende Namen hinterlegt
    // Tonne 1  > Wertstoff
    // Tonne 2  > Altpapier
    // Tonne 3  > Restabfall
    // Tonne 4  > Bioabfall > bzw. neue Werte eingeben

    // Eingabe nötig bzw. anpassen
    $NameT1 "Werstoff - gelbe Tonne";
        
    $tonne1 =
        [
            new 
    DateTime("2016-01-06"),
            new 
    DateTime("2016-01-20"),
            new 
    DateTime("2016-02-03"),
            new 
    DateTime("2016-02-17"),
            new 
    DateTime("2016-03-02"),
            new 
    DateTime("2016-03-16"),
            new 
    DateTime("2016-03-31"),
            new 
    DateTime("2016-04-13"),
            new 
    DateTime("2016-04-27"),
            new 
    DateTime("2016-05-11"),
            new 
    DateTime("2016-05-25"),
            new 
    DateTime("2016-06-08"),
            new 
    DateTime("2016-06-22"),
            new 
    DateTime("2016-07-06"),
            new 
    DateTime("2016-07-20"),
            new 
    DateTime("2016-08-03"),
            new 
    DateTime("2016-08-17"),
            new 
    DateTime("2016-08-31"),
            new 
    DateTime("2016-09-14"),
            new 
    DateTime("2016-09-28"),
            new 
    DateTime("2016-10-12"),
            new 
    DateTime("2016-10-26"),
            new 
    DateTime("2016-11-09"),
            new 
    DateTime("2016-11-23"),
            new 
    DateTime("2016-12-07"),
            new 
    DateTime("2016-12-21")
    ]    ;

    // Eingabe nötig bzw. anpassen
    $NameT2 "Papier - blaue Tonne";
        
    $tonne2 =
        [
            new 
    DateTime("2016-01-25"),
            new 
    DateTime("2016-02-22"),
            new 
    DateTime("2016-03-19"),
            new 
    DateTime("2016-04-18"),
            new 
    DateTime("2016-05-17"),
            new 
    DateTime("2016-06-13"),
            new 
    DateTime("2016-07-11"),
            new 
    DateTime("2016-08-08"),
            new 
    DateTime("2016-09-05"),
            new 
    DateTime("2016-10-04"),
            new 
    DateTime("2016-10-31"),
            new 
    DateTime("2016-11-28"),
            new 
    DateTime("2016-12-27")
        ];

    // Eingabe nötig bzw. anpassen
    $NameT3 "Restabfall - graue Tonne";
        
    $tonne3 =
        [
            new 
    DateTime("2016-01-13"),
            new 
    DateTime("2016-01-27"),
            new 
    DateTime("2016-02-10"),
            new 
    DateTime("2016-02-24"),
            new 
    DateTime("2016-03-09"),
            new 
    DateTime("2016-03-22"),
            new 
    DateTime("2016-04-06"),
            new 
    DateTime("2016-04-20"),
            new 
    DateTime("2016-05-04"),
            new 
    DateTime("2016-05-19"),
            new 
    DateTime("2016-06-01"),
            new 
    DateTime("2016-06-15"),
            new 
    DateTime("2016-06-29"),
            new 
    DateTime("2016-07-13"),
            new 
    DateTime("2016-07-27"),
            new 
    DateTime("2016-08-10"),
            new 
    DateTime("2016-08-24"),
            new 
    DateTime("2016-09-07"),
            new 
    DateTime("2016-09-21"),
            new 
    DateTime("2016-10-06"),
            new 
    DateTime("2016-10-19"),
            new 
    DateTime("2016-11-03"),
            new 
    DateTime("2016-11-16"),
            new 
    DateTime("2016-11-31"),
            new 
    DateTime("2016-12-14"),
            new 
    DateTime("2016-12-29")
        ];

    // wenn nur 3 Tonnen vorhanden sind kann dies genutzt werden um eine Meldung "neue Werte eintragen"
    // per Pushnachricht zu melden, hier als Beispiel 31.12. und 1.1.
    // Es müssen zwei Werte eingetragen sein.
    // Eingabe nötig bzw. anpassen
    $NameT4 "Bio - braune Tonne"// oder "neue Werte eintragen"
        
    $tonne4 =
        [
            new 
    DateTime("2016-01-01"),
            new 
    DateTime("2016-12-31")
        ];

        
        
    $today = new DateTime();

        
    $next_tonne1 "";
        
    $next_tonne2 "";
        
    $next_tonne3 "";
        
    $next_tonne4 "";

        
    $i=-1;
        foreach (
    $tonne1 as &$d) {
            
    $i++;
            
    $diff $today->diff($d);
            if((int)
    $diff->format("%r%a") >= 0){
                
    $next_tonne1 $tonne1[$i];
                break;
            }
        }

        
    $i=-1;
        foreach (
    $tonne2 as &$d) {
            
    $i++;
            
    $diff $today->diff($d);
            if((int)
    $diff->format("%r%a") >= 0){
                
    $next_tonne2 $tonne2[$i];
                break;
            }
        }

        
    $i=-1;
        foreach (
    $tonne3 as &$d) {
           
    $i++;
            
    $diff $today->diff($d);
            if((int)
    $diff->format("%r%a") >= 0){
                
    $next_tonne3 $tonne3[$i];
                break;
            }
        }

        
    $i=-1;
        foreach (
    $tonne4 as &$d) {
            
    $i++;
            
    $diff $today->diff($d);
            if((int)
    $diff->format("%r%a") >= 0){
                
    $next_tonne4 $tonne4[$i];
                break;
            }
        }

        
    $diff_tonne1 $today->diff($next_tonne1false);
        
    $diff_tonne2 $today->diff($next_tonne2false);
        
    $diff_tonne3 $today->diff($next_tonne3false);
        
    $diff_tonne4 $today->diff($next_tonne4false);

        
    $diff_tonne1_in_tagen = (int)$diff_tonne1->format("%r%a");
        
    $diff_tonne2_in_tagen = (int)$diff_tonne2->format("%r%a");
        
    $diff_tonne3_in_tagen = (int)$diff_tonne3->format("%r%a");
        
    $diff_tonne4_in_tagen = (int)$diff_tonne4->format("%r%a");

       
    $wasJunkDayToday false;
       if(
    $next_tonne1->format('Y-m-d') == $today->format('Y-m-d')) $wasJunkDayToday true;
       if(
    $next_tonne2->format('Y-m-d') == $today->format('Y-m-d')) $wasJunkDayToday true;
       if(
    $next_tonne3->format('Y-m-d') == $today->format('Y-m-d')) $wasJunkDayToday true;
       if(
    $next_tonne4->format('Y-m-d') == $today->format('Y-m-d')) $wasJunkDayToday true;

    //    echo "Today is " . $today->format("y-m-d") ."\n";
    //    echo "Next Tonne 1 in ". $diff_tonne1_in_tagen ."\n";
    //    echo "Next Tonne 2 in ". $diff_tonne2_in_tagen ."\n";
    //    echo "Next Tonne 3 in ". $diff_tonne3_in_tagen ."\n";
    //    echo "Next Tonne 4 in ". $diff_tonne4_in_tagen ."\n";
    //    echo "Was junk day today (this morning): " . ($wasJunkDayToday ? "yes\n" : "no\n");

        //kleinstes Datum ist nächste Leerung
        
    $next_leerung_in_tagen min($diff_tonne1_in_tagen$diff_tonne2_in_tagen$diff_tonne3_in_tagen$diff_tonne4_in_tagen);
        if(
    $next_leerung_in_tagen == 0){
           
    $txt_leerung_tage 7;
        }

    //    echo "next = " .$next_leerung_in_tagen ."\n";

        
    $result '"Error..."';
        if(
    $next_leerung_in_tagen == $diff_tonne1_in_tagen){
            
    $result "Nächste Leerung am "strftime("%A"$next_tonne1->getTimestamp()) . " morgen: " $NameT1;
            if(
    $next_leerung_in_tagen == $diff_tonne2_in_tagen){
               
    $result .= " & " $NameT2;
            }
            if(
    $next_leerung_in_tagen == $diff_tonne3_in_tagen){
               
    $result .= " & " $NameT3;
            }
            if(
    $next_leerung_in_tagen == $diff_tonne4_in_tagen){
               
    $result .= " & " $NameT4;
            }

        }else    if(
    $next_leerung_in_tagen == $diff_tonne4_in_tagen){
            
    $result "Nächste Leerung am " strftime("%A"$next_tonne4->getTimestamp()) . " morgen: " $NameT4;

            if(
    $next_leerung_in_tagen == $diff_tonne3_in_tagen){
               
    $result .= " & " $NameT3;
            }
            if(
    $next_leerung_in_tagen == $diff_tonne2_in_tagen){
               
    $result .= " & " $NameT2;
            }

        }else    if(
    $next_leerung_in_tagen == $diff_tonne3_in_tagen){
            
    $result "Nächste Leerung am "strftime("%A"$next_tonne3->getTimestamp()) . " morgen: " $NameT3;

            if(
    $next_leerung_in_tagen == $diff_tonne2_in_tagen){
               
    $result .= " & " $NameT2;
            }
         }else    if(
    $next_leerung_in_tagen == $diff_tonne2_in_tagen){
            
    $result "Nächste Leerung am "strftime("%A"$next_tonne2->getTimestamp()) . " morgen: " $NameT2;
        }

    // echo $result. "\n";
        
    SetValue($nächste_termin$result);

        
    //push notification
        
    if($next_leerung_in_tagen == 0){
           
    $notification '"Müll Skript fehlerhaft"';
            if(
    $next_leerung_in_tagen == $diff_tonne1_in_tagen){

                
    $notification $NameT1;
                if(
    $next_leerung_in_tagen == $diff_tonne2_in_tagen){
                   
    $notification .= " & " $NameT2;
                }
                if(
    $next_leerung_in_tagen == $diff_tonne3_in_tagen){
                   
    $notification .= " & " $NameT3;
                }
                if(
    $next_leerung_in_tagen == $diff_tonne4_in_tagen){
                   
    $notification .= " & " $NameT4;
                }

            }else    if(
    $next_leerung_in_tagen == $diff_tonne4_in_tagen){

                
    $notification $NameT4;
                if(
    $next_leerung_in_tagen == $diff_tonne3_in_tagen){
                   
    $notification .= " & " $NameT3;
                }
                if(
    $next_leerung_in_tagen == $diff_tonne2_in_tagen){
                   
    $notification .= " & " $NameT2;
                }

            }else    if(
    $next_leerung_in_tagen == $diff_tonne3_in_tagen){

                
    $notification $NameT3;
                if(
    $next_leerung_in_tagen == $diff_tonne2_in_tagen){
                   
    $notification .= " & " $NameT2;
                }
                }else    if(
    $next_leerung_in_tagen == $diff_tonne2_in_tagen){

                
    $notification $NameT2;
            }

    //Meldung nur abschicken, wenn Leerung "morgen" stattfindet. "Heute um 19:00" ist zu spät, denn es wird immer morgens geleert.
            
    if($wasJunkDayToday == false){
                
    WFC_PushNotification($webfront_id'Zum Müllen gehen! - ''Morgen wird die '$notification ' geleert.''trickling'0);
    // echo 'Zum Müllen gehen! - ', 'Morgen wird die '. $notification . ' geleert.';
            
    }
        }
    ?>
    Es gibt nur 10 Typen von Menschen auf der Welt die einen Verstehen, Binärcode .....

  9. #9
    Registriert seit
    Oct 2010
    Ort
    Schwarzwald-Baar-Kreis
    Beiträge
    88

    Vielen Dank für das tolle Skript, funktioniert einwandfrei
    IPS 5.0 Unlimited @ Tinkerboard S | Enocean | TCM310 | FritzBox 6590 | Fritzbox 6490 | Sonos | Tecalor TTL18e | Gigablue Quad + | Sonnenbatterie | Philips Hue

  10. #10
    Registriert seit
    Apr 2013
    Ort
    Baden-Württemberg
    Beiträge
    1,903

    Zitat Zitat von D.Voss Beitrag anzeigen
    Hallo Mesa,

    und alle anderen Müllentsorger.
    Prima Lösung für die "Müllentsorgung", naja man muss immer noch selbst Hand anlegen und den Müll raus bringen.
    Bei mir sind es 4 Tonnen die befüllt werden müssen und auch an verschiedenen Tagen entsorgt werden. Mit deinem Script bin ich für mich fündig geworden und habe es auf meine Bedürfnisse angepasst. Damit für alle nutzbar, hier meine gepatchte Version mit kleinen Anpassungen an Variablen und Texten und einer vierten Tonne.

    Bitte auch den ersten Post lesen - den Punkt 6 habe ich angepasst und die "echos" entfernt

    Jetzt zum Abendessen dann vor die Glotze - EM2016 und Daumen drücken, auch für Euch damit auch alles klappt und es nicht für die Tonne ist.

    PHP-Code:
    <?

    //******************************************************************
    // Urheber dieser Version ist 'mesa' Stand 20.05.2016
    // https://www.symcon.de/forum/threads/31601-M%C3%BCll-Reminder-Bring-den-M%C3%BCll-raus%21?highlight=m%FCllplan

    // überarbeitet von mir D.Voss, da ich mehr als 3 Tonnen habe und die Beschreibungen der Behälter anders sind.
    // Danke an 'mesa' ich hätte die Berechnungen in PHP so nicht hinbekommen, lesen, verstehen sowie copy & paste
    // sind mir nicht fremd - also auf gehts...

    // Meine Umgebung ein Rpi2, der seit Ende 2015 im Livebetrieb ist
    // Fragen zu dem eigentlichen Script "Urheber" kann mesa bestimmt besser beantworten

    // Danke mesa coole Sache

    //******************************************************************

        
    setlocale(LC_TIME"de_DE");

        
    // Einfache String-Variable, speichert Text wie diesen: "Nächste Leerung am Freitag morgen: Wertstoff - gelbe Tonne"
        // Die String Variable muss selbst angelegt werden, siehe Zeile "$nächste_termin" und "$webfront_id" anpassen
    // Eingabe nötig
        // Dieses Script muss mit einem Timer versehen werden, um es jeden Tag um z.B. 18:00 zu starten,
        // Ziel ist es dann eine Pushnachricht zu senden um am Abend noch den Müll raus zu bringen
        // mein Beispiel 4 Tonnen oder die 4. Tonne als Erinnerung zu nutzen 
        // z.B. am Jahresende oder Quartalsweise um neue Termine einzutragen
        // 1 Wertstoff Tonne
        // 2 Altpapier Tonne
        // 3 Restabfall Tonne
        // 4 Bioabfall > oder neue Termine eingeben erinnern

    // Was habe ich geleistet - nicht viel
    // anpassen der Variablen damit diese mit meinen Beschreibungen der Entsorgungstonnen zusammen passen
    // und eine zusätzliche Tonne "4" 
    // natürlich noch die "IF" abfragen bei denen ich erst ein wenig geschwitzt habe - in der Hoffnung das
    // ein Fehler nicht dabei ist. 

        // Link zu meinem Entsorger (also eurem Entsorger)
        // Link - jedes Jahr vergessen also hier speichern - https://www.meinentsorger.de/info-service.htm

    // Eingabe nötig
    // Termin "Nächste Leerung" als Stringvariable anlegen
    // kann dann im Webfront angezeigt werden
    //******************************************************************
        
    $nächste_termin 12345;        // Bitte eigene Werte eintragen*
    //******************************************************************

    // Eingabe nötig
    // Webfront ID zur Pushnachrichten Übertagung
    //******************************************************************
        
    $webfront_id 12345;           // Bitte eigene Werte eintragen*
    //******************************************************************

    // In diesem Script sind folgende Namen hinterlegt
    // Tonne 1  > Wertstoff
    // Tonne 2  > Altpapier
    // Tonne 3  > Restabfall
    // Tonne 4  > Bioabfall > bzw. neue Werte eingeben

    // Eingabe nötig bzw. anpassen
    $NameT1 "Werstoff - gelbe Tonne";
        
    $tonne1 =
        [
            new 
    DateTime("2016-01-06"),
            new 
    DateTime("2016-01-20"),
            new 
    DateTime("2016-02-03"),
            new 
    DateTime("2016-02-17"),
            new 
    DateTime("2016-03-02"),
            new 
    DateTime("2016-03-16"),
            new 
    DateTime("2016-03-31"),
            new 
    DateTime("2016-04-13"),
            new 
    DateTime("2016-04-27"),
            new 
    DateTime("2016-05-11"),
            new 
    DateTime("2016-05-25"),
            new 
    DateTime("2016-06-08"),
            new 
    DateTime("2016-06-22"),
            new 
    DateTime("2016-07-06"),
            new 
    DateTime("2016-07-20"),
            new 
    DateTime("2016-08-03"),
            new 
    DateTime("2016-08-17"),
            new 
    DateTime("2016-08-31"),
            new 
    DateTime("2016-09-14"),
            new 
    DateTime("2016-09-28"),
            new 
    DateTime("2016-10-12"),
            new 
    DateTime("2016-10-26"),
            new 
    DateTime("2016-11-09"),
            new 
    DateTime("2016-11-23"),
            new 
    DateTime("2016-12-07"),
            new 
    DateTime("2016-12-21")
    ]    ;

    // Eingabe nötig bzw. anpassen
    $NameT2 "Papier - blaue Tonne";
        
    $tonne2 =
        [
            new 
    DateTime("2016-01-25"),
            new 
    DateTime("2016-02-22"),
            new 
    DateTime("2016-03-19"),
            new 
    DateTime("2016-04-18"),
            new 
    DateTime("2016-05-17"),
            new 
    DateTime("2016-06-13"),
            new 
    DateTime("2016-07-11"),
            new 
    DateTime("2016-08-08"),
            new 
    DateTime("2016-09-05"),
            new 
    DateTime("2016-10-04"),
            new 
    DateTime("2016-10-31"),
            new 
    DateTime("2016-11-28"),
            new 
    DateTime("2016-12-27")
        ];

    // Eingabe nötig bzw. anpassen
    $NameT3 "Restabfall - graue Tonne";
        
    $tonne3 =
        [
            new 
    DateTime("2016-01-13"),
            new 
    DateTime("2016-01-27"),
            new 
    DateTime("2016-02-10"),
            new 
    DateTime("2016-02-24"),
            new 
    DateTime("2016-03-09"),
            new 
    DateTime("2016-03-22"),
            new 
    DateTime("2016-04-06"),
            new 
    DateTime("2016-04-20"),
            new 
    DateTime("2016-05-04"),
            new 
    DateTime("2016-05-19"),
            new 
    DateTime("2016-06-01"),
            new 
    DateTime("2016-06-15"),
            new 
    DateTime("2016-06-29"),
            new 
    DateTime("2016-07-13"),
            new 
    DateTime("2016-07-27"),
            new 
    DateTime("2016-08-10"),
            new 
    DateTime("2016-08-24"),
            new 
    DateTime("2016-09-07"),
            new 
    DateTime("2016-09-21"),
            new 
    DateTime("2016-10-06"),
            new 
    DateTime("2016-10-19"),
            new 
    DateTime("2016-11-03"),
            new 
    DateTime("2016-11-16"),
            new 
    DateTime("2016-11-31"),
            new 
    DateTime("2016-12-14"),
            new 
    DateTime("2016-12-29")
        ];

    // wenn nur 3 Tonnen vorhanden sind kann dies genutzt werden um eine Meldung "neue Werte eintragen"
    // per Pushnachricht zu melden, hier als Beispiel 31.12. und 1.1.
    // Es müssen zwei Werte eingetragen sein.
    // Eingabe nötig bzw. anpassen
    $NameT4 "Bio - braune Tonne"// oder "neue Werte eintragen"
        
    $tonne4 =
        [
            new 
    DateTime("2016-01-01"),
            new 
    DateTime("2016-12-31")
        ];

        
        
    $today = new DateTime();

        
    $next_tonne1 "";
        
    $next_tonne2 "";
        
    $next_tonne3 "";
        
    $next_tonne4 "";

        
    $i=-1;
        foreach (
    $tonne1 as &$d) {
            
    $i++;
            
    $diff $today->diff($d);
            if((int)
    $diff->format("%r%a") >= 0){
                
    $next_tonne1 $tonne1[$i];
                break;
            }
        }

        
    $i=-1;
        foreach (
    $tonne2 as &$d) {
            
    $i++;
            
    $diff $today->diff($d);
            if((int)
    $diff->format("%r%a") >= 0){
                
    $next_tonne2 $tonne2[$i];
                break;
            }
        }

        
    $i=-1;
        foreach (
    $tonne3 as &$d) {
           
    $i++;
            
    $diff $today->diff($d);
            if((int)
    $diff->format("%r%a") >= 0){
                
    $next_tonne3 $tonne3[$i];
                break;
            }
        }

        
    $i=-1;
        foreach (
    $tonne4 as &$d) {
            
    $i++;
            
    $diff $today->diff($d);
            if((int)
    $diff->format("%r%a") >= 0){
                
    $next_tonne4 $tonne4[$i];
                break;
            }
        }

        
    $diff_tonne1 $today->diff($next_tonne1false);
        
    $diff_tonne2 $today->diff($next_tonne2false);
        
    $diff_tonne3 $today->diff($next_tonne3false);
        
    $diff_tonne4 $today->diff($next_tonne4false);

        
    $diff_tonne1_in_tagen = (int)$diff_tonne1->format("%r%a");
        
    $diff_tonne2_in_tagen = (int)$diff_tonne2->format("%r%a");
        
    $diff_tonne3_in_tagen = (int)$diff_tonne3->format("%r%a");
        
    $diff_tonne4_in_tagen = (int)$diff_tonne4->format("%r%a");

       
    $wasJunkDayToday false;
       if(
    $next_tonne1->format('Y-m-d') == $today->format('Y-m-d')) $wasJunkDayToday true;
       if(
    $next_tonne2->format('Y-m-d') == $today->format('Y-m-d')) $wasJunkDayToday true;
       if(
    $next_tonne3->format('Y-m-d') == $today->format('Y-m-d')) $wasJunkDayToday true;
       if(
    $next_tonne4->format('Y-m-d') == $today->format('Y-m-d')) $wasJunkDayToday true;

    //    echo "Today is " . $today->format("y-m-d") ."\n";
    //    echo "Next Tonne 1 in ". $diff_tonne1_in_tagen ."\n";
    //    echo "Next Tonne 2 in ". $diff_tonne2_in_tagen ."\n";
    //    echo "Next Tonne 3 in ". $diff_tonne3_in_tagen ."\n";
    //    echo "Next Tonne 4 in ". $diff_tonne4_in_tagen ."\n";
    //    echo "Was junk day today (this morning): " . ($wasJunkDayToday ? "yes\n" : "no\n");

        //kleinstes Datum ist nächste Leerung
        
    $next_leerung_in_tagen min($diff_tonne1_in_tagen$diff_tonne2_in_tagen$diff_tonne3_in_tagen$diff_tonne4_in_tagen);
        if(
    $next_leerung_in_tagen == 0){
           
    $txt_leerung_tage 7;
        }

    //    echo "next = " .$next_leerung_in_tagen ."\n";

        
    $result '"Error..."';
        if(
    $next_leerung_in_tagen == $diff_tonne1_in_tagen){
            
    $result "Nächste Leerung am "strftime("%A"$next_tonne1->getTimestamp()) . " morgen: " $NameT1;
            if(
    $next_leerung_in_tagen == $diff_tonne2_in_tagen){
               
    $result .= " & " $NameT2;
            }
            if(
    $next_leerung_in_tagen == $diff_tonne3_in_tagen){
               
    $result .= " & " $NameT3;
            }
            if(
    $next_leerung_in_tagen == $diff_tonne4_in_tagen){
               
    $result .= " & " $NameT4;
            }

        }else    if(
    $next_leerung_in_tagen == $diff_tonne4_in_tagen){
            
    $result "Nächste Leerung am " strftime("%A"$next_tonne4->getTimestamp()) . " morgen: " $NameT4;

            if(
    $next_leerung_in_tagen == $diff_tonne3_in_tagen){
               
    $result .= " & " $NameT3;
            }
            if(
    $next_leerung_in_tagen == $diff_tonne2_in_tagen){
               
    $result .= " & " $NameT2;
            }

        }else    if(
    $next_leerung_in_tagen == $diff_tonne3_in_tagen){
            
    $result "Nächste Leerung am "strftime("%A"$next_tonne3->getTimestamp()) . " morgen: " $NameT3;

            if(
    $next_leerung_in_tagen == $diff_tonne2_in_tagen){
               
    $result .= " & " $NameT2;
            }
         }else    if(
    $next_leerung_in_tagen == $diff_tonne2_in_tagen){
            
    $result "Nächste Leerung am "strftime("%A"$next_tonne2->getTimestamp()) . " morgen: " $NameT2;
        }

    // echo $result. "\n";
        
    SetValue($nächste_termin$result);

        
    //push notification
        
    if($next_leerung_in_tagen == 0){
           
    $notification '"Müll Skript fehlerhaft"';
            if(
    $next_leerung_in_tagen == $diff_tonne1_in_tagen){

                
    $notification $NameT1;
                if(
    $next_leerung_in_tagen == $diff_tonne2_in_tagen){
                   
    $notification .= " & " $NameT2;
                }
                if(
    $next_leerung_in_tagen == $diff_tonne3_in_tagen){
                   
    $notification .= " & " $NameT3;
                }
                if(
    $next_leerung_in_tagen == $diff_tonne4_in_tagen){
                   
    $notification .= " & " $NameT4;
                }

            }else    if(
    $next_leerung_in_tagen == $diff_tonne4_in_tagen){

                
    $notification $NameT4;
                if(
    $next_leerung_in_tagen == $diff_tonne3_in_tagen){
                   
    $notification .= " & " $NameT3;
                }
                if(
    $next_leerung_in_tagen == $diff_tonne2_in_tagen){
                   
    $notification .= " & " $NameT2;
                }

            }else    if(
    $next_leerung_in_tagen == $diff_tonne3_in_tagen){

                
    $notification $NameT3;
                if(
    $next_leerung_in_tagen == $diff_tonne2_in_tagen){
                   
    $notification .= " & " $NameT2;
                }
                }else    if(
    $next_leerung_in_tagen == $diff_tonne2_in_tagen){

                
    $notification $NameT2;
            }

    //Meldung nur abschicken, wenn Leerung "morgen" stattfindet. "Heute um 19:00" ist zu spät, denn es wird immer morgens geleert.
            
    if($wasJunkDayToday == false){
                
    WFC_PushNotification($webfront_id'Zum Müllen gehen! - ''Morgen wird die '$notification ' geleert.''trickling'0);
    // echo 'Zum Müllen gehen! - ', 'Morgen wird die '. $notification . ' geleert.';
            
    }
        }
    ?>

    Erstmal vielen Dank für die Arbeit!

    Ich wollte mir das gerade mal für 2017 einbauen... auf meinem IPS 4.1 RASPI...

    Könnte jemand ein aktualisiertes Skript einfügen?

    mit "Sudo raspi-config" wird unter den Advanced Settings angezeigt:
    "de_DE ISO-8859..."
    de_DE.UTF-8..."

    Ich habe setlocale in verschiedenen Varianten durchprobiert*(LC_ALL,*'de_DE@euro',*'de_DE',*'de' ,*'ge');
    setlocale (LC_TIME, 'de_DE') und so weiter

    Dann habe ich zum testen die setlocale-Zeile auskommentiert.
    Dann hat er mit der Zeile
    Code:
    $NameT1='Papier';
    den Fehler:
    Code:
    Parse error:  syntax error, unexpected '$NameT1' (T_VARIABLE) in /var/lib/symcon/scripts/56064.ips.php on line 54
    Daraufhin die ' durch " ersetzt.
    Fehler weiterhin:
    Parse error: syntax error, unexpected '$NameT1' (T_VARIABLE) in /var/lib/symcon/scripts/56064.ips.php on line 54


    Darum die Frage, ob jemand das ganze nochmals einstellen könnte?
    • Z-WAVE: Fibaro FGR-221, FGS-211,Aeon Labs Multisensor, Aeon Labs S2, FGK, Greenwave
    • 1-Wire: S0 Counter, Windsensor XS, 1 Wire DS9490R, DS18B20, Luftgütesensor
    • Youless LS110 / Velux Raumluftfühler / Oregon Scientific WMR180A
    • IPS: CENOVO MINI China PC / IPS-2: Razberry PI B+

Ähnliche Themen

  1. RaspberryPi Wie bring ich das System auf SSD
    Von audi2010 im Forum Mikrocontroller
    Antworten: 16
    Letzter Beitrag: 05.08.16, 10:12
  2. Antworten: 3
    Letzter Beitrag: 01.09.15, 08:23
  3. Reminder: Wohin uns Hausautomation führt ...
    Von r4m3u5 im Forum Off Topic
    Antworten: 3
    Letzter Beitrag: 05.12.14, 13:45
  4. Antworten: 1
    Letzter Beitrag: 07.12.13, 07:33
  5. sag mir, wann der müll raus muss !
    Von hmpf99 im Forum Allgemeine Diskussion
    Antworten: 25
    Letzter Beitrag: 20.04.06, 20:33

Stichworte