Skip to content

Releases: andregoncalvespires/intelbras_alarm

v2.1.5

Choose a tag to compare

@andregoncalvespires andregoncalvespires released this 19 Sep 00:29

Modo Stay (armed_home) na AMT 4010 SMART, condicionado a firmware

O comando de ativação em modo Stay (0x50) e o relato de Away/Stay no próprio STATUS são duas capacidades independentes, cada uma liberada a partir de um firmware diferente — antes, a família inteira era tratada como "suporta Stay" de forma binária:

  • Comando Stay: a partir do firmware 5.0. Abaixo disso, o comando existe no protocolo, mas a central não implementa o modo.
  • STATUS relatando Away/Stay: só a partir do firmware 5.70. Entre 5.0 e 5.69, o comando funciona mas o STATUS não informa o modo — a integração continua rastreando localmente.

Nos modelos/firmwares com telemetria real (AMT 4010 ≥ 5.70, AMT 2018 E SMART), a própria central passa a ser a fonte autoritativa — corrige a entidade agregada da central podendo ficar dessincronizada das partições individuais, e ativações feitas pelo teclado físico ou outro app agora também entram corretamente nas contagens Home/Away.

Também corrige: supported_features deixou de ser fixado uma vez na criação da entidade e passou a ser reavaliado a cada consulta (evita ficar congelado numa decisão tomada antes do primeiro STATUS válido).

Corrige ordem de leitura do sensor "Último evento (Receptor IP)"

Quando o evento pertence a uma partição, ela agora aparece primeiro no texto ("Partição B — Desativado por — HA"), evitando o formato invertido de antes.

Ver CHANGELOG.md para os detalhes técnicos completos.

v2.1.4

Choose a tag to compare

@andregoncalvespires andregoncalvespires released this 12 Sep 21:56

Remove definitivamente send_without_response_in_transaction() (panel_client.py), código não usado em lugar nenhum do pacote — sobra de uma iteração anterior de uma versão testada pela comunidade, que tinha sido restaurada por engano nas versões 2.1.2/2.1.3.

Sem mudanças de comportamento. Ver CHANGELOG.md para detalhes.

v2.1.3

Choose a tag to compare

@andregoncalvespires andregoncalvespires released this 12 Sep 14:12

Correção final de processo sobre a v2.1.1/v2.1.2: a pausa de acomodação de 1 segundo após encerrar uma sessão do protocolo legado 0xE7, que eu tinha reaplicado por cima do arquivo recebido, foi removida. Os 8 arquivos-fonte agora são idênticos, byte a byte, ao que foi testado e enviado — confirmado diretamente contra o conteúdo publicado.

Sem mudanças de comportamento além dessa remoção. Ver CHANGELOG.md para detalhes.

v2.1.2

Choose a tag to compare

@andregoncalvespires andregoncalvespires released this 12 Sep 13:18

Correção de processo sobre a v2.1.1: uma função sem uso (send_without_response_in_transaction, código morto) tinha sido removida por conta própria durante a implementação, sem essa remoção ter sido pedida. Restaurada integralmente — o arquivo panel_client.py volta a ser byte a byte idêntico ao que foi testado e enviado.

A única diferença funcional real desta série continua sendo a combinada explicitamente: a pausa de acomodação de 1 segundo após encerrar uma sessão do protocolo legado 0xE7, mantida dentro do lock da conexão.

Sem mudanças de comportamento além da restauração do código. Ver CHANGELOG.md para detalhes.

v2.1.1

Choose a tag to compare

@andregoncalvespires andregoncalvespires released this 11 Sep 23:31

Versão oficial, promovendo a série de pré-lançamento v2.1.0-beta/v2.1.1-beta após validação extensiva.

Corrige dessincronização de stream TCP após sessão 0xE7 (causa real de timeouts na consulta de status)

A consulta de status às vezes não recebia os 73 bytes esperados por dessincronização de enquadramento do stream — não por timeout insuficiente. A causa raiz completa: 4 bytes residuais eram a segunda metade da própria resposta de logout da central, que a integração nunca lia. Corrigido enviando o logout de verdade, lendo e validando sua resposta completa (checksum confirmado independentemente), e fechando a conexão TCP incondicionalmente ao final de toda sessão 0xE7.

Scheduler próprio de polling, prioridade de comando, disponibilidade corrigida

O update_interval sub-segundo do próprio Home Assistant não é preciso o suficiente para a cadência que esta integração precisa — substituído por um scheduler próprio com precisão real, sem rajadas. Comandos do usuário (armar, desarmar, PGM) agora têm prioridade sobre a próxima consulta periódica. Diversos bugs de disponibilidade corrigidos: entidades e botões de ação agora refletem corretamente quando a comunicação cai ou volta.

Novidades

  • Opção para desativar a consulta de tensão independente da senha do app remoto (útil em modelos com firmware antigo)
  • Detecção experimental de reinicialização de rede da própria central (sensor de diagnóstico, correlaciona duas conexões TCP)
  • Suporte experimental à AMT 8000
  • Nomes de zona/usuário agora sobrevivem a reinícios do Home Assistant

Desempenho

  • Timeout de leitura da consulta de status reduzido de 3s para 300ms — falha rápido numa troca travada, sem bloquear o ciclo de polling
  • Reescritas de estado desnecessárias eliminadas

Ver CHANGELOG.md para o detalhe técnico completo. Histórico integral de cada correção, incluindo comparações com versões alternativas testadas pela comunidade, disponível no histórico do git.

v2.1.1-beta (pré-lançamento — corrige dessincronização de stream pós-0xE7 e senha de tensão)

Choose a tag to compare

@andregoncalvespires andregoncalvespires released this 07 Sep 12:50

Corrige dessincronização de stream TCP após sessão 0xE7 (causa real de timeouts na consulta de status)

Diagnóstico do próprio usuário, com log preciso: a consulta de status não estava de fato recebendo os 73 bytes esperados — bytes residuais de uma sessão 0xE7 anterior precediam o frame real, fazendo o leitor genérico interpretar o primeiro byte residual como "Nº Bytes" e esperar um total que nunca fecha. Esse erro não era resolvido aumentando o timeout — a causa é dessincronização de enquadramento do stream, não tempo insuficiente.

Corrigido com timeout total único (sem reiniciar entre drain/cabeçalho/corpo, preservando bytes parciais em log) e fechando a conexão TCP após toda sessão 0xE7 (leitura de nomes/eventos, consulta de tensão), sucesso ou falha — garantindo que o próximo comando sempre comece num stream nunca usado.

Corrige consulta de tensão continuando após remover a senha do app remoto

Remover a senha na reconfiguração da integração não desativava mais a consulta periódica de tensão. Corrigido lendo a senha sempre em tempo real da configuração, em vez de um valor travado na criação da integração.

Novo: opção independente para ativar/desativar a consulta de tensão

Para modelos com firmware antigo, a senha do app remoto é obrigatória só para nomes de zona/eventos — removê-la para desligar a tensão quebraria essa outra funcionalidade também. Nova opção, logo abaixo do campo da senha, permite desligar só a consulta de tensão sem mexer na senha. Sem breaking change: marcada por padrão, preserva o comportamento de quem já usa a funcionalidade hoje.

Ver CHANGELOG.md para os detalhes técnicos completos. Em teste antes de promover para a próxima versão estável.

v2.1.0-beta (pré-lançamento — suporte experimental AMT 8000)

Choose a tag to compare

@andregoncalvespires andregoncalvespires released this 28 Aug 09:13

Novidade principal: suporte experimental à AMT 8000

⚠️ Nada foi validado contra hardware real. Toda a implementação vem de engenharia reversa cruzada com um fluxo Node-RED de terceiros usado como referência.

Correção arquitetural importante — scheduler próprio de polling

O update_interval do DataUpdateCoordinator do Home Assistant não é preciso o suficiente para cadência sub-segundo (0,25s) — confirmado no código-fonte do próprio HA, numa simulação isolada e num log real em produção (rajadas de até 8 consultas em menos de 100ms, seguidas de pausas de centenas de ms). Substituído por um scheduler próprio, que nunca tenta "recuperar" atraso e dá prioridade a comandos (PGM/armar/desarmar) sobre o polling periódico.

Tensão da fonte e da bateria — confirmado em hardware real

Duas entidades novas, atualizadas a cada 5 minutos.

Novo: partições armadas ausente/presente

Duas entidades novas.

Também nesta versão

  • Filtro na resposta bruta + always_update=False — evita reescritas de estado desnecessárias
  • Nomes de zona/usuário persistidos, sobrevivem a reinícios
  • Receptor IP não parava mais após recarregar/reconfigurar
  • Nomes de usuário nas mensagens do Receptor IP
  • Tabela de eventos do Receptor IP ampliada de 68 para 132 códigos

Ver CHANGELOG.md para os detalhes completos. Em teste antes de virar versão estável padrão.

v2.0.3

Choose a tag to compare

@andregoncalvespires andregoncalvespires released this 25 Aug 21:22

Correção importante

Integração travava (entidades indisponíveis) ao recarregar ou reconfigurar (ex.: adicionar a senha de leitura de mensagens) — só recuperava com um reinício completo do Home Assistant.

Causa: o fechamento da conexão TCP com a central não tinha timeout de proteção — se a central não confirmasse o fechamento de forma limpa, a chamada podia travar indefinidamente. Corrigido com um timeout de 3s. Testado e confirmado pelo usuário antes desta publicação.

Outras mudanças

  • Tabela de modelos/firmwares testados reorganizada nos dois READMEs (observação do firmware 6.2 virou nota de rodapé)

Ver CHANGELOG.md para os detalhes técnicos completos.

v2.0.2

Choose a tag to compare

@andregoncalvespires andregoncalvespires released this 25 Aug 09:05

Destaques desde a v2.0.1

Correções de bugs reais

  • CPU alta com o switch "Conexão com a central" desligado (agendador do Home Assistant reagendando sozinho sem parar)
  • Resposta de status truncada agora tratada como falha isolada e tolerada, não como sucesso incompleto (bug de firmware conhecido, AMT 4010 SMART 6.2)
  • 3 bugs corrigidos na leitura legada de EEPROM (nomes de zona/eventos)

Compatibilidade de modelos, bem mais ampla

  • 8 novos modelos reconhecidos automaticamente: AMT 2008 RF, AMT 2010, AMT 2018 (base), AMT 2110, AMT 2118 EG, AMT 3010, AMT 2018 E3G, GPRS 1000 UN
  • ANM 24 Net: nome corrigido, variante G2 adicionada
  • AMT 2018 E Smart: comando de status próprio (0x5D) implementado corretamente, com dados adicionais exclusivos (diagnóstico de rede/celular, atributos de zonas 25-48, status de Stay reportado pela central)

Nomes de zona e eventos — cobertura bem maior

  • Novo caminho (protocolo legado 0xE7 + senha opcional) para modelos/firmwares fora do limiar do 0x5C — ex.: AMT 1016 NET com firmware antigo, que antes ficava sem essa função
  • 12 novos códigos de evento confirmados na tabela de tradução

Ver CHANGELOG.md para o histórico completo, e README_DETALHADO.md para o nível de confiança (testado em campo vs. engenharia reversa) de cada modelo/funcionalidade.

v2.0.2-beta.6 (última beta — teste antes da versão oficial)

Choose a tag to compare

@andregoncalvespires andregoncalvespires released this 25 Aug 00:28

Última beta antes de v2.1.0 oficial, assumindo validação bem-sucedida.

Adiciona dados adicionais exclusivos da AMT 2018 E Smart (resposta 0x5D): diagnóstico de rede/celular (2 sensores novos), atributos extras nas zonas 25-48 (sem fio, tamper, curto, bateria, supervisão RF), e status de Stay por partição reportado diretamente pela central. Nada testado contra hardware real ainda.

Ver CHANGELOG.md para o resumo completo de tudo que mudou desde a v2.0.1.