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