• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP32 Подключение к хостингу и внесение изменений на сайте с помощью esp

VlaDDoS111

New member
Здравствуйте, сейчас пытаюсь найти информацию как сделать так чтобы менялась информация на сайте при нажатии кнопки. В интернете куча статей и видео и все они делятся на два типа:
1. Я нажимаю кнопку на странице с локальным ip, а esp на это как-то реагирует
2. Я могу спарсить данные с веб страницы и вывести данные в монитор порта

Мне же надо вносить изменения на сайте, который лежит на хостинге
У меня есть полный доступ к этому сайту, просто я не знаю может ли esp обратиться к сайту и дать ему команду
Если конкретнее то мне надо чтобы появлялась новая строка в таблице

Подскажите может есть статья в которой описано то что я хочу
 

CodeNameHawk

Moderator
Команда форума
Мало информации.
может ли esp обратиться к сайту
Может.
и дать ему команду
Какую команду?
Если конкретнее то мне надо чтобы появлялась новая строка в таблице
Что за таблица, как она хранится.
Проще всего, на вашем сервере создать файл .php, который запишит данные в таблицу, а этот файл вызовет есп, передав ему данные.
 

VlaDDoS111

New member
Мало информации.
у меня задача
По нажатию кнопки необходимо добавить новую строку в таблице
Она будет содержать следующие столбцы: какая именно кнопка нажата, время нажатия и последний пункт содержит надпись "НЕОТРЕАГИРОВАННО"
у меня сейчас этого на сайте нет и поэтому я не могу привести пример, но я уже делал подобное и думаю с этим проблем не возникнет

У меня будет табличка в php myAdmin
Я могу разместить на сайте кнопку и чтобы по нажатию добавлялась новая строка

А теперь мне надо чтобы функцию вызывала не кнопка на сайте, а кнопка подключенная к ESP

ESP не хранит данные, это просто кнопка при нажатии на которую должна вызываться функции

Как мне это реализовать
Как подружить ESP и мой сайт чтобы я нажимал кнопку и любая информация менялась на сайте (фон сайта, размер шрифта текста) что угодно

Я просто не знаю какую библиотеку использовать, какие данные необходимо дать плате чтобы она могла вызывать функцию
мне бы базовый пример вот я нажимаю на кнопку и что-то на сайте меняется

Было бы прекрасно
 

CodeNameHawk

Moderator
Команда форума
У меня будет табличка в php myAdmin
phpmyAdmin это средство для "визуальной" работы с базой данных, в ней не хранятся таблицы.
Если база данных mysql , то все получится сделать при помощи sql запросов, которые проще всего выполнить в php.
Расшифруйте для себя, что такое SQL.
Поищите по "как подключиться к базе данных mysql из php "
А вставить данные " как добавить запись в базу данных при помощи php"
phpmyAdmin тоже общается с базой данных при помощи SQL запросов, очень просто их там и подсмотреть, а потом использовать у себя.
 

fps

Active member
2. Я могу спарсить данные с веб страницы и вывести данные в монитор
Это как раз ваш случай - сделать http запрос (такой какой же как по кнопке на вашей странице), и для отладки вывести куда нибудь его результат.
А на сервере вы этот запрос обработайте как вам угодно.
 

gromush

Member
У меня есть полный доступ к этому сайту, просто я не знаю может ли esp обратиться к сайту и дать ему команду
А что вы имеете ввиду под фразой "обратиться к сайту"? Это важно.
Вы имеете понимание как браузер обращается к сайту?
 

VlaDDoS111

New member
#include <WiFi.h>
#include <HTTPClient.h>
const char* ssid = "ssid";
const char* password = "password";
void setup() {
Serial.begin(115200);
// Connect to Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// Define URL
String url = "http://k912019u.beget.tech/components/btnReag.php?btnReaction=wc"; // Укажите адрес запроса
// Send HTTP GET request
HTTPClient http;
http.begin(url);
int httpResponseCode = http.GET();
// Check for response
if (httpResponseCode > 0) {
String response = http.getString();
Serial.println("HTTP Response: " + response);
} else {
Serial.print("Error on HTTP request. Error code: ");
Serial.println(httpResponseCode);
}
http.end();
}
void loop() {
// Ваш код здесь
}


Что я делаю неправильно


Вот что он возвращает в монитор порта

Connecting to WiFi...

Connected to WiFi

HTTP Response: <html>

<head><title>403 Forbidden</title></head>

<body>

<center><h1>403 Forbidden</h1></center>

<hr><center>nginx-reuseport/1.21.1</center>

</body>

</html>

я пробовал несколько скетчей, но всегда был тупик

Буду рад если объяснить как избавиться от ошибки
К вайфаю я подключаюсь, но как я понял сервер не хочет со мной общаться с пк всё работает
 

fps

Active member
Выполняется запрос http://k912019u.beget.tech/components/btnReag.php?btnReaction=wc
Сервер на него отвечает 403
Скетч работает исправно - честно выводит вам это в монитор порта.

Думаю, вы запрашиваете не тот url или нужных заголовков в запросе нет. Ну так кроме вас их никто знать не может - это же вас сайт.
 

fps

Active member
Наверное с компа вы там сначала авторизовались.
Смотрите какие заголовки уходят из браузера (нажмите F12), сравнивайте с тем что уходит из вашего скетча, определите каких не хватает и добавьте их в запрос.
 

CodeNameHawk

Moderator
Команда форума
Попробуйте код общения с сервером перенести в лооп.
Включите отладку wifi в arduinoide и посмотрите успевает ли сработать подключение к инету, или просто добавьте еще одну задержку, перед обращением к сайту.
 

VlaDDoS111

New member
Покажите содержание файла btnReag.php
<?php
require('../config/bd.php');
$name = $_GET['btnReaction'];

$sql = "INSERT INTO Reactions1 (name) VALUES ('$name')";

//$sql = "INSERT INTO Reactions (id, name, time, reaction) VALUES (DEFAULT, '$name', NOW(), 'Не отреагировано')";
if(mysqli_query($link, $sql)){
echo "Success";
} else{
echo "Error: " . mysqli_error($link);
}
mysqli_close($conn);
?>
 

CodeNameHawk

Moderator
Команда форума
Не видно, почему не работает.
Попробуйте в одном файле все сделать.
Перекиньте все из bd.php в этот.
 
Сверху Снизу