obsidian-vault/Boiler-Tuya-Energy/PROJECT.md
2026-09-08 16:16:08 +00:00

79 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PROJECT — Boiler Tuya Energy (Dublin)
Dashboard **somente leitura** do interruptor Tuya do boiler. Consome logs ON/OFF da nuvem Tuya, grava SQLite e estima kWh/€. **Não mede watts** (o hardware CB01-SBL não tem sensor). **Não liga/desliga** o relé.
**Atualizado:** 2026-09-08
**URL:** https://boiler.myvexx.com/
**Fallback:** https://r630.myvexx.com/boiler/
**Separado do R630:** Tapo P110 continua em https://r630.myvexx.com/ (VM500 :8787)
## O que o sistema faz
- Sincroniza `switch_1` (status + logs) da Tuya Cloud EU
- Guarda eventos em SQLite (`switch_events`)
- Relatório por intervalo de datas (kWh e €)
- Export CSV
- Tarifa Electric Ireland ValueReward 4%: **€0,3652/kWh** (fatura 23 Jul 2026, 0,3490 ex. IVA × 0,96 × 1,09)
- Potência assumida da resistência: **2,3 kW**
- Poll a cada 5 minutos
## Fórmula
`kWh = 2,3 kW × (minutos ON / 60)`
`€ = kWh × 0,3652`
Termóstato interno do boiler pode reduzir o consumo real.
## Stack / onde corre
| Item | Valor |
|---|---|
| Host | BIG CT **120** `web-traefik` |
| Pasta live | `/opt/boiler-energy` |
| Serviço | `boiler-energy.service` (user `boiler`) |
| Porta | **8788** |
| Traefik | `Host(boiler.myvexx.com)``http://127.0.0.1:8788` |
| Túnel | `7233d455-…` **config remota** Cloudflare (`config_src: cloudflare`) |
| Device Tuya | `bfaf766aa915197295qju6` · CB01-SBL · categoria `kg` |
| DB | `/opt/boiler-energy/data/boiler.db` (não versionar) |
Credenciais Tuya: `boiler.env` no CT120 (não no Git). Token DNS: `Infra-Network/SECRETS_CLOUDFLARE_MYVEXX.md`.
## Fora de escopo
- Medição real de corrente/tensão neste interruptor
- Controlo ON/OFF pelo dashboard
- Alterar `/etc/network/interfaces` do Proxmox
- Misturar com o Tapo do R630
## Histórico detalhado e conectividade (2026-09-08)
O SQLite preserva eventos Tuya além da janela de retenção da nuvem:
- `switch_events`: transições ON/OFF normalizadas
- `device_events`: log bruto com `event_id`, origem, código e valor
- `event_id=1`: dispositivo online
- `event_id=2`: dispositivo offline (Wi-Fi/nuvem)
- `event_id=5`: comando enviado ao dispositivo
- `event_id=7`: estado reportado pelo dispositivo
O relatório por período contém:
1. Resumo diário: dia da semana, quantidade de ligações, minutos ON, kWh, custo, desconexões e tempo offline.
2. Cada sessão: horário ON, horário OFF, duração, consumo/custo estimado e origem.
3. Conectividade: início offline, retorno online e duração de cada queda.
4. Agregação por dia da semana.
5. CSV com linhas `dia`, `ligacao` e `desconexao`.
### Identidade de quem ligou
A API Tuya **não fornece nome, email ou ID do utilizador** neste log. `event_from` permite apenas classificar a origem:
| Código | Origem |
|---|---|
| 1 | dispositivo (inclui botão físico/estado reportado) |
| 2 | app/cliente |
| 3 | plataforma de terceiros/automação |
| 4 | nuvem |
Logo, `app/cliente` prova que veio de um cliente, mas não distingue Roger de outro membro da casa. Só é possível inferir uma pessoa se ela for a única com acesso; não é prova técnica.
Backups de implantação: código e DB anteriores em `/opt/boiler-energy/*.bak-20260908-1712`.