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