#include "SPI.h"
#include "BLEDevice.h"
#include "BLEScan.h"
#include "BLEAdvertisedDevice.h"
#include "WiFi.h"
#include "BlynkSimpleEsp32.h"
#define RELAY_PIN 5
#define LED_PIN 2
#define SCAN_TIME 10 // BLE tarama süresi (saniye)
char auth[] = "BLYNK_AUTH_TOKEN"; // Blynk kimlik doğrulama anahtarını buraya gir
char ssid[] = "WiFi_ADI"; // WiFi ağ adı
char pass[] = "WiFi_SIFRE"; // WiFi şifresi
BLEScan *pBLEScan;
float current_temp = -100;
float set_temp = 24.0; // Varsayılan sıcaklık ayarı (telefon üzerinden değiştirilebilir)
BLYNK_WRITE(V0) {
set_temp = param.asFloat(); // Blynk uygulamasından gelen sıcaklık değeri
}
class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks {
void onResult(BLEAdvertisedDevice advertisedDevice) {
if (advertisedDevice.haveName() && advertisedDevice.haveServiceData() && advertisedDevice.getName() == "ATC_XXXXXX") {
std::string data = advertisedDevice.getServiceData();
uint8_t *rawData = (uint8_t *)data.data();
if (data.length() >= 6) {
int temp_raw = (rawData[2] << 8) | rawData[1];
current_temp = temp_raw / 10.0;
Serial.printf("Okunan Sıcaklık: %.1f°C\n", current_temp);
}
}
}
};
void setup() {
Serial.begin(115200);
pinMode(RELAY_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("WiFi bağlanıyor...");
}
Serial.println("WiFi bağlantısı başarılı!");
Blynk.begin(auth, ssid, pass);
BLEDevice::init("");
pBLEScan = BLEDevice::getScan();
pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
pBLEScan->setActiveScan(true);
pBLEScan->setInterval(100);
pBLEScan->setWindow(99);
}
void loop() {
Serial.println("BLE taraması başlatılıyor...");
pBLEScan->start(SCAN_TIME);
Serial.printf("Mevcut sıcaklık: %.1f°C | Ayarlanan sıcaklık: %.1f°C\n", current_temp, set_temp);
if (current_temp < set_temp) {
digitalWrite(RELAY_PIN, LOW);
Serial.println("Röle Açık (Kombi Açık)");
} else {
digitalWrite(RELAY_PIN, HIGH);
Serial.println("Röle Kapalı (Kombi Kapalı)");
}
Blynk.run();
delay(5000);
}