#include <WiFi.h>
#include <FirebaseESP32.h>
#include <DHT.h>
#include <SD.h>
// Definujte Wi-Fi údaje
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
// Definujte Firebase údaje
#define FIREBASE_HOST "https://socka-3a6e9-default-rtdb.europe-west1.firebasedatabase.app"
#define FIREBASE_AUTH "073bhtFCmaknxbSnCuzQX9RUcnDustZ7TBHTAplr"
// Definujte DHT senzor
#define DHT_PIN 4 // Pin, na ktorý je pripojený DHT senzor
#define DHT_TYPE DHT22 // Typ senzora DHT (môže byť DHT11, DHT22 alebo AM2302)
DHT dht(DHT_PIN, DHT_TYPE); // Inicializácia DHT senzora
FirebaseData firebaseData;
FirebaseConfig firebaseConfig;
FirebaseAuth firebaseAuth;
void setup() {
// Inicializácia sériového portu pre diagnostiku
Serial.begin(115200);
// Pripojenie k Wi-Fi sieti
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
Serial.println("Pripojovanie k Wi-Fi...");
delay(1000);
}
Serial.println("Pripojené k Wi-Fi");
// Nastavenie Firebase konfigurácie
firebaseConfig.host = FIREBASE_HOST;
firebaseConfig.api_key = FIREBASE_AUTH;
// Inicializácia Firebase s ukazovateľom na firebaseConfig a firebaseAuth
Firebase.begin(&firebaseConfig, &firebaseAuth);
// Inicializácia DHT senzora
dht.begin();
// Inicializácia SD karty
if (!SD.begin()) {
Serial.println("Chyba pri inicializácii SD karty.");
return;
}
Serial.println("SD karta inicializovaná.");
}
void loop() {
// Čítanie teploty a vlhkosti zo senzora
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Skontrolujte, či čítanie prebehlo správne
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Chyba pri čítaní z DHT senzora!");
} else {
// Vytlačte teplotu a vlhkosť do sériového monitora
Serial.print("Teplota: ");
Serial.print(temperature);
Serial.print(" °C\tVlhkosť: ");
Serial.print(humidity);
Serial.println(" %");
// Uloženie údajov na Firebase
Firebase.setFloat(firebaseData, "/sensor/temperature", temperature);
Firebase.setFloat(firebaseData, "/sensor/humidity", humidity);
if (firebaseData.errorReason() != "") {
Serial.print("Chyba pri zápise do Firebase: ");
Serial.println(firebaseData.errorReason());
} else {
Serial.println("Údaje boli úspešne odoslané do Firebase.");
}
}
// Uloženie údajov na SD kartu
File dataFile = SD.open("sensor_data.txt", FILE_WRITE);
if (dataFile) {
dataFile.print("Teplota: ");
dataFile.print(temperature);
dataFile.print(" °C\tVlhkosť: ");
dataFile.print(humidity);
dataFile.println(" %");
dataFile.close(); // Zavrieť súbor
Serial.println("Údaje boli uložené na SD kartu.");
} else {
Serial.println("Chyba pri otváraní súboru na SD kartu.");
}
delay(2000); // Čakať 2 sekundy pred ďalším čítaním
}