Micropython Project 장치에서 웹 서버를 실행하여 Cloud에서 Sonoff Wi -Fi Smart 소켓을 풀기위한 Micropython 프로젝트.
테스트 된 장치 :
장치는 모든 부팅 에서이 작업을 수행합니다.
타이머 기능에 대한 몇 가지 메모 :
장치는 항상 현재 타이머를 기준으로 전원을 켜거나 끄기를 시도합니다. 정전 후에도. 그러나 이것은 현재 시간이 RTC에 의해 올바르게 설정된 경우에만 올바르게 작동합니다. 현재 시간은 NTP 동기화를 통해 인터넷에서 자동으로 검색됩니다. 부팅에서 시작 후 반복. 물론 이것은 장치가 Wi -Fi를 통해 인터넷에 연결된 경우에만 작동 할 수 있습니다.)
장치의 버튼을 누르면 언제든지 현재 타이머를 "덮어 쓰기"할 수 있습니다. 이 과다 쓰기는 다음 타이머까지 유지됩니다. 정전 후 "덮어 쓰기"정보가 삭제되고 타이머가 전원을 다시 조절합니다.
가까운 기능에서 구현 될 것 :
더 멀리 :
웹 페이지는 다음과 같습니다.
기존의 모든 스크린 샷은 여기에서 찾을 수 있습니다.
3.3V , GND , TX 및 RX 핀이있는 UART-USB 컨버터와 연결하십시오.시작하기에 아주 좋은 정보는 여기에서 찾을 수 있습니다.
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 <-하드 오타 프로세스에 사용됩니다펌웨어를 업로드하기 전에 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 firmware-ota.bin.ota 가 아닌 esptool.py 사용하여 플래시해야합니다! 이 파일은 Hard-OTA 업데이트 프로세스의 UES입니다.
플래시에 대한 자세한 내용은 공식 문서를 참조하십시오. http://docs.micropython.org/en/latest/esp8266/tutorial/intro.html
장치에 펌웨어가 있으면 Micropython Repl (Python Prompt)에 액세스 할 수 있습니다. 이를 수행하는 방법에는 여러 가지가 있습니다. 나는 Thonny와 그의 Micropython 지원을 사용했습니다
thonny PIPENV를 통해 설치되어 IDE를 시작하기 위해 다음과 같이 전화하십시오.
~ /micropython-sonoff-webswitch$ make thonnyThonny의 첫 단계 :
Tools / Options / Interpreter 선택 : MicroPython (ESP8266)files 활성화 탭 : View / Files 이제 Ctrl-F2 를 통해 마이크로 파이썬 대체에 액세스 할 수 있어야합니다. 장치에서 스크립트를 시작할 수도 있습니다.
This computer 탭에서 : .../micropython-sonoff-webswitch/helpersmpy_information.py 클릭하여 파일을 엽니F5 로 장치에서 스크립트를 실행하십시오 Flash FileSystem을 littlefs2 로 포맷 한 후 Soft-OTA를 사용하여 누락 된 파일을 장치에 복사합니다.
장치는 다른 WLAN에 로그인 할 수 있으려면 SSID/암호가 필요합니다. 파일 _config_wifi.json 파일에서 자격 증명을 읽습니다. 이 파일은 만들어야합니다. 템플릿은 _config_wifi-example.json입니다.
_config_wifi-example.json을 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에 연결된 후 소프트 오타를 실행하고 누락 된 모든 src 파일을 복사 할 수 있습니다.
다음과 같이 Soft-OTA 서버를 시작하십시오.
~ /micropython-sonoff-webswitch$ make soft-ota 동시에 Open .../micropython-sonoff-webswitch/src/ota_client.py in Thonny에서 F5 를 통해 시작하십시오.
이제 소프트 오타를 실행해야합니다.
src 의 모든 누락 된/새 파일이 장치로 전송됩니다.이제 장치 설정이 완료되었습니다.)
참고 : 두 가지 종류의 OTA 업데이트가 있습니다.
Yaota8266을 통한 '하드'OTA는 진행중인 작업입니다. #33 참조
초기 설정 후 및 모든 것이 작동하고 장치가 WLAN에 연결되면 OTA 업데이트를 사용할 수 있습니다.
장치는 모든 부팅에서 /src/ota_client.py를 실행합니다.
스크립트는 OTA 서버에 대해 얼마의 시간을 기다리며 시간 초과 후 일반 웹 서버가 시작됩니다.
soft-OTA Server 시작하려면 다음을 수행하십시오.
~ /micropython-sonoff-webswitch$ make soft-ota서버가 실행되는 경우 : 장치를 재부팅하고 OTA 서버의 출력을 확인하십시오.
OTA 업데이트 구현은 다음과 같습니다.
mpy_cross 버전과 장치 마이크로 파이썬 버전을 비교하십시오 (일치하지 않으면 : 업데이트 거부).mpy 파일이 전송 된 경우 장치에서 기존 .py 파일을 제거하십시오../bdist/ 컴파일 된 .mpy 파일 (및 .html , .css 파일)은 soft-OTA 의 장치에 업로드됩니다../build/ 플래시 및 hard-OTA 위한 컴파일 된 펌웨어 파일 ( firmware-*.bin 및 yaota8266.bin )./docker-yaota8266/ git submodule https://github.com/jedie/docker-yaota8266을 통해 yaota8266.bin docker를 통해./helpers/ 부트 스트랩 및 개발을위한 일부 장치 테스트/도우미 스크립트./micropython_config/ Micropython 펌웨어를 컴파일하는 데 사용되는 구성 파일./mpy_tests/ Micropython 장치에서 실행할 수있는 테스트 (Mocks와 함께 Pytest에서도 실행할 것입니다)./sdist/ utils/make_sdist.py 통해 생성 된 펌웨어로 연결되는 모든 모듈이 포함되어 있습니다../soft_ota/ OTA 서버의 소스 코드./src/ 장치 소스 파일./tests/ 일부 pytest 파일 (cpython으로 호스트에서 실행)./utils/ 로컬 런을위한 Utils (컴파일, 코드 린트, mpycntrl과 동기화) yaota8266.bin 컴파일하십시오 : https://github.com/jedie/docker-yaota8266