Blog

Como o Baby Monitor Timmy funciona tecnicamente

WebRTC, Firebase e proteção de ponta a ponta, explicados sem enrolação técnica.

Três blocos de construção, um objetivo

Nos bastidores, o Timmy foi criado de um jeito bem prático: Flutter para o app, WebRTC para áudio e vídeo em tempo real e Firebase para a coordenação. Eu não queria criar uma plataforma enorme que manda tudo pela nuvem. Cada parte deve saber o mínimo possível e ainda assim funcionar de forma confiável com as outras.

WebRTC: conexão direta, criptografada por padrão

O WebRTC (Web Real-Time Communication) transmite áudio e vídeo entre os dispositivos do bebê e dos pais. No melhor cenário, os dados fluem diretamente entre os dois dispositivos, ponto a ponto, sem um servidor de mídia no meio.

Toda conexão WebRTC usa DTLS-SRTP por padrão. Se alguém capturar pacotes da rede, não conseguirá ouvir nem assistir ao conteúdo. Essa criptografia faz parte do protocolo e não pode simplesmente ser desativada no WebRTC.

Esse era o ponto importante para mim: a mídia do quarto do bebê não deve ficar no meu servidor. Ela permanece entre os seus dispositivos.

Sinalização pelo Firebase Firestore

Antes de o WebRTC começar, os dispositivos precisam se encontrar e negociar como vão se conectar. Essa parte se chama sinalização. Para isso, o Timmy usa o Firebase Firestore, banco de dados em nuvem do Google.

Apenas dados técnicos de conexão são trocados:

O áudio e o vídeo não chegam ao Firebase. O Firestore transporta apenas os dados técnicos de conexão. O Timmy também criptografa essa camada de sinalização, para que o Firestore não vire um ponto de encontro em texto não criptografado para SDP e ICE.

Servidores TURN: quando o caminho direto não funciona

Algumas redes bloqueiam conexões diretas, como firewalls rigorosos ou certas operadoras móveis. Nesse caso, o WebRTC precisa de um servidor de retransmissão TURN (Traversal Using Relays around NAT).

O Timmy tenta primeiro o servidor TURN local e usa a Cloudflare como alternativa quando o servidor de retransmissão local não está disponível ou está sobrecarregado. Esse servidor encaminha pacotes criptografados. Ele não recebe as chaves do áudio nem do vídeo; a criptografia do WebRTC continua intacta.

As credenciais TURN vêm de uma Firebase Cloud Function e valem apenas por 24 horas. Para mim, credenciais permanentes em um app de babá eletrônica seriam arriscadas demais.

Nearby Connections: os dispositivos se encontram automaticamente

Para evitar etapas de configuração complicadas entre o dispositivo do bebê e o dos pais, o Timmy usa Nearby Connections. O Google oferece essa camada de descoberta por Bluetooth e Wi‑Fi.

O pareamento automático no Timmy funciona sem digitar códigos manualmente: os dispositivos se descobrem e encontram o mesmo ponto de encontro para a troca de chaves. Se isso falhar, há um código de 4 caracteres que você pode digitar. O código de pareamento nunca sai do dispositivo; o Firestore vê apenas um hash criptográfico (SHA-256) como identificador do documento.

Autenticação anônima

O Timmy usa a autenticação anônima do Firebase. Na primeira vez que o app é iniciado, cada dispositivo recebe um ID temporário e anônimo. Não há conta, endereço de e-mail nem senha. O ID serve apenas para aplicar as regras do Firestore: somente dispositivos autenticados podem ler ou gravar dados da sessão.

A arquitetura: quem envia, quem recebe

O Timmy tem dois modos:

Controles como pressionar para falar e ligar ou desligar a câmera usam um DataChannel, outro canal WebRTC que envia pequenas mensagens criptografadas diretamente entre os dispositivos.

Por que Flutter?

Flutter é o framework do Google para apps em várias plataformas. Para o Timmy, isso significa que posso escrever boa parte da lógica uma vez e usá-la no Android e no iOS. O Timmy está disponível para Android, e a versão para iOS está perto do lançamento. Menos código duplicado significa menos pontos onde bugs podem aparecer.

Resumo

A regra técnica é simples: o Timmy deve lidar apenas com os dados de que realmente precisa. O WebRTC protege a mídia, o Firebase coordena o estabelecimento da conexão, o TURN vê apenas pacotes criptografados e o Nearby Connections simplifica o pareamento.

Uma boa tecnologia passa quase despercebida no dia a dia. Ela funciona sem transformar o quarto do bebê em um projeto de nuvem.


Mais artigos