Sonoff-diy-ota-firmware
コマンドラインプロセスREST API http://developers.sonoff.tech/basicr3-rfr3-mini-http-api.htmlを使用して、新しいファームウェアを空中にsonoff diyデバイスにアップロードします。
Ubuntu 20.04でPython 3.8を使用して作成され、Sonoff Basic R3とSonoff Miniでテストされました。
Sonoffデバイスは、このスクリプトを実行しているコンピューターと同じネットワーク(Sonoffdiy)にある必要があります。
これには次のことが必要です。
- DIY 1.0:
- 指定されたピンのジャンパー
- SSIDを備えたWiFiネットワーク:Sonoffdiy and Password:20170618Sn
- DIY 2.0:http://developers.sonoff.tech/sonoff-diy-mode-api-protocol.htmlを確認してください
推奨用途:
Appimage:
- Linuxでの場合、[リリース]ページからAppimageをダウンロードして実行します。
Python仮想環境(Linux&Windows):
- 仮想環境(VENVまたはCONDAなど)を作成します。
python3 -m venv /path/to/new/virtual/environment
または
conda create -n <environment_name> python=3.8
- 仮想環境に応じて環境をアクティブにします。
- 依存関係をインストールします。
pip3 install -r requirements.txt
- スクリプトを実行します:
コマンドはWindowsで異なる場合があります。
508kbを超えるファームウェアをフラッシュしようとしないでください。 Tasmota-Lite.binのようなものを使用し、その後Tasmota内から、完全なファームウェアをフラッシュします。
プロセス手順:
- ファームウェアファイル(たとえばTasmota-Lite.binなど)をダウンロードします。
- main.pyスクリプトを実行します。
- デバイスが発見されるまで待ちます。その場合、Enterを押すことで発見が停止します。このプロセスは、MDNSを使用してネットワーク上のすべてのeWelinkデバイスを検出します(Zeroconf https://pypi.org/project/zeroconfのおかげ)。
- デバイスを選択して、新しいファームウェアをアップロードします。
- HTTPサーバーは(rangehttpserver https://github.com/danvk/rangehttpserverのおかげで)開始して、選択したファームウェアのディレクトリを提供します。
- このプロセスにより、適切なRESTリクエストを使用して、OTA機能がロック解除されていることを確認します。
- 新しいファームウェアのHTTPサーバーリンクを提供するデバイスにPOSTリクエストを送信します。
- トランスミッションが終了することを確認するために10分の睡眠。あなたがそれが終わったのを見るなら(Tasmota Wifiが現れます)、Ctrl-Cでプロセスを殺します。
注:
- デバイスがMDNSメッセージに応答しない場合、発見が進行中に電源を削除し、再度接続します。
依存関係:
- https://pypi.org/project/rangehttpserver/
- https://pypi.org/project/zeroconf
- https://pypi.org/project/requests/
- https://pypi.org/project/simple-menu/
TODO:
- リクエストエラーコードを処理します。
- dockerfileを追加します。
これらのスクリプトは、既存のツールが複雑すぎてLinuxで使用できなかったため、新しいファームウェアをSonoffデバイスにフラッシュするために私自身のニーズのためにすぐに開発されました。私はそれがどんなケースでも機能することを保証しません。あなた自身の責任でそれを使用してください。