esp32 ile veri tabanına veri gönderme sorunu

Başlatan bbs2006, 15 Ağustos 2023, 22:44:47

bbs2006

Merhaba
esp32 ile sicaklık bilgisini veri tabına göndermek istiyorum. bir türlü veri tabanına veri gitmiyor.
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <HTTPClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 27

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

//#include <WiFiAP.h>
//#include <WiFiClient.h>
//#include <MQ135.h>



//#define WIFI_SSID "esp"
//#define WIFI_PASSWORD "12345"
#define WIFI_SSID ""
#define WIFI_PASSWORD ""
const char* serverName = "https://barisbilirsoylu.net.tr/post-esp-data.php";

String apiKeyValue = "tPmAT5Ab3j7F9";
String sensorKonum= "Okul";




int lamba= 21;         //Evin lambasının bağlı olduğu röle_1 için pin
int elektrik= 18;      //Evin elektriklerini açmak-kapatmak için bağlanmış röle_2 için pin 
int sicaklikPin = 27;  //Evin sıcaklığını ölçmek için kullanılan LM35 için kullanılan pin.
int fan  = 23;         //Evi havalandırmak için bağlanacak olan fan için pin.
int gaz = 15;          //Evin hava kalitesini ölçmek için kullanılan analog pin.
int hareket = 22;      //Evde hareketi alglayacak olan sensör
int analogDeger;
int sicaklikLed= 1;





void setup() {
  
  
  // put your setup code here, to run once:

  
  pinMode(lamba,OUTPUT);
  pinMode(elektrik,OUTPUT);
  pinMode(sicaklikPin,OUTPUT);
  pinMode(fan,OUTPUT);
  pinMode(gaz,INPUT);
  pinMode(hareket,INPUT);
  pinMode(2, OUTPUT);
  
  //DS18B20 sıcaklık sensörü başlatılıyor.
  sensors.begin();
  Serial.begin(115200);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("Connecting to Wi-Fi");
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500); 
    Serial.print(".");
    
  }
  Serial.println("");
  Serial.print("Connected with IP: ");
  Serial.println(WiFi.localIP());
  Serial.println();
  //digitalWrite(2,HIGH);
  }
void sicaklikOkuma(){
    sensors.requestTemperatures(); 
    Serial.print("Sicaklik: ");
    float sicak= sensors.getTempCByIndex(0);    
    Serial.print(sicak);
    Serial.println("ºC");
    delay(500); 
}

void loop() {
  // put your main code here, to run repeatedly:
sicaklikOkuma();
if(WiFi.status()== WL_CONNECTED){
    WiFiClientSecure *client = new WiFiClientSecure;
    client->setInsecure(); //don't use SSL certificate
    HTTPClient https;
    
    // Your Domain name with URL path or IP address with path
    https.begin(*client, serverName);
    
    // Specify content-type header
    https.addHeader("Content-Type", "application/x-www-form-urlencoded");
    
    // Prepare your HTTP POST request data
    String httpRequestData = "api_key=" + apiKeyValue +"&konum=" + sensorKonum + "&sicaklik=" + String(sensors.getTempCByIndex(0))+"";
                          
    
  //  String httpRequestData = "api_key=" + apiKeyValue +"&Konum=" + sensorKonum + "&Sicaklik=" + String(sensors.getTempCByIndex(0))
     //                     + "&Gaz=" + String(69) + "&Lamba_durum=" + String(lamba) + "";
    
    
    Serial.print("httpRequestData: ");
    Serial.println(httpRequestData);
    
    // You can comment the httpRequestData variable above
    // then, use the httpRequestData variable below (for testing purposes without the BME280 sensor)
    //String httpRequestData = "api_key=tPmAT5Ab3j7F9&sensor=BME280&location=Office&value1=24.75&value2=49.54&value3=1005.14";

    // Send HTTP POST request
    int httpResponseCode = https.POST(httpRequestData);
     
    // If you need an HTTP request with a content type: text/plain
    //https.addHeader("Content-Type", "text/plain");
    //int httpResponseCode = https.POST("Hello, World!");
    
    // If you need an HTTP request with a content type: application/json, use the following:
    //https.addHeader("Content-Type", "application/json");
    //int httpResponseCode = https.POST("{\"value1\":\"19\",\"value2\":\"67\",\"value3\":\"78\"}");
    
    if (httpResponseCode>0) {
      Serial.print("HTTP Response code: ");
      Serial.println(httpResponseCode);
    }
    else {
      Serial.print("Error code: ");
      Serial.println(httpResponseCode);
    }
    // Free resources
    https.end();
  }
  else {
    Serial.println("WiFi Disconnected");
  }
  //Send an HTTP POST request every 30 seconds
  delay(30000);  
}








SERRO EFE

#1
Belki sorun esp programında değil. Önce servisin istenen şekilde çalışıp çalışmadığını bilmek gerek bence.
Postman gibi bir araçla veriyi gönderip servis cevaplarını izleyebilirsiniz. Bu size nerede hata olduğuna dair ipucu verecektir.
Php dosyasının veritabanına bağlanıp bağlanmadığı ve data yazıp yazmadığını herhangi bir sorgu göndererek içeriğini kontrol etmeden manuel veri yazacak bir fonksiyon ile test edebilirsiniz.

Servisin gönderilen datayı düz string olarakmı json olarakmı aldığından emin olun genelde json kullanımı yaygındır.