Óscar M. Lage
286a2eea18
Now we can do it like this: - ON (current date) - ON 7:30 (current day, custom hour) - ON 2024-11-27 7:30 (custom day, custom hour) |
||
---|---|---|
cmd | ||
internal | ||
.gitignore | ||
env.sample | ||
go.mod | ||
go.sum | ||
README.md | ||
TODO.md |
Proyecto HeatingEvent
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 y un comando para importar datos desde un archivo CSV a la base de datos.
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:
$ go run cmd/web/main.go
Opciones:
- WEB_PORT: Puerto en el que se ejecuta el servidor web. Puedes configurarlo en el archivo
.env
.
2. Comando Bot
Este comando inicia un bot de Telegram que permite interactuar con el sistema de calefacción a través de mensajes.
Uso:
$ go run cmd/bot/main.go
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:
$ 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).
Configuración
- Crear archivo .env Copia el archivo .env.sample a .env y configura las variables de entorno necesarias:
$ cp .env.sample .env
Luego edita el archivo .env con los valores correspondientes:
# Telegram Bot Configuration
TELEGRAM_TOKEN=xxx:yyy
TELEGRAM_CHATID=123123123
# Web Server Configuration
WEB_PORT=9900
- 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.
Dependencias
Este proyecto utiliza varias dependencias de Go. Asegúrate de tenerlas instaladas y configuradas correctamente:
$ go mod tidy
Estructura del Proyecto
.
├── 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
Contribución
Si deseas contribuir a este proyecto, por favor sigue estos pasos:
- Haz un fork del proyecto.
- Crea una nueva rama (git checkout -b feature-nueva-caracteristica).
- Realiza tus cambios y haz commit de ellos (git commit -am 'Añadir nueva característica').
- Haz push a la rama (git push origin feature-nueva-caracteristica).
- Crea un pull request describiendo tus cambios.