Sonoff DIY Mode API Protocol na prática

Sonoff DIY Mode API Protocol na prática

Mesmo o Sonoff sendo uma solução completa de hardware e software, alguns usuários podem possuir sistemas alternativos de automação residencial e necessitam integrar o módulo a estes sistemas e manter as características originais da plataforma. Nesta postagem você vai conhecer o Sonoff DIY Mode API Protocol, um recurso que quando ativado desabilita o Modo eWeLink (acionamento padrão em nuvem) e habilita o Modo DIY dando ao usuário a possibilidade de controlar o módulo via LAN (localmente) através de requisições HTTP com base na API REST do próprio fabricante, e consequentemente abre espaço para integração da plataforma com soluções alternativas de automação residencial e IoT.

Firmwares alternativos

Desde o lançamento da linha Sonoff por parte da iTead, os diversos modelos dos módulos passaram por atualizações, sendo a principal delas a substituição do chip ESP8266 pelo ESP8285. Mesmo a plataforma possuindo o aplicativo eWeLink para controle do módulo, muitos usuários buscam por firmwares alternativos que oferecem mais possibilidades para utilização da placa. Um exemplo de firmware bastante conhecido para o Sonoff é o Tasmota.

O Tasmota é um firmware alternativo para dispositivos baseados no ESP8266 / ESP8285 e que possui uma interface gráfica web com diversas funcionalidades, tais como, conexão com rede WiFi, acionamento de saídas, leitura de entradas, atualização via OTA (Over The Air), controle através de protocolo MQTT, HTPP, serial ou KNX. Se tratando de dispositivos da linha Sonoff, o Tasmota é o firmware alternativo com maior procura para ser instalado nos módulos.

Estes firmwares alternativos substituem completamente o software nativo do módulo, portanto, o Sonoff deixaria de comunicar com os servidores da eWeLink na nuvem e o aplicativo se tornaria inútil. Obviamente, quem procura firmware alternativo para instalar nos módulos é porque busca novas funcionalidades que não estão disponíveis na versão nativa e logicamente já tem total ciência de que o software original será substituído.

Além de novas funcionalidades, o usuário pode ter seu próprio sistema de automação residencial ou IoT e acaba sendo necessário que todos os dispositivos estejam integrados a este sistema, mesmo que localmente. Para usuários mais exigentes pode ser interessante ter a possibilidade de integrar o Sonoff ao seu próprio sistema e manter as características originais do módulo, onde não se faz necessário a mudança para um firmware alternativo. Pensando nisso, a iTead desenvolveu o Sonoff DIY Mode API protocol.

Sonoff DIY Mode API protocol

O Sonoff DIY Mode API protocol é um recurso que permite utilizar requisições HTTP com base na API REST para controle via LAN (localmente) de alguns módulos da linha Sonoff. Ao ativar este recurso o Modo eWeLink (acionamento padrão em nuvem) é desabilitado e o Modo DIY é habilitado. Com o Modo DIY habilitado, o usuário poderá fazer a integração do módulo com soluções alternativas de automação residencial e IoT. Até a data de publicação desta postagem somente os modelos Sonoff R3, Sonoff RF R3 e Sonoff Mini é que estão listados como sendo compatíveis com o Sonoff DIY Mode API protocol. Portanto, se você possui um dos três modelos mencionados acima, poderá ver na prática o funcionamento do Modo DIY.

Considerando que você tenha um dos Sonoffs mencionados acima, para prosseguir você deverá ter o módulo vinculado ao app eWeLink instalado no seu smartphone ou tablet. Aqui no blog temos a postagem Conhecendo o Sonoff Mini DIY Relé WiFi para Automação Residencial onde é falado sobre as características do módulo e como fazer a vinculação com o eWeLink. Apesar da parte de vinculação com o app ser feita com o Sonoff Mini, você pode seguir os passos para vincular outras versões do Sonoff, inclusive o R3 e o RF R3. Siga os passos e após terminar, retorne aqui para continuar.

Com o pareamento entre o Sonoff e o app eWeLink feito, acesse a tela de acionamento do módulo, clique nos “…” e em “Configurações”:

img01_sonoff_diy_mode_api_protocol_na_pratica_rest_json_http_mqtt_arduino_node-red_ibm_watson_ifttt_esp32_raspberry_tasmota_wifi_itead_ewelink_ide_lan_modo_diy

Em versão, deverá constar 3.3.0 ou alguma versão superior. Pode estar disponível um botão para fazer o download da versão atualizada. Ao clicar no botão para atualizar, o módulo ficará offline enquanto atualiza e após o término a conexão será restabelecida. Versões do firmware inferiores a 3.3.0 não possuem o Sonoff DIY Mode API protocol:

img02_sonoff_diy_mode_api_protocol_na_pratica_rest_json_http_mqtt_arduino_node-red_ibm_watson_ifttt_esp32_raspberry_tasmota_wifi_itead_ewelink_ide_lan_modo_diy

Desconecte o módulo da rede elétrica e em seguida remova a tampa do mesmo para ter acesso a placa. Na placa você deve procurar por dois terminais lado a lado que podem estar identificados como SW / OTA:

img03_sonoff_diy_mode_api_protocol_na_pratica_rest_json_http_mqtt_arduino_node-red_ibm_watson_ifttt_esp32_raspberry_tasmota_wifi_itead_ewelink_ide_lan_modo_diy

Junto ao seu Sonoff (compatível com o Modo DIY) você deve ter recebido um pequeno jumper de 2.54mm:

img04_sonoff_diy_mode_api_protocol_na_pratica_rest_json_http_mqtt_arduino_node-red_ibm_watson_ifttt_esp32_raspberry_tasmota_wifi_itead_ewelink_ide_lan_modo_diy

Este jumper deverá ser inserido nos dois terminais para que o Modo eWeLink seja desabilitado e o Modo DIY (Sonoff DIY Mode API protocol) seja habilitado:

img05_sonoff_diy_mode_api_protocol_na_pratica_rest_json_http_mqtt_arduino_node-red_ibm_watson_ifttt_esp32_raspberry_tasmota_wifi_itead_ewelink_ide_lan_modo_diy

Faça novamente a montagem do seu Sonoff com sua respectiva caixa e tampa, e em seguida conecte o módulo na rede elétrica e a uma lâmpada, por exemplo. Você irá notar que o LED da placa vai estar piscando uma vez, pois o mesmo não está conectado a nenhuma rede WiFi.

OBS: após energizar o módulo, o eWeLink não irá funcionar mais. Para habilitar o Modo eWeLink novamente, basta desconectar o Sonoff da rede elétrica e remover o jumper antes de energizar o módulo novamente. Em seguida faça novamente a vinculação do Sonoff com o app eWeLink em seu dispositivo móvel. Lembrando que se habilitar novamente o Modo DIY, você deverá refazer as configurações.

Criando e conectando a um ponto de acesso WiFi

Para configurar a sua rede WiFi no Sonoff será necessário criar um ponto de acesso sem fio para que o módulo possa se conectar. Este ponto de acesso pode ser criado no seu computador caso o mesmo possua conexão WiFi. É importante que o SSID e o PASSWORD da rede sejam configurados da seguinte forma:

SSID (nome da rede): sonoffDiy
PASSWORD (senha da rede): 20170618sn

No Windows basta clicar sobre a sua conexão de rede na barra de tarefas, clicar com o botão direito em “Hotspot móvel” e clicar em “Ir para Configurações”:

img06_sonoff_diy_mode_api_protocol_na_pratica_rest_json_http_mqtt_arduino_node-red_ibm_watson_ifttt_esp32_raspberry_tasmota_wifi_itead_ewelink_ide_lan_modo_diy

Na janela que for aberta clique em “Editar”:

img07_sonoff_diy_mode_api_protocol_na_pratica_rest_json_http_mqtt_arduino_node-red_ibm_watson_ifttt_esp32_raspberry_tasmota_wifi_itead_ewelink_ide_lan_modo_diy

Em “Nome da rede” insira sonoffDiy, em “Senha da rede (pelo menos 8 caracteres)” insira 20170618sn e clique em “Salvar”:

img08_sonoff_diy_mode_api_protocol_na_pratica_rest_json_http_mqtt_arduino_node-red_ibm_watson_ifttt_esp32_raspberry_tasmota_wifi_itead_ewelink_ide_lan_modo_diy

Confira se as informações estão certas e ative o ponto de acesso que acabou de criar:

img09_sonoff_diy_mode_api_protocol_na_pratica_rest_json_http_mqtt_arduino_node-red_ibm_watson_ifttt_esp32_raspberry_tasmota_wifi_itead_ewelink_ide_lan_modo_diy

Aguarde e se tudo estiver OK o Sonoff vai se conectar a este ponto de acesso automaticamente e será mostrado o IP que foi atribuído a ele e o MAC (Endereço físico):

img10_sonoff_diy_mode_api_protocol_na_pratica_rest_json_http_mqtt_arduino_node-red_ibm_watson_ifttt_esp32_raspberry_tasmota_wifi_itead_ewelink_ide_lan_modo_diy

Anote o endereço IP e o MAC mostrados, pois eles serão utilizados posteriormente.

Observe que o LED da placa vai estar piscando duas vezes seguidas, indicando que o módulo está conectado ao ponto de acesso criado.

DIY Mode Tool

Acesse o LINK, vá em “tool”, clique em “tool_01DIY85(3.3.0).exe” e na tela seguinte clique em “Download” para baixar a ferramenta.

O DIY Mode Tool é apenas uma ferramenta simples para testes do módulo localmente.

Feito o download, dê dois cliques sobre a ferramenta baixada para abrir o DIY Mode Tool:

img11_sonoff_diy_mode_api_protocol_na_pratica_rest_json_http_mqtt_arduino_node-red_ibm_watson_ifttt_esp32_raspberry_tasmota_wifi_itead_ewelink_ide_lan_modo_diy

1 e 6: botões para acionamento do módulo;

2 e 7: define qual será o estado em que o módulo será acionado quando for ligado. A opção “Power-on-state-KEEP” configura para o módulo aplicar o último estado antes de ter sido desenergizado;

3 e 8: define um tempo para que o módulo permaneça acionado e altere o estado;

4: ID do módulo para ser utilizado no envio das requisições HTTP;

5: opção para alterar o nome do módulo;

9 e 11: intensidade do sinal WiFi recebido pelo módulo;

10: sequência de informações sobre o módulo selecionado;

12: opção para carregar um firmware no módulo via OTA (Over The Air);

13: opção para alterar o SSID e PASSWORD padrão de conexão do módulo. Nesta opção faremos a configuração da rede WiFi doméstica que será utilizada para conexão do módulo;

Exceto a opção para carregar firmware via OTA e a opção para alterar os dados da rede WiFi, teste as demais clicando sobre elas.

Envio de requisições HTTP através da API REST

Faça download do Advanced REST Client e em seguida faça a instalação:

https://install.advancedrestclient.com/install

Através do Advanced REST Client é possível fazer testes do Sonoff DIY Mode API protocol. Todas as funcionalidades disponibilizadas no DIY Mode Tool podem ser executadas através de requisições HTTP, contudo, para esta postagem será utilizada somente a requisição para acionamento do módulo.

Com o Advanced REST Client aberto, em “Method” selecione POST e em “Request URL” você deverá inserir a URL no formato:

http://[ip]:[port]/zeroconf/switch

Em “[ip]” você deve inserir o endereço IP que foi atribuído ao seu Sonoff e em “[port]” deverá inserir 8081. No meu caso o Sonoff recebeu o IP 192.168.137.192, logo, a URL a ser inserida em “Request URL” será:

http://192.168.137.192:8081/zeroconf/switch

Selecione a aba “Body”, em “Body content type” selecione application/json e no container “FORMAT JSON / MINIFY JSON” insira o trecho abaixo:

No trecho de código, em “deviceid” você deve inserir o ID do seu Sonoff dentro das aspas duplas. No DIY Mode Tool você pode verificar o ID do seu módulo.

Após a inserção das informações você terá uma tela similar a imagem abaixo:

img12_sonoff_diy_mode_api_protocol_na_pratica_rest_json_http_mqtt_arduino_node-red_ibm_watson_ifttt_esp32_raspberry_tasmota_wifi_itead_ewelink_ide_lan_modo_diy

Clique no botão “SEND” para que a requisição seja enviada ao Sonoff. Se tudo estiver OK a lâmpada conectada a saída do módulo irá ligar e abaixo do contêiner irá aparecer o retorno de informação da requisição executada:

img13_sonoff_diy_mode_api_protocol_na_pratica_rest_json_http_mqtt_arduino_node-red_ibm_watson_ifttt_esp32_raspberry_tasmota_wifi_itead_ewelink_ide_lan_modo_diy

OBS: caso a requisição enviada esteja com algum dado errado na URL ou no Body, o botão “SEND” irá permanecer como “ABORT”. Clique sobre o botão e verifique se inseriu as informações corretas.

No container “FORMAT JSON / MINIFY JSON”, em “switch” mude de “on” para “off” e clique em “SEND” novamente para que a lâmpada seja apagada.

Se você quiser testar outras requisições HTTP de acordo com as funcionalidades disponíveis no DIY Mode Tool, acesse o repositório Sonoff Devices DIY Tools e leia a documentação que está disponível e que traz exemplos para execução das requisições.

Conectando o Sonoff a sua rede WiFi

Retorne ao DIY Mode Tool, selecione o dispositivo e clique na opção “Change SSID Password” no lado inferior direito da ferramenta. Na janela que for aberta, em “SSID” insira o nome da sua rede WiFi, em “password” insira a senha da mesma e clique em OK:

img14_sonoff_diy_mode_api_protocol_na_pratica_rest_json_http_mqtt_arduino_node-red_ibm_watson_ifttt_esp32_raspberry_tasmota_wifi_itead_ewelink_ide_lan_modo_diy

Uma mensagem será exibida na tela, clique em OK. Aguarde alguns instantes para que o Sonoff se conecte a rede WiFi. Veja o LED do módulo, pois quando ele estiver piscando duas vezes seguidas significa que o módulo se conectou a nova rede. Vá até a janela de configuração do Hotspot móvel e clique na opção para desativar o ponto de acesso, pois ele não será mais necessário. No DIY Mode Tool você pode clicar nas opções e testar a comunicação com o módulo a partir desta nova conexão que foi configurada.

Verificando o novo IP e definindo um IP fixo dentro da rede

O Sonoff está conectado a sua rede WiFi, porém, você não sabe qual IP foi atribuído a ele. Faça download do Advanced IP Scanner e em seguida faça a instalação:

https://www.advanced-ip-scanner.com/br/

A partir do Advanced IP Scanner será possível verificar o IP atribuído a cada dispositivo conectado na sua rede sem fio. Abra o programa, clique no botão “Verificar” e aguarde o escaneamento ser feito:

img15_sonoff_diy_mode_api_protocol_na_pratica_rest_json_http_mqtt_arduino_node-red_ibm_watson_ifttt_esp32_raspberry_tasmota_wifi_itead_ewelink_ide_lan_modo_diy

Terminando o escaneamento, a partir da coluna “Endereço MAC” você deverá encontrar na lista o dispositivo que possui o endereço MAC que anotou anteriormente. Ao identificar o dispositivo, verifique qual endereço IP foi atribuído a ele e anote este IP. Veja na imagem acima que no meu caso o módulo recebeu o IP 192.168.2.139.

Volte ao Advanced REST Client, em “Request URL” remova o IP que constar na URL, insira este novo IP que foi atribuído ao Sonoff, no container “FORMAT JSON / MINIFY JSON”, em “switch” mude para “on” ou “off” de acordo com o estado atual da lâmpada e clique em “SEND”. Se tudo estiver OK a lâmpada irá alterar o estado.

Se você quiser definir um IP fixo para o Sonoff, verifique nas configurações do seu roteador se há a alguma opção na parte de DHCP para fazer reserva de endereço IP. Na maioria dos roteadores há esta opção e você pode informar o endereço MAC do dispositivo e definir um endereço IP fixo para o mesmo, logo, sempre que este dispositivo se conectar a rede WiFi ele irá receber o mesmo IP. Procure utilizar um final (três últimos dígitos) de IP com valor mais alto para não correr o risco de dois dispositivos na sua rede assumirem o mesmo endereço IP, por exemplo, .140, .190, .200 até no máximo .254. Definindo um IP fixo, você não terá que se preocupar em ficar verificando qual o IP foi atribuído ao módulo sempre que ele for conectado a rede sem fio.

Com o IP fixo definido, faça um novo teste de envio de requisição HTTP a partir do Advanced REST Client.

Acionamento do Sonoff através do ESP32

Utilizando o Modo DIY você pode fazer o acionamento do Sonoff a partir de qualquer recurso que permita o envio de requisições HTTP. Portanto, é possível fazer o acionamento do módulo a partir de outras plataformas microcontroladas que estejam conectadas a internet ou a sua rede local. Você pode utilizar, por exemplo, um Raspberry, NodeMCU ESP8266, Arduino com conexão ethernet ou WiFi ou o ESP32.

Como forma de demonstrar uma aplicação real do Modo DIY para que módulo possa ser integrado com outras plataformas, optei por utilizar um ESP32 conectado a mesma rede que o Sonoff. O código carregado no ESP32 através do IDE do Arduino, basicamente irá enviar as requisições HTTP via POST sempre que o botão for pressionado e consequentemente o módulo será acionado e a lâmpada conectada ao mesmo irá acender ou apagar.

Monte o esquema de ligação conforme a imagem abaixo e deixe apagada a lâmpada conectada ao Sonoff:

img16_sonoff_diy_mode_api_protocol_na_pratica_rest_json_http_mqtt_arduino_node-red_ibm_watson_ifttt_esp32_raspberry_tasmota_wifi_itead_ewelink_ide_lan_modo_diy

Para fazer a instalação do IDE do Arduino basta acessar a postagem Arduino – Instalação e Configuração da IDE no Windows e em seguida retornar para continuar.

Considerando que você já tenha o pacote de placas do ESP32 instalado no ambiente de programação do Arduino, copie o código abaixo e cole no IDE:

No código você deverá inserir o nome da sua rede WiFi na linha const char* ssid = “NOME DA SUA REDE WIFI”;, a senha deverá inserir na linha const char* password = “SENHA DA SUA REDE WIFI“;, em String enderecoIp = “ENDEREÇO IP DO SONOFF”; deverá inserir o endereço IP atribuído ao Sonoff (clique AQUI e veja como verificar o IP) e em String idSonoff = “ID DO SONOFF”; deverá inserir o ID do Sonoff (clique AQUI e veja como obter o ID).

img17_sonoff_diy_mode_api_protocol_na_pratica_rest_json_http_mqtt_arduino_node-red_ibm_watson_ifttt_esp32_raspberry_tasmota_wifi_itead_ewelink_ide_lan_modo_diy

Conecte o ESP32 ao computador, leia os comentários em cada linha do código para que você possa compreender o funcionamento e em seguida no menu “Ferramentas” do IDE, selecione a opção “Placas”, role a lista e selecione “Esp32 Dev Module”.

No menu “Ferramentas”, selecione a opção “Porta” e marque a porta COM em que sua placa foi alocada. 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 sua placa está conectada, retornar no IDE e selecionar a porta COM.

Clique no botão para enviar o código ao ESP e aguarde o carregamento.

Terminado o carregamento do código na placa, basta pressionar o botão conectado ao ESP32 e se tudo estiver OK o Sonoff irá acender ou apagar.

No vídeo abaixo você pode ver o resultado final do acionamento do Sonoff a partir das três formas que foram mostradas nesta postagem:

Com base nas informações mostradas nesta postagem você pode partir para novas implementações com o Modo DIY em sistemas de automação alternativos que permitam o uso de REST API. Uma outra forma de acionar o módulo localmente através de uma interface web é usando Node-RED, onde poderá fazer o fluxo de programação para acionamento do Sonoff e de forma bem simples criar um dashboard (interface gráfica) para ser acessado através de um navegador web em seu computador ou smartphone, por exemplo.

No repositório da iTead no GitHub você pode encontrar a documentação para uso do Modo DIY e que foi base para desenvolvimento desta postagem.

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
Perfil no Instagram: https://www.instagram.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.



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 18 comentários para esta postagem
  1. Mauricio às 16:26

    Boa tarde,

    Estou automatizando minha casa com o sonoff mini e gostei muito dessa publicação.
    Tenho uma dúvida. No modo DIY do Sonoff mini ele responde aos comandos nos bornes s1 e s2?
    Por exemplo, eu tenho uma lampada e ela é comandada, tanto pelo eWelink como por um interruptor comum, ligado ao S1 e S2. Eles deixam de funcionar no modo DIY? Eu tenho que programar a resposta do sonoff mini com base no estado desses sinais, S1 e S2 ou não é necessário?

    Obrigado.

    • Euler Oliveira Autor às 18:04

      Olá Mauricio.

      Agradeço pelo comentário!

      Mesmo no Modo DIY o interruptor conectado aos terminais S1 e S2 permanecem funcionando normalmente.

      Todas as informações que tenho sobre o Modo DIY estão nesta postagem. Recomendo que leia a documentação do Modo DIY.

  2. Gustavo às 23:29

    Olá Euler,

    boa noite.

    Tem como fixar o IP address no Sonoff via rest api? (IP/Mask/Gateway)

    sabe se o Sonoff tem restrição a responder a ping?

    Obrigado antecipadamente.

    Att,
    GUSTAVO

  3. Pablo às 10:28

    Bom dia Euler.
    Parabéns pelo fórum. Muito bem explicado.

    Sabe me dizer se eu consigo fazer o factory reset no modo API protocol?
    Pergunto isso, pois dois dos meus não estão respondendo a nenhum comando ( e aparece offline, na lista de dispositivos no aplicativo eWeLink). O led pisca 5 vezes seguidas e apaga (fica em loop).
    Mesmo pressionando o botão por 5 segundos, o reset não é feito e ele não entra em modo de pareamento.

    • Euler Oliveira Autor às 11:53

      Olá Pablo.

      Agradeço pelo comentário!

      Sobre o reset de fábrica eu não sei te dizer.

      O ideal é que entrem contato com a iTead ou eWeLInk e relate este problema que está tendo para que eles possam analisar e te dar um retorno.

      • Pablo às 12:22

        Eu abri um pedido de suporte na iTead.
        Entraram em contato comigo por e-mail e me pediram um vídeo do sonoff.

        Envie o vídeo e me enviaram a resposta:

        Dear Pablo Araujo,

        ​The device is broken.

        Could you please provide your order ID if bought it at our official store:www.itead.cc.

        If you bought it at our official store, we can send you a replacement.

  4. Gustavo às 08:37

    Bom dia. uma pergunta sobre o sonoff. Tenho alguns sonoffs que não estão entrando em modo pareamento apos troca de rede wifi. Tem algum procedimento para retornar as configurações de fábrica?

  5. Bruno às 15:09

    Tenho uma dúvida: consigo integrar com uma API que está na internet? Gostaria de usar o voiceflow para controlar o meu sonoff mini. Neste caso, basta trocar o ip para o da internet? A porta continua a mesma?

Deixe uma resposta

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