top of page
Buscar
  • Foto do escritorSileide Campos

Controlando o Sonoff Mini via HTTP

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.

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

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


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.


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.

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:


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.


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.


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

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


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!!


1.830 visualizações0 comentário

Posts recentes

Ver tudo
bottom of page