@EnDanMen4255
Считаю себя дэфербелятором

Ошибка HTTP Response code: 500?

Нужно добавить показания датчиков в базу данных
ESP32 отправляет показания на php который в свою очередь отправляет их в базу данных, но выводит ошибку HTTP Response code: 500

код для ESP32
#include <WiFi.h>
#include <HTTPClient.h>
#include "DHT.h"
-----
const char* ssid = "******";
const char* password = "******";

const char* serverName = "*********"; 

String apiKeyValue = "tPmAT5Ab3j7F9";

------
void loop() {
  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;
    http.begin(serverName);
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");

    float humidity = dht.readHumidity();
    float temperature = dht.readTemperature();

    // Чтение влажности из влажностного датчика
    int moistureValue = analogRead(MOISTUREPIN);
    
    // Формирование строки запроса с реальными значениями датчиков
    String httpRequestData = "api_key=" + apiKeyValue + "&value1=" + String(temperature) + "&value2=" + String(humidity) + "&value3=" + String(moistureValue) + "";
    Serial.print("httpRequestData: ");
    Serial.println(httpRequestData);

    int httpResponseCode = http.POST(httpRequestData);
    
    if (httpResponseCode > 0) {
      Serial.print("HTTP Response code: ");
      Serial.println(httpResponseCode);
    } else {
      Serial.print("Error code: ");
      Serial.println(httpResponseCode);
    }

    http.end();
  } 
}


PHP файл
<?php

$servername = "localhost";

$dbname = "***********";

$username = "***************";

$password = "***********";


$api_key_value = "tPmAT5Ab3j7F9";

$api_key = $value1 = $value2 = $value3 = "";

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"]);
        

        $conn = new mysqli($servername, $username, $password, $dbname);

        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } 
        
        $sql = "INSERT INTO Sensor (value1, value2, value3)
        VALUES ('" . $value1 . "', '" . $value2 . "', '" . $value3 . "')";
        
        if ($conn->query($sql) === TRUE) {
            echo "New record created successfully";
        } 
        else {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }
    
        $conn->close();
    }
    else {
        echo "Wrong API Key provided.";
    }

}
else {
    echo "No data posted with HTTP POST.";
}

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


Заранее спасибо
  • Вопрос задан
  • 124 просмотра
Пригласить эксперта
Ответы на вопрос 2
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Вот, ловите ссылку на вашу ошибку: 5xx: Server Error. Ну а вообще, есть такая штука, "дебаг" называется. Вы его сделали? Что именно и как вы сделали? Что именно у вас не получилось? Не смогли написать через строчку лог процесса работы вашего кода? Или не смогли найти этот лог? Не смогли найти в документации как проверить на ошибку результат выполнения функции? Или что именно?
Ответ написан
Комментировать
@402d
начинал с бейсика на УКНЦ в 1988
https://www.php.net/manual/ru/function.error-repor...
error_reporting(E_ALL);
 ini_set("display_errors", 1);

в начало вашего скрипта
https://linuxize.com/post/curl-post-request/
потом дернуть с комндной строки курлом

без вывода ошибки гадать можно долго. В режими телапатии на сервере не доставлено расширение для муськи
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы