Todos os projetos

Painel da rede de casa

Um painel para a rede Wi-Fi em malha de casa: onde está cada ponto de acesso, como está, o que lhe está ligado e o que gasta mais internet.

Função
Único programador
Ano
2026
Resultado
Os pontos fracos do Wi-Fi da casa ficaram à vista: que ponto de acesso está em dificuldades, que dispositivos estão nele e se uma mudança ajudou mesmo.
Feito com
Vue 3, TypeScript, Vite, gridstack, ECharts, reka-ui, Node 22, SQLite (node:sqlite), Vitest, Docker
Painel da rede de casa: quatro pontos de acesso e o seu estado, os dispositivos a usar a rede agora e o tráfego de hoje, com dados fictícios.
Captura com dados fictícios.

Porque o fiz

Um sistema Wi-Fi em malha com quatro pontos de acesso tinha sinal irregular e luzes de aviso, e a aplicação do próprio sistema não dizia porquê. Um analisador de pacotes num computador não consegue ver o resto da casa.

O que faz

  1. Os pontos de acesso

    Um cartão por ponto de acesso: modelo, função, se está online, as bandas da ligação de volta à unidade principal, o sinal por banda e o número de clientes, com uma luz que indica se está bem, se está a coxear ou se está no vermelho. A mesma luz é usada nos cartões, no mapa e na topologia, por isso estão sempre de acordo.

    Ilustração: quatro mosaicos de pontos de acesso com as suas luzes: dois bem, um a coxear e um desligado.
  2. O mapa

    Cada ponto de acesso na planta da casa, uma imagem por piso, com as ligações entre eles desenhadas na cor da sua luz. Tocar num mostra os seus clientes; no modo de edição, arrasta-se para onde está de facto. Pequenos círculos marcam os sítios já experimentados, com a cor de como correu.

    O mapa: três pontos de acesso acesos numa planta inventada, um a coxear em 2,4 GHz e outro desligado, com linhas tracejadas até ao ponto de que dependem.
  3. What to fix (o que corrigir)

    Um motor de regras lê a última consulta e as últimas 24 horas e escreve cartões em inglês simples: uma ação, a razão, uma linha "Seen:" com os números reais, uma gravidade e um grau de confiança. Cerca de uma dúzia de regras: um satélite offline, uma ligação fraca ou só em 2.4 GHz, um dispositivo que devia estar ligado por cabo, um dispositivo que monopoliza o upload, uma banda de 2.4 GHz congestionada, uma unidade que está sempre a cair. As regras que precisam de dados que o sistema não tem aparecem como inativas em vez de adivinharem.

    What to fix: quatro sugestões em linguagem simples, cada uma com os números "Seen:", o grau de certeza e, quando ajuda, um botão para reiniciar.
  4. Trials

    Cada mudança passa a ser um ensaio: mover uma unidade, ou reiniciá-la, que é a única coisa que a aplicação pode alterar, um satélite de cada vez e sempre com confirmação. O servidor compara a hora anterior com o tempo que passou desde então, no sinal, no tempo em 5 GHz, no tempo online e nas quedas, e escreve o veredicto numa frase com os números: melhor, pior, misto, igual, ou ainda é cedo para dizer.

    A ligação de retorno nas últimas 24 horas, as luzes de cada ponto de acesso durante uma semana e três ensaios com o veredicto em números. Dados fictícios.
  5. Utilização e histórico

    A velocidade em direto por dispositivo, com a banda e o ponto de acesso, o tráfego de hoje dos dispositivos que mais gastam, a ligação de cada satélite nas últimas 24 horas, e uma faixa por ponto de acesso com a sua luz ao longo da semana: quantas vezes fica vermelha, e quando.

    Ilustração: barras de velocidade de quatro dispositivos e uma semana de luzes por ponto de acesso, uma delas com algumas marcas vermelhas.
  6. Uma disposição à medida

    A página é feita de widgets numa grelha. No modo de edição, os widgets podem ser arrastados, redimensionados e escondidos, e trazidos de volta a partir de uma gaveta; Save guarda a disposição no servidor para todos os navegadores. No telemóvel, tudo fica empilhado numa só coluna.

    O modo de edição: os widgets com as pegas, a bandeja dos escondidos para voltar a juntar e Discard changes ou Save layout. Dados fictícios.
  7. Honesto sobre os dados

    Uma etiqueta e uma faixa dizem se os dados estão em direto, desatualizados, com falhas, em pausa ou inacessíveis, e os widgets em direto vão esmorecendo à medida que os dados envelhecem. Pause suspende as consultas durante algum tempo para se poder usar a aplicação do fabricante no telemóvel; caso contrário, as duas terminam a sessão uma da outra.

    Os dados desatualizados: um aviso âmbar diz que o ponto de acesso não responde há dois minutos, e os widgets ficam esbatidos. Dados fictícios.

Como funciona

Metadados, não conteúdo
Regista que dispositivo, em que ponto de acesso e banda, a que velocidade e quando. Nunca o conteúdo dos pacotes, os domínios ou a navegação, e uma decisão registada proíbe acrescentar qualquer coisa que os possa recolher. A casa sabe que existe e o que regista.
Uma API não documentada
O fabricante não tem API pública. O coletor consulta a API web local da unidade principal a cada 30 segundos, com um protocolo portado para Node a partir de uma integração open source do Home Assistant: uma troca de chaves, depois pedidos assinados e cifrados. Nunca faz a chamada que devolve as palavras-passe do Wi-Fi. Pelo caminho: as velocidades vêm em kbit/s, não nos KB/s que as etiquetas da comunidade indicam; os clientes por cabo não são medidos de todo; e consultar mais depressa do que a cada 30 segundos faz a unidade deixar cair ligações.
Armazenamento
O SQLite que vem com o Node: amostras de 30 segundos guardadas durante 30 dias, resumos por hora durante um ano e uma cópia de segurança todas as noites. As consultas que falham vão ficando mais espaçadas, e uma palavra-passe errada faz parar o coletor para que a conta não fique bloqueada.
Segurança
Sem início de sessão próprio: fica atrás da mesma autenticação de dois fatores das outras aplicações. A palavra-passe do fabricante está apenas num ficheiro de ambiente. Um reinício só é permitido para um satélite de cada vez, a partir de uma lista autorizada, nunca para a unidade principal, e é recusado enquanto as consultas estão em pausa ou os dados são antigos.

Como foi feito e testado

Testes
Cerca de 210 testes, nenhum deles na rede real. O coletor é testado contra um ponto de acesso falso que fala o verdadeiro protocolo cifrado, e cerca de 40 testes cobrem o motor de regras.
Porquê construí-lo
O Home Assistant com cartões da comunidade teria coberto a maior parte, mas num servidor pequeno isso significava um consumo de memória pouco claro, um segundo início de sessão e cerca de 75 sensores escritos à mão antes de o histórico por dispositivo durar mais de dez dias.

Como o Atta ajudou

  • Um documento de investigação com nove perguntas veio antes da escolha da stack; a equipa de agentes só foi gerada depois de a stack estar decidida.
  • O que aprendeu sobre a API local da malha (as velocidades vêm em kbit/s, consultar com calma) foi para a wiki partilhada, para qualquer projeto futuro.
  • Um esboço do ecrã foi publicado como página para acertar a disposição antes de a construir.
  • Regras permanentes, como metadados e não conteúdo, ficaram escritas como diretivas que todos os agentes seguem.