• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 в этот.
 
Сверху Снизу