ALEXA – DOMOTICA LOW COST CON RASPBERRY PI (II)

Quizás es un poco tarde, pero tal y como prometí en su momento, me dispongo de nuevo a documentar la nueva versión del sistema de domótica que ya desarrollé en entradas anteriores y enumerar las nuevas características con las que lo he equipado.

En la última entrada comenté que quería desensamblar aquel ser monstruoso que creé para rehacer todo de nuevo  y así lo hice, conservando, claro está, el corazón del sistema, la Raspberry Pi y los SSR (Solid State Relay). No hay la verdad mucha novedad en lo que el software se refiere, por lo que la mejor manera de mostrar las partes del hardware es, lógicamente, a través de fotografías. Pero antes de ello, os comento qué idea exactamente tenía en la cabeza.

Tenía claro que no quería insertar el sistema en el cuadro de luces de nuevo. Quería que el sistema fuera independiente e incrustado todo en una especie de cuadro eléctrico externo que podía apañar en establecimientos tipo Leroy Merlin. En un principio quería algo pequeño, sin embargo pensé en problemas de disipación de calor y luego tuve un genial idea que me hizo decidirme finalmente por un cuadro de un tamaño un tanto mayor. ¿Por qué no incluir unos altavoces? Y así fue, estuve buscando por diferentes lugares unos altavoces pequeños que NO funcionaran por USB y con una forma vertical para incrustarlos también dentro del sistema.

Vista del sistema cerrado.

Vista del sistema cerrado.

Fue lo primero que hice nada más adquirir la caja. Desmonté los altavoces junto con el transformador y los conseguí incrustar uno a cada lado dejando espacio para todo lo demás y consiguiendo un bonito efecto estéreo en la caja. Hacer hincapié en que el sistema recibe una única entrada AC y cuatro salidas fásicas que abrirían o cerrarían el circuito de cualquier cosa que conecte. Claro está, que de esa entrada AC se alimentarían los altavoces y, por supuesto, la Raspberry; por lo que también deberían buscar sitio para el transformador de 5V que necesita. Estaba ávido por probar al menos esa configuración y todo fue como la seda. Conectado por SSH y reproduciendo música sin ningún problema y con una calidad aceptable. Se abría un abanico de posibilidades.

Anteriormente tenía un pequeño ventilador que  daba aire fresco al procesador de la RBPI, y aunque quería verdaderamente mantenerlo, quería también que se pusiese en funcionamiento cuando la temperatura fuera un tanto elevada. Como muchos sabréis, la placa no cuenta con PWM para controlar la velocidad del ventilador y tampoco lo quería 24/7 girando y generando ruido. Me las apañé con la ayuda de internet, de diseñar un pequeño circuito con un Diodo y un Transistor para manejar el funcionamiento del ventilador a mi antojo y usando un puerto GPIO para ese menester. Así que con soldador y estaño en mano me lié la manta a la cabeza y quemándome un par de veces conseguir hacerlo funcionar. Aquí un diseño del circuito.

 

Circuito para controlar el ventilador del procesador

Circuito para controlar el ventilador del procesador

Circuito

Circuito

Otro nuevo abanico de posibilidades ante mí. Ahora con un script ejecutándose cada minuto, me aseguro de medir la temperatura y activando y desactivando el ventilador automáticamente. Hay que tener en cuenta que la caja de marras iba a estar cerrada y que no existe re-circulación del aire. Así que conseguí una con una bonita ventanita que podía dejar abierta con un ventilador de 12V extra que sí está funcionando permanente. Las salidas que la placa proporciona son máximo de 5V, y ahí reside el truco. Conectar un ventilador de 12V a una fuente de 5v es una maravilla. Gira, ventila y hace un ruido mínimo. Lo conecte a un Switch para poder desactivarlo a demanda ya que en verano aquí hace un calor torrador. Sin embargo, en invierno, lo mantengo desactivado y aquel que depende del script, apenas trabaja. Otra opción que estoy estudiando es hacer funcionar el puerto GPIO del ventilador en modo PWD para controlar a su vez la velocidad.

Vista del sistema cerrado.

Vista del sistema cerrado. Ventilador de 12V

También quería saber con un simple vistazo en qué estado estaba mi sistema. Mantuve la idea y hice tres bonitos agujeros en la caja para insertar tres leds. Verde, amarillo y rojo. Así, con tan sólo un vistazo, y como de un semáforo se tratara, el sistema se mantiene en un perenne verde esperanza mientras la temperatura no sobrepasa los 50ºC. En caso de hacerlo, el led amarillo se activaría junto con el ventilador para volver al estado anterior. Que no se preocupen aquellos con el sueño ligero. El sistema entra en modo “sueño” a partir de las doce donde los LEDs de desactivan y los ventiladores permanecen apagados a no ser que se sobrepase los 70ºC.

Altavoz Derecho y los tres LEDs

Altavoz Derecho y los tres LEDs

Para que me voy a engañar, construí el sistema con un propósito, poder activar la caldera a demanda. Tal y como comenté, el agua caliente en este país funciona con energía solar o, en su defecto, por la corriente eléctrica. Si quieres agua caliente, debes activar el interruptor y esperar unos 20 minutos a que el depósito se caliente. Os podéis imaginar en invierno cuando hay muy pocas horas de sol. Tener que levantarse antes o esperar sudando después de hacer deporte a que el agua esté lista. Esto solucionaría todos mis problemas, sin embargo, quería también tener una forma fácil de activar el termo sin tener que acudir a la consola. ¿Solución? Instalar un bonito botón en la caja, que al pulsarlo, mantuviera el termo activado durante 15 minutos para apagarse automáticamente transcurrido ese tiempo. Fácil, un proceso en linux que escuchara continuamente el estado de un GPIO que cuando valiera 1, activase el calentador durante un tiempo estimado. ¿Algo mejor que eso? Sí, que al pulsarlo de nuevo, lo desactive en caso de no querer mantenerlo encendido ese tiempo.

Botón para activar el calentador durante 15 minutos

Botón para activar el calentador durante 15 minutos y la circuitería de los LEDs

Teniendo el diseño más o menos pensando conseguí incrustar  todos los componentes básicos. La Raspberry, altavoces, ambos transformadores y los cinco SSRs. Faltaba también montar la circuitería de los LEDs e incluir tambien la placa que controlaba el ventilador del procesador más, obviamente, todo el cableado que tendréis la oportunidad de ver.

Me surgía en ese momento una duda, ¿qué hago con las dos cámaras que tenía instaladas? Y ya no sólo eso, sino que en el caso de mantenerlas me obligaba a también incluir en el equipo un HUB USB autoalimentado, ergo otro transformador extra. Además no había tenido muy buenas sensaciones anteriormente. Me decidí entonces por comprar una cámara IP barata que además me diera la oportunidad de controlar el movimiento y la podía instalar donde quisiera ya que se conectaría por WIFI. Concretamente adquirí este modelo por Ebay. Muy contento con el resultado. Funcionando 24/7 y dando un servicio perfecto. Sólo la uso como visor, pero cuenta con un montón de interesantes características. Si te bajas la aplicación móvil puedes incluso hablar desde el móvil y el altavoz de la cámara lo reproducirá. Ideal para amedrentar cacos.

Una vez puertos abiertos inserté la imagen procedente de la cámara Ip al servidor web de la raspberry para así poder no solo visualizar las imágenes, sino mover la cámara a mi antojo. Ahí no acababa todo. Pensé que sería una buena idea mantener una  de las dos webcams USB que tenía, pero no como webCam, sino como micrófono. Desmonté la cámara para que ocupara el menor espacio posible, localicé el micro y lo introduje en una pequeño agujero que hice en la caja. Ahora, Alexa, como llamo cariñosamente a mi sistema, tenía orejas y boca para interectuar con ella. Así luce ahora la página web y accesible desde cualquier lugar del planeta, obviamente, con doble autentificación

 

WEB

 

Micrófono y los controles de los altavoces. Switch, Salida Jack y Volumen

Micrófono y los controles de los altavoces. Switch, Salida Jack y Volumen

Los avispados habrán llegado a misma conclusión que yo. Ahora que Alexa tenía oídos, vamos a enseñarle a hablar. Encontré un software acorde a mis necesidades y hecho por y para la Raspberry. VoiceCommand Cumplía perfectamente con lo descrito y además cuenta con un archivo de configuración muy fácil. Lo primero que hice fue definir la “keyword”. El sistema estaría escuchando constantemente hasta captar la palabra que diera paso al siguiente comando. En este caso sería “Alexa”, ella respondía para escuchar a continuación el siguiente comando que había introducido con anterioridad en el archivo de configuración.

El funcionamiento en sí es simple. Graba tu voz, usa el reconocimiento de voz de google, recibe el texto y si coincide con tus patrones, responde con un “Yes, sir” o en mi caso con un “Dime”. Esto hace un poco lento el proceso. Empecé haciendo pruebas básicas… cosas como decirle “abogado” y responderme “el que tengo aquí colgado“. Modifiqué el TTS para que me respondiera en español, usando, claro, la voz femenina que tiene google en su traductor y en el GPS de maps mismamente. Sí, tiene voz de loca, lo que la hace aún más adorable. Fui puliendo poco a poco todos los comandos de voz. Le pregunto todos los días como está y ella, que es todo un amor, me responde con su temperatura y me das las gracias. Absténganse aquellos de compararme con Joaquin Phoenix en la película “Her”.

A decir verdad tengo la mayor parte del tiempo desactivado el control de voz a no ser que tenga visitas en casa para fardar un poco. La función mas divertida es gritar la palabra “Fiesta!” y Alexa automaticamente pondrá música techno y toda la casa empieza a parpadear al ritmo de la música. Próximamente, con dos palmas haré reproducir música clásica. 🙂

Aprovechando los altavoces y la voz de loca de Alexa, se me ocurrió otra manera original de aprovechar sus cualidades. Ya no sólo me activaría el agua caliente un tiempo antes, sino que también usaría como alarma para levantarme. Con la opcion tambien de controlar el volumen, hacía reproducir el Ave Maria de Shubert y subir el volumen paulatinamente acompañado del sonido de un riachuelo con pajaritos. Y no solo eso, con otro bonito script, me brindaba valiosa informacion como el tiempo actual y temperatura en la ciudad donde vivo y en la de origen y cualquier tipo de eventos, cumpleaños o citas que tuviera añadido en mi google calendar.

#!/bin/bash

cumple=/usr/local/bin/cumple
today=/usr/local/bin/today
lT=`TempVivo.sh`
cT=`TempOrigen.sh`
lC=`CondVivo.sh`
cC=`CondOrigen.sh`

amixer sset PCM 85%
mpg123 /root/BirdsMusic/AveMaria.mp3&
sleep 2
mpg123 /root/BirdsMusic/birds.mp3

google calendar today --cal "Evento*" | grep ^[A-Za-Z] | sed 's/-.*//g' > $cumple
google calendar today | grep ^[A-Za-Z] > $today

tts Arriba. Hora de levantarse
tts Actualmente $lC en "Ciudad donde vivo" con $lT grados. Y $cC en "ciudad de origen" con $cT grados.

if [[ -s $cumple ]] ; then
tts No olvides felicitar a `cat $cumple`
fi ;

if [[ -s $today ]] ; then
tts Tienes las siguientes tareas para hoy. `cat $today`
fi ;

Para conseguir las condiciones metereológicas y las temperaturas usaba el siguiente script. Pongamos que quiero conocer las los datos referentes a Lisboa:

#!/bin/bash
wget -q http://www.accuweather.com/en/pt/lisbon/274087/weather-forecast/274087?unit=c
cat 274087?unit=c | grep '<div class="info"> <span class="cond">' > current.txt
cat current.txt | cut -c 63-150 | sed 's/<.*//g' > cond.txt
cat cond.txt
rm 274087?unit=c
rm current.txt

He pensado siempre en perfeccionarlo para que me informe de la prediccion por horas, pero mira, despues de escuchar todos los días la misma cantinela, lo único que quiero es que termine de hablar cuanto antes para poder tener esos minutos de paz  en la cama antes de ponerme en marcha.

Por lo demas, la distrubucion de los relés (SSR) se distribuye de la siguiente forma:

  • SSR1 –> Salón
  • SSR2 –> Habitacion
  • SSR3 –> Termo
  • SSR4 –> Lavadora
  • SSR5 –> Altavoces
Transformador de la Raspberry PI y de los altavoces

Vista de los SSR, altavoces y demás circuitería.

Aunque puedo desactivar los altavoces por medio de un Switch, me decidí finalmente por conectarlos también a un SSR para poder activarlos o desactivarlos por software y que Alexa permanezca callada en horas de sueño. Y bueno,  dado que vivo solo decidí que sería buena idea poder activar la lavadora a distancia en caso de estar fuera y poder tender la ropa nada más acabar el programa. Introduzco la ropa, echo los productos y listo. Ayuda que mi lavadora no sea digital, aunque imagino que las digitales continuarían el programa donde lo dejaron en caso de falta de corriente.

Aunque no lo he mencionado antes, el puerto USB que queda disponible una vez conectada la Camera-micrófono, es usado lógicamente por un Nano Dongle wifi que funciona “Out of the box”. Concretamente uno basado en el chip Ralink 5370 que compré en Pi-supply.com.

Antes tenía conectado un TP-LINK cuyos drivers tenía que compilar con cada actualización del kernel y era una pesadilla. Lo que conllevaba a que tenía que abrir el sistema para conectarme a través de LAN. Solucioné ese inconveniente instalando un conector LAN exterior que me permitía conectarme sin necesidad de abrir la caja. La verdad que el dongle actual me está dando resultados excelentes. A pesar de varios Kernel updates, el módulo se carga correctamente y no he tenido hasta ahora que tirar de la conexión LAN para solucionar cualquier incidente.

Raspberry PI - Sensor de humedad y temperatura - Micrófono de la cámara USB

Raspberry PI – Sensor de humedad y temperatura – Micrófono de la cámara USB

Y para terminar, hace unos días recibí de Adafruit un sensor de temperatura y humedad para poner la guinda al sistema permitiendome controlar el nivel de humedad de mi casa que habitualmente permanece cerrada. Los requerimientos serían un puerto GPIO libre, 5V + GND y una resistencia para hacerlo funcionar. Ahora desde la consola puedo visualizar los siguientes datos:

Puta humedad

Alexa está completa, es una maravilla y es un sistema completamente portátil que puede ser transportado sin ninguna dificultad a otra vivienda brindando su amor y su voz de loca a cualquiera que esté dispuesto y que no odie aún el Ave Maria que yo ya no puedo aguantar.

Vista del sistema cerrado

Vista del sistema cerrado

Entrada AC

Entrada AC

Vista del sistema cerrado.

Vista del sistema cerrado.

Anuncios

17 pensamientos en “ALEXA – DOMOTICA LOW COST CON RASPBERRY PI (II)

  1. Manolo dice:

    Casi un año de espera, mereció la pena :))

  2. […] Alexa – Domótica Low Cost con Rasberry Pi (II) […]

  3. Alex dice:

    Puto amo. Eres mi ídolo. Sigue así.

  4. Maite dice:

    Una màquina!!! Como siempre!!

  5. reddox dice:

    Espero con deseos próxima entrada. Estoy con una RPi 2 probando y probando, pero la instalación eléctrica de mi casa es una M con lo que estoy un poco limitado en ese sentido…En cualquier caso, buen trabajo!

    • Qué quieres decir con la instalación de tu casa en un M? que es monofásica?

      • reddox dice:

        En la última reforma que se hizo, los artistas fijaron cables con cemento, tubos corrugados partidos o ausentes, un diferencial que sólo alimenta una bombilla, y otro que soporta casi todos los enchufes…
        Entonces, mi propósito (en principio) es controlar dos lámparas en el salón-comedor, y entre las opciones que barajaba era utilizar los enchufes de radiofrecuencia, utilizando los emisores de 433 mhz, o directamente, ir a la opción fácil y comprar un sistema Hue lux o Wemo. Ambos tienen APIs para poder gestionarlas desde python.

      • En la próxima entrada es justo lo que quiero comentar. Me compré dos tiras de LED más cuatro bombillas y ya practicamente tengo automatizado el encendido en cuanto llego a casa. Como tú comentas, la API de python es muy fácil de usar y además también hay aplicación Android. Lo bueno de ello es que también puedes controlar la intensidad de luz.

        Lo malo, claro, el precio. Cualquier cosa me comentas. Un saludo.

      • reddox dice:

        Intuyo que has utilizado el sistema de Philips, no? Ardo en deseos de ver la próxima entrada!

  6. Me encanta este blog. No solo por la información sino por la forma en la que escribes. Estoy empezando a jugar con la raspberry y sin dudas volveré a leer tus experiencias y recomendaciones. Gracias por compartirlo!

  7. German dice:

    Muy bueno el blog! me gustaría contactarme para intercambiar ideas! un abrazo!

  8. Neofito dice:

    Como tienes el proyecto? quería usar la raspberry como despertador inteligente y servidor domótico (eso para ir poniendo cosas como subir y bajar la persiana, pero por ahora la alarma inteligente me sirve). Con esos scripts tendría casi lo que quiero, poder poner la alarma por comando de voz, que me lea los eventos de gcalendar y me diga el tiempo. Lo único que todo eso son comandos que has creado en el script, no? no hay manera de que devuelva por ejemplo a viva voz el resultado de una busqueda en google

    Una pena que google now no tenga la api abierta como el asistente de amazon.

  9. cristian dice:

    muy buenos y prácticos tutoriales.

    compañero todo funciona muy bien pero me surge una duda, digamos que como lo vimos acá conectas una lampara y la manejamos vía web, hasta hay no hay problema ella enciende y apaga, pero como podría hacerse si en medio de la luz esta el interruptor normal que enciende y apaga la lampara como capturamos ese evento para que cuando se haga de forma manual la pagina web actualice el estado lo cambie, ejemplo: enciendo la lampara con la raspberry, en ese momento el estado es encendido, si yo uso el interruptor se apaga la lampara pero el estado sigue siendo encendido y la lampara ya esta apagada, como podríamos hacerlo, si sabes como hacerlo podrías ser tan amable de realizar un tutorial, realmente te lo agradecería muchísimo es algo que creo que varios necesitamos jejeje. feliz día.

  10. […] hay gente muy ingeniosa que controla las luces de su casa con una raspberry pi y su […]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: