Sabe do que o mundo já tem de sobra? Gente que fala sobre o que vai fazer um dia. Sonhadores sentados sem fazer nada, esperando o momento perfeito, a configuração perfeita, o que quer que seja perfeito. Enquanto isso, a vida continua passando.
"Senti mais uma vez como a felicidade é simples e frugal: um copo de vinho, uma castanha assada, um braseiro miserável, o som do mar. Nada mais." Nikos Kazantzakis, Zorba, o Grego
Zorba não esperou. Zorba dançou. Zorba fracassou de forma espetacular e riu disso. Quando sua grande operação de mineração desabou, literalmente desabou, ele agarrou uma garrafa de vinho e começou a dançar na praia. Melhor fracassar como Zorba do que ficar sentado sem fazer nada.
Então hoje, meu filho e eu executamos. O plano está traçado. O hardware está preparado. A maioria já foi testada individualmente: as automações funcionam, os sensores detectam, o código compila. Agora vamos ver se tudo funciona junto. Algo vai dar errado? Provavelmente. Estamos preparados para desafios? Com certeza. Essa é a parte divertida.
Sem plano, não existe caminho. Só gente falando para ouvir a própria voz. Só sonhos. Isto não é um sonho. Isto é um briefing de execução.
A Missão
Quando estivermos fazendo churrasco hoje à noite, esta casa vai:
- Acender as luzes no cômodo em que você entrar, e diminuí-las quando sair
- Trancar todas as portas quando a cama detectar que fomos dormir
- Fechar a garagem automaticamente quando esquecermos (de novo)
- Ajustar a climatização com base em quais cômodos estão realmente ocupados
- Gerar ruído WiFi para que ninguém de fora possa usar a mesma tecnologia de sensing contra nós
E a Amazon não vai saber de nada. Tudo roda localmente. Sem nuvem. Sem assinaturas. Sem coleta de dados.
O Arsenal (Já Posicionado)
O Cérebro: Raspberry Pi 5 - PRONTO
Esse cara está na minha mesa há duas semanas, totalmente configurado, esperando por hoje. Pi 5 é exagero para automação residencial básica. Eu gosto de exagero. Está rodando Raspberry Pi OS Lite, Docker está instalado, Portainer está funcionando. Tudo que tenho que fazer é plugar onde vai ficar.
Escolhi o kit Argon ONE V3 M.2 NVME PCIE Case. Já montado:
- M.2 SSD com OS flasheado (nada de falhas de cartão SD para nós)
- Docker + Portainer instalados e testados
- Container do Home Assistant pronto para deploy
- IP estático atribuído na rede
Checklist Pré-Voo - COMPLETO
- ☑ Raspberry Pi OS Lite flasheado no SSD
- ☑ SSH habilitado, credenciais configuradas
- ☑ Rede configurada com IP estático
- ☑ Docker + Portainer rodando
- ☑ Arquivos de configuração do Home Assistant preparados
Os Sensores: Placas ESP32 - FLASHEADAS E TESTADAS
Essas pequenas placas ESP32 foram a parte mais divertida. Meu filho e eu passamos o fim de semana passado flasheando e assistindo os dados de sinal WiFi chegarem. Funcionam. Confirmado.
- Unidade WiFi Sensing - Detecta movimento medindo a perturbação do sinal WiFi. Testada andando pela sala de estar; detecta movimento através de paredes, num raio de 4,5 a 6 metros.
- Unidade WiFi Fog - Gera ruído para cegar qualquer WiFi sensing externo. Rodando em isolamento, criando um belo caos no espectro de sinais.
Hoje integramos tudo no Home Assistant e vemos se as automações disparam corretamente. O código funciona nos testes. A questão é: funciona quando tudo está conectado?
(Se quiser o contexto de por que isso importa, leia meus artigos sobre WiFi sensing e contramedidas WiFi.)
A Infraestrutura Existente - JÁ INSTALADA
Não estamos começando do zero. A casa já tem coisas inteligentes, só que rodando em apps separados como ilhas desconectadas. Hoje unificamos o reino:
- Lâmpadas Philips Hue - Já instaladas em toda a casa. Atualmente controladas pelo app Hue. Hoje: Home Assistant assume.
- Termostato Ecobee - Já sabe quais cômodos estão ocupados pelos seus sensores. Hoje: integramos esses dados.
- Cama Eight Sleep - Já rastreia quando estou dormindo. Hoje: ela dispara a automação de lockdown.
- Fechaduras Kwikset (Z-Wave) - Já nas portas. Hoje: aprendem a se trancar sozinhas.
- Garagem MyQ - Já instalada. Hoje: nunca mais voltar para casa porque esqueci de fechar.
O ponto é: Você provavelmente já tem mais equipamentos de casa inteligente do que imagina. Eles só não estão se comunicando ainda.
Fase 1: Infraestrutura (FEITO)
Esse foi o trabalho do fim de semana passado. Se estiver acompanhando depois, aqui está o que fizemos. Se leu meu artigo sobre Docker, sabe por que containerizamos tudo.
bash# Docker + Portainer - Already running
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
docker volume create portainer_data
docker run -d -p 9000:9000 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-cePortainer está ativo em http://raspberrypi.local:9000. GUI bonita para gerenciar containers. Verificado.
Fase 2: Home Assistant (PRIMEIRA TAREFA DE HOJE)
O arquivo docker-compose está escrito. O diretório de configuração está preparado. Hoje subimos para valer e começamos a conectar dispositivos.
yaml# docker-compose.yml - ready to deploy
version: '3'
services:
homeassistant:
container_name: homeassistant
image: ghcr.io/home-assistant/home-assistant:stable
volumes:
- /home/pi/homeassistant:/config
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
privileged: true
network_mode: hostO plano: Rodar docker-compose up -d, abrir o assistente de configuração e conectar essas integrações uma a uma:
- Philips Hue - Deve ser auto-descoberto na rede
- Ecobee - Fluxo OAuth, preciso ter o app à mão
- Eight Sleep - Integração por API, credenciais prontas
- Z-Wave - Essa pode ser picante, fechaduras são temperamentais
- MyQ - Simples, já fiz antes
- ESPHome - Para os dispositivos ESP32 que flasheamos no fim de semana passado
Desafio esperado: Z-Wave. Fechaduras sempre têm atitude. Vamos ver.
Fase 3: Integração WiFi Sensing (A PARTE DIVERTIDA DE HOJE)
A Unidade de Sensing - PRONTA PARA CONECTAR
No fim de semana passado, meu filho assistiu pelo monitor serial enquanto essa coisa detectava eu andando pela sala. As palavras exatas dele: "Pai, isso é assustador e incrível."
O ESP32 já está flasheado com ESPHome. Já está detectando movimento via WiFi CSI (Channel State Information). Hoje plugamos no Home Assistant e damos um nome: binary_sensor.living_room_occupied
O teste: Entrar na sala de estar. O Home Assistant vê? Se sim, estamos no negócio.
A Unidade Fog - CAMADA DE PRIVACIDADE PRONTA
O segundo ESP32 roda o gerador de ruído do meu artigo de contramedidas. Está rodando no meu banco há uma semana, gerando um belo caos no espectro WiFi.
Sim, estamos usando WiFi sensing para nossa própria automação enquanto simultaneamente nos protegemos de outros fazendo o mesmo contra nós. Não é hipocrisia. É segurança operacional. E meu filho acha que é a coisa mais legal do mundo.
Expansão Futura: 3+3
O objetivo de hoje é provar o conceito com um sensor e um dispositivo fog. Uma vez confiantes:
- 3 dispositivos de sensing: Sala, cozinha, quarto
- 3 dispositivos fog: Distribuídos pela casa para cobertura completa
São cerca de $50 em placas ESP32 para uma atualização de toda a casa. Mas primeiro, vamos garantir que hoje funcione.
Fase 4: As Automações (O OBJETIVO PRINCIPAL)
É para isto que tudo foi construído. Esses arquivos YAML estão escritos, testados na minha cabeça centenas de vezes, e prontos para colar. Vão funcionar de primeira? Vamos descobrir.
Automação 1: Iluminação Follow-Me (O ESPETÁCULO)
A visão: Entre num cômodo e as luzes se acendem para recebê-lo. Saia, e elas diminuem atrás de você como um mordomo respeitoso. A casa do Tony Stark. Esse é o objetivo.
A nuance: Se você acendeu uma luz manualmente, o sistema deixa como está. Sua escolha é respeitada. Rastreamos isso com helpers input_boolean. Porque nada é pior do que automação que briga com você.
yaml# configuration.yaml additions
input_text:
last_occupied_room:
name: "Last Occupied Room"
initial: "none"
input_boolean:
living_room_auto_triggered:
name: "Living Room Auto Triggered"
kitchen_auto_triggered:
name: "Kitchen Auto Triggered"
bedroom_auto_triggered:
name: "Bedroom Auto Triggered"Agora a automação:
yaml# automations.yaml
- alias: "Follow Me - Living Room Entry"
trigger:
- platform: state
entity_id: binary_sensor.living_room_occupied
to: "on"
condition:
- condition: state
entity_id: light.living_room
state: "off"
action:
# Dim the previous room if it was auto-triggered
- choose:
- conditions:
- condition: template
value_template: "{{ states('input_text.last_occupied_room') == 'kitchen' }}"
- condition: state
entity_id: input_boolean.kitchen_auto_triggered
state: "on"
sequence:
- service: light.turn_on
target:
entity_id: light.kitchen
data:
brightness_pct: 20
transition: 3
# Turn on current room
- service: light.turn_on
target:
entity_id: light.living_room
data:
brightness_pct: 100
- service: input_boolean.turn_on
target:
entity_id: input_boolean.living_room_auto_triggered
- service: input_text.set_value
target:
entity_id: input_text.last_occupied_room
data:
value: "living_room"
- alias: "Follow Me - Living Room Vacancy"
trigger:
- platform: state
entity_id: binary_sensor.living_room_occupied
to: "off"
for:
minutes: 2
condition:
- condition: state
entity_id: input_boolean.living_room_auto_triggered
state: "on"
action:
- service: light.turn_off
target:
entity_id: light.living_room
data:
transition: 5
- service: input_boolean.turn_off
target:
entity_id: input_boolean.living_room_auto_triggeredO teste: Uma vez deployada, meu filho e eu vamos andar pela casa e ver se as luzes nos seguem. Se funcionar, vamos nos sentir dentro de um filme. Se não, debug com pizza.
Automação 2: Lockdown Noturno (A PAZ DE ESPÍRITO)
O cenário: São 22h. Entro na cama. Cinco minutos depois, o Eight Sleep confirma que estou dormindo de verdade (não só deitado mexendo no celular). A casa responde: todas as portas trancam, a garagem fecha se eu esqueci (de novo), o termostato entra em modo sono e as luzes auto-ativadas se apagam.
yaml- alias: "Bedtime - Eight Sleep Triggered Lockdown"
trigger:
- platform: state
entity_id: binary_sensor.eight_sleep_bed_presence
to: "on"
for:
minutes: 5
condition:
- condition: time
after: "21:00:00"
before: "06:00:00"
action:
# Lock all doors
- service: lock.lock
target:
entity_id:
- lock.front_door
- lock.back_door
# Close garage if open
- service: cover.close_cover
target:
entity_id: cover.garage_door
# Set Ecobee to sleep mode
- service: climate.set_preset_mode
target:
entity_id: climate.ecobee
data:
preset_mode: "Sleep"
# Turn off auto-triggered lights
- service: light.turn_off
target:
entity_id:
- light.living_room
- light.kitchen
data:
transition: 5Não tem Eight Sleep? Substitua por um trigger baseado em horário (22:30) ou detecção de carregamento do celular. A lógica é a mesma.
Automação 3: Fechamento Automático da Garagem (O SALVADOR DO CASAMENTO)
O problema: "Você fechou a garagem?" Essa pergunta é feita 3x por semana nesta casa. Nunca mais. Depois de 10 minutos aberta, fecha sozinha e me manda uma notificação.
yaml- alias: "Garage - Auto Close After 10 Minutes"
trigger:
- platform: state
entity_id: cover.garage_door
to: "open"
for:
minutes: 10
action:
- service: cover.close_cover
target:
entity_id: cover.garage_door
- service: notify.mobile_app_your_phone
data:
title: "Garage Secured"
message: "Garage was open for 10 minutes. Auto-closed."
data:
tag: "garage-closed"Automação 4: Climatização Inteligente (A ECONOMIA DE ENERGIA)
A lógica: Por que aquecer uma casa vazia? Quando nossos sensores WiFi dizem que ninguém está em casa há 30 minutos, o Ecobee entra em modo Ausente. Quando alguém entra, ele volta ao normal.
yaml- alias: "Ecobee - Away When House Empty"
trigger:
- platform: state
entity_id: binary_sensor.home_occupied
to: "off"
for:
minutes: 30
action:
- service: climate.set_preset_mode
target:
entity_id: climate.ecobee
data:
preset_mode: "Away"
- alias: "Ecobee - Home When Occupied"
trigger:
- platform: state
entity_id: binary_sensor.home_occupied
to: "on"
condition:
- condition: state
entity_id: climate.ecobee
attribute: preset_mode
state: "Away"
action:
- service: climate.set_preset_mode
target:
entity_id: climate.ecobee
data:
preset_mode: "Home"Criando o Sensor Agregado
O binary_sensor.home_occupied é um sensor template que combina todos os sensores dos cômodos:
yamltemplate:
- binary_sensor:
- name: "Home Occupied"
state: >
{{ is_state('binary_sensor.living_room_occupied', 'on')
or is_state('binary_sensor.kitchen_occupied', 'on')
or is_state('binary_sensor.bedroom_occupied', 'on') }}O Que Pode Dar Errado? (A Parte Divertida)
Olha só: algo VAI dar errado hoje. Isso não é pessimismo. É realidade. E tudo bem. Essa é toda a questão.
Candidatos prováveis para a aventura de hoje:
- Fechaduras Z-Wave - Essas coisas têm atitude. O pareamento pode precisar de múltiplas tentativas.
- Calibração do sensor WiFi - Funciona no banco, mas e quando estiver na posição final?
- Casos extremos de automação - O que acontece se alguém passar por um cômodo em 2 segundos?
- O problema "funcionou ontem" - A piada favorita da tecnologia.
Mas é por isso que estamos fazendo juntos. Pai e filho, resolvendo problemas, aprendendo, provavelmente discutindo sobre por que o YAML não está parseando. É assim que se aprende de verdade, construindo algo real, vendo quebrar e consertando.
A mina de Zorba desabou. A resposta dele? Dançar na praia. O que quer que quebre hoje, vamos resolver. E se não conseguirmos, teremos uma ótima história para o jantar.
A Filosofia
Aqui está o que separa os fazedores dos sonhadores:
Sonhadores pesquisam por meses. Leem cada artigo. Esperam pelo hardware "certo". Otimizam o plano até ficar perfeito. Nunca começam.
Fazedores escrevem um plano, juntam o que precisam e executam. Esperam desafios. Se adaptam na hora. Fracassam para frente.
Sem plano, não existe caminho. Só gente falando para ouvir a própria voz. Mas um plano sem execução é só um sonho com passos extras.
Critérios de Sucesso de Hoje
- ☐ Home Assistant rodando com todos os dispositivos conectados
- ☐ Sensor WiFi detectando movimento na sala de estar
- ☐ Iluminação follow-me funcionando em pelo menos um cômodo
- ☐ Automação de lockdown noturno habilitada
- ☐ Meu filho dizendo "isso parece a casa do Tony Stark"
Próximos Passos (Depois Que Hoje Funcionar)
Assumindo que teremos sucesso, e teremos, mesmo que demore mais do que o esperado:
- Deploy completo ESP32 3+3 - Sensing em todos os cômodos principais, cobertura fog completa
- Tablet de parede com dashboard - Painel de controle sempre ligado no corredor
- Controle de voz local - Wyoming/Piper para comandos de voz que não saem de casa
- Sensores de vazamento - Embaixo de cada pia e perto do aquecedor
Mas primeiro: hoje. Primeiro: execução. Primeiro: provar que todo esse planejamento realmente funciona.
"A vida é o que acontece enquanto você está ocupado fazendo outros planos." John Lennon
Errado. A vida é o que acontece quando você para de planejar e começa a agir. Nos vemos do outro lado. Hora de ir construir algo.