// channel id : 2555976
// Write api key : RSDPNUE5PN1GH1M5
// Read api key : IQ9Q5LS7CGIRHYJW
#include <WiFi.h>
#include "ThingSpeak.h"
#include "DHT.h"
#define SOIL_MOISTURE_PIN 26 // OUTPUT Sensor tanah
#define DHTPIN 15 // OUTPUT DHT
#define DHTTYPE DHT22 // TYPE DHT
const char* WIFI_NAME = "Wokwi-GUEST"; // Nama Wifi
const char* WIFI_PASSWORD = ""; // Password Wifi
const int myChannelNumber =2555976 ; // Channel ID
const char* WRITE_API = "RSDPNUE5PN1GH1M5"; // WRITE API KEY
const char* server = "api.thingspeak.com";
const char* READ_API = "IQ9Q5LS7CGIRHYJW"; // READ API KEY
unsigned int FieldNumber = 4; // Nomor Field MOTOR
DHT dht(DHTPIN, DHTTYPE);
WiFiClient client;
void setup() {
Serial.begin(115200);
pinMode(12,OUTPUT);
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
// test Connect WIFI
while (WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.println("Wifi not connected");
}
Serial.println("Wifi connected !");
Serial.println("Local IP: " + String(WiFi.localIP()));
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}
void loop() {
float temperature;
float humidity;
// membaca nilai Temperature
temperature = dht.readTemperature();
Serial.print(F("Temperature: "));
Serial.print(temperature);
Serial.println(F("°C "));
// membaca nilai humidity
humidity = dht.readHumidity();
Serial.print(F("Humidity: "));
Serial.print(humidity);
Serial.println(F("% "));
// membaca nilai Temperature tanah
int soilMoistureValue = analogRead(SOIL_MOISTURE_PIN);
float soilHumidity = (1 - (soilMoistureValue / 4095.0)) * 100;
Serial.print(F("Soil Temperature : "));
Serial.print(soilHumidity);
Serial.println(F("%"));
// alokasi nilai baca beserta fieldnya
ThingSpeak.setField(1,temperature);
ThingSpeak.setField(2,humidity);
ThingSpeak.setField(3,soilHumidity);
// test pengiriman data MIT ke ThingSpeak
int x = ThingSpeak.writeFields(myChannelNumber,WRITE_API);
if(x == 200){
Serial.println("Data pushed successfull");
}else{
Serial.println("Push error " + String(x));
}
Serial.println("");
delay(5000);
// Kontrol Tombol ON / OFF pada MIT
bool tombol = ThingSpeak.readLongField(myChannelNumber,FieldNumber,READ_API);
int statusCode = ThingSpeak.getLastReadStatus();
if(statusCode == 200){
Serial.println("kondisi = " + String(tombol));
if(tombol == 1){
digitalWrite(12,HIGH);
Serial.println("MOTOR ON");
Serial.println("--------");
}
else{
digitalWrite(12,LOW);
Serial.println("MOTOR OFF");
Serial.println("---------");
}
}
}