Lo bueno, lo malo y lo que hay que mejorar de Vigilante Ciudadano AGS [Actualización]

Screenshot_2015-07-30-17-13-41Una de las filosofías de The Inventor’s House es promover el uso de las tecnologías de y más un cuando estas son locales ya sean de nuestro estado y/o ciudad, nos entusiasman mucho iniciativas como las que ha tomado hace días el gobierno municipal de Aguascalientes (@MunicipioAgs) que liberó la aplicación en Android Vigilante Ciudadano AGS una aplicación con la que el gobierno trata de dirigir de una forma alternativa las peticiones ciudadanas; El concepto no es nada nuevo lo sabemos, pero si es nuevo que autoridades locales apuesten por estas alternativas 🙂

Nosotros descargamos la aplicación y la revisamos y decidimos compartirles lo que creemos que es: Lo bueno, lo malo y lo que hay que mejorar en la aplicación desde nuestro punto de vista y el poco tiempo que la hemos usado.

NOTA: La versión que tenemos instalada es la 1.0

Screenshot_2015-07-29-09-41-09

Lo bueno

  • No “Crashea” (No se cierra o se interrumpe su ejecución de manera inesperada)
    • En ningún momento durante el uso que le dimos la aplicación se cerro o pauso, eso es un buen punto a su favor.
    • Screenshot_2015-07-29-09-41-55
  • Puedes ubicar la petición en un un mapa
    • Poder dar la ubicación de la petición en base al mapa de google maps es muy cómodo para el usuario sobretodo a la hora de marcar lugares sin numero o nombre de calle visible.Screenshot_2015-07-29-09-40-27
  • Puedes subir foto en la petición
    • Adjuntar una foto para dar mayores detalles de la petición también es un punto extra para que las autoridades se den cuenta de la magnitud del problema.

 

Lo malo

 

  • Validación de los datos
    • Los campos de información parece no están correctamente validados pude ingresar como mi apellido una serie de números, espero no acepte cosas como SQL injection o cosas similares que pueden poner en riego los datos personales de las personas registradas.
  • Costo de la aplicación
    • No se sabe cual fue el precio real de la aplicación y según una nota de La Jornada Aguascalientes el gobierno no se pone de acuerdo en si se desarrollo internamente con un precio aproximado de 20 mil pesos o si había erogado 464 mil pesos para su creación.

Para mejorar

  • Peticiones anónimas
    • No se pueden realizar peticiones anónimas; para poder acceder al sistema es obligatorio registrar un usuario, seguramente habrá peticiones que la gente requiere sean anónimas para evitar conflicto entre vecinos o conflictos.Screenshot_2015-07-29-09-41-21 habría que idear el mecanismo para que puedan presentarse este tipo de solicitudes.
  • Estado de peticiones recién enviadas
    • Enviamos una petición y nos confirmo de enviada pero nunca apareció en el historial que teníamos pendiente o en tramite, enviamos una segunda y paso lo mismo, en la playstore dice que las peticiones se canalizan en un plazo  de 24 a 72 hrs. pero debería aparecer en la aplicación las peticiones que se hayan enviado correctamente (al menos con el estatus de “Recibidas/en tramite)
      Screenshot_2015-07-29-09-41-01
  • Notificaciones de cambios en peticiones
    • Esto no sabemos si esta disponible por lo mismo del punto anterior, esperamos sea así para poder saber si se le esta dando seguimiento a nuestra petición.
    • o al menos para ir cancelando o cerrando las peticiones que suelen “arreglarse solas” ya por intervención de la ciudadanía, grupos no gubernamentales o calendarización propia del municipio.
  • Mapa de peticiones realizadas en toda la ciudad
    • Seria genial tener una mejora que  permita ver en el mapa todas las peticiones realizadas para que el municipio evite tener repeticiones (o muchas repeticiones si nos las pudiese evitar), igual serviría para poder apoyar otras peticiones y el municipio se enfoque en las mas solicitadas o establecer un sistema de prioridades.
  • Poder subir mas de una imagen por cada petición
    • Algo de lo que nos dimos cuenta es que solo se puede enviar una foto por petición, definitivamente hay casos en los que se pudiera llegar a necesitar subir algunas fotos extras, para esto seria necesario también trabajar en la parte de compresión de las fotos para no gastar tantos datos del usuario
  • Especificar que tipo de peticiones se pueden realizar
    • En ningún lugar pudimos encontrar una sección de ayuda donde nos especificara que tipo de peticiones se pueden realizar como uso de suelo, agua, baches, delincuencia, desastres, conflicto entre vecinos, problemas viales, apoyos, becas o algún otro tipo de solicitudes que se pueden realizar a municipio o que la gente piensa que puede realizar municipio mediante la aplicación.
      (recordemos que los que menos saben de trámites son los ciudadanos 😛 )
  • Crear una API publica
    • Y en un paso muy innovador y que hablaría de una verdedara apertura mental en cuestiones de tecnología aplicada al ciudadano; Seria genial que el municipio pudiera proporcionar más adelante una API para que grupos de ciudadanos pudiesen consultar los datos recabados por la aplicación para poder usarlos de forma abierta en iniciativas como las “Hack Nights de Aguascalientes” y generar estadísticas, estudios, mejoras, nuevas aplicaciones etc. Que permitan verdaderamente a la ciudadanía sacar provecho de la información pública generada por iniciativas como la que el Municipio de Aguascalientes se atreve hoy a poner en práctica (#UstedesMuyBienAhíMunicipio)

Actualizaciones:

19 de Agosto 2015: nos llego la notificación de una actualización en la playstore, actualizamos y ya hay en el historial una petición pendiente, vamos a ver que tal se le da seguimiento

ciudadano_vigilante

 

7 de Septiembre 2015: Hemos podido validar que efectivamente la aplicación envía todos tus datos en texto plano y no cuenta con un cifrado ni siquiera ssl, asi que no la usen en un lugar publico

municipioags

Un plus que no podemos dejar de mencionar (y que resalta también en su nota La Jornada Aguascalientes) es que la aplicación se puede aprovechar para informar a la ciudadanía sobre cierre de calles o eventos que organiza el municipio pues ya está conformando un grupo de usuarios con ciertas habilidades digitales en el tema, seria un tanto inútil crear otra app solo para este tipo de noticias y llenar los teléfonos de los usuarios de apps con funciones especificas cuando se pueden crear una plataforma de soluciones y tener todo agrupado en una sola aplicación.

Mi amor campusero: Review Intel Galileo #CPMX5

IntelGalileo

Durante mi estancia en Campus Party México 5 (#CPMX5) tuve la oportunidad de participar en el “Reto Intel” el cual consistía en hacer un proyecto con una Intel Galileo que los organizadores prestaban a los participantes.

intelgalielo5En 3 días en un evento donde hay mucho que ver y aprender mi intención fue emular una “cafetera inteligente” (el pretexto para que me pudieran prestar una de estas tarjetas) que se comunica con la plataforma carriots por medio de python y con mi smartphone con instapush por medio de nodejs.

Funcionamiento:

La cafetera detecta cuando despiertas por medio de un sensor de distancia, empieza a calentar el café, muestra la temperatura actual en linea y cuando el café esta listo te envía una notificación a tu smartphone “Listo Rico Cafe”.

Intel Galileo

IntelGalileoLogicSchematics

La Intel Galileo es una tarjeta que cuenta con las siguientes características generales:

  • Procesador Intel Quark SoC X1000 400MHz 32-bit, a lo que nos contaron los de intel es como un pentium 4 mejorado
  • DDR3 256 MB
  • Puerto Ethernet 10/100
  • Puerto Serial: Es el puerto de 3.5 mm, NO es una entrada o salida de audio
  • Pines GPIO configuración muy similar a Arduino UNO
  • Puerto USB Host
  • Puerto USB Cliente
  • Puerto de alimentación principal
  • Puerto JTAG
  • RTC: Reloj de tiempo Real
  • Full PCI Express Mini: Aquí puedes insertar cualquier dispositivo por ejemplo un bluetooth o wifi
  • Soporta I2C, SPI, UART, PWM
  • Lectora de Micro SD

Si deseas saber mas a detalle todas la características visita: Intel

IntelGalileo_JumpersSetup

Lo primero: Precauciones o cuidados

  1. El intel galileo no se alimenta via USB, solo con alimentación externa de un cargador.
  2. Siempre, siempre debes primero conectar la alimentación externa y después el puerto USB para programación, si no haces esto puedes dañar el Intel Galileo.
  3. El procesador se calienta demasiado, al parecer puede llegar a consumir hasta 3A la tarjeta, según nos comentaron ingenieros del intel esto va a mejorar en la segunda versión que se espera en agosto.
  4. Elegir en que voltaje vas a trabajar 3.3 o 5v, como pudiste darte cuenta en la imagen de arriba hay unos jumpers que te permiten elegir, ten cuidado en no elegir mal.
  5.  Actualizar a la ultima versión del firmware, esto me provoco mucha perdida de tiempo con mi tarjeta ya que no me podía conectar via SSH, actualice y solucionado.

actualizacionintelgalileo1

actualizacionintelgalileo2

actualizacionintelgalileo3

 

Programando en Arduino

El intel galileo es en realidad una mini computadora muy similar a la raspberry pi que ejecuta un sistema operativo linux en este caso debian, la diferencia radica en que Galileo se podria decir “virtualiza un arduino UNO” y de esta manera se puede programar con el IDE de Arduino especial para Galileo.

Si ya programas arduino casi todo es igual esta el analogRead, digitalWrite, analogWrite, ademas de las librerías y shields compatibles deberían funcionar con sus respectivas excepciones claro, recordemos que aun esta en su fase de introducción.

¿Pero que pasa con el sistema linux? Hay una nueva instrucción que te permite ejecutar instrucciones desde el IDE de arduino en la terminal de debian y es system(), por ejemplo para asignar IP por DHCP

system("ifconfig eth0 > /dev/ttyGS0");

Para ejecutar un script de python

system("python /media/realroot/notificacion.py");

 

La parte de Debian

La tarjeta Galileo por default trae una pequeña versión de Debian de 8MB, pero esta versión solo sirve para lo básico (usarlo como un arduino UNO xD), si queremos tener python, nodejs, base de datos y mas, debemos apagar nuestra tarjeta e insertar un SD con la imagen de Debian para Intel Galileo, encendemos y debe empezar a parpadear el led aun lado del lector de SD.

Después con KiTTY simplemente me conecte via SSH por el puerto 23, el usuario por default es “root” y la contraseña en blanco solo dar enter

intelGalileo2

Para enviar archivos entre mi PC y la Galileo use WinSCP edite los scripts de python y nodejs y luego los envie a la galileo

intelgalileo1

En esta parte para todos los linuxeros la terminal no sera un problema, es como cualquier debian pueden instalar lo que gusten y actualizar lo que quieran, en mi caso yo tuve que actualizar el nodejs.

Retos y Dificultades

En primera quiero aclarar lo presentado fue hecho con el material que tuve a mi alcance en Campus Party y poco presupuesto, ademas que no se mucho de python y javascript, así que debí aprender lo básico mientras aprendía como funcionaba la galileo

Lo que yo quería hacer era algo muy simple detectar por medio del sensor ultrasonico la presencia de alguien, después medir la temperatura enviarla a carriots y al final enviar una notificación a mi android o iphone

Lo primero contra lo que me enfrente es que actualmente la instrucción PulseIn() no esta implementada en galileo y la mayoría de ejemplos para saber la distancia del ultrasónico usaban esta instrucción, en el foro de makers intel pude encontrar un código solución no muy preciso pero servía para lo que quería y funciono.

Listo ahora podía saber cuando la persona se ha levantado de la cama, ahora debo activar la cafetera para que empiece a calentar y estar midiendo la temperatura para enviarla a carriots, un led en el pin 13 indica que la cafetera esta calentado y un puerto analógico mide la temperatura y cada lectura debe enviarla, en este caso elegí python, pude encontrar un ejemplo para raspberry pi que con algunas modificaciones funciona perfecto en galileo, excelente en las pruebas desde debian, pero ¿cómo le envió a python la lectura desde arduino?

char buffer[35];
temperatura=analogRead(0); //Lectura actual de la temperatura
 Serial.println(temperatura); //Monitor serial depuracion
 String letras2=String(temperatura); //Convertimos a String
 String letras1="python /media/realroot/cafe.py "; //Declaramos como string
 String letras3=letras1+letras2; //Concatenamos strings
 letras3.toCharArray(buffer,35); //Convertimos a arreglo de caracteres
 system(buffer); //Enviamos el arreglo de caracteres

Esto lo descubrí después de una serie de intentos erroneos de meter un string en system(), después los señores de intel me ayudaron para saber que en realidad era array de caracteres lo que requería, no se desvelen tanto en campus party xD.

Listo ahora ya estamos recibiendo los datos en carriots

carriots_intelgalileo

En esa búsqueda de código me encontré con instapush un servicio que te permite enviar notificaciones a tu android o iphone en su aplicación movil, por medio de su API con nodejs, PHP, Ruby o lo que quieras. Yo elegí nodejs instalamos

  $ npm install instapush

En mi caso marco un error que soluciono actualizando la version de nodejs, con eso ya solo tuve que modificar el código de ejemplo

var instapush =require("instapush");
instapush.settings({
    id:'52eed96ea2a8f0f',
    secret:'9a96794fec44481de5',});

instapush.notify({"event":"Cafe","trackers":{"term":"Rico cafe listo"}},function(err, response){
    console.log(response);});

y mandarlo llamar desde arduino

system("node /media/realroot/notificacion.js");

Como indica la guía básica, configure la app en mi panel de control, descargue la aplicación para mi smartphone y listo tenia push notificaciones que me avisan cuando mi café esta listo.

Instapush_intelgalileo

 

Conclusiones:

Al parecer el costo aquí en México según rumores de los del Intel sera de $500 aproximadamente, pero yo la he visto arriba de $1000, en lo personal por ese costo prefiero una BeagleBone.

Tuve algunos problemas con el driver, en algunas ocasiones no me dejaba cargar el sketch “not target device” tuve que desinstalar el driver, reinstala y reiniciar la maquina para que volviera a funcionar.

Lamentablemente al final del concurso no nos pudimos quedar con las tarjetas prestadas, nos prometieron enviarnos unas de regalo, espero así sea y poder seguir haciendo experimentos

En verdad visiten la pagina Intel Maker y su foro si tienen problemas con la intel Galileo

Si quieren ver mas o menos lo que hice pueden verlo en mi Repositorio en github, pronto subiere un tutorial mas completo de como usar carriots con un Arduino UNO y un ethernet shield por si no cuentan con una Intel Galileo.

Espero les haya gustado este post, espero sus comentarios.

Saludos inventores