@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/
потом дернуть с комндной строки курлом

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
27 апр. 2024, в 11:55
1000 руб./за проект
27 апр. 2024, в 11:55
1500 руб./за проект
27 апр. 2024, в 11:52
12000 руб./за проект