Campainha inteligente com ESP32 e foco em privacidade via integração local com Home Assistant
(tristam.ie)- Projeto de uma campainha DIY que se integra localmente ao Home Assistant usando ESP32-CAM e ESPHome, para usuários que querem evitar campainhas inteligentes dependentes da nuvem
- A configuração básica inclui Home Assistant, o add-on ESPHome e o app complementar móvel do Home Assistant; ao acionar o botão, uma captura da câmera é enviada como notificação ao celular
- O hardware é composto por ESP32-CAM, botão de pressão momentâneo, anel de LED RGB 8, cabo Micro USB de 10 m e um gabinete impresso em 3D; o LED embutido pode substituir o flash
- Dependendo da variante do ESP32-CAM, a disposição dos pinos e o comportamento de pulldown podem variar, então é necessária uma ligação com resistor de pulldown de 10kΩ entre a entrada do botão no GPIO14 e o GND
- O gabinete em PLA foi usado no exemplo de impressão, mas PETG ou ABS são mais adequados para resistência à água, e por causa da abertura da câmera é necessário instalar em um local protegido da chuva
Configuração da campainha local e materiais necessários
- Esta campainha inteligente tem como objetivo uma configuração amigável à privacidade e se integra ao Home Assistant por meio do ESPHome
- Para começar, é necessário ter a seguinte configuração
- Uma instância do Home Assistant em execução
- O add-on ESPHome
- O app complementar móvel do Home Assistant para receber notificações de pressionamento do botão
- Na montagem de exemplo foi usado um anel de luz RGB 8, mas ele pode ser omitido para simplificar, usando o LED embutido do ESP32-CAM como flash
- A versão AI-Thinker do ESP32-CAM pode não ter todos os resistores de pull-up e pull-down como um ESP32 comum
- Foi tentado o recurso
INPUT_PULLDOWNdo ESPHome no GPIO14, mas não funcionou - Como existem muitas variantes chinesas do ESP32-CAM, pode haver diferenças entre placas
- Foi tentado o recurso
Componentes e arquivos públicos
- Os principais componentes são os seguintes
- ESP32-CAM
- Recomenda-se uma placa com botão
flash/download/io0para facilitar a primeira gravação com o ESPHome - Placas sem esse botão precisam ser gravadas usando um adaptador FTDI
- Recomenda-se uma placa com botão
- Botão de pressão momentâneo
- Anel de luz RGB 8
- Cabo Micro USB de 10 m
- ESP32-CAM
- Os arquivos de impressão 3D e de configuração estão disponíveis publicamente
- Arquivo .stl no Printables
- thatguy-za/esp32-cam-doorbell: configuração do Home Assistant e do ESPHome
Impressão e montagem do gabinete
- O gabinete é impresso em três partes
- Corpo principal
- Placa de fixação do ESP32-CAM
- Placa traseira que também serve como suporte de parede
- Os gabinetes frontal e traseiro devem ser impressos com suportes
- A impressão de exemplo usou PLA, mas para resistência à água são recomendados filamentos PETG ou ABS com preenchimento de 20 a 30%
- Após a impressão, são adicionados dois inserts roscados M2.5
- Inseridos na tampa frontal para apertar o suporte de fixação do ESP32-CAM
- Inseridos na parte inferior da placa traseira para fixar a faceplate com parafusos M2.5 de 10 mm
Gravando o ESP32-CAM com ESPHome
- Para iniciar o ESP32-CAM em modo de gravação, mantenha pressionado o botão
flash/download/io0enquanto conecta-o ao computador com um cabo Micro USB - No Home Assistant, abra o add-on ESPHome e crie um novo dispositivo
- O caminho é
Settings -> Add-ons -> ESPHome -> Open Web UI - O nome do novo dispositivo pode ser definido, por exemplo, como
Doorbell - Selecione ESP32 como tipo de dispositivo e marque
use recommended settings
- O caminho é
- No YAML gerado, cole o código de configuração do repositório GitHub abaixo de
captive_portal: - Clique em
SaveeInstall, depois escolhaPlug into this computer - Grave o firmware pelo navegador usando o ESPHome Web
- O Google Chrome é o navegador mais estável para gravar firmware no ESP32-CAM
- Após a compilação do firmware, é possível clicar em
Download Project, e isso pode levar alguns minutos
- Depois que o novo firmware for gravado, o Home Assistant detectará o novo dispositivo e você poderá adicionar as entidades desejadas ao dashboard
Automação de notificação do botão
- Quando o botão da campainha é pressionado, é configurada uma automação para tirar uma captura da câmera e enviá-la ao celular
- No Home Assistant, crie uma nova automação
- O caminho é
Settings -> Automations -> + Create Automation - Crie uma nova automação do zero e, no menu no canto superior direito, selecione
Edit in YAML
- O caminho é
- Cole o YAML de automação do repositório GitHub e ajuste o nome da entidade do dispositivo, como o celular, de acordo com o seu ambiente
- Depois de salvar, reinicie o Home Assistant para ativar a nova automação
Limitações de fiação e instalação
- Existem várias variantes da placa ESP32-CAM, então é necessário verificar a disposição dos pinos da placa real
- A fiação é montada soldando na parte traseira da PCB inferior onde fica a porta Micro USB
- Adicione um resistor de pulldown de 10kΩ entre o GPIO14 e o GND
- Sem esse resistor, foi observado que o GPIO14 frequentemente ficava flutuando em estado high
- Recomenda-se envolver o resistor com tubo termoencolhível
- Por causa da abertura da câmera embutida, a estrutura não é totalmente à prova d’água e deve ser instalada em um local protegido da chuva
- A alimentação é fornecida por meio do cabo Micro USB de 10 m incluído na lista de componentes
1 comentários
Opiniões no Hacker News
Legal. Também gostei da iluminação
Também dá para prender um reed switch (como um sensor comum de abertura/fechamento de porta) perto da bobina magnética que toca a campainha burra e fazer isso enviar a informação para o Home Assistant
Conectei um reed switch de US$ 0,50 à campainha existente e o levei até uma porta digital de E/S de um ESP alimentado pela mesma fonte da bobina da campainha. Quando a campainha é pressionada, ele envia um snapshot por e-mail da câmera local da entrada e toca uma gravação do carrilhão da campainha no estéreo do andar de cima. Originalmente eu tentei monitorar a tensão da bobina com uma entrada analógica, mas era instável demais; o método mais simples com reed switch detecta a corrente de forma muito estável
a mesma fonte da bobina da campainhaé ótima. Fico pensando que outras fontes de tensão meio ambíguas existem dentro de casa. Unidades de controle de HVAC, linhas telefônicas analógicas e coisas do tipoLinhas telefônicas POTS (Plain Old Telephone Service) devem fornecer cerca de 48 V DC quando todos os telefones estão no gancho. Quando um telefone na mesma linha sai do gancho, cai para a faixa de 3 a 9 V. Um telefone fora do gancho normalmente consome cerca de 20 mA DC para operar, e sua resistência DC é de cerca de 180 Ω. O restante da queda de tensão ocorre no caminho do fio de cobre e nos circuitos da companhia telefônica, que normalmente têm resistores em série de 200 a 400 Ω para proteção contra curto-circuito e isolamento do circuito de áudio
https://www.jkaudio.com/article_03.htm
Usei de forma parecida, preso na parte superior da caixa de um relé, para detectar se a bobina estava energizada sem cutucar diretamente o circuito de controle ou o circuito da carga
Tudo o que quero nesses dispositivos IoT é que não dependam da nuvem e usem PoE. Prefiro passar bilhões de fios a lidar com baterias burras que morrem o tempo todo. O preço das baterias também está ficando caro demais
Sem isolamento: https://www.olimex.com/Products/IoT/ESP32/ESP32-POE/open-sou...
Com isolamento: https://www.olimex.com/Products/IoT/ESP32/ESP32-POE-ISO/open...
Trocar uma bateria uma vez por ano é pouco trabalho, mas com dezenas de dispositivos isso se acumula rápido e se repete periodicamente, então não é melhor que crescimento linear
Quando eu tiver minha própria casa, pretendo ir de KNX
Fugindo um pouco do assunto, minha esposa tem ADD bem forte e vive perdendo coisas. Tile só encontra objetos dentro de uma certa distância e parece quebrar com frequência
Sei que é pouco provável, mas fico curioso se alguém já criou um sistema de localização indoor que encontre objetos em um espaço 3D com erro de alguns centímetros usando beacons Bluetooth Low Energy dentro de casa
Mais próximo do tema: o ESP32 é bem incrível. Só que com MicroPython ou CircuitPython eu não consegui manter a conexão Wi-Fi de forma confiável, mas a gama de coisas possíveis é surpreendente. Minha placa é bem antiga, então talvez comprar uma placa nova faça diferença
MicroPythonouCircuitPython, não sei o que você esperava. Em sistemas embarcados que exigem confiabilidade, isso é praticamente proibidoÉ interessante que, em algumas partes do mundo, a existência da campainha seja tão importante que surge até a necessidade de torná-la “inteligente”. O sucesso dos produtos de campainha inteligente mostra bem essa demanda
Eu não tenho campainha. Se um visitante não sabe como entrar em contato comigo ou com outra pessoa da casa, é bem provável que ele não tenha muito motivo para estar ali, para começo de conversa
E não sou só eu. Em uma pesquisa nada científica que fiz caminhando na semana passada, a maior parte da minha rua parecia igual, e provavelmente a maior parte da minha cidade também
Campainhas parecem anacrônicas. Quase ninguém na minha rua tem uma
Pelas avaliações que vi, a câmera de campainha da Reolink parece ser a única opção comercial que atende aos requisitos do autor. Funciona localmente e pode ser integrada ao Home Assistant
Porém, para o interfone é necessário um app separado. A solução feita pelo próprio autor não parece oferecer comunicação de áudio e, pelo menos usando só o protocolo da câmera, também não parece haver uma forma de usar áudio bidirecional diretamente no Home Assistant
O ESP32 parece mesmo uma toca de coelho profunda. Já existem muitos projetos que usam ESP32 ou estão sendo desenvolvidos com ele, e agora tenho mais uma coisa para considerar
Projeto bacana. A câmera ESP32 pode ter qualidade de imagem bem ruim. Seria útil se o blog tivesse uma foto em resolução completa tirada pela campainha
Excelente projeto. É legal ver a variedade de campainhas ESP32 que os makers estão criando
Seria bom ter um vídeo ou fotos de exemplo. Usei uma ESP32 Cam no passado e, embora ela impressione por si só, pessoalmente não tinha a qualidade que eu queria. Claro que, no meu caso, o uso de uma campainha inteligente é mais voltado para segurança do que simplesmente para “ver quem está lá”
No momento estou usando uma campainha PoE bem cara que comprei no estado
AS-ISpara economizar. É um produto da Axis CommunicationsGosto muito da capacidade de receber eventos ONVIF. Se você consegue consumir os eventos, basicamente pode fazer o que quiser, o que aumenta a flexibilidade desse tipo de produto. Por exemplo, há até uma forma de criar eventos personalizados, como quando alguém cobre a lente da câmera com a mão
O Home Assistant tem excelente suporte a ONVIF. Eu gostaria de criar uma espécie de wrapper em torno de scripts (como um booleano de porta aberta/fechada) para obter eventos ONVIF nativos
Um dos comentários deste site apontou o problema de desempenho do ESP32. Nunca mexi com dispositivos IoT nem com placas desse tipo, mas elas são relativamente baratas, então fiquei com vontade de experimentar; ao pesquisar, descobri que o ESP32 é fabricado em processo de 40 nm
Fiquei curioso para saber se existe uma versão mais recente fabricada em um processo mais avançado, com desempenho maior dentro de um orçamento de energia semelhante
Há famílias de SoC que oferecem trade-offs melhores, mas poucas são tão amigáveis para hobbystas quanto o ESP32. Talvez a Nordic, ou ir para o lado de pequenos computadores de placa única, como o Pi Zero
Ainda assim, o ESP32 é muito mais potente do que a maioria dos dispositivos de automação residencial precisa. Ele só começa a bater em limites em algumas tarefas mais pesadas, como streaming de vídeo ou machine learning. Mesmo assim, com alguma esperteza, dá para fazer bastante coisa