マイクロパイソンプロジェクトは、デバイスでWebサーバーを実行して、クラウドからSonoff WiFiスマートソケットをクラウドから解放します。
テストされたデバイス:
デバイスはすべてのブーツでこれを行います:
タイマー機能に関するいくつかのメモ:
デバイスは、現在のタイマーに基づいて常に電源をオン/オフにしようとします。停電後でも。ただし、現在の時間がRTCによって正しく設定されている場合にのみ、これは正しく機能します。現在の時刻は、NTP Syncを介してインターネットから自動的に取得されます。ブートで、またスタート後に繰り返されます。もちろん、これは、デバイスがWiFiを介してインターネットに接続されている場合にのみ機能します;)
デバイスのボタンを押すと、いつでも現在のタイマーを「上書き」できます。この上書きは、次のタイマーまでとどまります。停電後、「上書き」情報が削除され、タイマーが再び電源を調整します。
近くの機能に実装されるもの:
さらに先に:
Webページは次のようになります:
既存のスクリーンショットはすべてここにあります:
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をプログラミングモードにするには:
たぶん、ユーザーPermission denied: '/dev/ttyUSB0' USBポートにアクセスする許可を提供する必要がありますsudo usermod -a -G dialout $USER
esptoolを使用できるようになりました。しかし、 1つの操作の場合だけです!各エスプトールコールの後、デバイスを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アップデートプロセスのUEです。
フラッシュの詳細については、公式ドキュメントをご覧ください:http://docs.micropython.org/en/latest/esp8266/tutorial/intro.html
デバイスにファームウェアがあると、Micropython Repl(Python Prompt)にアクセスできます。これを行うにはさまざまな方法があります。 Thonnyと彼のMicropythonサポートを使用しました
thonnyはPipenvを介してインストールされ、IDEを開始するには、次のように電話してください。
~ /micropython-sonoff-webswitch$ make thonnyトニーの最初のステップ:
Tools / Options / Interpreter選択: MicroPython (ESP8266)filesをアクティブにしてください: View / Filesこれで、 Ctrl-F2を介してMicropython REPLにアクセスできるようになりました。デバイスでスクリプトを開始することもできます。
This computer ]タブでは、 .../micropython-sonoff-webswitch/helpersに移動しますmpy_information.py in the EditorF5でデバイス上のスクリプトを実行しますFlashファイルシステムをlittlefs2としてフォーマットした後:Soft-OTAを使用して、欠落しているファイルをデバイスにコピーします。
デバイスには、さまざまなWLANにログインできるようにSSID/パスワードが必要です。ファイル_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ファイルをコピーできます。
以下でソフトOTAサーバーを開始します
~ /micropython-sonoff-webswitch$ make soft-ota同時に、Open .../Micropython-Sonoff-Webswitch/Src/Ota_client.py in thonnyで、 F5経由で起動します。
これで、ソフトオタを実行する必要があります。
srcからのすべての欠落/新しいファイルがデバイスに転送されますこれで、デバイスのセットアップが完了しました;)
注:OTAの更新には2種類あります。
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/ soft-OTAのデバイスにアップロードされる.mpyファイル(および.html 、 .cssファイル)をコンパイルした./build/フラッシュおよびhard-OTAのためのファームウェアファイル( firmware-*.binおよびyaota8266.bin )./docker-yaota8266/ submodule https://github.com/jedie/docker-yaota8266はyaota8266.binをdocker経由でコンパイルします./helpers/ブートストラップと開発用のデバイステスト/ヘルパースクリプト./micropython_config/マイクロパイソンファームウェアのコンパイルに使用される構成ファイル./mpy_tests/マイクロパイソンデバイスで実行できるテスト(モックでpytestによっても実行されます)./sdist/ utils/make_sdist.pyを介して作成されたファームウェアにフリーズするすべてのモジュールが含まれています./soft_ota/ OTAサーバーのソースコード./src/デバイスソースファイル./tests/いくつかのpytestファイル(cpythonでホストで実行)./utils/ローカルランのためのutils(コンパイル、コードリント、mpycntrlと同期) yaota8266.binをコンパイルします