//***********************************************************************************************//
// Script Google pour mise à Jour Eedomus
// Adaptation du script réalisé par Eedomusbox basé sur http://www.maison-et-domotique.com/12622-script-google-google-agenda-box-domotique/
//***********************************************************************************************//
function doGet(request) {
// Définition Variable
var TodayDebut = new Date();
var TodayFin = new Date();
var DemainDebut = new Date();
var DemainFin = new Date();
var Default = "maison";
var NomCalendrier = "congés";
// 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
var Cal = CalendarApp.getCalendarsByName(NomCalendrier)[0];
var EventsA = Cal.getEvents(TodayDebut, TodayFin); //Journée d'aujourd'hui
var EventsD = Cal.getEvents(DemainDebut, DemainFin); // Journée de demain
var Aujourdhui = Default;
if(EventsA.length > 0) {
Aujourdhui = EventsA[0].getTitle();
}
var Demain = Default;
if(EventsD.length > 0) {
Demain = EventsD[0].getTitle();
}
var Response = '<?xml version="1.0" encoding="utf8" ?>';
Response = Response + '<calendrier>';
Response = Response + '<aujourdhui>' + Aujourdhui + '</aujourdhui>';
Response = Response + '<demain>' + Demain + '</demain>';
Response = Response + '</calendrier>';
return ContentService.createTextOutput(Response)
.setMimeType(ContentService.MimeType.XML);
}
//***********************************************************************************************//
// Script Google pour mise à Jour Eedomus
// Script réalisé par Eedomusbox basé sur http://www.maison-et-domotique.com/12622-script-google-google-agenda-box-domotique/
// Il permet de recupérer un calendrier Poubelle/tri et un calendrier Déchèterie
// Version 1.0
// revu par Tibhix pour ajustements:
// Un seul calendrier Gmail est suffisant contenant tout ce que l'on veut gérer.
// dans le cas présenté:
// -RDV = Rendez-vous de la journée + lendemain (conditionne l'allumage des lumières extérieures)
// -HOR = Horaire de travail de la journée + lendemain (conditionne le chauffage dans la salle de bain)
// -PRS = Présence de la journée + lendemain (conditionne les températures de consignes et chauffe-eau)
//***********************************************************************************************//
//***********************************************************************************************//
// Déclaration des variables globales (A PERSONNALISER)
//***********************************************************************************************//
// Nom du calendrier Gmail
var IDCalendrier ="Mon_Calendar_Gmail";
var email_de_retour ="mon_adresse@gmail.com";
// ID périphériques horaires
var pHorJour ="111111";
var pHorDemain ="222222";
// ID périphériques RDV
var pRdvJour="333333";
var pRdvDemain="444444";
// ID périphériques présences
var pPrsJour="555555";
var pPrsDemain="666666";
var pPrsApresDemain ="777777";
// ID + mdp API eedomus
var id_api_user="aaaaaa";
var pass_api_user="bbbbbbbbbbbbbb";
//***********************************************************************************************//
// Fin de Déclaration des variables globales
//***********************************************************************************************//
// Initialisation des variables de retour
//***********************************************************************************************//
// NE PAS MODIFIER
//***********************************************************************************************//
var Horaire="";
var Presence="";
function Calendrier()
{
// Définition Variable
var JourDebut = new Date();
var JourFin = new Date();
var DemainDebut = new Date();
var DemainFin = new Date();
var ApresDemainDebut = new Date();
var ApresDemainFin = new Date();
var cptRDV=0;
// Definition des dates
JourDebut.setHours(0,0,0,0);
JourFin.setTime( JourDebut.getTime() + ((60*60*24) * 1000) ); //jour courant
DemainDebut = JourFin;
DemainFin.setTime( DemainDebut.getTime() + ((60*60*24) * 1000) ); //1 jour de plus
ApresDemainDebut = DemainFin;
ApresDemainFin.setTime( ApresDemainDebut.getTime() + ((60*60*24) * 1000) ); //2 jour de plus
// Recherche du différent calendrier pour mise à jour des Périphériques
Read_calendar(IDCalendrier);
//***********************************************************************************************//
//Fonction Read_calendar
// Var 1 = Nom du calendrier
//***********************************************************************************************//
function Read_calendar(Fv_Cal)
{
var Cal = CalendarApp.getCalendarsByName(Fv_Cal)[0];
var EvenementsJour = Cal.getEvents(JourDebut, JourFin); //Journée d'aujourd'hui
var EvenementsDemain = Cal.getEvents(DemainDebut, DemainFin); // Journée de demain
var EvenementsApresDemain = Cal.getEvents(ApresDemainDebut, ApresDemainFin); // Journée de demain
// Assignation des evenements aux periphériques
Set_Eedomus_Events( EvenementsJour,"Jour");
Set_Eedomus_Events( EvenementsDemain,"Demain");
Set_Eedomus_Events( EvenementsApresDemain,"ApresDemain");
}
//***********************************************************************************************//
// Fonction Set_Eedomus_Events
//***********************************************************************************************//
function Set_Eedomus_Events(FV_Events,LeJour)
{
Logger.log("Jour="+LeJour);
var EventTexte = '';
var ListeEventsRDV = '';
switch (LeJour)
{
case "Jour":
IDPeriphRDV = pRdvJour;
IDPeriphHOR = pHorJour;
IDPeriphPRS = pPrsJour;
break;
case "Demain":
IDPeriphRDV=pRdvDemain;
IDPeriphHOR=pHorDemain;
IDPeriphPRS = pPrsDemain;
break;
case "ApresDemain":
//IDPeriphRDV=pRdvApresDemain;
//IDPeriphHOR=pHorApresDemain;
IDPeriphPRS = pPrsApresDemain;
break;
case defaut:
//Nothing
break;
}
// S'il n'y a aucun événement c'est que c'est égal à RAS
if ( FV_Events.length == 0 )
{
Error = Error || AppelAPI(IDPeriphRDV , 'aucun' ); // Mise à jour RDV
Error = Error || AppelAPI(IDPeriphHOR , 'aucun' ); // Mise à jour HOR
Error = Error || AppelAPI(IDPeriphPRS , 'maison' ); // Mise à jour PRS
}
else
{
for (i in FV_Events)
{
var Titre = FV_Events[i].getTitle(); // On récupère le titre de l’événement
var Type = Titre.substring(0,3); // Type de l'evenement
var ResteTitre = Titre.substring(4);
// Si le type n'est pas du genre "XXX:", on assume que c'est un RDV
if (Titre.substring(3,4)!=":")
{
Type="RDV";
ResteTitre=Titre;
}
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
var Minutes = FV_Events[i].getEndTime().getMinutes();
if (Minutes<10 ) { Minutes = '0'+Minutes;}
var StartTime = FV_Events[i].getStartTime().getHours()+'h'+Minutes;
Minutes = FV_Events[i].getEndTime().getMinutes();
if (Minutes<10 ) { Minutes = '0'+Minutes;}
var EndTime = FV_Events[i].getEndTime().getHours()+'h'+Minutes;
// Definition de l'evenement
EventTexte = EventTexte+'_'+Type+StartTime +'-'+ EndTime +':'+ Titre ;
switch(Type)
{
case "HOR":
Horaire=ResteTitre;
break;
case "RDV":
if (cptRDV==0) {ListeEventsRDV=StartTime+':'+ResteTitre;}
else {ListeEventsRDV=ListeEventsRDV+'<br>'+StartTime+':'+ResteTitre;}
cptRDV = cptRDV+1;
break;
case "PRS":
Presence=ResteTitre;
break;
case defaut:
//Nothing
break;
}
}
// Ecriture des données
// HOR
if ( Horaire=="") { Horaire="aucun";} // Mise à jour par défaut
// Renseignement du périphérique
Error = Error || AppelAPI( IDPeriphHOR, Horaire);
// PRS
if ( Presence=="") { Horaire="maison";} // Mise à jour par défaut
// Renseignement du périphérique
Error = Error || AppelAPI( IDPeriphPRS, Presence);
// RDV
if ( ListeEventsRDV=="") { ListeEventsRDV="aucun";} // Mise à jour par défaut
// Renseignement du périphérique
Error = Error || AppelAPI( IDPeriphRDV, ListeEventsRDV);
}
}
//***********************************************************************************************//
// Fonction
//***********************************************************************************************//
function AppelAPI(PeriphID, PeriphValue)
{
Logger.log ("appelAPI:"+PeriphID+"/"+PeriphValue);
var Reponse;
var ReponseText;
PeriphValue = encodeURIComponent(PeriphValue, "UTF-8");
var urlCalled="http://api.eedomus.com/set?action=periph.value&periph_id=" + PeriphID + "&value=" + PeriphValue + "&api_user="+id_api_user+"&api_secret="+pass_api_user;
Reponse = UrlFetchApp.fetch(urlCalled);
ReponseText = Reponse.getContentText();
Logger.log (ReponseText);
if (ReponseText.indexOf("error_code") >= 0)
{
var body = Logger.getLog();
MailApp.sendEmail(email_de_retour , " Erreur du script domotique ", " Une erreur [" + PeriphValue + "] "+ body + "URL:"+urlCalled);
}
return(ReponseText.indexOf("error_code") >= 0);
}
}
bibizounours a écrit:Bonjour,
tout d'abord merci pour cette mise a jours, en effet, mes capteurs tombaient en erreur depuis un certain temps.
Maintenant, j'ai tout de meme un petit soucis avec la methode de pvet, lorsque j’exécute le script depuis le drive, j'ai bien les bonnes valeurs qui apparaissent a l'ecran.
hors, mes capteurs tombent en erreur et n'arrivent pas a parser le XML renvoyé...
Je n'ai que :
<!DOCTYPE html><html><head><link rel="shortcut icon" href="//ssl.gstatic.com/docs/script/images/favicon.ico"><title>Erreur</title><style type=%2 [...]
qui s'affiche.
Auriez vous une idée du pourquoi du comment ?
Merci de votre aide !
bibizounours a écrit:Bon et bien j'ai trouver tout seul, il fallait enregistrer une nouvelle version du script dans drive...cela fonctionne maintenant et plutôt bien, merci encore !
Retour vers Scripts & Périphériques du store
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 21 invité(s)