Sonoff-diy-ota-firmware
Proceso de línea de comandos para cargar un nuevo firmware sobre los dispositivos de bricolaje de Air to Sonoff utilizando la API REST http://developers.sonoff.tech/basicr3-rfr3-mini-http-api.html.
Creado usando Python 3.8 en Ubuntu 20.04 y probado en Sonoff Basic R3 y Sonoff Mini.
El dispositivo SONOFF debe estar en modo de bricolaje y en la misma red (Sonoffdiy) con la computadora que ejecuta este script.
Esto requiere:
- Bricolaje 1.0:
- Puente en los alfileres designados
- Red WiFi con SSID: Sonoffdiy y contraseña: 20170618SN
- DIY 2.0: Verifique http://developers.sonoff.tech/sonoff-diy-mode-api-protocol.html
Uso recomendado:
APIMAGE:
- Si está en Linux, descargue y ejecute la Appimage desde la página Libertades.
Python Virtual Environment (Linux y Windows):
- Crear un entorno virtual (venv o conda o algo más):
python3 -m venv /path/to/new/virtual/environment
o
conda create -n <environment_name> python=3.8
- Active el entorno de acuerdo con su entorno virtual.
- Instale las dependencias:
pip3 install -r requirements.txt
- Ejecutar el script:
Los comandos pueden diferir a Windows.
No intente flashear firmware que sea mayor de 508 kb. Use algo como Tasmota-Lite.bin y más tarde desde Tasmota, flashee el firmware completo.
Pasos de proceso:
- Descargue el archivo de firmware (por ejemplo, tasmota-lite.bin).
- Ejecute el script main.py.
- Espere hasta que se descubra su dispositivo. Si es así, el descubrimiento se detiene presionando Enter. El proceso detecta todos los dispositivos Ewelink en la red utilizando MDNS (gracias a Zeroconf https://pypi.org/project/zeroconf).
- Seleccione el dispositivo para cargar el nuevo firmware.
- El servidor HTTP comienza (gracias a RangeHttpserver https://github.com/danvk/rangehttpserver) para servir el directorio del firmware seleccionado.
- El proceso se asegura de que la funcionalidad OTA esté desbloqueada, utilizando la solicitud de descanso apropiada.
- Envíe una solicitud de publicación al dispositivo que proporciona el enlace del servidor HTTP del nuevo firmware.
- Duerme de 10 minutos para asegurarse de que la transmisión haya terminado. Si ves que ha terminado (aparece Tasmota WiFi), mata el procedimiento con CTRL-C.
Notas:
- Si el dispositivo no responde a los mensajes MDNS, elimine la fuente de alimentación y lo conecte nuevamente mientras el descubrimiento está en progreso.
Dependencias:
- https://pypi.org/project/rangehttpserver/
- https://pypi.org/project/zeroconf
- https://pypi.org/project/requests/
- https://pypi.org/project/simple-termmenu/
HACER:
- Manejar los códigos de error de solicitudes.
- Agregue un Dockerfile.
Estos scripts se desarrollaron rápidamente para mis propias necesidades de flashear nuevos firmware en dispositivos SONOFF, ya que las herramientas existentes parecían demasiado complicadas y no podían lograrlo en Linux. No garantizo que funcione en ningún caso. Úselo bajo su propio riesgo.