Esta entrada de blog ha sido creada por Javier Montaner, uno de los miembros de Makespace Madrid.
Introducción
Hace unas semanas participé en la piweek organizada por kaleidos. Es una semana diferente en la que se deja a los participantes total libertad para que trabajen en lo que quieran.
En el día a día laboral no hay tiempo para profundizar en ciertos temas o aprender nuevas tecnologías. Kaleidos cree que hay que promover el aprendizaje proactivo y por ello «libera» a sus desarrolladores de su trabajo habitual durante una semana para que trabajen en lo que les apetezca y atraiga. A cambio sólo se pide que presenten el resultado de lo que han hecho y aprendido al final de esta semana. Lo mejor de todo es que Kaleidos también abre la semana a colaboradores externos que quieran experimentar este modelo con ellos. Y aquí entré yo.
Aunque no cumplí estrictamente las reglas de la piweek (no pude dedicar una semana completa) sí que participé desarrollando un proyecto que llevaba rondando por mi cabeza desde hacía varias semanas. Por motivos que no vienen al caso, no puede estar en la jornada inicial en la que se presentaron los proyectos y se formaron los grupos. Eso me dejó como grupo unipersonal. No hay problema, pero me perdí una de los aspectos más interesantes de la semana, el colaborar y aprender en equipo.
Yo no soy informatico ni desarrollador profesional, con lo que la mayoría de las tecnologías utilizadas me sonaron a chino (grunt, django, clojure, go, angular,…). Por suerte había un proyecto de la gente de Barcelona Digital que también usaba hardware y cuyos miembros tenían un perfil más parecido al mío:-)
El proyecto
Utilizar el sistema de notificaciones de Google (Google Cloud Messaging, GCM) para controlar un dispositivo conectado a internet a través de un smartphone. El objetivo era comprender como funciona este servicio de Google y poder reutilizarlo para conectar cualquier cosa a la red sin necesidad de grandes desarrollos ni en local ni en el servidor. El dispositivo que decidí controlar fue una bombilla LED RGB («de colores») que incorpora Bluetooth Low Energy y que por tanto se puede conectar fácilmente a dispositivos Android o iOS.
Tecnologías utilizadas
- GCM y su API Java para Android: no tuve que instalar ningún servidor pues el servicio de google permite crear aplicaciones/proyectos sin necesidad de desplegar nada de código en la nube. El API es muy simple y está basado en peticiones HTTP POST.
- Android: desarrollé una aplicación/servicio Android que instalé en mi tablet (Nexus 7). Recibía notificaciones desde el servidor GCM de Google y se las transmitía a la bombilla.
- Bluetooth Low Energy: la bombilla Yeelight Blue incorpora esta tecnología embebida en su casquillo. El protocolo/servicio Bluetooth de la bombilla está muy bien documentado y fue muy fácil implementarlo en Android (disclaimer: esta parte del proyecto ya la había trabajado en un proyecto anterior)
Como me quedó algo de tiempo, también creé un dispositivo basado en electricImp que permitía controlar remotamente el color de la bombilla a través de la propia nube de electricImp y del servidor de GCM. Esta parte se programó en Squirrel un lenguaje «diferente»
El código está liberado en github para el que quiera seguir desarrollándolo.
Conclusiones
Durante la piweek aprendí mucho sobre las tecnologías que utilicé, disfrute viendo a desarrolladores haciendo lo que les gustaba y aluciné con la calidad de las presentaciones finales (como ejemplo https://www.youtube.com/watch?
Me gusta que haya gente que se sale de lo tradicional y de su zona de confort e intenta avanzar por nuevos caminos. ¡Muchas gracias a Kaleidos por invitarme y permitirme participar en esta experiencia!
Os animo a todos a participar en la próxima edición que se celebrará del 15 al 19 de Diciembre de 2014. A por la séptima piweek!
Nota: La imagen que acompaña este post ha sido tomada del sitio web de la piweek y su autor es Agua de borrajas