Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ramide1/sistema-arduino
sistema de control de huellas dactilares y sensores
https://github.com/ramide1/sistema-arduino
arduino arduino-boards esp32 esp8266 nodejs socketio
Last synced: about 9 hours ago
JSON representation
sistema de control de huellas dactilares y sensores
- Host: GitHub
- URL: https://github.com/ramide1/sistema-arduino
- Owner: ramide1
- License: mit
- Created: 2024-10-30T21:44:34.000Z (9 days ago)
- Default Branch: main
- Last Pushed: 2024-11-06T18:29:13.000Z (2 days ago)
- Last Synced: 2024-11-06T19:30:50.763Z (1 day ago)
- Topics: arduino, arduino-boards, esp32, esp8266, nodejs, socketio
- Language: JavaScript
- Homepage: https://github.com/ramide1/sistema-arduino
- Size: 273 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Sistema Arduino
Este proyecto es un sistema de control de huellas dactilares desarrollado con Node.js, Express y Socket.IO para la comunicación en tiempo real entre el servidor y varias placas como ESP8266 y ESP32. El sistema permite la autenticación de usuarios, la gestión de huellas dactilares, y la interacción con sensores ambientales y actuadores.
## Tabla de Contenidos
- [Instalación y Configuración](#instalación-y-configuración)
- [Puesta en Marcha](#puesta-en-marcha)
- [Variables de Entorno](#variables-de-entorno)
- [Eventos de Socket.IO](#eventos-de-socketio)
- [Estructura de Archivos](#estructura-de-archivos)
- [Contribuciones](#contribuciones)
- [Licencia](#licencia)---
## Instalación y Configuración
### Requisitos
- [Docker](https://docs.docker.com/get-docker/)
- [Node.js y npm](https://nodejs.org/) (si deseas ejecutarlo sin Docker)### Clonar el Repositorio
```bash
git clone https://github.com/ramide1/sistema_arduino.git
cd sistema_arduino
```### Crear el Archivo `.env`
Crea un archivo `.env` en la raíz del proyecto y agrega las siguientes variables de entorno para la configuración del sistema:
```plaintext
SESSION_SECRET="prueba"
DB_HOST="localhost"
DB_USER="root"
DB_PASSWORD="root"
DB_NAME="sistema_arduino"
DB_TYPE="mysql"
DB_PORT="3306"
APP_PORT="3000"
ACCESS_USERS="Usuario1, Usuario2"
MASTER_KEYS="prueba1234, prueba123"
WAIT_TIMEOUT="60"
COOKIE_TIMEOUT="60"
```### Docker Compose
El proyecto incluye un archivo `docker-compose.yml` que configura el entorno con dos servicios:
- **web**: El servidor Node.js que ejecuta la API y Socket.IO.
- **db**: Un contenedor de base de datos MariaDB para almacenar la información de huellas dactilares y usuarios.Para ejecutar el proyecto con Docker, utiliza el siguiente comando:
```bash
docker compose up -d
```Esto levantará el servidor en `http://localhost:3000` (o en el puerto especificado en `APP_PORT`).
## Puesta en Marcha
Con Docker:
```bash
docker compose up -d
```Sin Docker:
1. Instala las dependencias:
```bash
npm install
```2. Inicia el servidor:
```bash
npm start
```El servidor estará disponible en el puerto configurado (`3000` por defecto).
## Variables de Entorno
Estas son las variables de entorno necesarias para el funcionamiento del sistema:
- `SESSION_SECRET`: Clave secreta para la sesión.
- `DB_HOST`: Dirección del host de la base de datos.
- `DB_USER`: Usuario de la base de datos.
- `DB_PASSWORD`: Contraseña de la base de datos.
- `DB_NAME`: Nombre de la base de datos.
- `DB_TYPE`: Tipo de base de datos (e.g., `mysql`).
- `DB_PORT`: Puerto de la base de datos.
- `APP_PORT`: Puerto donde se ejecutará la aplicación.
- `ACCESS_USERS`: Lista de usuarios autorizados, separados por coma.
- `MASTER_KEYS`: Lista de claves maestras para los usuarios, separadas por coma.
- `WAIT_TIMEOUT`: Tiempo de espera en segundos antes de cancelar operaciones en espera (por defecto, `60` segundos).
- `COOKIE_TIMEOUT`: Tiempo de expiración de las cookies de sesión en segundos.## Eventos de Socket.IO
A continuación se detallan los eventos de Socket.IO que escucha el servidor:
### Eventos de Conexión
- **connection**: Inicia la conexión con el cliente y verifica si el usuario está autenticado.
- **disconnect**: Indica que un cliente se ha desconectado.### Eventos de Autenticación
- **login**: Recibe `username` y `password` para autenticación. Verifica si el usuario está autorizado.
- **logout**: Cierra la sesión del usuario actual.### Eventos de Gestión de Huellas Dactilares
- **add**: Crea una nueva entrada de huella dactilar en la base de datos. Espera confirmación del dispositivo.
- **delete**: Elimina una huella dactilar de la base de datos según el nombre proporcionado.
- **edit**: Modifica una huella dactilar existente.
- **vaciar**: Vacía la base de datos de todas las huellas dactilares.### Eventos de Confirmación
- **confirmacionHuella**: Confirma la operación de huella dactilar y actualiza el estado en la base de datos.
- **confirmacionVaciar**: Vacía la base de datos y envía un mensaje de confirmación.
- **matchHuella**: Actualiza la actividad de la huella encontrada.### Otros Eventos
- **AmbientalSensores**: Envía los datos de los sensores ambientales al cliente.
- **AmbientalSwitches**: Envía el estado de los interruptores ambientales.
- **checkboxToggle**: Cambia el estado de un checkbox (ejemplo de actuador o control remoto).
- **forzarCerradura**: Fuerza el cierre de la cerradura.## Contribuciones
Si deseas contribuir a este proyecto, sigue estos pasos:
1. Haz un fork del repositorio.
2. Crea una nueva rama (`git checkout -b feature/nueva-funcionalidad`).
3. Realiza tus cambios y haz un commit (`git commit -m 'Agrega nueva funcionalidad'`).
4. Sube tus cambios (`git push origin feature/nueva-funcionalidad`).
5. Abre un pull request.## Licencia
Este proyecto está bajo la Licencia MIT. Para más detalles, consulta el archivo [LICENSE](LICENSE) en el repositorio.
---