Software Recriado atravez do codex
This commit is contained in:
@@ -1,37 +1,97 @@
|
||||
# 🔥 V-Fire Monitor - Notifier Master (v1.0)
|
||||
# V-Fire Monitor
|
||||
|
||||
O **V-Fire Monitor** é uma solução robusta de monitoramento e gestão para centrais de alarme de incêndio da linha **Notifier (NFS-320, NFS-640, NFS-3030)**. Desenvolvido para a **Voltec**, o software atua como um gateway inteligente entre o protocolo Modbus/TCP das placas BACNET-GW-3 e o sistema de monitoramento Zabbix, oferecendo uma interface web intuitiva e um sistema de licenciamento proprietário.
|
||||
Aplicacao Flask para monitoramento de centrais Notifier via Modbus/TCP, com painel web, descoberta de pontos, integracao com Zabbix e licenciamento por hardware.
|
||||
|
||||
---
|
||||
## O que mudou nesta refatoracao
|
||||
|
||||
## 🚀 Funcionalidades Principais
|
||||
- Persistencia JSON com escrita atomica e migracao de configuracao legada.
|
||||
- Login com hash de senha em vez de senha em texto puro no arquivo de configuracao.
|
||||
- Chave secreta do Flask persistida localmente, sem valor fixo no codigo.
|
||||
- Validacao de payloads da API e respostas de erro consistentes.
|
||||
- Logging basico para diagnostico, no lugar de falhas silenciosas.
|
||||
- Polling Modbus e discovery por blocos, reduzindo chamadas individuais.
|
||||
- Frontend com tratamento de erro e textos corrigidos.
|
||||
- Gerador de licenca com argumentos de linha de comando e validacao de data.
|
||||
|
||||
* **Monitoramento Multi-Node:** Gerenciamento de múltiplas centrais simultaneamente via IP/Modbus.
|
||||
* **Auto-Discovery Ultra:** Varredura automática de endereços Modbus (registradores 1-600) para identificação instantânea de dispositivos.
|
||||
* **Integração Nativa Zabbix:** * Envio de **LLD (Low Level Discovery)** para autocadastro de itens.
|
||||
* Monitoramento de **Status de Evento** (Alarme, Normal, Removido).
|
||||
* Monitoramento de **Integridade de Comunicação** (Link de dados do ponto).
|
||||
* **Gestão de Licenciamento:** * Proteção por **Hardware ID (HWID)** vinculada à máquina física.
|
||||
* Controle de expiração por data com contador regressivo no painel.
|
||||
* **Persistência de Dados:** Nomes personalizados de sensores são preservados no banco de dados local (`.json`), mesmo após novos scans.
|
||||
* **Interface Web Profissional:** Painel em *Dark Mode* com indicadores visuais coloridos e status em tempo real.
|
||||
## Estrutura
|
||||
|
||||
---
|
||||
- `monitor.py`: entrypoint simples da aplicacao Flask.
|
||||
- `vfire_monitor/__init__.py`: app factory e bootstrap da aplicacao.
|
||||
- `vfire_monitor/core.py`: regras de negocio, persistencia, licenca e engine de monitoramento.
|
||||
- `vfire_monitor/routes.py`: rotas web e APIs.
|
||||
- `generator.py`: gerador de serial de licenca.
|
||||
- `templates/`: telas do login e dashboard.
|
||||
- `tests/`: suite inicial de testes automatizados.
|
||||
- `config_nodes.json`: configuracao persistida da aplicacao.
|
||||
- `mapa_dispositivos.json`: mapa de dispositivos descobertos.
|
||||
- `license.key`: serial instalado localmente.
|
||||
- `app_secret.key`: segredo de sessao gerado automaticamente na primeira execucao.
|
||||
|
||||
## 📂 Estrutura do Projeto
|
||||
## Requisitos
|
||||
|
||||
* `monitor.py`: Core do sistema. Gerencia o loop de leitura Modbus, o servidor Flask e o envio de métricas via Zabbix Sender.
|
||||
* `generator.py`: Ferramenta administrativa da Voltec para gerar seriais de ativação criptografados.
|
||||
* `templates/`:
|
||||
* `login.html`: Interface de autenticação segura.
|
||||
* `index.html`: Dashboard principal com monitoramento de nós, sensores e licença.
|
||||
* `config_nodes.json`: Arquivo de persistência para IPs das centrais e endereços do servidor Zabbix.
|
||||
* `mapa_dispositivos.json`: Mapeamento detalhado de cada endereço Modbus e seu rótulo personalizado.
|
||||
- Python 3.10+
|
||||
- Conectividade com as centrais via Modbus/TCP
|
||||
- Acesso ao servidor Zabbix, quando a integracao estiver habilitada
|
||||
|
||||
---
|
||||
Instalacao:
|
||||
|
||||
## 🛠️ Instalação e Requisitos
|
||||
|
||||
### Dependências Python
|
||||
```bash
|
||||
pip install flask flask-login pyModbusTCP zabbix-utils cryptography
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## Variaveis de ambiente
|
||||
|
||||
Veja `.env.example`.
|
||||
|
||||
As principais:
|
||||
|
||||
- `VFM_DEFAULT_PASSWORD`: senha inicial do usuario `admin` na primeira carga do sistema.
|
||||
- `VFM_APP_SECRET`: opcional, substitui o segredo salvo em `app_secret.key`.
|
||||
- `VFM_LICENSE_MASTER_KEY`: chave mestre do licenciamento. Em producao, use esta variavel e remova a dependencia da chave legada.
|
||||
- `VFM_ENV`: use `production` para obrigar `VFM_LICENSE_MASTER_KEY` no startup.
|
||||
- `VFM_LOG_LEVEL`: nivel de log, por exemplo `INFO` ou `DEBUG`.
|
||||
- `PORT`: porta HTTP da aplicacao.
|
||||
|
||||
## Execucao
|
||||
|
||||
```bash
|
||||
python monitor.py
|
||||
```
|
||||
|
||||
O sistema sobe em `http://0.0.0.0:8080` por padrao.
|
||||
|
||||
## Geracao de licenca
|
||||
|
||||
Modo interativo:
|
||||
|
||||
```bash
|
||||
python generator.py
|
||||
```
|
||||
|
||||
Modo por argumentos:
|
||||
|
||||
```bash
|
||||
python generator.py --hwid "UUID-DO-CLIENTE" --cliente "Cliente" --expira 2026-12-31
|
||||
```
|
||||
|
||||
## Observacoes operacionais
|
||||
|
||||
- A senha do painel fica armazenada como hash em `config_nodes.json`.
|
||||
- Se existir configuracao antiga com `web_password`, ela e migrada automaticamente para `web_password_hash`.
|
||||
- Em ambiente de desenvolvimento, o sistema ainda aceita a chave de licenca legada embutida para manter compatibilidade.
|
||||
- Em ambiente de producao (`VFM_ENV=production`), `VFM_LICENSE_MASTER_KEY` passa a ser obrigatoria e o sistema falha no startup sem ela.
|
||||
- Bootstrap continua sendo carregado via CDN. Se o ambiente nao tiver acesso externo, copie os assets localmente e ajuste os templates.
|
||||
|
||||
## Testes
|
||||
|
||||
Executar:
|
||||
|
||||
```bash
|
||||
pytest
|
||||
```
|
||||
|
||||
## Proximos passos recomendados
|
||||
|
||||
- Adicionar testes cobrindo polling Modbus e integracao com Zabbix com doubles dedicados.
|
||||
- Separar configuracao e logging em modulos proprios se a aplicacao continuar crescendo.
|
||||
- Trocar Bootstrap via CDN por assets locais se o ambiente alvo nao tiver acesso externo.
|
||||
|
||||
Reference in New Issue
Block a user