46 — Integração cisterna HAOS (MonitorSonoff) ↔ Issabel/Asterisk¶
Checklist do que falta fazer neste repositório (lorentz-vps-stack) para o Home Assistant OS (MonitorSonoff / cisterna) conseguir tocar ramais Issabel quando a boia pede água.
Consumidor: projeto MonitorSonoff — pacote docs/haos/lab_boia_voip.yaml, secrets cisterna_asterisk_*, doc docs/HA-OS-BOIA-VOIP.md.
Estado actual (2026-09-24): o HAOS já alerta o supervisor via NVoIP (chamada) + Zenvia (SMS) em toda boia ON. Asterisk/Issabel é o caminho local (ramais lab / softphone), ainda não operacional porque este stack não tem ARI e o AMI não está aberto ao Pi.
Contexto¶
| Lado | Papel |
|---|---|
| HAOS (Pi) | Detecta boia switch.10026e6fe0_power → dispara alerta |
| NVoIP + Zenvia | Já em produção no HAOS (telemóvel do supervisor) |
Issabel nesta VPS (2.25.92.168 / orbitall.app) |
Tocar softphones SIP/1001–1005 (lab) |
3CX homelab.my3cx.com.br |
Só UI (telefonista/chat). Ramal 1000 é 3CX — não existe no Asterisk Issabel |
Placeholders que o MonitorSonoff não deve usar (incorrectos):
Formato alvo (após ARI):
http://2.25.92.168:8088/ari/channels?endpoint=SIP/1001&extension=s&context=from-internal&priority=1&callerId=Cisterna&timeout=45
Gap no stack (o que falta aqui)¶
| Item | Situação no lorentz-vps-stack |
Acção |
|---|---|---|
HTTP Asterisk :8088 |
Existe (http_custom.conf.template, bind HTTP) |
Manter interno; ACL só HAOS/VPN |
ARI (ari.conf + user) |
Ausente | Provisionar (Opção A) |
AMI :5038 |
Existe (CTI: LORENTZ_CTI_AMI_*) |
Estender permit ao HAOS ou Opção B |
Caddy /ari |
Sem proxy | Não publicar ARI na internet |
| Ramais lab | SIP/1001–1005, from-internal (doc 44) |
Usar estes endpoints |
| Tronco Issabel → 3CX | Não no repo | Opcional (só se quiser tocar 1000/1001 3CX) |
Política de portas (doc 14): não expor :8088 nem :5038 à internet.
Opção A — ARI REST (alinhada ao pacote HA actual)¶
O HA usa rest_command → POST /ari/channels?....
A1. Template + script de provisionamento¶
Criar no repo:
config/templates/asterisk/ari.conf.template(exemplo):
[general]
enabled = yes
pretty = yes
[cisterna_haos]
type = user
read_only = no
password = {{CISTERNA_ARI_PASSWORD}}
scripts/configure-issabel-ari-haos.shque:- gera password forte (ou lê
.env:CISTERNA_ARI_USER,CISTERNA_ARI_PASSWORD) - aplica o template dentro do container
issabel-prod(/etc/asterisk/ari.confou include custom) - confirma
http.conf/http_custom.confcomenabled=yes,bindport=8088 asterisk -rx "module reload res_ari.so"(e dependências)-
imprime o header Basic para colar no HAOS
-
Variáveis em
.env.example:
CISTERNA_ARI_USER=cisterna_haos
CISTERNA_ARI_PASSWORD=ChangeMe_AriCisterna!
# Rede do Pi HAOS (Tailscale / LAN / WireGuard) — firewall host
CISTERNA_HAOS_ALLOW_CIDR=100.x.y.z/32
A2. Firewall / ACL¶
- Host / UFW / painel Hostinger: permitir TCP
8088apenas do IP/CIDR do HAOS (ou interface VPN). - Não abrir
8088/0.0.0.0nem mapearhttps://orbitall.app:8088no Caddy.
A3. Teste na VPS¶
# Na VPS (ou a partir do HAOS na VPN)
curl -sS -u 'cisterna_haos:SENHA' -X POST \
'http://127.0.0.1:8088/ari/channels?endpoint=SIP/1001&extension=s&context=from-internal&priority=1&callerId=Cisterna&timeout=45'
Esperado: softphone 1001 a tocar; HTTP 2xx com JSON de canal.
A4. Entregar ao MonitorSonoff¶
No HAOS /config/secrets.yaml (modelo em MonitorSonoff docs/haos/secrets.cisterna_voip):
cisterna_asterisk_ari_auth: "Basic <base64(cisterna_haos:SENHA)>"
cisterna_asterisk_ring_a_url: "http://2.25.92.168:8088/ari/channels?endpoint=SIP/1001&extension=s&context=from-internal&priority=1&callerId=Cisterna&timeout=45"
cisterna_asterisk_ring_b_url: "http://2.25.92.168:8088/ari/channels?endpoint=SIP/1002&extension=s&context=from-internal&priority=1&callerId=Cisterna&timeout=45"
- Se o Pi chega à VPS por Tailscale, usar o IP Tailscale da VPS em vez de
2.25.92.168. - Activar
input_boolean.cisterna_voip_asteriskno HAOS. rest_commandjá usaverify_ssl: false(HTTP).
Opção B — AMI (já parcialmente no stack; alternativa ao ARI)¶
AMI já serve o LorentzCTI (scripts/configure-issabel-ami-docker.sh, permit=172.16.0.0/12).
Para o HAOS:
- Estender o script (ou novo
configure-issabel-ami-haos.sh) compermit=<CIDR_HAOS>emmanager_custom.conf. - No HAOS: HACS asterisk-hass-integration → serviço
asterisk.originateparaSIP/1001eSIP/1002. - Adaptar
lab_boia_voip.yaml(substituirrest_commandARI por serviços AMI) ou manter ARI como caminho preferido e AMI só como fallback.
Credenciais de referência no .env (não expor à internet):
LORENTZ_CTI_AMI_USER/LORENTZ_CTI_AMI_SECRET(ou user AMI dedicadocisterna_haossó com originate).
Softphones / destinos¶
| Destino HA (rótulo) | Endpoint Asterisk | Notas |
|---|---|---|
| A | SIP/1001 |
Lab homolog + WebRTC opcional (doc 14, doc 44) |
| B | SIP/1002 |
Segundo agente lab |
| 1000 / 1001 3CX | — | Só com tronco Issabel↔3CX (fora de âmbito até existir dialplan) |
Garantir MicroSIP / Webphone registados em 1001/1002 antes do teste de aceite.
Checklist de implementação (este repo)¶
- [ ] Decidir Opção A (ARI) e/ou Opção B (AMI)
- [ ] Template
ari.conf+ scriptconfigure-issabel-ari-haos.sh(se A) - [ ] Entradas
.env.example(CISTERNA_ARI_*,CISTERNA_HAOS_ALLOW_CIDR) - [ ] Firewall:
:8088e/ou:5038só para CIDR do HAOS/VPN - [ ] Confirmar lab: peers
SIP/1001–1002registados e a tocar - [ ] Teste
curlARI ou originate AMI a partir da rede do Pi - [ ] Documentar no CHANGELOG + atualizar 33 — Checklist teste
- [ ] Passar secrets ao MonitorSonoff e ligar
cisterna_voip_asterisk
Opcional / fase 2:
- [ ] Tronco Issabel → 3CX para ramais 1000/1001 do homelab
- [ ] Proxy Caddy autenticado (evitar) — preferir VPN + IP privado
- [ ] Dialplan dedicado
context=cisterna-alertaem vez defrom-internal+s
Critérios de aceite¶
- Softphone 1001 toca após originate a partir do HAOS (ou
curlna mesma rede). - Softphone 1002 toca (destino B).
- Porta 8088/5038 não responde a partir da internet pública (apenas ACL).
- Boia ON no HAOS continua a enviar NVoIP+Zenvia; com Asterisk ligado, também tocam os ramais Issabel.
- Falha ARI/AMI não bloqueia NVoIP (
continue_on_errorno pacote HA).
Referências¶
| Doc / path | Uso |
|---|---|
| 14 — WebRTC / WSS | HTTP 8088 interno; não expor |
| 44 — Lab homologação | Ramais 1001–1005 |
| 43 — Issabel URA Hostinger | VPS 2.25.92.168 |
config/templates/asterisk/http_custom.conf.template |
bind :8088 |
scripts/configure-issabel-ami-docker.sh |
Padrão AMI CTI |
MonitorSonoff docs/HA-OS-BOIA-VOIP.md |
Consumidor HAOS |
MonitorSonoff docs/haos/lab_boia_voip.yaml |
Automações boia → VoIP |