Nuevos avances. La última vez que utilicé WhatsApp como sistema de control remoto (Riego de jardín con WhatsApp y radiofrecuencia) hice uso de la versión 1 de Yowsup, librería de comunicación con WhatsApp escrita en python. Pero algún tiempo después esta primera versión de Yowsup dejó de ser funcional, y aunque tiempo después fue reescrita en una segunda versión, todo el código que había desarrollado para ello no era compatible.
Después de algunos trasteos, y de comprender cómo funciona esta nueva librería, he conseguido volver a hacer operativo el sistema de comunicación. E incluso el código ha quedado bastante más limpio. Recopilemos: se envía desde un terminal móvil un mensaje de control. Este mensaje es recibido gracias a una aplicación que hace uso de Yowsup, instalada en una Raspberry Pi. El programa interpreta el mensaje, y toma la acción oportuna. Hasta este momento, encender y apagar un relé durante un número de segundos indicado en el mensaje; relé que no se encuentra conectado directamente a la RPi, sino controlado por un chip Attiny85. La RPi, haciendo uso de un emisor de RF de 433 MHz, da las órdenes de encendido y apagado al Attiny85. El Attiny, que se encuentra a la espera de mensajes en un modo de bajo consumo, recibe la señal de interrupción hardware provocada por el receptor de 433 MHz. Sale del modo de bajo consumo, y activa el relé. Posteriormente, bajo otra orden de apagado por parte de la RPi, desactiva el relé y vuelve al modo de bajo consumo.
Teniendo en cuenta que aquí en Irlanda un sistema de riego automático es algo que carece de utilidad (el propio clima es un sistema de riego automático ), ¿qué se puede querer controlar de manera remota? He aquí la respuesta:
En cuanto a la preocupación por el consumo, éste ha mejorado de manera considerable. El Attiny se encuentra alimentado por una batería de móvil de 2100 mAh, conectada a un panel solar que recarga la batería. Hasta el momento, lleva 4 días funcionando de manera ininterrumpida, y la última medición de la batería indica que la carga es de 3.85v. Un enorme avance con respecto a la anterior versión del reloj de riego de jardín.
Etiquetas: attiny85, python, raspberry pi, whatsapp, yowsup
Llevo unas cuantas semanas sin escribir, y es que entre el trabajo y diversas ocupaciones no he podido ponerme a darle a la tecla. Sin embargo, no he estado ocioso todo este tiempo. Y este vídeo es la prueba de ello:
Como se puede ver (aunque un poco oscuro), se trata de un reloj de riego de jardín controlado por WhatsApp. Los mensajes son enviado por WhatsApp y recibidos por una Raspberry Pi, que activa el reloj de riego mediante radiofrecuencia.
El reloj, por otro lado, está controlado por un chip Attiny85, programado con Arduino. El conjunto está alimentado por una batería de 9v. Con un regulador se baja el voltaje a 5v, que proporciona alimentación tanto al sistema attiny como al propio motor de riego. El esquema básico de funcionamiento es el mismo que el de este diagrama…
…pero reemplazando el arduino por el attiny.
Otro día, con más tiempo, doy más detalles del funcionamiento.
Etiquetas: arduino, attiny85, jardín, radiofrecuencia, raspberry pi, riego, whatsapp
Otro de los avances de este fin de semana ha sido que finalmente he conseguido enviar imágenes desde la Raspberry mediante comandos de WhatsApp. Esta ha sido la primera imagen enviada:
La imagen es bastante mala, lo sé, pero mi webcam ha pasado por tiempos mejores.
El método fue el siguiente: conecté una antigua webcam USB a la Raspberry. Instalé la aplicación “fswebcam”, que permite tomar capturas de pantalla de un dispositivo de vídeo (en este caso, la webcam, /dev/video0), y almacenarlas como imágenes. Tras comprobar que esto funcionaba, conseguí por fin modificar el código de Yowsup para que procesara adecuadamente el envío de imágenes, gracias a un código compartido en la web de proyecto, que no me costó demasiado adaptar para que se ejecutara al recibir comandos desde WhatsApp, de una manera similar a como activo y desactivo los relés y el sensor de movimiento.
Las posibilidades de esto son enormes: la idea que tengo ahora es modificar el código de aviso del sensor de movimiento PIR para que, además de avisar de cuándo se ha detectado movimiento, realice una captura automática con la webcam, y la envíe al teléfono. Es decir, tener la posibilidad de tomar capturas bajo demanda, o bien de manera automatizada ante eventos externos.
¿Mejoras? Unas cuantas: la primera es que el código compartido no es capaz de hacer el envío de la miniatura asociada a la imagen, lo que produce en algunas ocasiones que WhatsApp dé un error en Android al intentar mostrar la miniatura (aunque luego la imagen se ve bien). La segunda es conseguir una webcam mejor. En cuanto a la tercera, sigue habiendo un problema: la webcam tiene que estar conectada a la raspberry, lo que no resulta demasiado práctico si el sensor de movimiento está, por ejemplo, en la entrada (y conectado con la raspberry por RF). Sería interesante poder hacer uso de una webcam IP, o algún sistema de captura de imágenes para Arduino.
Por cierto, aunque la imagen que encabeza el artículo es la primera que transmití de manera controlada por WhatsApp, no es en realidad la primera imagen enviada. Hubo otras dos antes:
Esta es la primera imagen que envié al móvil desde la Raspberry, antes de realizar la integración con la webcam. La envié con un comando desde la raspberry, para probar la efectividad de la librería de envío de mensajes.
En cuanto a esta otra, en la primera imagen que envié tras integrar la captura de la webcam en el sistema de envío de mensajes de WhatsApp. Pero, de nuevo, fue enviada desde la raspberry hacia el teléfono, antes de implementar la lógica que permite capturar la imagen desde el teléfono.
Por cierto, lo que se ve en ambas capturas es una estantería de mi estudio llena de libros, y el reloj de riego automatizado.
Este fin de semana he seguido avanzando con el tema de la domótica. Tras conseguir intercomunicar un arduino y la raspberry por radiofrecuencia, he conseguido progresar bastante. Como puede verse en el siguiente vídeo:
Se trata de un reloj de riego barato comprado en el Leroy Merlín. Le he reemplazado la lógico, y dejado tan sólo el servomotor que controla el paso del agua. Para ello he necesitado lo siguiente:
El sistema quedaría de la siguiente manera:
Hay una serie de posibles mejoras en las que empezar a trabajar:
Etiquetas: arduino, attiny, raspberry pi, reloj de riego, whatsapp
Llevo desde hace algunos meses trabajando en un sistema de control de domótica controlado por WhatsApp en Raspberry: , , . La parte central del sistema es la librería yowsup, que permite comunicarse por línea de comandos con WhatsApp desde linux. He modificado el código del mismo, para poder capturar los mensajes enviados desde el teléfono, e interactuar con los GPIO de la Raspberry. Este es el código que hasta el momento he desarrollado:
Código fuente de control de Raspberry por WhatsApp
Varios comentarios al mismo:
Espero que os resulte de utilidad.
Etiquetas: python, raspberry pi, whatsapp