Este es el repositorio de la aplicación "Herramienta de Automatización, Monitoreo y Análisis de Componentes y Artefactos" (HAMACA), que tiene como fin el de ser un framework para laboratorios de IoT y entorno de purebas y desarollos en el area de la automatización de procesos. Ademas este repositorio tambien contiene las configuraciones de herramientas integradas a este proyecto.
Este proyecto academico se realiza como parte del desarrollo e investigación realizado dentro del marco del Trabajo Especial de Grado para la Escuela de Computación de la Facultad de Ciencias de la Universidad Central de Venezuela del bachiller Pedro Boll.
Como requisitos previos para correr esta aplicación se necesita tener primero las siguientes aplicaciones instaladar.
Este proyecto usa las imagenes docker de varias integraciones. Se anexa la documentación oficial para realizar la instalación según sea requerido.
Esta webapp esta desarrollada en el lenguaje de programación Python en su version 3.10. Esta es la página oficial del lenguaje y su sección de descargas en caso de que no se posea en el sistema operativo
La aplicación web requiere para su funcionamiento y el almacenamiento de data referente a si misma la base de datos postgresql. En este link oficial con los instaladores y las instrucciones para poder instalarlo en los diversos dispositivos disponibles. Se requiere que una vez instalado el sistema manejador, crear una base de datos y un usuario con el cual se pueda conectar la app a ella al momento de hacer las migraciones de los modelos de django a la base de datos. Estos datos deben guardarse en como variables de entorno para la ejecución en producción.
Mosquitto es la implementación del protocolo MQTT que se utiliza en este trabajo de investigación. Tiene la capacidad de actuar como cliente y broker. Se deja link a la documentación oficial para su instalación. Tambien es posible utilizar cualquier otra implementación del protocolo MQTT sea local o en la nube.
En el caso de querer desplegar esto en el modo de ambiente de producción tambien se requiere tener Nginx, instalado, configurado y activo. Se puede seguir la guía de instalación oficial según la plataforma en la que se está haciendo el despliegue.
Se recomienda el tutorial de DigitalOcean para configurar todo el proceso de Nginx y Django en ambiente de producción.
Se sugiere la utlización de un ambiente virtual de Python 3. Estos se pueden crear de la siguiente forma:
python3 -m venv hamaca-envEl proyecto requiere ciertas variables de entorno para poder funcioinar. Se recomienda el uso de un archivo .env en el cual se inicialicen esas variables. La lista es la siguiente
export DJANGO_SECRET_KEY=
export DJANGO_SETTINGS_MODULE=
export DJANGO_DB_NAME=
export DJANGO_DB_USER=
export DJANGO_DB_PASSWORD=
export DJANGO_DB_HOST=
export DJANGO_DB_PORT=Una vez llenas esas variables de entorno se pueden cargar usando el comando
source .envLo primero es ubicarse en la carpeta docker_stack que contine los archivos de docker, docker compose y los archivos de configuración de las aplicaciones del stack utilizado por el proyecto. A continuación estan la serie de pasos para poder tener el ambiente desplegado.
- Correr el archivo Dockerfile para obtener la imagen de node-red modificada que contine los plugins necesarios para los flujos y la pestaña de actuadores. Para ello haremos uso del comando:
docker build . -t node-red-teg - Se procede a levantar el ambiente de python con sus dependencias. Se hace de la suguiente forma: En Windows, ejecuta:
hamaca-env\Scripts\activateEn Unix o MacOS, ejecuta:
source hamaca-env/bin/activatePara poder instalar las dependencias necesarias y que se encuentran listadas en el archivo requirements.txt hacemos uso del comando:
pip install -r requirements.txt- Con la base de datos Postgresql como servicio activo pasamos a cargar en la base de datos de postgres los modelos requeridos de la apliación. Esto se hace de la suigiente manera:
python manage.py migrate- Luego llenando la data incial requerida por la app, donde fixture son los archivos.json de cada modulo. Se hace con el comando
python manage.py loaddata <directorio del modulo>/<fixture> - Aparte se necesita crear un usuario administrador de la aplicación con el que se iniciara la app por primera vez. Esto se hace usando del comando
django-admin createuser <nombre de usuario>- Si es la primera vez que se levanta el ambiente de la app será necesario ajustar los paneles iniciales de las apliaciones de grafana, la configuración de influxdb como fuente de datos en grafana como se muestra en la figura.
Antes de poder correr la webapp es necesario levantar todos los elementos dockerizados con el fin que se muestren todas las integraciones que usa el proyecto. Esto se hace de la siguiente forma: ubicandonos en la carpeta docker_stack se encuentra el archivo de docker-compose para levantar la base de datos InfluxDB, la aplicación de Grafana y la apliación de Node-Red modificada, a traves del comando:
docker-compose up si deseamos no ver el log de las interfaces podemos agregarle el parametro -d para utilizar la consola en modo detached.
Luego tener levantadas todas las imagenes de las integraciones, con el entorno de python aun activo procedemos a hacer lo siguiente:
python manage.py runserver <host>Donde <host> es la dirección ip a la que escuchará las peticiones el proyecto (si se desea se puede dejar en vacio o usar 0.0.0.0:<puerto> para escuchar peticiones desde cualquier punto). Con ello la aplicación web se levantara junto a todos los modulos desarrollados y estará listo para su utilización.



