У меня есть веб-страница, которая контролирует и вводит состояния переключателей в базу данных.
Я подтверждаю, что это работает.
Существует программа на PHP чтобы прочитать состояния переключателя из базы данных с помощью команды Get и отправить эти данные в формате json на удаленный микропроцессор.
Когда я сижу за Nat, ESP32 периодически вызывает, чтобы получить их. переключать состояния и соответствующим образом изменять состояния контактов процессора для управления.
По опыту, опрос данных Json на уровне микропроцессора и изменение состояния контактов также работают.
Проблема: я могу вызвать php напрямую через веб-интерфейс (Chrome, Firefox) и точно получить показания состояния контактов в режиме реального времени.
Однако при выполнении того же запроса через Esp первоначальные показания при запуске точны. но последующие изменения иногда получаются беспорядочно, но обычно повторяют исходное состояние. Это было подтверждено печатными ответами на уровне микропроцессора.
Это пропадет через разное время, после чего показания на этот момент станут значениями по умолчанию.
Выключение и перезагрузка микропроцессора не имеет никакого значения - как ни странно, по умолчанию он возвращается к последнему исходному состоянию.!
Как будто состояния через вызов Esp где-то кэшируются и повторяются в отличие от прямой веб-запрос через PHP, который показывает изменения.
Это проблема со скриптом? и любые идеи, как это исправить.
Код:
Служба хостинга (Blue Host) утверждает, что это проблема со скриптами. Кеширование сервера было очищено без изменения ответа. Я не могу проверить журналы базы данных, поскольку это учетная запись общего хостинга.
Меня беспокоит постоянство своевременного ответа. Иногда это работает, иногда просто зависает.
Ниже приведены выдержки из кода ESP, если это как-то повлияет
#include
#include
//Other usual libraries
// Define GPIO pins (adjust these to match the configuration)
const int gpioPins[] = { 12, 13, 14, 17, 18, 19, 26, 27, 32, 33 }; // GPIO pins, adjust as needed
const int numPins = sizeof(gpioPins) / sizeof(gpioPins[0]);
TaskHandle_t Task1; // program Heartbeat
TaskHandle_t Task2; // Read Switch State
TaskHandle_t Task3; // wifi watchdog
TaskHandle_t Task4; // email engine & pump status
//---------------------------------
// Task 2 - Pins Status
//Get Data from Switch_State Table
void fetchData() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(url);
int httpCode = http.GET();
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
Serial.println("Received payload:");
Serial.println(payload);
// Parse JSON
DynamicJsonDocument doc(1024);
deserializeJson(doc, payload);
for (JsonObject elem : doc.as()) {
int gpio = elem["gpio"];
int state = elem["state"];
// Find the pin and set its state
for (int i = 0; i < numPins; i++) {
if (gpio == gpioPins) {
pinMode(gpioPins, OUTPUT);
digitalWrite(gpioPins, state);
Serial.printf("Set GPIO %d to state %d\n", gpioPins, state);
break;
}
}
}
} else {
Serial.printf("Failed to fetch data, HTTP code: %d\n", httpCode);
}
http.end();
} else {
Serial.println("WiFi not connected");
}
}
// Check Pin State
void Sstate(void * pvParameters) {
for (;;) {
TickType_t xLastWakeTime;
const TickType_t xFrequency = 30000; // TESTING check every 30 sec (/ portTICK_PERIOD_MS ?)
//Initialise the xLastWakeTime variable with the current time.
xLastWakeTime = xTaskGetTickCount ();
for ( ;; )
{
//Wait for the next cycle.
vTaskDelayUntil( &xLastWakeTime, xFrequency );
Serial.print("Pin check running on core ");
Serial.println(xPortGetCoreID());
Serial.println ();
fetchData () ;
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... y-response
Неверный ответ на запрос PHP ⇐ Php
Кемеровские программисты php общаются здесь
1727065381
Anonymous
У меня есть веб-страница, которая контролирует и вводит состояния переключателей в базу данных.
Я подтверждаю, что это работает.
Существует программа на PHP чтобы прочитать состояния переключателя из базы данных с помощью команды Get и отправить эти данные в формате json на удаленный микропроцессор.
Когда я сижу за Nat, ESP32 периодически вызывает, чтобы получить их. переключать состояния и соответствующим образом изменять состояния контактов процессора для управления.
По опыту, опрос данных Json на уровне микропроцессора и изменение состояния контактов также работают.
Проблема: я могу вызвать php напрямую через веб-интерфейс (Chrome, Firefox) и точно получить показания состояния контактов в режиме реального времени.
Однако при выполнении того же запроса через Esp первоначальные показания при запуске точны. но последующие изменения иногда получаются беспорядочно, но обычно повторяют исходное состояние. Это было подтверждено печатными ответами на уровне микропроцессора.
Это пропадет через разное время, после чего показания на этот момент станут значениями по умолчанию.
Выключение и перезагрузка микропроцессора не имеет никакого значения - как ни странно, по умолчанию он возвращается к последнему исходному состоянию.!
Как будто состояния через вызов Esp где-то кэшируются и повторяются в отличие от прямой веб-запрос через PHP, который показывает изменения.
Это проблема со скриптом? и любые идеи, как это исправить.
Код:
Служба хостинга (Blue Host) утверждает, что это проблема со скриптами. Кеширование сервера было очищено без изменения ответа. Я не могу проверить журналы базы данных, поскольку это учетная запись общего хостинга.
Меня беспокоит постоянство своевременного ответа. Иногда это работает, иногда просто зависает.
Ниже приведены выдержки из кода ESP, если это как-то повлияет
#include
#include
//Other usual libraries
// Define GPIO pins (adjust these to match the configuration)
const int gpioPins[] = { 12, 13, 14, 17, 18, 19, 26, 27, 32, 33 }; // GPIO pins, adjust as needed
const int numPins = sizeof(gpioPins) / sizeof(gpioPins[0]);
TaskHandle_t Task1; // program Heartbeat
TaskHandle_t Task2; // Read Switch State
TaskHandle_t Task3; // wifi watchdog
TaskHandle_t Task4; // email engine & pump status
//---------------------------------
// Task 2 - Pins Status
//Get Data from Switch_State Table
void fetchData() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(url);
int httpCode = http.GET();
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
Serial.println("Received payload:");
Serial.println(payload);
// Parse JSON
DynamicJsonDocument doc(1024);
deserializeJson(doc, payload);
for (JsonObject elem : doc.as()) {
int gpio = elem["gpio"];
int state = elem["state"];
// Find the pin and set its state
for (int i = 0; i < numPins; i++) {
if (gpio == gpioPins[i]) {
pinMode(gpioPins[i], OUTPUT);
digitalWrite(gpioPins[i], state);
Serial.printf("Set GPIO %d to state %d\n", gpioPins[i], state);
break;
}
}
}
} else {
Serial.printf("Failed to fetch data, HTTP code: %d\n", httpCode);
}
http.end();
} else {
Serial.println("WiFi not connected");
}
}
// Check Pin State
void Sstate(void * pvParameters) {
for (;;) {
TickType_t xLastWakeTime;
const TickType_t xFrequency = 30000; // TESTING check every 30 sec (/ portTICK_PERIOD_MS ?)
//Initialise the xLastWakeTime variable with the current time.
xLastWakeTime = xTaskGetTickCount ();
for ( ;; )
{
//Wait for the next cycle.
vTaskDelayUntil( &xLastWakeTime, xFrequency );
Serial.print("Pin check running on core ");
Serial.println(xPortGetCoreID());
Serial.println ();
fetchData () ;
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79011009/erratic-php-inquiry-response[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия