Berikut contoh dokumentasi lengkap MQTT Payload untuk Modbus Gateway ESP32 yang bisa langsung dipakai sebagai manual produk / dokumentasi user.
OSO Gateway
MQTT – Modbus Gateway Payload Documentation
OSO Gateway adalah perangkat Industrial IoT Gateway yang berfungsi menghubungkan perangkat Modbus RTU / Modbus TCP dengan MQTT Broker sehingga data PLC atau perangkat industri dapat dikirim ke cloud, dashboard, SCADA, atau Node-RED.
1. Arsitektur Sistem
Gateway bekerja sebagai bridge antara Modbus dan MQTT.
Modbus Device / PLC
│
│ Modbus RTU / TCP
▼
OSO Gateway
│
│ MQTT
▼
MQTT Broker
│
▼
Dashboard / NodeRED / Cloud / SCADA
Fungsi gateway:
-
Polling data Modbus
-
Publish data ke MQTT
-
Menerima command dari MQTT
-
Mengirim write command ke Modbus device
2. Struktur Topic MQTT
Gateway menggunakan dua topic utama.
| Topic | Fungsi |
|---|---|
gateway/cmd | Mengirim perintah Modbus |
gateway/data | Data Modbus dari gateway |
3. MQTT Command (Write Modbus)
Topic:
gateway/cmd
Payload:
{
"slave":1,
"fc":6,
"addr":0,
"value":1
}
Parameter:
| Field | Keterangan |
|---|---|
| slave | Modbus Slave ID |
| fc | Function Code |
| addr | Address register |
| value | Nilai yang akan ditulis |
4. Contoh Perintah Write Register
Payload:
{
"slave":1,
"fc":6,
"addr":0,
"value":1
}
Artinya gateway akan mengirim perintah Modbus:
Slave ID : 1
Function : 06 (Write Single Register)
Address : 0
Value : 1
Jika menggunakan addressing PLC standar:
40001 = 1
5. Contoh Write Coil
Payload:
{
"slave":1,
"fc":5,
"addr":0,
"value":1
}
Arti:
Slave 1
Write Coil
Address 0
Value ON
Value:
| Value | Status |
|---|---|
| 0 | OFF |
| 1 | ON |
6. Function Code yang Didukung
| FC | Nama | Fungsi |
|---|---|---|
| 1 | Read Coil | Membaca coil |
| 2 | Read Discrete Input | Membaca input |
| 3 | Read Holding Register | Membaca register |
| 4 | Read Input Register | Membaca input register |
| 5 | Write Single Coil | Menulis coil |
| 6 | Write Single Register | Menulis register |
7. Data yang Dikirim Gateway
Topic:
gateway/data
Contoh payload:
{
"gw": "esp32gw",
"data": {
"1:0": 1,
"1:1": 1111,
"2:0": 222,
"2:1": 2222
}
}
8. Penjelasan Field Payload
| Field | Keterangan |
|---|---|
| gw | Nama gateway |
| data | Data hasil polling Modbus |
9. Format Mapping Data
Format key pada field data:
slave:address
Contoh:
1:0
Artinya:
Slave ID : 1
Register : 0
Contoh lain:
2:1
Artinya:
Slave ID : 2
Register : 1
10. Contoh Interpretasi Data
Payload:
{
"gw": "esp32gw",
"data": {
"1:0": 1,
"1:1": 1111,
"2:0": 222,
"2:1": 2222
}
}
Interpretasi:
| Slave | Address | Value |
|---|---|---|
| 1 | 0 | 1 |
| 1 | 1 | 1111 |
| 2 | 0 | 222 |
| 2 | 1 | 2222 |
11. Contoh Integrasi Node-RED
Subscribe topic:
gateway/data
Untuk mengambil nilai:
msg.payload.data["1:0"]
Contoh penggunaan:
| Register | NodeRED |
|---|---|
| Slave1 Addr0 | msg.payload.data["1:0"] |
| Slave1 Addr1 | msg.payload.data["1:1"] |
| Slave2 Addr0 | msg.payload.data["2:0"] |
12. Contoh Testing dengan MQTT Explorer
Publish command:
Topic:
gateway/cmd
Payload:
{
"slave":2,
"fc":6,
"addr":1,
"value":123
}
Gateway akan menulis:
Slave ID : 2
Register : 1
Value : 123
13. Keunggulan Format Payload Ini
Keuntungan format ini:
✔ Ringkas
✔ Mudah diparse di ESP32
✔ Mendukung multi slave
✔ Mendukung multi register
✔ Mudah dipakai di NodeRED / SCADA
✔ Payload ringan untuk IoT
14. Contoh Flow Sistem IoT
PLC
│
│ Modbus RTU
▼
OSO Gateway
│
│ MQTT Publish
▼
MQTT Broker
│
├── NodeRED
├── SCADA
├── Dashboard Web
└── Cloud Database
.png)




