Micropython Project, um den Sonoff WiFi Smart Socket aus der Cloud zu befreien, indem Sie einen Webserver auf dem Gerät ausführen.
Getestete Geräte:
Das Gerät erledigt dies bei jedem Stiefel:
Einige Anmerkungen zur Timer -Funktionalität:
Das Gerät versucht immer, die Leistung anhand des aktuellen Timers ein/auszuschalten. Auch nach einem Stromausfall. Dies funktioniert jedoch nur dann, wenn die aktuelle Zeit vom RTC korrekt festgelegt wird. Die aktuelle Zeit wird automatisch über NTP Sync aus dem Internet abgerufen. Am Boot und auch nach dem Start wiederholt. Dies kann natürlich nur funktionieren, wenn das Gerät über WLAN mit dem Internet verbunden ist.)
Sie können den aktuellen Timer jederzeit "überschreiben", indem Sie die Taste auf dem Gerät drücken. Dieser Überschreiben bleibt bis zum nächsten Timer. Nach einem Stromausfall wird die "überschreibenden" Informationen gelöscht und der Timer reguliert die Stromversorgung erneut.
Dinge, die in der nahen Funktion implementiert werden:
weiter weg:
Die Webseite sieht so aus:
Alle vorhandenen Screenshots finden Sie hier:
3.3V , GND , TX und RX StiftenSehr gute Informationen zum Einstieg finden Sie hier:
config.h und kompilieren Sie Yaota8266 und Firmware_config_wifi.json Klonen Sie die Quellen und setzen Sie Virtualenv über pipenv ein:
~ $ git clone https://github.com/jedie/micropython-sonoff-webswitch.git
~ $ cd micropython-sonoff-webswitch
~ /micropython-sonoff-webswitch$ make updateUm alle Ziele machen zu sehen, rufen Sie einfach auf, z. B.: zB:
~ /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 Sie müssen docker-yaota8266/yaota8266/config.h erstellen und Ihre RSA-Modullinie einfügen.
So generieren Sie Ihre RSA -Tasten und zeigen Sie die benötigte Zeile für config.h an. Rufen Sie einfach an:
~ /micropython-sonoff-webswitch$ make yaota8266-rsa-keys
...
Copy & paste this RSA modulus line into your config.h:
----------------------------------------------------------------------------------------------------
# define MODULUS "xcex4axafx65x0dx4ax74xdaxc1x30x59x80xcfxddxe8x2ax2ex1dxf7xa8xc9x6cxa9x4ax2cxb7x8ax5ax2ax25xc0x2bx7bx2fx58x4cxa8xcbx82x07x06x08x7exffx1fxcex47x13x67x94x5fx9axacx5ex7dxcfx63xf0x08xe9x51x98x95x01"
----------------------------------------------------------------------------------------------------Die generierten RSA -Schlüsseldateien finden Sie hier:
docker-yaota8266/yaota8266/ota-client/priv.keydocker-yaota8266/yaota8266/ota-client/pub.keySie sollten diese Dateien sichern.
Nachdem Sie Ihre eigenen RSA-Tasten und config.h erstellt haben, können Sie yaota8266.bin und firmware-ota.bin , z. B. kompilieren:
~ /micropython-sonoff-webswitch$ make yaota8266-build
~ /micropython-sonoff-webswitch$ make build-ota-firmwareDie kompilierten Dateien werden hier gespeichert:
~/micropython-sonoff-webswitch/build/yaota8266.bin~/micropython-sonoff-webswitch/build/firmware-ota.bin <-Für das Blinken~/micropython-sonoff-webswitch/build/firmware-ota.bin.ota <-wird im Hard-OTA-Prozess verwendetESP8266 muss in den Programmiermodus eingebaut werden, bevor die Firmware hochgeladen werden kann. Um den ESP8266 in den Programmiermodus zu setzen:
Möglicherweise müssen Sie dem Benutzer die Berechtigungen geben, auf den USB -Anschluss zuzugreifen, z. B. sudo usermod -a -G dialout $USER sonst erhalten Sie eine Fehlermeldung wie: Permission denied: '/dev/ttyUSB0'
Jetzt kann esptool verwendet werden. Aber nur für eine Operation! Nach jedem Esptool -Anruf müssen Sie das Gerät vom USB trennen und diese Prozedur wiederholen!
Beim ersten Mal muss der Flash -Speicher gelöscht werden, rufen Sie an:
~ /micropython-sonoff-webswitch$ make erase-flash Nach erase-flash und nach dem Anrufen make yaota8266-build und make build-ota-firmware können Sie Ihr Gerät blinken:
# 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 : Diese Flash -Befehle beziehen sich auf das Sonoff -Gerät und funktionieren möglicherweise nicht auf anderen ESP8266 -Geräten!
Für andere Geräte verwenden Sie esptool einfach direkt, z. B.:
~ /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.binNotiz:
Die Datei firmware-ota.bin muss mit esptool.py nicht der firmware-ota.bin.ota sein! Diese Datei ist UES im Hard-OTA-Update-Prozess.
Weitere Informationen zum Blinken finden Sie in der offiziellen Dokumentation hier: http://docs.micropython.org/en/latest/esp8266/tutorial/intro.html
Sobald Sie die Firmware auf dem Gerät haben, können Sie auf die Micropython Repl (Python -Eingabeaufforderung) zugreifen. Es gibt verschiedene Möglichkeiten, dies zu tun. Ich habe Thonny und seine Mikropython -Unterstützung verwendet
thonny ist über Pipenv installiert, um die IDE zu starten. Rufen Sie einfach an:
~ /micropython-sonoff-webswitch$ make thonnyErste Schritte in Thonny:
Tools / Options / Interpreter auswählen: MicroPython (ESP8266)files aktivieren: View / Files Jetzt sollten Sie in der Lage sein, über Ctrl-F2 auf die Micropython Repl zugreifen zu können. Sie können auch Skripte auf dem Gerät starten:
This computer Registerkarte finden Sie: .../micropython-sonoff-webswitch/helpersmpy_information.py im EditorF5 aus Formatieren Sie nach dem Flash-Dateisystem als littlefs2 : Kopieren Sie fehlende Dateien mit Soft-OTA auf das Gerät:
Das Gerät benötigt SSID/Passwörter, um sich bei verschiedenen WLANs anzumelden. Es liest die Anmeldeinformationen aus der Datei _config_wifi.json . Diese Datei muss erstellt werden. Die Vorlage ist _config_wifi-example.json.
Kopieren und bearbeiten _config_wifi-example.json an src/_config_wifi.json
Alle fehlenden Dateien in src werden über Soft-OTA auf das Gerät kopiert.
Um das Gerät auf dem Fauststart mit Ihrem WLAN -Netzwerk zu verbinden, bearbeiten und führen Sie dies aus:
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 ()) Kopieren Sie einfach diesen Code -Snippet in Thonny IDE, fügen Sie Ihre Anmeldeinformationen ein und führen Sie ihn über F5 aus
Nachdem das Gerät mit Ihrem WLAN verbunden ist, kann es Soft-OTA ausführen und alle fehlenden src Dateien kopieren.
Starten Sie den Soft-Ota-Server mit:
~ /micropython-sonoff-webswitch$ make soft-ota Gleichzeitig öffnen Sie .../micropython-sonoff-webswitch/src/ota_client.py in Thonny und starten Sie es über F5 .
Jetzt sollte der Soft-Ota ausgeführt werden:
src werden an das Gerät übertragenJetzt ist das Geräte -Setup fertig;)
Hinweis : Es gibt zwei Arten von OTA -Updates:
Die "harte" OTA über Yaota8266 ist in der Progress, siehe: #33
Nach dem ersten Setup und wenn alles funktioniert und das Gerät mit Ihrem WLAN verbunden ist, können Sie OTA -Updates verwenden.
Das Gerät wird für jeden Start die /src/ota_client.py ausgeführt.
Das Skript wartet einige Zeit auf den OTA -Server, und nach der Zeitüberschreitung wird der normale Webserver gestartet.
Um den soft-OTA Server zu starten, tun Sie dies:
~ /micropython-sonoff-webswitch$ make soft-otaWenn der Server ausgeführt wird: Starten Sie das Gerät neu und schauen Sie sich die Ausgabe des OTA -Servers an.
Die OTA -Update -Implementierung erfolgt:
mpy_cross -Version (falls nicht übereinstimmen: Update verweigern)..py -Datei auf dem Gerät, wenn .mpy -Datei gesendet wurde./bdist/ - kompilierte .mpy -Dateien (und .html , .css -Dateien), die in soft-OTA auf das Gerät hochgeladen werden./build/ Firmware-Dateien ( firmware-*.bin und yaota8266.bin ) für Flashen und hard-OTA./docker-yaota8266/ submodule https://github.com/jedie/docker-yaota8266 zum kompilieren yaota8266.bin über Docker./helpers/ - Einige Gerätetests/Helfer -Skripte für Bootstrap und Entwicklung./micropython_config/ - Konfigurationsdateien, die zur Kompilierung von Micropython -Firmware verwendet werden./mpy_tests/ - Tests, die auf dem Micropython -Gerät durchgeführt werden können (werden auch von PyTest mit Mocks durchgeführt)./sdist/ - Enthält alle Module, die in Firmware gefriert werden, die über utils/make_sdist.py erstellt wurden./soft_ota/ - Quellcode des OTA -Servers./src/ - Gerätequelldateien./tests/ - Einige PyTest -Dateien (auf dem Host mit CPython ausgeführt)./utils/ - utils für lokaler Lauf (kompilieren, Code Lint, Synchronisierung mit mpycntrl) yaota8266.bin über Docker: https://github.com/jedie/docker-yaota8266