Google Calendar

L'API Zodianet pour ZiBASE

Message(s) : 7
Inscrit le : 22 Juil 2012, 18:17
MessagePublié: 22 Juil 2012, 21:19
Bonjour a tous,

D'abord merci pour la mise en place de ce site, c'est une bonne idée et j’espère qu'il va se développer rapidement. En tout cas je le suivrais

Je lance ce sujet car j'aimerais pouvoir utilisé google calendar dans ma zibase, je sais qu'il est possible de le faire via des scripts php mais il faut avoir son serveur dédié a la maison.
Alors voila un script que vous pourriez hébergé sur ce site, a moins qu'il y ait un moyen grace a la zapi (que je ne connais pas)

Merci a tous,
Pascal
Avatar de l’utilisateur
Site Admin
Message(s) : 393
Inscrit le : 16 Fév 2011, 14:36
Localisation : Denguin -64-
MessagePublié: 22 Juil 2012, 22:06
C'est effectivement une bonne idée à creuser et je crois que cédric a écrit un article à ce sujet récemment. Je pense qu'il pourrait donc nous apporter ses connaissances et nous aider dans cette démarche...
Image

Message(s) : 33
Inscrit le : 22 Juil 2012, 21:27
MessagePublié: 22 Juil 2012, 23:16
j utilise son script sur ma zibase heberger sur mon nas je cherche maintenant a le faire fonctionnee avec une reconnaissance si c une absence boulot(presence chez moi )ou vacance(absence donc horaire permanente de detection)
zibase
4 CH54755 dio 1000w+ 2 CH54785+ 2 DI-O CH54725+ 1 DI-O CH54715+ 1 DIO CH54761+1 DI-O CH54771+2 dio exterieur+1 sd90+1 co2 cod18+1 wd29+1 gd18+1owl cm119+2 THGR810+2 dio CH54781+2 UM7206+2 KR18+1 kr22e+1 TM13+1 dio 54703+ 1 KAROTZ 3 delta dore 4630

Message(s) : 25
Inscrit le : 19 Juil 2012, 21:18
MessagePublié: 23 Juil 2012, 17:27
Par contre il faut renseigner l'adresse de son calendrier dans un des fichiers...
Donc il faudrait le modifier pour pouvoir passer son adresse perso d'une manière ou d'un autre!
Avatar de l’utilisateur
Site Admin
Message(s) : 393
Inscrit le : 16 Fév 2011, 14:36
Localisation : Denguin -64-
MessagePublié: 23 Juil 2012, 17:42
Et bien si quelqu'un s'y lance et trouve une solution universelle pour que chacun puisse l'utiliser et bien pourquoi pas...
Image

Message(s) : 66
Inscrit le : 24 Juil 2012, 07:18
MessagePublié: 24 Juil 2012, 07:40
Bonjour,

c'est un très bonne idée, j'avais déjà modifié le script de Cédric pour répondre à mes besoins.
Je suis en train de l'adapter pour le rendre "générique".
Pour tout dire il est quasi terminé, et en cours de test.
Je finalise cela et vous l'envoi j'espère d'ici la fin de la semaine pour beta-test. :D

A+
Richard
Cordialement, Richard

Message(s) : 66
Inscrit le : 24 Juil 2012, 07:18
MessagePublié: 24 Juil 2012, 21:19
Bon,
voici le petit script, en espérant qu'il vous plaira.

Je me suis fortement inspirer du très beau travail de Cédric : http://www.maison-et-domotique.com/book ... er-google/
J'ai gardé les mêmes balises (aujourdhui et demain).


Il faut suivre ces explications et remplacer le fichier agenda.php par le script ci-dessous.

Pour être générique, j'ai modifié le script de Cédric en ajoutant 2 paramètres :
1. L'URL de votre calendrier (cal), mais seulement la partie en rouge ci-dessous (e-mail et code crypté du calendrier), pour éviter d'avoir une URL trop longue :
http://www.google.com/calendar/feeds/qsnmyourtcndaoeh6mt3663ing%40group.calendar.google.com/private-1ac30ee2598467tfb4807d7096dc6/basic

2. Un tableau de transcodage du calendrier (decode), qui permet de transformer l'intitulé de la journée (par exemple travail) en code numérique (plus facile à exploiter dans la zibase je trouve). Mais vous pouvez tout aussi bien mettre un autre code. Chaque champs est séparé par une virgule.
Par exemple : 0,travail,1,maison,3,conges
Si vous indiqué "travail" dans l'agenda Gmail, le script retournera 0 dans cet exemple.
/!\ C'est case sensitive (sensible au majuscule/minscule).

Moi j'utilise que des nombres premiers, qui permet ensuite dans les scénarios de faire un MOD pour identifier le bon mode.

Voici l'url complète à mettre dans le scénario de la zibase (cf. chapitre III de la page de Cédric)

http://ip/.../agenda.php?cal=qsnmyourtcndaoeh6mt3663ing%40group.calendar.google.com/private-1ac30ee2598467tfb4807d7096dc6&decode=0,travail,1,maison,3,conges

En rouge : le calendrier
En vert le tableau de transcodage

Contenu du script agenda.php
Code : Tout sélectionner
<?php
require_once 'GoogleAgenda.php';
require_once 'GoogleAgendaEvent.php';
require_once 'GoogleAgendaException.php';

// Recupere les variables passes en parametre de l'URL
$url_cal=$_GET['cal'];
$decode=$_GET['decode'];


// On remplit le tableau qui permet le decodage
$items = explode(",", $decode);
           
            for($n = 0, $m = count($items); $n < $m; $n=$n+2){
                $tableau_decode[$items[$n]] = $items[$n+1];
            }
           
               

// Lecture de l'agenda
try {
    $oAgendaConges = new GoogleAgenda("https://www.google.com/calendar/feeds/".$url_cal."/basic");  // Compléter ici par l'url privée de l'agenda Google
   
    $aAujourdhui = $oAgendaConges->getEvents(array(
      'startmin' => date('Y-m-d'),
        'startmax' => date('Y-m-d',strtotime("+24 hours")),
        'sortorder' => 'ascending',
        'orderby' => 'starttime',
        'maxresults' => '1',
        'startindex' => '1',
        'search' => '',
        'singleevents' => 'true',
        'futureevents' => 'false',
        'timezone' => 'Europe/Paris',
        'showdeleted' => 'false'
    ));
   $aDemain = $oAgendaConges->getEvents(array(
      'startmin' => date('Y-m-d',strtotime("+24 hours")),
      'startmax' => date('Y-m-d',strtotime("+48 hours")),
      'sortorder' => 'ascending',
      'orderby' => 'starttime',
      'maxresults' => '1',
      'startindex' => '1',
      'search' => '',
      'singleevents' => 'true',
      'futureevents' => 'false',
      'timezone' => 'Europe/Paris',
      'showdeleted' => 'false'
    ));
   
   echo '<?xml version="1.0" encoding="utf8" ?>';
 
// Lecture de l'agenda du jour

   foreach ($aAujourdhui as $oAujourdhui) {
         // transforme l'intitule en code pour qu'il soit plus facilement utilisable sous la zibase
         echo '<aujourdhui>'.array_search(($oAujourdhui->getTitle()),$tableau_decode).'</aujourdhui>';
         
         }
// Lecture de l'agenda de demain   
   foreach ($aDemain as $oDemain) {
         // transforme l'intitule en code pour qu'il soit plus facilement utilisable sous la zibase
         echo '<demain>'. array_search(($oAujourdhui->getTitle()),$tableau_decode) . '</demain>';
      }
}

catch (GoogleAgendaException $e) {
    echo $e->getMessage();
}



?>


Je n'ai pas tout testé à fond, il se peut donc qu'il y ait quelque bug.
A tester donc.
N'hésitez à me faire vos retours.

A+
Richard
Cordialement, Richard

Message(s) : 33
Inscrit le : 22 Juil 2012, 21:27
MessagePublié: 09 Août 2012, 00:42
cool sa marche nickel chez moi mais je ne sait pas comment gerer le scenario pour activer 3 calendrier different sur la zibase si tu as un petit tuto
zibase
4 CH54755 dio 1000w+ 2 CH54785+ 2 DI-O CH54725+ 1 DI-O CH54715+ 1 DIO CH54761+1 DI-O CH54771+2 dio exterieur+1 sd90+1 co2 cod18+1 wd29+1 gd18+1owl cm119+2 THGR810+2 dio CH54781+2 UM7206+2 KR18+1 kr22e+1 TM13+1 dio 54703+ 1 KAROTZ 3 delta dore 4630

Message(s) : 58
Inscrit le : 03 Sep 2012, 14:19
MessagePublié: 06 Sep 2012, 09:58
Bonjour a tous,

j'ai supprimé mon post précédent.
En fait j'au publié les scripts sur le serveur de pages perso free mais ça ne fonctionne pas, j'ai une erreur apparemment liée à l'incompatibilité du serveur avec les instructions xml contenues dans le script mb_stchrrt()

Si je mets les scripts sur un dossier ftp de mon NAS, le script n'est pas executé.

Ma question est pour ceux pour qui ça fonctionne, quel serveur utilisez vous ?
Merci par avance.

Tom
Zibase 2/Micro dimmer DI-O/Prises DI-O/Modules Volets Roulants DI-O/X2D radiateurs/Sondes T°C Oregon/Motorisation Portail/Alarme/DO DI-O/TM13/Prises X10/Karotz/OWL conso électrique/FreeBox V6/Onduleur/NAS/IPCam

Message(s) : 58
Inscrit le : 03 Sep 2012, 14:19
MessagePublié: 06 Sep 2012, 14:02
Je me réponds à moi même,

j'ai mis les script chez un autre hébergeur et ça fonctionne, du moins partiellement : il ne renvoie que la valeur "aujourdhui" mais pas "demain". C'est pas grave pour mon utilisation mais bon.

Donc free n'est pas compatible

juste pour info, j'ai utilisé olympe :www.olympe.in/fr, qui est gratuit, et sur lequel j'ai mis le script génerique.

A+
Zibase 2/Micro dimmer DI-O/Prises DI-O/Modules Volets Roulants DI-O/X2D radiateurs/Sondes T°C Oregon/Motorisation Portail/Alarme/DO DI-O/TM13/Prises X10/Karotz/OWL conso électrique/FreeBox V6/Onduleur/NAS/IPCam
Suivant

Retour vers ZAPI

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité