Índice:
- Etapa 1: Carregar um Pi com Rasbian Stretch
- Etapa 2: Atualizar e adicionar recursos ao Node-Red
- Etapa 3: Instalação do Mosquitto MQTT
- Etapa 4: Configurando a Interface do Node Red
- Etapa 5: Configurando o sistema Arduino para reprogramar dispositivos Sonoff
- Etapa 6: Reprogramação de um interruptor Sonoff
- Etapa 7: Segurança
- Etapa 8: etapas iniciais para expansão
- Etapa 9: Adendo - Carregando do Raspbian Stretch Lite
Vídeo: Poderoso sistema autônomo de automação residencial - Pi, Sonoff, ESP8266 e Node-Red: 9 etapas (com imagens)
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Este guia deve levá-lo à primeira base, onde você pode ligar / desligar uma luz ou um aparelho por meio de qualquer dispositivo que possa se conectar à sua rede local, e com uma ótima interface da web personalizável. O escopo para extensão / adição de recursos é vasto, incluindo o envio de e-mails, mensagens do Twitter, sensores de leitura (por exemplo, temperatura). Você pode definir regras facilmente, por exemplo - se a temperatura estiver abaixo de 15ºC às 23h, ligue o cobertor elétrico por 30 minutos. O sistema usa o protocolo MQTT com TCP que é consideravelmente mais confiável do que UDP - que é surpreendentemente usado por alguns dispositivos de automação residencial comercial. Assim que o árduo trabalho de configuração do sistema, descrito aqui, estiver concluído, a diversão pode começar. O Node Red oferece uma interface de usuário fantástica que é intuitiva, rápida e fácil de configurar e oferece recursos incríveis.
O resultado é um sistema de automação residencial poderoso que está totalmente sob seu próprio controle e totalmente em uma rede local. Muitos dos sistemas mostrados no Instructables funcionam com servidores baseados em nuvem e, portanto, são um risco à segurança e podem exigir assinatura. Eles são mais fáceis de configurar, mas apresentam um risco de segurança maior e um custo potencialmente maior. Devo acrescentar que é possível configurar uma VPN (rede privada virtual) para o Pi para permitir uma conexão segura à rede / sistema doméstico se o acesso externo for útil (Google Pi OpenVPN para obter instruções).
Este sistema requer a reprogramação de dispositivos Sonoff com um ótimo sistema de código aberto chamado Sonoff-Tasmoda. Isso pode ser feito usando uma configuração especial do Arduino e um conversor USB para serial. Os dispositivos Sonoff usam o chip ESP8266 Wi-Fi para que você também possa fazer seus próprios dispositivos usando módulos ESP8266 ou encaixá-los em outros itens para fornecer conectividade sem fio.
A maior tarefa é configurar um Raspberry Pi como hub. Isso executa o broker MQTT (ou servidor) que gerencia a comunicação com os dispositivos conectados. O Pi também executa um sistema chamado Node-Red que pode interceptar mensagens e dados e comandos de saída - como quando ligar o cobertor elétrico. O Node-Red também fornece uma interface para servir a página da web na qual você pode fazer logon via smartphone / tablet / PC / laptop, para ver o que está acontecendo e habilitar a alternância manual de luzes e assim por diante.
Meu objetivo com este instrutível é dar cada passo com detalhes suficientes para que um novato possa fazer o sistema funcionar.
As etapas são:
- Carregar um Pi com Rasbian Stretch
- Atualizar e adicionar recursos ao Node-Red
- Instale o corretor Mosquitto MQTT
- Configure o ambiente Arduino para fazer o upload do firmware Sonoff-Tasmota
- Reprogramar um interruptor Sonoff
- Configure a interface Node-Red
- Teste tudo funciona.
Hardware de que você vai precisar:
- Raspberry Pi e fonte de alimentação (e teclado e monitor para configuração inicial) (modelo B usado aqui)
- Sonoff Switch
- Conversor USB serial
- Opcional - placa de desenvolvimento ESP, como NodeMCU.
Minha experiência com o Raspberry Pi é que configurar qualquer coisa parece envolver consideravelmente mais dor do que se poderia imaginar possível com coisas que não estão funcionando ou ficando presas em alguma etapa trivial onde a explicação poderia ter sido melhor. Os fóruns nem sempre recebem conselhos que funcionam! Encontrei várias rotas que simplesmente não funcionavam por um motivo ou outro. Isso custou 3 dias! Em seguida, limpei tudo e comecei do zero e concluí em menos de um (longo) dia. Este, entretanto, usou a velha Raspian Jessie. Depois disso, descobri uma maneira de usar a versão atual e lançada recentemente (Stretch) e fiz tudo de novo. Este guia permite copiar e colar instruções no Pi. Então, você deve terminar em algumas horas. De qualquer forma, espero que isso ajude você a subir mais rápido na curva de aprendizado e com muito menos dor. Acredite em mim, vale a pena pelo resultado final.
Etapa 1: Carregar um Pi com Rasbian Stretch
Isso deve ser bastante simples. Comece com um cartão SD de 8 Gb ou 16 Gb. Baixe a versão mais recente em:
www.raspberrypi.org/downloads/
O tópico principal aqui assume que a versão completa foi carregada. No entanto, você pode usar a versão lite para economizar espaço. Se estiver usando Raspbian Stretch Lite, prossiga com esta etapa e, em seguida, vá para a Etapa 9 no final.
Descompactar o arquivo baixado fornece uma pasta com o arquivo.img. 7Zip é recomendado para Windows (e The Unarchiver Mac). A imagem deve ser gravada no cartão SD - mas um programa especial deve ser usado, pois o sistema de arquivos não é compatível com o Windows. O software recomendado é denominado Etcher e pode ser baixado em:
etcher.io/
As instruções para Etcher estão em seu site e dificilmente poderiam ser mais simples. Selecione a imagem e a unidade e clique em Flash.
Agora, com nosso cartão SD com flash, podemos fazer o Pi funcionar.
Se você sabe o endereço IP que seu Pi usa ou está feliz em encontrá-lo fazendo logon no seu roteador, você pode evitar a necessidade de teclado e monitor e usar o SSH imediatamente. Basta adicionar um arquivo em branco denominado SSH ao cartão SD, inserir, conectar à Ethernet e ligar. Caso contrário, siga o guia abaixo.
Conecte o Pi à internet, tela, mouse e teclado e conecte-o à energia. A primeira coisa que faremos é habilitar o SSH para que possamos fazer a maior parte da configuração no conforto de um PC. É claro que isso pode ser feito diretamente, mas ajuda muito poder seguir este guia no mesmo dispositivo que dirige o Pi e usar copiar e colar na maioria das instruções. Também no meu caso, a estação de trabalho do meu PC é agradável e confortável, mas também não é grande o suficiente para um pi.
Há um guia para uma boa parte do trabalho em um vídeo do YouTube. Foi aqui que comecei. Você pode executar o vídeo seguindo estas instruções. No entanto, quando estava percorrendo o processo novamente enquanto escrevia isso, achei mais fácil apenas seguir as instruções aqui. Existem alguns desvios significativos. Existem também algumas seções onde aconselhei seguir o vídeo em vez de listar as etapas aqui. No entanto, recomendo examiná-lo para entender o MQTT, o Node-Red e o amplo processo de configuração. O vídeo tem 38 minutos de duração, então fique à vontade. O vídeo começa mostrando o que o Node Red pode fazer e, em seguida, cobre a instalação e configuração do Pi, seguido pela atualização do Node Red e por último a instalação do Mosquitto. Sincronizações principais, caso você queira voltar para uma seção:
00:00 Introdução ao Vídeo
03:00 Demonstração do Node Red
14:14 Importando itens do painel para o nó vermelho
21:05 Configuração inicial do Pi, incluindo SSH
23:35 Instalação do código de suporte do Node Red
27:00 Introdução ao MQTT
29:12 Instalação do Mosquitto (MQTT) (a observação funciona apenas para Raspian Jessie)
33:00 Nó vermelho exemplos
Vou listar os comandos em negrito e itálico (em vez de usar “”). Essa formatação é ignorada quando você os copia e cola no Pi.
A introdução ao Node Red lhe dará uma ideia do que o sistema pode fazer e fornecerá uma imagem de onde iremos parar.
O vídeo do YouTube está em:
Siga o procedimento de instalação das 21h05 às 23h35. Observe que o login padrão é usuário: pi e senha: framboesa. Antes de reiniciar, encontre o endereço IP do pi. Clique no ícone "seta para cima + para baixo" na barra superior da área de trabalho ou insira a seguinte instrução na janela do terminal / terminal:
endereço sudo ifconfig
Em seguida, anote o endereço IP após: inet addr:. Terá o formato 192.168.x.y
Anote este endereço e reinicie (digite: sudo shutdown –r now)
A chave neste ponto é que o SSH foi habilitado e pode-se configurar um link para o Pi a partir de um PC (Mac e Linux incluem interfaces SSH). Um bom programa para fazer isso é um download gratuito chamado PuTTY, que também pode ser usado como uma interface serial e pode fazer Telnet. O Putty está disponível em:
www.chiark.greenend.org.uk/~sgtatham/putty…
Baixe e instale o PuTTY.
Agora, com o Pi reiniciado, inicie o PuTTY e insira o endereço IP anotado anteriormente. Veja o exemplo abaixo:
Agora clique em Abrir
Depois de fazer o login como: digite pi
Em seguida, digite sua senha.
Agora siga as instruções aqui e, opcionalmente, inicie o vídeo a partir das 23:35. Na maioria dos casos, você pode copiar e colar. Destaque o texto e use ctrl + C para copiar. Em seguida, clique com o botão direito em PuTTY para colar. Às vezes, o texto não aparece imediatamente, então espere alguns segundos. Se você inserir duas vezes, use backspace para excluir a segunda entrada. Pressione enter para executar cada instrução.
sudo raspi-update
Recebi um comando não encontrado e ignorei isso e a seguinte instrução de desligamento / reinicialização:
sudo shutdown -r now
sudo apt-get -y update
sudo apt-get -y upgrade
Isso demora um pouco …
sudo apt-get autoremove
sudo apt-get -y update
sudo shutdown -r now
Neste ponto, temos o sistema operacional Pi carregado e atualizado, pronto para a próxima etapa.
Etapa 2: Atualizar e adicionar recursos ao Node-Red
A conexão PuTTY terá sido perdida ao reiniciar no final da etapa anterior. Então feche o PuTTY e depois de esperar o Pi inicializar, faça logon novamente como antes.
Mudei para um método mais simples e confiável para carregar o Node-Red - seguindo a abordagem em https://nodered.org/docs/hardware/raspberrypi. Ele usa um script e instala ou atualiza o Node-Red - portanto, a abordagem é a mesma para as versões completa ou leve do Raspbian Stretch. Então digite:
bash <(curl -sL
Digite Y quando solicitado (duas vezes). Este script também carrega os arquivos necessários para habilitar a inicialização automática do Node-Red.
Então, neste ponto, temos nosso pi carregado e atualizado e com as atualizações necessárias para o Node Red. Não é prejudicial reiniciar antes do próximo estágio.
sudo shutdown -r now
Etapa 3: Instalação do Mosquitto MQTT
Se ainda não o fez, vale a pena assistir ao vídeo de introdução ao MQTT no vídeo a partir das 27:00.
É aqui que precisamos seguir um caminho diferente. O procedimento descrito no vídeo só funciona para a versão Jessie mais velha do Raspian. Há uma discussão sobre o local do mosquito, mas nenhum resultado claro é mostrado e, portanto, optamos por uma rota mais simples e segura.
Portanto, faça logon usando PuTTY e digite o seguinte:
sudo apt-get update
sudo apt-get install mosquitto mosquitto-clients
Y
sudo /etc/init.d/mosquitto parar
sudo /etc/init.d/mosquitto start
As duas últimas instruções param e iniciam o mosquitto e mostram que nosso corretor MQTT está funcionando.
Para um teste rápido, abra mais duas sessões PuTTY e faça logon em cada uma.
Você saberá agora que MQTT funciona pelo dispositivo e precisa de dados assinando um 'tópico'. O corretor enviará todos os dados com o mesmo 'tópico'. Em seguida, o dispositivo que deseja enviar dados / instrução publica isso para o corretor usando o mesmo 'tópico'.
Então, em uma sessão PuTTY, digite:
mosquitto_sub -d -t hello / world
Esta é uma instrução para se inscrever no tópico: hello / world.
No outro digite:
mosquitto_pub -d -t hello / world -m "Olá da janela Terminal 2!"
Esta é uma instrução de publicação com o mesmo tópico com uma mensagem. O texto: “Hello from Terminal window 2!” agora deve aparecer no outro terminal.
Bom trabalho ao chegar até aqui. Agora temos o Pi carregado e atualizado com as atualizações necessárias para Node-Red e com o corretor MQTT mosquito instalado e testado. A partir de agora a vida fica mais fácil e divertida. Feche as duas sessões PuTTY usadas para o teste MQTT.
Etapa 4: Configurando a Interface do Node Red
Primeiro, precisamos iniciar o Node Red. Insira a instrução:
node-red-pi --max-old-space-size = 256
Aguarde até que ele comece a funcionar e você verá o texto ‘Fluxos iniciados’.
Agora abro um navegador, uso o Chrome e insiro o endereço IP pi anotado anteriormente, seguido por: 1880, ou seja, algo como 192.168.0.8:1880
Agora você deve ter a página de programação Node Red em exibição como abaixo:
Agora você pode seguir os exemplos do Node Red começando às 33:00 ou ir direto para uma pequena configuração adicional e carregar o primeiro fluxo que mostrará o link para MQTT e estará pronto para conduzir nossa mudança.
A configuração adicional necessária é adicionar os itens do painel que habilitam uma interface da web.
Isso é mostrado no vídeo às 14:14.
Siga as instruções para carregar o node-red-dashboard.
Agora podemos brincar um pouco e mostrar o MQTT funcionando e sendo conduzido pelo Node-Red. Isso não está no vídeo, mas é a chave para este projeto. Você pode seguir minhas instruções e / ou importar os fluxos do arquivo NRtest1.txt anexado.
Primeiro adicione um nó de injeção de entrada e um nó de saída mqtt e vincule-os.
Clique duas vezes no nó de injeção (que inicialmente é rotulado como carimbo de data / hora). Na seção Payload, use twiddly para mudar para string e digite: Hello from me. Deixe o tópico em branco, pois podemos inseri-lo no nó MQTT. Clique em Concluído
Agora, clique duas vezes no nó MQTT. Clique no ícone de lápis à direita da seção Servidor. Isso abre uma nova caixa de diálogo. Digite: localhost na seção Servidor. Clique em Adicionar. Agora, de volta ao nó Edit mqtt out, insira nosso tópico na seção Tópico: hello / world. Defina QoS como 1. Clique em Concluído. Agora clique em Implementar. Você deve ver uma mancha verde e "conectado" abaixo do nó mqtt.
Agora adicione mais dois nós - input mqtt e output debug, e conecte-os. Agora clique duas vezes no nó mqtt de entrada e insira hello / world na seção de tópico. O servidor já deve mostrar localhost: 1883. Defina QoS como 1. Clique em Concluído. Em seguida, clique em Implementar e clique na guia de depuração no painel direito. Agora clique no quadrado cinza à esquerda do nó de injeção ‘Hello from me’. Isso envia a carga útil de texto para o broker MQTT com o tópico hello / world. O broker sabe que o nó de entrada mqtt se inscreveu no mesmo tópico e, portanto, encaminha a carga útil. O nó de entrada mqtt então envia isso para a guia de depuração (RHS) e o texto 'Hello from me' deve aparecer.
Isso marca outra caixa, pois temos o Node Red conversando com nosso corretor MQTT. Observe que o Node Red é apenas um cliente para o corretor - como os dispositivos Sonoff que conectaremos mais tarde. No entanto, ele permite uma automação sofisticada e fornece uma ótima interface de usuário.
Agora podemos fazer algumas pequenas alterações e configurar os fluxos para nosso switch Sonoff.
Portanto, exclua o nó de injeção de entrada (clique para realçar e pressione a tecla delete). Agora adicione um switch da seção do painel e conecte-o à saída mqtt. Clique duas vezes no botão. Clique no lápis à direita do Grupo. Digite em Nome: Luz. Em seguida, clique no lápis à direita de Tab e entre na seção Nome: Lounge. Clique em Adicionar / Atualizar e Adicionar / Atualizar novamente. Agora, de volta ao nó do switch Edit, defina os payloads ativado e desativado. Use o twidlys para selecionar string e insira ON para a carga útil On e OFF para a carga útil OFF. Clique em Concluído
Agora vá para cada um dos nós mqtt e altere o tópico para cmnd / sonoff / POWER. Se estiver copiando e colando, verifique se você não incluiu um espaço no final. Este é um tópico diferente e não funcionará com o Sonoff. Encontrar um espaço perdido pode levar uma hora ou mais - acredite em mim! Também fui até o painel> Tema e selecionei: Escuro. Clique em Implementar e selecione a guia de depuração.
Agora abra uma nova sessão do navegador em uma nova janela e dimensione-a como um telefone celular na sessão Node Red. Insira o endereço: seu endereço IP do Pi: 1880 / ui / # / 0, ou seja, algo como 192.168.0.8:1880/ui/#/0. Você deverá ver uma tela com Lounge e Light e switch. Clique no botão para ligar e desligar. A janela de depuração deve mostrar as cargas LIGADAS e DESLIGADAS. Agora, se você desejar, faça o login através de um celular também. Observe que a posição da chave está sincronizada. Não importa que nosso Sonoff ainda não esteja conectado. Quando for, ao se inscrever no Tópico, ele pegará a mensagem / carga útil e agirá sobre ela.
Um último pequeno passo é fazer o Node Red iniciar automaticamente depois que o Pi for inicializado.
O Node Red tem um guia em:
No entanto, os arquivos necessários já estão carregados, portanto, nenhuma instalação é necessária.
Para permitir que o Node-RED seja executado automaticamente a cada inicialização e após travar, entre (abra a sessão do PuTTY):
sudo systemctl enable nodered.service
Se você precisar desativar este, digite:
sudo systemctl disable nodered.service
Agora desligue o pi com sudo shutdown now e remova a energia.
Isso agora tem nosso Pi bloqueado e carregado, pronto para a ação. Temos nosso PC / celular conectado ao Node Red e este conversando com nosso servidor MQTT. Este foi um longo percurso e vale a pena um grande tapinha nas costas. Bem feito. Achei o próximo bit do Arduino, muito mais fácil!
Etapa 5: Configurando o sistema Arduino para reprogramar dispositivos Sonoff
Todas as informações para fazer isso estão no Sonoff-Tasmota GitHub. A única parte com a qual tive dificuldade foi o texto do Tópico - mas matrei astutamente para que você já inserisse isso!
Acesse
Você encontrará as instruções de configuração na guia Wiki na seção Ferramentas de upload:
Em vez de passar por todas as etapas, apenas observarei os aspectos-chave que considero importantes ou que ficaram presos.
As instruções são boas, mas requerem atenção cuidadosa aos detalhes. Fiquei confuso pela necessidade de uma pasta ESP8266 dentro de uma pasta que estava dentro de outra pasta chamada ESP8266 e, portanto, perdi dois níveis.
Segui a recomendação de uma configuração Arduino totalmente separada. Eu criei uma nova pasta chamada ‘ArduinoSonoff’ que é separada da minha pasta Arduino existente. A configuração é bastante avançada e, portanto, mantê-la separada é uma idéia muito boa. Se esta for sua primeira configuração do Arduino, certifique-se de instalá-lo uma segunda vez em um ‘Arduino’ ou outra pasta para qualquer outro trabalho do Arduino, incluindo o trabalho em ESP8266s.
Baixe o IDE do Arduino mais recente em https://www.arduino.cc/en/Main/Software. Descompacte o arquivo em sua nova pasta.
As instruções incluem o download do sistema Sonoff-Tasmoda da página principal https://github.com/arendst/Sonoff-Tasmota via: Clone ou Download> Download ZIP. Descompacte o arquivo em sua nova pasta.
Siga as instruções cuidadosamente. Eu não fiz a seção Opcional: Prepare-se para o upload OTA. Vamos deixar isso para outro dia.
Agora inicie o IDE do Arduino (clique duas vezes em arduino.exe). Carregue o esboço Sonoff-Tasmota via Arquivo> Sketchbook> sonoff. Não há necessidade de fazer edições. Todas as configurações são feitas por meio de uma conexão serial após o firmware ser carregado. Eles são armazenados na EEPROM. Portanto, o firmware pode ser atualizado e todas as configurações mantidas. Isso é uma coisa muito inteligente. No entanto, você pode evitar a necessidade de algumas etapas aqui, acessando o arquivo user-config.h e inserindo seu SSID wifi e senha e MQTT_HOST (substitua ‘domus1’ - segunda referência, pelo seu endereço IP Pi). Posteriormente, você também pode inserir um usuário e uma senha MQTT. Antes de fazer o download, verifique as configurações da placa em Ferramentas. Isso vai precisar de algumas mudanças para atender aos requisitos definidos no Wiki. Agora clique em compilar (ícone de tique). Deve compilar bem. Se isso não acontecer ou se as configurações de placa necessárias não estiverem disponíveis, volte e verifique cada etapa da configuração.
Etapa 6: Reprogramação de um interruptor Sonoff
Agora estamos prontos para fazer o download. Neste estágio, pode-se seguir em frente e acionar um interruptor Sonoff ou pode primeiro acionar um módulo ESP8266. Fiz o último, em parte porque meus interruptores ainda não haviam chegado (acabaram de chegar enquanto digito isso!), Mas também como precaução, pois o flash do interruptor Sonoff é uma etapa unilateral, já que o firmware original não está disponível publicamente até Eu estou ciente. Eu tenho algumas placas NodeMCU. São fáceis de conectar, tendo seu conversor USB para serial integrado. No entanto, o método de redefinição nodemcu não funciona com este sistema. Portanto, deixe Ferramentas> Método de redefinição definido como “ck”. Faça a configuração manual normal do flash segurando o botão Flash (GPIO 0 no solo) enquanto pressiona e solta Reset (Reset no solo). Não tenho certeza se isso tem um tempo limite ou talvez não segurei GPIO 0 baixo por tempo suficiente, mas precisei de várias tentativas, incluindo fazer isso enquanto o IDE do Arduino está compilando!
Se você quiser verificar as respostas - a saída do relé é D6 nas placas NodeMCU. No ESP12 é GPIO 12. A saída do LED é D7 (NodeMCU) ou GPIO 13 (ESP12).
Interruptor sonoff.
AVISO: Devo dizer “não conecte à rede elétrica em nenhuma circunstância onde o gabinete estiver aberto”. Observe que o PCB (pelo menos no Sonoff Basic (chave em linha) só tem distâncias de "isolamento único" entre a seção de baixa tensão e a rede elétrica. Portanto, deve-se tratar qualquer parte do circuito Sonoff como tensão de rede. O Sonoff- Tasmota GitHub mostra a conexão de um sensor de temperatura e umidade a um Sonoff S20. Eu não faria isso por questões de isolamento. - então, se você quiser fazer isso, pegue um módulo ESP12 ou NodeMCU e configure-o separadamente com um duplo isolado adequado ou fonte de alimentação aterrada.
O interruptor plug-in Sonoff S20 é um bom ponto de partida, pois não precisa de nenhuma fiação elétrica. Isso pode ser aberto removendo um parafuso (sob o lacre de segurança) e abrindo a caixa. A foto abaixo mostra onde estão as tags. Apertar a caixa nesses pontos ajuda.
Conversor serial USB
Meu conversor favorito é a versão FTDI. No entanto, ele não tem capacidade adequada para suprir as necessidades do Sonoff 3.3v. A especificação FTDI diz no máximo 50ma. A próxima melhor alternativa é usar o chip CP2102. No entanto, isso tem um limite de 100ma que ainda não é suficiente. Claramente, muitos estão usando este conversor direto, mas também há relatos de falha de carregamento. Eu limitaria o tempo de conexão, pois aqueceria com a carga. Faça isso por sua própria conta e risco. A solução ideal é ter também um regulador de 3,3 V, por ex. um AMS1117 3.3. Eu criei um pequeno PCB para habilitar isso. Consulte Programador para dispositivos Sonoff.
Minha sequência de programação é a seguinte:
Abra o IDE do Arduino.
Em Ferramentas, verifique se as configurações estão no Wiki.
Faça as edições necessárias em user_config.h. Eu defino o Wifi SSID e senha e endereço do corretor MQTT e detalhes de fuso horário / horário de verão.
Clique em ‘verificar’ para verificar se está compilado em OK.
Conecte o conversor serial USB (sozinho) ao PC. Observe o número da porta.
Agora desconecte o cabo serial USB do PC e conecte-o ao interruptor Sonoff. Verifique se o aterramento e as conexões 3v3 estão do jeito certo (o aterramento está conectado ao plano de aterramento na placa Sonoff).
Segure o programador para que os contatos fiquem seguros enquanto pressiona o botão.
Agora conecte o cabo USB ao PC, verifique se o número da porta está correto (em Ferramentas) e clique em download.
Eu continuo segurando o botão durante toda a programação porque não quero atrapalhar as conexões.
Quando terminar, você deverá ver uma tela como a abaixo:
O Sonoff precisa de algumas informações para se conectar ao nosso sistema: o SSID e a senha do wifi da rede local e o endereço IP do Pi. Existem várias maneiras de fazer isso, uma das quais é modificar o arquivo config.ino conforme observado anteriormente. Se você tem um smartphone, pode (após remontar o switch) pressionar o botão Sonoff 4 vezes rapidamente para colocá-lo no modo de servidor web. O LED piscará. Tive que tentar várias vezes para fazer isso funcionar. Em seguida, em seu smartphone procure a nova rede Sonoff e conecte-se. Uma página da web aparecerá onde você pode definir os dados necessários. O endereço IP do Pi vai para o nome do host. Eu também mudei o segundo SSID e senha para algo longo e basicamente inutilizável.
Alternativamente, ele pode ser configurado através da conexão serial logo após o carregamento. Abra o Arduino Serial Monitor (em Ferramentas).
Comandos para entrar:
SSId seuWiFiSSID
Senha yourWiFiPassword
MqttHost 192.168.x.y (endereço IP PI)
Você também pode inserir SSId1 e Senha1 seguidos por algo longo e inutilizável para desabilitar isso efetivamente.
Agora você pode encaixotar o switch Sonoff, abrir o Node-Red e o painel Node-red e clicar no botão switch e examinar a guia de depuração que agora deve incluir as respostas do Sonoff. Portanto, alcançamos outro grande passo - nossa primeira mudança sendo conduzida de um PC / smartphone.
Até agora não mencionamos segurança. Existe a possibilidade de usar comunicações criptografadas. Isso é bastante complexo de configurar e provavelmente mais apropriado quando um corretor baseado em nuvem está sendo usado. Também existe a opção de adicionar nomes de usuário e senhas para todos os dispositivos conectados e não permitir usuários anônimos. Isso é muito simples de configurar. E agora para a Segurança.
Etapa 7: Segurança
MQTT permite nomes de usuário e senhas para cada cliente. Isso é fácil de configurar. Provavelmente, é mais fácil primeiro renomear cada dispositivo e, em seguida, definir seus nomes de usuário e senhas. Isso pode ser feito por meio de comandos MQTT e Node-Red é provavelmente a maneira mais fácil de enviá-los. Primeiro, decida sobre uma convenção de nomenclatura. Uma opção é basear os nomes na localização e função. Em seguida, você desejará registrar o nome de usuário (Tópico) e a senha junto com o tópico de fallback. Observe que também há uma "opção de redefinição" para redefinir as configurações do Sonoff para o download original (consulte Uso do Wiki> Funcionalidade do botão).
Ligue o pi e depois de alguns segundos abra um navegador para Node-Red (endereço IP: 1880).
Em Node-Red, configure um nó de injeção e vincule-o a uma saída mqtt e configure o servidor mqtt para localhost. Deixe o tópico, o usuário e a senha em branco, pois iremos configurá-los no nó de injeção. Configure também um nó de entrada mqtt e conecte-o a um nó de depuração para que possamos ver as respostas. Defina a nota de entrada mqtt para localhost (já deve estar definido) e insira + / + / + para o tópico para que ele capture todo o tráfego.
Insira a seguinte sequência de configurações no nó de injeção.
Primeiro verifique a conectividade com
Tópico: cmnd / sonoff / Status
Mensagem: 6
clique em ‘Injetar uma vez ao iniciar’. Implantar. Devemos ver a depuração incluindo 7 linhas de dados de stat / sonoff / STATUS6
Digite o tópico: cmnd / sonoff / Tópico e mensagem: luz do salão. Implantar. Isso muda o nome do switch de sonoff para loungeelight
A guia de depuração deve mostrar o dispositivo reiniciando com seu novo nome / tópico
Tópico: cmnd / loungelight / MqttUser
Mensagem: loungeelight
Clique em implantar. Uma depuração deve ser vista em stat / loungelight / RESULT com {“MtqqUser”:”loungelight”}
Tópico: cmnd / loungelight / MqttPassword
Mensagem: loungelightPW (seja mais criativo do que isso!)
Limpe a guia de depuração e implemente.
Uma resposta deve ser vista em stat / loungelight / RESULT com {"MqttPassword": "loungelightPW"}
Agora insira NodeRed e NodeRedPW como nome de usuário e senha no nó mqtt out. Isso é feito por meio do ícone de lápis do servidor e da guia de segurança na janela que é aberta. Isso é copiado automaticamente para os outros nós MQTT.
Verifique novamente com
Tópico: cmnd / loungelight / Status e mensagem: 6. Implantar.
E que a resposta seja enviada.
Portanto, neste ponto, renomeamos nosso dispositivo Sonof para que ele ouça os tópicos cmnd / loungelight / …… e faça logon no servidor MQTT com o nome de usuário loungelight e a senha loungelightPW. Também definimos um nome de usuário e uma senha para Node-Red.
Em seguida, temos que dizer ao servidor MQTT mosquito para aceitar apenas clientes com nomes de usuário e listar os nomes de usuário e senhas para serem aceitos.
O procedimento é:
- Pare de mosquito
- Crie seu próprio arquivo de configuração
- Editar arquivo de configuração
- Criar arquivo de senha
- Adicione usuários / senhas.
Portanto, faça login com uma nova sessão PuTTY e execute os seguintes comandos:
sudo /etc/init.d/mosquitto parar
cd /etc/mosquitto/conf.d/
sudo nano mosquitto.conf Isso inicia o editor.
Adicionar linhas:
allow_anonymous false
password_file /etc/mosquitto/conf.d/passwd
require_certificate false
Salve e saia (Ctrl + X), Y, digite.
sudo touch passwd Cria um arquivo de senha e as instruções a seguir adicionam nomes e senhas.
sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd loungelight loungelightPW
sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd NodeRed NodeRedPW
sudo /etc/init.d/mosquitto restart
Observe que, ao adicionar um novo dispositivo, você terá que inserir o usuário e a senha através da porta serial e adicioná-los ao arquivo de senha ou alterar temporariamente o arquivo de configuração mosquitto e comentar (adicionar # no início da linha) as linhas "allow_anonymous false "e" password_file /etc/mosquitto/conf.d/passwd "e então redefina-os quando os detalhes forem enviados para o dispositivo e adicionados ao arquivo de senha como acima.
Alteramos o nome sonoff para loungelight e, portanto, atualizamos o nó de saída mqtt (conectado ao switch) para usar o tópico cmnd / loungelight / POWER.
Clique em Implementar e verifique se os nós mqtt mostram 'conectado'.
Em seguida, tente o botão switch e procure a depuração mostrando a resposta do switch Sonoff. Você notará que o dispositivo mostra a mudança com um tópico: stat / loungelight / POWER. Portanto, agora altere o nó de entrada que foi definido como cmnd / sonoff / POWER para stat / loungelight / POWER. Podemos usar isso para cobrir uma lacuna em nossa funcionalidade. O sistema, conforme configurado inicialmente, será sincronizado com todos os usuários conectados, mas não sincronizará com as alterações de switch feitas pressionando o botão no switch Sonoff. Portanto, agora conecte a saída do nó de entrada stat / loungelight / POWER mqtt à entrada do switch (LHS). Agora clique duas vezes no botão e desmarque "se a mensagem chegar na entrada, passe para a saída". Isso traz algumas novas opções - selecione 'o ícone da chave mostra o estado da entrada'. Implantar. Portanto, agora temos um bom ciclo de feedback. A posição da chave do painel sempre mudará quando a chave Sonoff mudar, independentemente de onde a mudança foi iniciada.
Portanto, agora temos um sistema de automação residencial autônomo e seguro instalado e funcionando e pronto para ser expandido para qualquer coisa que você desejar. Na próxima seção, cobrirei alguns dos meus experimentos até agora e os desafios que pretendo enfrentar.
Etapa 8: etapas iniciais para expansão
Eu tenho outra placa de desenvolvimento de LEDs de sensores Sonoff-Tasmota para automação residencial instrutível que mostra alguns dos recursos adicionais do firmware Sonoff-Tasmota:
Medição de temperatura e umidade
Detecção de intruso (entrada do interruptor)
Remoto infravermelho (para TVs, etc.)
Strings de LED - RGB e NeoPixel (individualmente endereçáveis)
Sensores I2C
Para o exposto acima, estou usando um ESP12F e um PCB personalizado. Um NodeMCU e uma placa de ensaio também podem ser usados. Isso habilita essas funções adicionais sem cabeamento em um dispositivo Sonoff e, portanto, é uma abordagem muito mais segura. Com a entrada de temperatura, pude completar minha automação de cobertor elétrico.
Música e rádio na Internet podem ser facilmente adicionados. Isso abre opções para que estações ou álbuns específicos sejam ativados em horários definidos ou talvez em resposta a um visitante (telefone) sendo detectado. Este instrutivo associado está em Reprodutor de música de alta qualidade e rádio na Internet com controle de smartphone. Como isso também é acionado pelo Node-RED, deve ser possível ter mais de um sistema de som e usar a comunicação MQTT para acioná-los.
Também tenho explorado o Node-Red, incluindo o envio de e-mails e a criação de alertas de voz. Também existe a possibilidade de o sistema detectar quando você está dentro / fora - executando o ping do endereço IP do seu telefone móvel. O Node-Red também pode acessar o clima e as notícias - para que seja possível adicionar informações e também fazer automação.
Existem alguns truques a serem aprendidos - mas eles se tornam muito fáceis na segunda vez.
Outra maneira é adicionar um display ao pi para mostrar o painel. Este é um 'trabalho em andamento' - ou em outras palavras, não estou muito feliz. A tela que obtive é difícil de girar para o modo retrato e o navegador Chromium é dolorosamente lento. Uma alternativa seria pegar um tablet antigo no ebay e usá-lo. Posso tentar com um Pi 2 e ver se isso proporciona uma melhoria suficiente (modelo B usado para este desenvolvimento).
Espero que isso ajude você a começar e tenha sua imaginação zumbindo. O escopo potencial é enorme. Pode-se até modificar o código Sonoff para outros sensores, se necessário.
No geral, fiquei surpreso com o que esse sistema pode fazer. Meu objetivo original era apenas acionar um switch de um smartphone de maneira confiável por meio de um sistema autônomo. Tive visões da necessidade de gerenciar servidores e clientes e escrever html para uma interface de usuário. Onde isso acabou é muito mais à frente, com maior segurança, excelente confiabilidade, interface de usuário fantástica, programação de arrastar e soltar e grande potencial de expansão. E tudo isso com muito menos esforço.
Mike
Etapa 9: Adendo - Carregando do Raspbian Stretch Lite
Esta opção evita o bloatware que vem com a versão completa do Raspbian Stretch. A maior parte disso não será necessária ao usar um Pi para automação residencial. No entanto, o Node-Red deve ser instalado.
Prossiga como na Etapa 1, mas usando Raspbian Stretch Lite em vez de Raspbian Stretch.
Em vez da Etapa 2, faça o seguinte:
sudo apt -y install npm
npm -v deve retornar: 1.4.21 ou posterior
sudo npm install -g n
sudo n 8.9.0
Agora podemos usar o gerenciador de pacotes de nó para instalar o Node-Red:
sudo npm install node-red --global --unsafe-perm
Isso gerará algumas mensagens de erro por causa de um endereço incorreto. O sistema, no entanto, faz uma "compilação do código-fonte" para corrigir esse problema. Se você repetir a instrução acima (não é necessário), os erros não ocorrerão.
Agora temos o Node-Red e seus pacotes de suporte instalados e podemos passar para a Etapa 3, carregando o mosquitto.
Vice-campeão no concurso sem fio