Proyek Micropython untuk membebaskan soket pintar Sonoff WiFi dari cloud dengan menjalankan server web di perangkat.
Perangkat yang diuji:
Perangkat akan melakukan ini di setiap boot:
Beberapa catatan tentang fungsi timer:
Perangkat selalu mencoba untuk menghidupkan/mematikan daya berdasarkan timer saat ini. Bahkan setelah kegagalan daya. Namun, ini hanya berfungsi dengan benar jika waktu saat ini diatur dengan benar oleh RTC. Waktu saat ini secara otomatis diambil dari internet melalui sinkronisasi NTP. Di boot dan juga diulang setelah mulai. Tentu saja, ini hanya dapat berfungsi jika perangkat terhubung ke internet melalui wifi;)
Anda dapat "menimpa" timer saat ini kapan saja dengan menekan tombol pada perangkat. Ini menimpa akan tetap sampai timer berikutnya. Setelah kegagalan daya, informasi "menimpa" dihapus dan pengatur waktu mengatur kekuatan lagi.
Hal -hal yang akan diimplementasikan dalam fitur dekat:
lebih jauh:
Halaman web terlihat seperti ini:
Semua tangkapan layar yang ada dapat ditemukan di sini:
3.3V , GND , TX dan RXInformasi yang sangat bagus untuk memulai dapat Anda temukan di sini:
config.h dan kompilasi yaota8266 dan firmware_config_wifi.json Klon Sumber, dan setup VirtualEnv via pipenv :
~ $ git clone https://github.com/jedie/micropython-sonoff-webswitch.git
~ $ cd micropython-sonoff-webswitch
~ /micropython-sonoff-webswitch$ make updateUntuk melihat semua membuat target, panggil saja, misalnya:
~ /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 Anda harus membuat docker-yaota8266/yaota8266/config.h dan masukkan garis modulus RSA Anda.
Untuk menghasilkan kunci RSA Anda dan menampilkan baris yang diperlukan untuk config.h saja hubungi:
~ /micropython-sonoff-webswitch$ make yaota8266-rsa-keys
...
Copy & paste this RSA modulus line into your config.h:
----------------------------------------------------------------------------------------------------
# define MODULUS "xcex4axafx65x0dx4ax74xdaxc1x30x59x80xcfxddxe8x2ax2ex1dxf7xa8xc9x6cxa9x4ax2cxb7x8ax5ax2ax25xc0x2bx7bx2fx58x4cxa8xcbx82x07x06x08x7exffx1fxcex47x13x67x94x5fx9axacx5ex7dxcfx63xf0x08xe9x51x98x95x01"
----------------------------------------------------------------------------------------------------File kunci RSA yang dihasilkan ada di sini:
docker-yaota8266/yaota8266/ota-client/priv.keydocker-yaota8266/yaota8266/ota-client/pub.keyAnda harus membuat cadangan file tesis;
Setelah Anda membuat kunci firmware-ota.bin config.h RSA Anda yaota8266.bin .
~ /micropython-sonoff-webswitch$ make yaota8266-build
~ /micropython-sonoff-webswitch$ make build-ota-firmwareFile yang dikompilasi disimpan di sini:
~/micropython-sonoff-webswitch/build/yaota8266.bin~/micropython-sonoff-webswitch/build/firmware-ota.bin <-untuk flashing~/micropython-sonoff-webswitch/build/firmware-ota.bin.ota <-digunakan dalam proses keras-OtaESP8266 perlu dimasukkan ke dalam mode pemrograman sebelum firmware dapat diunggah. Untuk menempatkan ESP8266 ke dalam mode pemrograman:
Permission denied: '/dev/ttyUSB0' Anda harus memberi pengguna izin untuk mengakses port USB, mis sudo usermod -a -G dialout $USER
Sekarang esptool dapat digunakan. Tapi hanya untuk satu operasi! Setelah setiap panggilan Esptool, Anda harus memutuskan perangkat dari USB dan mengulangi prosedur ini!
Pertama kali, memori flash harus dihapus, panggil:
~ /micropython-sonoff-webswitch$ make erase-flash Setelah erase-flash dan setelah Anda menelepon make yaota8266-build dan make build-ota-firmware Anda dapat mem-flash perangkat Anda:
# 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 : Perintah flash ini adalah untuk perangkat Sonoff dan mungkin tidak berfungsi pada perangkat ESP8266 lainnya!
Untuk perangkat lain, hanya menggunakan esptool secara langsung, misalnya:
~ /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.binCatatan:
File firmware-ota.bin harus flash dengan esptool.py bukan firmware-ota.bin.ota ! File ini adalah UE dalam proses pembaruan Hard-Ota.
Informasi lebih lanjut tentang flashing dapat ditemukan di dokumentasi resmi di sini: http://docs.micropython.org/en/latest/esp8266/tutorial/into.html
Setelah Anda memiliki firmware di perangkat, Anda dapat mengakses Micropython Rept (Python Prompt). Ada berbagai cara untuk melakukan ini. Saya menggunakan Thonny dan Dukungan Micropython -nya
thonny diinstal melalui Pipenv, untuk memulai IDE, hubungi saja:
~ /micropython-sonoff-webswitch$ make thonnyLangkah Pertama di Thonny:
Tools / Options / Interpreter Pilih: MicroPython (ESP8266)files : View / Files Sekarang Anda harus dapat mengakses Micropython REPL melalui Ctrl-F2 . Anda juga dapat memulai skrip di perangkat:
This computer , buka: .../micropython-sonoff-webswitch/helpersmpy_information.py di editorF5 Setelah format sistem file flash sebagai littlefs2 : Salin file yang hilang ke perangkat, menggunakan Soft-Ota:
Perangkat membutuhkan SSID/kata sandi untuk dapat masuk ke WLAN yang berbeda. Itu membaca kredensial dari file _config_wifi.json . File ini harus dibuat. Template adalah _config_wifi-example.json.
Salin dan edit _config_wifi-example.json ke src/_config_wifi.json
Semua file yang hilang di src akan disalin ke perangkat melalui Soft-Ota.
Untuk menghubungkan perangkat pada tinju mulai ke jaringan wifi Anda, edit dan jalankan ini:
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 ()) Cukup salin & tempel cuplikan kode ini ke Thonny IDE, masukkan kredensial Anda dan jalankan melalui F5
Setelah perangkat terhubung ke WiFi Anda, ia dapat menjalankan Soft-Ota dan menyalin semua file src yang hilang.
Mulai server Soft-OTA dengan:
~ /micropython-sonoff-webswitch$ make soft-ota Pada saat yang sama, buka .../micropython-sonoff-webswitch/src/ota_client.py di Thonny dan memulainya melalui F5 .
Sekarang Soft-Ota harus dijalankan:
src akan ditransfer ke perangkatSekarang pengaturan perangkat selesai;)
Catatan : Ada dua jenis pembaruan OTA:
OTA 'Hard' Via Yaota8266 adalah pekerjaan-dalam-kemajuan, lihat: #33
Setelah pengaturan awal dan ketika semuanya berfungsi dan perangkat terhubung ke WLAN Anda, Anda dapat menggunakan pembaruan OTA.
Perangkat akan menjalankan /src/ota_client.py pada setiap boot.
Skrip menunggu beberapa waktu untuk server OTA dan setelah batas waktu server web normal akan dimulai.
Untuk memulai soft-OTA Server , lakukan ini:
~ /micropython-sonoff-webswitch$ make soft-otaJika server berjalan: reboot perangkat dan lihat output server OTA.
Implementasi pembaruan OTA tidak:
mpy_cross yang diinstal (jika tidak cocok: DENY UPDATE).py yang ada di perangkat jika file .mpy dikirim./bdist/ - File .mpy yang dikompilasi (dan .html , file .css ) yang akan diunggah ke perangkat di soft-OTA./build/ firmware yang dikompilasi ( firmware-*.bin dan yaota8266.bin ) untuk berkedip dan hard-OTA./docker-yaota8266/ submodule https://github.com/jedie/docker-yaota8266 untuk mengkompilasi yaota8266.bin melalui docker./helpers/ - beberapa tes perangkat/skrip penolong untuk bootstrap dan pengembangan./micropython_config/ - file konfigurasi yang digunakan untuk mengkompilasi firmware micropython./mpy_tests/ - Tes yang dapat dijalankan pada perangkat Micropython (juga akan dijalankan oleh Pytest dengan mocks)./sdist/ - berisi semua modul yang akan membeku menjadi firmware, dibuat melalui utils/make_sdist.py./soft_ota/ - Kode sumber server OTA./src/ - file sumber perangkat./tests/ - beberapa file pytest (dijalankan di host dengan cpython)./utils/ - utils untuk run lokal (kompilasi, kode serat, sinkronisasi dengan mpycntrl) yaota8266.bin via Docker: https://github.com/jedie/docker-yaota8266