Amazon Echo Alexa y Raspberry PI 2 | Encender Led con Alexa Smart Home o Casa Inteligente



Con mas tiempo libre decidí comenzar un proyecto para encender las luces de mi Setup por medio de voz con la ayuda de Alexa.

Actualmente mi Setup se ve asi


Esas luces de fondo son las que quiero con ayuda de esta señorita quiero que se enciendan y se apagan con un comando de voz.

Se pueda encender las luces ya que amazon por medio de alexa permite convertir nuestra casa en una casa inteligente o Smart Home.

Entonces para poder hacer esto realidad necesitamos de raspberry pi que sera el encargado de encender la luces y apagarlas, pero como todo lleva tiempo por ahora apenas voy en la fase de encender un led Jajaja asi que en los post futuros explicare la parte faltante.

Estos son las cosas que necesitamos:

  • Raspberry Pi
  • Amazon Alexa
  • Led
  • Resistencia
  • Cable puente
  • Protoboard
Raspberry 




Con respecto al raspberry es importante que este actualizado ademas es necesario tener unas librerías de python instaladas.

en este repositorio que cree en github https://github.com/FuriosoJack/SmartHomeAlexa deje todo el código asi que se lo clonan en la raspberry.

respositorio smartHome


Este repositorio lo cree basando en este otro https://github.com/toddmedema/echo.

Bueno mi repositorio esta compuesto por la carpeta modules. Esta carpeta esta compuesta por 3 archivos.


El primero solo es para que python reconozca la carpeta como un modulo.

El siguiente es el handler de la cual se va a extender las clases que vallamos a crear que serán los dispositivos a los cuales se les dará una acción.

El tercero es el mas importante, es el que hace la magia, no he encontrado mucha documentación del autor pero en lo que vi del código es el archivo que contiene las clases que construyen el servidor upnp, que se necesita para que alexa encuentre el dispositivo, ay que alexa hace un escaneo en la red wifi a la que esta conectada por medio de upnp. Sin embargo cuando tenga mas tiempo buscare mas documentación y ver a detalle el código.


Ya fuera de la carpeta de modules tenemos al archivo de requerimientos.txt en donde se penen las librerías que necesita el python2 para el funcionamiento.

Básicamente se deben tener las siguientes librerías
  • argparse
  • distribute
  • requests
  • wsgiref
Pueden usar el comando pip install -r requerimientos.txt el cual les instalara todas las librerías anteriores de una vez en lugar de que este instalando una por una.

Led





Protoboard


Cable puente

Resistencia


Con respecto a la resistencia se debería utilizar una resistencia de 100 Ohms  (marrón, negro, marron)pero como no tengo utilice una de 200 Ohms (rojo, negro, marron).

En este vídeo se explica el por que de ese valor



Explicación de archivos del repositorio


El siguiente archivo tenemos al ejemplo-minimo.py el cual es el mismo que se encuentra el repositorio del que me base. Este archivo simplemente si se corre con el comando python ejemplo-minimo.py hace lo anteriormente indicado crea un socket y de escucha para el protocolo upnp para que alexa lo encuentre, en la consola simplemente se nos muestra cuando lo encendemos y lo apagamos desde el comando de voz de alexa.

Ejemplo basico

Entonces para el funcionamiento basico seria

primero ejecutar el comando en la consola y se vería algo como esto:




Básicamente si sale como en la imagen todo va bien, simplemente dice que se creo un nuevo dispositivo con el nombre de computer y que esta listo escuchando en la ip con el puerto 52000.

EL siguiente paso seria decirle a alexa que busque dispositivos para ello se le dice:

discover my devices

cuando se le dice eso alexa hace el escaneo y en si encuentra el dispositivo en la consola debería salir algo como esto



Si se dan cuenta que ahora apareció el texto de Reponding pues bien todo va bien, pero para estar seguro podemos comprobarlo desde la pagina de alexa ya debería aparecer asi



Entonces ya jajaj ya alexa ya reconoce el dispositivo ahora para darle acciones que solo son encender y apagar es necesario decirlo por su nombre entonces si se le dice a alexa que encienda con el el comando turn on computer alexa debe responder que todo esta OK y en la consola debe visualisarse algo como




y de forma inversa si se le dice off debe aparecer





Ejemplo con led

Bueno el diagrama de conexión se vería algo como esto




Pero en realidad se va a ver asi Jajaja


Acá básicamente el cable negro este conectado al pin 6 gnd o negativo y el cable blanco al pin 11 o gpio 17

el extremo del cable negro hace puente con el cátodo del led, el cable blanco hace puente con la resistencia de 200 ohms y luego el otro extremo de la resistencia al anodo o lado positivo de led para cerrar el circuito.  Omito la explicación de la protoboard por que yo imagino que saben como son los puentes que tiene la protoboard asi que no hagan estragos, si tiene dudas en este punto comenten.

Ahora vamos archivo que hace la tarea, entonces para eso esta el otro archivo ejemplo-led.py, este archivo que es básicamente parecido al anterior solo con unas cuantas lineas mas.

Bueno básicamente acá solo importe las librería de GPIO del raspberry (linea 5), se hace un set de la configuración (linea 8) y se dice que el gpio 17 va a ser de salida(linea 9).

Le cambie el nombre al dispositivo y lo bautice como desk lithg(linea 15).

Ahora en el método que se ejecuta siempre cuando se llama con alexa es el act el cual recibe 3 parámetros client_address que en este caso sera la ip de nuestro raspberry, el state que sera un booleano y corresponderá a lo que le dijimos a alexa si le dijimos off sera un false y on sera un true y el name que sera el nombre del dispositivo.

Dentro de este método fue donde declara que se encenderá o se apagara el led dependiendo de la variable state que se recibe y esto esta declarado en la linea 19.


Aca un demo




y eso es todo hasta ahora voy aqui, cuando ya lo tenga con las luces de 120 voltios hago el nuevo post pero me toca conseguir un relay.

Nos leemos en el siguiente post, no olviden dejar sus comentarios si tienen dudas.

2 Comentarios