Page 1 sur 48

[Plugin Tiers][Sujet Principal] Plugin iCalendar

Publié : 16 nov. 2015, 17:04
par abarrau
Bonjour,

Je viens de mettre en ligne sur le market le plugin "iCalendar".

Préambule:
Tout d'abord, je m'excuse pour cette livraison tardive et "non" complète, mais l'échéance de la fin du fonctionnement du plugin gCalendar (Google Agenda) était trop proche; et je me devais de vous mettre cette version en ligne.

Son fonctionnement :
Le plugin iCalendar, reprend les grandes lignes du plugin gCalendar, mais avec une approche différente.
On n'est plus sur un synchro à la journée avec un flux (période) uniquement orienté à la demande, nous sommes sur la récupération d'un agenda complet et donc plus volumineux à traiter.
Pour ce fait, la fonction "synchro" est traitée indépendamment des taches récurrentes (cron() minute) ; l'intérêt d'avoir une synchro très fréquente n'avait plus d'intérêt et donc le temps minimum entre 2 synchro est porté à 30mins, les autres valeurs restent les mêmes (seul le 15mins disparaît).

Remarque : Du fait que les taches de synchro et ceux du traitement sont asynchrones, ne pas prévoir une tache qui démarre à "heure fixe" et qui corresponde à une heure de synchro.
Exemple : dernière synchro à 11h30, je crée un événement démarrant à 12h à 11h43. lors de la synchro suivante (12h), il se peut qu'elle ne soit pas vue.
en général, les planning sont qd mm prévue à l'avance et l'on ne crée pas des événements dans les 30 mins précédents sont actions.
>> Quoi qu'il en soit, ce fonctionnement va évoluer également dans les futurs version :
- avec "rattrapage" en cas de non déclenchement d'un scénario par exemple ;
- gestion différente de la synchro en mode "daemon" pour ne plus être lié à des heures fixes où bcq d'autres actions se déroulent également au sein de la box ....

Dans cette version (0.0.1), le plugin n'a pas de "widget", mais toutes les fonctionnalités existantes dans la dernière version de gCalendar sont reportées dans iCalendar. Les données s'affichent dans le widget standard de jeedom (données texte brute ; et je l'accorde illisible).
Pour avoir une lecture plus facile, vous pouvez regarder via la bouton "tester" de votre commande agenda.
Pour créer un agenda, mettre l'url privé de Google Agenda au format ICS ; les événements seront alors disponibles au niveau de la commande à la minute suivante.
Vous pouvez alors changer votre commande au sein de scénario si vous l'utiliser en mode "comparaison" ... Pour ceux qui l'utilise en mode "lancement de scénario" aucun changement.

Pour la documentation, se reporter à la doc gCalendar, avant que ne mette à jour celle du plugin iCalendar.

Les tests n'ont été réalisés pour l'instant qu'avec un flux "Google agenda".
Pour ceux qui souhaitent travailler avec des calendriers CalDav, j'attends vos retours ...

Problèmes rencontrés :
J'ai rencontré différents problèmes par rapport au flux xml.
- le contenu : le flux n'est plus orienté période, mais est complet ... (ce qui est mieux, car en cas d'absence internet, tout ce qui récurrent n'a plus besoin d'internet pour fonctionner) ; j'ai déjà parlé ci-dessus de l'implémentation de la synchro
- les dates : certaines dates/heures sont directement à l'heure locale, alors que d'autres sont à l'heure GMT ; il faut donc faire des conversions par rapport au timezone. >> je suis donc intéressé d'avoir des retours par rapport aux personnes en dehors du fuseau "europe".

Le futur :
Cette version est encore "loin" de ce que je voulais sortir et les tests n'ont pas put être poussés à leur maximum (mais comme indiqué, je n'avais plus le temps). J'attends en général 2/3j après une évolution/correction avant de la mettre à dispo ...
Donc pour ce fait, cette 1ère version vous est offerte ; par contre, comme annoncée elle passera payante (2e) à partir de la prochaine version (d'ici le 22/11, j'espère).

Point d'attention :
Le fait d'avoir sortie la récupération du flux et sa mise en forme de la fonction cron() permet de gagner en temps sur cette fonction et donc n'a pas d'impact sur les autres plugins.
Par contre, le traitement de la récupération flux est réalisé sur la fonction cron30(), on peut constater que sur une petite machine (MINI / RPI1), les temps de traitement d'un flux avec 5/6 événements récurrents peuvent atteindre les 40sec.

Merci de votre attention et à bientot pour la v0.0.2.

Re: [Sujet officiel] Plugin iCalendar

Publié : 16 nov. 2015, 17:04
par abarrau
** Versionning :

Le suivi du changeLog se situe maintenant à l'adresse suivante :
https://github.com/abarrau/jeedom-plugi ... ngelog.txt


** Evolutions prévues :
- amélioration des recherches au niveau de la commande "fonctions" ;
- valider l'execution d'un scénario ;
- définir un offset à l'événement sur heure de début ou de fin ;
- mise en place de la synchro via un daemon ;
- gestion des agendas caldav (avec authentification) ;


** Anos connues :

Re: [Sujet officiel] Plugin iCalendar

Publié : 16 nov. 2015, 21:08
par Masterfion
Salut Aurélien, j'utilise de nombreux agendas (10)... je vais tous les configurer sur ce nouveau plugin pour essayer de t'aider au mieux.
A suivre :)

Re: [Sujet officiel] Plugin iCalendar

Publié : 16 nov. 2015, 21:28
par Masterfion
Et là, c'est le drame !

J'ai configuré 2 agendas (pour commencer) et j'ai ensuite voulu voir le résultat sur le Dashboard.
Impossible d'afficher mon dashboard (t'inquiète, je ne suis pas bloqué) et les logs nginx affichent ceci à chaque chargement du dash :

Code : Tout sélectionner

2015/11/16 21:20:13 [error] 561#0: *16602 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Cannot redeclare class ICal in /usr/share/nginx/www/jeedom/plugins/dayinfo/core/php/class.iCalReader.php on line 23" while reading response header from upstream, client: 192.168.1.11, server: , request: "GET /index.php?v=d&p=dashboard&object_id=14&category=all HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "192.168.1.200", referrer: "http://192.168.1.200/index.php?v=d&p=dashboard"

J'ai supprimé un agenda pour n'en avoir qu'un seul... idem.
Je poursuis mes tests :D

Re: [Sujet officiel] Plugin iCalendar

Publié : 16 nov. 2015, 21:50
par Darkeyes
Salut,

ton plugin fait planter le système de mise a jour de jeedom erreur 500.

voici les log ngnix

Code : Tout sélectionner

2015/11/16 21:44:52 [error] 12619#0: *288679 FastCGI sent in stderr: "PHP message: PHP Fatal error:  require_once(): Cannot redeclare class ical in /usr/share/nginx/www/jeedom/plugins/dayinfo/core/class/dayinfo.class.php on line 21" while reading response header from upstream, client: XX.XX.XX.XX, server: , request: "POST /core/ajax/update.ajax.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "XX.XX.XX.XX", referrer: "https://XX.XX.XX.XX/index.php?v=d&p=update"
2015/11/16 21:44:54 [error] 12619#0: *288965 FastCGI sent in stderr: "PHP message: PHP Fatal error:  require_once(): Cannot redeclare class ical in /usr/share/nginx/www/jeedom/plugins/dayinfo/core/class/dayinfo.class.php on line 21" while reading response header from upstream, client: XX.XX.XX.XX, server: , request: "POST /core/ajax/update.ajax.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "XX.XX.XX.XX", referrer: "https://XX.XX.XX.XX/index.php?v=d&p=update"
2015/11/16 21:45:11 [error] 12621#0: *289055 FastCGI sent in stderr: "PHP message: PHP Fatal error:  require_once(): Cannot redeclare class ical in /usr/share/nginx/www/jeedom/plugins/dayinfo/core/class/dayinfo.class.php on line 21" while reading response header from upstream, client: XX.XX.XX.XX, server: , request: "POST /core/ajax/update.ajax.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "XX.XX.XX.XX", referrer: "https://XX.XX.XX.XX/index.php?v=d&p=update"
2015/11/16 21:45:50 [error] 12621#0: *288893 FastCGI sent in stderr: "PHP message: PHP Warning:  rmdir(/tmp/iCalendar/): Directory not empty in /usr/share/nginx/www/jeedom/plugins/iCalendar/plugin_info/install.php on line 60" while reading response header from upstream, client: XX.XX.XX.XX, server: , request: "POST /core/ajax/plugin.ajax.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "XX.XX.XX.XX", referrer: "https://XX.XX.XX.XX/index.php?v=d&p=plugin"
la dernière ligne correspond a la suppression du plugin.
Après suppression le contrôle des mise a jour refonctionne

Re: [Sujet officiel] Plugin iCalendar

Publié : 16 nov. 2015, 21:53
par Masterfion
Je confirme, erreur 500 ici aussi.
Pffff, ça va te mettre la pression ça :)

T'inquiète, tu vas trouver.

Re: [Sujet officiel] Plugin iCalendar

Publié : 16 nov. 2015, 21:55
par abarrau
Bon j'ai un problème de dépendance avec le plugin "Info du jour" ...
Nous en avions parlé avec @lunarok de cette possibilité, il faut que l'on regarde ce que l'on peut faire (on utilise la même class pour traiter les fichier ics)

Re: [Sujet officiel] Plugin iCalendar

Publié : 16 nov. 2015, 21:57
par abarrau
@Darkeyes ce n'est pas la dernière ligne qui pose problème .. ce n'est qu'un warning ...
ceux sont les lignes précédentes qui où là nous sommes en "fatal error"

Re: [Sujet officiel] Plugin iCalendar

Publié : 16 nov. 2015, 21:59
par Darkeyes
Je serai intéressé de pouvoir utiliser caldav, j'ai notamment mes agendas auto-hébergé avec baikal, fonctionne parfaitement.
Mais pas moyen de m'en servir sous jeedom :(

Toujours partant pour aider a débugger et beta tester :D

Effectivement, il manque un plugin assez large pour être compatible avec plusieurs plate formes

Re: [Sujet officiel] Plugin iCalendar

Publié : 16 nov. 2015, 22:20
par abarrau
@sarakha63, ok merci pour l'info .. je vais regarder ce point.
@lunarok, pourras-tu voir pour mettre le if aussi au niveau de ton plugin également ?
En attendant, je vais changer le nom de la class pour permettre à tout le monde de l'utiliser rapidement ...

Edit: je vais rajouter ce bout de code quand ça sera bon sur le tien aussi :

Code : Tout sélectionner

if (!class_exists('iCalReader')) {
	include_file('3rdparty', 'class.iCalReader', 'php', 'iCalendar');
}
Pour tout le monde, je viens de mettre le plugin en privé .. pour éviter le téléchargement d'une version posant problème !
Je vous tiens au courant rapidement.
Merci et désolé pour ce problème ...

Re: [Sujet officiel] Plugin iCalendar

Publié : 16 nov. 2015, 22:34
par lunarok
Je viens de pousser au market

Re: [Sujet officiel] Plugin iCalendar

Publié : 16 nov. 2015, 23:02
par SBO
Merci @abarrau je viens de tester avec un calendar Google pas de problème.

Par contre penses tu intégrer le caldav avec authentification ?

Stéphane

Re: [Sujet officiel] Plugin iCalendar

Publié : 16 nov. 2015, 23:54
par abarrau
Bon je viens de remettre une nouvelle version (0.0.2) en ligne corrigeant le problème de class commune avec le plugin "infos du jour" (merci Lunarok) pour ta rapidité.
>> pensez donc à mettre à jour vote plugin "info du jour" avant d'utiliser ce plugin.
J'attend vos retours.

Re: [Sujet officiel] Plugin iCalendar

Publié : 17 nov. 2015, 00:04
par abarrau
SBO a écrit : Par contre penses tu intégrer le caldav avec authentification ?
@SBO, peux-tu me dire où trouver un calendrier caldav pour faire des tests ?

Re: [Sujet officiel] Plugin iCalendar

Publié : 17 nov. 2015, 06:36
par oviri
abarrau, je pense que tu as eu raison de te méfier du timezone, je crois que j'ai un soucis avec.

Pour un événement iCalTest planifié aujourd'hui le 16 à 19h20, dans le .ics il est décalé de +10h (DTSTART:20151117T052000Z ; si je comprends bien 5h20 demain matin)

rappel : mon TZ est GMT-10

je te met un peut plus du .ics :

Code : Tout sélectionner

BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:Jeedom
X-WR-TIMEZONE:Pacific/Tahiti
X-WR-CALDESC:
BEGIN:VEVENT
DTSTART:20151117T052000Z
DTEND:20151117T052100Z
DTSTAMP:20151117T051819Z
UID:ouneldatf9nb0fk7tc4h8axljo@google.com
CLASS:PUBLIC
CREATED:20151116T214300Z
DESCRIPTION:
LAST-MODIFIED:20151117T051742Z
LOCATION:
SEQUENCE:18
STATUS:CONFIRMED
SUMMARY:iCalTest
TRANSP:OPAQUE
END:VEVENT
edit : dans jeedom le scénario que doit lancer l’événement n'est bien entendus pas lancé

Re: [Sujet officiel] Plugin iCalendar

Publié : 17 nov. 2015, 06:50
par Darkeyes
abarrau a écrit :
SBO a écrit : Par contre penses tu intégrer le caldav avec authentification ?
@SBO, peux-tu me dire où trouver un calendrier caldav pour faire des tests ?
Salut
Je peux te créer un compte sur mon Baïkal avec un calendrier ou 2 et t'envoyer les infos par MP si tu veux :) y a pas de problème si ça permet d'intégrer caldav avec auth

Re: [Sujet officiel] Plugin iCalendar

Publié : 17 nov. 2015, 07:49
par abarrau
@Darkeyes, oui je veux bien merci ... mais je promet pas de regarder dans les jours qui viennent .. on verra !

@Oviri, peux-tu m'extraire la partie "BEGIN:STANDARD" de la partie "TIMEZONE" afin que je vérifie ce que tu as de configuré ?
J'ai mis en place un offset des dates grace à cette infomation, mais si elle n'y ai pas, je ne pourrais malheureusement pas savoir de combien je dois décaler (ou alors en utilisant ce qui est paramétré dans jeedom ... mais c'est dommage que l'information soit pas systématique dans le flux ics).
Chez moi pour un même calendrier, j'ai des date/heure correctement renseigné et d'autres en GMT .. incompréhensible ... la différence est que ceux en heure GMT se termine par un Z. ... je peux donc agir grace à ça ... mais il faut que je sache de combien je dois faire le delta.

Re: [Sujet officiel] Plugin iCalendar

Publié : 17 nov. 2015, 07:50
par abarrau
PS : la notion privé est enlevé du plugin, vous permettant de mettre à jour pour ceux qui avait un problème ...

Re: [Sujet officiel] Plugin iCalendar

Publié : 17 nov. 2015, 08:10
par Darkeyes
abarrau a écrit :@Darkeyes, oui je veux bien merci ... mais je promet pas de regarder dans les jours qui viennent .. on verra !
Pas de problème je t’envoie ça ce soir.

J’avoue utiliser baikal depuis plusieurs années, pour mes calendriers et contact et c'est vraiment super stable et légé, il utilise la lib SabreDAV.

Je suis patient, j’attends depuis plusieurs mois déjà cette possibilité, je peux encore patienter ;)

Re: [Sujet officiel] Plugin iCalendar

Publié : 17 nov. 2015, 08:12
par lunarok
@Darkeyes : Baïkal propose pas un lien ical ? Sabredav l'a et c'est ce que propose owncloud. En général le ical reste le format de partage sans accès

Envoyé de mon A0001 en utilisant Tapatalk