● online
- Kapton Tape Polymide Film 20mm Polimida 20 mm Isol....
- Kabel Jumper arduino Dupont Pelangi 30 cm Male to ....
- Sensor Ultrasonik HC-SR04 HC SR04 Sensor Jarak Ult....
- Max7219 Led Dot Matrix 32x8 Display Module For Ard....
- ESR Meter Digital LCR-T4 Tester Transistor Diode M....
- MP3 TF 16P Alternatif DFPlayer mini MP3 Player Ard....
- DS3231SN DS3231 SN I2C RTC Module & Baterai Mo....
- Raspberry Pi Pico Microcontroller Board....
- 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
Pada umumnya sebuah output data dapat kita tampilkan di berbagai platform software maupun hardware. Misalnya pada web, aplikasi android,... selengkapnya
Android merupakan sistem operasi untuk perangkat seluler dengan pengguna terbesar di dunia termasuk di Indonesia, dengan market share 90%... selengkapnya
Arduino Pro Micro adalah jenis arduino yang berukuran kecil, ukuranya hampir sama seperti Arduino Pro Mini. Secara fungsi dan... selengkapnya
LCD atau Liquid Crystal Display adalah perangkat yang berfungsi sebagai media penampil dengan memanfaatkan kristal cair sebagai objek penampil utama.... selengkapnya
Jumpa lagi dengan tutorial mengenai thingspeak, kali ini akan dibahas cara menampilkan data suhu pada Thingspeak menggunakan ESP-01 dan... selengkapnya
Blynk menawarkan beragam fungsi ya, salah satunya untuk mengontrol perangkat. Penggunaan Blynk ini bisa kapan dan dimana saja ya,... selengkapnya
Software dari keluarga adobe, yaitu salah satunya Adobe Photoshop. Adobe Photoshop ini di ciptakan secara multi fungsi, mulai untuk... selengkapnya
Water level merupakan sensor yang berfungsi untuk mendeteksi ketinggian air dengan output analog kemudian diolah menggunakan mikrokontroler. Cara kerja... selengkapnya
Sensor sentuh merupakan sebuah saklar yang cara penggunaanya dengan cara disentuh menggunakan jari. Ketika sensor ini disentuh maka sensor... selengkapnya
Setelah mengetahui spesifikasi dan fungsi BFD-1000 pada artikel sebelumnya, maka kini mari kita belajar lebih dalam lagi mengenai pin pada... selengkapnya
Modul sensor tegangan AC bolak balik 1 fasa ini menggunakan optocoupler sehingga tegangan input (AC) tidak akan mengganggu/membahayakan tegangan output… selengkapnya
Rp 21.000POTENSIOMETER LINEAR MONO 10K ohm
Rp 1.900Bagaimana jika mikrokontroler yang anda gunakan tidak memiliki port ADC. atau anda masih kurang dengan spesifikasi resolusi ADC yang disediakan… selengkapnya
Rp 65.000Mini Solderless Breadboard 400 Tie Points adalah breadboard 400 titik lubang, dengan ukuran yang compact sangat cocok untuk anda yang… selengkapnya
Rp 7.80012A 300W DC Buck Step Down Converter CC CV Driver LED charge Battery Spesifikasi: Input Voltage: 5-40V Output Voltage: 1.2-35V… selengkapnya
Rp 39.4001 X LDR Sensor 5mm Cahaya 5528 Light Dependent Resistor LDR
Rp 4.000TECHNICAL SPECIFICATIONS: – Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz – 2GB LPDDR4-2400 SDRAM – 2.4… selengkapnya
Rp 940.000Spesifikasi: 50mm Kapton Tape Polymide Film Gold High Temp isolasi Tahan Panas Harga Tertera: 1 Roll Kapton Tape Polymide Film… selengkapnya
Rp 75.000Kabel Jumper Dupont Pelangi 10 cm male to male 1 lembar = 40 kabel
Rp 13.000Kabel jumper Dupont untuk jumper Arduino atau Raspberry Pi 20 cm Male to Male 1 lembar = 40 kabel
Rp 11.300

Saat ini belum tersedia komentar.