#include <WiFi.h> //WiFi könyvtár hozzáadása
#include "DHTesp.h" //DHT könyvtár hozzáadása
#include "ThingSpeak.h" //ThingSpeak könyvtár hozzáadása
const int DHT_PIN = 15; //DHT szenzort 15-ös lábra csatlakoztatjuk
const int RELAY_PIN = 32; //Relét 32-es lábra csatlakoztatjuk
const int FAN_PIN = 35; //Ventilátort 35-ös lábra csatlakoztatjuk (LED szimulálja)
const int LED_PIN = 13; //LED-et 13-as lábra csatlakoztatjuk
const char* WIFI_NAME = "Wokwi-GUEST"; //WiFi SSID
const char* WIFI_PASSWORD = ""; //WiFi jelszó
const int myChannelNumber = 2771793; //ThingSpeak channel ID
const char* myApiKey = "M4KWYGUYI75IPN2K"; //ThingSpeak API kulcs
const char* server = "api.thingspeak.com"; //ThingSpeak szerver
DHTesp dhtSensor; //Példányosítjuk a DHT és DHTesp szenzort
WiFiClient client; //WiFiClient objektum
void setup() {
Serial.begin(115200); //Sorozat kommunikáció kezdése
dhtSensor.setup(DHT_PIN, DHTesp::DHT22); //DHT szenzor inicializálása
pinMode(LED_PIN, OUTPUT); //LED pin kimeneti módba állítása
pinMode(RELAY_PIN, OUTPUT); //Relé pin kimeneti módba állítása
pinMode(FAN_PIN, OUTPUT); //Ventilátor pin kimeneti módba állítása
WiFi.begin(WIFI_NAME, WIFI_PASSWORD); //WiFi csatlakozás
while (WiFi.status() != WL_CONNECTED) { //Amíg nem csatlakozik
delay(1000);
Serial.println("WiFi not connected"); //Ha nem csatlakozik
}
Serial.println("WiFi connected!"); //Ha sikeresen csatlakozott
Serial.println("Local IP: " + String(WiFi.localIP())); //Kiírjuk az IP címet
WiFi.mode(WIFI_STA); //Állomás üzemmódba állítjuk
ThingSpeak.begin(client); //ThingSpeak csatornához csatlakozás
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity(); //Kiolvassuk a hőmérsékletet és páratartalmat
ThingSpeak.setField(1, data.temperature); //A hőmérséklet küldése ThingSpeak-re
ThingSpeak.setField(2, data.humidity); //A páratartalom küldése ThingSpeak-re
// Relé vezérlés (fűtés): Ha a hőmérséklet 12 °C alatt van, akkor kapcsolódik a fűtés (relé)
if (data.temperature < 12) {
digitalWrite(RELAY_PIN, HIGH); //Fűtés bekapcsolása
Serial.println("Fűtés BE");
} else {
digitalWrite(RELAY_PIN, LOW); //Fűtés kikapcsolása
Serial.println("Fűtés KI");
}
// Ventilátor vezérlés: Ha a páratartalom 70% fölött van, akkor kapcsolódik a ventilátor
if (data.humidity > 70) {
digitalWrite(FAN_PIN, HIGH); //Ventilátor bekapcsolása
Serial.println("venti BE");
} else {
digitalWrite(FAN_PIN, LOW); //Ventilátor kikapcsolása
Serial.println("Venti KI");
}
// LED vezérlés: Ha a hőmérséklet túl alacsony, túl magas, vagy a páratartalom nem megfelelő
if (data.temperature > 35 || data.temperature < 12 || data.humidity > 70 || data.humidity < 40) {
digitalWrite(LED_PIN, HIGH); //LED bekapcsolása (figyelmeztető állapot)
} else {
digitalWrite(LED_PIN, LOW); //LED kikapcsolása
}
// Adatok küldése a ThingSpeak-re
int x = ThingSpeak.writeFields(myChannelNumber, myApiKey); //Adatok küldése
Serial.println("Hőmérséklet: " + String(data.temperature, 2) + "°C"); //Hőmérséklet kiírása
Serial.println("Páratartalom:: " + String(data.humidity, 1) + "%"); //Páratartalom kiírása
Serial.println("---");
delay(20000); //Adatok küldése 20 másodpercenként
}