---
# System prepended metadata

title: Untitled

---

# TP 10 IOT - Mesh

```
Nama: M. Avicenna Raffaiz Adiharsa
NPM: 2206062844
```

## Teori

### 1. Apa yang dimaksud dengan mesh network pada ESP32, dan bagaimana cara kerjanya dalam menghubungkan beberapa perangkat? <span style="color:red;">(15 Poin)</span>

ESP32 Mesh Network adalah arsitektur jaringan di mana node ESP32 terhubung satu sama lain dalam pola daisy-chain tanpa perlu terhubung ke router pusat tunggal.

Node bersifat self-organizing dan self-healing. Data dapat dikirim secara multi-hop melalui node perantara (misalnya, Node A ke Node B, lalu ke Node C) jika jarak terlalu jauh.

#### Referensi
- ESP-WIFI-MESH [Online]. Available: https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/esp-wifi-mesh.html. [Diakses: 20-November-2025]
- How can ESP32 Mesh networking and embedded systems help build smarter cities? [Online]. Available: https://wizzdev.com/blog/how-can-esp32-mesh-help-build-smarter-cities. [Diakses: 20-November-2025]
- How to Build an ESP32 WiFi Mesh Network [Online]. Available: https://wizzdev.com/blog/esp32-wifi-mesh. [Diakses: 20-November-2025]

---
### 2.  Apa perbedaan utama antara topologi mesh network dan topologi star network, terutama dalam konteks IoT? <span style="color:red;">(15 Poin)</span>

1. Star memerlukan Hub/Router pusat; Mesh memungkinkan koneksi antar node.
2. Star terbatas pada sinyal router; Mesh lebih luas karena setiap node memperpanjang sinyal.
3. Star memiliki Single Point of Failure, router mati, jaringan mati; Mesh lebih robust, jika satu node mati, jaringan mencari jalur lain.
4. Star lebih sederhana; Setup dan routing Mesh lebih kompleks.

#### Referensi
- Star vs. Mesh Networking Topology: IoT Wireless Connectivity Fundamentals [Online]. Available: https://www.allaboutcircuits.com/technical-articles/star-vs-mesh-networking-topology-internet-of-things-wireless-connectivity-fundamentals. [Diakses: 20-November-2025]
- Comparing Mesh, Star & Point-To-Point Topology In IoT Networking [Online]. Available: https://www.link-labs.com/blog/iot-topology. [Diakses: 20-November-2025]
- Difference between Star and Mesh Topology [Online]. Available: https://beginnersbook.com/2022/09/difference-between-star-and-mesh-topology. [Diakses: 20-November-2025]


### 3. Jelaskan tipe - tipe node pada mesh network! <span style="color:red;">(15 Poin)</span>


* Root Node: Node teratas, terhubung ke internet/router, meneruskan data mesh ke server eksternal.
* Intermediate (Parent) Node: Node perantara, menerima data dari child dan meneruskannya ke parent atau Root. Dapat memiliki fungsi sensor/actuator.
* Leaf Node: Node di ujung jaringan. Tidak memiliki child atau meneruskan data node lain. Fungsinya murni sensor/actuator.

#### Referensi
- ESP-WIFI-MESH [Online]. Available: https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/esp-wifi-mesh.html. [Diakses: 20-November-2025]
- How to Build an ESP32 WiFi Mesh Network [Online]. Available: https://wizzdev.com/blog/esp32-wifi-mesh. [Diakses: 20-November-2025]

### 4. Apa keuntungan utama menggunakan mesh network pada sistem IoT? Berikan contoh aplikasi yang sesuai untuk mesh network ini. <span style="color:red;">(15 Poin)</span>

Keuntungan Mesh Network yaitu jangkauan luas yang mengatasi dead zone Wi-Fi tanpa perlu banyak extender, memastikan cakupan merata. Reliabilitas tinggi berkat fitur self-healing, menjamin data terkirim meski ada node rusak. Skalabilitas mudah memungkinkan penambahan perangkat tanpa konfigurasi ulang pusat.

Contoh aplikasi termasuk Smart Street Lighting dimana lampu jalan dapat berfungsi sebagai node, meneruskan perintah dan informasi status di seluruh kota dan memungkinkan pengendalian terpusat

#### Referensi
- mesh network topology (mesh network) [Online]. Available: https://www.techtarget.com/iotagenda/definition/mesh-network-topology-mesh-network. [Diakses: 20-November-2025]
- Mesh Network: Advantages & disadvantages for business Wi-Fi [Online]. Available: https://www.meter.com/resources/mesh-network-advantages-disadvantages. [Diakses: 20-November-2025]

---
## Programming

### 5. Buatlah 2 program pada ESP32 <span style="color:red;">(40 Poin)</span>

- Program pertama berperan sebagai leaf node dimana dia akan menerima input dari serial monitor yaitu “OFF” dan “ON”. Setiap kali dia menerima input
tersebut, ia akan mengirimkan message broadcast ke root node yang berisi input tersebut.

```cpp!
#include <esp_now.h>
#include <WiFi.h>

uint8_t broadcastAddress[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};

typedef struct struct_message {
  char msg[32];
} struct_message;

struct_message myData;
esp_now_peer_info_t peerInfo;

void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
  Serial.print("Status Kirim: ");
  Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Sukses" : "Gagal");
}

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);

  if (esp_now_init() != ESP_OK) {
    Serial.println("Error initializing ESP-NOW");
    return;
  }

  esp_now_register_send_cb(OnDataSent);

  memcpy(peerInfo.peer_addr, broadcastAddress, 6);
  peerInfo.channel = 0;
  peerInfo.encrypt = false;
  
  if (esp_now_add_peer(&peerInfo) != ESP_OK){
    Serial.println("Failed to add peer");
    return;
  }
  
  Serial.println("Leaf Node Siap (ESP-NOW). Ketik 'ON' atau 'OFF'.");
}

void loop() {
  if (Serial.available() > 0) {
    String input = Serial.readStringUntil('\n');
    input.trim();

    if (input.equalsIgnoreCase("ON") || input.equalsIgnoreCase("OFF")) {
      strcpy(myData.msg, input.c_str());
      
      esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));
      Serial.println("Mengirim: " + input);
    } else {
      Serial.println("Input salah.");
    }
  }
  delay(100);
}

```

- Program kedua berperan sebagai root node dimana dia bertugas untuk menerima message dari leaf node. Jika message yang diterima adalah “ON”, maka LED built-in akan menyala. Jika message yang diterima adalah “OFF”, maka LED built-in akan mati.
```cpp!
#include <esp_now.h>
#include <WiFi.h>

#define LED_PIN 2

typedef struct struct_message {
  char msg[32];
} struct_message;

struct_message myData;

void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {
  memcpy(&myData, incomingData, sizeof(myData));
  
  String receivedMsg = String(myData.msg);
  Serial.print("Pesan diterima: ");
  Serial.println(receivedMsg);

  if (receivedMsg.equalsIgnoreCase("ON")) {
    digitalWrite(LED_PIN, HIGH);
    Serial.println(">> LED NYALA");
  } 
  else if (receivedMsg.equalsIgnoreCase("OFF")) {
    digitalWrite(LED_PIN, LOW);
    Serial.println(">> LED MATI");
  }
}

void setup() {
  Serial.begin(115200);
  pinMode(LED_PIN, OUTPUT);
  
  WiFi.mode(WIFI_STA);

  if (esp_now_init() != ESP_OK) {
    Serial.println("Error initializing ESP-NOW");
    return;
  }

  esp_now_register_recv_cb(esp_now_recv_cb_t(OnDataRecv));

  Serial.println("Root Node Siap Menerima (ESP-NOW)...");
}

void loop() {
  delay(1000);
}

```


