NightMare · 3 min · Visão do sistema
Controlar um ar-condicionado antigo sem modificá-lo
Construí o Adler para controlar um ar-condicionado de janela por infravermelho, usando um sensor separado para regular a temperatura do ambiente. O Watson acrescenta um observador acústico: uma forma de acompanhar a atividade do aparelho quando os comandos não contam a história toda.
Uma instalação: um Consul CCN07GB. A detecção acústica foi implementada e avaliada; o controlador atual de recuperação de estado do Adler ainda está sendo reconstruído.
Voltar ao NightMareManter o aparelho, acrescentar controle ao redor
O ar-condicionado permanece intacto. O Adler envia comandos por um transmissor IR; um DS18B20 mede a temperatura do ambiente. O usuário escolhe a temperatura desejada para o quarto, sem depender apenas do valor exibido pelo aparelho.
Ampliar imagem
Automação útil, dependente de sincronização
O controlador original ligava e desligava o AC em torno da temperatura medida, com uma pequena faixa de histerese para evitar alternâncias a cada oscilação. O Mycroft informava o estado da porta: após 90 segundos aberta, a climatização era pausada. Fechá-la permitia retomar, exceto se tivesse ficado aberta por mais de 30 minutos. O desligamento diário às 05h30 passava para 08h30 com o comando de dormir até mais tarde.
O Adler já tinha realimentação da temperatura do ambiente. Seu registro de ligado/desligado e da temperatura configurada no AC, porém, dependia dos comandos que ele supunha terem sido executados. Outro controle remoto ou os botões do aparelho podiam invalidar esse registro.
A recuperação manual consistia em informar o estado real e a temperatura configurada. Uma alternativa tentava inferir se o AC estava ligado pela variação de temperatura durante dez minutos, depois enviava uma sequência de comandos para estabelecer 24°C. Era lenta e incerta: a temperatura podia variar por motivos além do AC.
Fontes e evidências: [1]
Ouvir o controle remoto ainda deixava lacunas
Acrescentar um receptor IR permitiu ao Adler captar comandos do controle remoto original. Na posição de montagem, a cobertura não alcançava todo o quarto de forma confiável, e alguns comandos continuavam sem ser captados. Os botões do próprio aparelho continuavam fora do alcance da recepção IR.
Separar comandos de observações físicas
O Watson escuta perto do AC e publica atividade do ventilador, do compressor e eventos de bipe pelo NightMare Network. O Adler mantém o histórico dos comandos. Essa separação oferece evidências além das próprias transmissões, inclusive de atividade alterada por outra pessoa.
- Adler → AC
Comandos IR enviados; comandos do controle recebidos quando ao alcance.
- AC → Watson
Som: ventilador, compressor e tons de confirmação.
- Watson → Adler
Observações pelo NightMare Network, com disponibilidade e validade temporal.
| Evidência | Significado e limite |
|---|---|
| Comando enviado ou ouvido | Uma instrução foi emitida; isso não estabelece que o AC a recebeu. |
| Bipe perto de um comando | Uma possível confirmação; não identifica todas as configurações resultantes. |
| Ventilador / compressor detectado | Atividade acústica observada, sujeita a interferência; não é leitura da temperatura configurada ou do modo. |
| Entrada indisponível ou antiga | Evidência desconhecida, não prova de que o aparelho está desligado. |
O que existe hoje
A implementação do Watson com ESP32 e um microfone detecta e publica as três observações. O Adler recebe eventos IR e tem um mecanismo de comandos pendentes que associa um bipe posterior ou um timeout a um comando. Essa associação é mais limitada que verificar o estado resultante do aparelho.
O controlador de nível mais alto está sendo reconstruído. Os callbacks das observações e o rastreamento de comandos ainda precisam de integração para que a recuperação automática de estado possa ser apresentada como concluída. Uma mudança de som pode revelar uma ação não captada; não permite reconstruir toda temperatura configurada ou mudança silenciosa de modo.
Fontes e evidências: [2]
Fontes e evidências
Os detalhes da implementação e os relatórios de avaliação estão vinculados a versões específicas do código.