Lewati ke konten

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.

  • http://sentinel-<6 digit terakhir MAC>.local lewat mDNS (macOS dan iOS langsung; Windows 10+ dan Linux biasanya). Contoh: MAC a2cb8ff8768d → http://sentinel-f8768d.local.
  • Atau lewat IP: tampil di LCD (menu Jaringan), di status MQTT (ip), dan di tabel DHCP gateway.
  • Pengguna admin, password bawaan sentinel (sama di semua unit). Ganti di tab Sistem. Banner kuning muncul selama password masih bawaan, dan config/reported memuat web_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.

Layar masuk antarmuka web: kolom pengguna dan password.
Layar masuk. Halaman hanya bisa dipakai satu orang 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).

Tab Status antarmuka web: jaringan, tanggal dan waktu, suhu, input digital, output, dan listrik.
Tab Status.
Tab Konfigurasi antarmuka web: bagian Koneksi dengan workspace, channel, host broker, mode koneksi, port, dan pengguna MQTT.
Tab Konfigurasi (nilai workspace, channel, dan pengguna MQTT disamarkan).
Tab Kontrol antarmuka web: identify, reboot, pindai bus 1-Wire, dan tombol hidup/mati output.
Tab Kontrol.
Tab Perangkat antarmuka web: ringkasan perangkat Modbus.
Tab Perangkat (belum ada sumber Modbus).
Tab Sumber antarmuka web: pengaturan bus RS-485 dan form tambah sumber dari profil.
Tab Sumber.
Tab Kelompok antarmuka web: enam kelompok telemetri bawaan dengan tombol Ubah.
Tab Kelompok.
Tab Rules antarmuka web: ringkasan set rules di perangkat.
Tab Rules.
Tab Sistem antarmuka web: informasi perangkat, pembaruan firmware, dan ganti password.
Tab Sistem.

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.

  • 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_config dan config dari 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 sesi SameSite=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.

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.

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.

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

Terminal window
curl -c jar -H 'X-Sentinel: 1' -d '{"password":"<password>"}' http://sentinel-f8768d.local/api/login
curl -b jar http://sentinel-f8768d.local/api/info
curl -b jar -X POST -H 'X-Sentinel: 1' http://sentinel-f8768d.local/api/logout

HTTP Basic (curl -u) tidak diterima.