¡Ha llegado Telegram!

En los últimos commits (1 y 2) he añadido gran parte del sistema de comunicación de CarontePass con el Telegram.

Creo que es una parte muy interesante del proyecto al ser una forma directa (y personalizable) de comunicación con los usuarios, y de los usuarios con el sistema.

La gran evolución de Telegram en apenas dos años

En el primer commit modifiqué la base de datos añadiendo una tabla relacionada con el usuario y con el campo Chatid que es el que utiliza Telegram para identificar a los usuarios. Mejorado el Admin para ver la tabla de Telegram y creada la clase “message_detect_tag” en el models para detectar si el usuario entra o sale  del espacio y así enviarle un mensaje personalizado de bienvenida o despedida. Este sistema de mensajes es independiente de los bots de Telegram para que en caso de caída siga enviando estos mensajes “simples”. También avisa a un grupo de Telegram cuando entra el primer usuario (Sitio Abierto) o sale el último (Sitio Cerrado).

my_models_with_tg

En el segundo commit añado la parte del Bot de Telegram, programado en python con la ayuda del TelegramBotApi.

Este Bot incluye las funciones de:

  • Saber si el espacio está abierto o cerrado mediante el comando /status
  • Devolver una lista de usuarios que están dentro del espacio en ese momento con el comando /users_in
  • (Próximamente) Opción de abrir las puertas mediante el comando /open para las personas autorizadas a ello.

¿Se te ocurre una nueva opción?
TelegramBot

 

 

Anuncios

¡Funciona! Esp8266 wifi con lector NFC

Semana intensa.

He estado jugando con el ESP8266 (chip wifi con core de Arduino) para el control de acceso.

Tras muchas pequeñas “peleas” por falta de documentación al respecto he conseguido hacer que funcione la placa Wemos D1 (esp8266) con el lector RFID RC522 y el relé.

Esto es para mi un gran logro ya que consigo abaratar el cliente a una quinta parte del coste actual. Ahora mismo la solución por puerta (cliente) con Rasperry Pi B+ es de 52€, mientras que con este nuevo paso, con Esp8266 se queda en MENOS de 10€.

Rasperry Pi Client ESP8266 Client
Component Price (€) Component Price (€)
Raspberry Pi B+ 29,75 € ESP8266 WemosD1 6,00 €
Realy Module 0,55 € Realy Module 0,55 €
RC522 NFC 2,00 € RC522 NFC 2,00 €
MicroSD 6,00 €
Wifi USB 8,35 €
Alimentación MicroUSB 4,95 €
TOTAL 51,60€ TOTAL 8,55€

Ya está el commit con el código que lleva el Esp8266 en Github.
También seguiré desarrolando la parte de la Raspberry para que así cualqueira pueda elegir que sistema se adapta mejor a él. Se pueden combinar también jeje

Estoy estudiando modificar la obtención de los datos por parte del RC522 para que en vez de trabajar en decimal hacerlo en hexadecimal a propuesta mejora de un amigo (Gracias Alberto). Tengo que mirarlo bien porque ha sido complejo trabajar con una librería del lector en Python para la Raspberry y la librería en Arduino para el ESP8266 y que las dos me dieran los mismos datos.

esp+api-response

Montaje actual de pruebas:

raspberry1+rc522+relay raspberry1+rc522+relay+dooresp8266+rc522+relay

Gracias al Makerspace Hangar Kreitek y sus integrantes por dejarme el espacio para hacer las pruebas.

Raspberry Pi 2 y comienzo de pruebas

RPi2

Finalmente he conseguido comprar una Raspberry Pi 2

(41€ en Tenerife + 10€ de MicroSD + Wifi 8€ +Cargador Microusb)

Me he decantado por ésta opción ya que la RPi (Raspberry Pi) 1 le iba un poco justo el servidor de Django y prefiero que el servidor disponga de más “soltura” y que así se pueda aumentar con facilidad el número de puertas (clientes) que dependen de él.

He empezado a hacer las prueba de comunicación entre el Servidor (RPi2) y el Cliente (RPi1 con lectror NFC RC522) satisfactoriamente.

Posteriormente lo dejaré de forma provisional en el Hangar Kreitek (Hakcerspace donde lo pruebo) para ver su funcionamiento diario.

Captura-prueba1

¡Hazlo Bonito!

Captura de pantalla 2016-02-15 14.02.56 Captura de pantalla 2016-02-15 14.02.46

Pues si… Estos días de vacaciones de Carnavales en Canarias no solo han dado para fiesta, sino también para ponerme al día a la hora de hacer el Front-end. He utilizado el tema AdminLTE como base y después le he aplicado las funcionalidades de las plantillas de Django. Esto último me ha llevado tiempo ya que no encontraba mucha información al respecto de donde poner las carpetas, cual sería la mejor forma de hacer, como cargar contenido estático, etc… También ha contribuido en tardar más tiempo con esto de lo que me esperaba al tener la nueva versión de Django 1.9 y ver como la mayoría de cosas funcionaban con las versiones anteriores.

Actualmente funciona correctamente el Login de usuarios y el Logout. Al entrar un usaurio o salir el estado del sitio cambia según proceda, si se acaba de abrir o cerar junto con un contador de personas en el interior. Me falta el tema de las gráficas de las que ya estoy mirando el django-graphos.

Cambio de estructura en Base de Datos

En este commit he modificado la estructura de la base de datos en lo referente a la gestión de usuarios.

Como se puede apreciar en las fotos la gestión correcta de los usuarios es algo fundamental y entorno a lo que gira todo lo demás.
El cambio es debido que Django da una serie de facilidades si se usa este modelo (como los inicios de sesión, etc…) y que espero utilizar próximamente.

Aprovecho para probar el pygraphviz y mostrar los resultados antes y después de este cambio:

ANTES:

mis_modelos

DESPUÉS:

mis_modelos2

Actualización de Django a 1.9.2

Seguimos con nuevas pruebas a la parte web, en concreto en actualizar la versión con que se empezó, la 1.8.6, a la última versión actual, la 1.9.2.
El proceso de actualización no ha requerido de grandes esfuerzos siguiente todo la planteado hasta ahora con normalidad.
También en este commit he modificado el modelo de los dispositivos para guardar los nuevos que detecte el lector NFC y así poder asignar los tag id más adelante a su usuario.