Lewati ke konten

Simulator celestian-sim

celestian-sim adalah program command-line yang berpura-pura menjadi device atau gateway: tersambung ke broker dengan kredensial device sungguhan, lalu mengirim data sensor secara berkala. Berguna untuk mencoba platform, mengisi dashboard, menguji rule dan alarm, dan beban ringan.

  • Satu biner statis untuk Linux dan macOS (amd64 dan arm64), tanpa dependensi.
  • Berhenti rapi dengan Ctrl+C, dan menyambung ulang otomatis bila broker terputus.
  • Berjalan baik di dalam tmux.

Simulator memakai akun device sungguhan:

  1. Buat channel (misalnya route telemetri-gudang).
  2. Buat device (satu per perangkat tiruan; untuk gateway, nyalakan mode gateway). Catat ID dan key (hanya tampil sekali).
  3. Beri koneksi publish ke channel.
  4. Pasang rule penyimpanan (SenML) pada channel. Tanpa rule, pesan diterima tetapi tidak tersimpan.

Profil bawaan edge meniru edge node dengan 12 besaran yang saling berkaitan, bukan acak bebas:

Nama Satuan Cara dibangkitkan
temp_inlet Cel Sinus 20,5 sampai 24,5 (siklus bisa diubah) dengan derau.
temp_outlet Cel Inlet + 2,5 + 0,0072 × daya: makin berat beban, makin panas.
temp_ambient Cel Inlet + 1,7 + derau (opsional).
humidity %RH Sekitar 55, turun sedikit bila lebih hangat (opsional).
voltage V Sekitar 230 dengan drift; sesekali drop 8 sampai 15 V.
current A Dihitung = daya / (tegangan × faktor daya).
power_draw W Sekitar 950 ± 180.
energy kWh Akumulasi daya terhadap waktu.
frequency Hz 50 ± 0,1.
power_factor / Sekitar 0,97.
uptime s Bertambah bersama waktu.
heap_free By Sekitar 218000, turun pelan lalu pulih.

Format payload dipilih dengan -format senml (bawaan), flat (SenFlat v1), atau flat2 (SenFlat v2). Semua nama metrik ada di Katalog Metrik bawaan. Opsi -profile rack memakai profil lama (T, RH, V, I, S1, S2), dan -no-sht41 menghilangkan temp_ambient dan humidity.

Terminal window
./celestian-sim device \
-broker celestian.contoh.id:1883 -workspace gudang-nusantara -channel telemetri-gudang \
-id <id-device> -key '<device-key>' -name ruang-a1 -interval 5s

Data masuk ke topik m/gudang-nusantara/c/telemetri-gudang/ruang-a1.

Opsi ditulis setelah subperintah: celestian-sim device -format flat2 -once …. Memakai variabel lingkungan agar key tidak terlihat di daftar proses:

Terminal window
export CELESTIAN_SIM_BROKER=celestian.contoh.id:1883 CELESTIAN_SIM_WORKSPACE=gudang-nusantara CELESTIAN_SIM_CHANNEL=telemetri-gudang
read -rs CELESTIAN_SIM_KEY; export CELESTIAN_SIM_KEY
./celestian-sim device -id <id-device> -name ruang-a1
Opsi Arti
-broker host[:port], mqtt://host:1883, atau mqtts://host:8883 (TLS).
-workspace, -channel Route atau UUID.
-id, -key ID dan device key.
-name, -subtopic Label dan subtopik.
-interval Jeda kirim (bawaan 10 detik).
-qos 1 (bawaan) atau 0.
-format senml, flat, atau flat2.
-speed N Mempercepat waktu simulasi (sinus dan pergantian pintu).
-temp-period Periode sinus suhu (bawaan 1 jam).
-count N, -once Berhenti setelah N kali kirim.
-dry-run Cetak payload tanpa tersambung.
-seed Benih acak agar hasil bisa diulang.
-children, -gateway-mode, -jitter Khusus gateway.

Profil edge juga meniru topik firmware. Tiap node mengirim ke <node>/telemetry (tiap interval), <node>/event (hanya saat pintu berganti), dan <node>/status (retained saat tersambung; {state: offline} sebagai LWT dan saat berhenti wajar). Node juga berlangganan <node>/config dan <node>/cmd dan menjawab di config/reported dan cmd/result (aksi reboot, identify, ota, publish).

celestian-sim history meniru gateway yang mengirim data tertahan setelah koneksi pulih (SenFlat v2, h=1), untuk menguji sisi penerima: urutan, duplikat, waktu lampau, jam salah, dan batas ukuran.

Terminal window
# 2 jam riwayat, 3 anak, urutan diacak, 30% dikirim ulang, satu pesan terkini lebih dulu
./celestian-sim history -broker host:1883 -workspace ws -channel ch -id <id-gateway> -key <key> \
-children 3 -span 2h -step 10s -chunk 60 -order shuffle -dup 0.3 -live

Opsi: -span, -step, -end, -chunk, -order asc|desc|shuffle, -dup F, -live, -bad-clock ts0|range, -t0 first|last, -q-start, -delay, -oversize. Di akhir, simulator mencetak harapan (jumlah titik yang seharusnya tersimpan, kiriman ulang yang seharusnya terbuang, dan pesan yang seharusnya ditolak) untuk dicocokkan dengan Celestian.

celestian-sim sentinel meniru node Sentinel SNT-G1 yang tersambung anonim ke Mosquitto gateway lewat MQTT 5, dengan metrik di1-di4, do1-do4, suhu, kelembapan, listrik, uptime, dan lat/long bergerak. Node menerima config (divalidasi seperti firmware), cmd, dan rules (dievaluasi dan menggerakkan output).

Terminal window
./celestian-sim sentinel # satu node ke 127.0.0.1:11884
./celestian-sim sentinel -nodes a2cb8ff8768d,02aabbccdd02 -interval 5s
./celestian-sim sentinel -dry-run -once # lihat pesan tanpa broker
  • Lihat siklus penuh dalam menit: -speed 120 -interval 2s.
  • Siklus suhu harian: -temp-period 24h.
  • Jumlah pesan terbatas: -count 30.
  • Menguji alarm: buat rule dengan kondisi temp_inlet > 23.5 pada channel yang sama (contoh).
  • Anak terdaftar di Roster: jalankan gateway sekali, buka tab Roster, lalu Daftarkan sebagai device.
Pesan atau gejala Penyebab umum
ditolak broker: username atau password salah ID atau key salah, atau key sudah dibuat ulang.
client ID ditolak Device nonaktif, atau (produksi) -client-id tidak diawali ID device.
koneksi diputus broker tepat setelah tersambung Device belum punya koneksi publish ke channel itu, atau workspace dan channel salah.
tidak ada PUBACK Broker menolak pesan; periksa koneksi publish dan topik.