Micropython项目通过在设备上运行网络服务器,将Sonoff WiFi Smart套接字从云中释放。
经过测试的设备:
该设备将在每个启动下执行此操作:
有关计时器功能的一些注释:
该设备总是试图根据当前计时器打开/关闭电源。即使在电力故障之后。但是,仅当RTC正确设置当前时间时,这仅能正常工作。当前时间将通过NTP Sync自动从Internet检索。在启动时,启动后也重复。当然,只有通过WiFi连接到Internet的设备;)才能起作用;)
您可以随时按下设备上的按钮来“覆盖”当前计时器。这个覆盖物将一直持续到下一个计时器。电源故障后,删除了“覆盖”信息,并且计时器再次调节电源。
将在近乎功能中实施的事情:
更远的地方:
该网页看起来像这样:
所有现有的屏幕截图都可以在此处找到:
3.3V , GND , TX和RX引脚建立连接您可以在此处找到非常好的信息开始:
config.h并编译Yaota8266和固件_config_wifi.json克隆来源,并通过pipenv设置Virtualenv:
~ $ git clone https://github.com/jedie/micropython-sonoff-webswitch.git
~ $ cd micropython-sonoff-webswitch
~ /micropython-sonoff-webswitch$ make update要查看所有制造目标,只需致电,例如:
~ /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您必须创建docker-yaota8266/yaota8266/config.h并插入您的RSA模量线。
要生成您的RSA键并显示config.h的所需行,只需致电:
~ /micropython-sonoff-webswitch$ make yaota8266-rsa-keys
...
Copy & paste this RSA modulus line into your config.h:
----------------------------------------------------------------------------------------------------
# define MODULUS "xcex4axafx65x0dx4ax74xdaxc1x30x59x80xcfxddxe8x2ax2ex1dxf7xa8xc9x6cxa9x4ax2cxb7x8ax5ax2ax25xc0x2bx7bx2fx58x4cxa8xcbx82x07x06x08x7exffx1fxcex47x13x67x94x5fx9axacx5ex7dxcfx63xf0x08xe9x51x98x95x01"
----------------------------------------------------------------------------------------------------生成的RSA密钥文件在这里:
docker-yaota8266/yaota8266/ota-client/priv.keydocker-yaota8266/yaota8266/ota-client/pub.key您应该备份这些文件;
创建了自己的RSA键和config.h之后,您可以编译yaota8266.bin和firmware-ota.bin ,例如:
~ /micropython-sonoff-webswitch$ make yaota8266-build
~ /micropython-sonoff-webswitch$ make build-ota-firmware编译的文件存储在此处:
~/micropython-sonoff-webswitch/build/yaota8266.bin~/micropython-sonoff-webswitch/build/firmware-ota.bin <-用于闪烁~/micropython-sonoff-webswitch/build/firmware-ota.bin.ota <-在硬ota过程中使用在可以上传固件之前,需要将ESP8266放入编程模式。将ESP8266放入编程模式:
也许您必须允许用户访问USB端口的权限,例如: sudo usermod -a -G dialout $USER否则您将获得一条错误消息,例如Permission denied: '/dev/ttyUSB0'
现在可以使用esptool 。但是只有一个操作!每个Esptool调用后,您必须将设备与USB断开并重复此过程!
第一次必须删除闪存,请致电:
~ /micropython-sonoff-webswitch$ make erase-flash erase-flash后,在打电话给make yaota8266-build并make build-ota-firmware之后,您可以刷新设备:
# 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 :这些闪存命令适用于Sonoff设备,并且可能无法在其他ESP8266设备上使用!
对于其他设备,只需直接使用esptool ,例如:
~ /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.bin笔记:
文件firmware-ota.bin必须使用esptool.py而不是firmware-ota.bin.ota !此文件是Hard-OTA更新过程中的UES。
有关闪烁的更多信息,请参见此处的官方文档:http://docs.micropopython.org/en/latest/esp8266/esp8266/tutorial/introorial/intro.html
设备上有固件后,您可以访问Micropython repl(Python提示)。有不同的方法可以做到这一点。我使用了Thonny和他的Micropython支持
thonny是通过Pipenv安装的,要启动IDE,只需致电:
~ /micropython-sonoff-webswitch$ make thonnyThonny的第一步:
Tools / Options / Interpreter选择: MicroPython (ESP8266)files选项卡: View / Files现在,您应该能够通过Ctrl-F2访问Micropython重复。您还可以在设备上启动脚本:
This computer选项卡中,请转到: .../micropython-sonoff-webswitch/helpersmpy_information.py在编辑器中F5在设备上运行脚本格式化后,闪存文件系统为littlefs2 :使用Soft-OTA将丢失的文件复制到设备:
该设备需要SSID/密码才能登录到不同的WLAN。它从文件_config_wifi.json读取凭据。必须创建此文件。模板是_config_wifi-example.json。
复制和编辑_config_wifi-example.json至src/_config_wifi.json
src中的所有丢失文件将通过Soft-OTA复制到设备。
要将拳头上的设备连接到您的WiFi网络,请编辑并运行以下内容:
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 ())只需将此代码段复制并粘贴到Thonny IDE中,插入您的凭据并通过F5运行它
将设备连接到您的WiFi后,它可以运行SOFT-OTA并复制所有缺少的src文件。
使用以下方式启动Soft-OTA服务器
~ /micropython-sonoff-webswitch$ make soft-ota同时,打开.../micropython-sonoff-webswitch/src/ota_client.py in thonny,并通过F5启动它。
现在应该运行软OTA:
src的所有缺失/新文件都将转移到设备现在设备设置已完成;)
注意:OTA更新有两种:
Yaota8266的“硬” OTA是在进行中的,请参见:#33
在初始设置以及所有工作正常工作并将设备连接到WLAN之后,您可以使用OTA更新。
该设备将在每个启动时运行 /src/ota_client.py。
该脚本会等待OTA服务器,然后暂停后,将启动普通的Web服务器。
要启动soft-OTA Server ,请执行此操作:
~ /micropython-sonoff-webswitch$ make soft-ota如果服务器运行:重新启动设备并查看OTA服务器的输出。
OTA更新实现确实:
mpy_cross版本进行比较(如果不匹配:拒绝更新).mpy文件,请删除设备上现有的.py文件./bdist/编译了.mpy文件(和.html , .css文件),该文件将在soft-OTA中上传到设备./build/编译固件文件( firmware-*.bin and yaota8266.bin )用于闪烁和hard-OTA./docker-yaota8266/ git子模块https://github.com/jedie/docker-yaota8266 to compile yaota8266.bin./helpers/一些设备测试/辅助脚本用于引导和开发./micropython_config/用于编译Micropython固件的配置文件./mpy_tests/可以在Micropython设备上运行的测试(也将由模拟的Pytest运行)./sdist/包含所有将冻结到固件中的模块,这些模块是通过utils/make_sdist.py创建的./soft_ota/ OTA服务器的源代码./src/设备源文件./tests/一些pytest文件(使用cpython在主机上运行)./utils/用于本地运行的UTILS(编译,代码绒毛,与mpycntrl同步) yaota8266.bin通过Docker:https://github.com/jedie/docker-yaota8266