
SINRIC PRO puedes conectar diferentes dispositivos con Alexa o Google Home, permitiendo realizar diferentes acciones sobre los mismos. El codigo esta disponible para python3, por lo que podemos realizar la instalacion en diferentes imagenes enigma2 con python3 como openatv, egami, openvix, para poder controlarlos mediante voz por ejemplo con Alexa, en este articulo vamos a ver como realizarlo.
Web Oficial: https://sinric.pro/
Codigo python: https://github.com/sinricpro/python-sdk
1. Instalacion de Sinric Pro en imagen enigma2
Para realizar la instalacion de Sinric Pro como hemos comentado se realiza bajo imagen python3, en este ejemplo lo vamos a realizar con OpenATV 7.1, asi como testeado tambien con Egami 10.xx.
Accedemos al receptor mediante terminal y vamos a ejecutar los siguientes comandos:
opkg update
opkg install opkg install python3-distutils
opkg install python3-multiprocessing
opkg install python3-xmlrpc
curl https://bootstrap.pypa.io/get-pip.py --output /tmp/get-pip.py
Nota para imagenes python 3.11, se necesitara si no lo tienes instalado:
opkg install python3-compile
opkg install python3-plistlib
python /tmp/get-pip.py
pip install --upgrade pip
pip install --upgrade setuptools
pip install sinricpro
2. Registrar Dispositivo en Sinric Pro
Una vez hemos realizado la instalacion en nuestro receptor enigma2, debemos crear Dispositivo para realizar la asociacion en la web oficial de Sinric Pro, para ello realizaremos los siguientes pasos:
- Registrarnos en la web Sinric Pro es gratuito
- Podemos añadir hasta 3 devices de una manera gratuita
- La cuenta creada podremos asociarla a Alexa skill o google Home.
1. Accedemos a la web https://sinric.pro/ y pulsamos en registrarnos
2. Introducimos nuestros datos para realizar el registro
3. Tras introducir los datos de registro nos indicara que se nos ha enviado un correo que debemos confirmar
4. Vamos a nuestro correo de registro, pudiera estar en spam y pulsamos en confirmar
5. Ahora nos logueamos con la cuenta realizada nos aparecera la interfaz principal, donde pulsaremos sobre Dispositvos
6. Ahora pulsamos sobre Añadir Dispositivos
7. Ahora debemos introducir los siguientes datos:
- Nombre de dispositivo: Introducimos el nombre que deseemos usar, sera al que luego llamaremos desde alexa o google home para realizar una accion, por ejemplo: Alexa apaga a xxxx que sera el nombre que pongamos, en este ejemplo clemente.
- Descripcion: Una descripcion del dispositivo en este ejemplo el modelo de receptor
- Tipo Dispositivo: Seleccionamos TV
El resto de opciones las dejamos por defecto y pulsamos proxima
8. Ahora en todas las opciones que nos van apareciendo tras pulsar proxima las dejamos deshabilitadas, es decir como aparecen por defecto y vamos pulsando proxima
9. Para finalizar pulsamos en Salvar y ya hemos creado nuestro dispositivo.
10. Tras pulsar en Salvar nos apareceran unos datos que deberemos copiar ya que nos haran falta mas adelante, le podemos dar sobre el simbolo copiar a cada uno de ellos y pegarlos en un archivo de texto, los cuales son como vemos:
- Id del dispositivo
- Clave de la aplicacion
- Api secreta
11. Ahora debemos asociar Sinric pro con Alexa o Google Home, en este ejemplo con Alexa nos iriamos al siguiente enlace https://www.amazon.es/HOME-Sinric-Pro/dp/B07ZT5VDT8 para acceder a la skill Sinric Pro y le dariamos a activar, tras ello nos pedira usuario y contraseña de logueo que nos creemos en la web de Sinric pro y ya lo tendriamos activado, en este ejemplo para Alexa.
Una vez asociado en dispositivos de Sinric pro nos aparece el dispositivo creado para enigma2.
3. Conectar receptor enigma2 con Sinric Pro
Ahora vamos a ver un ejemplo de conexion basico de enigma2 con Sinric pro, para ello debemos crear codigo python para realizar la conexion, vamos a tomar como plantilla unos de los ejemplos para tv de la web oficial:
- https://github.com/sinricpro/python-sdk/blob/master/examples/tv.py
En este caso, os dejamos un ejemplo muy basico de encendido y apagado y de cambiar de canal a telecinco:
Una vez descargado, tendremos una carpeta llamada Alexa la introducimos por ejemplo en el directorio del receptor /usr/bin.
A continuacion abrimos el archivo llamado credentials.py y observaremos que tiene los siguientes parametros:
APP_KEY = »
APP_SECRET = »
TV_ID = »
Introducimos los que teniamos copiados cuando creemos el dispositivo teniendo en cuenta que:
- Id del dispositivo = TV_ID
- Clave de la aplicacion = APP_KEY
- Api secreta = APP_SECRET
Por lo que quedaria:
APP_KEY = ‘xxxxxx’
APP_SECRET = ‘yyyyyy’
TV_ID = ‘zzzzzzz’
Esto seria todo, si abris el archivo tv.py observareis que hemos realizado en un principio una modificacion sencilla para que podais probar y enredar a vuestro gusto y sepais como funcionan las cosas, observareis que para apagado y encendido hemos añadido:
def power_state(device_id, state):
print(‘state : ‘, state)
if state == «Off»:
urllib.request.urlopen(«http://127.0.0.1/web/powerstate?newstate=0»)
else:
urllib.request.urlopen(«http://127.0.0.1/web/powerstate?newstate=4»)
return True, state
Esto quiere decir que si le pedimos a alexa:
- Alexa, apaga a clemente — se ejecutaria urllib.request.urlopen(«http://127.0.0.1/web/powerstate?newstate=0») la opcion de openwebif de poner el receptor en standby
- Alexa, enciende a clemente — se ejecutaria urllib.request.urlopen(«http://127.0.0.1/web/powerstate?newstate=4») es decir encender el receptor.
Otro añadido basico que hemos añadido es el cambio de canal por nombre:
def change_channel(device_id, channel_name):
print(‘channel_name : ‘, channel_name)
if channel_name == «Telecinco»:
urllib.request.urlopen(«http://127.0.0.1/web/zap?sRef=1:0:19:7536:426:1:C00000:0:0:0:»)
return True, channel_name
Esto quiere decir que si le pedimos a alexa:
- Alexa, cambia a telecinco en clemente — se ejecutaria urllib.request.urlopen(«http://127.0.0.1/web/zap?sRef=1:0:19:7536:426:1:C00000:0:0:0:»), es decir el receptor se cambiaria a telecinco
Tras esta pequeña explicacion, para ejecutar en este ejemplo el codigo python usariamos el siguiente comando:
python /usr/bin/alexa/tv.py
Si todo fue bien observaremos que el dispositivo aparece ya como conectado (online)
Ya teneis donde entreteneros para editar codigo si quereis añadir mas opciones, en un futuro añadiremos mas opciones y mejoras, mientras a trastear.
Gracias por el aporte intenté instalar en open atv 7.0 pero al ejecutar el comando me dice que no encuentra el módulo xmlrpc no se a que se refiera con si pudieran ayudarme a solucionarlo saludos
igual openatv 7.0 no tiene el modulo instalado por defecto, simplemente instalado:
opkg install python3-xmlrpc
Gracias por responder con eso se solucionó saludos
Gracias por el tuto, me falta que me indiqueis como añadir que se ejecute al inicio el python /usr/bin/alexa/tv.py ya que si lo ejecuto funciona pero al reiniciar el deco no funciona y lo tengo que poner manualmente.
Te pones el comando en un comando @reboot en el cron y listo
ya lo he intentado hacer y no lo inicia, no se en lo que estoy fallando
Se sabe algo de las mejoras que pone al final del tuto? alguien tiene un archivo tv.py con mas opciones, lo de modificar ese archivo para añadir mejoras lo veo complicado.