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

Как назначить IP и МАС контроллеру ESP01

Gercon2

New member
Посмотрите wifimanualwebserver.

Скетч, который размещён в #10, брал именно с этого урока. Только доработал его слегка.

Придумал MAC-адрес ESP, и локальный IP-адрес 192.168.0.62. На роутере в в разделе DHCP для этого MAC-адрес зарезервиловал IP-адрес 192.168.0.62. В виртуальном сервере связал этот IP-адрес 192.168.0.62 с портом 10200. В строке браузера набираю: http://xx.xxx.x.xx:10200. И все работает. Здесь xx.xxx.x.xx - статический IP-адрес.

На этом этапе получается обратиться к ESP через интернет и получть ответ от него непосредственно С КОМПЬЮТЕРА, не привлекая браузер.

Загвоздка сейчас только в том, что я не знаю как из переданной ссылки
http://xx.xxx.x.xx:10200/?parametr выделить слово "parametr", для того, чтобы это слово через UART передать в ARDUINO-UNO.

Если я решу эту проблему (имеено выделение слова), то буду чувствовать себя как рыба в воде, которую изредка вытаскивают на сушу.
 

CodeNameHawk

Moderator
Команда форума
https://github.com/esp8266/Arduino/...s/WiFiManualWebServer/WiFiManualWebServer.ino

Так вызывают
http://server_ip/gpio/0 will set the GPIO2 low,
http://server_ip/gpio/1 will set the GPIO2 high

Так строку получают
// Read the first line of the request
String req = client.readStringUntil('\r');

Так ищут в строке
if (req.indexOf(F("/gpio/0")) != -1) {
val = 0;
} else if (req.indexOf(F("/gpio/1")) != -1) {
val = 1;
 

CodeNameHawk

Moderator
Команда форума
Нет там ошибки, просто надо брать пример из своей версии плат есп.
 

Gercon2

New member
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
char sim;
uint8_t newMACAddress[] = {0xFA, 0xEB, 0xDC, 0xCD, 0xBE, 0xAF};

const char* ssid = "ABRAKADABRA"; // SSID
const char* password = "19661117"; // пароль

ESP8266WebServer server(10200);
void setup()
{
Serial.begin(9600);
delay(100);

WiFi.begin(ssid, password);
WiFi.mode(WIFI_STA);
wifi_set_macaddr(STATION_IF, &newMACAddress[0]);

while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
}


server.on("/s", handleSpecificArg);
server.begin();
}

void loop()
{
server.handleClient(); // обработка входящих запросов
}

void handleSpecificArg()
{
Serial.println(server.arg(0)); // отправление в Arduino
delay(250); // жду ответ от Arduino

String stroka = "w"; // символ "w" для отладки
if (Serial.available() > 0)
{
while (Serial.available() > 0)
{
char sim = Serial.read();
byte simb = (byte) sim;
if (!((simb == 10) || (simb == 13))) stroka += sim;
}
server.send(200, "text/plain", stroka); // ответ
}
else
{
server.send(200, "text/plain", "Oblom"); // ответ
}
}
 
Сверху Снизу