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