SONOFF-DIY-OTA-FIRMWARE
Processo da linha de comando para fazer upload de um novo firmware sobre os dispositivos Air to Sonoff DIY usando a API REST http://developers.soff.tech/basicr3-rfr3-mini-http-api.html.
Criado usando o Python 3.8 no Ubuntu 20.04 e testado no Sonoff Basic R3 e Sonoff Mini.
O dispositivo Sonoff deve estar no modo DIY e na mesma rede (sonoffdiy) com o computador executando esse script.
Isso requer:
- DIY 1.0:
- Jumper nos pinos designados
- WiFi Network com SSID: SonOffdiy e senha: 20170618SN
- DIY 2.0: Verifique http://developers.soff.tech/soff-diy-mode-api-protocol.html
Uso recomendado:
Appimage:
- Se no Linux, faça o download e execute a página Appimage na página de lançamentos.
Ambiente Virtual Python (Linux & Windows):
- Crie um ambiente virtual (venv ou conda ou outra coisa):
python3 -m venv /path/to/new/virtual/environment
ou
conda create -n <environment_name> python=3.8
- Ative o ambiente de acordo com o seu ambiente virtual.
- Instale as dependências:
pip3 install -r requirements.txt
- Execute o script:
Os comandos podem diferir do Windows.
Não tente flash firmware maior que 508kb. Use algo como o tasmota-lite.bin e, posteriormente, em Tasmota, pisque o firmware completo.
Etapas do processo:
- Faça o download do arquivo de firmware (por exemplo, tasmota-lite.bin).
- Execute o script main.py.
- Aguarde até que seu dispositivo seja descoberto. Nesse caso, a descoberta para pressionando Enter. O processo detecta todos os dispositivos Ewelink na rede usando MDNs (graças ao Zeroconf https://pypi.org/project/zeroconf).
- Selecione o dispositivo para fazer upload do novo firmware.
- O servidor HTTP é iniciado (graças ao rangehttpServer https://github.com/danvk/rangehttpserver) para servir o diretório do firmware selecionado.
- O processo garante que a funcionalidade OTA seja desbloqueada, usando a solicitação de REST apropriada.
- Envie uma solicitação de postagem ao dispositivo que fornece o link do servidor HTTP do novo firmware.
- O sono de 10 minutos para garantir que a transmissão tenha terminado. Se você vê que acabou (tasmota wifi aparece), mate o processo com Ctrl-C.
Notas:
- Se o dispositivo não responder às mensagens MDNS, remova a fonte de energia e conecte -o novamente enquanto a descoberta estiver em andamento.
Dependências:
- https://pypi.org/project/rangehttpserver/
- https://pypi.org/project/zeroconf
- https://pypi.org/project/requests/
- https://pypi.org/project/simple-term-menu/
PENDÊNCIA:
- Lidar com os códigos de erro de solicitações.
- Adicione um Dockerfile.
Esses scripts foram rapidamente desenvolvidos para minhas próprias necessidades de exibir novos firmware em dispositivos SONOFF, já que as ferramentas existentes pareciam muito complicadas e não conseguiam usá -lo no Linux. Não garanto que funciona em nenhum caso. Por favor, use -o por sua conta e risco.