Proyecto IOT Fire

Comunidad Mozilla Ecuador.

Producción y Creación:

Lobsang Maldonado

William Méndez

Daniel Mendoza

Coordinación:

Dave Villacreses

Internet of Things or IOT Concepts applied to Mozilla Firefox OS open source Apps and Arduino based technologies.

IOT Fire es un proyecto nuevo, que estamos probando desde hace algún tiempo y que nace motivado por el deseo de ver aplicadas a la vida real la nuevas tecnologías libres.

El proyecto nace y se desarrolla actualmente apoyado por la comunidad de Mozilla Ecuador, y tiene como objetivo crear una plataforma que nos permita automatizar elementos electrónicos que se encuentra en nuestra oficina, vivienda o espacio de actividad diaria, permitiéndonos tener un mayor control de los mismos con un dispositivo móvil como un teléfono celular, un smart TV, una tableta, etc..


arduino.jpg

El proyecto es relativamente nuevo, teniendo un corto tiempo de desarrollo pero ha estado en proceso de conversaciones, planificación, y esquematización ya algunos meses. Su enfoque a largo plazo es bastante amplio, su aplicación podría llegar a entornos más técnicos y tecnológicos como  el control de aplicaciones médicas, agrícolas, hidroponia, entre otros.

Objetivo.- Buscamos beneficiar al usuario final de las nuevas tecnologías y de internet creando un sistema de desarrollo tipo plataforma que impulse y empodere a otros a crear aplicaciones basadas en tecnologías libres que beneficien a la población general. Sin importar el poder adquisitivo de estas personas o su nivel de técnico de conocimientos.


http://img2.wikia.nocookie.net/__cb20130426103739/clubpenguin/images/2/26/Room_Hero_Lab_Marvel_Super_Hero_Takeover_2013.png


Fuente

LA PLATAFORMA.

Como plataforma estamos usando arduino, en este caso usamos un intel galileo para hacer las pruebas iniciales, gracias al uso de diferentes librerías, como ArduinoJson, WebSockets adaptado para Intel Galileo, cuyos enlaces dejaremos en la parte final del documento, la primer prueba que hemos hecho es el hola mundo de arduino, encender un led, para lo cual requerimos comunicarnos con el arduino. 


LO QUE VAMOS LOGRANDO.


Muchas posibilidades estaban disponibles para lograr este objetivo, entre ellos montar un servicio rest completo, lo cual tomaría más tiempo y sería más complejo, William sugirió que todo debía ser hecho usando websockets, de tal manera que el dispositivo se conecte al servidor y este se encuentre leyendo datos recibidos, o enviando datos al puerto, luego con la librería que parsea el JSON procedimos a enviar datos más complejos, para poder identificar más dispositivos y validar diferentes condiciones y estados, con datos más complejos.



2014-09-07-arduino.jpg

Y así logramos usando el sitio web websocket.org hacer las primeras pruebas encendiendo un led. 


20140907_163012_7_bestshot.jpg20140907_163054_3_bestshot.jpg


Esto es solo el principio del proyecto, a medida que vaya pasando el tiempo, va a ir madurando y finalmente tomando más forma.

BACKEND Y LENGUAJES EN USO.

http://i1-news.softpedia-static.com/images/news-700/Meet-the-Firefox-OS-Mascot-a-Fox-That-s-on-Fire.png

En el lado de backend estamos usando el lenguaje Go de Google con una librería de terceros o third party llamada Gorilla Websocket lo cual nos permite tener una vía de transmisión de la información entre el hardware Galileo y Arduino con el lado Front End que en este caso es nuestra aplicacion en Firefox OS.

http://golang.org/doc/gopher/frontpage.png https://avatars0.githubusercontent.com/u/489566?v=2&s=200

La aplicación móvil está compuesta por html5 css3 con el framework de diseño móvil L y Javascript usando lo estándares de websocket para transmisión de datos reempaquetado y abstraído en una librería que facilita la interacción y comunicación del dispositivo con el servidor que procesa las peticiones y los envía al Hardware Galileo el cual se comunica con el Arduino y ejecuta las órdenes.

websocketsGo2.PNG

Recalcamos que el sistema está en una etapa en desarrollo aún no disponemos de una versión estable por lo que estamos propensos a los errores 🙂 pero estamos trabajando en ello.

  • Presentación del Proyecto IOT Fire durante el Campus Party Quito 2014.

Esperamos poder presentar nuestro proyecto e idea en el Campus party de este año aca en Ecuador, a fin de poder aumentar el interés en el proyecto en otros desarrolladores y así poder acelerar el proceso de desarrollo y creativo.

CONTINUARA…

https://developer.mozilla.org/en-US/Firefox_OS

http://arduino.cc/

https://github.com/bblanchon/ArduinoJson

https://github.com/labatrockwell/ArduinoWebsocketClient

https://github.com/krohling/ArduinoWebsocketClient

http://golang.org/

http://www.gorillatoolkit.org/

https://github.com/gorilla/websocket

https://www.mozilla.org/es-ES/firefox/os/

https://developer.mozilla.org/es/docs/WebSockets

http://www.websocket.org/

Integración de Aplicaciones Gtk en Arch Linux KDE 4.14.0

Hola amigos que tal, en este nuevo post voy a tratar de un tema que me tuvo unos días tratando de solucionar, en este mundo del software libre.

A más de un usuario nos topamos cuando decidimos usar el entorno de escritorio KDE y decidimos usar nuestras aplicaciones favoritas escritas para gnome como por ejemplo (Mozilla Firefox, MozillaThunderbird, Inkscape, Gimp, entre otros), y su apariencia es como si estuviésemos en un entorno de escritorio rústico y antiguo debido a que las aplicaciones Gnome no se llevan bien o no logran integrarse con las aplicaciones de KDE hechas en Qt.

Entre las soluciones estaba para Firefox instalar un tema llamado Firefox-Oxygen, pero para mi sorpresa no estaba disponible para la versión 31 de Mozilla Firefox, así que esa solución estaba descartada, a fin de buscar en la wiki de la distribución Arch Linux como puede encontrar en el siguiente link.

Entoncesmanos a la obra 🙂 :

 

  • En primer lugar si no tienes instalado Mozilla Firefox con estos sencillos pasos podrás tenerlo en tu Arch Linux
  • Actualizamos nuestro sistema operativo Arch Linux con el siguiente comando
sudo pacman -Syu
  • Ahora nos disponemos a instalar Mozilla Firefox y el paquete de idioma en mi caso voy a escoger el idioma español España
sudo pacman -S firefox firefox-i18n-es-es
Pero si desean usar otro idioma pueden hacerlo buscando con el comando sudo pacman -Ss firefox. Y desplegará una lista con las posibles coincidencias entre las cuales estaría el paquete de idioma deseado.
Teniendo instalado Mozilla firefox instalaremos unos paquetes para lograr la compatibilidad de las aplicaciones Gtk en KDE, las instrucciones son las siguientes:
  • Instalamos el paquete gtk qt engine por medio del gestor de paquetes yaourt ya que se encuentra en un repositorio comunitario más información aquí .
yaourt -S gtk-qt-engine
  • Seguido por la instalación de los paquetes oxygen gtk en su versión 2 y 3
sudo pacman -S oxygen-gtk2 oxygen-gtk3
  • Como último paso abrimos el programa Gtk Styles and Fonts que instalamos y procedemos a configurarlo; en la sección Gtk Styles, seleccionamos use another style y seleccionamos oxygen-gtk, tal como lo ilustra la imagen.

instantánea14

Una vez hecho esto aplicamos aceptamos y reiniciamos nuestro computador para que se acoplen los estilos, el por que no recomiendo que usen la primera sección que dice Use my KDE style in Gtk applications, debido a que firefox no quería abrir y no se acoplaba de una manera adecuada las demás aplicaciones como inkscape. Espero que esta pequeña guía les sea de utilidad y ayude a solucionar esos pequeños problemas de estética en KDE y tener la total libertad de usar nuestras aplicaciones favoritas sin ningún problema.
 
Adjunto una captura de mi firefox ya integrado con la apariencia de KDE 🙂
 
instantánea15
Cualquier duda, comentario, o sugerencia no dudes en escribirme a mi twitter @willirocker 🙂

Correr Proyecto Hecho en Pyramid con Tornado Web Server

logos

¡Hola amigos!, ya hace unos cuantos días llevo probando el framework de python  que mantiene la gente de Facebook que se llama Tornado que es una potente herramienta para desarrollo y muy flexible que se puede hacer aplicaciones en tiempo real también es un servidor de WebSockets y también actúa como un Web Server que será el motivo principal de esta publicación. Tomando otra potente herramienta hecha en python llamada Pyramid que es un micro framework para desarrollar aplicaciones con la opción de tener un marco de trabajo bastante acoplable como por ejemplo poder cambiar el motor de plantillas, entre otras características también podemos destacar su fácil integración con bases de datos No SQL, y muchas otras herramientas más.

Para empezar vamos a crear nuestro virtualenv si no tienes instalado en Windows la herramienta pip y virtualenv dejo un video para que puedas instalar esas herramientas tan importantes para el desarrollo, claro sin mencionar que necesitas tener instalado el intérprete python previamente para tu plataforma.

 

Después de tener instalado todo en nuestra plataforma, procedemos a crear nuestra máquina virtual la cual le pondré nombre de test.

virtualenv test

Ahora procedemos a iniciar nuestro virtualenv, si estás en plataformas Gnu/Linux, BSD, o usando sistema operativo OSx el comando para iniciar es:

source test/bin/activate

en entornos Windows sería algo parecido:

carpeta>test/Scripts/activate

y nos aparecería algo como esto

(test) carpeta>

ahora dispondremos a instalar pyramid y tornado con el siguiente comando pip install pyramid tornado con esto instalamos los dos frameworks.

(test)proyecto\> pip install pyramid tornado

 

Ahora esperamos a que se descargue  e instale una vez hecho eso nos basaremos en el proyecto que crean en la página de documentación de pyramid http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/project.html

una vez leído sobre como usar pcreate –s starter nombre de mi nuevo proyecto , habilitar el entorno de desarrollo con python setup.py egg_info y luego python setup.py develop

Luego dentro de la carpeta de proyecto podrán encontrar un archivo llamado development.ini y tipiar pserve development.ini, ahora vamos a la creación de un fichero yo le puse nombre server.py ustedes pueden usar el nombre que deseen puede ser wsgi.py, etc.

y escribimos este código si quieren más información referente a WSGI con tornado pueden ver en la documentación oficial de la herramienta : http://www.tornadoweb.org/en/stable/wsgi.html?highlight=wsgi#module-tornado.wsgi

from pyramid.paster import get_app
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from tornado.options import options, define, parse_command_line
from tornado.wsgi import WSGIContainer

define(‘port’, type= int, default=8080)

if __name__ == “__main__”:
    parse_command_line()
    app = get_app(‘development.ini’)
    container = WSGIContainer(app)
    http_server = HTTPServer(container)
    http_server.listen(options.port)
    IOLoop.instance().start()

y guardamos el fichero y ya estamos listos ahora sólo deben escribir dentro de la carpeta del proyecto python nombre_fichero.py o python server.py y listo abren su navegador y en mi caso utilicé el puerto 8080 y aquí dejo unas capturas de mi experimento Risa si tienen dudas, comentarios o sugerencias escríbeme a mi twitter @willirocker o a mi google plus +WilliamMéndez que estaré gustoso en responderlas gracias .

 

image

image

image

Si deseas ver tutoriales como este y en otros ámbitos no dejes de visitar la comunidad de Avanet y seguirnos para que te mantengas informado. Sonrisa

Aquí dejo el link del código fuente del proyecto en Github.

https://github.com/Wilo/Pyramid-Proyect-under-Tornado-WebServer