+ Antworten
Seite 3 von 3 ErsteErste 1 2 3
Ergebnis 21 bis 26 von 26
  1. #21
    Registriert seit
    Aug 2014
    Ort
    Nähe Flensburg
    Beiträge
    211

    Hallo,

    nun funktioniert alles, anbei das Schript:
    PHP-Code:
    <?
    $filename       
    =  IPS_GetKernelDir()."Abfuhrtermine.ics"//Ort der iCalender-Datei liegt
    //Aufruf der Funktion
    $iCal_String   =  iCal_to_String($filename);
    function 
    iCal_to_String($filename)
    {
    /*=============================================================
    iCal_to_String - Martin Heinzel - 16.12.2011
    Version: 0.1

    Beschreibung:
    Mit dieser Funktion wird eine iCalender Datei in eine String-
    variable gewandelt.


    Änderungen
    ----------

    tt.mm.jjjj von Version x.x -> y.y

    Beschreibung:

    ================================================================*/

    // Variablen Deklaration --------------------------------------

    // Variablen
    //--------------
    $iCal_DS_komplett                             =  "";    //Komplette iCalender Datensatz
    $restmuell                                    =  "";    //gewandelter iCalender Datensatz
    $biomuell                                    =  "";    //gewandelter iCalender Datensatz
    $wertstoff                                    =  "";    //gewandelter iCalender Datensatz
    $papier                                        =  "";    //gewandelter iCalender Datensatz
    //$baum                                            =  "";    //gewandelter iCalender Datensatz
    $term_jahr                                  =  "";    //Termin Jahr
    $term_monat                                 =  "";    //Termin Monat
    $term_tag                                   =  "";    //Termin Tag
    $term_inhalt                                =  "";    //Termin Text

    //-------------------------------------------------------------

    //--------------------------- Main ----------------------------

    //Daten holen
    if(file_exists($filename))
        {

            
    //Termine in Variable einlesen
            
    $iCal_DS_komplett                    file_get_contents($filename);
            
    //Echo($iCal_DS_komplett);
            //Den kompletten Datensatz zerlegen
            
    $iCal_DS_komplett_arr             explode("BEGIN:"$iCal_DS_komplett);

            
    //alle Datensätze durchlaufen
            
    foreach($iCal_DS_komplett_arr as $key => $value)
                {
                
    //Der erste Datensatz ist "2"
               
    if($key 1)
                    {
                    
    //einzelnen Datensatz in Daten zerlegen
                   
    $iCal_arr explode("\r\n"$value);

                    
    //Nur Datensätze vom Typ "VEVENT" durchlaufen
                    
    if($iCal_arr[0] == "VEVENT")
                        {
                        
    //alle Daten durchlaufen
                        
    foreach($iCal_arr as $ikey => $ivalue)
                            {
                               
    //Daten zerlegen in Parameter und Wert
                                
    $Data_arr explode(":"$ivalue);

                                    
    //Kontrolle der Parameter
                                    
    Switch($Data_arr[0])
                                    {

                                        
    //Zeitstempel Datum
                                        
    case "DTSTART;VALUE=DATE":
                                           
    $term_jahr      substr($Data_arr[1], 04);
                                           
    $term_monat     substr($Data_arr[1], 42);
                                           
    $term_tag        substr($Data_arr[1], 62);
                                            break;

                                        case 
    "SUMMARY":
                                          
    $term_inhalt     $Data_arr[1];
                                        
    //echo($term_inhalt); // zum Überprüfen ob etwas in der $term_inhalt steht
                                    
    }
                            }
                             Switch(
    $term_inhalt)
                                 {
                                   case 
    "Restabfalltonne (60-240l)(14tgl.)"// Suchbegriff
                                    
    $restmuell[] = $term_tag.".".$term_monat.".".$term_jahr;
                                 break;
                              case 
    "Biotonne(14tgl.)":
                                        
    $biomuell[] = $term_tag.".".$term_monat.".".$term_jahr;
                                   break;
                              case 
    "Gelber Sack(14tgl.)":
                                        
    $wertstoff[] = $term_tag.".".$term_monat.".".$term_jahr;
                                   break;
                              case 
    "Papiertonne(4wö.)":
                                         
    $papier[] = $term_tag.".".$term_monat.".".$term_jahr;
                                 
    //break;
                              //case "Weihnachtsbaeume":
                                         //$baum[] = $term_tag.".".$term_monat.".".$term_jahr;
                                
    }
                        }
                }
            }
        }
    else
        {
            
    //Wenn die Datei nicht existiert dann wird ERROR_FILENAME ausgegeben
            
    $iCal_String             "ERROR_FILENAME";
        }




    //--------------------------------Variablen Schalten---------------------------------------------------------

    $today date("d.m.Y");
    //echo($today);                         
    $tomorrow date("d.m.Y"strtotime("+1 days"));
    //echo($tomorrow);
        //schwarze Tonne
        
    if (array_search($today$restmuelltrue ) ) 
        {
           
    SetValueInteger(29196 /*[Müll\Restabfalltonne]*/,1);
        }
        else
        {
        if (
    array_search($tomorrow$restmuelltrue ) ) 
        {
               
    SetValue(29196 /*[Müll\Restabfalltonne]*/,2);
            }    
            else
            {
            
    SetValue(29196 /*[Müll\Restabfalltonne]*/,0);
            }
        }    

        
    //bio Tonne
        
    if (array_search($today$biomuelltrue ) ) 
        {
           
    SetValueInteger(32858 /*[Müll\Biotonne]*/,1);
        }
        else 
        {
        if (
    array_search($tomorrow$biomuelltrue ) ) 
        {
               
    SetValueInteger(32858 /*[Müll\Biotonne]*/,2);
            }
            else 
            {
            
    SetValueInteger(32858 /*[Müll\Biotonne]*/,0);
            }    
        }
        
    //Gelber Sack
        
    if (array_search($today$wertstofftrue ) ) 
        {
           
    SetValueInteger(35438 /*[Müll\Gelber Sack]*/,1);
        }
        else 
        {
        if (
    array_search($tomorrow$wertstofftrue ) ) {
               
    SetValueInteger(35438 /*[Müll\Gelber Sack]*/,2);
            }
            else
            {
            
    SetValueInteger(35438 /*[Müll\Gelber Sack]*/,0);
            }    
        }
        
    //Papier Tonne
        
    if (array_search($today$papiertrue ) ) {
           
    SetValueInteger(36560 /*[Müll\Papiertonne]*/,1);
        }
        else 
        {
        if (
    array_search($tomorrow$papiertrue ) ) 
        {
               
    SetValueInteger(36560 /*[Müll\Papiertonne]*/,2);
            }
            else {
            
    SetValueInteger(36560 /*[Müll\Papiertonne]*/,0);
            }
        }


    //--------------------------------Variablen Schalten Ende---------------------------------------------------------    

    $ergebnis = array($restmuell,$biomuell,$wertstoff,$papier);

    //print_r($ergebnis);


    return $ergebnis;




    //------------------------- Main ENDE --------------------------
    }
    ?>

    Die Variablen werden einmal am Tag ( 00:01) gefüllt. Ablageort der ICS-Datei ist direkt im Symconordner

    Name:  Müll.JPG
Hits: 333
Größe:  26.0 KB

    Vielen Dank für die Hilfe hier im Forum.

    LG Izack
    Geändert von Izack (10.03.17 um 20:16 Uhr)
    Ips 4.1 auf RPI2 / All3500 / 1-Wire Usb Stick / 1-Wire Controller 2 E-Service /
    Symcon Z-Wave + / Ir Kopf von Udo / Synology NAS

  2. #22
    Registriert seit
    Aug 2014
    Ort
    Nähe Flensburg
    Beiträge
    211

    Hallo Leute,

    ich stehe auf dem Schlauch :-( Leider bekomme ich beim Ausführen des Skriptes diesen Fehler:

    Fatal error: Uncaught Error: [] operator not supported for strings in /var/lib/symcon/scripts/47470.ips.php:91
    Stack trace:
    #0 /var/lib/symcon/scripts/47470.ips.php(4): iCal_to_String('/var/lib/symcon...')
    #1 {main}
    thrown in /var/lib/symcon/scripts/47470.ips.php on line 91

    Ich denke es tritt, nach dem Update auf IPS5.0 auf. Ich verstehe leider nicht wo das Problem ist.
    Währe toll wenn mir jemand helfen könnte.

    LG Izack
    Ips 4.1 auf RPI2 / All3500 / 1-Wire Usb Stick / 1-Wire Controller 2 E-Service /
    Symcon Z-Wave + / Ir Kopf von Udo / Synology NAS

  3. #23
    Registriert seit
    Aug 2014
    Ort
    Nähe Flensburg
    Beiträge
    211

    Hallo zusammen,

    hier scheint der Fehler zu liegen bei :

    case "Restabfalltonne (60-240l)(14tgl.)": // Suchbegriff
    $restmuell[] = $term_tag.".".$term_monat.".".$term_jahr;
    break;

    Was ist daran falsch?

    Lg Izack
    Ips 4.1 auf RPI2 / All3500 / 1-Wire Usb Stick / 1-Wire Controller 2 E-Service /
    Symcon Z-Wave + / Ir Kopf von Udo / Synology NAS

  4. #24
    Registriert seit
    Aug 2014
    Beiträge
    548

    Hallo,

    ich vermute, es liegt daran, dass Du zuerst $restmuell als String deklarierst (=""), später aber als Array ( [] ) benutzt. Versuchs doch mal mit $restmuell = array().

    Grüße, Gerhard
    LCN, LCN-PCHK, piVCCU auf Raspberry Pi, IPSView

  5. #25
    Registriert seit
    Aug 2014
    Ort
    Nähe Flensburg
    Beiträge
    211

    Hallo Gehard,

    jo das war es vielen Dank für deine Hilfe.

    Anbei das geänderte Skript um die Termine in Stringvariablen abzulegen.

    PHP-Code:
    <?
    $filename       
    =  IPS_GetKernelDir()."Abfuhrtermine.ics"//Ort der iCalender-Datei liegt
    //Aufruf der Funktion
    $iCal_String   =  iCal_to_String($filename);
    function 
    iCal_to_String($filename)
    {
    /*=============================================================
    iCal_to_String - Martin Heinzel - 16.12.2011
    Version: 0.1

    Beschreibung:
    Mit dieser Funktion wird eine iCalender Datei in eine String-
    variable gewandelt.


    Änderungen
    ----------

    tt.mm.jjjj von Version x.x -> y.y

    Beschreibung:

    ================================================================*/

    // Variablen Deklaration --------------------------------------

    // Variablen
    //--------------
    $iCal_DS_komplett                             =  array();    //Komplette iCalender Datensatz
    $restmuell                                    =  array();    //gewandelter iCalender Datensatz
    $biomuell                                    =  array();    //gewandelter iCalender Datensatz
    $wertstoff                                    =  array();    //gewandelter iCalender Datensatz
    $papier                                        =  array();    //gewandelter iCalender Datensatz
    //$baum                                            =  "";    //gewandelter iCalender Datensatz
    $term_jahr                                  =  array();    //Termin Jahr
    $term_monat                                 =  array();    //Termin Monat
    $term_tag                                   =  array();    //Termin Tag
    $term_inhalt                                =  array();    //Termin Text

    //-------------------------------------------------------------

    //--------------------------- Main ----------------------------

    //Daten holen
    if(file_exists($filename))
        {

            
    //Termine in Variable einlesen
            
    $iCal_DS_komplett                    file_get_contents($filename);
            
    //Echo($iCal_DS_komplett);
            //Den kompletten Datensatz zerlegen
            
    $iCal_DS_komplett_arr             explode("BEGIN:"$iCal_DS_komplett);

            
    //alle Datensätze durchlaufen
            
    foreach($iCal_DS_komplett_arr as $key => $value)
                {
                
    //Der erste Datensatz ist "2"
               
    if($key 1)
                    {
                    
    //einzelnen Datensatz in Daten zerlegen
                   
    $iCal_arr explode("\r\n"$value);

                    
    //Nur Datensätze vom Typ "VEVENT" durchlaufen
                    
    if($iCal_arr[0] == "VEVENT")
                        {
                        
    //alle Daten durchlaufen
                        
    foreach($iCal_arr as $ikey => $ivalue)
                            {
                               
    //Daten zerlegen in Parameter und Wert
                                
    $Data_arr explode(":"$ivalue);

                                    
    //Kontrolle der Parameter
                                    
    Switch($Data_arr[0])
                                    {

                                        
    //Zeitstempel Datum
                                        
    case "DTSTART;VALUE=DATE":
                                           
    $term_jahr      substr($Data_arr[1], 04);
                                           
    $term_monat     substr($Data_arr[1], 42);
                                           
    $term_tag        substr($Data_arr[1], 62);
                                            break;

                                        case 
    "SUMMARY":
                                          
    $term_inhalt     $Data_arr[1];
                                        
    //echo($term_inhalt); // zum Überprüfen ob etwas in der $term_inhalt steht
                                    
    }
                            }
                             Switch(
    $term_inhalt)
                                 {
                                   case 
    "Restabfalltonne (60-240l)(14tgl.)"// Suchbegriff
                                    
    $restmuell[] = $term_tag.".".$term_monat.".".$term_jahr;
                                 break;
                              case 
    "Biotonne(14tgl.)":
                                        
    $biomuell[] = $term_tag.".".$term_monat.".".$term_jahr;
                                   break;
                              case 
    "Gelber Sack(14tgl.)":
                                        
    $wertstoff[] = $term_tag.".".$term_monat.".".$term_jahr;
                                   break;
                              case 
    "Papiertonne(4wö.)":
                                         
    $papier[] = $term_tag.".".$term_monat.".".$term_jahr;
                             
                                }
                        }
                }
            }
        }
    else
        {
            
    //Wenn die Datei nicht existiert dann wird ERROR_FILENAME ausgegeben
            
    $iCal_String             "ERROR_FILENAME";
        }





    //--------------------------------Variablen Füllen---------------------------------------------------------

    $restmuell_String implode("|"$restmuell);
    //echo $restmuell_String;
    $Muellsorte='1';
    MUELL_TerminEintragungMuellsorte(54143 /*[Müll\Muellabfuhr]*/$Muellsorte$restmuell_String);

    $papier_String implode("|"$papier);
    //echo $papier_String; 
    $Muellsorte='2';
    MUELL_TerminEintragungMuellsorte(54143 /*[Müll\Muellabfuhr]*/$Muellsorte$papier_String);

    $bio_String implode("|"$biomuell);
    //echo $papier_String; 
    $Muellsorte='3';
    MUELL_TerminEintragungMuellsorte(54143 /*[Müll\Muellabfuhr]*/$Muellsorte$bio_String);


    $gelber_String implode("|"$wertstoff);
    //echo $papier_String; 
    $Muellsorte='4';
    MUELL_TerminEintragungMuellsorte(54143 /*[Müll\Muellabfuhr]*/$Muellsorte$gelber_String);

        
        

    //--------------------------------Variablen Schalten Ende---------------------------------------------------------    

    $ergebnis = array($restmuell,$biomuell,$wertstoff,$papier);

    //print_r($ergebnis);


    return $ergebnis;




    //------------------------- Main ENDE --------------------------
    }
    ?>
    LG Izack
    Ips 4.1 auf RPI2 / All3500 / 1-Wire Usb Stick / 1-Wire Controller 2 E-Service /
    Symcon Z-Wave + / Ir Kopf von Udo / Synology NAS

  6. #26
    Registriert seit
    Jan 2012
    Ort
    Chemnitz
    Beiträge
    410

    Hallo Izack,

    gerne würde ich dein Skript probieren.

    Habe meinen Kalender eingetragen in Zeile 2

    $filename = IPS_GetKernelDir()."C:\ips\Abfuhrtermine.ics"; //Ort der iCalender-Datei liegt

    Was müsste noch gemacht werden? Müssen per Hand Variablen erstellt werden?
    IP Symcon Unlimited --> 1485 Variablen --> Kernel Version: 5.0

Ähnliche Themen

  1. ZVO - Gelber Sack / Blaue Tonne auslesen
    Von paresy im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 65
    Letzter Beitrag: 12.03.19, 19:49
  2. ical ics Parsen gzdecode(): data error
    Von sallos im Forum Skripte, PHP, SQL
    Antworten: 3
    Letzter Beitrag: 24.01.15, 15:38
  3. blaue Klemmen
    Von Swimbho im Forum digitalSTROM
    Antworten: 1
    Letzter Beitrag: 09.10.14, 09:21
  4. *.ics-Datei mit PHP auslesen
    Von JPaeper im Forum Skripte, PHP, SQL
    Antworten: 1
    Letzter Beitrag: 28.01.12, 23:45
  5. iMac / Kalender (iCal) / Terminansage via IPS
    Von thorsten9 im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 3
    Letzter Beitrag: 22.02.11, 13:54