OK! Lo intento
Por favor, si lo encuentras interesante modifícalo como quieras y publícalo sin ningún problema (disculpa también las faltas de ortografía).
Para configurar Alexa+HomeAssistant+Firetvstick (tal y como lo he hecho yo, dividiré la explicación en tres partes).
PARTE I - Configurar FireTV Stick
- Debemos activar el modo debug en el Firetv. Atención, esto permite a cualquier usuario de nuestra red controlar nuestro firetv. No activar si estaís en una red pública (por ejemplo, en un hotel).
Debemos ir a configuración->mi firetv->Opciones de desarrollador->ADB Debugging
- En el ordenador/raspberry/nas donde tenemos el home-assistant, deberemos instalar el puente adb. Esto dependerá de la distribución Linux que estemos usando. En debian seria:
- Ahora, debemos configurar un servidor REST que hará de puente entre home-assistant y el firetv. Para ello podemos utilizar un script en python3 con la librería flask. Os pongo el código. Fijaros que se debe poner la dirección IP correcta de vuestro FireTV (se puede encontrar en el menú de ajustes del firetv). Aquí como ejemplo he dejado la 192.168.1.3 que se debe cambiar por la vuestra.
El fichero lo guardaremos en la raspberry (u otro dispositivo) donde tengamos nuestro homeassistant. Recordad instalar la librería flask. Por ejemplo, en debian seria:
Editamos el fichero:
Y el contenido:
Código: Seleccionar todo
#!/usr/bin/python
import subprocess
from flask import Flask
app = Flask(__name__)
def connect_firetv(firetv_ip='192.168.1.3'):
""" Connect to firetv in debug mode """
cmd = ['adb', 'connect', firetv_ip]
subprocess.call(cmd)
def awake_firetv():
""" Awake firetv """
cmd = ['adb', 'shell', 'input', 'keyevent']
# KEYCODE_WAKEUP
subprocess.call(cmd + ['224'])
# UNLOCK SCREEN
subprocess.call(cmd + ['82'])
@app.route('/<application>')
def run_app(application):
""" Run app in firetv basic stick using android debugger """
apps = {
'netflix': 'com.netflix.ninja/.MainActivity',
'prime': 'com.amazon.amazonvideo.livingroom.firetv/com.amazon.ignition.FireOsIgnitionActivity',
'kodi': 'org.xbmc.kodi/.Splash',
'movistar': 'com.movistarplus.androidtv/.MainActivity'
}
cmd = ['/usr/bin/adb', 'shell', 'am', 'start', '-n']
myapp = apps.get(application, None)
if myapp:
connect_firetv()
awake_firetv()
cmd = ['/usr/bin/adb', 'shell', 'am', 'start', '-n', myapp]
subprocess.call(cmd)
return "{} opened".format(application)
else:
return "Unknown application"
- Para mantener el servidor, podríamos utilizar directamente el servidor de pruebas de flask, pero si queremos darle un toque más profesional, podemos usar gunicorn. Instalamos gunicorn con
Vamos donde hemos guardado el código:
Y ya podemos ejecutar nuestro servidor:
Código: Seleccionar todo
gunicorn -w 4 -b 127.0.0.1:4000 firetv_rest_server:app &
Fijaros que sólo permitimos conexiones en local, esto es, de nuestro home-assistant a si mismo. Lo hacemos por el puerto 4000, pero si lo tenéis ocupado podeís seleccionar otro a vuestro gusto.
TEST PARTE 1:
Para comprobar que hasta ahora funciona todo correctamente:
Código: Seleccionar todo
curl -X POST -H "Content-Type: application/json" http://127.0.0.1:4000/netflix
Debería encender netflix en vuestro televisor (éste debe estar encendido).
Alerta, en la primera prueba el firetv os pedirá una confirmación por la tele de que permitís la conexión desde el ordenador de homeassistant. Confirmad seleccionando también el checkbox para que no os la vuelva a pedir.
P.D. Como se puede ver es un pelín complicado. Y todavía quedan dos partes...
![Sad :(](./images/smilies/icon_e_sad.gif)