Pada artikel ini akan dijelaskan bagaimana cara menggunakan thingspeak untuk memonitoring data pembacaan sensor dht11 menggunakan nodemcu.
Dimana nodemcu tersebut harus terhubung dengan internet aktif, untuk mengirimkan data pembacaannya.
Secara rangkaian hampir sama dengan project sebelumnya yaitu Monitoring sensor DHT11 dengan NodeMCU ESP8266 via Browser.
Perbedaanya terletak pada pembacaan datanya yang sebelumnya menggunakan browser yang menuliskan ip address nodemcu, dan untuk kali dapat diakses dimana saja dan kapan saja menggunakan server thingspeak.
Skema Alur project nodemcu ini seperti gambar dibawah
Sensor DHT11 merupakan sensor suhu dan sensor kelembaban yang mudah diakses dengan harga yang terjangkau, untuk detail dapat diakses disini.
Thingspeak adalah server yang dikhususkan untuk Internet of Things Device, gratis yang dapat digunakan untuk membuat proyek – proyek IOT, dan dapat diakses dimanapun kalian berada.
Kebutuhan yang diperlukan project NodeMCU ESP8266 ThingSpeak
Bahan yang diperlukan :
- NodeMCU ESP8266 v3 Lolin
- Sensor DHT11
- Kabel jumper
- Wifi Router
- Komputer + Software Arduino IDE
Rangkaian yang perlu dirangkaikan
Library yang dibutuhkan
- DHT11 : [ddownload id=”1457″]
- Adafruit Sensor : [ddownload id=”1458″]
- ESP Daily Task : [ddownload id=”2740″]
Peletakan Library pada masing – masing Operation System :
- PC (Windows) : Program file /Arduino/ libraries
- Mac : (home directory)/Applications/Arduino (Show Package Content)/Contents/Java/Libraries
- Linux : (home directory)/sketchbook/libraries
Membuat Setting New Channel di ThingSpeak
Jika belum memiliki akun di thingspeak silahkan “Sign Up” terlebih dahulu, masukan email, alamat negara, nama kalian, dan password. Setelah itu bukalah email kalian untuk proses verifikasi jika dibutuhkan, dan sign in.
Kemudian lakukan sign in, dan pada 10 januari 2018 kalian diharuskan melakukan 2x login yaitu untuk thingspeak dan MathWorks account. Klik pada channels, pilih my channel, dan terakhir pilihlah new channel.
Pada new channel isikan data seperti contoh gambar dibawah ini, dapat kalian modifikasi dengan apa yang kalian akan buat project.
Setelah masuk pada dashboard channel “nyebarilmu.com – Monitoring DHT11” dan setting pada nama field chart yang dimana bergambar kotak merah.
Isikan data dengan nama Suhu C pada Field 1 Chart dan Field 2 chart dengan nama Kelembaban %.
Membuat Setting Write API Key
API Key adalah kode yang bersifat rahasia yang dimana tiap akun bersifat unik yang berfungsi untuk mempublikasikan hasil pembacaan sensor yang terpasang. Dikarenakan tujuan dari project yaitu mengirim data dan menuliskan ke thingspeak, maka yang harus dipilih yaitu “Write Api Key” dan kode tersebut harus dimasukan pada program yang akan dibuat.
Cara untuk mendapatkan api key yaitu masih sama pada dashboard seperti gambar diatas, pilihlah “Api Keys”. Dan pilih kode pada Write Api Key, dan copy paste kan pada notepad sementara untuk dimasukan ke dalam program.
Setelah semua selesai, lanjut ke pemrogram Nodemcu V.3 Lolin menggunakan software IDE Arduino.
Kode Program
//www.nyebarilmu.com #include <ESP8266WiFi.h> #include <ESPDailyTask.h> //library yang dimasukan di program file (x86)/arduino/libraries #include "DHT.h" //sensor yang digunakan #define DHTTYPE DHT11 // DHT 11 const char* ssid = "Blok21no12"; const char* password = "Komponen08"; //Copy paste API KEYS yang write const char* apiKey = "HW8UN4E7YJ4XG5O8"; const char* resource = "/update?api_key="; // Thing Speak API server const char* server = "api.thingspeak.com"; // Set waktu kapan harus mengirimkan data ESPDailyTask dailyTask(7*60 + 15); // 7:15am // DHT Sensor pada pin 5 di NodeMCU const int DHTPin = 5; //inisialisasi library DHTpin DHT dht(DHTPin, DHTTYPE); // Variabel temporary untuk suhu dan kelembaban static char temperatureTemp[7]; static char humidityTemp[7]; void setup() { //Serial port untuk komunikasi serial Serial.begin(115200); delay(10); //mengirimkan data per hari hanya 1 kali, sesuai dengan waktu yang telah diset dailyTask.sleep1Day(); //proses pembacaan sensor dht.begin(); //fungsi untuk mengkoneksikan nodemcu ke wifi initWifi(); //fungsi untuk komunikasi ke thingspeak makeHTTPRequest(); //untuk kembali ke mode sleep setelah mengirimkan data dailyTask.backToSleep(); } void loop() { } //Koneksi nodemcu ke wifi void initWifi() { Serial.print("Connecting to: "); Serial.print(ssid); WiFi.begin(ssid, password); int timeout = 10 * 4; // 10 detik while(WiFi.status() != WL_CONNECTED && (timeout-- > 0)) { delay(250); Serial.print("."); } Serial.println(""); if(WiFi.status() != WL_CONNECTED) { Serial.println("gagal terkoneksi, ke mode sleep"); } Serial.print("Wifi sukses terkonek: "); Serial.print(millis()); Serial.print(", IP addr : "); Serial.println(WiFi.localIP()); } //membuat http request ke thingspeak void makeHTTPRequest() { //pembacaan sensor float h = dht.readHumidity(); //untuk kelembaban float t = dht.readTemperature(); //untuk suhu dalam bentuk celcius float f = dht.readTemperature(true); //untuk suhu dalam bentuk fahrenheit //mengecek pembacaan sensor dht11 if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Gagal pembacaan data DHT11!"); strcpy(temperatureTemp,"GAGAL"); strcpy(humidityTemp, "GAGAL"); return; } else { float hic = dht.computeHeatIndex(t, h, false); dtostrf(hic, 6, 2, temperatureTemp); float hif = dht.computeHeatIndex(f, h); //dtostrf(hif, 6, 2, temperatureTemp); dtostrf(h, 6, 2, humidityTemp); Serial.print("Kelembaban: "); Serial.print(h); Serial.print(" %\t Suhu: "); Serial.print(t); Serial.print(" *C "); Serial.print(f); Serial.print(" *F\t Heat index: "); Serial.print(hic); Serial.print(" *C "); Serial.print(hif); Serial.print(" *F"); } Serial.print("Connecting to "); Serial.print(server); WiFiClient client; int retries = 5; while(!!!client.connect(server, 80) && (retries-- > 0)) { Serial.print("."); } Serial.println(); if(!!!client.connected()) { Serial.println("gagal terkoneksi, ke mode sleep"); } Serial.print("Permintaan sumber: "); Serial.println(resource); //kunci dalam pengiriman data ke thingspeak client.print(String("GET ") + resource + apiKey + "&field1=" + temperatureTemp + "&field2=" + humidityTemp + " HTTP/1.1\r\n" + "Host: " + server + "\r\n" + "Connection: close\r\n\r\n"); int timeout = 5 * 10; // 5 seconds while(!!!client.available() && (timeout-- > 0)){ delay(100); } if(!!!client.available()) { Serial.println("Tidak ada response, going back to sleep"); } while(client.available()){ Serial.write(client.read()); } Serial.println("\nclosing connection"); client.stop(); }
Hasil pengetesan dari project diatas
Rangkai semua komponen atau module yang dibutuhkan, copy paste program diatas (modifikasi untuk write api key, wifi, dan password), dan siap upload ke nodemcu nya.
Di program menggunakan serial port 9600 yang ditampilkan ke serial monitor Software Arduino IDE, dan hasil pembacaannya seperti ini dengan cara menekan reset. Dikarenakan program diatas dibuat untuk membaca sensor DHT11 dalam 1 hari hanya 1x.
Sedangkan untuk hasil data yang terkirim pada thingspeak hanya ada 1x saja, untuk mensimulasikan bisa dilakukan tiap 1 jam sekali dengan menghubungkan pin RESET dan pin D0 dan tekan tombol reset pada nodemcu lolin v3 nya.
Terimakasih, sudah mampir!