
1. Veritabanı + tablo oluşturma (phpMyAdmin / SQL)
A. phpMyAdmin ile (grafik arayüz)
- cPanel veya hosting kontrol paneline gir → phpMyAdmin aç.
- Sol üstten Yeni (New) diyerek yeni database oluştur:
- İsim:
temrinler_esp - Karakter seti:
utf8mb4(varsa)
- İsim:
- Solda
temrinler_espseçili iken üst menüden SQL sekmesine git. Aşağıdaki SQL komutlarını yapıştırıp çalıştır:
-- 1) tabloyu oluştur
CREATE TABLE IF NOT EXISTS `role_durum` (
`id` INT NOT NULL PRIMARY KEY,
`komut` TINYINT(1) NOT NULL DEFAULT 0,
`tarih` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 2) başlatıcı satırı ekle (id=1)
INSERT INTO `role_durum` (`id`, `komut`) VALUES (1, 0)
ON DUPLICATE KEY UPDATE `komut` = VALUES(`komut`);
2. PHP Dosyaları (sunucuda)
🟢 komut_gonder.php
App Inventor bu sayfayı çağırır, kapıyı açma komutunu gönderir.
<?php
// temrinler.com/komut_gonder.php?key=sifre123
$servername = "localhost";
$username = "veritabani_kullanici_adi";
$password = "veritabani_sifresi";
$dbname = "temrinler_esp";
$API_KEY = "sifre123";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) { die("Baglanti hatasi: " . $conn->connect_error); }
if (isset($_GET['key']) && $_GET['key'] === $API_KEY) {
$sql = "UPDATE role_durum SET komut=1, tarih=NOW() WHERE id=1";
$conn->query($sql);
echo "OK";
} else {
echo "Yetkisiz erisim";
}
$conn->close();
?>
🔵 komut_cek.php
ESP32 düzenli olarak bu sayfayı çağırır, komut var mı diye kontrol eder.
<?php
// temrinler.com/komut_cek.php?key=sifre123
$servername = "localhost";
$username = "veritabani_kullanici_adi";
$password = "veritabani_sifresi";
$dbname = "temrinler_esp";
$API_KEY = "sifre123";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) { die("Baglanti hatasi: " . $conn->connect_error); }
if (isset($_GET['key']) && $_GET['key'] === $API_KEY) {
$result = $conn->query("SELECT komut FROM role_durum WHERE id=1");
$row = $result->fetch_assoc();
echo $row['komut'];
// komut işlendiğinde sıfırlanacak
if ($row['komut'] == 1) {
$conn->query("UPDATE role_durum SET komut=0, tarih=NOW() WHERE id=1");
}
} else {
echo "Yetkisiz erisim";
}
$conn->close();
?>
Bu dosya, komutu 1 defaya mahsus verir ve hemen sıfırlar.
Yani ESP32 her 3–5 saniyede bir kontrol ettiğinde,
“1” komutu sadece bir kez görülür, sonra tekrar 0 olur.
🔹 3. ESP32 KODU (1 saniye HIGH tetikleme)
#include <WiFi.h> // v1.2.7
#include <HTTPClient.h> // dahili
const char* ssid = "WiFi_Adi";
const char* password = "WiFi_Sifresi";
String anahtar = "sifre123"; // PHP ile aynı olmalı
String urlKomut = "http://www.temrinler.com/komut_cek.php?key=" + anahtar;
int kilitPin = 2; // kapı kilidi röle pini
void setup() {
Serial.begin(115200);
pinMode(kilitPin, OUTPUT);
digitalWrite(kilitPin, LOW);
WiFi.begin(ssid, password);
Serial.print("WiFi baglantisi yapiliyor");
while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); }
Serial.println("\nWiFi baglandi!");
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(urlKomut);
int kod = http.GET();
if (kod == 200) {
String yanit = http.getString();
yanit.trim();
Serial.println("Sunucudan gelen komut: " + yanit);
if (yanit == "1") {
digitalWrite(kilitPin, HIGH);
delay(1000); // 1 saniye HIGH
digitalWrite(kilitPin, LOW);
Serial.println("Kapi acma sinyali gonderildi.");
}
}
http.end();
}
delay(3000); // 3 sn'de bir kontrol et
}


No responses yet