03-10-2017, 04:09 PM
Bonjour
Utiliser les agenda Google et remonter chaque événement dans une variable LD.
Principe de fonctionnement :
Chaque jour et J+1, l'évènement présent dans dans le calendrier est envoyé au serveur LD.
La mise à jour est automatique, une fois le script créé et paramétré, aucune autre action n’est à prévoir. Chaque lancement du script se fera selon une durée paramétrable.
L’idée est de pouvoir déclencher des scénarios en fonction du nom de l'évènement présent dans le calendrier.
Par exemple, ci-dessous dans le calendrier « congés », j’ai spécifié des dates dans l’agenda avec comme titre « CONGES ».
Quand la date arrivera, l'évènement sera récupéré par le serveur LD pouvant ainsi déclencher des automates ou scénario.
A savoir qu’il est possible de créer autant de calendriers que l’on souhaite mais il n’est pas possible d’utiliser un seul calendrier avec plusieurs évènements sur la journée, le script récupérant uniquement le premier évènement.
A l’heure actuelle, je ne récupère que les titres, mais peut-être plus tard, dans d’autres versions, il sera possible de récupérer les heures de début et fin d’évènement.
Personnelement, avec cet outil, je vais me passer du plugin « Planification » présent sur nos serveur LD qui pour moi n’est pas adapté.
Mon chauffage sera géré grâce à ce script…
Ayant plusieurs planning horaires au niveau du boulot, il sera très facile grâce au script de déclencher mes automates de gestion du chauffage qui seront conditionnés par la valeur de ma variable récupérée à l’instant « t » .Je n’aurai juste qu’à tenir à jour mon agenda google.
Prérequis :
- Un serveur Lifedomus avec le Plugin « écoute »
- Un ou plusieurs agenda Google
- Avoir redirigé le port Wan 8080 vers l’IP du serveur LD
( Attention, le fait d'ouvrir le port 8080 vers l'extérieur expose directement le serveur et sa console d'administration. S'assurer d'avoir un mot de passe Admin fort )
- Avoir un compte Google drive
Installation :
- Créer un connecteur « écoute » :
Ensuite créer un équipement « écoute » :
- Donner lui un nom et spécifier le « connecteur écoute »
Créer ensuite 2 variables et donnez-lui un nom (par ex. « aujourd’hui » et « demain ») :
( Attention , "sensible à la casse" )
C’est tout ce qu’il y a à faire coté « serveur LD »
Maintenant, rendez-vous sur votre « Drive » Google et créer un nouveau script :
Donner lui un nom et copier le script ci-dessous :
Enregistrez le script (on le modifiera un peu après) et exécutez-le :
Cliquer sur « examiner les autorisations »
Autoriser Google à accéder à vos données :
Maintenant, on va modifier le script selon vos infos :
Ligne 30, renseigner le nom de l’agenda à traiter et le nom des variables à renseigner ( Attention , "sensible à la casse" ) :
Ligne 92 et 100
Spécifier l’adresse externe (ou DNS) de votre serveur Lifedomus (bien penser à rediriger le port 8080) et renseigner si vous souhaitez votre adresse e-mail (en cas d’échec du script)
On va vérifier que tout fonctionne correctement…
Ouvrez un projet DS et créer un « état », puis sélectionner votre équipement « écoute », vous devriez retrouver le nom des 2 variables crées.
Vous avez compris, à chaque exécution du script, ces variables vont être renseignées soit « aujourd’hui » et « demain ».
Testez en lançant le script manuellement : le nom que vous avez saisi dans l’agenda apparait donc :
Ca fonctionne ? Impec ! :eek-1e6fb:
Maintenant, il ne reste plus qu’à automatiser l’exécution de ce script.
Cliquer sur l’horloge et ajouter un déclencheur :
Renseigner les différents champs. Perso, je le déclenche toutes les heures puis validez :
Voilà, le script tourne maintenant tout seul, toutes les heures il va aller scruter vos agendas et renseigner les titres des évènements du calendrier dans vos variables LD.
Si aucun évènement n’est trouvé, la valeur « Ras » est envoyée au serveur LD. Il est possible de remplacer ce mot par un autre en modifiant la ligne 60 du script.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Voici par exemple comment je gère les différents planning de chauffage.
Je conditionne les horaires de déclenchement et consignes en fonction du nom de mes variables ( planning_1, planning_2, etc…)
Si vous vous demandez à quoi peut encore servir ce script, voici des exemples :
- Gérer les congés
- Les absences et présence
- Récupérer les jours fériés
- Obtenir les vacances scolaires
- Anniversaires
- Etc…
Google met à dispo toutes sortes d’agenda facilement importable, pleins d’autres sont dispos sur des sites tiers à importer.
Ce qui est impératif, c’est que le calendrier se trouve dans « mes agendas » et pas « autres agenda »
Voici un dernier exemple, je vais le mettre en place un calendrier pour afficher le « saint du jour » :
Je créer un agenda que je nomme « Saint »
Puis j’importe un calendrier « Ical »
Une fois importé :
Je créer un équipement « écoute », le nomme « Saint du jour » et créé une variable « Saint » :
Je modifie mon script afin d’ajouter un nouveau calendrier :
Je créé un "painter" sous DS et selectionne ma variable :
Et voilà, chaque jour les Saints s’afficheront automatiquement sur ma page d’accueil de mon projet sous DS :
Enjoy :wink-1627:
Utiliser les agenda Google et remonter chaque événement dans une variable LD.
Principe de fonctionnement :
Chaque jour et J+1, l'évènement présent dans dans le calendrier est envoyé au serveur LD.
La mise à jour est automatique, une fois le script créé et paramétré, aucune autre action n’est à prévoir. Chaque lancement du script se fera selon une durée paramétrable.
L’idée est de pouvoir déclencher des scénarios en fonction du nom de l'évènement présent dans le calendrier.
Par exemple, ci-dessous dans le calendrier « congés », j’ai spécifié des dates dans l’agenda avec comme titre « CONGES ».
Quand la date arrivera, l'évènement sera récupéré par le serveur LD pouvant ainsi déclencher des automates ou scénario.
A savoir qu’il est possible de créer autant de calendriers que l’on souhaite mais il n’est pas possible d’utiliser un seul calendrier avec plusieurs évènements sur la journée, le script récupérant uniquement le premier évènement.
A l’heure actuelle, je ne récupère que les titres, mais peut-être plus tard, dans d’autres versions, il sera possible de récupérer les heures de début et fin d’évènement.
Personnelement, avec cet outil, je vais me passer du plugin « Planification » présent sur nos serveur LD qui pour moi n’est pas adapté.
Mon chauffage sera géré grâce à ce script…
Ayant plusieurs planning horaires au niveau du boulot, il sera très facile grâce au script de déclencher mes automates de gestion du chauffage qui seront conditionnés par la valeur de ma variable récupérée à l’instant « t » .Je n’aurai juste qu’à tenir à jour mon agenda google.
Prérequis :
- Un serveur Lifedomus avec le Plugin « écoute »
- Un ou plusieurs agenda Google
- Avoir redirigé le port Wan 8080 vers l’IP du serveur LD
( Attention, le fait d'ouvrir le port 8080 vers l'extérieur expose directement le serveur et sa console d'administration. S'assurer d'avoir un mot de passe Admin fort )
- Avoir un compte Google drive
Installation :
- Créer un connecteur « écoute » :
Ensuite créer un équipement « écoute » :
- Donner lui un nom et spécifier le « connecteur écoute »
Créer ensuite 2 variables et donnez-lui un nom (par ex. « aujourd’hui » et « demain ») :
( Attention , "sensible à la casse" )
C’est tout ce qu’il y a à faire coté « serveur LD »
Maintenant, rendez-vous sur votre « Drive » Google et créer un nouveau script :
Donner lui un nom et copier le script ci-dessous :
Code PHP :
function myFunction() {
}
//***********************************************************************************************//
// Script Google pour mise à Jour du(des) calendrier(s) Google vers le serveur domotique Lifedomus
// Permet de récupérer le Titre de l'évenement du Jour + le lendemain des calendriers Google Agenda
// Script réalisé par moicphil et basé sur celui de Eedomusbox
// Version 2.0
//***********************************************************************************************//
function Calendrier()
{
// Définition Variable
var TodayDebut = new Date();
var TodayFin = new Date();
var DemainDebut = new Date();
var DemainFin = new Date();
// Definition des dates
TodayDebut.setHours(0,0,0,0);
TodayFin.setTime( TodayDebut.getTime() + ((60*60*24) * 1000) ); //1 jour de plus
DemainDebut = TodayFin;
DemainFin.setTime( DemainDebut.getTime() + ((60*60*24) * 1000) ); //1 jour de plus
//***********************************************************************************************//
// Recherche des différents calendriers et mise à jour des différentes variables "écoute" sur Lifedomus
//***********************************************************************************************//
Get_calendar("Chauffage","aujourd'hui","demain" );
//Get_calendar("xxxxxx","yyyyyyyyyyyyyyyy","zzzzzzzzzzzz" );
// ...
//***********************************************************************************************//
//Fonction Get_calendar
//***********************************************************************************************//
function Get_calendar(Fv_Cal,Fv_var1,Fv_var2)
{
var Cal = CalendarApp.getCalendarsByName(Fv_Cal)[0];
var EventsA = Cal.getEvents(TodayDebut, TodayFin); //Journée d'aujourd'hui
var EventsD = Cal.getEvents(DemainDebut, DemainFin); // Journée de demain
// Récupération des différentes journée
Look_Calendar( EventsA, Fv_var1 );
Look_Calendar( EventsD, Fv_var2 );
}
//***********************************************************************************************//
// Fonction Look_Calendar
//***********************************************************************************************//
function Look_Calendar(FV_Events,Fv_var)
{
// S'il n'y a aucun événement c'est que c'est égale à RAS
if ( FV_Events.length == 0 )
{
Error = Error || AppelAPI(Fv_var , 'Ras' ); // Changer "RAS" par le nom de votre choix, s'affiche par défaut si aucun évènement
}
else
{
for (i in FV_Events)
{
var Titre = FV_Events[i].getTitle(); // On récupère le titre de l’événement
var Description = FV_Events[i].getDescription(); // On récupère la description de l’événement
var Error = null; // On initialise le retour d’erreur à null
// Mise à jour de l'api
Error = Error || AppelAPI(Fv_var , Titre ); // Mise à jour
break;
}
}
}
//***********************************************************************************************//
// Fonction
//***********************************************************************************************//
function AppelAPI(Fv_var, Titre)
{
var Reponse;
var ReponseText;
Reponse = UrlFetchApp.fetch("http://IP_SERVEUR_LD:8080/UniversalListen?" + Fv_var + "=" + Titre);
ReponseText = Reponse.getContentText();
Logger.log (ReponseText);
if (ReponseText.indexOf("error_code") >= 0)
{
var body = Logger.getLog();
MailApp.sendEmail("MONMAIL@XXXXX.com" , " Erreur du script Lifedomus calendar ", " Une erreur s’est produite lors à la réalisation de l’événement [" + Titre + "] "+ body);
}
return(ReponseText.indexOf("error_code") >= 0);
}
}
Enregistrez le script (on le modifiera un peu après) et exécutez-le :
Cliquer sur « examiner les autorisations »
Autoriser Google à accéder à vos données :
Maintenant, on va modifier le script selon vos infos :
Ligne 30, renseigner le nom de l’agenda à traiter et le nom des variables à renseigner ( Attention , "sensible à la casse" ) :
Ligne 92 et 100
Spécifier l’adresse externe (ou DNS) de votre serveur Lifedomus (bien penser à rediriger le port 8080) et renseigner si vous souhaitez votre adresse e-mail (en cas d’échec du script)
On va vérifier que tout fonctionne correctement…
Ouvrez un projet DS et créer un « état », puis sélectionner votre équipement « écoute », vous devriez retrouver le nom des 2 variables crées.
Vous avez compris, à chaque exécution du script, ces variables vont être renseignées soit « aujourd’hui » et « demain ».
Testez en lançant le script manuellement : le nom que vous avez saisi dans l’agenda apparait donc :
Ca fonctionne ? Impec ! :eek-1e6fb:
Maintenant, il ne reste plus qu’à automatiser l’exécution de ce script.
Cliquer sur l’horloge et ajouter un déclencheur :
Renseigner les différents champs. Perso, je le déclenche toutes les heures puis validez :
Voilà, le script tourne maintenant tout seul, toutes les heures il va aller scruter vos agendas et renseigner les titres des évènements du calendrier dans vos variables LD.
Si aucun évènement n’est trouvé, la valeur « Ras » est envoyée au serveur LD. Il est possible de remplacer ce mot par un autre en modifiant la ligne 60 du script.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Voici par exemple comment je gère les différents planning de chauffage.
Je conditionne les horaires de déclenchement et consignes en fonction du nom de mes variables ( planning_1, planning_2, etc…)
Si vous vous demandez à quoi peut encore servir ce script, voici des exemples :
- Gérer les congés
- Les absences et présence
- Récupérer les jours fériés
- Obtenir les vacances scolaires
- Anniversaires
- Etc…
Google met à dispo toutes sortes d’agenda facilement importable, pleins d’autres sont dispos sur des sites tiers à importer.
Ce qui est impératif, c’est que le calendrier se trouve dans « mes agendas » et pas « autres agenda »
Voici un dernier exemple, je vais le mettre en place un calendrier pour afficher le « saint du jour » :
Je créer un agenda que je nomme « Saint »
Puis j’importe un calendrier « Ical »
Une fois importé :
Je créer un équipement « écoute », le nomme « Saint du jour » et créé une variable « Saint » :
Je modifie mon script afin d’ajouter un nouveau calendrier :
Je créé un "painter" sous DS et selectionne ma variable :
Et voilà, chaque jour les Saints s’afficheront automatiquement sur ma page d’accueil de mon projet sous DS :
Enjoy :wink-1627:
Admin du Forum
Z-wave: 4 x RGBW - 8 x FGS211 - 2 x FGS221 - 1 x FGFS-101 - 17 x FGK101 - 4 x WallPlug - 1 x FGSS-001 - 1 X FGBS.321 - 2 X FGD211 - 4 X FGSS-002 - 2 X FGMS-001
3 x SM103 - 1x HSM02 - 4 x AN157 - 4 x ST814 - 1 x ZG8101 , 2 x ZM1602 . 2 x Power Node 6
2 x Minimote - 1 X Smart Energy DSC06106 - 1 x Keyfob - 2 x FGPB.001 - 1x Octan remote
Divers : 1 x EcoDevices - 1 x IPX800 - 1 x Sirène Elkron - 3 x Foscam - 1 x Zmodo - 1 x Tablette Surface- 1 x Ipad2 - 1 x Qnap 453a- 1 x SMS Gateway - Sonos: 1xPlaybar , 1xSub, 2xPlay3 , 4xPlay1 , 2 x Thermostat NetAtmo + Station, Nuc, Karotz, Philips Hue , Roomba 620. Doorbird, Jeedom en esclave
Z-wave: 4 x RGBW - 8 x FGS211 - 2 x FGS221 - 1 x FGFS-101 - 17 x FGK101 - 4 x WallPlug - 1 x FGSS-001 - 1 X FGBS.321 - 2 X FGD211 - 4 X FGSS-002 - 2 X FGMS-001
3 x SM103 - 1x HSM02 - 4 x AN157 - 4 x ST814 - 1 x ZG8101 , 2 x ZM1602 . 2 x Power Node 6
2 x Minimote - 1 X Smart Energy DSC06106 - 1 x Keyfob - 2 x FGPB.001 - 1x Octan remote
Divers : 1 x EcoDevices - 1 x IPX800 - 1 x Sirène Elkron - 3 x Foscam - 1 x Zmodo - 1 x Tablette Surface- 1 x Ipad2 - 1 x Qnap 453a- 1 x SMS Gateway - Sonos: 1xPlaybar , 1xSub, 2xPlay3 , 4xPlay1 , 2 x Thermostat NetAtmo + Station, Nuc, Karotz, Philips Hue , Roomba 620. Doorbird, Jeedom en esclave