+ Antworten
Seite 19 von 24 ErsteErste ... 9 17 18 19 20 21 ... LetzteLetzte
Ergebnis 181 bis 190 von 234
  1. #181
    Registriert seit
    Feb 2012
    Ort
    Ludwigshafen a.Rh.
    Beiträge
    353

    @stele99

    Danke für deine gute Erklärung! => Läuft auf Anhieb

    Bei Punkt 6, Besorgen der beiden Dateien, bin ich leider gescheitert... wo sollen diese sein, hab sie so nicht gefunden.
    Hab dann die Dateien aus diesem Link genommen:

    http://www.ip-symcon.de/files/service/OpenSSL-0.9.8.zip

    Insgesamt ist es alles ein wenig tricky....Wenn ich mir das nicht aufschreibe und in einem Jahr ist wieder was.. seh ich alt aus.

    Ansonsten lief es auf Anhieb. Fehlt nur noch aufhübschen für das WFE.

    Jürgen
    Geändert von juwo1811 (25.11.14 um 23:57 Uhr)
    Homematic CCU, 12 Tür & Fensterkontakte, 7 Raumthermostate,10 Stellregler, 5,85 kWp PV, Solarview, Vivotek IP Kamera und IPS prof.

  2. #182
    Registriert seit
    Nov 2011
    Ort
    Tönisvorst
    Beiträge
    723

    Zitat Zitat von Stele99 Beitrag anzeigen
    Jetzt liest das Script die kommenden Termine (heute +1 Woche) ein und gibt sie aus.
    Können nat. auch in eine Variable geschrieben werden etc.
    Vielen Dank für dein Script und die tolle Anleitung dazu - hat bei mir auf Anhieb funktioniert, ich wusste nicht mal, das Google diese Möglichkeit bietet.

    Jetzt muss ich mur noch überlegen, wie ich die Daten sinnvoll in Variablen verpacke um die z.b. für die Heizungssteuerung nutzen zu können.

    Zitat Zitat von juwo1811 Beitrag anzeigen
    Insgesamt ist es schon alles ein wenig tricky....Wenn ich mir das nicht aufschreibe und in einem Jahr ist wieder was.. seh ich alt aus.
    geht mir genauso, ich schreibe mir mittlerweile alles was ich so konfiguriere oder bastele in eine Wiki rein
    Geändert von Tuxtom007 (25.11.14 um 20:43 Uhr)

  3. #183
    Registriert seit
    May 2011
    Ort
    Dortmund
    Beiträge
    186

    Hallo zusammen,

    Also ei mir läuf es icht so gut.
    Ich bekomme folgende fehlermeldung:

    Fatal error: Uncaught exception 'Google_Auth_Exception' with message 'Error refreshing the OAuth2 token, message: '{
    "error" : "invalid_grant"
    }'' in C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Auth\OAuth2.php:358
    Stack trace:
    #0 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Auth\OAuth2.php(309): Google_Auth_OAuth2->refreshTokenRequest(Array)
    #1 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Auth\OAuth2.php(234): Google_Auth_OAuth2->refreshTokenWithAssertion()
    #2 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Service\Resource.php(208): Google_Auth_OAuth2->sign(Object(Google_Http_Request))
    #3 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Service\Calendar.php(1120): Google_Service_Resource->call('list', Array, 'Google_Service_...')
    #4 C:\Program Files\IP-Symcon\scripts\55510.ips.php(25): Google_Service_Calendar_CalendarList_Resource->listCalendarList()
    #5 {main}
    thrown in C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Auth\OAuth2.php on line 358
    Abort Processing during Fatal-Error: Uncaught exception 'Google_Auth_Exception' with message 'Error refreshing the OAuth2 token, message: '{
    "error" : "invalid_grant"
    }'' in C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Auth\OAuth2.php:358
    Stack trace:
    #0 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Auth\OAuth2.php(309): Google_Auth_OAuth2->refreshTokenRequest(Array)
    #1 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Auth\OAuth2.php(234): Google_Auth_OAuth2->refreshTokenWithAssertion()
    #2 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Service\Resource.php(208): Google_Auth_OAuth2->sign(Object(Google_Http_Request))
    #3 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Service\Calendar.php(1120): Google_Service_Resource->call('list', Array, 'Google_Service_...')
    #4 C:\Program Files\IP-Symcon\scripts\55510.ips.php(25): Google_Service_Calendar_CalendarList_Resource->listCalendarList()
    #5 {main}
    thrown
    Error in Script C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Auth\OAuth2.php on Line 358

    Gruß Stepahn
    EIB-KNX mit Hager Gateway, Raspberry PI3, 2x 22Zoll Touchscreen (Iiyama ProLite T2250MTS), FritzBox, Qnap,

  4. #184
    Registriert seit
    Aug 2009
    Beiträge
    35

    Erst mal Danke für das Skript!

    Inzwischen redet es mit meinem Google Kalender

    Allerdings werden die Termine ohne korrektes Datum ausgelesen bzw. wird das Datum und die Uhrzeit der Skript-Ausführung vor den Namen des Termin gesetzt und nicht das eigentliche Datum des Termins.

    Kann da jemand helfen?

    Beste Grüße

    Axel

  5. #185
    Registriert seit
    Feb 2012
    Ort
    Ludwigshafen a.Rh.
    Beiträge
    353

    @teas1512

    "Uncaught exception 'Google_Auth_Exception' .... error" : "invalid_grant"
    Hast du in deinem tatsächlichen Google Kalender die generierte eMail zugelassen? Sieht nach einem Berechtigungsproblem aus
    => authentication
    Geändert von juwo1811 (26.11.14 um 00:09 Uhr)
    Homematic CCU, 12 Tür & Fensterkontakte, 7 Raumthermostate,10 Stellregler, 5,85 kWp PV, Solarview, Vivotek IP Kamera und IPS prof.

  6. #186
    Registriert seit
    Sep 2005
    Beiträge
    1,414

    Zitat Zitat von Matraaxel Beitrag anzeigen
    Allerdings werden die Termine ohne korrektes Datum ausgelesen bzw. wird das Datum und die Uhrzeit der Skript-Ausführung vor den Namen des Termin gesetzt und nicht das eigentliche Datum des Termins.
    Axel
    Von mir auch schon mal ein Danke für die Anleitung zum Script.
    Den Fehler mit der Zeit habe ich auch, allerdings nur bei den heutigen Terminen. Termin in der Zukunft werden korrekt ausgelesen.
    Gehakt hatte es bei mir auch erst, weil ich den richtigen Kalendernamen wie im Script gefordert eingetragen habe und nicht die ursprüngliche email Adresse des Kalenders.

    Vllt. kannst du uns nochmal kurz erklären, wie man den Zeitraum bzw. die Anzahl der Eintrage bestimmen kann.
    Kann man die Eintrage irgendwie wieder in ein XML schreiben um das evtl. wieder kompatibel zu den alten Scripten zu machen um nicht allzuviel umauen zu müssen?

    Viele Grüße,
    Doc

    edit: die falsche Zeit wird anscheinend nur bei den ganztägigen Terminen gesetzt
    Geändert von Doctor Snuggles (26.11.14 um 10:40 Uhr)
    Fehler passieren immer wieder. Wichtig dabei ist,
    anschließend noch in der Lage zu sein, davon berichten zu können!!!

  7. #187
    Registriert seit
    Dec 2008
    Beiträge
    261

    Hallo...

    ich verwende bei mir folgende Skripte:

    1. Eine kleine Funktionssammlung, die den Googlekalender ausliest. Die Basis stammt von hier (https://mytechscraps.wordpress.com/2...g-the-php-api/). Die Funktion "ReadCalendar" liefert ein Array zurück, welches man unkompliziert weiterverarbeiten kann.

    $calname = Der Name des Googlekalenders ... z.B. 'xxxxxxxxx@group.calendar.google.com'
    $maxDays = die Anzahl der auszulesenden Tage (ab heute)
    $shortCut = beliebige Zeichenkette (wird im Skript zwei beim Auslesen von mehreren Kalendern verwendet)

    PHP-Code:
    <?
    function ReadCalendar($calName$maxDays$shortCut)
        {
        require_once 
    "google-api-php-client-master/autoload.php";

        
    // Service Account info
        
    $client_id 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com';
        
    $service_account_name 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com';
        
    $key_file_location 'google-api-php-client-master/Google-IPS-Kalenderxxxxxxxxxxxxxxxxx.p12';


        
    $client = new Google_Client();
        
    $client->setApplicationName("TestKalender");
        
    $service = new Google_Service_Calendar($client);
        
    $key file_get_contents($key_file_location);
        
    $cred = new Google_Auth_AssertionCredentials($service_account_name, array('https://www.googleapis.com/auth/calendar.readonly'), $key);

        
    $client->setAssertionCredentials($cred);


        
    // Convert recurring events to single events
        // Look for events in the next week - now to now+1week
        
    $params = array( 'singleEvents' => TRUE,
                             
    'timeMin' => (new DateTime())->format(DateTime::RFC3339),
                             
    'timeMax' => (new DateTime())->add(new DateInterval('P' .$maxDays .'D'))->format(DateTime::RFC3339),);

        
    $events $service->events->listEvents($calName$params);

    //print_r ($events->getItems());

        
    $c=0;
        foreach (
    $events->getItems() as $event)
                    {
                
    $Ergebnis[$c]['StartDatum'] = fmt_gdate($event->getStart());
                
    $Ergebnis[$c]['StartZeit'] = fmt_gtime($event->getStart());
                    
    $Ergebnis[$c]['EndeDatum'] = fmt_gdate($event->getEnd());
                    
    $Ergebnis[$c]['EndeZeit'] = fmt_gtime($event->getEnd());
                    
    $Ergebnis[$c]['Beschreibung'] = iconv('UTF-8''ISO-8859-1',$event->getSummary());
                    
    $Ergebnis[$c]['Ort'] = iconv('UTF-8''ISO-8859-1',$event->getLocation());
                    
    $Ergebnis[$c]['shortCut'] = $shortCut;
                 if(
    $Ergebnis[$c]['StartZeit'] == "00:00" && $Ergebnis[$c]['EndeZeit'] == "00:00")
                    {
                    
    $Ergebnis[$c]['EndeDatum'] = date("d.m.Y"strtotime($Ergebnis[$c]['EndeDatum']."-1 day"));
                        }
                    
    $c++;
                    }
        
    usort($Ergebnis'DateCompare');
        return 
    $Ergebnis;
       }


    function 
    fmt_gdate$gdate )
        {
         if (
    $val $gdate->getDateTime())
             {
           return (new 
    DateTime($val))->format'd.m.Y' );
              }
           else if (
    $val $gdate->getDate())
            {
            return (new 
    DateTime($val))->format'd.m.Y');
            }
        }

    function 
    fmt_gtime$gdate )
        {
         if (
    $val $gdate->getDateTime())
             {
               return (new 
    DateTime($val))->format'H:i' );
             }
           else if (
    $val $gdate->getDate())
              {
            return (
    '00:00');
                }
       }

    function 
    DateCompare($a$b)
         {
        if ( 
    strtotime($a['StartDatum']) == strtotime($b['StartDatum']) ) return 0;
        if ( 
    strtotime($a['StartDatum']) < strtotime($b['StartDatum']) )  return -1;
        return 
    1;
         }

    ?>
    2. Das "Anzeigeskript":

    Ich habe das Skript von crypto (#122) etwas modifiziert, so das es mit der obigen Kalenderfunktion zusammenarbeitet:

    PHP-Code:
    <?

    require_once "Google_Kalender_Funktionen.ips.php";


    // Hier die GoogleKalender eintragen

    //Kalender 1
    $Userid1='kalenderxxxx@gmail.com';
    $Tage1=100;
    $ShortCut1=1;


    //Kalender 2
    $Userid2='xxxxxxxxx@group.calendar.google.com';
    $Tage2=300;
    $ShortCut2=4;


    //Hier die Farbe für die ShortCuts angeben

    $SC_Farbe[1] = "gray";
    $SC_Farbe[2] = "#00AD00";
    $SC_Farbe[3] = "darkred";
    $SC_Farbe[4] = "lightblue";


    //Hier den Style wählen

    $blinkToday true// (true/false) blinken des heutigen Kalendereintrages An/Aus

    /******** Farbnamen, RGB-Formatierung, Hex-Zahlen möglich *********/

    $StyleText[1] = "white"// Textfarbe Datum
    $StyleText[2] = "gray"// Textfarbe Wochentag

    /*** xx-small, x-small, small, normal, large, x-large, xx-large ***/

    /************** oder Angabe in pt - z.B. "12pt" *******************/

    $StyleText[3] = "small"// Textgröße Datum
    $StyleText[4] = "small"// Textgröße Wochentag
    $StyleText[5] = "small"// Textgröße Eintrag


    /****************** Ab hier wieder die Finger lassen **************/
    // Wochentage auf Deutsch

    $tag[0] = "Sonntag";
    $tag[1] = "Montag";
    $tag[2] = "Dienstag";
    $tag[3] = "Mittwoch";
    $tag[4] = "Donnerstag";
    $tag[5] = "Freitag";
    $tag[6] = "Samstag";

    $deco "";

    if(
    $blinkToday)
       {
        
    $deco "blink";
        }
       

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

    $calc1=ReadCalendar($Userid1$Tage1$ShortCut1);
    $calc2=ReadCalendar($Userid2$Tage2$ShortCut2);
    $calcData=array_merge($calc1$calc2);

    //$calcData=$calc2;
    usort($calcData'DateCompare');

    //print_r($calcData);

    $calDataTxt "<table style='border-spacing:0px; width:100%'>"// Starte Tabellenansicht
    $check_date "";

    foreach(
    $calcData as $thisData)
            {
          if(
    $thisData['EndeDatum'] != date("d.m.Y"strtotime("yesterday")))
            {
            if(
    $check_date != "" and $thisData['StartDatum'] != $check_date)
                 {
                 
    $calDataTxt .= "</table></th></tr>";
                 }
            if(
    $thisData['StartDatum'] != $check_date)
               {
               if(
    $thisData['StartDatum'] == date("d.m.Y"))
                    {
                   
    $headerTxt "Heute:";
                   }
                elseif(
    $thisData['StartDatum'] == date("d.m.Y"strtotime("+1 day")))
                   {
                    
    $headerTxt "Morgen:";
                    }
                else
                   {
                   
    $headerTxt $thisData['StartDatum'];
                   }
               
    $calDataTxt .= "<tr><td style='  padding:4px;
                                                            backgroun-color:#213245;
                                                            background: -moz-linear-gradient(left, rgba(31,50,79,0) 40%, #213245 100%);
                                                            background: -webkit-gradient(linear, left top, right top, color-stop(4%,rgba(31,50,79,0)), color-stop(100%,#213245));
                                                            background: -webkit-linear-gradient(left, rgba(31,50,79,0) 40%, #213245 100%);
                                                            background: -o-linear-gradient(left, rgba(31,50,79,0) 40%, #213245 100%);
                                                            background: -ms-linear-gradient(left, rgba(31,50,79,0) 40%, #213245 100%);
                                                            background: linear-gradient(to right, rgba(31,50,79,0) 40%), #213245 100%;'>
                                                            <span style='color:"
    .$StyleText[1].";font-weight:200;font-size:".$StyleText[3]."'>"
                                                            
    .$headerTxt.
                                                            
    "</span></td>
                                               <td style='text-align:right; width:100px; padding:4px;background-color:#213245'>"
                                                            
    ."<span style='color:".$StyleText[2].";font-weight:normal;font-size:".$StyleText[4]."'>"
                                                            
    .$tag[date("w"strtotime($thisData['StartDatum']))].
                                                            
    "<span>".
                                                            
    "</td>
                                                            </tr>
                                                            <tr>
                                                            <th colspan='2' style='text-align:left;padding-left:20px;padding-right:0px;padding-bottom:10px;padding-top:0px;'>
                                                            <table style='border-spacing:0px; width:100%;padding:5px; border:1px solid #1f3247;'>"
    ;
                
    $check_date $thisData['StartDatum'];
                
    $calDataTxt .= SetEintrag($thisData);
               }
              else
               {
               
    $calDataTxt .= SetEintrag($thisData);
               }
            }
         }

    $calDataTxt .= "</table></th></tr></table>"// Tabelle schließen

    SetValue(CreateVariableByName($IPS_SELF"Kalender"3"~HTMLBox"), $calDataTxt);

    /*********** Werte in eine Datei schreiben. Ich habe keine Verwendung dafür *******/

    $calDataTxt '';

    foreach(
    $calcData as $thisData$calDataTxt .= $thisData['StartDatum'].'>'.$thisData['shortCut'].$thisData['Beschreibung']."\n";

    /*

    $handle = fopen("C:/IP-Symcon/Termine.txt", "w");
    fwrite($handle, $calDataTxt);
    fclose($handle);
    */

    if($IPS_SENDER == "Execute")
    {
        echo 
    $calDataTxt;
    }

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

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



    function 
    SetEintrag($thisData)
    {
        global 
    $tag$SC_Farbe$deco$StyleText;
        if(
    $thisData['StartZeit'] == "00:00")
            {
            if(
    $thisData['StartDatum'] == $thisData['EndeDatum'])$thisData['StartZeit']="Ganztägig";
            else 
    $thisData['StartZeit']="bis ".substr($tag[date("w"strtotime($thisData['EndeDatum']))],0,2).", ".$thisData['EndeDatum'];
            }
        else 
    $thisData['StartZeit'] .= " - ".$thisData['EndeZeit']." Uhr";
        if(
    $thisData['StartDatum'] == date("d.m.Y"))
        {
            return 
    "<tr><td><span style='font-weight:normal;font-size:".$StyleText[5].";text-decoration:".$deco.";;color:".$SC_Farbe[$thisData['shortCut']]."'>".$thisData['Beschreibung']."</span></td>
                            <td style='text-align:right;'>
                            <span style='font-weight:normal;font-size:"
    .$StyleText[5].";text-decoration:".$deco.";color:".$SC_Farbe[$thisData['shortCut']]."'>".$thisData['StartZeit']."</span></td></tr>";
        }
        else
        {
            return 
    "<tr><td><span style='font-weight:normal;font-size:".$StyleText[5].";color:".$SC_Farbe[$thisData['shortCut']]."'>".$thisData['Beschreibung']."</span></td>
                            <td style='text-align:right'><span style='font-weight:normal;font-size:"
    .$StyleText[5].";color:".$SC_Farbe[$thisData['shortCut']]."'>".$thisData['StartZeit']."</span></td></tr>";
        }

    }
    ?>
    Beachte:
    require_once "Google_Kalender_Funktionen.ips.php"; '== das Skript zu 1. !!!


    Gruß

    Swifty
    Geändert von Swifty (26.11.14 um 20:05 Uhr)

  8. #188
    Registriert seit
    Sep 2005
    Beiträge
    1,414

    Hallo,

    dein Script zu 1. hatte ich auch schon getestet. Allerdings wusste ich noch nicht, wie ich die Daten verarbeiten sollte, da die Termin ja nicht mehr chronologisch ausgelesen werden. Bei mir werden immer alle ganztägigen zuerst angezeigt, auch die von den nächsten Tagen. Ich weiss nicht, ob das mit der alten API auch schon so war.

    Ich benötige eigentlich ein XML um das mit den weiteren Scripten die ich für den Designer habe weiter zu benutzen.

    Dein 2. Script müsste ich nochmal testen.

    Danke nochmal,
    Doc
    Fehler passieren immer wieder. Wichtig dabei ist,
    anschließend noch in der Lage zu sein, davon berichten zu können!!!

  9. #189
    Registriert seit
    Dec 2008
    Beiträge
    261

    Hallo...

    das Geheimnis liegt hier: "usort($Ergebnis, 'DateCompare');" ...

    Ich habe mal im Script 1 etwas ergänzt. Jetzt gibt die Funktion alles in der richtigen Reihenfolge zurück. Vorher hatte das der obige Befehl im Script 2 übernommen ....

    Gruß

    Swifty

    PS: Bezüglich XML kann ich Dir leider nicht weiterhelfen.

  10. #190
    Registriert seit
    Sep 2005
    Beiträge
    1,414

    Hallo Swifty,

    habe ich das mal so von dir übernommen und funktioniert soweit.

    Ich habe aber das Problem, das du ja für die unterschiedlichen Farben der Kalendereinträge auch unterschiedliche Kalender verwendest.
    Ich habe bei mir alles in einem Kalender und würde das auch gerne beibehalten. In dem alten XML-Script wurden die unterschiedlichen Farben durch Schlüsselwörter wie "Geburtstag", "Tonne", usw. bestimmt.

    Hast du eine Idee, wie man das in deinem Script auch umsetzten könnte?

    Grüße,
    Doc
    Fehler passieren immer wieder. Wichtig dabei ist,
    anschließend noch in der Lage zu sein, davon berichten zu können!!!

Ähnliche Themen

  1. Grafiken statt Text-Variablen im Webfront anzeigen
    Von mr.raschi im Forum WebFront
    Antworten: 7
    Letzter Beitrag: 13.09.09, 09:45
  2. Variablem im Webfront anzeigen
    Von kadorf im Forum WebFront
    Antworten: 5
    Letzter Beitrag: 19.05.09, 18:53
  3. WIIPS Kalender im Dashboard anzeigen
    Von enra im Forum IP-Symcon WIIPS
    Antworten: 0
    Letzter Beitrag: 22.03.09, 15:59
  4. Antworten: 0
    Letzter Beitrag: 09.02.09, 23:59
  5. Variablen im Webfront anzeigen
    Von Specky im Forum WebFront
    Antworten: 0
    Letzter Beitrag: 29.12.08, 14:56