OTA di gateway
Server OTA (nginx, port 8080) melayani berkas firmware ke node di LAN rak. Node mengubah URL relatif /fw/… menjadi http://<gateway>:8080/fw/….
Tiga jalur di /fw/
Section titled “Tiga jalur di /fw/”| Jalur | Dipakai untuk | Sumber berkas |
|---|---|---|
/fw/<token>/<berkas> |
rollout dari Celestian (menu Firmware OTA) | diteruskan ke Celestian, di-cache 7 hari di gateway: satu gelombang mengunduh sekali dari Celestian, dan berkas yang sudah ter-cache tetap tersaji saat WAN putus |
/fw/snt-g1/<berkas>, /fw/snt-g2/<berkas> |
pemasangan manual, satu folder per model | firmware/snt-g1/ dan firmware/snt-g2/ |
/fw/<berkas> (satu segmen, lama) |
hanya unit G1 yang sudah menyimpan URL jenis ini | firmware/snt-g1/ |
Header X-Cache-Status (MISS / HIT) pada jalur token membantu memeriksa cache.
Firmware model berbeda tidak boleh tertukar
Section titled “Firmware model berbeda tidak boleh tertukar”Pin dan perilaku output G1 dan G2 berbeda. Dua lapis pencegahan:
- Folder dan nama berkas per model:
edge-snt-g1-idf-<versi>.bindifirmware/snt-g1/. Folder dipasang ke kontainer nginx apa adanya;.bindi dalamnya tidak masuk git. - Node menolak image model lain. Setiap image memuat penanda model; node memeriksanya sebelum mengaktifkan image dan menolak yang tidak cocok. Berlaku untuk firmware yang membawa penanda ini.
Mengaktifkan rollout dari Celestian
Section titled “Mengaktifkan rollout dari Celestian”Isi di .env:
| Variabel | Isi |
|---|---|
CELESTIAN_WEB_URL |
alamat web Celestian yang menerbitkan token, tanpa jalur dan tanpa garis miring di akhir (mis. https://iot.contoh.id) |
CELESTIAN_WEB_HOST |
nama host (dan port bila bukan bawaan) untuk header Host |
Lalu docker compose up -d (membuat ulang kontainer ota). Tanpa itu node mendapat HTTP 503 pada rollout, sedangkan berkas lokal tetap jalan. Gateway butuh akses keluar (HTTPS) ke Celestian; node cukup menjangkau gateway.
Uji dari mesin gateway (token tak sah harus dijawab 403 oleh Celestian, bukan 404 atau galat koneksi):
curl -sI http://127.0.0.1:8080/fw/abc/x.binPemasangan manual satu node
Section titled “Pemasangan manual satu node”Letakkan berkas di firmware/snt-g1/, lalu publish ke m/<workspace>/c/<channel>/<mac>/cmd:
{"action":"ota","url":"/fw/snt-g1/edge-snt-g1-idf-0.21.1.bin","sha256":"<64 heksadesimal>"}Pindah dari susunan lama
Section titled “Pindah dari susunan lama”Pindahkan semua .bin di firmware/ ke firmware/snt-g1/, lalu docker compose up -d supaya kontainer OTA memakai konfigurasi baru:
mkdir -p firmware/snt-g1 firmware/snt-g2 && mv firmware/*.bin firmware/snt-g1/