MicropyThon Project, чтобы освободить Sonoff Wi -Fi Smart Socket из облака, запустив веб -сервер на устройстве.
Протестированные устройства:
Устройство будет делать это на каждой загрузке:
Некоторые примечания о функциональности таймера:
Устройство всегда пытается включить/выключить питание на основе текущего таймера. Даже после сбоя энергии. Тем не менее, это работает правильно, только если текущее время правильно установлено RTC. Текущее время автоматически извлекается из Интернета через NTP Sync. На загрузке, а также повторяется после начала. Конечно, это может работать только в том случае, если устройство подключено к Интернету через Wi -Fi;)
Вы можете «перезаписать» текущий таймер в любое время, нажав кнопку на устройстве. Этот перезапись останется до следующего таймера. После сбоя энергии информация «перезапись» удаляется, и таймер снова регулирует власть.
Вещи, которые будут реализованы в ближайшей функции:
дальше:
Веб -страница выглядит так:
Все существующие скриншоты можно найти здесь:
3.3V , GND , TX и RX PINSОчень хорошая информация, чтобы начать, можно ли найти здесь:
config.h и компиляцию YAOTA8266 и прошивки_config_wifi.json Клонировать источники и настроить VirtualEnv через pipenv :
~ $ 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 <-используется в процессе жесткой ота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-firmwareImmpormand : Эти команды Flash предназначены для устройства 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Примечание:
File firmware-ota.bin должна быть вспышкой с esptool.py , а не firmware-ota.bin.ota ! Этот файл находится в процессе обновления Hard-OTA.
Более подробную информацию о мигании можно найти в официальной документации здесь: http://docs.micropython.org/en/latest/esp8266/tutorial/intro.html
После того, как у вас есть прошивка на устройстве, вы можете получить доступ к Micropython Repl (Python Risming). Есть разные способы сделать это. Я использовал Тонни и его поддержку микропитона
thonny установлен через Pipenv, чтобы запустить IDE, просто позвоните:
~ /micropython-sonoff-webswitch$ make thonnyПервые шаги в Тонни:
Tools / Options / Interpreter Выберите: MicroPython (ESP8266)files : View / Files Теперь вы должны иметь возможность получить доступ к микропитонам через Ctrl-F2 . Вы также можете запустить сценарии на устройстве:
This computer перейти: .../micropython-sonoff-webswitch/helpersmpy_information.py в редактореF5 После формата Flash FileSystem как littlefs2 : скопируйте отсутствующие файлы на устройство, используя Soft-OTA:
Устройству нуждается в SSID/паролях, чтобы иметь возможность войти в разные WLAN. Он считывает учетные данные из файла _config_wifi.json . Этот файл должен быть создан. Шаблон _config_wifi-example.json.
Скопировать и редактировать _config_wifi-example.json to src/_config_wifi.json
Все отсутствующие файлы в src будут скопированы на устройство через Soft-OTA.
Чтобы подключить устройство к началу кулака к вашей сети Wi -Fi, отредактируйте и запустите это:
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
После того, как устройство подключено к вашему Wi-Fi, оно может запускать Soft-OTA и копировать все отсутствующие файлы src .
Запустить сервер Soft-OTA с:
~ /micropython-sonoff-webswitch$ make soft-ota В то же время, открыть .../micropython-sonoff-webswitch/src/ota_client.py в Thonny и запустите его через F5 .
Теперь следует запустить мягкую OTA:
src будут переданы на устройствоТеперь настройка устройства сделана;)
Примечание : есть два вида обновлений OTA:
«Хард» OTA через YAOTA8266 -это незавершенная работа, см.: #33
После первоначальной настройки и когда все работает, и устройство подключено к вашей WLAN, вы можете использовать обновления OTA.
Устройство запускает /src/ota_client.py на каждой загрузке.
Скрипт ожидает некоторое время для сервера OTA, и после тайм -аута будет запущен обычный веб -сервер.
Чтобы запустить soft-OTA Server , сделайте это:
~ /micropython-sonoff-webswitch$ make soft-otaЕсли сервер запускается: перезагрузите устройство и посмотрите на вывод сервера OTA.
Реализация обновления OTA делает:
mpy_cross (если не совпадает: deny update).py на устройстве, если файл .mpy был отправлен./bdist/ - скомпилированные файлы .mpy (и .html , .css files), которые будут загружены на устройство в soft-OTA./build/ файлы прошивки ( firmware-*.bin и yaota8266.bin ) для мигающей и hard-OTA./docker-yaota8266/ Submodule https://github.com/jedie/docker-yaota8266 для компиляции yaota8266.bin через Docker./helpers/ - Некоторые тесты устройства/вспомогательные сценарии для начальной загрузки и разработки./micropython_config/ - файлы конфигурации, используемые для компиляции прошивки микропитона./mpy_tests/ - тесты, которые можно запускать на устройстве MicropyThon (также будут запускать Pytest с макетами)./sdist/ - содержит все модули, которые будут замораживают в прошивке, созданные через utils/make_sdist.py./soft_ota/ - исходный код сервера OTA./src/ - исходные файлы устройства./tests/ - несколько файлов pytest (запустите на хосте с CPYTHON)./utils/ - UTILS для локального запуска (компиляция, код Lint, Sync с mpicntrl) yaota8266.bin через Docker: https://github.com/jedie/docker-yaota8266