Gestion simple de la freebox avec Google Home et IFTTT

freebox-player-google-home

Edito 24/12/2017 – Une importante mise à jour qui corrige les bugs des accents, utilise un seul applet IFTTT et ajoute nombreux fonctions supplémentaire – Suivez la nouvelle procédure ICI 

Edito 30/11/2017 – Ajout de fonction Power et Enregistrement. Le volume augmente ou diminue désormais de trois unités

Je vous avais expliqué dans les articles précédents comment connecter une box domotique à votre Google Home grâce au API Http. Avec ces méthodes vous pouvez commander n’importe quel appareil.
Le seul probleme c’est qu’avec IFTTT vous êtes obligé de créer un applet par commande et avec HA-Bridge un module pour 3 commandes (On/Off/Dim). Ce n’est pas bien grave pour inclure une lumière ou un interrupteur mais pour gérer les 300 chaines de votre télé la tâche devient rude. Alors j’ai cherché une solution plus simple et surtout plus rapide à mettre en place. Pour cela, j’ai écrit un petit script en PHP qui traduit les commandes vocales de Google Assistant et actionne la fonction désirée.
Je vous donne ici un exemple d’utilisation avec la Freebox Player mais bien-sûr le script est adaptable à n’importe quelle box TV acceptant les Api Http.
Pour la facilité d’utilisation le script est écrit pour être exécuté avec Jeedom et plugin Script, mais ce n’est pas une obligation, vous pouvez facilement le placer sur un autre serveur LAMP, WAMP, Nginx capable d’interpréter le PHP.

Installation.

Pour le serveur PHP: 
Télécharger le code ici placer le sur votre serveur puis passer directement dans la configuration IFTTT

Pour Jeedom:
Connectez vous à votre Jeedom, et dans Plugin/Programmation/Script allez dans le Market et installez le script FreeBox-GoogleHome.php.

GoogleHome-Freebox

Une fois l’installation terminée dans l’onglet Commande allez dans éditer cherchez votre script puis renseignez votre code de télécommande et ajoutez  #message# à la fin.

/var/www/html/core/php/../../plugins/script/core/ressources/zap.php code=12345678 tache=#message#
GoogleHome-Freebox_Jeedom

Sur un autre serveur que Jeedom il faut placer la page php dans votre dossier html préalablement modifié selon vos besoins.

Configuration de IFTTT

Une fois votre script placé et configuré il faut créer deux applets.

  • This =  Google Assistant
  • That  = Webhooks

ifttt-google-home-with-fibaro

ifttt-google-home-with-fibaro

Une pour la gestion des chaines par leurs numéros – Say a phrase with a number

  • Ok Google zappe sur la 24
  • Zappe sur la 6.
  • Mets la 244

URL de votre script php ici Jeedom dans Make a web request

Pour serveur PHP:
https://IP_SERVEUR/GoogleHome-Freebox.php?tache={{NumberField}}

Pour Jeedom:
https://IP_JEEDOM/core/api/jeeApi.php?apikey=CLE_API_JEEDOM&type=cmd&id=ID&title=montitre&message={{NumberField}}

ifttt-goolehome-freebox

Une pour la gestion des autres touches et nom des chaines – Say a phrase with a text ingredient

  • Ok Google allume M6
  • Met RMS Decouverte
  • Freebox monte le son

URL de votre script php ici sur Jeedom  Make a web request

Pour serveur PHP:
https://IP_SERVEUR/GoogleHome-Freebox.php?tache={{TextField}}

Pour Jeedom:
https://IP_JEEDOM/core/api/jeeApi.php?apikey=CLE_API_JEEDOM&type=cmd&id=ID&title=montitre&message={{TextField}}

 

ifttt-goolehome-freebox2

Utilisation

Pour pouvoir l’utiliser c’est simple.

Pour changer une chaîne vous avez deux possibilités, soit par numéro de chaîne soit par nom de chaîne:

  • Zappe sur la 6
  • Zappe sur la 24
  • Mets TF1
  • Mets RMC Decouverte

Attention je n’ai pas configuré tous les noms de chaînes, si vous utilisez une chaîne qui n’est pas dans le script, faites le moi savoir je  la rajouterai avec plaisir.

Pour toutes les autres touches:

  • touche de direction Haut = haut
  • touche de direction Bas = bas
  • touche de direction Gauche = gauche
  • touche de direction Droite = droite
  • touche Rouge/Précédent = rouge, précédent, retour
  • touche Bleu/Rechercher = bleu, rechercher
  • touche Vert/Menu = vert, menu
  • touche Jaune/Infos = jaune, information
  • touche OK = ok
  • touche FREE = free
  • Volume + = volume plus
  • Volume – = volume moins
  • Mute = coupe le son
  • Enregistrement= enregistre
  • Power = allume, éteins, arrête

exemple pour afficher les information sur la chaîne en cours: Freebox jaune ou Freebox information
exemple pour monter le son: Freebox volume plus

Conclusion

Voilà, vous pouvez désormais commander la télé par la voix avec votre Google assistant. Toutes les commandes sont personnalisables. Pour plus de facilité, j’ai différencié dans les exemples, en rouge configurable dans IFTTT et en bleu directement dans le script PHP.

Vos remarques et suggestions sont les bienvenues, lâchez vous dans les commentaires 😉

 

 

GoogleHome-Freebox
GoogleHome-Freebox
GoogleHome-Freebox.zip
Version: 1.0
2.1 KiB
669 Downloads
Détails

118 réflexions au sujet de « Gestion simple de la freebox avec Google Home et IFTTT »

  1. Bonjour,
    Merci pour ce super boulot, je cherchais a depuis longtemps !!
    Par contre, effectivement, le script ne semble plus dispo dans le market…est-il possible de le récupérer autrement ?

  2. Bonjour,
    Merci pour ce script qui semble prometteur pour moi.

    Par contre, ne manque t’il pas une étape entre l’installation du script et l’action d’ajouter /var/www/html/core/php/../../plugins/script/core/ressources/zap.php code=12345678 tache=#message# ?

    Une fois le script installé, j’ajoute un équipement, puis je fais parcourir pour trouver le script. mais apres cela ne correspond pas à votre capture d’ecran. Il y a une étape que je ne comprends pas…

  3. Salut merci pour ce script il marche assez bien car je rencontre un problème lorsque je dis freebox C8 ça fonctionne mais pas pour TF1 et M6 par exemple. De plus quand tu dis “Sur un autre serveur que Jeedom il faut placer la page php dans votre dossier html préalablement modifié selon vos besoins.” Il faut faire quoi exactement ?

  4. Bonjour,
    Je me bagarre avec le tuto et ifttt.
    Le script jeedom est Ok car si je le lance a la main d une IP locale ou externe ca passe.
    Par contre impossible de le lancer via la voix. il semblerai que le numberfield ne fasse pas d effet.
    Rien ne ce passe , pareil pour le text …
    Une idée ?

      • J’ai trouvé mon probleme si j’écris {{NumberField}} ou {{TextField}} à la main aucun problème.

        Si je l’écris en utilisant le bouton add ingredient de ifttt cela ne marchait pas, avec espace ou sans espace.
        Très étonnant maintenant ça fonctionne nickel

    • Bonjoir
      Très interessé par ce script, je me bagarre aussi depuis plusieurs jours., même constatation que @nicolas.

      Pourtant d’autres applets avec IFTTT et Jeedom marchent, je ne comprend pas…. Une idée pour moi aussi ?
      PS : j’utilise bien une Ip externe et redirection des ports, c’est Ok …. et puis ca marche avec d’autres applets

      Merci de votre aide

      • Bonsoir,
        vérifie bien que tu n’as pas d’espace et remplace les @ par leur équivalent html (%40)
        essai aussi d’écrire {{NumberField}} ou {{TextField}} à la main.

  5. Désormais je tente d’ajouter des chaines en ajoutant par exemple :

    if ($tache==”Beinsport 1″) {$tache=”31″;}
    if ($tache==”Beinsport 2″) {$tache=”32″;}
    if ($tache==”Beinsport 3″) {$tache=”33″;}

    Je dois oublier quelques choses GH répond mais pas d’action.
    En relançant Jeedom pareil et en vérifiant que le fichier php ai bien était modifié

    • oops

      if ($tache==”Beinsport1″) {$tache=”31″;}
      if ($tache==”Beinsport2″) {$tache=”32″;}
      if ($tache==”Beinsport3″) {$tache=”33″;}

      • J’avais test plusieurs combinaisons et pareil.

        Je pense que j ai un problème de permission de fichier car si je mets “Canal” au lieu de “Canal plus” ça ne marche pas non plus, par contre si je dis Canal plus a haute voix alors que dans le fichier il y a écris “Canal” la chaîne se change bien sur canal plus.

        En gros je peux écrire n’importe quoi dans le fichier rien ne bouge que je le modifie par jeedom ou par ssh , reboot ou pas

  6. Salut pour moi je ne pense pas que cela vienne du fichier php car lorsque je dis freebox M6 cela apparais bien dans le log des script mais si je dis le nom d’une chaine avec accent le log se plante et je dois le vider ?

  7. Bon je ne comprends pas si j’envoie directe par mon navigateur https://“maDNS.jeedom.com”/core/api/jeeApi.php?apikey=”makeyapi”&type=cmd&id=***&title=montitre&message=planète plus ça marche mais pas avec Ifttt. Par contre quand je recopie le lien j’ai &title=montitre&message=plan%C3%A8te%20plus.

  8. Bonjour ,

    Encore merci pour ce superbe script c est TOP !

    Est il possible avec google home de lui demander de changer de chaine a une certaine heure ?
    Exemple : Ok Google , tu peux mettre la 6 a 13h45 ?

    Merci encore
    Mike

  9. Bonjour, super tuto qui fonctionne parfaitement.
    Est ce qu’ il serait possible d’ajouter les fonctions du menu, par exemple dire ” ok google, freebox enregistrement ” et que le menu enregistrement s’ouvre.
    Merci

  10. Salut,

    Ca ne marche pas chez moi
    Si je demande à GH de mettre la 6, il répond correctement à la ma phrase programmé dans ifttt mais rien, la commande n’est pas envoyé.
    Rien dans les logs.
    Par contre si lance la commande manuellement dans mon navigateur j’ai ca :
    {“jsonrpc”:”2.0″,”id”:null,”error”:{“code”:1,”message”:”Requ\u00eate invalide. Version Jsonrpc invalide : “}}

    Une idée ?

  11. Bonjour
    Sinon , On peut pas demander à Google home d exécuter une tâche à tel heure , c est à dire : « ce soir à 19 h tu mets TF1 » ?
    Programmer des tâches c est pas possible avec Google home ?
    Merci

  12. Bonjour,

    J’ai un doute sur l’utilisation de l’intéraction. Pour moi il est impossible d’utiliser le “Mets TF1” par exemple car “Mets” est un mot réservé à GH. En revanche dire Freebox M6 fonctionne par exemple mais ça n’est pas trop intéressant. Dans ton intéraction tu n’as que freebox $ de défini sur la capture d’écran, je ne comprends pas comment “Met” ou “Allume” peut fonctionner.
    Autre chose est-il possible d’attribuer directement une valeur au volume genre “volume à 30” ?

    Merci

    • Bonjour,
      Pour le moment il n’est pas possible d’attribuer une valeur de genre “volume à 30” mais je travail la dessus 😉
      pour les mots “allume” ou “mets” fonctionne mais peuvent poser problèmes.
      Chez moi personnellement je les remplace par ZAPPE 😉

  13. bonjour a tous , petite astuce qui marche chez moi
    pour remplacer la commande “Mets” qui pose problème , la commande “Mets la chaîne” fonctionne nikel 😉
    sinon merci pour se script !!!!! très bon taff !!

  14. Bonjour,R.Syrek
    Merci pour ce super boulo,
    Merci pour ce script qui semble prometteur
    Est ce qu’il est possible d’adapter le script la box THD de sfr ?
    Et ou trouver le code telecommande ?
    Merci par avance

    Cdt

  15. Bonjour,
    J’aieu quelques problème à faire marcher le plugins donc j’ai dû faire des rectifs pour qu’il marche chez moi (d’ailleurs je ne comprends pas comment il peut marcher chez les autres lol) :

    Dans la doc de Jeedom j’ai vu que les arguments étaient passés à l’interpréteur php via argv et non par l’url ($_GET).
    Du coup mon $_GET était vide.

    1ère solution, code à modifier :
    $code=htmlspecialchar($argv[1]);
    $tache=htmlspecialchar($argv[2]);

    et modifier l’appel en /var/www/html/plugins/script/core/ressources/GoogleHome-Freebox.php 12345678 #message#

    2ème solution (pour garder l’appel initial) un code à rajouter au début
    $args=””;
    for ($i=1;$i<$argc;$i++) {
    $args=$args.$argv[$i].'&';
    }
    parse_str($args, $_GET);

    • Bonjour,
      Il suffit d’appeler par
      /var/www/html/core/php/../../plugins/script/core/ressources/FreeBox-GoogleHome.php code=12345678 tache=#message#
      et Jeedom récupère automatiquement les valeurs après les =

      par contre le htmlspecialchar c’est une très bonne idée 😉

      • Salut,

        J’avais bien essayé avec le chemin relatif et je viens de retester ça ne marche pas …
        Si je comprends ce que tu me dis, en mettant le chemin relatif
        /var/www/html/core/php/../../plugins/script/core/ressources/GoogleHome-Freebox.php code=12345678 tache=#message#
        il devrait parser correctement les paramètres et alimenter le $_GET ? Ça ne semble pas être le cas chez moi … d’où mes modifs.
        J’ai la version 3.1.7 de Jeedom fraichement installée sur un RPI 3.

        • Re,

          En fait en fouillant dans la doc de jeedom il est préconisé de parser les données ainsi (plus élégant que mon code à moi lol) :

          if (isset($argv)) {
          foreach ($argv as $arg) {
          $argList = explode(‘=’, $arg);
          if (isset($argList[0]) && isset($argList[1])) {
          $_GET[$argList[0]] = $argList[1];
          }
          }
          }

  16. Bonjour,

    J’ai eu du mal à faire fonctionner IFTTT avec Google Assistant et Jeedom.

    Déjà il faut mettre “#message#” (avec les guillemets) dans la command Jeedom sinon les messages texte avec espaces sont considérés comme autant de paramètres.
    Il semblerait qu’il y ait eu des changements sur IFTTT et sur Google Assistant :

    Sur IFTTT le message renvoyé est “sur #” ou “sur *” et non “*” ou “#” alors que le mot “sur” est dans mes locutions d’accroche.
    Du coup j’ai rajouté le code :
    $tache = str_replace(‘sur ‘, ”, $tache);

    Sur Google Assistant, maintenant les nombres de 1 à 10 sont écrits en toutes lettres donc il faut modifier un peu le code :
    if ($tache==”TF 1″ or $tache==”un”) {$tache=”1″;} etc jusqu’à dix

    Voilà !

      • Euhhhh, le tien !

        =0 and $tache9):
        if (strlen($tache)==2) {
        $url=$path.”code=$code&key=$tache[0]”;
        file_get_contents($url);
        echo $url;
        $url=$path.”code=$code&key=$tache[1]”;
        file_get_contents($url);
        echo $url;
        }
        if (strlen($tache)==3) {
        $url=$path.”code=$code&key=$tache[0]”;
        file_get_contents($url);
        echo $url;
        $url=$path.”code=$code&key=$tache[1]”;
        file_get_contents($url);
        echo $url;
        $url=$path.”code=$code&key=$tache[2]”;
        file_get_contents($url);
        echo $url;
        }
        break;

        }

        ?>

  17. AH !!! Ceci explique cela ! Je commence en Jeedom et comme je ne le trouvais pas sur le market, j’ai installé la version php que j’ai dû modifié en conséquence. J’ai fait un peu de factorisation de code et rajouté un argument hd pour gérer plusieurs freeplayer si ça t’intéresse.

  18. @R.Syrek
    Je me suis permis d’optimiser ton code pour diminuer le temps de réaction (notamment sur tes “if” en cascade qui augmentent le temps d’execution). J’ai corrigé tes “case” qui ne passeraient pas sur des version de php un peu veilles. J’ai rajouté un argument “hd” pour pouvoir choisir le player (si on en a plusieurs, sinon par défaut c’est le 1). J’ai rajouté un commande pour mettre et choisir son bouquet tv ( Free ou Canal ). J’ai rectifié quelques ordres qui ont ENCORE changés sur Google assistant … GRRRRRRR ! Je me penche maintenant sur le retour de l’API freeplayer pour savoir si la commande a bien été transmise … Si cela t’intéresse, mets ton projet sur github pour que je te propose mes changements que tu valideras ou non …
    @+

    • @lulandco
      merci pour ta contribution, envoi moi le code pour le modifier directement sur le market de Jeedom, et des que j’ai 5 mins je me penche sur Github.
      😉

      • Salut,
        Je viens de revoir toutes les commandes sur GA. Tout est OK. J’ai simplifié ta gestion des chaines numériques et donc des multi-commandes. C’est une version Jeedom mais il y a juste à enlever le debut de code qui gère le passage des arguments en ligne de commande pour la version php. Donne moi une addresse mail pour que je te l’envoie ou fais moi coucou sur le mien 🙂

        @+

        • Attention j’ai modifié le nom de l’argument “code” en “remote” donc dans Jeedom il faut mettre maintenant :

          /var/www/html/plugins/script/core/ressources/FreeBox-GoogleHome.php remote=******** hd=1 #message#

          Le paramètre hd est facultatif ( 1 par défaut ).

    • Bonjour Lulandco
      J’ai essayé vos modifications ( uniquement via le php sans Jeedom ) et je ne trouves pas le problème :

      # php GoogleHome-FreeBox2.php remote=”xxxxxx” message=”sur M 6″
      PHP Notice: Undefined offset: 53051568 in /var/www/html/GoogleHome-FreeBox2.php on line 38
      PHP Notice: Undefined index: message in /var/www/html/GoogleHome-FreeBox2.php on line 44

      Pourtant bien renseigné $remote = $_GET[“xxxxxx”]; et j’ai bien testé avec modification de mon host pour hd1 , ou avec ip également .

      Par avance , merci

  19. Bonjour, J’ai plusieurs question concernant ce tuto (même si il est bien expliqué…)

    Pour info : J’ai un player free mini 4k et je n’ai pas de code de télécommande (ou je suis vraiment mauvais pour le trouver…) mais j’ai aussi un hub harmony de logitech qui reconnait le freeplayer

    Comment paramétrer ifttt pour faire fonctionner le player free mini 4k avec google home ?

    Merci (beaucoup) d’avance, je débute et la je sèche complètement !

    • Bonjour.
      Il faut modifier le lien comme suit:
      Une seul applet est maintenant nécessaires.
      Un nouveau article est en cours de redaction.

      remote=n°télécommande hd=1 message=”#message#”

      Regarde dans la dans la description de script j’ai publié le lien.

      Pour ifttt il faut un applet qui gere le texte

  20. Salut et encore félicitation pour ton travail.
    J’ai quelque problème pour mon applet si je dis zappe sur M6 il envoie “sur M 6” et donc dans ma réponse j’ai 2 fois “sur” pourtant j’ai bien mis “freeplayer sur $”.
    Sinon si je dis M6 ça ne marche pas mais 6 c’est ok pareil pour toutes les chaînes
    Dans ifttt j’ai mis
    https://DNS.jeedom.com/core/api/jeeApi.php?apikey=key*****&type=cmd&id=****&message=<<>&gt;
    et pour le scripte
    /var/www/html/plugins/script/core/ressources/FreeBox-GoogleHome.php remote=******** message=”#message#”

  21. Salut,
    Active le mode debug sur le plugin script dans jeedom et donne moi l’appel au script FreeBox-GoogleAssistant.php lorsque cela disfonctionne. Chez moi tout est ok.

    Pour le “sur” en double, il semble que c’est un bug de IFTTT que j’avais remarqué il y a quelques semaines. Enlève le sur dans ta réponse GA dans IFTTT.

  22. Bonjour,j’ai une petite question avant de me lancer….
    Faudra il laissé tourner un pc pendant l’utilisation des commandes vocales pour que cela fonctionne?
    Quelqu’un d’autre à proposer une solution en passant par pushbullet mais avec obligation de laisser Windows allumé poir faire le lien entre Google Home,ifttt,pushbullet et la Freebox.

    Merci. D’avance pour ton travail .

  23. Salut, merci pour ce tuto 😉 Toutefois je m’arrache les cheveux car je n’arrive pas a faire fonctionner quoi que ce soit… J’ai pourtant un script pour lancer le Airplay sur la freebox via la google home et ifttt Jeedom et ça fonctionne, mais rien à faire pour FreeBox-GoogleHome.php, j’ai bien rajouté remote=******** message= “#message#” mais si le lance le lien via la navigateur il ne se passe rien, apparemment rien sur les log jeedom.

  24. bonjour moi sa marche tres bien google home pour la tele freebox v6 pour changer de chaine m6 tf1 ect …. mais quant ge demande de changer de chaîne bfm tv il fait 1+e et il vas sur arte il fait changer bien les chaîne mais quant on lui demande aller a la chaîne 22 il fait 2+2 et vas sur france 2 qui peut aider sur ce coup la merci a vous

  25. Hello,

    alors est-ce que je fais qqchose n’importe comment ? lol
    Installation refaite à 0 de jeedom sur un RPI3 pour virer la multitude de tests que j’avais fait jusque là. L’arrivée de Google Home permet de se passer d’autre tentative de gestion à la voix qui n’était pas au top.

    Bref je suis donc en jeedom 3.1.7.
    Pb, alors que je trouve bien le script dans le market impossible de le trouver depuis mon Jeedom dans les plugins à installer …

    Une idée ?

    Merci

    Arka

  26. bonjour, Je n’ arrive pas à faire fonctionner le script sur ma Jeedom. En réponse j’ obtiens toujours le texte suivant : /var/www/html/plugins/script/core/ressources/FreeBox-GoogleHome.php remote=******** hd=1 message=”#message#

    J’ ai simplement cacher le code de ma télécommande ci- dessus.
    L’ Url que je teste est la suivante :
    https://*******.dns5.jeedom.com/core/api/jeeApi.php?apikey=******&type=cmd&id=106&title=montitre&message=“Arte”

  27. Bonjour,

    Super tuto, merci pour tous les détails.

    Petite question concernant le script “mini4k_cmd” sous jeedom et son utilisation pour contrôler la box Mini 4k, avez-vous pu avancer sur ce sujet ?

    J’ai vu que certaines personnes avaient pu faire le nécessaire pour configurer IFTTT afin de contrôler la box et changer les chaînes, augmenter ou baisser le volume grâce à ce script mais malheureusement sans détails sur la manip.

    Merci d’avance.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

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