Bridge ke Celestian
Gateway meneruskan pesan Sentinel ke Celestian lewat dua jalur: bridge Mosquitto untuk pesan status dan pengaturan, dan komponen history untuk telemetri dan event (Penyimpanan riwayat).
Pemetaan topik
Section titled “Pemetaan topik”Sentinel ── sentinel/<mac>/telemetry|event (anonim, LAN rak) ──▶ Mosquitto ──▶ history (antrean di disk) ──▶ m/<ws>/c/<ch>/<ID-gateway>/telemetry|event (SenFlat v2) ── status, config/reported, cmd/result, rules/reported, … ──▶ Mosquitto ──▶ bridge ──▶ m/<ws>/c/<ch>/<mac>/…| Lokal (LAN rak) | Celestian | Arah | Dibawa oleh |
|---|---|---|---|
sentinel/<mac>/telemetry, event |
m/<ws>/c/<ch>/<ID-gateway>/telemetry, event (banyak node dalam satu pesan SenFlat v2) |
naik | history |
sentinel/<mac>/status |
m/<ws>/c/<ch>/<mac>/status |
naik | bridge |
config/reported, cmd/result, rules/reported, rules/current, sources/reported, sources/current, profiles/reported, profiles/current, tgroups/reported, tgroups/current |
m/<ws>/c/<ch>/<mac>/… |
naik | bridge |
config, cmd, rules, sources, profiles, tgroups |
m/<ws>/c/<ch>/<mac>/… |
turun | bridge |
<ID-gateway> adalah UUID device gateway di Celestian. Telemetri dan event yang bukan SenFlat v2 (SenFlat v1, SenML; firmware lama atau payload_format bukan flat2) diteruskan history apa adanya ke m/<ws>/c/<ch>/<mac>/…, satu per satu, tanpa riwayat.
Mendaftarkan di Celestian
Section titled “Mendaftarkan di Celestian”- Buat device dengan Gateway mode untuk gateway ini dan simpan device key-nya.
- Hubungkan ke channel dengan tipe publish, dan subscribe bila ingin mengirim
config/cmdke node. - Node muncul di tab Roster gateway (dikenali dari MAC). Daftarkan sebagai device dengan Serial = MAC (huruf kecil, tanpa pemisah).
- Buat rule penyimpanan untuk channel itu; tanpa rule, pesan tidak disimpan.
clientid bridge wajib diawali ID device gateway (kebijakan prefix broker), mis. <ID-gateway>-bridge.
Memilih cara koneksi ke Celestian
Section titled “Memilih cara koneksi ke Celestian”Celestian punya tiga port broker: MQTT 3.1.1, MQTT 5, dan MQTTS (satu port untuk 3.1.1 dan 5). Gateway memakai satu dari empat cara, dan dua komponen yang bicara ke Celestian (history lewat .env, bridge lewat bridge.conf) harus memakai cara yang sama.
| Cara | Port bawaan | .env |
bridge.conf |
|---|---|---|---|
mqtt3 |
11883 | CELESTIAN_MODE=mqtt3 |
bridge_protocol_version mqttv311, address <host>:11883 |
mqtt5 (bawaan) |
11884 | CELESTIAN_MODE=mqtt5 |
bridge_protocol_version mqttv50, address <host>:11884 |
mqtts3 |
18883 | CELESTIAN_MODE=mqtts3 |
seperti mqtt3, address <host>:18883, ditambah bridge_cafile |
mqtts5 |
18883 | CELESTIAN_MODE=mqtts5 |
seperti mqtt5, address <host>:18883, ditambah bridge_cafile |
Port tiap jenis bisa diubah di .env: CELESTIAN_PORT_MQTT3, CELESTIAN_PORT_MQTT5, CELESTIAN_PORT_MQTTS. CELESTIAN_PORT (cara lama) bila diisi mengalahkan semuanya, jadi kosongkan saat berpindah cara.
Pada MQTT 3.1.1 tidak ada properti pesan (content type), jadi Celestian harus memperlakukan payload tanpa content type sebagai JSON.
CELESTIAN_HOST dan address harus berupa nama domain yang ada di sertifikat server (alamat IP gagal diverifikasi), dan pemeriksaan sertifikat tidak boleh dimatikan. Pilih satu sumber kepercayaan, dan samakan untuk history dan bridge:
| Sertifikat server | .env |
bridge.conf |
|---|---|---|
| CA sendiri (CA internal Celestian) | CELESTIAN_CA_FILE=/mosquitto/config/celestian-ca.crt |
bridge_cafile /mosquitto/config/celestian-ca.crt |
CA global (publik, mis. Let’s Encrypt; server memasang fullchain.pem) |
CELESTIAN_CA_FILE= (kosong: bundel CA sistem) |
bridge_cafile /etc/ssl/certs/ca-certificates.crt |
Simpan berkas CA sendiri di Gateway/mosquitto/celestian-ca.crt; satu berkas dipakai kedua komponen. Jangan pasang bridge_cafile dan bridge_capath bersamaan. Setelah mengubah:
docker compose up -d --build historydocker compose restart mosquittodocker compose logs history | head # menampilkan cara koneksi yang berlaku, mis. mqtts5 (MQTT 5 + TLS)Sesi bridge
Section titled “Sesi bridge”Bridge memakai cleansession false dan, untuk MQTT 5, bridge_session_expiry_interval 3600 (butuh Mosquitto 2.1 ke atas): sesi di broker pusat bertahan 1 jam setelah bridge putus, jadi perintah dari server selama WAN putus sebentar tetap sampai.