# Integração com a CELESC (contas e consumo de energia)

Este guia liga o painel de **Energia** do Nexus à sua conta da **Agência Virtual
da CELESC** (conecte.celesc.com.br). Depois de configurar, o sistema mostra
sozinho: contas **pagas / em aberto / vencidas**, o **consumo do mês**, e avisa
quando uma **conta está para vencer**.

> Em miúdos: é a **sua conta** da CELESC lendo os **seus dados**. A CELESC não
> tem uma "API oficial", então o sistema entra na sua conta do mesmo jeito que
> você entra pelo site — só que sozinho, para buscar as contas. **Ele nunca paga
> nada nem altera nada** — só lê.

---

## Antes de começar

Você vai precisar de:
- O **e-mail e a senha** que você usa para entrar em conecte.celesc.com.br.
- Acesso ao servidor onde o Nexus roda (a pasta `C:\wamp64\www`).

---

## Passo 1 — Coloque seu login no arquivo `.env`

1. No servidor, abra a pasta do Nexus: **`C:\wamp64\www`**.
2. Abra o arquivo chamado **`.env`** (na pasta `api`) com o Bloco de Notas.
3. Procure a parte que fala **CELESC** (ou cole estas linhas no fim do arquivo) e
   preencha com o seu e-mail e senha:

   ```
   CELESC_ENABLED=true
   CELESC_USER=seuemail@exemplo.com
   CELESC_PASS=sua_senha_da_agencia_virtual
   CELESC_INSTALLATIONS=
   ```

4. Salve o arquivo.

> Deixe `CELESC_INSTALLATIONS=` **vazio** por enquanto — depois você escolhe na
> tela quais unidades quer ver.

✅ **Deu certo se:** o arquivo salvou sem erro e a linha `CELESC_ENABLED=true` está lá.

---

## Passo 2 — Teste a conexão (sem ligar nada ainda)

1. Abra o **Menu Iniciar** → digite **cmd** → abra o **Prompt de Comando**.
2. Cole este comando e aperte Enter:

   ```
   C:\wamp64\bin\php\php8.3.28\php.exe C:\wamp64\www\api\scripts\celesc_test.php
   ```

3. Espere alguns segundos.

✅ **Deu certo se:** aparecer `[ OK ] Login`, a lista das suas **unidades
consumidoras** e as **últimas contas** (período, vencimento, valor, consumo).

❌ Se aparecer `[FALHA] Login`, confira o e-mail e a senha (é o mesmo que você usa
no site da CELESC).

---

## Passo 3 — Ligue o módulo no sistema

1. Entre no Nexus como administrador.
2. Vá em **Configurações → Módulos**.
3. Ligue a chave **"Energia CELESC (contas/consumo)"**.

✅ **Deu certo se:** a chave ficou ligada (verde).

---

## Passo 4 — Escolha quais unidades quer acompanhar

Como você tem **várias unidades consumidoras (UCs)**, dá para escolher só as que
interessam:

1. No menu, abra **Início → Energia**.
2. Clique em **Unidades** (canto superior).
3. **Marque** as unidades que quer ver no painel (e no Mural) e clique **Salvar**.

> Se deixar **todas desmarcadas**, o sistema mostra **todas**.

✅ **Deu certo se:** ao voltar para **Energia**, você vê as contas das unidades
que escolheu.

---

## Passo 5 — Deixe atualizar sozinho

O sistema busca as contas **duas vezes por dia — às 08:00 e às 20:00** — por um
"trabalhador de segundo plano" chamado **celesc_sync**.

> **Por que só 2x por dia?** A CELESC emite **uma fatura por mês**, por unidade.
> Antes, o sistema perguntava de 30 em 30 minutos: isso dava **48 buscas por dia,
> cada uma percorrendo suas 15 unidades — cerca de 720 consultas diárias** ao site
> deles, para trazer um número que muda uma vez a cada 30 dias. Não fazia sentido,
> e sobrecarregava o serviço da distribuidora à toa. A **usina solar** é diferente
> (a geração muda o tempo todo) e continua sendo lida a cada 30 minutos.

Se o Nexus já foi instalado com o `install_workers.bat`, as tarefas já estão
agendadas. Se você adicionou a CELESC depois:

1. Menu Iniciar → digite **cmd** → clique com o botão direito → **Executar como
   administrador**.
2. Cole e Enter:

   ```
   C:\wamp64\www\api\scripts\install_workers.bat
   ```

✅ **Deu certo se:** na lista que aparece no fim, aparecem `[PRESENTE]`:
**celesc_sync** (08:00), **celesc_sync_noite** (20:00) e **energy_sync** (a usina).

**Quer buscar agora, sem esperar as 08:00?** Abra o cmd e rode:

```
C:\wamp64\www\api\scripts\celesc_sync.bat --force
```

O `--force` existe porque, normalmente, o sistema se recusa a consultar a CELESC
mais de uma vez a cada 6 horas — uma trava para não martelar o serviço deles.

---

## Passo 6 — Prepare o banco para guardar o painel

Este passo é **obrigatório** se o seu Nexus foi instalado antes de julho/2026.

O sistema guarda um "resumo pronto" das contas no banco, para a tela abrir rápido
sem ficar consultando a CELESC toda hora. Esse resumo precisa de espaço, e nas
instalações antigas o campo era pequeno demais. Quando não cabe, **o sistema não
avisa: a tela de Energia simplesmente fica sem as contas.**

Abra o **cmd** (não precisa ser administrador), cole e Enter — troque a senha do
banco quando ele pedir:

```
C:\wamp64\bin\mariadb\mariadb11.4.9\bin\mariadb.exe -h 127.0.0.1 -P 3307 -u guilherme -p controle_veiculos < C:\wamp64\www\api\database\migration_kv_mediumtext.sql
```

✅ **Deu certo se:** o comando não imprime nada (no MariaDB, silêncio é sucesso).
Rodar de novo não faz mal nenhum.

---

## Deu problema?

- **A tela Energia não mostra as contas (e nem dá erro)** → é o Passo 6. Confirme
  rodando o diagnóstico abaixo: se ele disser que a coluna é `text`, rode a migração.

  ```
  C:\wamp64\bin\php\php8.3.28\php.exe C:\wamp64\www\api\scripts\energy_diag.php
  ```

  Esse comando mostra, em uma tela só: se o painel está sendo guardado, o tamanho
  dele, quais unidades você selecionou e quantas contas vieram.
- **"[FALHA] Login"** → e-mail/senha errados, ou a senha foi trocada. Use os
  mesmos que funcionam no site conecte.celesc.com.br.
- **A tela Energia diz "indisponível"** → confira se o módulo está ligado (Passo 3)
  e se `CELESC_ENABLED=true` no `.env`. Rode o teste do Passo 2 de novo.
- **A tela demora muito para abrir** → quase sempre é o Passo 6 (sem o cache, o
  sistema refaz uma consulta à CELESC para CADA unidade, a cada acesso).
- **Some depois de um tempo** → normal a CELESC deslogar; o sistema entra de novo
  sozinho na próxima atualização.
- **Quero desligar** → em **Módulos**, desligue a chave (ou `CELESC_ENABLED=false`
  no `.env`). Nada mais no sistema é afetado.

---

## É seguro?

- Sua senha fica **só no arquivo `.env` do servidor** — nunca no banco de dados
  nem aparece em tela.
- O sistema **só lê** contas e consumo. Não paga, não emite 2ª via automática, não
  altera cadastro.
- É a mesma coisa que você faria entrando no site — só que automático.
