Antarmuka web
Antarmuka web memungkinkan konfigurasi dan pemantauan lewat browser, tanpa kabel USB dan tanpa broker. Ia cocok untuk memperbaiki koneksi MQTT (mqtt_host, mqtt_mode, port, kredensial) yang tidak bisa diubah lewat config karena node belum tersambung ke broker.
Membuka
Section titled “Membuka”http://sentinel-<6 digit terakhir MAC>.locallewat mDNS (macOS dan iOS langsung; Windows 10+ dan Linux biasanya). Contoh: MACa2cb8ff8768d→http://sentinel-f8768d.local.- Atau lewat IP: tampil di LCD (menu Jaringan), di
statusMQTT (ip), dan di tabel DHCP gateway. - Pengguna
admin, password bawaansentinel(sama di semua unit). Ganti di tab Sistem. Banner kuning muncul selama password masih bawaan, danconfig/reportedmemuatweb_pw_default: true.
Masuk lewat formulir di halaman itu sendiri. Tombol Keluar ada di pojok kanan atas. Tombol EN | ID di pojok kanan atas mengganti bahasa antarmuka.

Sesi: satu pengguna pada satu waktu
Section titled “Sesi: satu pengguna pada satu waktu”- Hanya satu sesi untuk semua browser dan perangkat. Login yang berhasil mengambil alih: sesi lama langsung tidak berlaku dan halaman di sana menampilkan “Ada yang masuk dari browser atau perangkat lain”.
- Sesi berakhir sendiri setelah 10 menit tanpa aktivitas (klik, ketukan, tombol keyboard, atau gulir; pembaruan otomatis tab Status tidak dihitung).
- Keluar mengakhiri sesi di perangkat, jadi semua tab dan browser langsung tidak berlaku.
- Sesi hanya di RAM: reboot (termasuk setelah ganti firmware dan reset pabrik) mengakhiri sesi. Berpindah ke alamat IP lain juga berarti login baru, karena cookie berlaku per host.
| Tab | Fungsi |
|---|---|
| Status | jaringan (IP, gateway, MQTT, server NTP beserta status menjawab, sinkron NTP terakhir), tanggal dan jam perangkat, suhu, input, output, listrik, ringkasan perangkat Modbus, memori bebas (heap_free, heap_min) dan jumlah pesan keluar yang dibuang karena terlalu besar (oversize_dropped), alarm. Diperbarui tiap 3 detik |
| Konfigurasi | semua key (formulir dibuat dari skema firmware); hanya yang berubah dikirim; key yang ditolak ditandai beserta alasannya; perubahan koneksi memicu reboot. Termasuk pengisian CA sendiri untuk TLS |
| Rules | melihat dan menghapus rule (tidak menambah atau mengubah; itu urusan server atau celestianctl): ringkasan set (rules_ver, jumlah, ukuran, hash, sisa waktu konfirmasi), tiap rule dengan keadaannya, kondisi dan aksinya dalam kalimat, dan isi set sebagai JSON. Diperbarui tiap 4 detik |
| Perangkat | pantauan perangkat Modbus, hanya baca: ringkasan (OK, bermasalah, menunggu, nonaktif) dan satu baris per sumber. Klik baris untuk nilai metriknya; filter Tampilkan yang bermasalah saja |
| Sumber | pengaturan sumber Modbus dan bus RS-485, tambah sumber dari profil (menampilkan nama metrik yang akan terbentuk dan menolak sejak awal nama yang pasti ditolak node), daftar profil, dan impor profil. Lihat Sumber Modbus |
| Kelompok | editor kelompok telemetri dengan uji confirm_s dan tombol kembali. Lihat Kelompok telemetri |
| Kontrol | identify, reboot, pindai bus 1-Wire dan ikat ROM ke slot, hidupkan/matikan output |
| Sistem | informasi, perbarui firmware, ganti password, reset pabrik |
mqtt_pass hanya bisa ditulis: nilainya tidak pernah dikirim balik (halaman hanya tahu apakah terisi).
Tampilan tiap tab
Section titled “Tampilan tiap tab”







Memperbarui firmware dari web
Section titled “Memperbarui firmware dari web”Tab Sistem, kartu “Perbarui firmware”: pilih berkas firmware.bin, SHA-256 boleh diisi, lalu “Unggah dan pasang”. Cocok bila unit tidak punya jalur ke broker atau server OTA gateway.
- Halaman menolak berkas yang bukan image ESP32 atau lebih besar dari slot (6,25 MiB). Bila SHA-256 diisi, hash seluruh isi harus cocok.
- Image ditulis ke slot OTA cadangan (progres ditampilkan), lalu unit menyala ulang; versi lama tetap ada untuk rollback.
- Image baru berstatus “menunggu verifikasi”. Image yang dipasang lewat web dianggap sehat bila Ethernet stabil 60 detik dan Anda berhasil login ke web firmware barunya. Tanpa itu, setelah 10 menit unit kembali ke versi sebelumnya.
- Satu pembaruan pada satu waktu: bila OTA lewat MQTT sedang berjalan, unggahan ditolak, dan sebaliknya.
Lihat juga Firmware dan OTA.
Keamanan
Section titled “Keamanan”- HTTP biasa, tanpa TLS: password dan cookie sesi terkirim apa adanya di LAN. Pakai di jaringan yang dipercaya (LAN rak).
- Login gagal dibatasi per alamat klien: 5 kegagalan beruntun = ditutup 30 detik, lalu 60, 120, 240, 300 detik.
- Password disimpan sebagai hash ber-salt di area terpisah.
cmd reset_configdanconfigdari server tidak menyentuhnya, dan tidak pernah masuk laporan konfigurasi. Aturan password: 6–64 karakter ASCII. - Setiap permintaan POST wajib membawa header
X-Sentinel: 1, dan cookie sesiSameSite=Strict, sehingga halaman lain di browser tidak bisa memakai sesi yang tersimpan. - Satu sesi saja: siapa pun yang tahu password bisa mengeluarkan pengguna yang sedang masuk. Password adalah satu-satunya rahasia.
- Siapa pun yang punya password web bisa memasang firmware apa saja.
Lupa password
Section titled “Lupa password”Password hanya bisa dikembalikan ke bawaan lewat reset pabrik (yang juga menghapus setelan), yaitu lewat urutan sentuh di perangkat atau reset_factory di USB serial. Lihat Reset dan pindah rak.
Bahasa
Section titled “Bahasa”Antarmuka punya dua bahasa, Inggris (bawaan) dan Indonesia. Pilihan disimpan di perangkat, bukan di browser, jadi berlaku untuk semua browser dan bertahan setelah reboot atau OTA. Reset pabrik mengembalikan bahasa ke Inggris. LCD tidak terpengaruh dan tetap berbahasa Indonesia.
API HTTP
Section titled “API HTTP”Semua /api/* butuh sesi, kecuali /api/login. Tanpa sesi yang sah dibalas 401 berisi {"ok":false,"msg":"login diperlukan","reason":"none|idle|replaced|logout"}.
| Jalur | Isi |
|---|---|
POST /api/login |
{"user":"admin","password":"..."} → Set-Cookie: sentinel_sid=.... Dibatasi per alamat klien (429) |
POST /api/logout, GET /api/session |
akhiri sesi; perpanjang sesi |
GET /api/info, GET /api/status |
identitas dan jaringan; sama dengan perintah serial status |
GET /api/config, POST /api/config |
konfigurasi yang berlaku; kirim {"key":nilai,…} → {ok, changed, reboot, rejected} |
GET /api/schema |
daftar key: tipe, rentang, bawaan, perlu reboot |
POST /api/cmd |
{"action":"reboot|identify|rescan|output",…} |
GET /api/rules, POST /api/rules |
set rules yang berlaku; ganti seluruh set |
GET /api/devices |
ringkasan perangkat Modbus; /api/devices/<id> untuk satu sumber |
GET /api/sources, POST /api/sources, …/confirm, …/rollback |
sumber Modbus |
GET /api/profiles, POST /api/profiles, …/confirm, …/rollback |
profil Modbus |
GET /api/tgroups, POST /api/tgroups, …/confirm, …/rollback |
kelompok telemetri |
POST /api/firmware |
badan = isi firmware.bin (header X-Sentinel: 1, X-Sha256 opsional) |
POST /api/lang, POST /api/password |
bahasa; ganti password {"old":"…","new":"…"} |
POST /api/factory-reset |
{"password":"…","confirm":"RESET"} |
Contoh dengan curl (login sekali, simpan cookie; ini mengambil alih sesi browser yang sedang terbuka):
curl -c jar -H 'X-Sentinel: 1' -d '{"password":"<password>"}' http://sentinel-f8768d.local/api/logincurl -b jar http://sentinel-f8768d.local/api/infocurl -b jar -X POST -H 'X-Sentinel: 1' http://sentinel-f8768d.local/api/logoutHTTP Basic (curl -u) tidak diterima.