Proyecto de Micrypthon para liberar el zócalo Smart Smart de Sonoff desde la nube ejecutando un servidor web en el dispositivo.
Dispositivos probados:
El dispositivo hará esto en cada arranque:
Algunas notas sobre la funcionalidad del temporizador:
El dispositivo siempre intenta encender/apagar la alimentación en función del temporizador actual. Incluso después de una falla de energía. Sin embargo, esto solo funciona correctamente si el RTC establece correctamente la hora actual. La hora actual se recupera automáticamente de Internet a través de NTP Sync. En el arranque y también repetido después del inicio. Por supuesto, esto solo puede funcionar si el dispositivo está conectado a Internet a través de wifi;)
Puede "sobrescribir" el temporizador actual en cualquier momento presionando el botón en el dispositivo. Esta sobrescritura se quedará hasta el próximo temporizador. Después de una falla de energía, se elimina la información de "sobrescribir" y el temporizador regula la potencia nuevamente.
Cosas que se implementarán en la función cercana:
Más lejos:
La página web se ve así:
Todas las capturas de pantalla existentes se pueden encontrar aquí:
3.3V , GND , TX y RXMuy buena información para comenzar, ¿puedes encontrar aquí?
config.h y compile yaota8266 y firmware_config_wifi.json Clonar las fuentes y configurar virtualenv a través de pipenv :
~ $ git clone https://github.com/jedie/micropython-sonoff-webswitch.git
~ $ cd micropython-sonoff-webswitch
~ /micropython-sonoff-webswitch$ make updatePara ver todos los objetivos, solo llame a hacer, por ejemplo:
~ /micropython-sonoff-webswitch$ make
make targets:
help This help page
docker-pull pull docker images
docker-build pull and build docker images
update update git repositories/submodules, virtualenv, docker images and build local docker image
thonny run Thonny IDE to access the Micropython REPL (Python prompt)
test Run pytest
micropython_shell start a bash shell in docker container " local/micropython:latest "
unix-port-shell start micropython unix port interpreter
build-firmware-combined compiles the micropython non-OTA firmware and store it here: /build/firmware-combined.bin
build-ota-firmware compiles the micropython OTA firmware and store it here: /build/firmware-ota.bin
yaota8266-rsa-keys Pull/build yaota8266 docker images and Generate RSA keys and/or print RSA modulus line for copy & paste into config.h
yaota8266-build Compile ota bootloader and store it here: build/yaota8266.bin
verify Check RSA key, config.h and compiled " yaota8266.bin "
erase-flash call esptool.py erase_flash
flash-firmware-combined Flash build/firmware-combined to location 0x3c000 via esptool.py
flash-yaota8266 Flash build/yaota8266.bin to location 0x0 via esptool.py
flash-ota-firmware Flash build/firmware-ota.bin to location 0x3c000 via esptool.py
hard-ota Start yaota8266 live-ota to hard-OTA Update the firmware file build/firmware-ota.bin.ota
soft-ota Start soft-OTA updates: Compile .py to .mpy and push missing/updated files ( * .mpy, * .css, * .html etc.) to the device
miniterm Low level debug device via miniterm.py (from pyserial) to /dev/ttyUSB0 Debe crear docker-yaota8266/yaota8266/config.h e insertar su línea RSA Modulus.
Para generar sus claves RSA y mostrar la línea necesaria para config.h simplemente llame:
~ /micropython-sonoff-webswitch$ make yaota8266-rsa-keys
...
Copy & paste this RSA modulus line into your config.h:
----------------------------------------------------------------------------------------------------
# define MODULUS "xcex4axafx65x0dx4ax74xdaxc1x30x59x80xcfxddxe8x2ax2ex1dxf7xa8xc9x6cxa9x4ax2cxb7x8ax5ax2ax25xc0x2bx7bx2fx58x4cxa8xcbx82x07x06x08x7exffx1fxcex47x13x67x94x5fx9axacx5ex7dxcfx63xf0x08xe9x51x98x95x01"
----------------------------------------------------------------------------------------------------Los archivos de clave RSA generados están aquí:
docker-yaota8266/yaota8266/ota-client/priv.keydocker-yaota8266/yaota8266/ota-client/pub.keyDebe hacer una copia de seguridad de estos archivos;
Después de haber creado sus propias claves RSA y config.h , puede compilar yaota8266.bin y firmware-ota.bin , por ejemplo:
~ /micropython-sonoff-webswitch$ make yaota8266-build
~ /micropython-sonoff-webswitch$ make build-ota-firmwareLos archivos compilados se almacenan aquí:
~/micropython-sonoff-webswitch/build/yaota8266.bin~/micropython-sonoff-webswitch/build/firmware-ota.bin <-para flashear~/micropython-sonoff-webswitch/build/firmware-ota.bin.ota <-utilizado en el proceso de hard-otaESP8266 debe ponerse en modo de programación antes de que se pueda cargar el firmware. Para poner el ESP8266 en modo de programación:
Tal vez sea que le dé al usuario los permisos para acceder al puerto USB, por ejemplo: sudo usermod -a -G dialout $USER de lo contrario recibirá un mensaje de error como: Permission denied: '/dev/ttyUSB0'
Ahora se puede usar esptool . ¡Pero solo para una operación! Después de cada llamada de Esptool, debe desconectar el dispositivo del USB y repetir este procedimiento.
La primera vez, la memoria flash debe borrarse, llamar:
~ /micropython-sonoff-webswitch$ make erase-flash Después de erase-flash y después de haber llamado make yaota8266-build y make build-ota-firmware puede flashear su dispositivo:
# put into Programming Mode and call:
~ /micropython-sonoff-webswitch$ make flash-yaota8266
# Again, put into Programming Mode and call:
~ /micropython-sonoff-webswitch$ make flash-ota-firmwareImportand : ¡Estos comandos Flash son para el dispositivo SONOFF y pueden no funcionar en otros dispositivos ESP8266!
Para otros dispositivos, solo use esptool directamente, por ejemplo:
~ /micropython-sonoff-webswitch$ pipenv run esptool.py --port /dev/ttyUSB0 write_flash 0 build/yaota8266.bin
~ /micropython-sonoff-webswitch$ pipenv run esptool.py --port /dev/ttyUSB0 write_flash 0x3c000 build/firmware-ota.binNota:
El archivo firmware-ota.bin debe ser flash con esptool.py no con el firmware-ota.bin.ota ! Este archivo es UES en el proceso de actualización de Hard-To.
Puede encontrar más información sobre el flashing en la documentación oficial aquí: http://docs.micropython.org/en/latest/esp8266/tutorial/intro.html
Una vez que tenga el firmware en el dispositivo, puede acceder al Micropython Repler (Python Av: Hay diferentes formas de hacer esto. Usé Thonny y su soporte de Micrypthon
thonny está instalado a través de Pipenv, para iniciar el IDE, solo llame:
~ /micropython-sonoff-webswitch$ make thonnyPrimeros pasos en Thonny:
Tools / Options / Interpreter Seleccionar: MicroPython (ESP8266)files : View / Files Ahora debería poder acceder a Micopython Reply a través de Ctrl-F2 . También puede iniciar scripts en el dispositivo:
This computer vaya a: .../micropython-sonoff-webswitch/helpersmpy_information.py en el editorF5 Después de formatear el sistema de archivos flash como littlefs2 : Copie archivos faltantes al dispositivo, usando Soft-ToT:
El dispositivo necesita SSID/contraseñas para poder iniciar sesión en diferentes WLAN. Lee las credenciales del archivo _config_wifi.json . Este archivo debe ser creado. La plantilla es _config_wifi-example.json.
Copiar y editar _config_wifi-example.json a src/_config_wifi.json
Todos los archivos faltantes en src se copiarán al dispositivo a través de Soft-ToT.
Para conectar el dispositivo en el inicio de puño a su red WiFi, edite y ejecute esto:
import time , network
sta_if = network . WLAN ( network . STA_IF )
sta_if . active ( True )
sta_if . connect ( 'your-ssid' , 'Your-WiFi-Password' )
while not sta_if . isconnected ():
time . sleep ( 0.5 )
print ( 'connected:' , sta_if . ifconfig ()) Simplemente copie y pegue este fragmento de código en Thonny IDE, inserte sus credenciales y ejecútelo a través de F5
Después de que el dispositivo esté conectado a su wifi, puede ejecutar Soft-ToT y copiar todos los archivos src faltantes.
Iniciar servidor Soft-ToT con:
~ /micropython-sonoff-webswitch$ make soft-ota Al mismo tiempo, abra .../Micopython-Sonoff-Webswitch/Src/Ota_client.py en Thonny y comience a través de F5 .
Ahora se debe ejecutar el Soft-To:
src se transferirán al dispositivoAhora la configuración del dispositivo está realizada;)
Nota : Hay dos tipos de actualizaciones de OTA:
La OTA 'Hard' a través de YAOTA8266 es el trabajo en progreso, ver: #33
Después de la configuración inicial y cuando todo funciona y el dispositivo está conectado a su WLAN, puede usar actualizaciones de OTA.
El dispositivo ejecutará /src/ota_client.py en cada arranque.
El script espera un tiempo para el servidor OTA y después del tiempo de espera se iniciará el servidor web normal.
Para iniciar el soft-OTA Server , haga esto:
~ /micropython-sonoff-webswitch$ make soft-otaSi se ejecuta el servidor: reinicie el dispositivo y busque la salida del servidor OTA.
La implementación de actualización de OTA hace:
mpy_cross instalada (si no coincide: NEGO ACTUALIZACIÓN).py existente en el dispositivo si se envió el archivo .mpy./bdist/ - Compilados .mpy archivos (y .html , archivos .css ) que se cargarán en el dispositivo en soft-OTA./build/ de firmware compilados ( firmware-*.bin y yaota8266.bin ) para flashear y hard-OTA./docker-yaota8266/ submódulo https://github.com/jedie/docker-yaota8266 para compilar yaota8266.bin a través de Docker./helpers/ - Algunas pruebas de dispositivo/scripts auxiliares para bootstrap y desarrollo./micropython_config/ - Archivos de configuración utilizados para compilar el firmware de Micropython./mpy_tests/ - Pruebas que se pueden ejecutar en el dispositivo Micropython (Pytest también ejecutará con simulacros)./sdist/ - contiene todos los módulos que se congelarán en firmware, creado a través de utils/make_sdist.py./soft_ota/ - código fuente del servidor OTA./src/ - Archivos fuente del dispositivo./tests/ - Algunos archivos Pytest (se ejecuta en el host con CPython)./utils/ - Utils for Local Run (compilar, Code Lint, Sync with Mpycntrl) yaota8266.bin a través de Docker: https://github.com/jedie/docker-yaota8266