#include <ArduinoJson.h>
#include <WiFi.h>
#include <esp_now.h>
// Struktur untuk menerima informasi dari ESP-NOW
typedef struct struct_message {
char node[10];
char clusterHeadNode[10];
float temperature;
float humidity;
int soilMoisture;
} struct_message;
// Callback function untuk menerima data
void onDataRecv(const uint8_t * mac_addr, const uint8_t *incomingData, int len) {
char incomingJson[len + 1];
strncpy(incomingJson, (const char*)incomingData, len);
incomingJson[len] = '\0';
// Parse JSON
StaticJsonDocument<200> jsonDoc;
DeserializationError error = deserializeJson(jsonDoc, incomingJson);
if (error) {
Serial.print("Failed to parse JSON: ");
Serial.println(error.c_str());
return;
}
// Ambil data dari JSON
const char* node = jsonDoc["Node"];
const char* clusterHeadNode = jsonDoc["ClusterHead Node"];
float temperature = jsonDoc["temperature"];
float humidity = jsonDoc["humidity"];
int soilMoisture = jsonDoc["soilMoisture"];
// Tampilkan data yang diterima
Serial.print("Node: ");
Serial.print(node);
Serial.print(", ClusterHead Node: ");
Serial.print(clusterHeadNode);
Serial.print(", Temperature: ");
Serial.print(temperature);
Serial.print(" °C, Humidity: ");
Serial.print(humidity);
Serial.print(" %, Soil Moisture: ");
Serial.print(soilMoisture);
Serial.println(" %");
}
void setup() {
Serial.begin(115200);
// Inisialisasi WiFi (meski tidak digunakan untuk koneksi internet)
WiFi.mode(WIFI_STA);
// Inisialisasi ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}
// Register callback untuk menerima data
esp_now_register_recv_cb(onDataRecv);
}
void loop() {
// Tidak ada yang perlu dilakukan di loop
delay(1000);
}