ESP-12E İnternet veri gönderme

Bu yazımızda ESP-12E modülün internet web sitesine (dolaylı olarak veritabanına) bilgi aktarımından bahsedeceğiz.

Bir önceki yazıda ESP-12E modül ile internet sitesi veri çekiminden bahsetmiştik. Bu yazı ise onun devamı niteliğinde olacaktır. Dilerseniz bu bağlantıdan bir önceki yazımıza göz atabilirsiniz.

İnternet sitesine veri göndermek için kullanacağınız yöntem şu şekildedir;

İnternet sitesi ayarlamaları

Öncelikle modülden gelen verileri veri tabanına aktarmak için aşağıdaki kodları kullanarak veri_gonder.php adında php uzantılı bir dosya oluşturun (veritabani_adi, kullanici_adi ve kullanici_sifre değerlerini veritabanınıza göre değiştirin.) Bu dosyayı Cpanel veya FTP aracılığı ile sitenizin kök dizinine (public_html) atın. Bu sayfanın görevi ESP-12E modül tarafından gönderilen verileri yeni kayıt olarak veritabanına kaydetmektir.

<?php

$servername = "localhost";
$dbname = "veritabani_adi";
$username = "kullanici_adi";
$password = "kullanici_sifre";
$api_key_value = "tdTfGvSAb3j7F9";
$api_key= $value1 = $value2 = $value3 = $value4 = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $api_key = test_input($_POST["api_key"]);
    if($api_key == $api_key_value) {
        $value1 = test_input($_POST["value1"]);
        $value2 = test_input($_POST["value2"]);
        $value3 = test_input($_POST["value3"]);
        $value4 = test_input($_POST["value4"]);
        

        $conn = new mysqli($servername, $username, $password, $dbname);
        if ($conn->connect_error) {
            die("Bağlantı başarısız oldu: " . $conn->connect_error);
        } 
        
        $sql = "INSERT INTO EspTablo (value1, value2, value3, value4)
        VALUES ('" . $value1 . "', '" . $value2 . "', '" . $value3 . "', '" . $value4 . "')";
        
        if ($conn->query($sql) === TRUE) {
            echo "Yeni kayıt başarıyla oluşturuldu";
        } 
        else {
            echo "Hata: " . $sql . "<br>" . $conn->error;
        }
    
        $conn->close();
    }
    else {
        echo "Yanlış API Anahtarı girildi.";
    }

}
else {
    echo "HTTP POST ile hiçbir veri gönderilmedi.";
}

function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

?>

Modül tarafından veri_gonder.php sayfası her ziyaret edildiğinde ESPTablo adlı tabloya yeni bir kayıt eklenmesin mevcut tek kayıt sürekli güncellensin isterseniz veri_gonder.php üzerinde aşağıdaki gibi bir değişiklik yapmanız gerekir. (Bunun için veritabanında en az bir kayıt bulunmalıdır.) $api_key_value, web sayfasına dışarıdan erişimi engellemek için kulanılan şifredir. Hem modül ve hem php sayfasında aynı değişikliği yaparak şifreyi değiştirebilirsiniz.

<?php

$servername = "localhost";
$dbname = "veritabani_adi";
$username = "kullanici_adi";
$password = "kullanici_sifre";
$api_key_value = "tdTfGvSAb3j7F9";
$api_key= $value1 = $value2 = $value3 = $value4 = "";
$kayit_id = 1;

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $api_key = test_input($_POST["api_key"]);
    if($api_key == $api_key_value) {
        $value1 = test_input($_POST["value1"]);
        $value2 = test_input($_POST["value2"]);
        $value3 = test_input($_POST["value3"]);
        $value4 = test_input($_POST["value4"]);
        

        $conn = new mysqli($servername, $username, $password, $dbname);
        if ($conn->connect_error) {
            die("Bağlantı başarısız oldu: " . $conn->connect_error);
        } 
        

        $sql = "UPDATE EspTablo SET value1='$value1',  value2='$value2', value3='$value3', value4='value4' WHERE id='$kayit_id'";

        
        if ($conn->query($sql) === TRUE) {
            echo "Kayıt başarıyla güncellendi";
        } 
        else {
            echo "Hata: " . $sql . "<br>" . $conn->error;
        }
    
        $conn->close();
    }
    else {
        echo "Yanlış API Anahtarı girildi.";
    }

}
else {
    echo "HTTP POST ile hiçbir veri gönderilmedi.";
}

function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

?>

ESP-12E modül kodları

ESP-12E modüle ise aşağıdaki kodları yüklemelisiniz. Modülü programlamak için bu yazımızdan yararlanabilirsiniz. Kod içinde veri tabanına aktarılan değişkenler deger1, değer2, deger3, değer4 ‘tür. (Kodlamada bu değişkenlere varsayılan olarak “LOW” atanmıştır.)

  #include <ESP8266WiFi.h>
  #include <ESP8266HTTPClient.h>
  #include <WiFiClient.h>
  
const char* ssid     = "Modem_SSID_adi";                                     // Modem SSID adı
const char* password = "Modem_Sifre";                                        // Modem Şifre                           
const char* serverName = "http://siteadiniz.com/veri_gonder.php";            // Veri kayıt URL
String apiKeyValue = "tdTfGvSAb3j7F9";                                       // Api Key

const char* deger1 = "LOW";                                                  // Gönderilecek veri 1
const char* deger2 = "LOW";                                                  // Gönderilecek veri 2
const char* deger3 = "LOW";                                                  // Gönderilecek veri 3
const char* deger4 = "LOW";                                                  // Gönderilecek veri 4



void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  Serial.println("Bağlanıyor");
  while(WiFi.status() != WL_CONNECTED) { 
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Şu IP Adresi ile WiFi ağına bağlanıldı:");
  Serial.println(WiFi.localIP());
}

void loop() {
  if(WiFi.status()== WL_CONNECTED){
    HTTPClient http;
    http.begin(serverName);
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");
    
    String httpRequestData = "api_key=" + apiKeyValue + "&value1=" + deger1
                          + "&value2=" + deger2 + "&value3=" + deger3
                          + "&value4=" + deger4 + "";
    
    Serial.print("httpRequestData: ");
    Serial.println(httpRequestData);
    int httpResponseCode = http.POST(httpRequestData);
     
    if (httpResponseCode>0) {
      Serial.print("HTTP Response kod: ");
      Serial.println(httpResponseCode);
    }
    else {
      Serial.print("Hata kodu: ");
      Serial.println(httpResponseCode);
    }
    http.end();
  }
  else {
    Serial.println("WiFi Bağlantısı Kesildi");
  }
  delay(30000);  
}

Şimdilik bu kadar..

Erdoğan Demirtaş
Erdoğan Demirtaş
Cumhuriyet Üniversitesi, Sivas Meslek Yüksekokulu, Endüstriyel Elektronik bölümü mezunudur. Endüstriyel kart/cihaz bakım onarım teknikeri olarak çalışmaktadır. Elektronik dışında az biraz wordpress, çat pat İngilizce bilmektedir.
ilgili yazılar

Yorum Bırak

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

son eklenenler