● online
- ESP32 ESP-32 Wireless Module ESP32-S ESP-WROOM-32 ....
- Kabel Jumper 10cm Dupont Pelangi 10 cm Female to M....
- Dual Volt Amp Meter Digital Ampere Meter Voltmeter....
- Dimmer AC 4000W 220 Volt 4000 Watt 220V + Casing A....
- SG90 Motor Servo For Arduino Uno Mega SG 90 Biru S....
- Tilt Sensor SW-520D Module Modul Sensor Kemiringan....
- ESR Meter Digital LCR-T4 Tester Transistor Diode M....
- 10X RESISTOR 1K 1KOHM 1/4W 1% METAL FILM....
- Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
- Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
NodeMCU, Kontrol GPIO LED Via Internet Menggunakan ThingsBoard MQTT
Thingsboard merupakan sebuah platform IoT open-source yang memungkinkan anda untuk mengontrol ataupun memonitoring berbagai perangkat. Penggunaanya mudah, gratis dan bisa kita gunakan kapan dan di mana saja. Di dalamnya sudah disediakan beberapa contoh-contoh seperti kontrol GPIO Arduino, ESP8266, Raspberry Pi, monitoring suhu dan masih banyak lainnya.
Kali ini kita akan mencoba untuk mengontrol GPIO dengan Output LED dan nantinya bisa juga digunakan untuk relay.
Alat dan bahan
- NodeMCU CH340, BELI
- Lampu LED, BELI
- Resistor 330 Ohm, BELI
- Kabel Jumper secukupnya
- Library ArduinoJson versi 5.8.0, download
- Library PubSubClient, download
Masukkan libary pada Arduino IDE.
Rangkaian

Sketch Program
#include <ArduinoJson.h>
#include <PubSubClient.h>
#include <ESP8266WiFi.h>
#define WIFI_AP "xxxx"
#define WIFI_PASSWORD "xxxxx"
#define TOKEN "bIJb6y59MR36Qfkdd"
#define GPIO0 0 //D3
#define GPIO2 2 //D4
#define GPIO0_PIN 3
#define GPIO2_PIN 5
char thingsboardServer[] = "demo.thingsboard.io";
WiFiClient wifiClient;
PubSubClient client(wifiClient);
int status = WL_IDLE_STATUS;
// We assume that all GPIOs are LOW
boolean gpioState[] = {false, false};
void setup() {
Serial.begin(115200);
// Set output mode for all GPIO pins
pinMode(GPIO0, OUTPUT);
pinMode(GPIO2, OUTPUT);
delay(10);
InitWiFi();
client.setServer( thingsboardServer, 1883 );
client.setCallback(on_message);
}
void loop() {
if ( !client.connected() ) {
reconnect();
}
client.loop();
}
// The callback for when a PUBLISH message is received from the server.
void on_message(const char* topic, byte* payload, unsigned int length) {
Serial.println("On message");
char json[length + 1];
strncpy (json, (char*)payload, length);
json[length] = '\0';
Serial.print("Topic: ");
Serial.println(topic);
Serial.print("Message: ");
Serial.println(json);
// Decode JSON request
StaticJsonBuffer<200> jsonBuffer;
JsonObject& data = jsonBuffer.parseObject((char*)json);
if (!data.success())
{
Serial.println("parseObject() failed");
return;
}
// Check request method
String methodName = String((const char*)data["method"]);
if (methodName.equals("getGpioStatus")) {
// Reply with GPIO status
String responseTopic = String(topic);
responseTopic.replace("request", "response");
client.publish(responseTopic.c_str(), get_gpio_status().c_str());
} else if (methodName.equals("setGpioStatus")) {
// Update GPIO status and reply
set_gpio_status(data["params"]["pin"], data["params"]["enabled"]);
String responseTopic = String(topic);
responseTopic.replace("request", "response");
client.publish(responseTopic.c_str(), get_gpio_status().c_str());
client.publish("v1/devices/me/attributes", get_gpio_status().c_str());
}
}
String get_gpio_status() {
// Prepare gpios JSON payload string
StaticJsonBuffer<200> jsonBuffer;
JsonObject& data = jsonBuffer.createObject();
data[String(GPIO0_PIN)] = gpioState[0] ? true : false;
data[String(GPIO2_PIN)] = gpioState[1] ? true : false;
char payload[256];
data.printTo(payload, sizeof(payload));
String strPayload = String(payload);
Serial.print("Get gpio status: ");
Serial.println(strPayload);
return strPayload;
}
void set_gpio_status(int pin, boolean enabled) {
if (pin == GPIO0_PIN) {
// Output GPIOs state
digitalWrite(GPIO0, enabled ? HIGH : LOW);
// Update GPIOs state
gpioState[0] = enabled;
} else if (pin == GPIO2_PIN) {
// Output GPIOs state
digitalWrite(GPIO2, enabled ? HIGH : LOW);
// Update GPIOs state
gpioState[1] = enabled;
}
}
void InitWiFi() {
Serial.println("Connecting to AP ...");
// attempt to connect to WiFi network
WiFi.begin(WIFI_AP, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to AP");
}
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
status = WiFi.status();
if ( status != WL_CONNECTED) {
WiFi.begin(WIFI_AP, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to AP");
}
Serial.print("Connecting to ThingsBoard node ...");
// Attempt to connect (clientId, username, password)
if ( client.connect("ESP8266 Device", TOKEN, NULL) ) {
Serial.println( "[DONE]" );
// Subscribing to receive RPC requests
client.subscribe("v1/devices/me/rpc/request/+");
// Sending current GPIO status
Serial.println("Sending current GPIO status ...");
client.publish("v1/devices/me/attributes", get_gpio_status().c_str());
} else {
Serial.print( "[FAILED] [ rc = " );
Serial.print( client.state() );
Serial.println( " : retrying in 5 seconds]" );
// Wait 5 seconds before retrying
delay( 5000 );
}
}
}
Langkah-langkah
- Silahkan buat akun terlebih dahulu di thingsboard DISINI
- Isi nama dan email anda lanjut isi password.
- Kemudian Sign Up, nnti ada pesan masuk ke email untuk mengaktifkan thingsboard.
- Login menggunakan email dan password
- Masuk ke Device > Esp8266 Demo Devic > Manage Credentials> Copy Acces token dan pastekan pada sketch program di atas. lengkapnya lihat gambar di bawah.


- Kemudian upload sketch program di atas jangan lupa untuk mengisi nama wifi dan passwordnya.
- Jika sudah lanjut ke Thingsboard menu dashboard > Esp8266 Demo

Silahkan coba untuk menekan tombol kontrolnya, jika berhasil LED akan menyala/mati.
Anda juga bisa membagikan dashboard Control ini ke teman-teman anda dengan menjadikannya public.


Copy link public dan kirim ke temen anda. Dan sekarang silahkan coba pada jarak yang jauh, karena ini menggunakan jaringan internet maka jarak tidak mempengaruhi. Kontrol tetap bisa berfungsi. Semoga bermanfaat.
NodeMCU, Kontrol GPIO LED Via Internet Menggunakan ThingsBoard MQTT
Keypad 4×4 merupakan sebuah komponen berisi tombol-tombol dan disusun secara matrix yang berfungsi sebagai inputan kedalam suatu sistem tertentu.... selengkapnya
Motor servo merupakan salah satu aktuator yang paling sering digunakan dalam dunia robotika, terutama untuk gerakan yang membutuhkan ketelitian posisi.... selengkapnya
7 segment merupakan sebuah display yang berfungsi menampilkan sebuah karakter baik huruf maupun digit angka. Namun untuk huruf sangat... selengkapnya
LCD atau Liquid Crystal Display adalah Perangkat yang berfungsi sebagai media penampil dengan memanfaatkan kristal cair sebagai objek penampil utama.... selengkapnya
Semangat pagi semua, kali ini kita akan belajar mengenai penggunaan LCD pada Arduino tanpa module I2C. Kenapa perlu belajar... selengkapnya
Dalam dunia fotografi, mengambil foto yang bagus merupakan suatu keahlian yang harus di kuasai oleh seorang fotografer. Karena dengan... selengkapnya
HK1600B merupakan salah satu sensor tekanan yang mudah kita temukan di pasaran, dengan output analog linear dari 0.5V hingga 4.5V,... selengkapnya
NodeMCU dikhususkan sebagai board yang dapat terhubung dengan jaringan internet (Wifi), jadi buat yang ingin belajar Internet of... selengkapnya
Sensor DS18b20 merupakan sebuah sensor untuk mendeteksi suhu ruangan, namun bisa juga untuk suhu air tergantung dari jenis... selengkapnya
Bagi pegiat teknologi, komputer, elektronika, dan Internet Of Things (IoT) maka sudah tidak asing lagi dengan benda yang satu... selengkapnya
Support terus UKM indonesia dengan membeli produk-produk dalam negeri. Untuk kualitas tidak usah diragukan, udah kita tes QC dengan sangat… selengkapnya
Rp 8.500Kabel Jumper Dupont Pelangi 30cm female to Female 1 lembar = 40 kabel
Rp 13.500Spesifikasi: 20mm Kapton Tape Polymide Film Gold High Temp isolasi Tahan Panas Harga Tertera: 1 Roll Kapton Tape Polymide Film… selengkapnya
Rp 219.000Product Name: Tactile Switch; Material: Metal, Plastic Package Content: 30 Pcs x Tactile Switch; Main Color: Black, Silver Tone Total… selengkapnya
Rp 400TILT SENSOR adalah sensor untuk mendeteksi sudut kemiringan / derajat, dimana cara kerja sensor ini adalah dengan menggunakan 2 buah… selengkapnya
Rp 9.800This is a set of transmitter and receiver in one of the photoelectric sensor. Detection distance can be adjusted according… selengkapnya
Rp 37.500Deskripsi Produk “LED Dot Matrix Display dengan 32×8 pixel, berwarna Merah, menggunakan IC MAX7219 sebagai driver dan dapat dikoneksikan ke… selengkapnya
Rp 47.500Bosan dengan modul arduino yang kalian punya, saatnya mencoba modul programmer yang lain yah ini dia RASPBERRY PI 4 COMPUTER… selengkapnya
Rp 1.570.000Fitur: -Dapat mendeteksi api atau panjang gelombang sumber cahaya dalam 760nm ~ 1100nm – Api lebih ringan mendeteksi jarak 80cm… selengkapnya
Rp 9.000Dimmer AC 220 Volt 4000 Watt + Casing Aluminium Potensiometer untuk mengatur tegangan output min/max pada tegangan AC PLN 220V…. selengkapnya
Rp 52.500

Saat ini belum tersedia komentar.