Skip to content

Instantly share code, notes, and snippets.

@artistio
Created December 9, 2018 11:20
Show Gist options
  • Save artistio/05dbf6b931c79d8458e50d17222befd7 to your computer and use it in GitHub Desktop.
Save artistio/05dbf6b931c79d8458e50d17222befd7 to your computer and use it in GitHub Desktop.
Mengirimkan data DHT22 ke ThingSpeak, dengan Deep Sleep
/**
* Program untuk membaca suhu dan kelembaban dari sensor DHT22
* menggunakan NodeMCU
*
* Hak cipta (c) 2016 x.benny.id. All rights reserved.
* https://x.benny.id
*/
// Konfigurasi DHT22
#include <DHT.h>
#define DHTPIN 0 // PIN D3 (GPIO 0) dari NodeMCU terhubung dengan PIN Data dari DHT22
#define DHTTYPE DHT22 // Kita menggunakan tipe DHT22
DHT dht(DHTPIN, DHTTYPE); // Inisialisasi DHT22
// Konfigurasi WiFi
#include <ESP8266WiFi.h>
#define WIFI_SSID "corsica" // Ganti dengan SSID WiFi yang digunakan
#define WIFI_PASS "br0wnispis4ng" // Ganti dengan password WiFi yang benar
// Konfigurasi ThingSpeak
#include <PubSubClient.h>
#define THINGSPEAK_CLIENT_ID "YD0SPU-13" // Bisa diganti dengan Client ID Sembarang
#define THINGSPEAK_MQTT_API "SO9F3X3I52MUX0W7" // Ganti dengan User MQTT API Key dari ThingSpeak
#define THINGSPEAK_CHANNEL_API "TN6NIKBPQEIFKYWF" // Ganti dengan Channel API Key dari ThingSpeak
#define THINGSPEAK_CHANNEL_ID 647364 // Ganti dengan Channel ID dari ThingSpeak
// Konfigurasi Deep Sleep
#define SCAN_INTERVAL 600 // Inteval pembacaan cuaca dalam detik
// Mempersiapkan NodeMCU melalui fungsi setup()
// Catatan: Nama fungsi dibawah ini tidak boleh dirubah
void setup() {
// Inisialisasi Serial port untuk debugging
Serial.begin(115600);
Serial.setTimeout(2000);
while(!Serial) { }
Serial.println("NodeMCU Siap Dipakai");
// Mengaktifkan koneksi WiFi
Serial.print("Menhubungkan dengan WiFi: ");
Serial.println(WIFI_SSID);
int wifiStatus = startWiFi(WIFI_SSID, WIFI_PASS);
Serial.println("Membaca sensor DHT22");
}
int timeSinceLastRead = 0;
void loop() {
// Report every 10 seconds.
if(timeSinceLastRead > (10000)) {
// Membaca kelembaban
float h = dht.readHumidity();
// Membaca suhu dalam derajat celcius
float t = dht.readTemperature();
// Membaca suhu dalam derajat farenheit
float f = dht.readTemperature(true);
// Memastikan kalau semua pembacaan sukses
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
timeSinceLastRead = 0;
return;
}
// Menghitung index suhu dalam farenheit
float hif = dht.computeHeatIndex(f, h);
// Menghitung index suhu dalam farenheit
float hic = dht.computeHeatIndex(t, h, false);
// Menulis hasil pembacaan melalui Serial
Serial.print("\Kelembaban: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Suhu: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *F\t");
Serial.print("Persepsi Suhu: ");
Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.println(" *F");
timeSinceLastRead = 0;
int mqttThingSpeakResult = sendThingSpeak(t, h); // Di kita mengirimkan data ke ThingSpeak
// Memasuki Mode Deep Sleep
Serial.println("Entering Deep Sleep");
ESP.deepSleep(SCAN_INTERVAL*1000000);
}
delay(1000); // Menunggu pembacaan selanjutnya
timeSinceLastRead += 1000;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment