#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include "ThingSpeak.h"
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber = 2321437;
const char* myApiKey = "4DQEOJQWSTFXFGSO";
LiquidCrystal_I2C lcd(0x27, 16, 2); // Sesuaikan alamat I2C dengan alamat modul Anda
WiFiClient client;
void setup() {
Serial.begin(115200);
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Aktifkan pencahayaan LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SUHU");
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
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() {
// Ambil data suhu terbaru dari ThingSpeak
float temperature = getTemperatureFromThingSpeak();
// Tampilkan suhu di LCD
lcd.setCursor(6, 0);
lcd.print(String(temperature, 2) + "C");
// Tampilkan status suhu di LCD berdasarkan kriteria tertentu
if (temperature >= 20 && temperature <= 32) {
lcd.setCursor(0, 1);
lcd.print("Normal ");
} else if (temperature < 20) {
lcd.setCursor(0, 1);
lcd.print("Dingin ");
} else {
lcd.setCursor(0, 1);
lcd.print("Panas ");
}
// Tampilkan data suhu dari ThingSpeak di Serial Monitor
Serial.println("Temp: " + String(temperature, 2) + "°C");
// Tunda sebelum membaca kembali dari ThingSpeak
delay(10000);
}
float getTemperatureFromThingSpeak() {
HTTPClient http;
// URL untuk mengambil data suhu dari ThingSpeak
String url = "http://api.thingspeak.com/channels/" + String(myChannelNumber) + "/fields/1/last.txt";
http.begin(url); // Mulai koneksi HTTP
int httpCode = http.GET(); // Lakukan permintaan GET
float temperature = 0.0; // Inisialisasi suhu
if (httpCode > 0) {
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString(); // Dapatkan payload (nilai suhu) dari respons HTTP
temperature = payload.toFloat(); // Konversi payload ke float (suhu)
}
} else {
Serial.println("Error on HTTP request");
}
http.end(); // Selesai dengan koneksi HTTP
return temperature; // Kembalikan nilai suhu
}