heating-monitor/README.md

121 lines
4.1 KiB
Markdown
Raw Normal View History

2024-11-28 22:53:45 +01:00
# Proyecto Heating Monitor
2024-11-28 13:52:58 +01:00
2024-11-28 22:53:45 +01:00
Este proyecto gestiona eventos relacionados con el encendido y apagado de sistemas de calefacción, ofreciendo tres funcionalidades principales:
- Una aplicación web
- Un bot de Telegram
- Un comando para importar datos desde un archivo CSV a la base de datos.
## Configuración
1. Crear archivo .env
Copia el archivo .env.sample a .env y configura las variables de entorno necesarias:
```sh
$ cp .env.sample .env
```
Luego edita el archivo .env con los valores correspondientes:
```ini
# Telegram Bot Configuration
TELEGRAM_TOKEN=xxx:yyy
TELEGRAM_CHATID=123123123
# Web Server Configuration
WEB_PORT=9900
```
2. Base de Datos
El proyecto utiliza una base de datos `SQLite` para almacenar los eventos de calefacción. La configuración de la base de datos se gestiona automáticamente a través del código en el archivo `internal/config/db.go`. Asegúrate de que el archivo de la base de datos se encuentra en la ubicación correcta para que la conexión funcione correctamente.
## Docker
Este proyecto puede ejecutarse fácilmente con Docker. Se han configurado dos entornos: `local` y `production`. En el entorno `local`, se utiliza `Air` para recargar automáticamente el código durante el desarrollo, mientras que en `production` se compila el binario y se ejecuta directamente. Asegúrate de tener Docker y Docker compose instalados en tu sistema.
El `Makefile` ha sido configurado para facilitar la construcción y ejecución de Docker con el argumento `--build-arg`, que pasará la variable de entorno `DOCKER_ENV` para que determine el mismo. Dicha variable se lee del archivo `.env`:
`--build-arg DOCKER_ENV=${DOCKER_ENV}`: Utiliza esta variable para determinar el entorno de ejecución (`local` o `production`), lo que afecta tanto la construcción de los binarios como el comportamiento del contenedor.
```sh
$ make build
$ make rebuild
$ make start
```
2024-11-28 13:52:58 +01:00
## Comandos disponibles
### 1. **Comando Web**
Este comando inicia un servidor web que permite visualizar los eventos de calefacción a través de una interfaz web.
#### Uso:
2024-11-28 22:53:45 +01:00
2024-11-28 13:52:58 +01:00
```bash
2024-11-28 13:57:46 +01:00
$ go run cmd/web/main.go
2024-11-28 13:52:58 +01:00
```
#### Opciones:
2024-11-28 13:57:46 +01:00
- WEB_PORT: Puerto en el que se ejecuta el servidor web. Puedes configurarlo en el archivo `.env`.
2024-11-28 13:52:58 +01:00
### 2. Comando Bot
2024-11-28 22:53:45 +01:00
2024-11-28 13:52:58 +01:00
Este comando inicia un bot de Telegram que permite interactuar con el sistema de calefacción a través de mensajes.
#### Uso:
2024-11-28 22:53:45 +01:00
2024-11-28 13:52:58 +01:00
```sh
2024-11-28 13:57:46 +01:00
$ go run cmd/bot/main.go
2024-11-28 13:52:58 +01:00
```
#### Opciones:
- TELEGRAM_TOKEN: Token de acceso del bot de Telegram.
- TELEGRAM_CHATID: ID del chat de Telegram donde el bot enviará los mensajes.
### 3. Comando Import
Este comando importa los datos de un archivo CSV (con formato específico) a la base de datos SQLite, creando eventos de encendido y apagado en función de la información proporcionada en el archivo.
#### Uso:
2024-11-28 22:53:45 +01:00
2024-11-28 13:52:58 +01:00
```
2024-11-28 13:57:46 +01:00
$ go run cmd/import/main.go -f /ruta/al/archivo.csv
-f, --file: Especifica la ruta del archivo CSV a importar.
--dry-run: Muestra los datos que se importarían sin hacer cambios en la base de datos
(útil para verificar la información antes de insertarla).
2024-11-28 13:52:58 +01:00
```
2024-11-28 22:53:45 +01:00
## Dependencias
2024-11-28 13:52:58 +01:00
Este proyecto utiliza varias dependencias de Go. Asegúrate de tenerlas instaladas y configuradas correctamente:
```sh
2024-11-28 13:57:46 +01:00
$ go mod tidy
2024-11-28 13:52:58 +01:00
```
2024-11-28 22:53:45 +01:00
## Estructura del Proyecto
2024-11-28 13:52:58 +01:00
```sh
.
├── cmd
│ ├── web # Comando para la aplicación web
│ ├── bot # Comando para el bot de Telegram
│ └── import # Comando para importar CSV a la base de datos
├── internal
│ ├── config # Configuración de la base de datos y otros parámetros
│ └── model # Modelos y lógica de negocio
├── .env.sample # Archivo de ejemplo para configuración del entorno
└── README.md # Este archivo
```
2024-11-28 22:53:45 +01:00
## Contribución
2024-11-28 13:52:58 +01:00
Si deseas contribuir a este proyecto, por favor sigue estos pasos:
1. Haz un fork del proyecto.
2. Crea una nueva rama (git checkout -b feature-nueva-caracteristica).
3. Realiza tus cambios y haz commit de ellos (git commit -am 'Añadir nueva característica').
4. Haz push a la rama (git push origin feature-nueva-caracteristica).
5. Crea un pull request describiendo tus cambios.