#include "AntaresESP8266HTTP.h"
#include "MQUnifiedsensor.h" //Library MQ
#include "DHT.h"
#define DHTPIN D4 //Pin DHT di NodeMCU
#define DHTTYPE DHT11 //Jenis DHT yang digunakan
#define Board ("ESP8266")
#define Pin (A0) //Pin MQ-9 di NodeMCU
#define Type ("MQ-9") //MQ9
#define Voltage_Resolution (5) //Tegangan yang digunakan
#define ADC_Bit_Resolution (10) //Nilai Bit ADC NodeMCU
#define RatioMQ9CleanAir (9.6) //Parameter
MQUnifiedsensor MQ9(Board, Voltage_Resolution, ADC_Bit_Resolution,Pin, Type); //Identifikasi MQ dan Aktifkan fungsi MQ
DHT dht(DHTPIN, DHTTYPE); //aktifkan fungsi DHT pada library
//sediakan variabel untuk akses ke antares
#define ACCESSKEY "0aa4a623c0ae6385:c0f6cee258fcd578"
#define projectName "MonitoringMQDHT11"
#define deviceName "MonitoringDHT11MQ"
//sediakan variabel ssid dan password wifi
#define WIFISSID "RH"
#define PASSWORD "1sampai5"
//sediakan sebuah object untuk sebuah antares
AntaresESP8266HTTP antares(ACCESSKEY);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
dht.begin();
// koneksi ke antares
antares.setDebug(true); //menampilka informasi data yang terkirim di antares
antares.wifiConnection(WIFISSID, PASSWORD);
MQ9.setRegressionMethod(1); //Mengatur Metode Kalibrasi MQ
MQ9.init(); //Memulai aktif MQ
//Kalkulasi untuk Kalibrasi MQ-9
float calcR0 = 0;
for(int i = 1; i<=10; i ++)
{
MQ9.update();
calcR0 += MQ9.calibrate(RatioMQ9CleanAir);
Serial.print(".");
}
MQ9.setR0(calcR0/10);
}
void loop()
{
//Untuk melakukan pembacaan nilai LPG dan CO
MQ9.update();
MQ9.setA(1000.5); MQ9.setB(-2.186);
float LPG = MQ9.readSensor();
MQ9.setA(599.65); MQ9.setB(-2.244);
float CO = MQ9.readSensor();
//untuk pembacaan nilai dht
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t))
{
Serial.println("gagal membaca data");
delay(1000);
return;
}
//buat sebuah variabel penampung data yang akan dikirim keanatares
antares.add("Nilai_CO", CO);
antares.add("Nilai_LPG", LPG);
antares.add("Nilai_Kelembapan", h);
antares.add("Nilai_suhu", t);
//kirim data ke antares
antares.send(projectName, deviceName);
delay(1000);
}