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

Вопрос Управление ногами ESP <-> ESP

kab

New member
Уточните пожалуйста, что вы хотите? Что бы на странице html периодически выскакивала информация которая попадает на порт UART1 ?
Не совсем. Попробую объяснить подробнее свою "хотелку":
- Сейчас здесь очень много примеров и проектов, как с удаленного (от слова "далеко", а не "удалить") браузера через вебсервер, расположенный на ESP, можно управлять пинами этой ESP -"ногодрыг :)" , отправляя с браузера вручную либо добавки к адресной строке в запросе, либо формируя такой запрос через кнопки на странице HTML.
А я хочу понять, как (наиболее простым способом) аналогичный запрос(к серверу на ESP) отправить автоматически (без браузера), как из какой-то простой программы на компе, так и из другой ESP. В приоритете, вариант - с другой ESP. Наверно, это то, что называется "бот"?
Если совсем коротко: как с одной ESP через Wi-Fi подергать ногами другой?Точнее, как передать команду для этого?
Возможно - взаимодействие двух ESP можно организовать и проще, чем описано выше?
Уточняю - по Wi-Fi напрямую, без посредников (допустимо использование простого роутера без дополнительных сервисов)
 
Последнее редактирование:

Andy Korg

Moderator
Команда форума
....Уточняю - по Wi-Fi напрямую, без посредников ...
Т.е. необходимо на одной esp включить режим AP (Acess point), а на другой включить ST (Station mode). Затем на той, что ST настроить подключение к esp которая AP.
Дальше необходимо на стороне esp-ST запрограммировать клиента http который будет отправлять POST запрос на esp_AP, который в свою очередь будет командовать esp-AP дернуть ногой.
Как то так.
 

kab

New member
запрограммировать клиента http который будет отправлять POST
Вот как раз это-то и непонятно. Где можно посмотреть, какие функции в этом можно использовать и как? Желательно на Arduino IDE, но можно и в других системах - для общего понимания.

Спасибо!
 

kab

New member
Вот как раз это-то и непонятно. Где можно посмотреть, какие функции в этом можно использовать и как? Желательно на Arduino IDE, но можно и в других системах - для общего понимания.

Спасибо!
Просматривается еще один вариант реализации SUBJ -через UDP протокол (Udp.read,Udp.send и т. п.). Принципиальных трудностей в этом варианте пока не ощущаю, но оставлю его на вторую очередь. А подход, описанный @Andy Korg в посте Управление ногами ESP <-> ESP пока преобразую в более простую (может быть) задачу. Т. к. ESP у меня только одна ("пока","еще","да и хватит" - выбрать по вкусу), решил что буду пытаться на ней сделать аналог веббраузера(с вебсервером наESP всё очевидно), пытаясь достучаться до, например, http://esp8266.ru - и посмотреть ответ в serial-мониторе. Какие это функции и библиотеки - пока не знаю, но "будем искать".
 

kab

New member
@kab
спасибо
Получить ssl certificate fingerprint of gmail
- взято за основу

Ну вот - и научились (в простейшем варианте) подключаться с вебсерверу, делать запрос, смотреть ответ...
Т. о. вариант @Andy Korg - вполне возможен

Код:
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
const char* ssid  = "--------";   // your network SSID (name of wifi network)
const char* password = "--------"; // your network password
 
WiFiClientSecure client;
 
void setup() {
  //Initialize serial and wait for port to open:
  Serial.begin(115200);
  delay(100);
 
  Serial.println("\nAttempting to connect to SSID: ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
 
  // attempt to connect to Wifi network:
  while (WiFi.status() != WL_CONNECTED) {
  Serial.print(".");
  // wait 1 second for re-trying
  delay(1000);
  }
 
  Serial.print("Connected to ");
  Serial.println(ssid);
 
  Serial.println("\nStarting connection to server...");
  if (!client.connect("esp8266.ru", 443))
    Serial.println("Connection failed!");
  else {
  Serial.println("Connected to server!");
  // Make a HTTP request:
 
 client.print(String("GET ") + "/" + " HTTP/1.1\r\n\Host:esp8266.ru\r\n\r\n");
 Serial.println("Request sent");
 int recv;
  while (client.connected()) {  // Wait for the response. 
  recv = client.read();  
  
  if (recv >0)Serial.print(char(recv));// convert from  int to char
  //break;
  }
 
  client.stop();
  }
}
 
void loop() {
  // do nothing
}
 
Сверху Снизу