Lewati ke konten

Sumber Modbus

Sentinel dapat menjadi master Modbus RTU lewat RS-485 dan membaca hingga 40 perangkat (meter listrik, transmitter suhu dan kelembapan, dan sejenisnya). Setiap register yang dibaca menjadi metrik biasa di telemetri, event, dan rules.

Hal Isi
Pin SNT-G1 TX GPIO43, RX GPIO44, DE/RE GPIO40 (arah lewat RTS). PZEM-004T bawaan memakai UART lain, jadi tidak bentrok
Transceiver modul RS-485 terisolasi. Modul auto-direction tanpa pin DE juga bisa dipakai (DE tidak disambung). Papan tidak punya isolasi RS-485 sendiri
Sambungan A, B, dan GND ke perangkat. Jangan sambungkan pin +5V modul perangkat (mis. PZEM-016) ke catu Sentinel; sambungkan hanya A, B, dan GND
Bus terminasi 120 Ω di kedua ujung; bias di satu titik untuk bus panjang
DE saat boot beri pull-down 10 kΩ pada DE agar log boot tidak masuk ke bus

Pemasangan memakai dua hal:

  1. Profil perangkat: peta register satu tipe perangkat (mis. Eastron SDM120). Lihat Profil Modbus. Sentinel membawa profil bawaan Eastron SDM120 dan Peacefair PZEM-016.
  2. Sumber: satu pemasangan perangkat (alamat, awalan nama) yang merujuk sebuah profil.

Nama metrik di telemetri = <awalan>_<akhiran>, mis. awalan rak1 dengan akhiran voltage menjadi rak1_voltage.

Topik m/<workspace>/c/<channel>/<mac>/sources (retained, QoS 1). Pesan mengganti seluruh set.

{
"sources_ver": 1,
"buses": [{"id": "uart1", "type": "modbus_rtu", "baud": 9600, "parity": "N", "stop": 1}],
"sources": [
{"id": "grid", "driver": "modbus", "profile": "eastron-sdm120", "pv": 1, "addr": 1, "prefix": "grid", "label": "Meter utama"},
{"id": "rak1", "driver": "modbus", "profile": "eastron-sdm120", "pv": 1, "addr": 2, "prefix": "rak1_pdu", "label": "Meter rak 1"}
]
}
Field sumber Arti
id tetap seumur hidup, [a-z][a-z0-9_]{0,11}, unik. Mengganti id = sumber baru
driver modbus
profile, pv id profil dan versinya (pemasangan mengunci versi, jadi memperbarui profil tidak mengubah node yang berjalan tanpa pesan sources baru)
addr alamat slave Modbus 1…247, unik di bus
prefix awalan nama metrik (bawaan id). Pakai nama pendek (2–6 karakter); lihat Kapasitas
label maks. 12 karakter, untuk tampilan
interval_s, timeout_ms, retries menimpa nilai poll profil
en false = tidak dibaca
group, group_ch, deltas kelompok dan ambang telemetri (Kelompok telemetri)
names mengganti nama metrik per kanal

buses memuat pengaturan bus uart1: baud 1200…115200, parity N/E/O, stop 1/2. Satu bus, satu pengaturan: perangkat dengan baud berbeda tidak bisa berbagi bus. Bus selalu bernama uart1 di pesan (nama logis).

Sumber juga bisa memakai regs inline (tanpa profil) untuk perangkat sekali pakai, dengan ch, fn (1–4), reg (berbasis nol), type (u16, s16, u32, s32, f32, bit), words/bytes (urutan), scale, offset, name, unit, dec.

Batas Nilai
Sumber 40
Metrik sumber 400
Register per sumber 16
Ukuran pesan sources G1 6144 B

Sumber yang melewati batas ditolak (melebihi batas metrik); sumber lain tetap dimuat. Pesan yang tidak valid seluruhnya ditolak dan set lama tetap berjalan.

Tab Sumber di antarmuka web: pilih profil, isi alamat dan awalan, dan halaman menampilkan nama metrik yang akan terbentuk beserta satuan dan jenisnya. Halaman menolak sejak awal nama sumber, awalan, alamat, atau nama metrik yang pasti ditolak node. Tab Perangkat memantau status tiap sumber.

Tab Sumber antarmuka web.
Tab Sumber: bus RS-485 dan tambah sumber dari profil.

Dari terminal:

Terminal window
python3 Tools/celestianctl.py sources <mac> --file Tools/sources-contoh-profil.json
python3 Tools/celestianctl.py profiles <mac> --sources Tools/sources-contoh-profil.json

Perintah kedua mengirim ke node profil yang dirujuk berkas sources, dari pustaka.

Status Arti dan pemeriksaan
ok menjawab dan datanya segar
no_response kabel A/B tertukar → alamat slave → baud/paritas → terminasi 120 Ω → alamat register berbasis 0/1
crc_error biasanya derau atau paritas
bad_data respons tidak sesuai profil
bus_fault bus bermasalah
disabled en = false
bad_config konfigurasi sumber tidak valid

Kegagalan berulang mundur bertahap (interval × 2ⁿ, maks. 60 detik), tidak menahan sumber lain. Metrik yang nilainya basi (lebih tua dari tiga kali interval) tidak dikirim. Diagnostik per sumber: sources/reported (tidak periodik; diterbitkan saat tersambung dan saat set berubah).

Parameter bus yang salah (baud) membuat semua sumber diam tanpa tanda jelas, karena itu sources (dan profiles) mendukung confirm_s seperti rules: set berjalan sementara, cmd sources_confirm dengan hash menjadikannya permanen, dan tanpa konfirmasi node kembali ke set lama. cmd sources_rollback membatalkan yang menunggu atau kembali ke set sebelumnya; cmd get_sources mengunduh set yang berlaku (…/sources/current).

Terminal window
python3 Tools/celestianctl.py sources <mac> --file sources.json --confirm-s 120
python3 Tools/celestianctl.py sources <mac> --confirm 8a3030f6
python3 Tools/celestianctl.py sources <mac> --rollback

Nama metrik: huruf kecil, angka, _; diawali huruf; maks. 24 karakter; unik di seluruh metrik node termasuk sensor bawaan; tidak boleh berawalan alarm_, rule_, src_, flag_ atau nama tetap seperti voltage. Awalan sumber membuat metrik Modbus berbeda dari voltage, power_draw, … bawaan PZEM-004T.