top of page

Controlando o Sonoff Mini via HTTP

  • Foto do escritor: Sileide Campos
    Sileide Campos
  • 23 de fev. de 2021
  • 5 min de leitura

Atualizado: 28 de fev. de 2021

Fala galera, blza?

Resolvi montar um passo a passo de como controlar o Sonoff Mini pelo Delphi, ativando o Sonoff DIY Mode API Protocol


A Sonoff expandiu bastante nos últimos anos e vem ganhando o mercado de automação pela facilidade de configuração e instalação. Já existem vários tipos de dispositivos disponíveis para controlar uma diversidade de equipamentos no site deles: https://sonoff.tech/


Quando o meu Sonoff chegou, eu abri para ver a parte eletrônica (é quase um hobby hehe) e foi aí que eu descobri que ele utilizava um microcontrolador da Espressif; das versões que eu já vi ou li sobre, utilizam a Esp8285, Esp82866 e a Esp32; Mas a melhor parte foi descobrir os pinos TX e RX... e aí eu resolvi conectá-los ao computador utilizando o FTDI para tentar atualizar a firmware dele.


[IMPORTANTE] Uma vez que a firmware é substituída, o Sonoff não volta à versão oficial do fabricante!! Ou seja, perde-se a comunicação com o app da eWeLink.


A IDE do arduino já possui a placa "ITEAD Sonoff" disponível para conexão, caso a IDE já esteja configurada com as placas gerenciadas pelo arquivo .json da esp8266.

Então, eu atualizei a firmware com um código que eu já utilizo para realizar a automação dos meus dispositivos aqui em casa e que eu consigo controlar pela minha aplicação Delphi; O controle continuou disponível pelo botão que já vem nela e também é detectado / controlado pela Alexa.


Porém, as versões mais novas podem ser controladas através da API Rest disponibilizada pela própria fabricante.

ree

Essas são as versões suportadas para que possamos fazer esse procedimento [Mini, RFR3 e BasicR3 ], então se a sua Sonoff for de outro modelo/versão, a alternativa para controle pode ser a da troca da firmware como eu fiz na minha 1ª experiência com a Sonoff.


O Modo DIY é um recurso disponibilizado que nos permite controlar o Sonoff via requisições HTTP; após a ativação desse modo, a conexão com o app eWelink é desabilitado, logo o controle pelo mesmo não funciona e consequentemente, o controle pela Alexa também não funciona. Porém, isso nos permite controlá-lo via requisições HTTP pela nossa aplicação Delphi. Com essa forma de controle, sem realizar a atualização da firmware pela API, o Sonoff pode volta a funcionar com o app da eWeLink, basta resetar o modo DIY e eu irei explicar com mais detalhes.


Vamos lá então...


Antes de começar a mexer em código, vocês vão precisar abrir o Sonoff de vocês também hehe

ree

O Sonof Mini tem dois pinos nomeados de OTA e GND em que se faz necessário colocar um jumper.

ree
ree

A minha não tinha os pinos soldados, então talvez vocês precisem soldar ou levar para alguém que saiba hehe [A minha sugestão é que a solda seja aplicada do mesmo lado da placa que é mostrado na imagem, para evitar avarias no circuito😉]

Após deixar o Sonoff como mostrado na imagem é só seguir os seguintes passos para configurar:


1. Ligue o sonoff

O esquema de ligação é bem simples, e apenas para fazermos os testes, faça a conexão do N(in) e L(in) como indicados na imagem.

ree
ree

2. Caso já tenha conectado ele no app da eWeLink, pressione o botão por 5 segundos, isso fará com que o sonoff perca a conexão com o app.

3. Pressione o botão por mais 5 segundos.

ree

O led azul começará a piscar, porém precisamos que ele pisque continuamente na mesma frequência.

Caso isso não aconteça, então pressione o botão por mais 5 segundos. Talvez você tenha que repetir esse passo ou prolongar o pressionar do botão até ver o led piscando continuamente na mesma frequência.

Aqui aconteceu do led piscar 3 vezes, dar uma pausa curta e voltar a piscar 3 vezes e eu tive que segurar o botão por mais 5 segundos para conseguir continuar.


A configuração do piscar do led, indica que o Sonoff entrou em modo de configuração, modo AP, logo uma conexão WI-FI será criada e disponibilizada e neste mesmo modo de configuração, o app da eWeLink poderá detectar seu dispositivo, então caso queira voltar o controle via app, então é só resetar para essa configuração.


4. Encontre uma nova rede WI-FI disponível com o prefixo: "ITEAD" junto com o nome do seu dispositivo. Aqui apareceu da seguinte forma:

ree

A rede demorou um pouco para aparecer, se ela não estiver disponível depois de um tempo, repita o passo 3; Caso ela suma, repita o passo 3 também;

Anote o nome do seu dispositivo, iremos precisar dele para realizar as requisições HTTP.


Por fim, conecte-se à rede. A senha padrão é "12345678"


5. Com a conexão estabelecida, acesse o seguinte endereço: http:\\10.10.7.1

Uma tela de configuração de WI-FI será mostrada, onde deve-se colocar a rede a qual o sonoff ficará conectada, a rede WI-FI da sua casa, por exemplo.


6. Pronto, o sonoff já está conectado à sua rede e pronto para ser controlado, mas antes, precisamos saber o IP adquirido pelo mesmo.

Você pode verificar nas configurações do seu roteador qual o novo dispositivo que foi conectado e pegar o IP ou baixar algum software para mapear os dispositivos conectados. Eu utilizei esse: https://www.advanced-ip-scanner.com/br/

Ele pode aparecer com o nome do fabricante Expressif, mas aqui apareceu com o nome vazio (em vermelho), para ter certeza basta desconectar e verificar qual dispositivo aparece como inativo.

ree

7. Agora sim!!!! Vamos abrir o rest debugger para deixar a brincadeira mais divertida.

  • Todos os métodos são POST;

  • A porta padrão de conexão é a 8081;

  • O retorno é no formato json.

Logo, a configuração fica da seguinte maneira:

URL: http://[ip_do_sonoff_na_sua_rede]:[8081]/zeroconf/[servico]


Os serviços estão detalhados abaixo:

-------------------------------------------

----------------------------------------------------------------------------------

WIFI: CONFIGURAÇÃO WIFI fazer o teste antes sem a info do device

URL: http://[ip_do_seu_sonoff]:8081/zeroconf/wifi

BODY:

{ "deviceid": "[id_dispositivo]",

"data": {

"ssid": "network_name",

"password": "secret password"

}

}


----------------------------------------------------------------------------------

INFO: INFORMAÇÕES DO DEVICE

URL: http://[ip_do_seu_sonoff]:8081/zeroconf/info

BODY:

{ "data": {} }


----------------------------------------------------------------------------------

SWITCH: MUDANÇA DE STATUS / ACIONAMENTO

URL: http://[ip_do_seu_sonoff]:8081/zeroconf/switch

BODY:

{ "data": {"switch": "on" } }

ou

{ "data": {"switch": "off" } }


----------------------------------------------------------------------------------

STARTUP: MUDANÇA DO ESTADO DE SAÍDA QUANDO É ENERGIZADO

URL: http://[ip_do_seu_sonoff]:8081/zeroconf/startup

BODY:

{ "data": {"startup": "on" } }

ou

{ "data": {"startup": "off" } }

ou

{ "data": {"startup": "stay" } } //mantém o estado atual


----------------------------------------------------------------------------------

SIGNAL_STRENGTH: OBTÉM A INTENSIDADE DO SINAL

URL: http://[ip_do_seu_sonoff]:8081/zeroconf/signal_strength

BODY:

{ "data": {} }


----------------------------------------------------------------------------------

PULSE: ATIVA O MODO PULSO - DETERMINANDO O TEMPO DA AÇÃO

Exemplo: Ao Indicar o pulse on com 1000ms, e então enviar o comando

switch on, o sonoff vai ligar e após 1 segundo irá desligar


URL: http://[ip_do_seu_sonoff]:8081/zeroconf/pulse


Parâmetro: [pulse]

Tipo: Inteiro

Delay milisecond(500-36000000)


BODY:

{ "data": {"pulse":"on", "pulseWidth":pulse} }

OU

{ "data": {"pulse":"off"} }


----------------------------------------------------------------------------------

OTA_UNLOCK: DESBLOQUEIA A FUNÇÃO DE ATUALIZAÇÃO VIA OTA

URL: http://[ip_do_seu_sonoff]:8081/zeroconf/ota_unlock

BODY:

{"sequence":"", "deviceid":"", "data":{}}"


----------------------------------------------------------------------------------

OTA_FLASH: ATUALIZAÇÃO VIA OTA FLASH

URL: http://[ip_do_seu_sonoff]:8081/zeroconf/ota_flash

BODY:

{"deviceid":"", "data":{"downloadUrl": "http://192.168.15.15/sonoff-basic.bin\", "sha256sum": "74ab67860bc6813b1f023355afa994d3935fb989b6400fc0145d507cc06d60ee" }}"


O parâmetro sha256sum é o checksum (hash) da nova firmware, utilizado para verificar a integridade do arquivo.

O tamanho máximo do arquivo é 508K.


Possíveis retornos de erro:

- 403: Falha devido ao não desbloqueio da função OTA. Execute o comando ota_unlock.

- 408: Timeout no pre-download da firmware.

- 413: O tamanho da firmware é maior que o permitido para o dispositivo.

- 424: Falha ao baixar a firmware que podem ter sido ocasionados por problemas na rede, link de download incorreto, etc.

- 471: Falha ao verificar a integridade do arquivo junto ao checksum. Reiniciar o dispositivo causará problema de bricking.


-------------------------------------------

ree

Requisição e retorno das informações do dispositivo.


ree

Requisição e retorno do acionamento do dispositivo



[Existe uma versão de firmware em substituição à do fabricante chamada Tasmota,

eu ainda não testei ela, mas ela é bastante utilizada pela comunidade.]


Para mais informações: http://developers.sonoff.tech/sonoff-diy-mode-api-protocol.html


No vídeo abaixo eu mostro como fazer os testes com o REST Debugger e como exportamos as configurações para enviar os comando HTTP pelo Delphi.




Se inscreva no canal, curta o vídeo e ative o sininho para ficar por dentro das próximas postagens 😎


Até breve!!


 
 
 

Comentários


Formulário de Inscrição

Obrigado pelo envio!

  • Facebook
  • LinkedIn
  • YouTube

©2020 por MakerDelphi. Orgulhosamente criado com Wix.com

bottom of page