Índice:

[15min] Relógio Weasley / Indicador de quem está em casa - baseado em TR-064 (beta): 4 etapas (com imagens)
[15min] Relógio Weasley / Indicador de quem está em casa - baseado em TR-064 (beta): 4 etapas (com imagens)

Vídeo: [15min] Relógio Weasley / Indicador de quem está em casa - baseado em TR-064 (beta): 4 etapas (com imagens)

Vídeo: [15min] Relógio Weasley / Indicador de quem está em casa - baseado em TR-064 (beta): 4 etapas (com imagens)
Vídeo: 20 MINUTE - TIMER & ALARM - Full HD - COUNTDOWN 2024, Julho
Anonim
Image
Image
[15min] Relógio Weasley / Indicador de quem está em casa - baseado em TR-064 (beta)
[15min] Relógio Weasley / Indicador de quem está em casa - baseado em TR-064 (beta)

ATUALIZAÇÃO: Veja a etapa 3.

Longa história (TL; DR abaixo): Algum tempo atrás, escrevi um pequeno script bash em meu computador que examinaria a rede em busca de dispositivos registrados e compararia seus nomes de host com uma lista com nomes associados. Sempre que um dispositivo entra ou sai da rede, eu recebo uma notificação. Assim, eu teria uma ideia de quem está em casa (não só é bom saber quem está em casa para perguntar se eles querem comer uma refeição ou algo assim, mas também pode ajudá-lo a evitar situações embaraçosas). O problema é que esse método não é muito confiável. Infelizmente, alguns dispositivos não respondem a pings (por exemplo, smartphones) e parecem entrar em algum modo de economia de energia, portanto, não são detectáveis de forma confiável com comandos como o nmap. Tentei superar isso exigindo pelo menos 10 negativos antes de finalmente anunciar que o dispositivo saiu da rede. Resumindo, funcionou, mas de forma lenta, pouco confiável e não muito bem. Também queria poder verificar quem está em casa, sem abrir meu computador. Então, eu tinha esses ESP8266s por aí - e queria brincar com eles. Mas eu não queria construir a estação meteorológica baseada em ESP 10.120.124.812th ou algo assim (por que você iria querer monitorar o tempo com seu termômetro de ± 2 ° C de baixa qualidade quando você pode simplesmente visitar algum site de qualquer maneira?). Então o plano foi feito. Infelizmente, o ESP parece não estar equipado para executar ping corretamente (o que foi ruim para começar, lembra?) E muito menos fazer uma varredura de rede completa. Pensei em escrever alguma biblioteca para isso - mas como meu C ++ é muito limitado, este é meu primeiro projeto ESP e também não sou um gênio com coisas de rede, também desisti dessa ideia. Depois de fazer algumas pesquisas, descobri que meu roteador (marca Fritz! Box) na verdade tem uma API! YAY!!!! O protocolo é denominado TR-064. Um nome tão inspirador, certo? Fazendo algumas pesquisas sobre o assunto, encontrei uma documentação (bastante ruim) online. Levei algum tempo para descobrir. Posso postar uma instrução mais prática nos próximos dias (e como se comunicar com / testar esta API usando um complemento de navegador). Assim que entendi a API, comecei a usá-la no meu ESP. Resumindo: eu tenho uma solução duck-tape-and-wd40 rodando e fazendo o que eu queria (consultar a API para dispositivos conectados, compará-los a uma lista de endereços MAC e alternar LEDs de acordo). Mas eu queria uma mais robusta e solução flexível e esta API tem muito mais a oferecer (você pode alterar as configurações (ligar / desligar o wi-fi, alterar a senha, abrir / fechar o wi-fi convidado, alterar a potência do sinal), reiniciar o roteador, consultar a velocidade de conexão, …) - então decidi criar uma biblioteca TR-064 universal! TL; DR; Dispositivo que indica por LEDs quem está em casa. Funciona muito bem, ainda não tem um bom alojamento (hey - notou o beta no título?). Usa o protocolo SOAP para se comunicar com o roteador. Escreveu a biblioteca Arduino para fazer isso acontecer. Conhecimento necessário • Conhecimento básico de Arduino / ESP • Se você montou um exemplo Blink com seu ESP, você ficará bem! podem ser úteis, se você quiser sair do estágio de breadboard • Alguns projetos em 3D e / ou marcenaria podem ser úteis para um link de projeto de habitação do Github [https://github.com/Aypac/Arduino-TR-064-SOAP-Library] para referência rápida.

Suprimentos

  • ESP8266 ou ESP32 no Development-Board ou com outro programador (2 ~ 6 €)
  • Cabo USB que se encaixa no programador
  • Adaptador de energia (por exemplo, USB ou bateria ~ 2 €)
  • Alguns LEDs e resistores (~ 1 €)
  • (Invólucro)

=> Cerca de 4-6 € para um design minimalista. Isso significa para mim, que posso facilmente pendurar alguns pela casa. Se você for preguiçoso, também pode usar uma placa de desenvolvimento com LEDs incluídos (consulte a etapa 4 para obter mais detalhes).

Etapa 1: configurar seu roteador (opcional, mas recomendado)

Configure seu roteador (opcional, mas recomendado)
Configure seu roteador (opcional, mas recomendado)
Configure seu roteador (opcional, mas recomendado)
Configure seu roteador (opcional, mas recomendado)

O protocolo foi projetado como um protocolo geral para roteadores, mas eu só sei que (a maioria) dos roteadores Fritz! Box (muito comuns pelo menos na Europa) o usam. Não sei sobre outras marcas. Portanto, vou presumir que você está usando uma caixa Fritz !. Se você conseguir fazer isso funcionar (ou deixar de fazê-lo) em qualquer outro roteador, ficarei feliz em adicioná-lo a este instrutível (talvez até começar uma pequena lista de compatibilidade?).

Esta etapa não é necessária, você também pode apenas usar sua conta de administrador, mas isso não é aconselhável por razões óbvias (pode ser interceptado ou extraído de seu ESP, você pode acidentalmente mudar coisas que não deseja, …) - então eu aconselho você a fazer isso.

Enfim, vamos lá:

  1. Faça login em seu Fritz! Box digitando fritz.box na barra de url do seu navegador favorito.
  2. Encontre a página para criar um novo usuário FRITZ! Box (você precisa ter avançado, deve estar em Sistema, se você não conseguir encontrá-lo, tente atualizar o seu dispositivo).
  3. Crie uma nova conta como você vê na imagem (usando um nome de usuário / senha diferente!).
  4. Sair.

Etapa 2: Código

Image
Image
Hardware (beta)
Hardware (beta)
  1. Você pode obter a biblioteca no Github.

  2. Nos exemplos você encontrará um arquivo chamado home-indicator.ino, que é o código deste projeto. Coloque a pasta de exemplos na pasta inicial do seu projeto IDE arduino e a outra pasta na pasta de bibliotecas na mesma pasta inicial do projeto.
  3. (Re) Inicie seu IDE.
  4. Abra home-indicator.ino no IDE e insira suas configurações. Deve ser bastante óbvio o que vai para onde. Se você tiver alguma dúvida me avise!
  5. Agora você pode compilá-lo e transferi-lo para o seu ESP!

Etapa 3: Hardware (beta)

Hardware (beta)
Hardware (beta)
Hardware (beta)
Hardware (beta)
Hardware (beta)
Hardware (beta)

Sim… Essa é a etapa, onde ainda preciso trabalhar um pouco mais. Mas acho que há material suficiente na web para descobrir algo:) A configuração como nas fotos é apenas um diodo com um resistor de ~ 100Ohm conectado ao GPIO {5, 4, 0, 2}, que são os D1, Pinos D2, D3, D4 (nessa ordem) da minha placa MCU ESP8266 e o pequeno cabo laranja levando os cátodos ao GND (marcado com G na minha placa). Se você for preguiçoso, pode fazer o que vê na segunda imagem. Basta usar uma placa de desenvolvimento com LEDs incluídos (como o "ESP-202", ver fotos - cerca de 3,50-5,00 € incluindo frete). Você pode simplesmente conectá-lo à alimentação USB ou usar a bateria incluída, desenhar uma interface em um pedaço de papel e colá-la na parede. Feito. Para esta placa específica, as portas são:

int userPins [numUser] = {5, 4, 2, 14, 16};

de cima para baixo.

Etapa 4: Outlook / Referências

Isso é o que eu ainda planejo: 1. Fazer uma boa caixa (obviamente) 2. Adicionar uma bela GUI para gerenciar usuários / LEDs / MACs / dispositivos conhecidos 3. Melhorar a biblioteca (consulte Github para isso) 4. Correção: às vezes os LEDs reaja vagarosamente (leva um pouco até que eles desliguem, depois que um dispositivo sai) sem motivo aparente 5. Prenda a coisa no corredor e talvez mais alguns pela casa. Adoraria receber alguma contribuição de vocês! E como sempre, fico muito feliz de ver outras pessoas construindo merdas que você pensou, então, por favor, tire um minuto para comentar e postar fotos!:):) Mais algumas referências Vou colocar um link de algumas coisas aqui, que podem ajudá-lo: • Referência do TR-064 • Um cara mexendo no shell e TR-064 (bom para entender a API) • Wikipedia Harry Potter: Entrada do Relógio Weasley • Alguns caras construindo um lindo, mas complicado Relógio Weasly * _ * É baseado em um aplicativo para seu telefone que está pegando sua localização. Se você estiver em certas áreas predefinidas, a luz correspondente no relógio acenderá. Para mim, isso era muito complicado e tinha muitos lugares onde poderia quebrar / falhar: • Os aplicativos precisam ser mantidos atualizados • Todos devem usar esses aplicativos • E não ter problemas com o impacto na privacidade • O aplicativo só funciona com internet conexão • Você tem que usar um servidor intermediário para fazer a interface da comunicação (a menos que você queira configurar seu esp como servidor e abrir sua rede doméstica para tráfego externo - yay, mais um dispositivo IOT inseguro conectado diretamente à internet!) • O o serviço intermediário pode ficar offline um dia / alterar sua API, •… Você precisa de mais software. Mais software significa mais lugares para fazer um erro;) Mas, eles fizeram um trabalho incrível e se você quiser fazer algo assim, vá até o site deles, é realmente ótimo!

Recomendado: