 
 Par contre j'ai dû mettre RAS en valeur brute pour déchetterie fermée et aucune poubelle à sortir.
 
 
 J'ai d'autres calendriers dans mon Google Calendar (privé, professionnel, anniversaires, etc.)
 J'ai d'autres calendriers dans mon Google Calendar (privé, professionnel, anniversaires, etc.)//***********************************************************************************************//
// 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);
}




 )
 ) si vous mettez à jour votre agenda côté Google, l'info sera répercutée dans l'heure vers votre Eedomus.
 si vous mettez à jour votre agenda côté Google, l'info sera répercutée dans l'heure vers votre Eedomus.
 un pour chaque calendrier, et régler vos capteurs avec les bonnes URLs respectives. Allez, courage
 un pour chaque calendrier, et régler vos capteurs avec les bonnes URLs respectives. Allez, courage 

//***********************************************************************************************//
// 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 19 invité(s)