IoT Platform

Blynk IoT: Panduan Lengkap Membangun Aplikasi IoT Mobile

πŸ‘‘ Premium

Tutorial komprehensif Blynk platform β€” dari setup Blynk Cloud hingga membangun Smart Home control yang terhubung dengan ESP32 dan sensor IoT

1. Apa Itu Blynk?

Blynk adalah platform IoT as-a-service yang dirancang untuk memudahkan pengembangan aplikasi mobile yang terhubung dengan perangkat keras seperti ESP32, Arduino, Raspberry Pi, dan berbagai mikrokontroler lainnya. Dengan Blynk, kamu bisa membuat dashboard mobile untuk monitoring sensor dan mengontrol perangkat dari jarak jauh tanpa perlu membangun infrastruktur server sendiri.

Platform ini menyediakan solusi end-to-end: mulai dari firmware library untuk mikrokontroler, cloud server yang menangani komunikasi, hingga mobile app builder dengan drag-and-drop widget. Artinya, kamu bisa fokus pada logika perangkat keras tanpa perlu khawatir soal networking stack atau backend server.

πŸ’‘ Tips

Blynk awalnya diluncurkan pada tahun 2015 dan telah digunakan oleh jutaan developer di seluruh dunia. Platform ini tersedia dalam versi gratis (Free Plan) dan berbayar (Essential, Professional, Enterprise) dengan fitur yang semakin lengkap.

Fitur Utama Blynk

Fitur Deskripsi
Blynk.Cloud Cloud server yang menghubungkan perangkat ke aplikasi mobile dan web
Blynk.App (Mobile) Builder drag-and-drop untuk membuat dashboard IoT di iOS & Android
Blynk.Console Panel web untuk manajemen perangkat, template, dan analytics
Blynk Library Library Arduino yang mendukung ESP32, ESP8266, Arduino, dan board lainnya
Automations Rule engine bawaan untuk membuat otomasi berdasarkan kondisi sensor
Over-The-Air (OTA) Update firmware perangkat dari jarak jauh tanpa kabel USB

Free Plan vs Paid Plan

Blynk menyediakan beberapa tier langganan. Berikut perbandingannya:

Fitur Free Essential Professional
Jumlah Perangkat 3 50 Unlimited
Datastream Rate 10 data/detik 100 data/detik 1000 data/detik
Template 2 template Unlimited Unlimited
Web Dashboard Ya (terbatas) Ya (lengkap) Ya (lengkap + custom)
Automations 2 automations 10 automations Unlimited
OTA Update ❌ Ya Ya
Event Logging 1 jam terakhir 7 hari 90 hari
⚠️ Catatan Penting

Untuk belajar dan proyek sederhana, Free Plan sudah sangat cukup. Kamu hanya perlu upgrade ke plan berbayar jika membutuhkan lebih dari 3 perangkat atau fitur OTA update.

2. Setup Blynk Cloud & Mobile App

Langkah pertama menggunakan Blynk adalah membuat akun dan mengonfigurasi template project di Blynk.Console (web). Setelah itu, kamu akan mengunduh aplikasi Blynk di smartphone untuk memantau dan mengontrol perangkatmu.

Langkah 1: Membuat Akun Blynk

  1. Buka browser dan kunjungi https://blynk.cloud
  2. Klik "Register" atau "Sign Up"
  3. Masukkan email dan password, lalu verifikasi akun
  4. Login ke Blynk.Console β€” ini adalah panel manajemen utama

Langkah 2: Membuat Template

Template adalah konfigurasi dasar untuk perangkatmu. Di dalam template, kamu mendefinisikan datastream, dashboard widget, dan firmware yang akan digunakan.

  1. Di Blynk.Console, klik "Templates" di sidebar kiri
  2. Klik "+ New Template"
  3. Isi nama template (contoh: "IoT Suhu Monitor")
  4. Pilih Hardware: "ESP32"
  5. Di tab "Datastream", tambahkan datastream baru:
    • Type: Virtual Pin
    • Pin: V0 (untuk suhu)
    • Pin: V1 (untuk kelembaban)
    • Data type: Double
  6. Di tab "Web Dashboard", tambahkan widget sesuai kebutuhan
  7. Klik "Save"

Langkah 3: Membuat Device

  1. Klik "Search" atau "Devices" di sidebar
  2. Klik "+ New Device"
  3. Pilih "From Template" lalu pilih template yang sudah dibuat
  4. Copy Device Info yang berisi: BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME, dan BLYNK_AUTH_TOKEN
⚠️ Jaga Kerahasiaan!

BLYNK_AUTH_TOKEN adalah kunci akses ke perangkatmu. Jangan pernah membagikannya secara publik atau memasukkannya ke repository GitHub publik. Gunakan environment variable atau file config yang tidak di-commit.

Langkah 4: Install Aplikasi Blynk di Smartphone

  1. Buka Google Play Store (Android) atau App Store (iOS)
  2. Cari "Blynk" dan install aplikasinya
  3. Login dengan akun yang sama dengan Blynk.Console
  4. Di tab Devices, kamu akan melihat device yang sudah dibuat
  5. Klik device tersebut untuk membuka dashboard mobile

Sekarang akun Blynk sudah siap digunakan. Langkah selanjutnya adalah menghubungkan ESP32 dengan platform ini.

3. ESP32 + Blynk: Mengirim Data Sensor

Sekarang kita akan menghubungkan ESP32 dengan Blynk dan mengirim data sensor DHT11 (suhu & kelembaban) ke dashboard. Pastikan kamu sudah menginstall library Blynk dan DHT di Arduino IDE.

Install Library yang Dibutuhkan

Di Arduino IDE, buka Sketch β†’ Include Library β†’ Manage Libraries dan cari:

Kode Program: Mengirim Suhu & Kelembaban

Copy kode berikut ke Arduino IDE. Ganti nilai BLYNK_AUTH_TOKEN dengan token yang kamu dapatkan dari Blynk.Console.

// =============================================
// Blynk IoT: Mengirim Data Sensor DHT11
// Board: ESP32 DevKit v1
// =============================================

#define BLYNK_TEMPLATE_ID   "TMPL_XXXXXXX"
#define BLYNK_TEMPLATE_NAME "IoT Suhu Monitor"
#define BLYNK_AUTH_TOKEN     "MasukkanAuthTokenDisini"

#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>

// Koneksi WiFi
char ssid[] = "NamaWiFi";
char pass[] = "PasswordWiFi";

// Pin & konfigurasi sensor DHT11
#define DHTPIN  4
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

// Timer untuk mengirim data secara berkala
BlynkTimer timer;

// Fungsi untuk membaca & mengirim data sensor
void kirimDataSensor() {
  float suhu = dht.readTemperature();    // Celsius
  float kelembaban = dht.readHumidity();

  // Cek apakah pembacaan berhasil
  if (isnan(suhu) || isnan(kelembaban)) {
    Serial.println("Gagal membaca sensor DHT11!");
    return;
  }

  // Kirim data ke Blynk Virtual Pin
  Blynk.virtualWrite(V0, suhu);          // Suhu β†’ V0
  Blynk.virtualWrite(V1, kelembaban);    // Kelembaban β†’ V1

  // Tampilkan di Serial Monitor
  Serial.print("Suhu: ");
  Serial.print(suhu);
  Serial.print("Β°C | Kelembaban: ");
  Serial.print(kelembaban);
  Serial.println("%");
}

// Fungsi ini dijalankan saat tombol di app ditekan
// Virtual Pin V2 berfungsi sebagai tombol refresh
BLYNK_WRITE(V2) {
  int pinValue = param.asInt();
  if (pinValue == 1) {
    kirimDataSensor();
    Blynk.logEvent("manual_refresh");
  }
}

void setup() {
  Serial.begin(115200);
  dht.begin();

  // Koneksi ke Blynk Cloud
  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);

  // Atur timer: kirim data setiap 2 detik
  timer.setInterval(2000L, kirimDataSensor);

  Serial.println("ESP32 terhubung ke Blynk!");
}

void loop() {
  Blynk.run();   // Jalankan Blynk
  timer.run();   // Jalankan timer
}

Penjelasan Kode

Bagian Fungsi
BLYNK_TEMPLATE_ID ID unik template di Blynk.Cloud, diperoleh dari Device Info
BLYNK_AUTH_TOKEN Token autentikasi perangkat, unik untuk setiap device
Blynk.virtualWrite(V0, value) Mengirim data ke Virtual Pin V0 yang terhubung ke widget di app
BlynkTimer Timer non-blocking untuk menjalankan fungsi secara berkala
BLYNK_WRITE(V2) Callback yang dipanggil saat nilai Virtual Pin V2 berubah dari app
Blynk.run() Memelihara koneksi ke Blynk Cloud, harus dipanggil di loop()
πŸ’‘ Tips: Pin Virtual

Virtual Pin di Blynk (V0, V1, V2, ...) adalah "jalur komunikasi" antara perangkat dan dashboard. Kamu bebas menentukan apa yang dikirim melalui pin mana β€” yang penting harus konsisten antara kode firmware dan konfigurasi widget di dashboard.

Langkah Upload & Monitoring

  1. Pilih board: Tools β†’ Board β†’ ESP32 Dev Module
  2. Pilih port USB yang terdeteksi
  3. Upload kode ke ESP32
  4. Buka Serial Monitor (115200 baud) untuk memverifikasi koneksi
  5. Buka aplikasi Blynk di smartphone β€” nilai Gauge harus berubah sesuai suhu aktual

4. Widget Blynk: Gauge, LCD, Terminal, Notification

Blynk menyediakan berbagai widget yang bisa ditambahkan ke dashboard mobile maupun web. Berikut penjelasan widget paling sering digunakan dalam proyek IoT.

4.1 Gauge Widget

Gauge adalah widget berbentuk lingkaran yang menampilkan nilai numerik dalam rentang tertentu. Cocok untuk menampilkan suhu, kelembaban, tegangan baterai, atau parameter lainnya.

Cara menambahkan Gauge:

  1. Buka dashboard device di Blynk app
  2. Klik tombol "+" untuk menambah widget
  3. Pilih "Gauge" dari daftar widget
  4. Klik widget untuk mengonfigurasi:
    • Datastream: Pilih V0 (suhu)
    • Title: "Suhu Ruangan"
    • Min Value: 0
    • Max Value: 50
    • Unit: "Β°C"

4.2 Value Display / LCD Widget

LCD widget menampilkan data dalam format teks digital mirip layar LCD. Cocok untuk menampilkan beberapa nilai sekaligus secara ringkas.

// Mengirim data ke LCD widget
// Format: "Suhu:25.3Β°C\nKelembaban:68%"
String lcdText = "Suhu:" + String(suhu, 1) + "Β°C\n";
lcdText += "Kelembaban:" + String(kelembaban, 1) + "%";
Blynk.virtualWrite(V3, lcdText);

Di dashboard, LCD widget dihubungkan ke Virtual Pin V3. Kamu bisa menampilkan hingga 16 karakter per baris.

4.3 Terminal Widget

Terminal adalah widget teks dua arah yang memungkinkan komunikasi antara perangkat dan pengguna melalui aplikasi. Pengguna bisa mengirim perintah, dan perangkat bisa mengirim pesan log.

// Mengirim pesan ke Terminal
Blynk.virtualWrite(V4, String(">> Suhu aktual: ") + String(suhu) + "\n");

// Menerima perintah dari Terminal
BLYNK_WRITE(V4) {
  String perintah = param.asStr();

  if (perintah == "status") {
    Blynk.virtualWrite(V4, ">> Sistem aktif\n");
  }
  else if (perintah == "reset") {
    ESP.restart();
  }
  else {
    Blynk.virtualWrite(V4, ">> Perintah tidak dikenali\n");
    Blynk.virtualWrite(V4, ">> Ketik 'status' atau 'reset'\n");
  }
}

4.4 Notification Widget

Notification widget mengirim push notification ke smartphone saat kondisi tertentu terpenuhi. Kamu bisa mengirim notifikasi dari kode firmware.

// Kirim notifikasi jika suhu melebihi batas
if (suhu > 35.0) {
  Blynk.logEvent("suhu_tinggi",
    String("Suhu mencapai ") + String(suhu, 1) + "Β°C! Cek ruangan.");
}

// Kirim notifikasi jika kelembaban rendah
if (kelembaban < 30.0) {
  Blynk.logEvent("kelembaban_rendah",
    "Kelembaban di bawah 30%. Aktifkan humidifier!");
}
πŸ“‹ Event Notification

Untuk menggunakan Blynk.logEvent(), kamu harus membuat event terlebih dahulu di Blynk.Console β†’ Template β†’ tab "Events". Buat event dengan kode "suhu_tinggi" dan "kelembaban_rendah", lalu atur tingkat notifikasi (Critical, Error, Warning, Info).

Ringkasan Widget

Widget Fungsi Contoh Penggunaan
Gauge Visualisasi numerik berbentuk lingkaran Suhu, tekanan, tegangan baterai
LCD Menampilkan data teks digital Status sistem, timestamp terakhir update
Terminal Komunikasi teks dua arah Perintah remote, log system
Notification Push notification ke smartphone Alert suhu tinggi, deteksi gerakan
Button Kontrol ON/OFF atau trigger aksi Nyalakan lampu, reset sistem
Slider Input rentang nilai kontinu Atur kecepatan kipas, brightness LED
History Chart riwayat data (time series) Grafik suhu 24 jam terakhir

5. Kontrol Perangkat via Blynk (Button, Slider, Automations)

Salah satu keunggulan utama Blynk adalah kemampuan mengontrol perangkat dari jarak jauh melalui aplikasi mobile. Berikut cara menggunakan Button, Slider, dan Automations.

5.1 Button Widget β€” Kontrol ON/OFF

Button widget mengirim nilai biner (0 atau 1) ke Virtual Pin. Kamu bisa menghubungkannya ke relay untuk menyalakan/mematikan lampu, kipas, atau perangkat lainnya.

// =============================================
// Kontrol Relay via Button Blynk
// =============================================

#define BLYNK_TEMPLATE_ID   "TMPL_XXXXXXX"
#define BLYNK_TEMPLATE_NAME "Smart Relay"
#define BLYNK_AUTH_TOKEN     "TokenDisini"

#include <WiFi.h>
#include <BlynkSimpleEsp32.h>

#define RELAY_PIN 26    // Pin GPIO yang terhubung ke relay

char ssid[] = "NamaWiFi";
char pass[] = "PasswordWiFi";

BlynkTimer timer;

// Callback saat tombol di app ditekan
BLYNK_WRITE(V0) {
  int state = param.asInt();
  digitalWrite(RELAY_PIN, state);

  if (state == 1) {
    Serial.println("Relay: ON");
    Blynk.virtualWrite(V1, "Lampu Menyala");
  } else {
    Serial.println("Relay: OFF");
    Blynk.virtualWrite(V1, "Lampu Mati");
  }
}

void setup() {
  Serial.begin(115200);
  pinMode(RELAY_PIN, OUTPUT);
  digitalWrite(RELAY_PIN, LOW);  // Default OFF

  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}

void loop() {
  Blynk.run();
}

Konfigurasi Button widget di dashboard:

5.2 Slider Widget β€” Atur Nilai Kontinu

Slider memungkinkan pengguna mengatur nilai dalam rentang tertentu. Cocok untuk mengatur kecepatan kipas (PWM), brightness LED, atau setpoint suhu AC.

// =============================================
// Kontrol Brightness LED via Slider
// =============================================

#define LED_PIN 16  // Pin GPIO untuk LED PWM

// Callback saat slider digeser
BLYNK_WRITE(V2) {
  int brightness = param.asInt();  // Nilai 0-255
  analogWrite(LED_PIN, brightness);
  Serial.print("Brightness: ");
  Serial.println(brightness);
}

void setup() {
  Serial.begin(115200);
  pinMode(LED_PIN, OUTPUT);
  ledcSetup(0, 5000, 8);     // Channel 0, 5kHz, 8-bit
  ledcAttachPin(LED_PIN, 0);

  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}

void loop() {
  Blynk.run();
}

Di dashboard, konfigurasi Slider:

5.3 Automations β€” Otomasi Berbasis Kondisi

Blynk menyediakan fitur Automations yang memungkinkan kamu membuat rule otomasi tanpa coding tambahan di mikrokontroler. Automasi dijalankan di cloud Blynk.

Contoh Automasi:

Nama Automasi Kondisi Aksi
Auto Fan ON Suhu (V0) > 30Β°C Set V2 (Relay Kipas) = 1
Auto Fan OFF Suhu (V0) < 25Β°C Set V2 (Relay Kipas) = 0
Night Mode Jam > 22:00 Set V3 (LED) = 50% brightness
Alert Suhu Suhu (V0) > 40Β°C Kirim push notification

Cara membuat Automasi:

  1. Buka Blynk.Console β†’ pilih Device
  2. Klik tab "Automations"
  3. Klik "+ New Automation"
  4. Atur kondisi (IF) dan aksi (THEN)
  5. Simpan dan aktifkan automasi
πŸ’‘ Tips: Automasi Hybrid

Kamu bisa menggabungkan automasi di cloud dengan logika di firmware. Misalnya, firmware mengirim data sensor, sementara Blynk Cloud memutuskan kapan harus menyalakan relay berdasarkan threshold yang sudah diatur di dashboard.

6. Blynk 2.0 vs Blynk Legacy

Banyak tutorial lama di internet masih menggunakan Blynk Legacy (versi 0.x) yang sudah discontinued sejak Desember 2022. Sangat penting untuk memahami perbedaannya agar tidak mengalami kebingungan saat mengikuti tutorial.

Aspek Blynk Legacy (v0.x) Blynk 2.0 (New)
Status ❌ Discontinued / Mati βœ… Aktif & dikembangkan
Server blynk-cloud.com blynk.cloud
Library #include <BlynkSimpleEsp32.h> (lama) #include <BlynkSimpleEsp32.h> (baru, perlu Template ID)
Autentikasi Hanya Auth Token Template ID + Auth Token
Konfigurasi Hardcoded di widget app Datastream di Cloud Console
Web Dashboard ❌ Tidak tersedia βœ… Tersedia (gratis)
Automations ❌ βœ… Built-in
Mobile Builder Drag & drop di app Widget dikonfigurasi dari Cloud
Free Device Limit 2 device (perubahan pin tanpa batas) 3 device (dengan fitur lebih lengkap)
⚠️ Jangan Gunakan Blynk Legacy!

Jika kamu menemukan tutorial yang menggunakan variabel BLYNK_AUTH_TOKEN tanpa BLYNK_TEMPLATE_ID, itu adalah kode untuk Blynk Legacy yang sudah tidak berfungsi. Selalu pastikan tutorial yang kamu ikuti menggunakan Blynk 2.0 dengan Template ID.

Cara Migrasi dari Blynk Legacy ke Blynk 2.0

  1. Daftar akun baru di blynk.cloud (jika belum punya)
  2. Buat Template baru di Blynk.Console
  3. Definisikan Datastream (Virtual Pin) yang sesuai dengan kode lama
  4. Buat Device dari Template tersebut
  5. Update kode firmware: tambahkan #define BLYNK_TEMPLATE_ID dan #define BLYNK_TEMPLATE_NAME sebelum #include
  6. Ganti Auth Token lama dengan yang baru
  7. Rebuild dashboard di app/mobile dengan widget baru
  8. Upload kode baru ke ESP32

7. Web Dashboard Blynk

Blynk 2.0 menyediakan Web Dashboard yang bisa diakses dari browser komputer tanpa perlu aplikasi mobile. Ini sangat berguna untuk monitoring dari laptop atau desktop saat bekerja.

Mengakses Web Dashboard

  1. Buka blynk.cloud dan login
  2. Klik "Devices" di sidebar kiri
  3. Pilih device yang ingin kamu pantau
  4. Klik tab "Web Dashboard"

Menambahkan Widget ke Web Dashboard

Di Web Dashboard, klik tombol "Edit Dashboard" lalu drag widget dari panel kiri ke area dashboard:

Web Dashboard vs Mobile App

Fitur Web Dashboard Mobile App
Aksesibilitas Browser (PC/Laptop) iOS & Android
Widget Builder Drag & drop (terbatas) Drag & drop (lebih lengkap)
Push Notification ❌ βœ…
Data Sharing Ya, via link Ya, via invite
Cocok untuk Monitoring di kerja, presentasi Monitoring mobile, notifikasi
πŸ’‘ Tips: Multi-Device View

Di Web Dashboard, kamu bisa membuat halaman terpisah untuk setiap kategori perangkat. Misalnya, satu halaman untuk monitoring ruangan tamu, satu lagi untuk monitoring kebun, sehingga dashboard tidak terlalu ramai.

8. Proyek: Smart Home Control via Blynk

Sekarang kita akan menggabungkan semua pengetahuan yang sudah dipelajari menjadi sebuah proyek lengkap: Smart Home Control yang bisa mengontrol lampu, kipas, dan memonitor suhu & kelembaban ruangan melalui Blynk.

Hardware yang Dibutuhkan

Komponen Jumlah Fungsi
ESP32 DevKit v1 1 Microcontroller utama
Sensor DHT11 / DHT22 1 Mengukur suhu & kelembaban
Relay Module 2 Channel 1 Kontrol lampu & kipas
LED (opsional) 2 Indikator status
Resistor 220Ξ© 2 Limiter arus LED
Kabel jumper - Interkoneksi komponen
Breadboard 1 Prototyping

Skema Koneksi

Komponen Pin di ESP32
DHT11 Data GPIO 4
Relay 1 (Lampu) GPIO 26
Relay 2 (Kipas) GPIO 27
LED Indikator 1 GPIO 16
LED Indikator 2 GPIO 17

Kode Program Lengkap

// =============================================
// Proyek: Smart Home Control via Blynk
// Monitor Suhu + Kontrol Lampu & Kipas
// Board: ESP32 DevKit v1
// =============================================

#define BLYNK_TEMPLATE_ID   "TMPL_XXXXXXX"
#define BLYNK_TEMPLATE_NAME "Smart Home Control"
#define BLYNK_AUTH_TOKEN     "MasukkanAuthTokenDisini"

#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>

// ----- Koneksi WiFi -----
char ssid[] = "NamaWiFi";
char pass[] = "PasswordWiFi";

// ----- Pin Konfigurasi -----
#define DHTPIN        4
#define DHTTYPE       DHT11
#define RELAY_LAMPU   26
#define RELAY_KIPAS   27
#define LED_LAMPU     16
#define LED_KIPAS     17

DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;

// ----- Status Perangkat -----
bool statusLampu = false;
bool statusKipas = false;

// =============================================
// FUNGSI: Kirim Data Sensor ke Blynk
// =============================================
void kirimDataSensor() {
  float suhu = dht.readTemperature();
  float kelembaban = dht.readHumidity();

  if (isnan(suhu) || isnan(kelembaban)) {
    Serial.println("[ERROR] Gagal baca DHT11!");
    return;
  }

  // Kirim ke Virtual Pin
  Blynk.virtualWrite(V0, suhu);          // Gauge Suhu
  Blynk.virtualWrite(V1, kelembaban);    // Gauge Kelembaban

  // Kirim format teks untuk LCD widget
  String displayText = "T:" + String(suhu, 1) + "C ";
  displayText += "H:" + String(kelembaban, 1) + "%\n";
  displayText += "Lampu:" + String(statusLampu ? "ON" : "OFF");
  displayText += " Kipas:" + String(statusKipas ? "ON" : "OFF");
  Blynk.virtualWrite(V5, displayText);   // LCD Widget

  // Log ke Serial
  Serial.print("[DATA] Suhu=");
  Serial.print(suhu);
  Serial.print("C | H=");
  Serial.print(kelembaban);
  Serial.print("% | Lampu=");
  Serial.print(statusLampu ? "ON" : "OFF");
  Serial.print(" | Kipas=");
  Serial.println(statusKipas ? "ON" : "OFF");

  // Kirim notifikasi jika suhu terlalu tinggi
  if (suhu > 35.0) {
    Blynk.logEvent("suhu_tinggi",
      String("Suhu mencapai ") + String(suhu, 1) +
      "Β°C! Pertimbangkan nyalakan kipas.");
  }

  // Kirim notifikasi jika kelembaban terlalu rendah
  if (kelembaban < 30.0) {
    Blynk.logEvent("kelembaban_rendah",
      "Kelembaban di bawah 30%!");
  }
}

// =============================================
// KONTROL: Tombol Lampu (V2)
// =============================================
BLYNK_WRITE(V2) {
  statusLampu = param.asInt();
  digitalWrite(RELAY_LAMPU, statusLampu);
  digitalWrite(LED_LAMPU, statusLampu);

  Serial.print("[KONTROL] Lampu: ");
  Serial.println(statusLampu ? "ON" : "OFF");
}

// =============================================
// KONTROL: Tombol Kipas (V3)
// =============================================
BLYNK_WRITE(V3) {
  statusKipas = param.asInt();
  digitalWrite(RELAY_KIPAS, statusKipas);
  digitalWrite(LED_KIPAS, statusKipas);

  Serial.print("[KONTROL] Kipas: ");
  Serial.println(statusKipas ? "ON" : "OFF");
}

// =============================================
// KONTROL: Slider Brightness LED (V4)
// =============================================
BLYNK_WRITE(V4) {
  int brightness = param.asInt();
  analogWrite(LED_LAMPU, brightness);
  Serial.print("[SLIDER] LED Brightness: ");
  Serial.println(brightness);
}

// =============================================
// SETUP
// =============================================
void setup() {
  Serial.begin(115200);
  Serial.println("\n[SYSTEM] Smart Home Control v1.0");
  Serial.println("[SYSTEM] Memulai inisialisasi...");

  // Inisialisasi pin output
  pinMode(RELAY_LAMPU, OUTPUT);
  pinMode(RELAY_KIPAS, OUTPUT);
  pinMode(LED_LAMPU, OUTPUT);
  pinMode(LED_KIPAS, OUTPUT);

  // Default semua OFF
  digitalWrite(RELAY_LAMPU, LOW);
  digitalWrite(RELAY_KIPAS, LOW);
  digitalWrite(LED_LAMPU, LOW);
  digitalWrite(LED_KIPAS, LOW);

  // Mulai sensor DHT
  dht.begin();
  Serial.println("[SYSTEM] Sensor DHT11 siap");

  // Koneksi ke Blynk Cloud
  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
  Serial.println("[SYSTEM] Terhubung ke Blynk Cloud!");

  // Timer: kirim data sensor setiap 3 detik
  timer.setInterval(3000L, kirimDataSensor);
}

// =============================================
// LOOP
// =============================================
void loop() {
  Blynk.run();
  timer.run();
}

Mapping Virtual Pin

Virtual Pin Jenis Fungsi
V0 Output (perangkat β†’ app) Data suhu (Gauge)
V1 Output (perangkat β†’ app) Data kelembaban (Gauge)
V2 Input (app β†’ perangkat) Kontrol lampu (Switch)
V3 Input (app β†’ perangkat) Kontrol kipas (Switch)
V4 Input (app β†’ perangkat) Atur brightness LED (Slider)
V5 Output (perangkat β†’ app) Status teks (LCD Widget)

Testing & Verifikasi

  1. Upload kode ke ESP32 dan buka Serial Monitor
  2. Pastikan ESP32 terhubung ke WiFi dan Blynk Cloud
  3. Buka Blynk app di smartphone
  4. Uji tombol Lampu β€” relay dan LED indikator harus menyala/mati
  5. Uji tombol Kipas β€” relay kedua dan LED indikator harus menyala/mati
  6. Geser slider brightness β€” kecerahan LED harus berubah
  7. Periksa Gauge suhu & kelembaban β€” harus update setiap 3 detik
  8. Gunakan blow dryer di dekat DHT11 untuk memicu notifikasi suhu tinggi
⚠️ Keselamatan: Relay & Tegangan AC

Relay digunakan untuk mengontrol perangkat bertegangan AC (220V). Jika kamu menghubungkan lampu atau kipas AC, SELALU pastikan kabel sudah dipasang dengan benar dan aman. Jika ragu, konsultasikan dengan teknisi listrik. Untuk percobaan pertama, gunakan LED atau buzzer sebagai beban testing.

Ekspansi Proyek

Setelah proyek dasar berfungsi, kamu bisa menambahkan fitur:

9. Quiz: Uji Pemahamanmu!

Setelah membaca tutorial di atas, jawablah 5 pertanyaan berikut untuk menguji pemahamanmu tentang Blynk IoT:

Pertanyaan 1: Apa yang harus didefinisikan di kode firmware Blynk 2.0 yang TIDAK diperlukan di Blynk Legacy?

a) BLYNK_AUTH_TOKEN
b) WiFi SSID dan Password
c) BLYNK_TEMPLATE_ID dan BLYNK_TEMPLATE_NAME
d) Library BlynkSimpleEsp32.h

Pertanyaan 2: Fungsi Blynk.virtualWrite(V0, suhu) dalam konteks Blynk IoT adalah...

a) Membaca nilai dari Virtual Pin V0
b) Mengirim data dari perangkat ke Virtual Pin V0 di dashboard
c) Mengatur pin GPIO 0 ke nilai suhu
d) Menyimpan data ke memori lokal ESP32

Pertanyaan 3: Widget mana yang paling cocok untuk menampilkan data suhu real-time berbentuk visual lingkaran di dashboard Blynk?

a) Terminal
b) LCD
c) Gauge
d) Table

Pertanyaan 4: Fitur apa yang TIDAK tersedia di Web Dashboard Blynk 2.0?

a) Gauge widget
b) Switch (ON/OFF control)
c) Line Chart
d) Push Notification

Pertanyaan 5: Dalam kode Blynk, fungsi BLYNK_WRITE(V2) akan dipanggil saat...

a) Perangkat mengirim data ke Virtual Pin V2
b) ESP32 melakukan reset otomatis
c) Timer Blynk mencapai interval yang ditentukan
d) Pengguna mengubah nilai widget yang terhubung ke V2 dari aplikasi/dashboard
← Sebelumnya MikroTik Queue & QoS Selanjutnya β†’ Panduan Lengkap ESP32