+ Antworten
Seite 1 von 3 1 2 3 LetzteLetzte
Ergebnis 1 bis 10 von 26
  1. #1
    Registriert seit
    Dec 2014
    Beiträge
    21

    Standard Gelber Sack / Blaue Tonne aus iCal (ics) auslesen

    Zitat Zitat von Schablone Beitrag anzeigen
    Hallo Jens,

    ich bin soweit.

    Das ist die Funktion:
    PHP-Code:
    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
    $iCal_String                        =  "";    //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);
        
    //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;LANGUAGE=de":
                              
    $term_inhalt     $Data_arr[1];

                        }
                    }
                    
                    
    $iCal_String            .= $term_tag.".".$term_monat.".".$term_jahr.",".$term_inhalt."\r\n";
                    
                }
            }
        }
    }
    else
    {
        
    //Wenn die Datei nicht existiert dann wird ERROR_FILENAME ausgegeben
        
    $iCal_String             "ERROR_FILENAME";
    }

    return 
    $iCal_String;
    //------------------------- Main ENDE --------------------------


    Die Einbindung:
    PHP-Code:

    //Ort der iCalender-Datei
    $filename       =  IPS_GetKernelDir()."meldungen\\muell\\Leerungstermine0003807.ics";
    //Aufruf der Funktion
    $iCal_String   =  iCal_to_String($filename);
    //ausgeben der Termine
    echo $iCal_String
    Ich habs jetzt erst mal in ein String gepackt.
    Schau dir das mal an.
    Wenn Du doch mehrere Strings (String Array) haben möchtest
    melde dich Bitte.
    Hallo,
    ich bin grad dabei mich in IPS einzufuchsen.
    Leider steh ich hier echt auf dem Schlauch.
    Wie mache ich das mit den Scripten?
    muss ich das im Objectbaum erstellen oder in dem scripts Ordner ablegen?
    Warum sind da zwei(Funktion und Einbindung?
    Wie muss ich da vorgehen?
    gruss

  2. #2
    Registriert seit
    Dec 2007
    Ort
    Nienburg (Weser)
    Beiträge
    1,335

    Warum willst Du das in den Scripts Ordner legen ? Was hast Du denn bisher in/mit IPS gemacht? Registriert bereits 2014 und jetzt erst einarbeiten?
    Was für ein System ? Windows, Raspi ? Wo liegt deine .ics Datei ?
    Es sind etwas wenig Infos die Du bereit stellst. Doku zu IPS hast Du gefunden und gelesen ?


    Gruß
    Jens
    _________
    IPS Unlimited unter WHS2011 auf HP N40L
    Wago 750 System, Homematic, 1-Wire,
    Squeezebox, Fritzbox, Dreambox, Instar Cams

  3. #3
    Registriert seit
    Dec 2014
    Beiträge
    21

    Ich bin seid 2014 registriert weil ich damals überlegt habe mir gleich IPS zukaufen.
    Dann habe ich mich aber für Homematic pur entschieden.
    Das habe ich jetzt gut am laufen und hab mir jetzt IPS zugelegt.
    Bin gerade dabei einige nützliche Sachen (wie diese hier) zu integrieren.
    Laufen habe ich das auf einen Raspberry.
    Die meisten Dinge habe ich über Module in eingefügt(Hue und Sonos zB).

  4. #4
    Registriert seit
    Dec 2014
    Beiträge
    21

    Die ics liegt unter symcon. Habe da einen Ordner erstellt der ics heisst.

  5. #5
    Registriert seit
    Sep 2009
    Ort
    Bocholt
    Beiträge
    1,126

    Hää, das Script ist ja von mir!?
    Was verstehst Du da jetzt nicht?
    Bis dann

    Martin

  6. #6
    Registriert seit
    Dec 2014
    Beiträge
    21

    Hat sich schon erledigt, ich habe das Anzeigen der Termine hinbekommen.

    Nur leider bin ich mit der Ansicht nicht zufrieden.
    Mir werden alle Daten angezeigt.
    Wie mache ich das mir nur die ab Heute bis 14 Tage im voraus angezeigt werden?

    Name:  Bildschirmfoto 2017-02-24 um 09.27.38.jpg
Hits: 250
Größe:  95.8 KB

  7. #7
    Registriert seit
    Sep 2009
    Ort
    Bocholt
    Beiträge
    1,126

    Hallo Jens,

    das Script von mir ist ja nur zum einmaligen übersetzen der Termine vom iCalender in eine Variable.
    Wenn Du das machen willst müsstest Du ja im Prinzip Täglich oder ein mal pro Wochen Jedes Datum
    in einer Zeile mit dem aktuellem vergleichen und dementsprechend handeln.

    Das Script von mir macht nur eine Umwandlung!
    Bis dann

    Martin

  8. #8
    Registriert seit
    Aug 2014
    Ort
    Nähe Flensburg
    Beiträge
    212

    Hallo Schablone,

    danke für dein Script. Leider komme ich nicht weiter. Ich habe nun dank deines Sciptes, alle Termine von unserem Müllentsorger über die ICS Datei in eine String-Var. geschrieben. Das sieht dann so aus:

    07.03.2017,Restabfalltonne (60-240l)(14tgl.)
    21.03.2017,Restabfalltonne (60-240l)(14tgl.)
    04.04.2017,Restabfalltonne (60-240l)(14tgl.)
    19.04.2017,Restabfalltonne (60-240l)(14tgl.)

    Ich schaffe es leider nicht mit einer Funktion die Abholtermine in eine Variable zu schreiben.
    Wollte eine Variable für "Heute" und "Morgen" füllen und das für jede Müllart.

    PHP-Code:
    <?
    $iCal_String 
    GetValueString(46242 /*[Müll\Termine]*/);
    $today date("d.m.Y, ");                         
    $tomorrow date("d.m.Y, "strtotime("+1 days"));

    echo(
    $tomorrow);

    echo(
    substr($iCal_String$tomorrow30)); // Soll

    //substr(string: String, start: Integer, length: Integer): String
    ?>
    Leider kommt nur das dabei herraus:

    07.03.2017,
    Notice: A non well formed numeric value encountered in /var/lib/symcon/scripts/31518.ips.php on line 8
    017,Restabfalltonne (60-240l)(

    Kann mir jemand bitte helfen....

    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

  9. #9
    Registriert seit
    Dec 2007
    Ort
    Nienburg (Weser)
    Beiträge
    1,335

    Versuch doch meine Methode aus Beitrag #46 ( ZVO - Gelber Sack / Blaue Tonne auslesen - Seite 5).
    Damit hast du dann keinen String als Rückgabe, sondern Arrays und die kannst Du dann nach dem gewünschten Datum durchsuchen.

    Gruß
    Jens
    _________
    IPS Unlimited unter WHS2011 auf HP N40L
    Wago 750 System, Homematic, 1-Wire,
    Squeezebox, Fritzbox, Dreambox, Instar Cams

  10. #10
    Registriert seit
    Aug 2014
    Ort
    Nähe Flensburg
    Beiträge
    212

    Hallo Jens,

    danke für deine Hilfe. Ich finde die Idee super, leider bin ich nicht fit genug das umzusetzen.

    Ich habe $term_inhalt aus dem Skript von Schablone genommen, leider führt das zu nichts...

    "Warning: Invalid argument supplied for foreach() in /var/lib/symcon/scripts/41224.ips.php on line 130"

    PHP-Code:
    <?
    //Ort der iCalender-Datei
    $filename       =  IPS_GetKernelDir()."Abfuhrtermine.ics";
    //Aufruf der Funktion

    //echo($filename);
    $iCal_String   =  iCal_to_String($filename);
    //ausgeben der Termine
    //echo $iCal_String;  

    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
    $iCal_String                        =  "";    //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);
        
    //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($Data_arr);
    Switch($term_inhalt)
                                 {
                                   case 
    "Restabfalltonne":
                                    
    $restmuell[] = $term_tag.".".$term_monat.".".$term_jahr;
                                 break;
                              case 
    "Biotonne":
                                        
    $biomuell[] = $term_tag.".".$term_monat.".".$term_jahr;
                                   break;
                              case 
    "Gelber Sack":
                                        
    $wertstoff[] = $term_tag.".".$term_monat.".".$term_jahr;
                                   break;
                              case 
    "Papiertonne":
                                         
    $papier[] = $term_tag.".".$term_monat.".".$term_jahr;
                                 break;
                              case 
    "Gelber Sack":
                                         
    $baum[] = $term_tag.".".$term_monat.".".$term_jahr;
                                }
                                
                        }
                    }
                    
                    
    $iCal_String            .= $term_tag.".".$term_monat.".".$term_jahr.",".$term_inhalt."\r\n";
                      
                }
            }
        }
    }
    else
    {
        
    //Wenn die Datei nicht existiert dann wird ERROR_FILENAME ausgegeben
        
    $iCal_String             "ERROR_FILENAME";
    }

    return 
    $iCal_String;
    //------------------------- Main ENDE --------------------------

    }

    //Aufruf der Funktion
    $iCal_String   =  iCal_to_String($filename);

    //ausgeben der Termine
    //print_r($iCal_String);
    foreach($iCal_String[0] as $datum)
        {echo 
    $datum."\r\n";}   
    //SetValue(46242 /*[Müll\Termine]*/,$restmuell);
      

    ?>
    Wäre cool 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

Ä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