# ESP32 LoRa Gateway
## Pendahuluan
Proyek ini adalah sebuah Gateway LoRa serbaguna yang dibangun menggunakan ESP32. Perangkat ini dirancang untuk menjembatani komunikasi antara jaringan LoRa dengan jaringan lain seperti Ethernet (LAN) atau WiFi (WLAN), serta dengan perangkat Modbus (RTU dan TCP).
Gateway ini memiliki dua mode operasi utama, **Master** dan **Slave**, yang ditentukan saat kompilasi kode. Selain itu, terdapat **Mode Konfigurasi** yang memungkinkan pengguna untuk mengubah pengaturan perangkat melalui antarmuka web yang mudah digunakan.
## Fitur Utama
- **Dua Mode Utama:** Dapat berfungsi sebagai **Master** atau **Slave** dalam jaringan LoRa.
- **Konektivitas Fleksibel:**
- **Master Mode:** Mendukung koneksi ke jaringan via Ethernet (W5500) atau WiFi.
- **Slave Mode:** Mendukung mode **Modbus RTU** (melalui RS485/RS232) atau **Modbus TCP** (melalui WiFi).
- **Antarmuka Konfigurasi Web:** Mode Access Point (AP) khusus untuk konfigurasi perangkat melalui browser. Tidak perlu mengubah kode untuk pengaturan dasar.
- **Penyimpanan Konfigurasi:** Pengaturan disimpan secara permanen di memori non-volatile (NVS) ESP32.
- **Modbus RTU Mapping (Master Mode):** Memungkinkan pemetaan register Modbus dari beberapa slave ke alamat lokal.
- **Reboot Jarak Jauh:** Perangkat dapat di-reboot dari antarmuka web.
- **Dibangun dengan PlatformIO:** Memudahkan manajemen library dan proses build.
## Alur Komunikasi Modbus yang Didukung
Gateway ini secara efektif menjembatani sistem SCADA berbasis Modbus TCP ke perangkat Modbus di lapangan melalui jaringan LoRa. Berikut adalah alur yang didukung:
1. **Modbus TCP ke Modbus RTU (via LoRa)**
- **Alur:** `SCADA (TCP)` <-> `Master Gateway (LoRa)` <-> `Slave Gateway (LoRa)` <-> `Perangkat Modbus (RTU)`
- **Deskripsi:** Sistem SCADA mengirimkan perintah Modbus TCP ke Master Gateway. Master meneruskannya melalui LoRa ke Slave Gateway, yang kemudian mengubahnya menjadi sinyal Modbus RTU untuk perangkat akhir yang terhubung secara serial (RS485/RS232).
2. **Modbus TCP ke Modbus TCP (via LoRa)**
- **Alur:** `SCADA (TCP)` <-> `Master Gateway (LoRa)` <-> `Slave Gateway (LoRa)` <-> `Perangkat Modbus (TCP)`
- **Deskripsi:** Sistem SCADA mengirimkan perintah Modbus TCP ke Master Gateway. Master meneruskannya melalui LoRa ke Slave Gateway. Slave Gateway kemudian mengirimkan perintah Modbus TCP melalui jaringan WiFi lokal ke alamat IP perangkat akhir.
## Mode Operasi
### 1. Mode Konfigurasi
Ini adalah mode utama untuk mengatur semua parameter perangkat.
- **Cara Masuk:**
1. Tekan dan tahan tombol `MODE_BUTTON_PIN` saat perangkat dinyalakan.
2. Atau, tekan tombol tersebut saat perangkat sedang berjalan normal.
- **Fungsionalitas:**
- ESP32 akan membuat Access Point (AP) WiFi dengan SSID `OSO-LoRa-Master-Config` atau `OSO-LoRa-Slave-Config`.
- Hubungkan perangkat Anda (laptop/HP) ke AP tersebut dengan password `12345678`.
- Buka browser dan navigasikan ke alamat `192.168.4.1`.
- Antarmuka web akan muncul, memungkinkan Anda untuk mengkonfigurasi:
- **Jaringan:** Pengaturan WiFi, Ethernet, dan mode Modbus (RTU/TCP).
- **LoRa:** Alamat, channel, baud rate, dan parameter LoRa lainnya.
- **Mapping:** (Hanya di mode Master) Aturan pemetaan Modbus.
- **Sistem:** Aksi seperti reboot perangkat.
### 2. Master Mode
Dalam mode ini, gateway berfungsi sebagai **server Modbus TCP** yang menjembatani sistem SCADA dengan perangkat LoRa di lapangan.
- **Konektivitas ke SCADA:**
- Master Gateway dapat terhubung ke jaringan lokal (LAN) melalui **Ethernet (W5500)** atau **WiFi**.
- Setelah terhubung, ia akan mendapatkan alamat IP dan siap menerima koneksi Modbus TCP dari sistem SCADA pada alamat IP tersebut.
- **Alur Kerja:**
1. SCADA (sebagai Modbus TCP Client) mengirim permintaan ke alamat IP Master Gateway.
2. Master Gateway menerima permintaan, memprosesnya, dan meneruskannya melalui jaringan LoRa ke slave yang dituju.
3. Slave LoRa merespons kembali ke Master Gateway.
4. Master Gateway meneruskan respons tersebut kembali ke SCADA.
### 3. Slave Mode
Dalam mode ini, gateway menghubungkan satu perangkat Modbus ke jaringan LoRa.
- **Sub-Mode:**
- **Modbus RTU:** Gateway terhubung ke perangkat Modbus (misalnya, sensor atau meteran) melalui antarmuka serial (RS485 atau RS232). Ia akan meneruskan permintaan LoRa dari Master ke perangkat Modbus RTU ini.