Sistema avanzado de monitoreo y control para baterías Huawei ESM-48150B1 con protocolo Modbus RTU nativo. Este proyecto implementa un cliente Modbus personalizado que reemplaza PyModbus con una solución optimizada específicamente para baterías Huawei, incluyendo autenticación automática y soporte completo para funciones propietarias.
⚡ AUN EN FASE DE DESARROLLO ALGUNAS FUNCIONES ESTAN INCOMPLETAS.: Version 0.5
⚡ Características Destacadas: Monitoreo simultáneo de múltiples baterías, interfaz web moderna, protcolo Huawei nativo, sistema de diagnósticos avanzado y exportación de datos detallados.
- Cliente Modbus Nativo: Implementación personalizada en
core.pyque reemplaza PyModbus - Protocolo Huawei Optimizado: Soporte completo para FC41 y secuencias de autenticación
- Conexión Unificada: Sistema simplificado de conexión única con gestión automática
- Thread-Safe: Operaciones concurrentes seguras para múltiples dispositivos
- Monitor Simultáneo: Seguimiento en tiempo real de múltiples baterías Huawei
- Sistema de Cache Inteligente: Gestión optimizada de datos por dispositivo con
device_cache.py - Historial Automático: Grabación periódica de datos para análisis temporal
- Datos de Celdas Individuales: Monitoreo detallado de voltajes y temperaturas por celda
- Dashboard Industrial: Vista unificada con gráficos en tiempo real
- Sistema de Pestañas: Organización modular de información (Estado, Celdas, Diagnósticos, Avanzado)
- Diagnósticos Avanzados: Visualización estructurada de todos los registros mapeados
- Exportación de Datos: Múltiples formatos (JSON, CSV, PDF)
- Detección Automática: Identificación inteligente de baterías en la red
- Gestión de Estados: Control avanzado de conexión, autenticación y monitoreo
- Sistema de Alertas: Notificaciones automáticas por condiciones críticas
- API REST Completa: Endpoints para integración con sistemas externos
- Huawei ESM-48150B1 (ID típico: 217)
- Autenticación automática
- Lectura de información extendida (FC41)
- Monitoreo de celdas individuales
- Datos de fabricación y diagnóstico
- Dispositivos Modbus RTU genéricos
- Funciones estándar (FC01-FC06, FC15-FC16)
- Sin autenticación ni funciones propietarias
modbus_app/
├── huawei_client/ # Cliente Modbus nativo
│ ├── core.py # Cliente principal (reemplaza PyModbus)
│ ├── protocol.py # Protocolo Modbus RTU
│ └── authentication.py # Autenticación Huawei
├── battery_monitor.py # Monitor multi-batería con threading
├── device_cache.py # Sistema de cache inteligente
├── operations.py # Mapeo de registros y operaciones
└── logger_config.py # Configuración de logging
static/js/
├── main.js # Inicialización y coordinación
├── modbusApi.js # API unificada del sistema
├── connectionHandler.js # Gestión de conexión única
├── battery-components/ # Componentes modulares de batería
│ ├── tabs/ # Sistema de pestañas
│ └── charts/ # Gráficos y visualizaciones
└── vista-industrial/ # Estilos y componentes industriales
Para obtener información detallada sobre cada aspecto del sistema, consulta las siguientes guías especializadas:
- 🔧 Instalación y Configuración - Puesta en marcha paso a paso
- 🔌 Configuración de Hardware - Adaptadores RS485 y conexiones físicas
▶️ Guía de Uso - Manual completo de la interfaz web
- 🏛️ Arquitectura del Sistema - Cliente nativo vs PyModbus
- 🔋 Monitor de Baterías - Sistema multi-batería y threading
- 🔎 Detección de Dispositivos - Escaneo automático y configuración
- ⚙️ Configuración Avanzada - Timeouts, optimización y parámetros expertos
- 🌐 API y Integración - Documentación completa de endpoints
- 🔋 Protocolo Huawei - Detalles técnicos de autenticación y FC41
- 📖 Registros Modbus Huawei ESM - Especificación completa de registros, umbrales y configuraciones
- 🔐 Protocolo de Autenticación Huawei - Secuencia propietaria de 3 pasos y funciones FC41
- 🔐 Protocolo del giroscopio - Secuencia de desactivacion de giroscopio con Software Liverado
- 🔍 Diagnósticos Avanzados - Análisis de registros y datos de celdas
- ❓ Solución de Problemas - Troubleshooting y errores comunes
- 🤝 Guía de Contribución - Cómo colaborar con el proyecto
- Python 3.10+ (recomendado 3.12+)
- Puerto COM disponible (USB-RS485 o virtual)
- 4GB RAM mínimo (8GB recomendado)
- Conexión a Internet (para dependencias)
# Clonar repositorio
git clone https://github.com/williamsioSapo/Huawei_Battery_monitor
cd Huawei_Battery_monitor
# Crear entorno virtual
python -m venv env
# Activar entorno (Windows)
.\env\Scripts\activate
# Activar entorno (Linux/macOS)
source env/bin/activate
# Instalar dependencias
pip install -r requirements.txt
# Ejecutar aplicación
python app.py- URL Local:
http://127.0.0.1:5000 - Red Local:
http://[IP-del-servidor]:5000
Al ejecutar por primera vez, el sistema detectará automáticamente:
- Puertos COM disponibles
- Parámetros óptimos de comunicación
- Dispositivos conectados en la red
{
"port": "COM8", # ver en panel de control
"baudrate": 9600, # Estándar para Huawei
"parity": "N", # Sin paridad
"stopbits": 1, # 1 bit de parada
"bytesize": 8, # 8 bits de datos
"timeout": 1, # Timeout en segundos
"slave_id": 217 # ID típico de Huawei ESM
}- Configurar Puerto: Seleccionar puerto COM correcto
- Conectar Sistema: Botón "Conectar al Sistema"
- Inicializar Baterías: Proceso automático de detección y autenticación
- Abrir Dashboard: Acceso al panel de monitoreo principal
- Dashboard Principal: Vista general de todas las baterías
- Datos por Celda: Voltajes y temperaturas individuales
- Gráficos Históricos: Tendencias de voltaje, corriente y SOC
- Alertas Automáticas: Notificaciones por condiciones anómalas
- Lectura de Registros: Acceso directo a registros Modbus
- Escritura de Parámetros: Modificación controlada de configuraciones
- Diagnósticos Completos: Análisis exhaustivo del estado del sistema
- Exportación de Datos: Reportes en múltiples formatos
- Eliminación de PyModbus: Implementación nativa más eficiente
- Timeouts Adaptativos: Configuración automática según el tipo de operación
- Reconexión Automática: Recuperación ante pérdida de comunicación
- Thread Safety: Operaciones concurrentes seguras
- Polling Inteligente: Frecuencia adaptativa según la actividad
- Cache Multi-Nivel: Optimización de acceso a datos frecuentes
- Historial Persistente: Almacenamiento automático para análisis
- Detección de Anomalías: Algoritmos de identificación de patrones inusuales
// Ejemplos de uso de la API
conectarSistema(parametros) // Conexión única
inicializarBaterias() // Autenticación automática
getAvailableBatteries() // Lista de baterías detectadas
startMultiBatteryMonitoring() // Monitoreo simultáneo
getAllMappedRegisters(batteryId) // Datos estructurados completosModbusReader_SR/
├── app.py # Aplicación Flask principal
├── config.json # Configuración centralizada
├── requirements.txt # Dependencias Python
├── modbus_app/ # Módulo principal de la aplicación
│ ├── huawei_client/ # Cliente Modbus nativo
│ ├── battery_monitor.py # Monitor multi-batería
│ ├── device_cache.py # Sistema de cache
│ ├── operations.py # Mapeo de registros
│ └── logger_config.py # Configuración de logs
├── static/ # Recursos web estáticos
│ ├── css/ # Estilos (incluyendo vista industrial)
│ ├── js/ # JavaScript modular
│ └── images/ # Recursos gráficos
├── templates/ # Plantillas HTML
│ └── index.html # Interfaz principal
└── docs/ # Documentación detallada
├── INSTALACION.md # Guía de instalación
├── CONFIGURACION_HARDWARE.md
├── USO.md # Manual de usuario
├── API_REFERENCIA.md # Documentación de la API
├── REGISTROS_MODBUS.md # Especificación completa de registros
└── PROTOCOLO_AUTENTICACION.md # Protocolo propietario Huawei
- Monitor de Conexión: Estado en tiempo real de la comunicación
- Analizador de Registros: Visualización estructurada de datos
- Log del Sistema: Registro detallado de operaciones
- Test de Comunicación: Verificación automática de conectividad
| Problema | Causa Probable | Solución |
|---|---|---|
| No detecta puerto COM | Driver USB-RS485 | Verificar en Administrador de Dispositivos |
| Timeout en comunicación | Parámetros serie incorrectos | Usar 9600-8N1 para Huawei |
| Fallo de autenticación | ID de esclavo incorrecto | Verificar ID 217 para ESM-48150B1 |
| Datos incompletos de celdas | Batería en modo ahorro | Despertar batería con operación inicial |
- ✨ Cliente Modbus nativo - Elimina dependencia de PyModbus
- 🔋 Monitoreo multi-batería - Soporte simultáneo para múltiples dispositivos
- 🎛️ Interfaz unificada - Sistema de conexión simplificado
- 📊 Diagnósticos avanzados - Visualización estructurada completa
- 💾 Cache inteligente - Gestión optimizada de datos
- 🔄 Threading seguro - Operaciones concurrentes estables
- 📱 App móvil - Interface nativa para dispositivos móviles
- ☁️ Integración cloud - Sincronización con servicios externos
- 🤖 IA predictiva - Algoritmos de predicción de fallos
- 📈 Analytics avanzado - Métricas de rendimiento y eficiencia
- 📖 Documentación: Carpeta
docs/con guías detalladas - 🐛 Issues: GitHub Issues
- 💬 Discusiones: GitHub Discussions
- 📧 Contacto: [Información de contacto del proyecto]
Las contribuciones son bienvenidas! Ver CONTRIBUCIONES.md para:
- 🔧 Nuevas características
- 🐛 Corrección de errores
- 📚 Mejoras en documentación
- 🧪 Pruebas con nuevos dispositivos
Este proyecto está bajo la Licencia BSD. Consulta el archivo LICENSE para más detalles.
- Comunidad PyModbus - Base para el desarrollo inicial
- Ingeniería Inversa - Análisis del protocolo Huawei propietario
- Contribuidores - Pruebas, feedback y mejoras
- Huawei - Fabricante del hardware ESM-48150B1
⚠️ Descargo de Responsabilidad: Este software es independiente y no está afiliado oficialmente con Huawei. Úsalo bajo tu propia responsabilidad en sistemas de producción.
Última actualización: Diciembre 2024 | Versión: 2.0-beta


