NODE MCU 8266 подключение к разным WiFi?

Ответить
Аватара пользователя
Almazur61
Рядовой
Сообщения: 7
Зарегистрирован: 01.08.2019{, 23:45}
Репутация: 0
Откуда: Черкассы
Имя: Alex

NODE MCU 8266 подключение к разным WiFi?

#1

Сообщение Almazur61 » 04.02.2022{, 23:10}

Всем привет!
Подскажите пожалуйста возможно ли настроить NODE MCU таким образом что бы при перемещении устройства, скажем с дома на роботу и обратно оно автоматически подключалось к заранее прописанным точкам WiFi?

Заранее благодарен!

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

NODE MCU 8266 подключение к разным WiFi?

#2

Сообщение Phazz » 05.02.2022{, 00:13}

можно менять параметры точек по таймауту

Аватара пользователя
Almazur61
Рядовой
Сообщения: 7
Зарегистрирован: 01.08.2019{, 23:45}
Репутация: 0
Откуда: Черкассы
Имя: Alex

NODE MCU 8266 подключение к разным WiFi?

#3

Сообщение Almazur61 » 05.02.2022{, 00:21}

В Flprrog это реализовать можно?

aidar_i
Полковник
Сообщения: 3122
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

NODE MCU 8266 подключение к разным WiFi?

#4

Сообщение aidar_i » 05.02.2022{, 06:47}

Almazur61 писал(а):
04.02.2022{, 23:10}
Всем привет!
Подскажите пожалуйста возможно ли настроить NODE MCU таким образом что бы при перемещении устройства, скажем с дома на роботу и обратно оно автоматически подключалось к заранее прописанным точкам WiFi?

Заранее благодарен!
Вариант, WIFIManager. Все сети и пароли называете одинаково.

Есть, оказывается, библиотека, проверьте пример https://github.com/esp8266/Arduino/blob ... iMulti.ino

Испытайте
ESP8266 подключение к разным WiFi.flp
(49.67 КБ) 80 скачиваний

Аватара пользователя
Almazur61
Рядовой
Сообщения: 7
Зарегистрирован: 01.08.2019{, 23:45}
Репутация: 0
Откуда: Черкассы
Имя: Alex

NODE MCU 8266 подключение к разным WiFi?

#5

Сообщение Almazur61 » 07.02.2022{, 20:17}

Огромное спасибо!
Буду пробовать

Аватара пользователя
Almazur61
Рядовой
Сообщения: 7
Зарегистрирован: 01.08.2019{, 23:45}
Репутация: 0
Откуда: Черкассы
Имя: Alex

NODE MCU 8266 подключение к разным WiFi?

#6

Сообщение Almazur61 » 21.02.2022{, 23:51}

Привет!
Пробую, не выходит!
Arduino IDE выдает ошибку!

aidar_i
Полковник
Сообщения: 3122
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

NODE MCU 8266 подключение к разным WiFi?

#7

Сообщение aidar_i » 23.02.2022{, 06:13}

Almazur61 писал(а):
21.02.2022{, 23:51}
Arduino IDE выдает ошибку!
Исправил, заменил ЗДЕСЬ

Аватара пользователя
Almazur61
Рядовой
Сообщения: 7
Зарегистрирован: 01.08.2019{, 23:45}
Репутация: 0
Откуда: Черкассы
Имя: Alex

NODE MCU 8266 подключение к разным WiFi?

#8

Сообщение Almazur61 » 14.03.2022{, 01:43}


aidar_i
Полковник
Сообщения: 3122
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

NODE MCU 8266 подключение к разным WiFi?

#9

Сообщение aidar_i » 18.03.2022{, 13:33}

Almazur61 писал(а):
14.03.2022{, 01:43}
Вы используете штатные настройки WiFi сети ЕСП8266. даже при этом у меня компилируется нормально.
Если хотите использовать штатный веб интерфейс, нужно в скетче удалить некоторые строки и добавить строку ESPControllerWifiClient_ip = WiFi.localIP(); в сетап.

Код: Выделить всё

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <EEPROM.h>
#include <ESP8266WiFiMulti.h>
extern "C" 
{
    #include "user_interface.h"
}
ESP8266WiFiMulti wifiMulti;
/*bool ESPControllerWifiClient_HRD = 0;
bool ESPControllerWifiClient_status = 1;
bool ESPControllerWifiClient_isDHCP = 1;
bool ESPControllerWifiClient_IsNeedReconect = 0;
bool ESPControllerWifiClient_workStatus = 1;
char ESPControllerWifiClient_SSID[40] = "MTS";
char ESPControllerWifiClient_password[40] = "12345678";*/
IPAddress ESPControllerWifiClient_ip(0, 0, 0, 0);
/*IPAddress  ESPControllerWifiClient_dns (0, 0, 0, 1);
IPAddress  ESPControllerWifiClient_gateway (0, 0, 0, 1);
IPAddress ESPControllerWifiClient_subnet (255, 255, 255, 0);
uint8_t ESPControllerWifiClient_mac[6] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0};*/
bool  ESPControllerWifi_isNeededRestsrt= 0;
ESP8266WebServer ESPControllerWifi_tspWebServer(80);
String ESPControllerWifi_tspWebServer_client_buffer="";
bool _webInterfaceMinuItemsVisualMode[] = {0};
String  webSettingPageHeader1 = "<!DOCTYPE HTML><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><html>";
String  getXmlHttpFunction = "function gX()\n{\nvar x;\ntry\n{\nx=new ActiveXObject(\"Msxml2.XMLHTTP\");\n}\ncatch (e)\n{\ntry\n{\nx = new ActiveXObject(\"Microsoft.XMLHTTP\");\n}\ncatch (E)\n{\nx=false;\n}\n}\nif(!x && typeof XMLHttpRequest!='undefined')\n{\nx=new XMLHttpRequest();\n}\nreturn x;\n}";
String  webSettingPageFooterString  = "ESP8266 - Разработано в программе FLProg (https://flprog.ru)";
String webSettingPageHeaderString = "ESP8266";
struct WebSettingPageWidgetParametrs
{
    String label;
    String style;
    String id;
    bool isClient;
    bool isIp;
    bool isAutoSave;
    bool hasLabel;
    bool hasCommonDiv;
    String labelStyle;
    byte labelPosition;
    String valueStyle;
    int maximumStringLength;
}
;
WebSettingPageWidgetParametrs _webSettingPageWidgetParametrs;
String _ESP8266WebInterfacePageButton_save= "<button class = \"buttonFlp\" onclick=\"sDat()\">Сохранить</button>";
String _ESP8266WebInterfacePageButton_reset= "<button class = \"buttonFlp\" onclick=\"rCon()\">Перезагрузить</button>";
String   resetControllerFromWebScript = " function rCon(){var x=gX();\nx.onreadystatechange=function(){if (x.readyState==4){document.location.reload();}}\nx.open(\"GET\",\"/27e999da-8651-42e8-b2c0-26d9bd18a5f7\",true); x.send(); }";
String webServerSettingPageSaveParametrsScript =" function sDat()\n{\nvar x=gX();\nvar r=\"/b639083e-fd40-4c9b-a872-0cb0213d448d?\";\nfor(let i=0;i<sD.c;i++)\n{\nlet e=document.getElementById(sD.d[i].i);\nsD.d[i].e=false;\nif(e!=null)\n{\nif(i>0)\n{\nr=r+\"&\";\n}\nr=r+sD.d[i].i+\"=\"+e.value;\n}\n}\nx.onreadystatechange=function()\n{\nif(x.readyState==4)\n{\n}\n}\nx.open(\"GET\",r,true);\nx.send();}";
String webServerSettingPageAutoSaveParametrsScript =" function sED(id)\n{\nvar x=gX();\nvar r=\"/b639083e-fd40-4c9b-a872-0cb0213d448d?\";\nvar e=document.getElementById(id);\nif(e!=null)\n{\nr=r+id+\"=\"+e.value;\n}\nfor(let i=0;i<sD.c;i++)\n{\nsD.d[i].e=false;\n}\nx.onreadystatechange=function()\n{\nif(x.readyState==4)\n{}\n}\nx.open(\"GET\",r,true);\nx.send();\n}";
String webSettingPageMainStyle = ".menu{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;padding:1%;margin:1%;width:16%;border:1px solid black;border-radius:8px;}.menuItem{font-weight:600;font-family:'Times New Roman', Times, serif;display:block;margin:5px;width:95%;}.header{padding:10px;left:0px;right:0px;top:0px;background:#00FFFF;text-align:center;font-weight:600;font-family:'Times New Roman', Times, serif;font-size:250%;}.content{float:right;width:78%;}.footer{float:left;padding:1%;width:98%;background:#00FFFF;margin-top:1%;text-align:center;font-weight:600;font-family:'Times New Roman', Times, serif;font-size:150%;}.buttonFlp{width:150px;border-radius:20px;background:#459DE5;color:#fff;font-size:12px;cursor:pointer;float:left;padding:1%;margin:1%;}.buttonFlp:hover{background:#358DE5;}.buttonFlp:focus{outline:none;}.stLab{margin:5px 0;}.stBtn{margin:5px;}.stLig{margin:5px;width:50px;height:50px;border-radius:20%;display:inline-flex;align-items:center;justify-content:center;}.stText{margin:5px 0;}.stIF{margin:5px 0;}.stWL{height:100px;width:400px;overflow:auto;}.stChb{margin:5px 0;}.stRb{margin:5px 0;}.stCB{margin:5px 0;}";
String parseWebServerResponseScript ="  function pRD(x){\ntry {var r=JSON.parse(x.responseText);}\ncatch (e) {setTimeout(gND(),1000); return;}\nif(r.r < 1){setTimeout(gND(),1000); return;}\nfor(let i=0;i<r.c;i++){uCE(i,r);}\nsetTimeout(gND(),1000);\n}\nfunction uCE(i,r){\nlet e=document.getElementById(r.d[i].i);\nif(e==null){return;}\nif(r.d[i].t==\"T\") { e.innerHTML=r.d[i].v; return;}\nif(r.d[i].t==\"L\") {e.style.backgroundColor=r.d[i].v; return;}\nif(!(cND(r.d[i].i))){return;}\ne.value=r.d[i].v;\nif(r.d[i].t==\"H\")\n{\ne=document.getElementById(r.d[i].i+\"A\");\nif(e!=null){e.checked=(r.d[i].v==\"1\");}\n}\nif(r.d[i].t==\"R\"){\ne=document.getElementsByName(r.d[i].i);\nif(e==null){return;}\nfor(let i1=0;i1<e.length;i1++){\nif(e[i1].value ==r.d[i].v){\ne[i1].checked=true;\n}\nelse {\ne[i1].checked=false;\n}\n}\n}\n}\nfunction cND(id){\nfor(let i=0;i<sD.c;i++){\nif(sD.d[i].i == id){return !sD.d[i].e;}\n}\nreturn false;\n}\nfunction blI(id){\nfor(let i=0;i<sD.c;i++){\nif(sD.d[i].i == id){sD.d[i].e=true; return; }\n}\n}";
String sendWebServerResponseScriptPart1 =" function gND(){\nlet x=gX();\nx.onreadystatechange=function()\n{\nif(x.readyState==4)\n{pRD(x);\n}\n};\nlet r=\"/c1f1724b-d2ee-4caf-98d7-f0053fc4b2f2?page=";
String sendWebServerResponseScriptPart2 ="\";\nx.open(\"GET\",r,true);\nx.send();\n}";
bool isNeededCommitESP8266EEprom = 0;
void setup()
{
    EEPROM.begin(5);
    if(((readByteFromEEPROM(0, 0, 0x0))) != 93) 
    {
        (updateByteToEEPROM(0, 0, 0x0, (93)));
        (updateUnsignedLongToEEPROM(1, 0, 0x0, (0)));
        EEPROM.commit();
    }
  /*  ESPControllerWifiClient_ip = _ipAddressFromUnsignetLong(readUnsignedLongFromEEPROM(1, 0, 0x0));
    WiFi.mode(WIFI_STA);
    if (WiFi.getAutoConnect() != true) WiFi.setAutoConnect(true);
    WiFi.setAutoReconnect(true);
    _esp8266WifiModuleClientReconnect();*/
    ESPControllerWifi_tspWebServer.on("/", _sendWebServerPage1);
    ESPControllerWifi_tspWebServer.on("/27e999da-8651-42e8-b2c0-26d9bd18a5f7", _resetControllerFromWebPage);
    ESPControllerWifi_tspWebServer.on("/b639083e-fd40-4c9b-a872-0cb0213d448d", _parseChangedDataFromWebPage);
    ESPControllerWifi_tspWebServer.on("/c1f1724b-d2ee-4caf-98d7-f0053fc4b2f2", _newDataReqestForWebPage);
    ESPControllerWifi_tspWebServer.onNotFound(_sendWebServerSend404Page);
    ESPControllerWifi_tspWebServer.begin(); 
    ESPControllerWifiClient_ip = WiFi.localIP(); // Добавить
    Serial.begin(115200);
    WiFi.persistent(false);
    WiFi.mode(WIFI_STA);
    wifiMulti.addAP("MTS_137", "12345678");
    wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2");
    wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3");
}
void loop()
{
    ESPControllerWifi_tspWebServer.handleClient();
    if (isNeededCommitESP8266EEprom) 
    {
         EEPROM.commit();
        isNeededCommitESP8266EEprom=0;
    }
    if(ESPControllerWifi_isNeededRestsrt) 
    {
        ESP.restart();
    }
 /*   if(ESPControllerWifiClient_IsNeedReconect) 
    {
        _esp8266WifiModuleClientReconnect();
        ESPControllerWifiClient_IsNeedReconect = 0;
    }
    ESPControllerWifiClient_status = WiFi.status() == WL_CONNECTED;
    if (ESPControllerWifiClient_status) 
    {
         if (! ESPControllerWifiClient_HRD) 
        {
            ESPControllerWifiClient_ip =  WiFi.localIP();
            ESPControllerWifiClient_subnet =  WiFi.subnetMask();
            ESPControllerWifiClient_gateway =  WiFi.gatewayIP();
            ESPControllerWifiClient_dns =  WiFi.dnsIP();
            WiFi.macAddress(ESPControllerWifiClient_mac);
            ESPControllerWifiClient_HRD = 1;
        }
    }
     else 
    {
        ESPControllerWifiClient_HRD = 0;
    }*/
    //Плата:1
      if (wifiMulti.run(5000) == WL_CONNECTED) 
    {
        Serial.print("WiFi connected: ");
        Serial.print(WiFi.SSID());
        Serial.print(" ");
        Serial.println(WiFi.localIP());
    }
     else 
    {
        Serial.println("WiFi not connected!");
    }
    delay(1000);
}
bool _isTimer(unsigned long startTime, unsigned long period)
{
    unsigned long currentTime;
    currentTime = millis();
    if (currentTime>= startTime) 
    {
        return (currentTime>=(startTime + period));
    }
     else 
    {
        return (currentTime >=(4294967295-startTime+period));
    }
}
void _sendWebServerSend404Page()
{
    String  page = "<!DOCTYPE HTML><html><body><p>404 - Page not fond</p></body></html>";
    ESPControllerWifi_tspWebServer.send(400, "text/html", page);
}
void _parseChangedDataFromWebPage()
{
    String id;
    String value;
    for (int i = 0; i < ESPControllerWifi_tspWebServer.args(); i++)
    {
        id = ESPControllerWifi_tspWebServer.argName(i);
        value = ESPControllerWifi_tspWebServer.arg(i);
    }
    ESPControllerWifi_tspWebServer.send(200, "text/plain", "ok");
}
void _resetControllerFromWebPage()
{
    ESPControllerWifi_isNeededRestsrt = 1;
    ESPControllerWifi_tspWebServer.send(200, "text/plane", "");
}
void _sendWebServerPage1()
{
    ESPControllerWifi_tspWebServer.chunkedResponseModeStart(200, "text/html");
    ESPControllerWifi_tspWebServer.sendContent(webSettingPageHeader1);
    ESPControllerWifi_tspWebServer.sendContent("<head>");
    ESPControllerWifi_tspWebServer.sendContent("<style>");
    ESPControllerWifi_tspWebServer.sendContent((String(webSettingPageMainStyle)+" "));
    ESPControllerWifi_tspWebServer.sendContent("\"</style>");
    ESPControllerWifi_tspWebServer.sendContent("</head>");
    ESPControllerWifi_tspWebServer.sendContent("<body>");
    ESPControllerWifi_tspWebServer.sendContent("<div class=\"header\">");
    ESPControllerWifi_tspWebServer.sendContent(String(webSettingPageHeaderString));
    ESPControllerWifi_tspWebServer.sendContent("</div>");
    ESPControllerWifi_tspWebServer.sendContent("<div class=\"content\">");
    _webSettingPageWidgetParametrs.style = "";
    _webSettingPageWidgetParametrs.label = "ip adress";
    _webSettingPageWidgetParametrs.hasLabel = 1;
    _webSettingPageWidgetParametrs.hasCommonDiv = 1;
    _webSettingPageWidgetParametrs.labelStyle = "stLab";
    _webSettingPageWidgetParametrs.valueStyle = "stText";
    _webSettingPageWidgetParametrs.labelPosition = 0;
    _webSettingPageWidgetParametrs.id = "P1";
    _webSettingPageWidgetParametrs.isIp = 1;
    _webSettingPageWidgetParametrs.isClient = 1;
    ESPControllerWifi_tspWebServer.sendContent(_eSP8266SettingWebPageTextVisualElement());
    ESPControllerWifi_tspWebServer.sendContent("<div>");
    ESPControllerWifi_tspWebServer.sendContent(String(_ESP8266WebInterfacePageButton_save));
    ESPControllerWifi_tspWebServer.sendContent(_ESP8266WebInterfacePageButton_reset);
    ESPControllerWifi_tspWebServer.sendContent("</div>");
    ESPControllerWifi_tspWebServer.sendContent("</div>");
    ESPControllerWifi_tspWebServer.sendContent("<div class=\"footer\">");
    ESPControllerWifi_tspWebServer.sendContent(String(webSettingPageFooterString));
    ESPControllerWifi_tspWebServer.sendContent("</div>");
    ESPControllerWifi_tspWebServer.sendContent("<script>");
    ESPControllerWifi_tspWebServer.sendContent(getXmlHttpFunction);
    ESPControllerWifi_tspWebServer.sendContent(resetControllerFromWebScript);
    ESPControllerWifi_tspWebServer.sendContent("let sD={c:0,d:[]};");
    ESPControllerWifi_tspWebServer.sendContent(webServerSettingPageSaveParametrsScript);
    ESPControllerWifi_tspWebServer.sendContent(sendWebServerResponseScriptPart1);
    ESPControllerWifi_tspWebServer.sendContent("1");
    ESPControllerWifi_tspWebServer.sendContent(sendWebServerResponseScriptPart2);
    ESPControllerWifi_tspWebServer.sendContent(parseWebServerResponseScript);
    ESPControllerWifi_tspWebServer.sendContent(" window.onload = function() {gND();");
    ESPControllerWifi_tspWebServer.sendContent("};");
    ESPControllerWifi_tspWebServer.sendContent("</script>");
    ESPControllerWifi_tspWebServer.sendContent("</body></html>");
    ESPControllerWifi_tspWebServer.chunkedResponseFinalize();
}
void _newDataReqestForWebPage()
{
    int  page = (String(ESPControllerWifi_tspWebServer.arg("page"))).toInt();
    String result ="{";
    switch (page) 
    {
        case 1:
        result.concat("\"r\":\"");
        result.concat("1000");
        result.concat("\",\"c\":\"1\",\"d\":[");
        result.concat("{\"i\":\"P1\", \"v\":");
        result.concat("\"");
        result.concat((ESPControllerWifiClient_ip.toString()));
        result.concat("\"");
        result.concat(", \"t\":\"T\"}");
        result.concat("]");
        break;
    }
    result.concat("}");
    ESPControllerWifi_tspWebServer.send(200, "text/json",result);
}
byte readByteFromEEPROM(int addres, byte bitAddres, byte chipAddres)
{
    return EEPROM.read(addres);
}
void updateByteToEEPROM(int addres, byte bitAddres, byte chipAddres, byte value)
{
    isNeededCommitESP8266EEprom = 1;
    return EEPROM.write(addres, value);
}
unsigned long readUnsignedLongFromEEPROM(int addres, byte bitAddres, byte chipAddres)
{
    byte x[4];
    for(byte i = 0; i < 4; i++) 
    {
         x[i] = readByteFromEEPROM((addres+i),  bitAddres,  chipAddres);
    }
    unsigned long *y = (unsigned long *)&x;
    return y[0];
}
void updateUnsignedLongToEEPROM(int addres, byte bitAddres, byte chipAddres, unsigned long value)
{
    byte *x = (byte *)&value;
    for(byte i = 0; i < 4; i++) 
    {
        updateByteToEEPROM((addres+i),  bitAddres,  chipAddres, x[i]);
    }
}
IPAddress _ipAddressFromUnsignetLong(unsigned long value)
{
    IPAddress result;
    byte *x = (byte *)&value;
    for (byte i = 0; i < 4; i++) 
    {
        result[i] =  x[i];
    }
    return result;
}
bool checkIPAdressString(String value)
{
    IPAddress temp;
    return temp.fromString(value);
}
IPAddress _ipAddressFromString(String value)
{
    IPAddress temp;
    temp.fromString(value);
    return temp;
}
unsigned long _unsignetLongFromIPAdress(IPAddress value)
{
    byte buufer[4] = {0, 0, 0, 0};
    for (byte i = 0; i < 4; i++) 
    {
        buufer[i] = value[i];
    }
    unsigned long *y = (unsigned long *)&buufer;
    return y[0];
}
String IpAddressToString(const IPAddress& ipAddress)
{
      return String(ipAddress[0]) + String(".") +  String(ipAddress[1]) + String(".") +  String(ipAddress[2]) + String(".") +  String(ipAddress[3])  ;
}
String _eSP8266SettingWebPageStartMainDivVisualElement ()
{
    if(!(_webSettingPageWidgetParametrs.hasCommonDiv &&  _webSettingPageWidgetParametrs.hasLabel))
    {
        return "";
    }
    String result ="<div";
    if (_webSettingPageWidgetParametrs.style.length() > 0) 
    {
        result.concat(" class=\"");
        result.concat(_webSettingPageWidgetParametrs.style);
        result.concat("\"");
    }
    result.concat(">");
    return result;
}
String _eSP8266SettingWebPageStopMainDivVisualElement ()
{
    if(_webSettingPageWidgetParametrs.hasCommonDiv &&  _webSettingPageWidgetParametrs.hasLabel)
    {
        return "</div>";
    }
    return "";
}
String _eSP8266SettingWebPageWidgetLabelVisualElement (byte position)
{
    if(!(_webSettingPageWidgetParametrs.hasLabel &&(_webSettingPageWidgetParametrs.labelPosition==position)))
    {
        return "";
    }
    String result ="";
    bool isNeededDiv =(((position == 1) &&(_webSettingPageWidgetParametrs.labelStyle.length() > 0))||(position != 1));
    if(isNeededDiv)
    {
        result.concat("<div ");
    }
    if (_webSettingPageWidgetParametrs.labelStyle.length() > 0) 
    {
        result.concat(" class=\"");
        result.concat(_webSettingPageWidgetParametrs.labelStyle);
        result.concat("\"");
    }
    if(isNeededDiv)
    {
        result.concat(" > ");
    }
    result.concat(_webSettingPageWidgetParametrs.label);
    if(isNeededDiv)
    {
        result.concat("</div>");
    }
    return result;
}
String _eSP8266SettingWebPageTextVisualElement ()
{
    String result = _eSP8266SettingWebPageStartMainDivVisualElement ();
    result.concat(_eSP8266SettingWebPageWidgetLabelVisualElement (0));
    result.concat("<div id =\"");
    result.concat(_webSettingPageWidgetParametrs.id);
    result.concat("\" ");
    if (_webSettingPageWidgetParametrs.valueStyle.length() > 0) 
    {
        result.concat(" class=\"");
        result.concat(_webSettingPageWidgetParametrs.valueStyle);
        result.concat("\"");
    }
    result.concat("></div>");
    result.concat(_eSP8266SettingWebPageWidgetLabelVisualElement (2));
    result.concat(_eSP8266SettingWebPageStopMainDivVisualElement ());
    return result;
}
/*int hexStrToInt(String instring)
{
    byte len = instring.length();
    if  (len == 0) return 0;
    int result = 0;
    for (byte i = 0; i < 8; i++)    // только первые 8 цыфар влезуть в uint32
    {
        char ch = instring[i];
        if (ch == 0) break;
        result <<= 4;
        if (isdigit(ch))
        result = result | (ch - '0');
        else result = result | (ch - 'A' + 10);
    }
    return result;
}
void _esp8266WifiModuleClientReconnect()
{
    if(_checkMacAddres(ESPControllerWifiClient_mac)) 
    {
          wifi_set_macaddr(0, const_cast<uint8*>(ESPControllerWifiClient_mac));
    }
    if(ESPControllerWifiClient_isDHCP) 
    {
         WiFi.config(0U, 0U, 0U, 0U, 0U);
    }
     else 
    {
        WiFi.config(ESPControllerWifiClient_ip, ESPControllerWifiClient_gateway, ESPControllerWifiClient_subnet, ESPControllerWifiClient_dns , ESPControllerWifiClient_dns);
    }
    WiFi.begin(ESPControllerWifiClient_SSID, ESPControllerWifiClient_password);
}
bool _checkMacAddres(byte array[])
{
    bool result = 0;
    for (byte i = 0; i < 6; i++)
    {
        if (array[i] == 255) 
        {
            return 0;
        }
        if (array[i] > 0) 
        {
            result = 1;
        }
    }
    return result;
}
void _parseMacAddressString(String value, byte array[])
{
    int index;
    byte buffer[6] = {255, 255, 255, 255, 255, 255};
    byte raz = 0;
    String tempString;
    while ((value.length() > 0) && (raz <= 6)) 
    {
        index = value.indexOf(":");
        if (index == -1) 
        {
            tempString = value;
            value = "";
        }
         else 
        {
            tempString = value.substring(0, index);
            value = value.substring(index + 1);
        }
        buffer[raz] = byte(hexStrToInt(tempString));
        raz++;
    }
    if (_checkMacAddres(buffer))
    {
        for (byte i = 0; i < 6; i++)
        {
            array[i] = buffer[i];
        }
    }
}
bool _compareMacAddreses(byte array1[], byte array2[])
{
    for (byte i = 0; i < 6; i++)
    {
        if (array1[i] != array2[i]) 
        {
            return 0;
        }
    }
    return 1;
}
bool _compareMacAddresWithString(byte array[], String value)
{
    byte buffer[6] = {255, 255, 255, 255, 255, 255};
    _parseMacAddressString(value,  buffer);
    return _compareMacAddreses(array, buffer);
}
bool _checkMacAddresString(String value)
{
    byte buffer[6] = {255, 255, 255, 255, 255, 255};
    _parseMacAddressString(value,  buffer);
    return _checkMacAddres(buffer);
}
String _macAddresToString(byte array[])
{
    String result = "";
    String  temp ="";
    for (byte i = 0; i < 6; i++)
    {
        temp=String(array[i],HEX);
        if (temp.length()  < 2) 
        {
            temp = String("0") + temp;
        }
        result = result + temp;
        if (i < 5) 
        {
               result = result + String(":");
        }
    }
    result.toUpperCase();
    return result;
}*/
ESP8266 подключение к разным WiFi_1.flp
(95.05 КБ) 40 скачиваний
PS:Смотри ниже

aidar_i
Полковник
Сообщения: 3122
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

NODE MCU 8266 подключение к разным WiFi?

#10

Сообщение aidar_i » 19.03.2022{, 08:43}

Попробовал испытать блок не изменяя скетч, сгенерированный со штатными настройками WiFi и Веб интерфейса, работает. В штатных настройках имя сети и пароль клиента ставьте произвольные, чтобы не совпадали с сетями куда будете подключаться. Можете, если хотите, удалить строку в сетап _esp8266WifiModuleClientReconnect();, чтобы не пытался есп туда подключаться, но не обязательно.
Блок подправил, удалил вывод информации в УАРТ.
ESP8266 подключение к разным WiFi_2.flp
(93.86 КБ) 66 скачиваний
Использовался FLProg 7.5.0 со штатным Arduino Ide.

SerOv
Лейтенант
Сообщения: 569
Зарегистрирован: 06.01.2018{, 19:50}
Репутация: 26

NODE MCU 8266 подключение к разным WiFi?

#11

Сообщение SerOv » 19.03.2022{, 15:22}

aidar_i писал(а):
19.03.2022{, 08:43}
Блок подправил...
Прозьба к автору. Чтобы не было путаницы в дальнейшем. подписывать блок версиями. :)

aidar_i
Полковник
Сообщения: 3122
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

NODE MCU 8266 подключение к разным WiFi?

#12

Сообщение aidar_i » 19.03.2022{, 20:22}

SerOv писал(а):
19.03.2022{, 15:22}
aidar_i писал(а):
19.03.2022{, 08:43}
Блок подправил...
Прозьба к автору. Чтобы не было путаницы в дальнейшем. подписывать блок версиями. :)
Ок

Отправлено спустя 5 минут 43 секунды:
aidar_i писал(а):
19.03.2022{, 08:43}
В штатных настройках имя сети и пароль клиента ставьте произвольные, чтобы не совпадали с сетями куда будете подключаться.
Попробуйте в штатных настройках имя и пароль сети поставить как 4ую сеть, в блоке у меня 3 сети.
Должно работать.

Ответить

Вернуться в «ESP8266»