Ok google, Chaîne 21

Pour quoi faire ?

t’es dans le canap, le bébé sur le ventre, la bière à la main et tu veux mater ton programme tranquilou. Malheur, la télécommande est resté sur le bar…

Toi : Ok google, chaîne 21 !

Google Home : Ca roule !

En bref…

  • Quand tu dis ok « google, chaine 21 » c’est ifttt qui prend le relais.
  • il détecte le keyword et lance un event webhook sur ton serveur Home-Assistant.
  • Un script AppDaemon surveille ce fameux event et le catch
  • Il récupère le nombre 21 et le découpe en chiffres 2, et 1
  • Il active télécommande ou autre pour taper 2, attendre 2 secondes, puis 1

Prérequis et AddOns

  • avoir l’intégration IFTTT configurée et fonctionnelle
  • avoir l’addon AppDaemon installé
  • avoir la possibilité d’envoyer au tuner les différents chiffres
    • Soit par infrarouge (hub harmony, broadlink etc…)
    • Soit par intégration existante HA (Livebox, TV connectée …)
    • Soit votre propre malice
  • Scripter chaque « touche » de 0 à 9 avec un prefix commun. Exemple :
    • touche_0
    • touche…
    • touche_9

Scripts et mise en place

AppDaemon

Dans le répertoire config/appdaemon/apps, créez un fichier set_channel.py et copier / collez le code suivant :

import appdaemon.plugins.hass.hassapi as hass
import time
#
# Change la chaine d'un tuner TV
# Pour l'appeler il faut lancer un event "change_channel" avec un param json "channel"
# Il écoute également l'event ifttt_webhook_received si le param "action" est "change_channel"
#
# Args :
# prefix: prefix des scripts de simulation de la télécommande que vous avez réalisé (exemple : "prefix: lg_channel_" appelera script.lg_channel_0 à script.lg_channel_9)
# 

class SetChannel(hass.Hass):
    def initialize(self):
        self.log("SetChannel loaded")
        self.listen_event(self.do_change, 'change_channel')
        self.listen_event(self.do_change, 'ifttt_webhook_received')
    def do_change(self, event_name, data, kwargs): 
        self.log("Changing channel for {}".format(data["channel"]))
        delay = 0
        for c in str(data["channel"]):
            self.do_channel({"channel": c})

    def do_channel(self, kwargs):
        target = "script.{}{}".format(self.args["prefix"], kwargs["channel"])
        self.log("Pressing remote button {} - call script {}".format(kwargs["channel"], target))
        self.turn_on(target)

Dans le même répertoire, ouvrez apps.yaml et ajoutez l’entrée suivante :

set channel: 
  module: set_channel
  class: SetChannel
  prefix: touche_

prefix : tout ce qu’il y a avant le chiffre dans vos scripts de « touches »

C’est tout pour Home-Assistant, passons à IFTTT :

If This Then That

  • Allez sur la création d’applet libre de IFTTT : https://ifttt.com/create
  • Le déclencheur (IF …), c’est Google Assistant : « Say a phrase with a number« 
    • What do you want to say? : chaine #
    • What’s another way to say it? (optional) : mets la chaine #
    • What do you want the Assistant to say in response? : ça roule
    • Language : French
  • L’action (…That) c’est webhooks
    • URL : l’url de l’intégration IFTTT de HA : https://[serveur]/api/webhook/XxxXxxTOKENXsxsxxXxxXXxxxXTokenToken
    • Méthod : Post
    • Content Type : Application/json
    • Body :
      {« action »: « change_channel », « channel »: « {{NumberField}} »}

Et voilà…

Normalement, tout est bon ! Y’a plus qu’à tester en envoyant la demande à notre assistant vocal !

Note : peut fonctionner de la même manière pour Alexa ou pour n’importe quel déclencheur IFTTT à chiffre

Vous aimerez aussi...