O Micropython Project para libertar o soquete Sonoff Wi -Fi da nuvem, execute um servidor da web no dispositivo.
Dispositivos testados:
O dispositivo fará isso em cada inicialização:
Algumas notas sobre a funcionalidade do timer:
O dispositivo sempre tenta ativar/desativar a energia com base no timer atual. Mesmo após uma falha de energia. No entanto, isso só funciona corretamente se a hora atual for definida corretamente pelo RTC. O horário atual é recuperado automaticamente da Internet via sincronização NTP. Na bota e também repetido após o início. Obviamente, isso só pode funcionar se o dispositivo estiver conectado à Internet via wifi;)
Você pode "substituir" o temporizador atual a qualquer momento, pressionando o botão no dispositivo. Este substituto permanecerá até o próximo temporizador. Após uma falha de energia, as informações de "substituição" são excluídas e o temporizador regula o poder novamente.
Coisas que serão implementadas em um recurso próximo:
mais longe:
A página da web se parece com o seguinte:
Todas as capturas de tela existentes podem ser encontradas aqui:
3.3V , GND , TX e RXInformações muito boas para começar, você pode encontrar aqui:
config.h e compilar yaota8266 e firmware_config_wifi.json Clone as fontes e configure o VirtualEnv via pipenv :
~ $ git clone https://github.com/jedie/micropython-sonoff-webswitch.git
~ $ cd micropython-sonoff-webswitch
~ /micropython-sonoff-webswitch$ make updatePara ver todos os alvos, basta chamar a marca, por exemplo:
~ /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 Você deve criar docker-yaota8266/yaota8266/config.h e inserir sua linha de módulo RSA.
Para gerar suas teclas RSA e exibir a linha necessária para config.h basta ligar:
~ /micropython-sonoff-webswitch$ make yaota8266-rsa-keys
...
Copy & paste this RSA modulus line into your config.h:
----------------------------------------------------------------------------------------------------
# define MODULUS "xcex4axafx65x0dx4ax74xdaxc1x30x59x80xcfxddxe8x2ax2ex1dxf7xa8xc9x6cxa9x4ax2cxb7x8ax5ax2ax25xc0x2bx7bx2fx58x4cxa8xcbx82x07x06x08x7exffx1fxcex47x13x67x94x5fx9axacx5ex7dxcfx63xf0x08xe9x51x98x95x01"
----------------------------------------------------------------------------------------------------Os arquivos de chave RSA gerados estão aqui:
docker-yaota8266/yaota8266/ota-client/priv.keydocker-yaota8266/yaota8266/ota-client/pub.keyVocê deve fazer backup de esses arquivos;
Depois de criar suas próprias chaves RSA e config.h , você pode compilar yaota8266.bin e firmware-ota.bin , por exemplo:
~ /micropython-sonoff-webswitch$ make yaota8266-build
~ /micropython-sonoff-webswitch$ make build-ota-firmwareOs arquivos compilados são armazenados aqui:
~/micropython-sonoff-webswitch/build/yaota8266.bin~/micropython-sonoff-webswitch/build/firmware-ota.bin <-para piscar~/micropython-sonoff-webswitch/build/firmware-ota.bin.ota <-usado no processo hard-otaO ESP8266 precisa ser colocado no modo de programação antes que o firmware possa ser carregado. Para colocar o ESP8266 no modo de programação:
Talvez você deva dar ao usuário as permissões para acessar a porta USB, por exemplo: sudo usermod -a -G dialout $USER caso contrário, você receberá uma mensagem de erro como: Permission denied: '/dev/ttyUSB0'
Agora esptool pode ser usado. Mas apenas para uma operação! Após cada chamada do ESPTOOL, você deve desconectar o dispositivo do USB e repetir este procedimento!
Na primeira vez, a memória flash deve ser apagada, ligue:
~ /micropython-sonoff-webswitch$ make erase-flash Depois erase-flash e depois que você chamou make yaota8266-build e make build-ota-firmware você pode exibir seu 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-firmwareImportação : esses comandos flash são para o dispositivo Sonoff e podem não funcionar em outros dispositivos ESP8266!
Para outros dispositivos, basta usar esptool diretamente, por exemplo:
~ /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.binObservação:
O firmware-ota.bin deve ser flash com esptool.py e não o firmware-ota.bin.ota ! Este arquivo é UES no processo de atualização de OTA, dura.
Mais informações sobre piscar podem ser encontradas na documentação oficial aqui: http://docs.micropython.org/en/latest/esp8266/tutorial/intro.html
Depois de ter o firmware no dispositivo, você pode acessar o micropython repl (prompt de python). Existem diferentes maneiras de fazer isso. Eu usei Thonny e seu suporte de micropython
thonny está instalado via Pipenv, para iniciar o IDE, basta ligar:
~ /micropython-sonoff-webswitch$ make thonnyPrimeiros passos em Thonny:
Tools / Options / Interpreter Selecionar: MicroPython (ESP8266)files Guia: View / Files Agora você deve acessar o Micropython Repl via Ctrl-F2 . Você também pode iniciar scripts no dispositivo:
This computer vá para: .../micropython-sonoff-webswitch/helpersmpy_information.py no editorF5 Após o formato do sistema de arquivos flash como littlefs2 : copie os arquivos ausentes para o dispositivo, usando o soft-ota:
O dispositivo precisa de SSID/senhas para poder fazer login em diferentes WLANs. Ele lê as credenciais do arquivo _config_wifi.json . Este arquivo deve ser criado. O modelo é _config_wifi-example.json.
Copie e edite _config_wifi-expler.json para src/_config_wifi.json
Todos os arquivos ausentes no src serão copiados para o dispositivo via Soft-Ota.
Para conectar o dispositivo no punho, inicie sua rede wifi, edite e execute isso:
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 ()) Basta copiar e colar este snippet de código em thonny ide, inserir suas credenciais e executá -lo via F5
Depois que o dispositivo estiver conectado ao seu wifi, ele pode executar o Soft-Ota e copiar todos os arquivos src ausentes.
Inicie o servidor Soft-Ota com:
~ /micropython-sonoff-webswitch$ make soft-ota Ao mesmo tempo, aberto .../micropython-sonoff-webswitch/src/ota_client.py em thonny e inicie-o via F5 .
Agora o Soft-Ota deve ser executado:
src serão transferidos para o dispositivoAgora a configuração do dispositivo está concluída;)
Nota : Existem dois tipos de atualizações de OTA:
O OTA 'Hard' via Yaota8266 está em andamento, consulte: #33
Após a configuração inicial e quando tudo está funcionando e o dispositivo está conectado à sua WLAN, você pode usar as atualizações da OTA.
O dispositivo executará o /src/ota_client.py em cada inicialização.
O script aguarda algum tempo para o servidor OTA e, após o tempo limite, o servidor Web normal será iniciado.
Para iniciar o soft-OTA Server , faça isso:
~ /micropython-sonoff-webswitch$ make soft-otaSe o servidor executar: reiniciar o dispositivo e procure a saída do servidor OTA.
A implementação da OTA Update faz:
mpy_cross instalada (se não corresponder: negar atualização).py existente no dispositivo se o arquivo .mpy foi enviado./bdist/ - arquivos .mpy compilados (e .html , arquivos .css ) que serão enviados para o dispositivo no soft-OTA./build/ de firmware compilados ( firmware-*.bin e yaota8266.bin ) para piscar e hard-OTA./docker-yaota8266/ https://github.com/jedie/docker-yaota8266 para compilar yaota8266.bin via docker./helpers/ - alguns testes de dispositivo/scripts auxiliares para bootstrap e desenvolvimento./micropython_config/ - arquivos de configuração usados para compilar o firmware micropython./mpy_tests/ - testes que podem ser executados no dispositivo Micropython (também serão executados pelo Pytest com zombarias)./sdist/ - contém todos os módulos que serão congelantes em firmware, criados via utils/make_sdist.py./soft_ota/ - código -fonte do servidor OTA./src/ - arquivos de origem do dispositivo./tests/ - alguns arquivos de pytest (executados no host com cpython)./utils/ - UTILS for Local Run (compilar, fiapo de código, sincronização com mpyntrl) yaota8266.bin via docker: https://github.com/jedie/docker-yaota8266