Lewati ke konten

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/….

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:

  1. Folder dan nama berkas per model: edge-snt-g1-idf-<versi>.bin di firmware/snt-g1/. Folder dipasang ke kontainer nginx apa adanya; .bin di dalamnya tidak masuk git.
  2. 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.

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):

Terminal window
curl -sI http://127.0.0.1:8080/fw/abc/x.bin

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>"}

Pindahkan semua .bin di firmware/ ke firmware/snt-g1/, lalu docker compose up -d supaya kontainer OTA memakai konfigurasi baru:

Terminal window
mkdir -p firmware/snt-g1 firmware/snt-g2 && mv firmware/*.bin firmware/snt-g1/