Sonoff-Diy-Ota-Firmware
Proses baris perintah untuk mengunggah firmware baru melalui udara ke perangkat DIY Sonoff menggunakan API REST http://developers.sonoff.tech/basicr3-rfr3-mini-http-api.html.
Dibuat menggunakan Python 3.8 di Ubuntu 20.04 dan diuji pada Sonoff Basic R3 dan Sonoff Mini.
Perangkat Sonoff harus dalam mode DIY dan di jaringan yang sama (sonoffdiy) dengan komputer yang menjalankan skrip ini.
Ini membutuhkan:
- DIY 1.0:
- Jumper pada pin yang ditunjuk
- Jaringan WiFi dengan SSID: Sonoffdiy dan Kata Sandi: 20170618SN
- DIY 2.0: Periksa http://developers.sonoff.tech/sonoff-diy-mode-api-protocol.html
Penggunaan yang Disarankan:
AppImage:
- Jika di Linux, unduh dan jalankan AppImage dari halaman rilis.
Lingkungan Virtual Python (Linux & Windows):
- Buat lingkungan virtual (venv atau conda atau yang lainnya):
python3 -m venv /path/to/new/virtual/environment
atau
conda create -n <environment_name> python=3.8
- Aktifkan lingkungan sesuai dengan lingkungan virtual Anda.
- Instal dependensi:
pip3 install -r requirements.txt
- Jalankan skrip:
Perintah mungkin berbeda dengan Windows.
Jangan mencoba untuk mem -flash firmware yang lebih besar dari 508KB. Gunakan sesuatu seperti Tasmota-lite.bin dan kemudian dari dalam Tasmota, kembalikan firmware lengkap.
Langkah Proses:
- Unduh File Firmware (misalnya Tasmota-lite.bin).
- Jalankan skrip Main.py.
- Tunggu sampai perangkat Anda ditemukan. Jika demikian, penemuan berhenti dengan menekan enter. Proses ini mendeteksi semua perangkat ewelink di jaringan menggunakan MDNS (terima kasih kepada Zeroconf https://pypi.org/project/zeroconf).
- Pilih perangkat untuk mengunggah firmware baru.
- Server HTTP dimulai (terima kasih kepada RangeHttpserver https://github.com/danvk/rangehttpserver) untuk melayani direktori firmware yang dipilih.
- Proses ini memastikan fungsionalitas OTA tidak terkunci, menggunakan permintaan istirahat yang sesuai.
- Kirim permintaan pos ke perangkat yang menyediakan tautan server HTTP dari firmware baru.
- Tidur 10 menit untuk memastikan bahwa transmisi sudah berakhir. Jika Anda melihatnya sudah berakhir (Tasmota wifi muncul), bunuh prosedur dengan Ctrl-C.
Catatan:
- Jika perangkat tidak menanggapi pesan MDNS, hapus sumber daya dan hubungkan lagi saat penemuan sedang berlangsung.
Ketergantungan:
- https://pypi.org/project/rangeHttpserver/
- https://pypi.org/project/zeroconf
- https://pypi.org/project/requests/
- https://pypi.org/project/simple-term-menu/
TODO:
- Menangani permintaan kode kesalahan.
- Tambahkan DockerFile.
Skrip -skrip ini dengan cepat dikembangkan untuk kebutuhan saya sendiri untuk memancarkan firmware baru ke perangkat Sonoff karena alat yang ada tampaknya terlalu rumit dan tidak dapat menggunakannya di Linux. Saya tidak menjamin itu berhasil pada kasus apa pun. Harap gunakan dengan risiko Anda sendiri.