Substituindo o firmware original do Sonoff

Substituindo o firmware original do Sonoff

O Sonoff é uma solução simples e prática para acionamento de cargas AC. O mesmo já conta com um firmware que possui recursos bem interessantes e ainda conta com o app eWeLink que funciona em dispositivos móveis Android e iOS, e permite controlar o módulo remotamente através da internet. Certo… Mediante estas informações, então por qual motivo eu faria a substituição de firmware do Sonoff?! Bom… continua a leitura aí, pois vou te mostrar qual a justificativa pra isso.

Se tratando de substituição de firmware do Sonoff, você provavelmente deve estar pensando:

“Por qual motivo eu devo trocar o firmware do Sonoff?”

Se você já possui um sistema de gerenciamento e controle de cargas AC e tudo neste sistema está centralizado, qualquer nova solução que você adicionar, deve ter a possibilidade de ser controlada pelo seu sistema. Obviamente não vai ser interessante ter que controlar um dispositivo deste sistema através de um software externo. Caso você esteja utilizando um protocolo de comunicação específico, é ideal que o dispositivo que vai incluir em seu sistema, também possa ser controlado por tal protocolo. O Sonoff rodando o firmware original de fábrica, não vai permitir que você possa inseri-lo em um sistema alternativo, ou seja, você poderá usar apenas o app eWeLink ou outra ferramenta liberada pelo fabricante. Além disso, considerando que você esteja controlando uma lâmpada através do Sonoff, só irá conseguir fazer o acionamento da lâmpada através do aplicativo ou pelo push button que o módulo possui. Se quiser utilizar um interruptor pulsador, por exemplo, para que tenha um controle a mais sobre a lâmpada, isto não será possível, a não ser que faça uma pequena gambiarra e solde um interruptor pulsador em paralelo com o push button do módulo.

Portanto, a substituição de firmware do Sonoff vai te dar mais liberdade para utilizar o módulo dentro do seu próprio sistema ou em sistemas desenvolvidos por terceiros.

O mais interessante é que a substituição de firmware é um procedimento simples. Se você já está familiarizado com o envio de códigos ao ESP8266, então vai ser mais fácil ainda carregar outro código no Sonoff.

Para demonstrar esse procedimento de substituição de firmware do Sonoff, vou utilizar o código de um webserver simples, onde vamos ter uma página web que terá um botão para ligar e desligar o relé e consequentemente acender e apagar a lâmpada conectada ao Sonoff.

ATENÇÃO: A SUBSTUIÇÃO DO FIRMWARE PADRÃO DE FÁBRICA DO SONOFF É UM PROCESSO IRREVERSÍVEL! OU SEJA, APÓS SUBSTITUIR O FIRMWARE ORIGINAL, NÃO HÁ COMO FAZER A INSTALAÇÃO NOVAMENTE E O MÓDULO NÃO IRÁ MAIS FUNCIONAR COM O APLICATIVO eWeLink. PORTANTO, SÓ EXECUTE OS PROCEDIMENTOS AQUI ENSINADOS, CASO VOCÊ REALMENTE QUEIRA UTILIZAR FIRMWARES DE TERCEIROS OU UTILIZAR SEUS PRÓPRIOS CÓDIGOS. FAÇA POR SUA CONTA E RISCO!

Você vai precisar dos seguintes itens:

Relé WiFi Interruptor Inteligente Sonoff
Barra de pinos fêmea
Ferro de solda e estanho
Adaptador Conversor USB Serial TTL PL2303HX (ou outro conversor USB serial)
Cabos jumper macho-fêmea
– Lâmpada
– Receptáculo (boquilha)
– Cabo paralelo de 1,5mm ou 2,5mm
– Tomada (Rede alternada de 127V)
– Roteador com conexão WiFi

ATENÇÃO: FAÇA OS PROCEDIMENTOS COM O SONOFF DESCONECTADO DA REDE ELÉTRICA AC.

Se estiver utilizando o PL2303HX e o mesmo não é reconhecido no seu Windows, acesse a postagem Conversor USB Serial TTL PL2303HX – Instalação no Windows 10, veja como resolver e em seguida retorne para continuar.

Conforme mencionado na postagem Conhecendo o Sonoff Relé WiFi para Automação Residencial, o Sonoff é baseado no ESP8266. Na tabela abaixo você pode ver quais pinos do ESP8266 são utilizados no Sonoff e suas funções:

img01_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

Portanto, para substituir o firmware padrão do módulo, basta conectar o ESP8266 do Sonoff ao computador através de um conversor USB serial e enviar o novo código / firmware através da IDE do Arduino.

Na imagem abaixo temos a parte superior da placa do Sonoof e em destaque estão os pinos referente ao ESP8266:

img02_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

Veja que a placa já conta com os terminais 3.3V / RX / TX / GND / GPIO14. Para poder fazer as conexões nestes terminais, é necessário soldar uma barra de pinos. Veja na imagem abaixo que soldei uma barra fêmea de 5 vias:

img03_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

Com a barra de pinos soldada, basta conectar os terminas do ESP8266 ao conversor USB serial e fazer o carregamento do novo código.

Veja na tabela abaixo como deve ser feita a conexão entre o conversor USB serial e o Sonoff:

img04_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

Se precisar conferir a ordem dos pinos no Sonoff, basta acessar esta imagem.

Para fazer o envio de códigos ao ESP8266 é necessário que a GPIO0 esteja conectada ao GND pelo menos quando conectar o adaptador a porta USB. Portanto, mantenha pressionado o botão do Sonoff, conecte o conversor USB serial ao computador e em seguida solte o botão. Veja abaixo como deve ser feito:

img05_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

Ao realizar este procedimento o ESP8266 entra em modo de gravação.

Se você utiliza alguma versão da IDE do Arduino inferior a 1.6.12, acesse a postagem Wemos D1 – Configurando a IDE do Arduino, veja como instalar o pacote ESP8266 na IDE e em seguida retorne para continuar.

Copie o código abaixo e cole na IDE do Arduino:

No código você deverá inserir o nome da sua rede WiFi na linha const char* ssid = “NOME DA SUA REDE WIFI”; e a senha deverá inserir na linha const char* password = “SENHA DA SUA REDE WIFI “;:

img06_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

O código está configurado para utilizar IP fixo, portanto, você terá que inserir mais algumas informações:

img07_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

– No “IPAdress ip”, coloque um endereço de IP livre da sua rede;

– No “IPAdress gateway”, coloque o endereço de gateway da sua rede;

– No “IPAdress subnet”, coloque as informações de máscara de sub-rede da sua rede.

Se você não sabe como ter acesso a essas informações, sugiro que leia a postagem Descobrindo a faixa de IP do seu roteador. De posse das informações, preencha os parâmetros no código e prossiga.

No menu “Ferramentas” da IDE, selecione a opção “Placas”, role a lista e selecione “Generic ESP8266 Module”:

img08_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

Ainda no menu “Ferramentas”, configure o “Flash Mode” como DOUT e “Flash Size” como 1M (64K SPIFFS). Veja na imagem abaixo como deverá ficar:

img09_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

No menu “Ferramentas”, selecione a opção “Porta” e marque a porta COM em que sua placa foi alocada:

img10_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

Veja que no meu caso a placa foi alocada na COM20, porém, o seu módulo pode ter sido alocado em uma COM de outro valor. Caso não saiba em qual porta COM sua placa foi alocada, basta retornar no menu Iniciar do Windows, acessar a opção Dispositivos e Impressoras e verificar a porta em que seu conversor USB serial está conectado, retornar na IDE e selecionar a porta COM.

Em seguida, clique no botão para enviar o código ao ESP8266 e aguarde o carregamento.

OBS: após enviar um código ao ESP8266, sempre que for enviar um novo código será necessário desconectar o conversor da USB, colocar a GPIO0 conectada ao GND (manter pressionado o botão do Sonoff antes de conectar o conversor USB serial) e inserir o conversor novamente na porta USB. Caso não faça desta forma, irá receber os erros espcomm_sync failed / espcomm_open failed / espcomm_upload_mem failed. Se tentar carregar o código no ESP8266 sem o mesmo estar em modo de gravação, também irá receber o erro:

img11_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

Após o arquivo ser carregado no ESP8266, abra o navegador, digite o endereço de IP (IPAdress ip) que você inseriu no código e a página web será aberta:

img12_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

A página web possui um botão que será responsável por ligar / desligar o relé do Sonoff.

Com a página web funcionando, basta desconectar o conversor USB serial do computador, desconectar os cabos do Sonoff, colocar a tampa do módulo e em seguida conecte a alimentação da rede AC aos terminais do borne de entrada (input) e depois conecte aos terminais de saída (output) os fios que serão conectados ao receptáculo da lâmpada:

ATENÇÃO: MUITO CUIDADO AO EXECUTAR PRÁTICAS QUE ENVOLVAM TENSÃO / CORRENTE ALTERNADA! FAÇA TODAS AS LIGAÇÕES COM O CIRCUITO COMPLETAMENTE DESLIGADO E ANTES DE FAZER OS TESTES VERIFIQUE CADA UMA DAS LIGAÇÕES PARA ELIMINAR A POSSIBILIDADE DE CURTO ENTRE FASE / NEUTRO OU FASE / FASE.

img13_substituindo_o_firmware_original_do_sonoff_arduino_esp8266_nodemcu_automacao_mqtt_web_android_app_ewelink_gravar_upgrade

Novamente abra o navegador, digite o endereço de IP (IPAdress ip) que você inseriu no código e a página será carregada. Pressione o botão para acender / apagar a lâmpada e veja que o estado atual é atualizado na página.

Você pode acessar a página através de um smartphone ou tablet. Veja abaixo o resultado final após a substituição do firmware original do Sonoff:

Nesta postagem não utilizei a GPIO14, contudo, você pode modificar o código e utilizar esta GPIO para conectar um interruptor pulsador e fazer o acionamento do relé ou pode também conectar um sensor de temperatura. O LED do Sonoff (GPIO13) também não foi utilizado e o botão (GPIO0) foi utilizado apenas para colocar o ESP8266 em modo de gravação.

Agora que você já sabe como fazer a substituição do firmware padrão do Sonoff, ficou fácil inseri-lo no seu projeto de automação residencial para controle de cargas AC sem ter que depender de um aplicativo externo para controle do mesmo. Além disso, você pode utilizá-lo com outras soluções, como por exemplo, o protocolo MQTT, Sonoff-HomeAssistant, Sonoff-Tasmota ou qualquer outro firmware ou código que tenha capacidade de controlar o ESP8266 e fornecer os recursos que você precisa.

Gostou desta postagem? Então deixa seu comentário, dúvida ou sugestão aí embaixo!

Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop

Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.

Obrigado e até a próxima!

Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.

4.9
11


Postagem anterior:
Próxima postagem:
Postagem feita por

Formado em Engenharia da Computação pela Faculdade Presidente Antônio Carlos, fundador e CEO da MasterWalker Electronic Shop. Se preocupa com o aprendizado dos seus clientes e daqueles interessados em aprender sobre Arduino e plataformas embarcadas em geral.

Existem 66 comentários para esta postagem
  1. Carlos Amaral às 18:23

    Amigo
    Muito boa e completa sua explicação.
    Tenho um sistema de automação aqui em casa que envia comandos por Wi-Fi (IP). Você sabe se no firmware original consegue receber comandos via IP??
    Pode ma enviar um exemplo?
    Obrigado

  2. Thiago às 14:04

    Euler, parabéns pelo post, estou dando uma olhada no seu blob e aprendendo bastante, obrigado!

    Uma dúvida, após fazer essa ligação no relê a lâmpada continua funcionando normalmente no interruptor? ou tenho que fazer alguma ligação adicional?

    Abraço!

    • Euler Oliveira Autor às 18:14

      Olá Thiago.

      Agradeço pelo comentário!

      O exemplo utilizado neste artigo se trata apenas de controle através da página web. Para utilizar o interruptor em conjunto com a página web é necessário fazer a implementação.

      Em breve vou publicar o artigo ensinando a utilizar o Sonoff com um aplicativo para dispositivos móveis, onde o controle poderá ser feito de forma remota e também será mantido o uso do interruptor pulsador.

          • Euler Oliveira Autor às 11:50

            Olá Edcarlos.

            Todos os Sonoffs a serem gerenciados pela página, deverão estar com firmware alternativo (código desenvolvido pelo usuário) e deverá ser usado algum protocolo de comunicação que possa unificar todos em uma mesma página. Por exemplo, requisições HTTP em uma página hospedada externamente.

  3. Ezio às 21:46

    Ola, estou com dois modulos sonoff com o botao GPIO0 sem funcionar com o firmware original, ou seja quando pressiono o botao ele aciona a carga e caso mantenho pressionado por 5-7 segundos ele permite realizar o pareamento com a rede wi-fi, e no caso esses dois que tenho não estão fazendo nenhuma das duas funções, ao pressionar não acende a carga muito menos permite parear, haveria alguma outra forma de parear e acionar a carga, sem alterar o firmware original?

  4. Gustavo às 08:15

    Bom dia
    Excelente post!
    Esse sonoff seria a solução que estou procurando mas ao invés de usar um interruptor pulsador eu preciso utilizar um interruptor simples, é possível fazer isso de alguma forma?

    Desde já agradeço sua atenção

  5. BiLL Scorpion às 22:24

    Mas nesse caso aí eu terei que acessar um endereço diferente, abrir uma página diferente para cada Sonoff? Não tem como fazer de uma forma que apareça vários “controles” do Sonoff em uma só pagina?

    • Avenger às 12:09

      Você precisaria colocar em pelo menos um sonoff (ou num servidor/aplicativo) uma página com os comandos pra cada ip de sonoff que você tem. Daí de um sonoff você controla o resto (na verdade controla tudo do cliente web que usar — seu celular ou pc — o sonoff simplesmente ofereceria um “diretório de sonoffs”. Isso numa solução mais simples, mas que precisaria de um pouco a mais pra também pegar o status atual de cada um.

  6. Alian às 23:24

    Olá.
    Parabéns pelo projeto, muito bom.
    Vou tentar fazer aqui.
    Tem como ler a potência que está sendo consumida e fazer uma condição para desarmar e rearmar o rele?

  7. Reginaldo às 20:20

    Parabéns, Euler, pelo trabalho. Muito bem organizado e apresentado de forma bastante objetiva.
    Você não mencionou a integração com dispositivos de comando de voz, como o Alexa. Certamente esse recurso também se perde com a substituição do firmware.
    Aproveitando a oportunidade, eu gostaria de integrar o Sonoff com a placa de comando de aparelhos de ar condicionado tipo Split. Vc tem algum trabalho sobre isso? Ou saberia onde encontrar?
    Saudações e sucesso no seu empreendimento.

  8. Márcio Marques às 07:59

    Bom trabalho Euler!! Mas no final de fazer flash, o meu sonoff só funciona se eu tiver a Alimentação de 3,3V ligada . Ou seja, com a Alimentação 220V não funciona o relé. Tens ideia porque isto acontece? Obrigado

    • Euler Oliveira Autor às 08:51

      Olá Márcio Marques.

      Primeira vez que vejo acontecer isso.

      Sugiro que refaça o procedimento, seguindo a risca os passos mencionados neste artigo.

  9. Cristiano às 09:24

    Ótimo trabalho amigo.parabéns, so tive um.probleminha, o sonoff so funciona se estiver usando a mesma rede em que o mesmo esta conectado, como faço para poder funciona com outro ip externo?

  10. Alexandre às 10:46

    Bom dia, seguindo as dicas do seu blog consegui fazer o Flash do Sonoff 4 canais porem com o firmware “Tasmota” que apresenta algumas funçoes interessantes como mqtt, autenticaçao, todas as versoes do sonoff disponives como o touch e o pro que possuem outras funçoes, agora consigo utilizar os 4 botoes do sonoff independente do software ewlink

  11. Tiago Daros às 21:17

    boa noite!!

    Mestre, tenho uma automação protocolo Zigbee, e minha central tem um IP próprio para controles internos e outro IP para controle Remoto, seria possivel atraves desses modulos Sonoff fazer a alteração de Firmware??? tenho ideia de substituir o Firmware do modulo T1 de 3 gangs..

    abraços

      • tiago daros às 10:27

        Tenho certa dificuldade em expressar o que estou pensando… hahaha

        Vamos lá,

        Hoje eu tenho em minha casa uma Automação gerenciada pelo protocolo ZIGBEE(ontem desmontei um modulo relé, e o codigo do processador ZIGBEE é ETRX357-LRS)

        porem eu comprei uns modulos relé Basico da SONOFF e também o Touch T1, e quero fazer esses modulos sonoff conversar com minha central zigbee, como posso fazer essas alterações??

        abraços!

        • Euler Oliveira Autor às 11:17

          Olá Tiago Daros.

          Numa rápida pesquisa que fiz aqui, não consegui identificar nenhum dispositivo ou meio de comunicar uma rede ZigBee com uma rede WiFi.

          • tiago daros às 16:22

            ola novamente…

            eu tenho outra informação…

            minha central aceita integrar equipamentos via protocolo TCP/IP e HTTP…

            nesse caso conseguiria fazer a integração dos Sonoffs??

            abras

          • Euler Oliveira Autor às 17:51

            Olá Tiago Daros.

            Neste caso é provável que consiga, mas para isto deverá fazer a programação correta do Sonoff/ESP8266 para atender as requisições HTTP vindas da sua central ZigBee.

  12. Emanuel Vidal às 19:17

    Muito bom este seu post estava procurando algo assim bem detalhado, gostei do seu código bem comentado parabéns, minha duvida se vc puder me ajudar, eu estou querendo automatizar a iluminação e outras coisas aqui em casa e fiquei na duvida se o ESP8266 seria o ideal pois comprei um q veio com uma fonte pequena acoplada, um projeto como o Sonoff, só q depois de um tempo ligado eu não consigo mais me comunicar com a placa pelo ip, ela não abre mais a pagina, apesar de estar ligada, só responde depois q eu reinicio a energia, sera q é falha do projeto q eu comprei??, pois tenho medo de compra um monte deste Sonoff e ficar com este problema q inviabilizaria a automação!!! ai vi q vc também postou sobre arduino e acionamento RF, vc acha o arduino e RF mais confiável ou esse Sonoff e bom de fato?? tem relatos sobre o travamento?? q acha posso comprar???

  13. Gilvan de Melo Silva às 13:43

    Ola Euler parabéns pelo seu trabalho eu gostaria de fazer um comentário ou pergunta, comprei um Sonoff básico, o qual funcionou muito bem mais não sei se foi só o meu se é configuração Euler ao faltar força da concessionaria e quando voltar a referida força (faltar de energia elétrica) a carga sera ativada , quer dizer se estiver ligado a um portão o mesmo se abrira, se estiver ligado a uma lampada ela se acendera e assim por diante, a chei uma falha grande, para resolver isto fiz um inversor com relé, se possível me oriente sobre isto.

    • Euler Oliveira Autor às 14:15

      Olá Gilvan.

      Agradeço o reconhecimento!

      É a primeira vez que vejo um relato deste em relação ao Sonoff.

      Infelizmente estou sem nenhum aqui para fazer testes. Mas depois vou pesquisar a respeito e se eu encontrar algo, volto a responder aqui.

  14. Jean às 10:36

    Olá Euler, muito legal o seu trabalho. Sou programador PHP, tive meu primeiro contato com um dispositivo sonoff está semana e imediatamente fiz a aquisição de 4 dispositivos para iniciar o processo de automação em minha casa. rs. Tenho um projeto que talvez possa ser finalizado com um sonoff e firmware customizado, porém sempre que começo a desenvolver a lógica na minha cabeça, me deparo com limitações no hardware do mesmo. Talvez você possa me ajudar… Tenho um sistema de alarme que quando disparado fecha um circuito de 12v que hoje utilizo para sirenes. Preciso detectar quando este circuito está aberto ou fechado e ter o feedback no eWeLink. É possível utilizar o terminal GPIO14 como entrada para me dar este feedback? Na minha cabeça imagino ter que acrescentar um relé auxiliar nesse circuito de 12v e integrar o relé ao terminal. Seria isso?

  15. ELIAS PEREIRA às 11:23

    Olá Euler, teria como integrar este Sonoff com o módulo gerador de pulso (que você vende), para que possa ser utilizado um interruptor convencional para ligar uma lâmpada? Caso afirmativo tem como fazer um vídeo, ou esquema de ligação?

  16. Diego às 15:32

    Olá Jean. Q bom saber q tem alguém prestativo para ajudar. Tenho 6 sonoff ligados em casa. Porém frequentemente a conceção cai e quando tento ligar ou desligar ele da um erro de off line.
    Algumas informações importantes
    Minha internet é estável de 60mb
    A luz do sonoff fica sempre acessa, só apaga e reconecta depois do erro de tentativa de ligar algo.
    Já desativei firewall do roteador
    Já congelei os MAC no roteador
    Não sei mais o que fazer. Estou desanimado do sonoff. Me ajuda? Muito obrigado

    • Avenger às 12:17

      Seu roteador wifi pode estar jogando os bichinhos no chão e não conseguem se alinhar tão rápido. Se tiver à disposição um roteador wifi diferente, de outra marca de preferência, teste com ele.

  17. Patrick às 20:27

    Preciso de uma ajuda. Estou querendo fazer um app para controlar o sonoff. E preciso de uma ajuda para ver como consigo conectar e enviar um comando para ligar e desligar via internet

    • Euler Oliveira Autor às 11:35

      Olá Guilherme.

      Na imagem (https://ibb.co/FbZCg4k) não está escrito “carregando” e sim carregado, ou seja, o código foi carregado com sucesso (100%).

      Quanto ao seu IDE do Arduino apresentar mais informações que as mostradas aqui no Blog, isto se dá devido a nova versão do pacote do ESP8266. Configure apenas as opções conforme a imagem da postagem e as demais você deixa conforme está configurado no seu IDE.

  18. AIRTON às 10:53

    Como testar se o botão do SonOff está pressionado ou não? A ideia é mudar o endereço IP cada vez que pressionar o Botão, permitindo assim enviar o mesmo firmware para mais de um e configurá-los ao ligar.
    Como controlar o led do SonOff, para passar informações de endereço e estado de nonexão?

    • Euler Oliveira Autor às 11:43

      Olá Airton.

      Agradeço pelo comentário!

      Não temos nenhum tutorial que faça estes procedimentos que mencionou, contudo, com base na tabela de pinos do ESP8266 utilizado no Sonoff e que está disponível neste tutorial, você pode fazer a devida programação para executar os procedimentos que deseja.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *