Итак, я работаю над проектом, который включает в себя передачу данных с моего сайта в ESP32. Я сталкивался с созданием массива Json и периодически обновлял информацию, но теперь мне нужно получить специфическую c информацию из моего массива Json, чтобы я мог использовать ее с моим ESP. По какой-то причине, когда я пытаюсь получить доступ к данным со своей страницы, я получаю 0 вместо числа, которое находится в этом месте, в случае текста я ничего не получаю в качестве ответа.
Я исправил отсутствие получения ответа от файла, мне пришлось создать отдельный файл PHP, в котором получить информацию о базе данных и преобразовать эту информацию в файл данных json. json, поэтому код, который у меня работает, но мне нужно будет обновлять файл PHP каждую 1 секунду, я увидел, что Ajax - это путь к go, так как мне не нужно каждый раз обновлять sh страницу, только содержимое
код ESP32:
void loop() {
if ((WiFi.status() == WL_CONNECTED)) { //Check the current connection status
HTTPClient http;
http.begin("https://nps-tech.com.br/receive.php"); //Specify the URL and certificate
int httpCode = http.GET();
if (httpCode > 0)//Check for the returning code
{
String payload = http.getString();
Serial.println("\nStatuscode: "+ String(httpCode));
Serial.println(payload);
char json[500];
payload.replace(" ", "");
payload.replace("\n", "");
payload.trim();
payload.remove(0,1);
payload.toCharArray(json, 500);
StaticJsonDocument<200> doc;
deserializeJson(doc, json);
int id = doc["AutoIncrement"];
const char* nome = doc["Nome Aparelho"];
int stat = doc["Status"];
Serial.println(id);
Serial.println(nome);
Serial.println(stat);
}
else
{
Serial.println("Error on HTTP request");
}
http.end(); //Free the resources
}
delay(10000);
}
Новый ответ от ESP32:
Statuscode: 200
[{"AutoIncrement":"1","Aparelho":"LED","Status":"0"}]
1
LED
0
PHP Код. Как установить SetInterval для обновления функции get_data с php каждую 1 секунду, без перезагрузки страницы:
<!DOCTYPE html>
<html lang="pt-br">
<head>
</head>
<body>
<?php
function get_data()
{
$servername = "stuuf";
$dBUsername = "stuuf";
$dBPassword = "stuuf";
$dBname = "stuuf";
$conn = mysqli_connect($servername, $dBUsername, $dBPassword, $dBname);
if ($conn->connect_error){
die ("Connection failed". $conn->connect_error);
}
$sql = "SELECT * FROM dados;";
$result = mysqli_query($conn, $sql);
$json_array = array();
while($row = mysqli_fetch_assoc($result))
{
$json_array[] = array(
'AutoIncrement' => $row["AutoIncrement"],
'Aparelho' => $row["aparelho"],
'Status' => $row["Status"],
);
}
return json_encode($json_array);
}
$file_name = 'dadosjson' . '.json';
if (file_put_contents($file_name, get_data()))
{
echo $file_name. ' file created';
}
else
{
echo 'There is some error';
}
?>
<script>
setInterval(1000);
//ajax to update every 1s
</script>