Accueil » Domotique » guides domotiques » La gestion des ordures et du tri avec la domotique, comment faire?
guides domotiques

La gestion des ordures et du tri avec la domotique, comment faire?

ordures-domotique-gestion-poubelles-google-calendar

Depuis maintenant deux ans, nous pouvions avoir les notifications dans notre box préférée grâce à Aurélien et son article La gestion des ordures avec la domotique

La gestion des ordures par les calendrier google

ordures-domotique-gestion-poubelles-google-calendar

En raison d’une évolution de l’API Google, nous avons probablement tous reçu un mail début octobre de la part de google nous annonçant la fin des flux XML sur les google calendar.

Par conséquent le service s’est arrêté le 18 novembre 2015. Depuis cette date, il n’est plus possible de récupérer les informations des calendriers Google via un flux XML.

Mais alors comment continuer à lire les calendriers google depuis eedomus?

Voici donc une méthode qui remplace, l’ancienne façon de récupérer les informations de nos différents calendriers Google. Elle n’est pas nouvelle puisque je me suis inspiré pour cela du tuto de Pierre sur le blog maison et domotique . Je l’ai simplement un peu adapté.

Pour cela nous allons donc utiliser un script Google, rien de bien sorcier vous allez voir. Il faut simplement surtout bien suivre le tuto à la lettre et tout se passera bien !

Pré requis :

  • Avoir un compte Google.
  • Avoir une box Eedomus.

Voici mes deux Agendas : Déchetterie et Sortir_Poubelle

ordures-domotique-gestion-poubelles-google-calendar

Pour créer un calendrier, vous pouvez suivre l’article d’Aurel ici, la procedure y est très bien détaillée et en plus rien ne change, simplement à l’étape 2 revenez sur ce tuto pour continuer.

Mise en place Coté eedomus

1 Création des Etats dans l’EEDOMUS: D’abord, créez 4 états. Pour cela, il faut, comme avant un état aujourd’hui puis un état demain par calendrier. Ici 4 puisque je gère à la fois le calendrier sortir les poubelles et le calendrier de la déchetterie soit 2 x 2 calendriers.

Le principe est presque le même qu’avec l’ancienne technique, simplement, nous n’utilisons plus des capteur HTTP mais des Etats

ordures-domotique-gestion-poubelles-google-calendar

2  Récupérer les  4 codes API (1 code API par état)

api

Mise en place du script sur Google

1 Se connecter à son compte Google Drive https://drive.google.com/

2 Créer un script

Clique droit -> Nouveau Fichier -> Google Apps Script

ordures-domotique-gestion-poubelles-google-calendar

3 Nommer le script, moi je l’ai nommé Calendrier_eedomus

google_calend

4 Copier/Coller le code suivant dans le script créé précédemment.

//***********************************************************************************************//
// 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
//***********************************************************************************************//
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 Périphériques
Get_calendar("NOM_CALENDRIER1","AAAAA","BBBBB" );
Get_calendar('NOM_CALENDRIER2',"CCCCC","DDDDD" );

//***********************************************************************************************//
// Fonction
//***********************************************************************************************//
//***********************************************************************************************//
//Fonction Get_calendar
// Var 1 = Nom du calendrier
// Var 2 = Numéro du périphérique Aujourd'hui
// Var 3 = Numéro du périphérique Demain
//***********************************************************************************************//
function Get_calendar(Fv_Cal,Fv_PeriphID1,Fv_PeriphID2)
{

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_PeriphID1 );
Look_Calendar( EventsD, Fv_PeriphID2 );
}

//***********************************************************************************************//
// Fonction Look_Calendar
//***********************************************************************************************//
function Look_Calendar(FV_Events,Fv_PeriphID)

{
// S'il n'y a aucun événement c'est que c'est égale à RAS
if ( FV_Events.length == 0 )
{
Error = Error || AppelAPI(Fv_PeriphID , 'RAS' ); // Mise à jour Aujourd'hui
}
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_PeriphID , Titre ); // Mise à jour Aujourd'hui
break; //Dans mon cas je n'ai besoin de récuperer qu'un seul évènement
}

}
}

//***********************************************************************************************//
// Fonction
//***********************************************************************************************//
function AppelAPI(PeriphID, PeriphValue)

{

var Reponse;
var ReponseText;

Reponse = UrlFetchApp.fetch("http://api.eedomus.com/set?action=periph.value&periph_id=" + PeriphID + "&value=" + PeriphValue + "&api_user=XXXXXXX&api_secret=YYYYYYYYYYYYYYYY" );

ReponseText = Reponse.getContentText();

Logger.log (ReponseText);

if (ReponseText.indexOf("error_code") >= 0)
{
var body = Logger.getLog();
MailApp.sendEmail("MON_MAIL@gmail.com" , " Erreur du script domotique ", " Une erreur s’est produite lors à la réalisation de l’événement [" + PeriphValue + "] "+ body);

}

return(ReponseText.indexOf("error_code") >= 0);

}
}

Les valeurs à changer sont

  • 1 Le nom des calendriers (ici ils s’appellent “NOM_CALENDRIER1”  et “NOM_CALENDRIER2” ) en ligne 23 et 24
  • 2 Le numéro de périphériques:

AAAAA = Numéro du périphérique Aujourd’hui  pour le calendrier 1 en ligne 23

BBBBB = Numéro du périphérique Demain  pour le calendrier 1 en ligne 23

CCCCC = Numéro du périphérique Aujourd’hui  pour le calendrier 2 en ligne 24

DDDD = Numéro du périphérique Demain  pour le calendrier 2 en ligne 24

  • 3 Modifier’adresse mail “MON_MAIL@gmail.com” à avertir en cas de problème  en ligne 97
  • 4 Remplacer les XXX et YYYY correspondants aux API user et Secret à la ligne 88

L’exécution du script

1 Une fois le script copié et adapté, cliquez sur l’icône  « Exécuter » .

2 Une fenêtre d’avertissement s’ouvre pour demander l’autorisation pour que ce script ait accès aux différents services Google.

Cliquez sur Autoriser.

ordures-domotique-gestion-poubelles-google-calendar
ordures-domotique-gestion-poubelles-google-calendar

Maintenant que le script est créé, il faut l’automatiser pour qu’il s’exécute selon la période désirée.

Dans l’éditeur de Scripts de Google Drive, cliquez sur la petite icône en forme de montre :  » Déclencheurs du script actuel…  »

ordures-domotique-gestion-poubelles-google-calendar

4 Cliquez sur le lien  » Aucun déclencheur configuré. Cliquez ici pour en ajouter un.  « 

ordures-domotique-gestion-poubelles-google-calendar

Comme vous avez pu le remarquer dans le script, nous allons chercher l’ensemble des événements sur la journée d’aujourd’hui et le lendemain.

5 Il nous suffit donc de planifier son exécution une fois par jour. (Entre 1h et 2 heures par exemple)

ordures-domotique-gestion-poubelles-google-calendar

6 Demandez à exécuter la fonction  » Calendrier  » en  » Fonction du temps  » en choisissant le  » compteur de jour  » positionné à la valeur  » Entre 1 h et 2h  » par exemple.

7 Appuyez sur le bouton  « Enregistrer »

Le script va scruter vos agendas une fois par jour et mettre à jour les différents Etats.

A savoir !

Dans cet exemple, on récupère les valeurs de deux calendriers. Cependant, vous pouvez bien sûr en utiliser autant que vous voulez, au contraire.

Il suffit, plutôt que d’ajouter une seule ligne comme ci-dessous, d’en ajouter autant que nécessaire et la customiser comme nous l’avons fait plus haut.

Get_calendar("NOM_CALENDRIER1","AAAAA","BBBBB" );

Conclusion

En conclusion, malgré l’arrêt du service XML par google pour ses calendrier assez dommageable au départ. Cette méthode particulièrement pertinente, permet de continuer à utiliser les calendriers google pour alimenter les scénarios de nos box domotique. C’est d’ailleurs un script qui est mis en oeuvre sur la box eedomus ici, mais il peut tout à fait être adapté sur une autre box.

ordures-domotique-gestion-poubelles-google-calendar
Domo-blog a fait le choix de ne pas polluer votre lecture avec de la publicité. Vous trouverez cependant des liens affiliés vers les produits recommandés dans le contenu. Cela ne perturbe en rien votre experience de lecture et permet de financer le blog.
Vous pouvez également soutenir le blog en m'offrant un café sur Ko-Fi.


discord

Restez connecté aux nouveautés domotiques, inscrivez-vous à notre newsletter

A propos de cet auteur

eedomusbox

Informaticien spécialisé dans les ERP, je me suis mis à la domotique en 2014 avec ma première box domotique l'eedomus que j'ai depuis associée à un deux raspberry Pi 2

34 Comments

Cliquez ici pour poster un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

  • merci, je vais tester ça ce week end. j’ai déjà interfacé l’eedomus avec les script google pour avoir l’état de mon alarme. assez puissant ces scripts

      • et “NOM_CALENDRIER1” correspond au nom du calendrier google utilisé?

        car après j ai le code erreur TypeError: Impossible d’appeler la méthode “getEvents” de undefined. (ligne 39, fichier “”

      • j’ai aussi cette erreur quand j’exécute le script mais ça fonctionne, j’ai maintenant ” RAS” sur mes capteurs 😉
        n’y a t il pas un espace de trop ligne 23 avant les ” de AAAAAAA ?
        En tout cas, merci une fois de plus pour ce tuto et la réactivité

      • ah oui, bien vu, en effet! je suis pas sur que l’espace change beaucoup mais test et redis nous, je corrige le code dans l’article en attendant !

      • j ai ça comme erreur

        Une erreur s’est produite lors à la réalisation de l’événement [weekend] Fri Nov 13 10:17:27 CET 2015 INFO: {
        “success”: “0”,
        “body”:
        {
        “error_code”: “1”,
        “error_msg”: “Authentification error.”
        }
        }
        Fri Nov 13 10:17:28 CET 2015 INFO: {
        “success”: “0”,
        “body”:
        {
        “error_code”: “1”,
        “error_msg”: “Authentification error.”
        }
        }

  • Je m’excuse d’avance pour ma question… :/

    Je cherche à comprendre l’interet d’une telle solution à base de script google pour la gestion des ordures ?
    Quel est le point bloquant, empêchant de gérer cela directement depuis la box ?
    Je ne souhaite pas troller.. juste comprendre, merci 🙂

    • Salut, il n’y a pas de question bête !

      l’intérêt est de pouvoir faire intervenir les éventements de ton calendrier perso dans tes scénarios. Il est vrai qu’il est aussi possible de gérer cela depuis la box mais le calendrier eedomus. A l’époque le calendrier eedomus n’existait pas, nous avions donc géré cela depuis google cal. Certains ne veulent pas refaire leur config d’autres comme moi, préfère passer par les google cal plutôt que le calendrier interne à la box. Question de gout. Cela dit, le calendrier google est tout de même bien plus simple à administrer. cela peut être fait depuis un mobile ou une tablette sans passer par l’eedomus, il est aussi possible de créer autant de calendrier que d’utilisation (perso, pro, poubelles, déchetterie, école…).

      Voici en gros l’intérêt d’une telle solution.

      • OK, merci pour la réponse !
        Je ne voulais surtout pas que mon message soit interprété comme du troll 😉

        pour l’instant, je me contente du calendrier eedomus, mais effectivement, j’aurais p-e envie de tester google cal un de ces jours 😉

  • J’ai :
    {
    “success”: “0”,
    “body”:
    {
    “error_code”: “23”,
    “error_msg”: “HTTP protocol not allowed on your
    account.”
    }

    une petite idée ?

  • Salut,
    j’ai le même problème que Tony Content :
    “error_msg”: “HTTP protocol not allowed on your account.”
    je vois pas ce que j’ai mal fait?
    Sinon autre chose en rapport avec les calendriers: je cherche à créer un état ou un capteur http dans mon eedomus qui me retournerais la date du jour au format aaaa-mm-jj.
    Merci d’avance

  • Merci pour ce tuto, je l’ai installé, il fonctionne nickel mais cependant il engendre tous les jours un mail avec le message : “TypeError: Impossible d’appeler la méthode “getEvents” de undefined. (ligne 39, fichier “calendrier eedomus”)”; Une idée ?? Merci !

  • Je viens de le mettre en place.
    J’ai mis par contre https pour la maj des périphériques, car j’ai désactivé le http sur la BOX. (j’ai mis du temps à comprendre pourquoi ça marchait pas, alors que je recevais les mails avec la cause…)

  • Merci pour ce très bon script !
    Si j’ai bien compris, cela permet de récupérer seulement 1 événement par jour, c’est bien ça ?
    Que se passe t’il si on place plusieurs RDV sur la même journée ?
    Merci

  • Bonjour à tous, j’ai le script qui fonctionne à merveille par contre je me retrouve avec des données à J-1, avez vous ce phénomène ?

construction et domotique
promos domotique
Choix box domotique
promos domotique

La gestion des ordures par les calendrier google

Mais alors comment continuer à lire les calendriers google depuis eedomus?

Voici donc une méthode qui remplace, l’ancienne façon de récupérer les informations de nos différents calendriers Google. Elle n’est pas

Pré requis :

Avoir un compte Google.Avoir une box Eedomus.

Mise en place Coté eedomus

1 Création des Etats dans l’EEDOMUS: D’abord, créez 4 états. Pour cela, il faut, comme avant un état aujourd’hui puis

Mise en place du script sur Google

1 Se connecter à son compte Google Drive https://drive.google.com/

Les valeurs à changer sont

1 Le nom des calendriers (ici ils s’appellent “NOM_CALENDRIER1”  et “NOM_CALENDRIER2” ) en ligne 23 et 242 Le numéro de périphériques:

L’exécution du script

1 Une fois le script copié et adapté, cliquez sur l’icône  « Exécuter » .

A savoir !

Dans cet exemple, on récupère les valeurs de deux calendriers. Cependant, vous pouvez bien sûr en utiliser autant que vous

Conclusion

En conclusion, malgré l’arrêt du service XML par google pour ses calendrier assez dommageable au départ. Cette méthode particulièrement pertinente,

  • La gestion des ordures par les calendrier google
  • Mais alors comment continuer à lire les calendriers google depuis eedomus?
  • Pré requis :
  • Mise en place Coté eedomus
  • Mise en place du script sur Google
  • Les valeurs à changer sont
  • L’exécution du script
  • A savoir !
  • Conclusion