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

    Zitat Zitat von uwe Beitrag anzeigen
    Hallo Mesa,

    Danke für das Script, klappt wunderbar. Eine Frage, ist es möglich hier noch eine Bool Variable einzubauen die auf True setzt wenn ein Ereignis Heute vorhanden ist?
    Weis nicht so recht wo ich hier ansetzen soll.
    Hi,

    sofern ich dich richtig verstanden habe, möchtest du eine Status-Variable mit true/false für den Zustand "Leerung" fand "heute?" dann "true" sonst "false" statt?

    Wenn ja, dann sollte es funktionieren in dem du eine solche Variable anlegst und nach Zeile

    PHP-Code:
    echo "Was junk day today (this morning): " . ($wasJunkDayToday "yes\n" "no\n"); 
    das hier anfügst:

    PHP-Code:
    SetValue(42483 /*[System\Skripte\Abfallkalender\heute]*/$wasJunkDayToday); 
    Hoffnungsvoll :-p hab das nicht ausgiebig getestet.

  2. #22
    Registriert seit
    Nov 2005
    Beiträge
    577

    Hallo Mesa,

    Danke für die schnelle Antwort, hat alles gelappt. Nochmals Danke für das Script.
    Gruß Uwe

  3. #23
    Registriert seit
    Nov 2016
    Ort
    Bockenem westlicher Harzrand
    Beiträge
    119

    Standard Eine kleine Erleichterung für die Bewohner des Landkreises Hildesheim...

    Hallo zusammen,

    der Abfallverband Hildesheim bietet die Möglichkeit eine ICal Datei herunterzuladen. Deshalb habe ich das Script genommen, vielen Dank noch einmal dafür, und das Auslesen der Kalender Datei eingebaut.
    Auch nur sehr rudimentär...

    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_ALL"");

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

    //******************************************************************
    //
    // Vielen Dank erstmal an den urspruenglichen Verfasser mesa...!
    // 
    // Aenderung fuer das Einlesen einer ICal Datei die von der Hildesheimer Abfallentsorgung (ZAH) angeboten wird.
    // Dadurch entfällt die jaehrliche Eingabe der ca. 60 Termine im Jahr in dieses Script...
    //
    // - Dazu auf die Seite 'https://www.zah-hildesheim.de/Termine/abholtage' gehen
    // - Den Ort, Ortsteil und die Strasse auswaehlen
    // - Ueber das iCal Icon einen Download anstossen
    // - Und die heruntergeladene Datei in das Verzeichnis ablegen das in $icsdatei angegeben ist
    //
    //******************************************************************

    // 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 54321;           // Bitte eigene Werte eintragen*
    //******************************************************************

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

    //
    // Die folgende .ics Datei kann man unter ZAH Hildesheim herunterladen
    //
    $icsdatei "C:\\IP-Symcon\\media\\Abfuhrkalender_Hildesheim.ics";

    $zeilen file$icsdateiFILE_IGNORE_NEW_LINES );

    if( 
    $zeilen === false 
    {
        
    IPS_LogMessage"Die Abfuhrkalender Datei wurde nicht gefunden!"$icsdatei );
        return 
    false;         
    }
        
    //
    // Durchlaufen des Arrays und erzeugen der Datetime Objekte in den entsprechenden Arrays
    //
    $icssuchbegriff1 "Gelber Sack";            // Suchbegriff fuer Tonne 1 -> Wertstoff
    $icssuchbegriff2 "Biomüll";                    // Suchbegriff fuer Tonne 2 -> Bioabfall
    $icssuchbegriff3 "Restmüll";                // Suchbegriff fuer Tonne 3 -> Restabfall
    $zeitpunkt "";

    $NameT1 "Wertstoff - gelber Sack";
    $tonne1 = array();
    $NameT2 "Bioabfall - grüne Tonne";
    $tonne2 = array();
    $NameT3 "Restabfall - graue Tonne";
    $tonne3 = array();

    foreach (
    $zeilen as $zeile) {

        if( 
    stristr$zeile"DTSTART" ) === False )
        {
        }
        else
        {
            
    //
            // Datum extrahieren aus...
            // Beispielzeile: DTSTART;TZID=Germany/Berlin:20171110T070000
            // das gesuchte Datum befindet sich direkt hinter dem Doppelpunkt
            // im Format JJJJMMTT
            //
            
    $zeitpunkt substr$zeilestrpos$zeile":") + 1);
            
    $zeitpunkt substr$zeitpunkt0) . "-" substr$zeitpunkt4) . "-" substr$zeitpunkt6);
        }

        if( 
    stristr$zeile"SUMMARY" ) === False )
        {
        }
        else
        {
            
    //
            // Abfall Art extrahieren aus...
            // Beispielzeile: SUMMARY:Abfuhr Biomüll
            //
            
    if( stristr$zeile$icssuchbegriff1 ) === False )
            {
            }
            else
            {
                
    //
                // Tonne 1
                //
                
    $tonne1[] = new DateTime$zeitpunkt );
            }
            
            if( 
    stristr$zeile$icssuchbegriff2 ) === False )
            {
            }
            else
            {
                
    //
                // Tonne 2
                //
                
    $tonne2[] = new DateTime$zeitpunkt );
            }
                    
            if( 
    stristr$zeile$icssuchbegriff3 ) === False )
            {
            }
            else
            {
                
    //
                // Tonne 3
                //
                
    $tonne3[] = new DateTime$zeitpunkt );
            }
                
        }
        
        
    }


    // 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 "Neue Müllkalender Datei herunterladen !"// oder "neue Werte eintragen"
        
    $tonne4 =
        [
            new 
    DateTime("2018-01-01"),
            new 
    DateTime("2017-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'Müllabfuhr! - ''Morgen wird die '$notification ' geleert.''trickling'0);
    // echo 'Zum Müllen gehen! - ', 'Morgen wird die '. $notification . ' geleert.';
            
    }
        } 


    ?>
    Und natürlich keine Gewähr, dass dieser Service auf Dauer besteht...

    Grüße

    Ralf

  4. #24
    Registriert seit
    Nov 2016
    Ort
    Bockenem westlicher Harzrand
    Beiträge
    119

    Standard ...eine Anwort für alle auf eine private Nachricht...

    Hallo zusammen,

    jemand fragte mich ob das Script, dass ich zunächst nur um die Verarbeitung einer .ics Datei erweitert hatte, einwandfrei bei mir läuft. Die Antwort, nein das tat es nicht. Ich habe es komplett überarbeitet, teils entschlackt und als neue Funktion, die Anzeige für den aktuellen Tag hinzugefügt. Nun läuft es bei mir fehlerfrei!

    Beispiel für das Webfront (Voransage die auch einen Tag vor dem Ereignis gepusht wird)
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Webfront-Müll-Reminder.PNG 
Hits:	154 
Größe:	3.3 KB 
ID:	42753

    Und an dem entsprechende Tag heißt es dann im Webfront:

    Leerung heute:...



    Script:
    PHP-Code:
    <?
    //******************************************************************
    // Urheber der Ursprungsversion 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 D.Voss
    //
    //
    // Vielen Dank erstmal an den urspruenglichen Verfasser mesa...!
    // 
    // Aenderung fuer das Einlesen einer ICal Datei die von der Hildesheimer Abfallentsorgung (ZAH) angeboten wird.
    // Dadurch entfällt die jaehrliche Eingabe der ca. 60 Termine im Jahr in dieses Script...
    //
    // - Dazu auf die Seite 'https://www.zah-hildesheim.de/Termine/abholtage' gehen
    // - Den Ort, Ortsteil und die Strasse auswaehlen
    // - Ueber das iCal Icon einen Download anstossen
    // - Und die heruntergeladene Datei in das Verzeichnis ablegen das in $icsdatei angegeben ist
    //
    //******************************************************************

    //
    // Aufruf Parameter 
    //
    $mode    $_IPS['MODE'];                            // Modus "Abends" und "Morgens"

    //
    // Wichtig fuer die korrekte Timestamp Bestimmung
    //
    setlocale(LC_ALL"");

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

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

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

    //
    // Die folgende .ics Datei kann man unter ZAH Hildesheim herunterladen
    //
    $icsdatei "C:\\IP-Symcon\\media\\Abfuhrkalender_Hildesheim.ics";

    $zeilen file$icsdateiFILE_IGNORE_NEW_LINES );

    if( 
    $zeilen === false 
    {
        
    IPS_LogMessage"Die Abfuhrkalender Datei wurde nicht gefunden!"$icsdatei );
        return 
    false;         
    }
        
    //
    // Durchlaufen des Arrays und erzeugen der Datetime Objekte in den entsprechenden Arrays
    //
    $icssuchbegriff1 "Gelber Sack";            // Suchbegriff fuer Tonne 1 -> Wertstoff
    $icssuchbegriff2 "Biomüll";                    // Suchbegriff fuer Tonne 2 -> Bioabfall
    $icssuchbegriff3 "Restmüll";                // Suchbegriff fuer Tonne 3 -> Restabfall
    $zeitpunkt "";

    $NameT1 "Wertstoff - gelber Sack";
    $tonne1 = array();
    $NameT2 "Bioabfall - grüne Tonne";
    $tonne2 = array();
    $NameT3 "Restabfall - graue Tonne";
    $tonne3 = array();

    foreach (
    $zeilen as $zeile) {

        if( 
    stristr$zeile"DTSTART" ) === False )
        {
        }
        else
        {
            
    //
            // Datum extrahieren aus...
            // Beispielzeile: DTSTART;TZID=Germany/Berlin:20171110T070000
            // das gesuchte Datum befindet sich direkt hinter dem Doppelpunkt
            // im Format JJJJMMTT
            //
            
    $zeitpunkt substr$zeilestrpos$zeile":") + 1);
            
    $zeitpunkt substr$zeitpunkt0) . "-" substr$zeitpunkt4) . "-" substr$zeitpunkt6);
        }

        if( 
    stristr$zeile"SUMMARY" ) === False )
        {
        }
        else
        {
            
    //
            // Abfall Art extrahieren aus...
            // Beispielzeile: SUMMARY:Abfuhr Biomüll
            //
            
    if( stristr$zeile$icssuchbegriff1 ) === False )
            {
            }
            else
            {
                
    //
                // Tonne 1
                //
                
    $tonne1[] = new DateTime$zeitpunkt );
            }
            
            if( 
    stristr$zeile$icssuchbegriff2 ) === False )
            {
            }
            else
            {
                
    //
                // Tonne 2
                //
                
    $tonne2[] = new DateTime$zeitpunkt );
            }
                    
            if( 
    stristr$zeile$icssuchbegriff3 ) === False )
            {
            }
            else
            {
                
    //
                // Tonne 3
                //
                
    $tonne3[] = new DateTime$zeitpunkt );
            }
                
        }
        
    }

    //
    // Den aktuellen Tag um 0 Uhr ermitteln
    //
    $today_tmp = new DateTime();
    $today = new DateTimedate'Y-m-d'mktime0,0,0, (int)$today_tmp->format('m'), (int)$today_tmp->format('d'), (int)$today_tmp->format('Y') ) ) );

    // 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 "Neue Müllkalender Datei herunterladen !"// oder "neue Werte eintragen"
    $tonne4 =
    [
        new 
    DateTimedate'Y-m-d'mktime0,0,00101, (int)$today_tmp->format('Y') + ) ) ),  // 01.01.20xx
        
    new DateTimedate'Y-m-d'mktime0,0,01231, (int)$today_tmp->format('Y') ) ) )       // 31.12.20xx
    ];


    //
    // Auswertung der erzeugten Arrays
    //
    $next_tonne1 = new Datetime(  date'Y-m-d'mktime0,0,0, (int)$today_tmp->format('m'), (int)$today_tmp->format('d') - 1, (int)$today_tmp->format('Y') ) ) );
    $next_tonne2 = new Datetime(  date'Y-m-d'mktime0,0,0, (int)$today_tmp->format('m'), (int)$today_tmp->format('d') - 1, (int)$today_tmp->format('Y') ) ) );
    $next_tonne3 = new Datetime(  date'Y-m-d'mktime0,0,0, (int)$today_tmp->format('m'), (int)$today_tmp->format('d') - 1, (int)$today_tmp->format('Y') ) ) );
    $next_tonne4 = new Datetime(  date'Y-m-d'mktime0,0,0, (int)$today_tmp->format('m'), (int)$today_tmp->format('d') - 1, (int)$today_tmp->format('Y') ) ) );

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

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

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

    $i=-1;
    foreach (
    $tonne4 as &$d)
    {
      
    $i++;
      
    $diff $today->diff($d);
      if( (int)
    $diff->format("%r%a") >= )
        {
          
    $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");

    //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";

    //
    // Die 'naechsten Liefertage' sortieren und den kleinsten Wert groesser als 0 (Heute) heraussuchen,
    // das ist naemlich der gesuchte naechste Termin!
    //
    $sortierung = array( $diff_tonne1_in_tagen$diff_tonne2_in_tagen$diff_tonne3_in_tagen$diff_tonne4_in_tagen );
    sort$sortierungSORT_NUMERIC );

    //
    // Script Ausfuehrung am Morgen (00:30)
    // Fuer die Ueberpruefung der Abfuhr fuer den aktuellen Tag
    //
    if( $mode == "Morgens" )
    {
        
    $leerung_heute 0;
        foreach( 
    $sortierung as $s )
        {
            if( 
    $s == )
            {
                
    $leerung_heute $s;
                break;
            }
        }
        
        
    //
        // Heutige Leerung benennen und 
        // Kontrolle ob es noch weitere Leerungen gibt...
        //
        
    $result GetValue$nächster_termin );
        if( 
    $leerung_heute == $diff_tonne1_in_tagen)
        {
            
    $result "Leerung heute : " $NameT1;
          if( 
    $leerung_heute == $diff_tonne2_in_tagen )
            {
             
    $result .= " & " $NameT2;
          }
          if( 
    $leerung_heute == $diff_tonne3_in_tagen )
            {
             
    $result .= " & " $NameT3;
          }
        }
        else if( 
    $leerung_heute == $diff_tonne2_in_tagen )
        {
            
    $result "Leerung heute : " $NameT2;
        
          if( 
    $leerung_heute == $diff_tonne3_in_tagen )
            {
             
    $result .= " & " $NameT3;
          }
        }
        else if( 
    $leerung_heute == $diff_tonne3_in_tagen )
        {
          
    $result "Leerung heute : " $NameT3;
        }
    }

    //
    // Script Ausfuehrung am Abend (18:30)
    // Fuer die Ueberpruefung der Abfuhr fuer den naechsten Tag
    // inkl. event. Notificatiion Sendung
    //
    if( $mode == "Abends" )
    {
        
    $next_leerung_in_tagen 0;
        foreach( 
    $sortierung as $s )
        {
            if( 
    $s )
            {
                
    $next_leerung_in_tagen $s;
                break;
            }
        }
        
        
    //
        // Naechste Leerung benennen und 
        // Kontrolle ob es am naechsten Liefertermin noch weitere Leerungen gibt...
        //
        
    $result '"Keine weitere Leerung in diesem Jahr..."';
        
    $notification '"Keine weitere Leerung in diesem Jahr..."';
        if(
    $next_leerung_in_tagen == $diff_tonne1_in_tagen)
        {
            
    $notification $NameT1;
          
    $result "Nächste Leerung am "strftime("%A"$next_tonne1->getTimestamp()) . ": " $NameT1;
          if( 
    $next_leerung_in_tagen == $diff_tonne2_in_tagen )
            {
             
    $result .= " & " $NameT2;
                 
    $notification .= " & " $NameT2;
          }
          if( 
    $next_leerung_in_tagen == $diff_tonne3_in_tagen )
            {
             
    $result .= " & " $NameT3;
                 
    $notification .= " & " $NameT3;
          }
        }
        else if( 
    $next_leerung_in_tagen == $diff_tonne2_in_tagen )
        {
            
    $notification $NameT2;
          
    $result "Nächste Leerung am " strftime("%A"$next_tonne2->getTimestamp()) . ": " $NameT2;
        
          if( 
    $next_leerung_in_tagen == $diff_tonne3_in_tagen )
            {
             
    $result .= " & " $NameT3;
                 
    $notification .= " & " $NameT3;
          }
        }
        else if( 
    $next_leerung_in_tagen == $diff_tonne3_in_tagen )
        {
            
    $notification $NameT3;
          
    $result "Nächste Leerung am "strftime("%A"$next_tonne3->getTimestamp()) . ": " $NameT3;
        }
        else if( 
    $next_leerung_in_tagen == $diff_tonne4_in_tagen )
        {
            
    $notification $NameT4;
            
    $result $NameT4;
        }
        
        
    //
        //push notification nur Abends und wenn am naechsten Tag eine Leerung erwartet wird!
        //
        
    if( $next_leerung_in_tagen == )
        {
            
    WFC_PushNotification$webfront_id'Müllabfuhr! - ''Morgen ist der '$notification ' dran.''trickling');
        } 
    }
     
     
    //
     // Webfront String Variable aktualisieren
     //
    SetValue$nächster_termin$result );


    ?>

    Meine Struktur im Webfront:
    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Objektbaum-Müll-Reminder.PNG 
Hits:	134 
Größe:	30.0 KB 
ID:	42754

    Meine Lösung um das Script um 0:30 aufzurufen:
    PHP-Code:
    <?
    //
    // Parameter setzen
    //
    $mode    "Morgens";                    // "Abends" = Ueberpruefung Abends "Morgens" = Ueberpruefung Morgens durch ein Event das hier zuvor angelegt wurde!)

    //
    // Ab hier keine Anpassungen mehr...
    //


    //
    // eigentliches Ausfuehrungsscript
    //
    $id_script_muell_reminder IPS_GetScriptIDByName"Müll_Reminder"IPS_GetObjectIDByName"Scripte") ); 
          
    IPS_RunScriptWaitEx$id_script_muell_reminder, Array( "MODE" => $mode ) );


    ?>
    Und um 18:30...
    PHP-Code:
    <?
    //
    // Parameter setzen
    //
    $mode "Abends";                    // "Abends" = Ueberpruefung Abends "Morgens" = Ueberpruefung Morgens durch ein Event das hier zuvor angelegt wurde!)

    //
    // Ab hier keine Anpassungen mehr...
    //


    //
    // eigentliches Ausfuehrungsscript
    //
    $id_script_muell_reminder IPS_GetScriptIDByName"Müll_Reminder"IPS_GetObjectIDByName"Scripte") ); 
          
    IPS_RunScriptWaitEx$id_script_muell_reminder, Array( "MODE" => $mode ) );


    ?>

    Das ganze läuft bei mir unter Windows und enthält in den obersten Zeilen einige Einstellungen, genau wie im Ursprungscript...

    Ich hoffe es kann jemandem von nutzen sein, wenn auch nur als Anregung...

    Ein schönes We...

    Gollum

  5. #25
    Registriert seit
    Feb 2010
    Beiträge
    221

    Vielen Dank dafür, habe es etwas umgestaltet, aber funktioniert super mit der FES Kalenderdatei

  6. #26
    Registriert seit
    Feb 2009
    Ort
    Dortmund
    Beiträge
    87

    Smile Danke für die iCal Umsetzung

    Hallo Gollum,

    Danke für die Anpassung an das iCal Format, habe mich Heute erst damit beschäftigt da ich mit der Umsetzung der Pfadangaben von Windows c:\ zu einer (meiner) Linux Lösung auf Kriegsfuß stehe.
    Mein Symcon läuft seit einiger Zeit auf einem Raspi, verstehe ich nicht, var/ etc/ bin usw. habe ich keinen bezug zu
    das ist zu kryptisch (für mich) vieleicht kann mir jemad aufs Pferd helfen, was die Pfade angeht.

    Ich habe gedacht ich könnte ... huch sehe das die iCal Datei von meinem Entsorger direkt erzeugt und
    direkt geladen werden kann, freu.... Damit habe ich einen Müll Reminder der so hoffe ich für IMMER aktuell ist.
    Ohne das ich Jahr für Jahr eine lange Reihe pflegen darf oder die Datei laden und hinterlegen muss.
    HTML-Code:
    https://www.edg.de/ical/kalender.ics?Strasse=Lindenstraße.&Hausnummer=1234&Erinnerung=6&Abfallart=1,2,3,4
    Der Link funktioniert nicht jedenfalls nicht mit dieser Straße
    Damit funktioniert mein Kalender mit meiner Straße jetzt wunderbar

    Danke euch allen,
    D.Voss
    Es gibt nur 10 Typen von Menschen auf der Welt die einen Verstehen, Binärcode .....

  7. #27
    Registriert seit
    Jan 2018
    Ort
    97469 Gochsheim
    Beiträge
    187

    Standard Ical

    Hi Gollum,

    hab es eingerichtet, funktioniert einwandfrei, vielen Dank dafür

    Gruß

    Oliver

  8. #28
    Registriert seit
    Apr 2015
    Beiträge
    61

    Hat mir noch jemand einen Tip?
    Ich habe immer Error bei der "Nächste Abholung " Variable (String). Die Referenz vom Script stimmt.

    Danke vielmals.

  9. #29
    Registriert seit
    Sep 2008
    Ort
    nr KS
    Beiträge
    1,870

    seit einiger Zeit ist ja setlocale(LC_ALL, ""); disabled worden.
    seitdem läuft das Skript nicht mehr korrekt, das hat zur Folge,dass die Ausgabe
    Today is 18-12-20
    Next Tonne 1 in 2
    Next Tonne 2 in -1
    Next Tonne 3 in 7
    Next Tonne 4 in -1
    Fehler aufwirft, da das Format nicht mehr angepassst wird. Das Datum verdreht ausgegeben (Y-m-d angepasst/reicht aber nicht) wie es auch aus der Datei.ics ausgeworfen wird. Wie kann man das wieder anpassen, hat jemand dafür eine Lösung ?
    Geändert von Axel37 (20.12.18 um 17:39 Uhr)
    Diese Nachricht besteht zu 100% aus chlorfrei gebleichten, glücklichen und zufriedenen Elektronen.
    IP-Symcon Version: 5.2ß unlim auf WIN7pro
    Shuttle XS35V4,HPSlate21,IPS-868,HM,HMip,FS20,piVCCU,Silex4000,IPcams, FB 7850, TM-D710GE GPS, Raspi3

  10. #30
    Registriert seit
    Nov 2016
    Ort
    Bockenem westlicher Harzrand
    Beiträge
    119

    Standard Ich kann das Problem leider nicht nachvollziehen

    @Axel37

    Ja ist schon komisch. Ich hatte damals auch etwas über die Geschichte mit dem setlocale gelesen. Aber ich konnte in der Folge keine Fehler des Scripts (Meine Version vom Beitrag #24) feststellen. Gerade eben hatte ich nochmal die Testausgabe aktiviert und das Script bei mir ausgeführt.

    Name:  Müllreminder-Test-Ausgabe.PNG
Hits: 161
Größe:  1.7 KB

    Auch diesmal kann ich keine offensichtlichen Fehler feststellen. Die angegebenen Tage sind soweit korrekt. Und zwar sowohl mit als auch ohne setlocale.

    Bei mir läuft es unter: IP-Symcon 5.0, Windows x64, 22.11.2018, 9c414bf914c

    Tut mir leid..., dass ich nicht weiter helfen kann.

    Gruß
    Gollum
    IPS 5.1 (mal Stable, mal Beta und mal Testing) Unlimited auf DS918+/Docker, APC USV, CCU2, Eigenbau Rolladensteuerung (HW & SW), HUE, Z-Wave, Fritz 7590, Netgear GS728 TPv2 POE und China Cams

Ä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