Ini adalah tutorial yang akan menjelaskan cara kerja ESP8266 secara singkat dan jelas
Materi Workshop Geeknesia Monitoring dan Controlling
Berikut ini adalah tutorial basic internet of things Monitoring dan Controlling. Setelah menyelesaikan tutorial ini anda akan mengerti bagaimana cara melakukan monitor dan control sebuah device melalui gateway Internet of Things Geeknesia.
Peralatan dan bahan – bahan yang diperlukan adalah sebagai berikut :
|
|
|
|
|
|
Sedangkan software yang harus dipersiapkan adalah sebagai berikut :
Hal paling pertama yang kita perlukan adalah registrasi akun di Geeknesia. Tahapannya adalah sebagai berikut :
Gambar 1.1 Landing Page Geeknesia
Gambar 1.2 Form Registrasi Geeknesia
Gambar 1.3 Melakukan Login
Gambar 1.4 Form Login Geeknesia
Untuk menggunakan Device Gateway kita harus terlebih dahulu membuat project. Berikut adalah tahapannya :
Gambar 2.1 Membuka Halaman Project
Gambar 2.2 Membuat Project Baru
Gambar 2.3 Form Project Baru
Gambar 2.4 Project Siap Digunakan
Jika sudah membuat project, kita dapat membuat device gateway untuk project tersebut.
Gambar 3.1 IoT Device Management
Gambar 3.2 Add More Gateway
Gambar 3.3 Form Gateway
Gambar 3.4 Location & Additional Attribute
Setelah gateway selesai dibuat kita dapat menambahkan device pada gateway tersebut dengan cara sebagai berikut.
Gambar 4.1 Add More Device
Gambar 4.2 Form Add More Device
Gambar 4.3 Icon Informasi Device
Gambar 4.4 Informasi Device
Pada bagian ini kita akan melakukan setup software agar siap untuk digunakan dalam pemrogaman.
Gambar 5.1 Icon Arduino IDE
Gambar 5.2 Icon Informasi Device
Gambar 5.3 Arduino Preference Setting
Gambar 5.4 Arduino Board Manager
Setelah setting selesai dengan baik kita dapat melakukan programing hardware. Dengan code berikut pada saat tombol push button pada prototyping board ditekan maka LED akan menyala. Status led menyala atau tidak akan dibaca oleh Device dan data dikirimkan ke Geeknesia untuk dapat kita baca.
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
const char *ssid = "********"; // cannot be longer than 32 characters!
const char *pass = "********"; //
int buttonState = 0;
String flag;
// device details
char *deviceId = "device-*******************************";
char *deviceUsername = "*******************************";
char *devicePassword = "*******************************";
String deviceCredential = String(deviceUsername) + ":" + String(devicePassword);
WiFiClient wclient;
PubSubClient client(wclient, (String) "geeknesia.com", 1883);
void senddata(char* topic, String credential, char *var1, String nilai1 ) {
String pubString = "{\"code\":\"";
pubString += credential;
pubString += "\",";
pubString += "\"attributes\":{\"";
pubString += String(var1) + "\":\"" + nilai1 + "\"";
pubString += "}}";
char message_buff[pubString.length() + 1];
pubString.toCharArray(message_buff, pubString.length() + 1);
client.publish("iot/data", pubString);
}
void setup() {
Serial.begin(115200);
pinMode(2, OUTPUT); // Initialize the BUILTIN_LED pin as an output
pinMode(12, INPUT_PULLUP);
}
// the loop function runs over and over again forever
void loop() {
if (WiFi.status() != WL_CONNECTED) {
WiFi.begin(ssid, pass);
if (WiFi.waitForConnectResult() != WL_CONNECTED)
return;
Serial.println("WiFi connected");
}
if (WiFi.status() == WL_CONNECTED) {
if (!client.connected()) {
if (client.connect(deviceId, "iot/will", 0, 0, deviceId)) {
}
}
if (client.connected())
client.loop();
}
buttonState = digitalRead(12);
if (buttonState == 1) {
digitalWrite(2, LOW);
flag = "OFF";
}
else {
// turn LED off:
digitalWrite(2, HIGH);
flag = "ON";
}
senddata(deviceId, deviceCredential, "Lamp", flag);
delay(5000);
}
Isi device Id, Username dan password dari informasi Gateway anda di Geeknesia, sedangkan ssid dan pass diisi dengan ID dan password dari WiFi terdekat yang memiliki akses internet.
Gambar 5.5 Gateway Information
Code ini akan kita upload ke device dengan cara berikut :
Gambar 5.6 Memilih Board Manager
Device siap untuk digunakan. Lakukan Wiring sesuai dengan skema berikut :
Gambar 5.7 Device Wiring
Dapat dilihat bahwa pada ESP WeMos tag agak berbeda dengan skema ESP8266 versi Node MCU 0.9 Untuk itu ikuti petunjuk berikut untuk menentukan Pin mana yang harus dihubungkan dengan ESP WeMos.
Gambar 5.8 Skema ESP8266-WeMos
Setelah tersusun dengan benar maka akan menjadi seperti gambar berikut.
Gambar 5.9 Hasil Device Wiring
Konfigurasi dan wiring berhasil dengan baik. Sekarang kita lakukan testing apakah device telah terhubung dengan geeknesia. Buka www.geeknesia.com lakukan login, dan buka gateway project anda. Saat push button anda tekan maka lampu akan menyala. Data inilah yang dikirimkan ke Geeknesia dan ditampilkan pada Gateway. Selamat, anda telah berhasil melakukan monitoring dari Geeknesia.
Gambar 5.10 Monitoring Device Melalui Geeknesia
Untuk tahap selanjutnya kita akan memberi perintah kepada Device (Controlling) melalui Geeknesia. Dengan langkah – langkah yang sama dengan cara di atas lakukan upload code berikut ke device.
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
const char *ssid = "********"; // cannot be longer than 32 characters!
const char *pass = "********"; //
const int ledPin = 2;
// device details
char *deviceId = "device-*******************************";
char *deviceTopic = "topic-*******************************";
char *deviceUsername = "*******************************";
char *devicePassword = "*******************************";
char *deviceApiKey = "*******************************";
String deviceCredential = String(deviceUsername) + ":" + String(devicePassword);
#define BUFFER_SIZE 100
void callback(const MQTT::Publish& pub) {
Serial.print(pub.topic());
Serial.print(" => ");
Serial.println(pub.payload_string());
String command = pub.payload_string();
if(command.equals("on")){
digitalWrite(ledPin, HIGH);
Serial.println("ON");
}
if(command.equals("off")){
digitalWrite(ledPin, LOW);
Serial.println("OFF");
}
Serial.println("End of callback");
}
WiFiClient wclient;
PubSubClient client(wclient, (String) "geeknesia.com", 1883);
void setup() {
Serial.begin(115200);
delay(10);
Serial.println();
Serial.println();
pinMode(ledPin, OUTPUT);
}
void loop() {
if (WiFi.status() != WL_CONNECTED) {
Serial.print("Connecting to ");
Serial.print(ssid);
Serial.println("...");
WiFi.begin(ssid, pass);
if (WiFi.waitForConnectResult() != WL_CONNECTED)
return;
Serial.println("WiFi connected");
}
if (WiFi.status() == WL_CONNECTED) {
if (!client.connected()) {
if (client.connect(deviceId, "iot/will",0,0,deviceId)) {
client.set_callback(callback);
client.subscribe(deviceTopic);
}
}
if (client.connected())
client.loop();
}
}
Setelah code baru kita upload wiring akan kita ubah sesuai skema baru berikut :
Gambar 5.11 Device Wiring
Setelah tersusun dengan benar maka akan terlihat seperti ini
Gambar 5.12 Hasil Device Wiring
Konfigurasi dan wiring berhasil dengan baik. Sekarang kita lakukan testing apakah device telah terhubung dengan geeknesia. Buka www.geeknesia.com lakukan login, dan buka gateway project anda. Saat tombol “on” anda klik maka LED pada board akan menyala, dan jika tombol “off” di klik maka LED akan mati.
Gambar 5.13 Pengujian Controlling
Selamat, anda telah berhasil melakukan Controlling melalui Geeknesia.