#1 2018-08-14 21:45:55

fotolexa
Участник
Из Киев
Зарегистрирован: 2018-08-14
Сообщений: 10

esp 8266 - ssid, password

Добрый вечер!!
Как в 8266 определить параметры wi-fi - ssid, password используя Arduino IDE это понятно.
А возможно ли эти параметры (ssid, password) изменить уже в готовом девайсе через web интерфейс?
Т.е. если устройство необходимо подключить к другой точке доступа wi-fi как это сделать?
Спасибо!!

#2 2018-08-14 22:07:02

Вячеслав Азаров
Участник
Зарегистрирован: 2017-05-25
Сообщений: 1,383

Re: esp 8266 - ssid, password

fotolexa пишет:

Добрый вечер!!
Как в 8266 определить параметры wi-fi - ssid, password используя Arduino IDE это понятно.
А возможно ли эти параметры (ssid, password) изменить уже в готовом девайсе через web интерфейс?
Т.е. если устройство необходимо подключить к другой точке доступа wi-fi как это сделать?
Спасибо!!

Конечно, но это-же нужно программировать. Переподключите к WI-Fi сети ваш модуль с другими значениями и все. А как вы их хотите вводить вам виднее. Непонятно какой у вас модуль и как используется через AT команды или со встроенным приложением.

#3 2018-08-14 22:16:03

fotolexa
Участник
Из Киев
Зарегистрирован: 2018-08-14
Сообщений: 10

Re: esp 8266 - ssid, password

Модуль - ESP-12F, скетч для примера типа Blynk.

#4 2018-08-14 22:29:45

Вячеслав Азаров
Участник
Зарегистрирован: 2017-05-25
Сообщений: 1,383

Re: esp 8266 - ssid, password

fotolexa пишет:

Модуль - ESP-12F, скетч для примера типа Blynk.

И чем вы собрались мигать у ESP-12F, и где там SSID?

#5 2018-08-14 22:32:30

fotolexa
Участник
Из Киев
Зарегистрирован: 2018-08-14
Сообщений: 10

Re: esp 8266 - ssid, password

Blynk - это облачный сервис.
https://esp8266.ru/esp8266-blynk/

#6 2018-08-14 22:35:32

Вячеслав Азаров
Участник
Зарегистрирован: 2017-05-25
Сообщений: 1,383

Re: esp 8266 - ssid, password

fotolexa пишет:

Blynk - это облачный сервис.
https://esp8266.ru/esp8266-blynk/

Я им не заниаюсь, немогу подсказать, нужно разбираться. У них свои библиотеки для ESP8266.

#7 2018-08-14 22:43:03

fotolexa
Участник
Из Киев
Зарегистрирован: 2018-08-14
Сообщений: 10

Re: esp 8266 - ssid, password

я же говорю - не важно, Blynk это пример, пусть будет такой скетч, где изначально ssid = "SPOT", password = "12345678":

/**
  WiFi розетка. Версия 1.0
  Copyright (C) 2015 http://samopal.pro
*/
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

// GPIO, куда подцелено реле
uint8_t PowerPin = 2;
bool    PowerOn  = false;

// Имя хоста
const char* host = "esp8266-power";
// Вместо звездочек свои параметры WiFi сети
const char* ssid = "SPOT";
const char* password = "12345678";

ESP8266WebServer server(80);

void setup() {
  // Последовательный порт для отладки
  Serial.begin(115200);
  Serial.printf("\n\nFree memory %d\n", ESP.getFreeHeap());

  // Инициализация выхода реле
  pinMode(PowerPin , OUTPUT);
  digitalWrite(PowerPin , PowerOn);

  // Подлючение к WiFi

  WiFi.mode(WIFI_AP_STA);
  WiFi.begin(ssid, password);
  if (WiFi.waitForConnectResult() == WL_CONNECTED) {
    // Запуск WEB-сервера
    MDNS.begin(host);
    server.on ( "/", HTTP_handleRoot );
    server.onNotFound ( HTTP_handleRoot );
    server.begin();
    Serial.printf( "HTTP server ok! Open http://%s.local in your browser\n", host);
  }
  else {
    Serial.printf("WiFi started is fail");
  }

}


void loop() {
  server.handleClient();
  delay(50);
}


/*
   Оработчик главной страницы сервера
*/
void HTTP_handleRoot(void) {
  bool stat = false;

  if ( server.hasArg("stat") ) {
    if ( strncmp(server.arg("stat").c_str(), "1", 1) == 0 )stat = true;
  }
  else {
    stat = PowerOn;
  }

  String out = "";

  out =
    "<html>\
  <head>\
    <meta charset=\"utf-8\" />\
    <title>WiFi розетка</title>\
    <style>\
      body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\
    </style>\
  </head>\
  <body>\
    <h1>WiFi розетка. Версия 1.0</h1>\n";

  if ( stat ) {
    out += "\
    <h2>Состояние: Включено</br>\
    <a href=\"/?stat=0\">Выключить</a></h2>\
    ";
  }
  else {
    out += "\
    <h2>Состояние: Выключено</br>\
    <a href=\"/?stat=1\">Включить</a><h2>\
    ";
  }
  out += "\
  </body>\
</html>";
  server.send ( 200, "text/html", out );
  if ( stat != PowerOn ) {
    PowerOn = stat;
    digitalWrite(PowerPin , PowerOn);
    if ( PowerOn )Serial.println("Power is ON");
    else Serial.println("Power is OFF");
  }

}

#8 2018-08-14 22:52:34

Вячеслав Азаров
Участник
Зарегистрирован: 2017-05-25
Сообщений: 1,383

Re: esp 8266 - ssid, password

....
WiFi.end();

// реинициализация с новыми значениями

WiFi.mode(WIFI_AP_STA);
WiFi.begin(my_ssid, my_password);
....

Как-то так.

#9 2018-08-14 22:59:52

fotolexa
Участник
Из Киев
Зарегистрирован: 2018-08-14
Сообщений: 10

Re: esp 8266 - ssid, password

Извините - не понял, можно полный пример самого простого скетча, где меняется через браузер ssid/passw, и желательно сохраняется, что бы после перезапуска не делать эти операции по новой smile

#10 2018-08-14 23:18:20

Вячеслав Азаров
Участник
Зарегистрирован: 2017-05-25
Сообщений: 1,383

Re: esp 8266 - ssid, password

fotolexa пишет:

Извините - не понял, можно полный пример самого простого скетча, где меняется через браузер ssid/passw, и желательно сохраняется, что бы после перезапуска не делать эти операции по новой smile

Извинте, но у меня нет такого готового примера. Вам придется напрячь ум, почитать руководство по языку программирования еще раз,  и воплотить свои желания самому. Или заказать проектирование программы профессионалу. Через браузер переподключать модем небезопасно, а роуминг у WI-Fi не предусмотрен.

#11 2018-08-14 23:41:24

fotolexa
Участник
Из Киев
Зарегистрирован: 2018-08-14
Сообщений: 10

Re: esp 8266 - ssid, password

Спасибо, что мягенько послали - "почитать"  руководства.
О каком роуминге Вы говорите?

#12 2018-08-14 23:49:23

Вячеслав Азаров
Участник
Зарегистрирован: 2017-05-25
Сообщений: 1,383

Re: esp 8266 - ssid, password

fotolexa пишет:

Спасибо, что мягенько послали - "почитать"  руководства. О каком роуминге Вы говорите?

Называйте автоматическое переключение базовых узлов или точек доступа как хотите. На форуме могут подсказать, посоветовать, и т.п. Но писать вам менеджер соединений здесь никто не будет. И еще, вы просто не знаете как здесь могут послать.

#13 2018-08-15 10:10:53

Вячеслав Азаров
Участник
Зарегистрирован: 2017-05-25
Сообщений: 1,383

Re: esp 8266 - ssid, password

Хотя, сейчас уже делают с и роумингом. Например: https://keenetic.com/ru/how-it-works/wifi-modes И ничего изобретать не нужно.

#14 2018-08-15 10:39:38

fotolexa
Участник
Из Киев
Зарегистрирован: 2018-08-14
Сообщений: 10

Re: esp 8266 - ssid, password

Вячеслав Азаров пишет:
fotolexa пишет:

Спасибо, что мягенько послали - "почитать"  руководства. О каком роуминге Вы говорите?

Называйте автоматическое переключение базовых узлов или точек доступа как хотите. На форуме могут подсказать, посоветовать, и т.п. Но писать вам менеджер соединений здесь никто не будет. И еще, вы просто не знаете как здесь могут послать.

Что такое стандарты 802.11 r/v/k я знаю и у самого есть сеть построенная c использованием Mikrotik CAPSMAN, но причём тут роуминг к сути вопроса - не понятно.
P.S. Если Вы не в состоянии или не имеете желания помочь или проконсультировать, то посылать почитать кое что, кое где - это бессмысленно, типа иди "погугли", зачем?

#15 2018-08-15 10:44:27

Вячеслав Азаров
Участник
Зарегистрирован: 2017-05-25
Сообщений: 1,383

Re: esp 8266 - ssid, password

fotolexa пишет:

... P.S. Если Вы не в состоянии или не имеете желания помочь или проконсультировать, то посылать почитать кое что, кое где - это бессмысленно, типа иди "погугли", зачем?

Как вам нужно помочь, написать вам программу или научить как это сделать? Просто, изменив параметры подключения из браузера вы рискуете потерять устройство, в случае ошибки.

#16 2018-08-15 22:29:29

Nefreemen
Участник
Из Киев
Зарегистрирован: 2015-12-19
Сообщений: 704

Re: esp 8266 - ssid, password

Не надо обижаться когда пишут что "почитайте" хотя бы потому что иногда тема не может быть изложена в пару десятков предложений. Писать здесь статью вряд ли кто то будет. И главное, никто за Вас не пройдет "путь познания" а если Вы хотите готовое то это совсем другое. Никто не будет тратить время и писать скетч как пример не потому что не знает, а потому что ценит свое время ( а может ленится lol ) другое дело найти ошибку, подправить или подсказать. Так что без обид и поз. Теперь по теме. Есть готовая библиотека которая решает поднятый Вами вопрос и очень просто, установите WiFiManager.h и посмотрите примеры, почитайте доку. Она имеет очень подробное описание. Вопрос поднятый Вячеславом по поводу роумининга интересный хотя не очень актуальный, в большинстве случаев ESP не используется как мобильник но все таки решение было бы интересным smile.

Редактировался Nefreemen (2018-08-15 22:31:09)

#17 2018-08-29 22:21:51

gooloo
Гость

Re: esp 8266 - ssid, password

fotolexa, это должно Вам подойти:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <EEPROM.h>

String str = "";

boolean conf = false;
 
String html_header = "<html>\
 <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\
 <head>\
   <title>ESP8266 Settings</title>\
   <style>\
     body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\
   </style>\
 </head>";
 
ESP8266WebServer server(80);

void setup(void)
{
    byte len_ssid, len_pass;
   
    delay(3000);
    Serial.begin(115200);
    Serial.println();  
   
    EEPROM.begin(98);
 
    len_ssid = EEPROM.read(96);
    len_pass = EEPROM.read(97);
    if(len_pass > 64) len_pass = 0;
   
  pinMode(4, INPUT_PULLUP);
  pinMode(0, INPUT_PULLUP);
  if((len_ssid < 33) && (len_ssid != 0)){
    // Режим STATION
      WiFi.mode( WIFI_STA);
      unsigned char* buf_ssid = new unsigned char[32];
      unsigned char* buf_pass = new unsigned char[64];
      for(byte i = 0; i < len_ssid; i++) buf_ssid[i] = char(EEPROM.read(i));
      buf_ssid[len_ssid] = '\x0';
      const char *ssid  = (const char*)buf_ssid;
      for(byte i = 0; i < len_pass; i++) buf_pass[i] = char(EEPROM.read(i + 32));
      const char *pass  = (const char*)buf_pass;
      buf_pass[len_pass] = '\x0';
      delay(2000);
      Serial.print("SSID: ");
      Serial.print(ssid);
      Serial.print("   ");
      Serial.print("Password: ");
      Serial.println(pass);
       
     WiFi.begin(ssid, pass);
      // Wait for connection
      while ( WiFi.status() != WL_CONNECTED ) {
       delay ( 500 );
        Serial.print ( "." );
      }
      Serial.println();
      Serial.print("Connected to ");
      Serial.println(ssid);
      Serial.print("IP address: ");
      Serial.println(WiFi.localIP());
    }
    else // Режим SoftAP
      {
        const char *ssid_ap = "goolooESP"; 
        WiFi.mode(WIFI_AP);
        Serial.print("Configuring access point...");
        /* You can remove the password parameter if you want the AP to be open. */
        WiFi.softAP(ssid_ap);
        delay(2000);
        Serial.println("done");
        IPAddress myIP = WiFi.softAPIP();
        Serial.print("AP IP address: ");
        Serial.println(myIP);
        server.on("/", handleRoot);
        server.on("/ok", handleOk);
        server.begin();
        Serial.println("HTTP server started");  
      }  
   
}
void loop() {
     server.handleClient();
  
  // Перевод модуля в режим конфигурации путем замыкания GPIO5 на массу

    if((digitalRead(4) == LOW) && !conf){
    EEPROM.write(96,255);
    EEPROM.commit();
    EEPROM.end();
    conf = true; 
    Serial.println("Please reboot module for coniguration --gpio5--");
    Serial.println(conf);
    Serial.println(f_state);
  }
  
}
 
void handleRoot() {
  String str = "";
  str += html_header;
  str += "<body>\
   <form method=\"POST\" action=\"ok\">\
     <input name=\"ssid\"> WIFI Net</br>\
     <input name=\"pswd\"> Password</br></br>\
     <input type=SUBMIT value=\"Save settings\">\
   </form>\
 </body>\
</html>";
server.send ( 200, "text/html", str );
}
 
void handleOk(){
  String ssid_ap;
  String pass_ap;
  unsigned char* buf = new unsigned char[64];
 
  String str = "";
  str += html_header;
  str += "<body>";
 
  EEPROM.begin(98);
 
  ssid_ap = server.arg(0);
  pass_ap = server.arg(1);
 
  if(ssid_ap != ""){
    EEPROM.write(96,ssid_ap.length());
    EEPROM.write(97,pass_ap.length());
    ssid_ap.getBytes(buf, ssid_ap.length() + 1);
    for(byte i = 0; i < ssid_ap.length(); i++)
      EEPROM.write(i, buf[i]);
      
    pass_ap.getBytes(buf, pass_ap.length() + 1);
    for(byte i = 0; i < pass_ap.length(); i++)
      EEPROM.write(i + 32, buf[i]);
      
    EEPROM.commit();
    EEPROM.end();
   
    str +="Configuration saved in FLASH</br>\
   Changes applied after reboot</p></br></br>\
   <a href=\"/\">Return</a> to settings page</br>";
  }
  else {
    str += "No WIFI Net</br>\
   <a href=\"/\">Return</a> to settings page</br>";
  }
  str += "</body></html>";
  server.send ( 200, "text/html", str );
}

#18 2018-08-29 22:32:25

fotolexa
Участник
Из Киев
Зарегистрирован: 2018-08-14
Сообщений: 10

Re: esp 8266 - ssid, password

Спасибо!! Дома сейчас модуля чистого нету, завтра попробую на работе - отпишусь.

#19 2018-08-29 22:50:29

gooloo
Гость

Re: esp 8266 - ssid, password

Сейчас работаю над сохранением и изменением сетевого адреса (DHCP, STATIC)
Если будет интересно пишите поделюсь.

#20 2018-08-30 14:00:26

fotolexa
Участник
Из Киев
Зарегистрирован: 2018-08-14
Сообщений: 10

Re: esp 8266 - ssid, password

Проверил, спасибо - всё ОК! Сейчас пока занят рутинными делами, но дальнейшее развитие этой темы очень, очень интересно:)

#21 2018-08-31 17:54:03

gera_b
Участник
Зарегистрирован: 2016-08-19
Сообщений: 36

Re: esp 8266 - ssid, password

https://youtu.be/saAv7YOiAyM?t=66

клёвый проект на есп32 с кодом с возможностью менять любые настройки на лету

#22 2018-09-02 22:25:32

Nefreemen
Участник
Из Киев
Зарегистрирован: 2015-12-19
Сообщений: 704

Re: esp 8266 - ssid, password

gera_b пишет:

https://youtu.be/saAv7YOiAyM?t=66

клёвый проект на есп32 с кодом с возможностью менять любые настройки на лету

Что лень посмотреть WiFiManager.h о чем писал выше. А то клевый проект, клевый проект...А это и есть работа с этой библиотекой. Меняй что хочешь, сброс в дефолтную АР с  ip 192.168.4.1 (имя можно задать) и с веб страницей для сканирования и подключения.

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела