ESP8266, ESP32 автоматическое подключение к разным WIFI сетям

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Вопрос простой, кто и как реализует задачу автоматического подключения к разным WiFi cетям (по логину, паролю) при перемещении девайса. Скан сетей, проверка Точек по имени, определение и выбор точки с наибольшей силой сигнала?
 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Не могу сказать за esp32, но дома две точки WiFi и на даче три. Решил тему вышеописанную просто. Одинаково назвал все точки доступа. Задал одинаковые имя и пароль. Я не знаю как это работает, но работает отлично и стабильно. Где бы я не находился с планшетом в зоне доступа любой из точек - все подключается и работает. Есть ещё репитеры WiFi, но они (вроде бы) по тому же принципу работают. 
Или я не про то подумал?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

можно и так, но если нет возможности переименования, то интересует, кто и как эту проблему решал

b707
Offline
Зарегистрирован: 26.05.2017

У меня тоже так, все роутеры с одним и тем же ssid и паролем

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:
У меня тоже так, все роутеры с одним и тем же ssid и паролем

это не наш метод, так что буду решать задачу далее, думал, может уже кто озадачился и сделал давно
Видится, набить и далее сравнивать имя и скан_имя:
 

char * ssid[] = {"NODE1","NODE2","NODE3"};         // your network SSID (name)
char * password[] = {"pass1","pass2","pass3"};     // your network key

 

Прямое сравнение компилируется но не работает, как надо правильно?
 

 if(WiFi.SSID(j) == ssid[i])

 

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

strcmp

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

Прямое сравнение компилируется но не работает, как надо правильно?

if(WiFi.SSID(j) == ssid[i])

так ты сравниваешь не саму строку, а только ссылки на них, которые, очевидно, не равны никогда

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

ua6em пишет:

Прямое сравнение компилируется но не работает, как надо правильно?

if(WiFi.SSID(j) == ssid[i])

так ты сравниваешь не саму строку, а только ссылки на них, которые, очевидно, не равны никогда

а как по этим ссылкам взять строки и их сравнить?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

xDriver пишет:

strcmp

error: cannot convert 'String' to 'const char*' for argument '1' to 'int strcmp(const char*, const char*)'

         if(strcmp(s1, s2) == 0 )

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Вам же выше написали: http://all-ht.ru/inf/prog/c/func/strcmp.html

Если ещё не догоняете, то как бэ вот так:

if ( ! strcmp((char*)WiFi.SSID(j), (char*)ssid[i] ) { // что то делаем }

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Капец, вы же (вроде бы) умеете с указателями работать?

Посмотрите внимательнее мой пример. 

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

ua6em пишет:

xDriver пишет:

strcmp

error: cannot convert 'String' to 'const char*' for argument '1' to 'int strcmp(const char*, const char*)'

         if(strcmp(s1, s2) == 0 )

ты вроде дядька взрослый и не глупый, но тут тебя хочется послать... в раздел новичков:))

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

xDriver пишет:

ua6em пишет:

xDriver пишет:

strcmp

error: cannot convert 'String' to 'const char*' for argument '1' to 'int strcmp(const char*, const char*)'

         if(strcmp(s1, s2) == 0 )

ты вроде дядька взрослый и не глупый, но тут тебя хочется послать... в раздел новичков:))

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

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

BOOM пишет:

Вам же выше написали: http://all-ht.ru/inf/prog/c/func/strcmp.html

Если ещё не догоняете, то как бэ вот так:

if ( ! strcmp((char*)WiFi.SSID(j), (char*)ssid[i] ) { // что то делаем }

 

 invalid cast from type 'String' to type 'char*'

   if(!strcmp((char*)WiFi.SSID(j), (char*)ssid[i]))

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

ua6em пишет:

BOOM пишет:

Вам же выше написали: http://all-ht.ru/inf/prog/c/func/strcmp.html

Если ещё не догоняете, то как бэ вот так:

if ( ! strcmp((char*)WiFi.SSID(j), (char*)ssid[i] ) { // что то делаем }

 

 invalid cast from type 'String' to type 'char*'

   if(!strcmp((char*)WiFi.SSID(j), (char*)ssid[i]))

ептать, ну сравнивать надо два указателя, а не стринг и указатель, последний раз

WiFi.SSID(j).c_str()

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

У меня при компиляции

WiFi.SSID(j).c_str()

ошибка:

request for member 'c_str' in 'WiFi.WiFiClass::SSID(((uint8_t)j))', which is of non-class type 'char*'

А вот как я написал - компилируется:

 if ( ! strcmp((char*)WiFi.SSID(j), (char*)ssid[i]) )

Может разные версии wifi.h для дуни и ESP32?

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

если запустится IDE (сто лет не запускал) проверю, вечером...

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

BOOM пишет:

Может разные версии wifi.h для дуни и ESP32?

да!

Вот универсальный код для библиотек

#define ESP32   // Для ESP32 размаркировать
#ifdef ESP32
#include <WiFi.h>
#include <AsyncTCP.h>
const uint16_t ports = 8000;
#elif defined(ESP8266)
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>              // https://github.com/me-no-dev/ESPAsyncTCP
const uint16_t ports = 8000;
#endif
#include <ESPAsyncWebServer.h>

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

xDriver пишет:

если запустится IDE (сто лет не запускал) проверю, вечером...

Хорошо! а если и код поправите буду премного благодарен...
PS вот как-то сложно верится, что никто не реализовывал автоматизацию подключения к РАЗНЫМ точкам доступа

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

О! Так ESP еще и подглядывает за нами:
Заливаю код:
 

#include "Adafruit_Sensor.h"
#include "Adafruit_AM2320.h"

Adafruit_AM2320 am2320 = Adafruit_AM2320();

void setup() {
  Serial.begin(115200);
  while (!Serial) {
    delay(10); // hang out until serial port opens
  }

  Serial.println("Adafruit AM2320 Basic Test");
  am2320.begin();
}

void loop() {
  Serial.print("Temp: "); Serial.println(am2320.readTemperature());
  Serial.print("Hum: "); Serial.println(am2320.readHumidity());

  delay(5000);
}

Включен DEBUG и что видим:
 

SDK:2.2.2-dev(38a443e)/Core:2.7.3-3-g2843a5ac=20703003/lwIP:STABLE-2_1_2_RELEASE/glue:1.2-30-g92add50/BearSSL:5c771be
Adafruit AM2320 Basic Test
Temp: 26.50
Hum: 31.90
scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 1
cnt 

connected with OpenWrt, channel 11
dhcp client start...
ip:192.168.1.224,mask:255.255.255.0,gw:192.168.1.1
Temp: 26.40
Hum: 31.90
Temp: 26.70
Hum: 31.90

 

gfx125
Offline
Зарегистрирован: 27.05.2017
ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

gfx125 пишет:

Посмотрите здесь https://esp8266.ru/forum/threads/esp8266-podkljuchenie-k-neskolkim-setja...

Как вариант, рабочее решение, но хочется через сканирование сетей и потом добавить подключаться к точке в списке и с наибольшим RSSI

Код скину сюда:
 

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

char auth[] = "your_token";
char* ssid[] = {"ssid_1","ssid_2","ssid_Mobil"}; //list a necessary wifi networks
char* pass[] = {"pass_1","pass_2","pass_Mobil"}; //list a passwords

void setup()
{
  Serial.begin(9600);
  MultyWiFiBlynkBegin(); //instead Blynk.begin(auth, ssid, pass);
}

void MultyWiFiBlynkBegin() {
  int ssid_count=0;
  int ssid_mas_size = sizeof(ssid) / sizeof(ssid[0]);
  do {
    Serial.println("Trying to connect to wi-fi " + String(ssid[ssid_count]));
    WiFi.begin(ssid[ssid_count], pass[ssid_count]);   
    int WiFi_timeout_count=0;
    while (WiFi.status() != WL_CONNECTED && WiFi_timeout_count<50) { //waiting 10 sec
      delay(200);
      Serial.print(".");
      ++WiFi_timeout_count;
    }
    if (WiFi.status() == WL_CONNECTED) {
      Serial.println("Connected to WiFi! Now I will check the connection to the Blynk server");
      Blynk.config(auth);
      Blynk.connect(5000); //waiting 5 sec
    }
    ++ssid_count;
  }
  while (!Blynk.connected() && ssid_count<ssid_mas_size);
  if (!Blynk.connected() && ssid_count==ssid_mas_size) {
    Serial.println("I could not connect to blynk =( Ignore and move on. but still I will try to connect to wi-fi " + String(ssid[ssid_count-1]));
  }
}

void loop()
{
  Blynk.run();
}

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014
ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

 библиотека сия - #include <WiFiMulti.h> под esp8266 подходит?

Чтобы было информативней, чуток поправил:
 

/*
 *  This sketch trys to Connect to the best AP based on a given list
 *
 */

#include <WiFi.h>
//#include <ESP8266WiFi.h>
#include <WiFiMulti.h>

WiFiMulti wifiMulti;

void setup()
{
    Serial.begin(115200);
    delay(10);

    wifiMulti.addAP("ssid_from_AP_1", "your_password_for_AP_1");
    wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2");
    wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3");


    Serial.println("Connecting Wifi...");
    if(wifiMulti.run() == WL_CONNECTED) {
        Serial.println("");
        Serial.println("WiFi connected");
        Serial.print("IP address: ");
        Serial.println(WiFi.localIP());
        Serial.print("SSID: ");
        Serial.println(WiFi.SSID());
        Serial.print("RSSI: ");
        Serial.println(WiFi.RSSI());
    }
}

void loop()
{
    if(wifiMulti.run() != WL_CONNECTED) {
        Serial.println("WiFi not connected!");
        delay(1000);
    }
}

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Дык почитай.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Дык почитай. Скорее нет, чем да. Но половину твоего вопроса решает.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

brokly пишет:

Дык почитай. Скорее нет, чем да. Но половину твоего вопроса решает.

я из тех парней, что "проверяет, какого пола твой сосед"
Да, выбирает лучшую точку:
 

WiFi connected
IP address: 192.168.10.101
SSID: Rostelecom_73
RSSI: -17
ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:9720
ho 0 tail 12 room 4
load:0x40080400,len:6352
entry 0x400806b8
Connecting Wifi...

WiFi connected
IP address: 192.168.10.101
SSID: Rostelecom_73
RSSI: -15
ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:9720
ho 0 tail 12 room 4
load:0x40080400,len:6352
entry 0x400806b8
Connecting Wifi...

WiFi connected
IP address: 192.168.10.101
SSID: Rostelecom_73
RSSI: -18
ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:9720
ho 0 tail 12 room 4
load:0x40080400,len:6352
entry 0x400806b8
Connecting Wifi...

WiFi connected
IP address: 192.168.1.142
SSID: OpenWrt
RSSI: -10
ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:9720
ho 0 tail 12 room 4
load:0x40080400,len:6352
entry 0x400806b8
Connecting Wifi...

WiFi connected
IP address: 192.168.1.142
SSID: OpenWrt
RSSI: -21
ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:9720
ho 0 tail 12 room 4
load:0x40080400,len:6352
entry 0x400806b8
Connecting Wifi...

WiFi connected
IP address: 192.168.10.101
SSID: Rostelecom_73
RSSI: -21

Поправить библиотеку под ESP8266 точно выше моих возможностей

в ESP8266 эта библиотека называется -ESP8266WiFiMulti.h )))

посмотрел библиотеку, по мне очень красиво сделано

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

ua6em пишет:

Поправить библиотеку под ESP8266 точно выше моих возможностей

в ESP8266 эта библиотека называется -ESP8266WiFiMulti.h )))

посмотрел библиотеку, по мне очень красиво сделано

Да, тем более, что это библиотека от производителя чипа :) Ничего не скажу про качество библиотеки, но при обнаружении ошибок правят их они достаточно быстро. Правда сколько эти еспшки живут столько в них ошибки и находят :)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

brokly пишет:

ua6em пишет:

Поправить библиотеку под ESP8266 точно выше моих возможностей

в ESP8266 эта библиотека называется -ESP8266WiFiMulti.h )))

посмотрел библиотеку, по мне очень красиво сделано

Да, тем более, что это библиотека от производителя чипа :) Ничего не скажу про качество библиотеки, но при обнаружении ошибок правят их они достаточно быстро. Правда сколько эти еспшки живут столько в них ошибки и находят :)

это да, задача решена, сделал универсально и для ESP8266 и для ESP32, нашел один глюк, но как они его могут принципиально решить пока не знаю. Глюк следующий, если видятся несколько точек доступа с одним именем и пытается подключиться не на отраженную в скетче (пароль не совпадает) долбит в чужую ноду до посинения...

 

Благодарю!!!

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

нашел один глюк, но как они его могут принципиально решить пока не знаю. Глюк следующий, если видятся несколько точек доступа с одним именем и пытается подключиться не на отраженную в скетче (пароль не совпадает) долбит в чужую ноду до посинения...

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

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Пока не представляю, как в рамках этого кода это можно реализовать?

//#define ESP32   // Для ESP32 размаркировать
#ifdef ESP32
#include <WiFi.h>
#include <WiFiMulti.h>
#include <AsyncTCP.h>      // https://github.com/me-no-dev/AsyncTCP
const uint16_t httpPort = 8000;
#elif defined(ESP8266)
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESPAsyncTCP.h>  // https://github.com/me-no-dev/ESPAsyncTCP
const uint16_t httpPort = 8000;
#endif

#include <ESPAsyncWebServer.h> // https://github.com/me-no-dev/ESPAsyncWebServer

#ifdef ESP32
WiFiMulti wifiMulti;
#else
ESP8266WiFiMulti wifiMulti;
#endif


void setup()
{
    Serial.begin(115200);
    delay(10);
    
    wifiMulti.addAP("ssid_from_AP_1", "your_password_for_AP_1");
    wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2");
    wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3");


    Serial.println("Connecting Wifi...");
    if(wifiMulti.run() == WL_CONNECTED) {
        Serial.println("");
        Serial.println("WiFi connected");
        Serial.print("IP address: ");
        Serial.println(WiFi.localIP());
        Serial.print("SSID: ");
        Serial.println(WiFi.SSID());
        Serial.print("RSSI: ");
        Serial.println(WiFi.RSSI());
    }
}

void loop()
{
    if(wifiMulti.run() != WL_CONNECTED) {
//        Serial.println("WiFi not connected!");
        Serial.print(".");
        delay(500);
    }else{
        Serial.println("");
        Serial.println("WiFi connected");
        Serial.print("IP address: ");
        Serial.println(WiFi.localIP());
        Serial.print("SSID: ");
        Serial.println(WiFi.SSID());
        Serial.print("RSSI: ");
        Serial.println(WiFi.RSSI());
        delay(1000);
    }
}

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

BOOM пишет:

У меня при компиляции

WiFi.SSID(j).c_str()

ошибка:

request for member 'c_str' in 'WiFi.WiFiClass::SSID(((uint8_t)j))', which is of non-class type 'char*'

А вот как я написал - компилируется:

 if ( ! strcmp((char*)WiFi.SSID(j), (char*)ssid[i]) )

Может разные версии wifi.h для дуни и ESP32?

И что, сравнивает строки?

У меня нет

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

И что, сравнивает строки?

У меня нет

для ЕСП32 правильная запись

if ( ! strcmp((char*)WiFi.SSID(j).c_str(), (char*)ssid[i]) )

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

ua6em пишет:

И что, сравнивает строки?

У меня нет

для ЕСП32 правильная запись

if ( ! strcmp((char*)WiFi.SSID(j).c_str(), (char*)ssid[i]) )

можешь пояснить почему так?
 

 

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

b707 пишет:

для ЕСП32 правильная запись

if ( ! strcmp((char*)WiFi.SSID(j).c_str(), (char*)ssid[i]) )

можешь пояснить почему так?

strcmp хочет такие параметры:

strcmp(const char* one, const char* two)

а WiFi.SSID(j) возвращает String. поэтому нужно его конвертировать в char* посредством c_str()

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

ua6em пишет:

b707 пишет:

для ЕСП32 правильная запись

if ( ! strcmp((char*)WiFi.SSID(j).c_str(), (char*)ssid[i]) )

можешь пояснить почему так?

strcmp хочет такие параметры:

strcmp(const char* one, const char* two)

а WiFi.SSID(j) возвращает String. поэтому нужно его конвертировать в char* посредством c_str()

ну я протупил, а ведь видел жеж, что надо char*...как всё просто оказывается )))

на ESP8266 получается полная хрень:
код сканирования сетей:
 

   // Set WiFi to station mode and disconnect from an AP if it was Previously connected

  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);
  
 // WiFi.scanNetworks will return the number of networks found
  int n = WiFi.scanNetworks();
  int i = 0;
  int j = 0;
  
  Serial.println("scan done");
  if (n == 0) {
    Serial.println("no networks found");
  } else {
    for( j = 1; j <= n; j++ )
    {
      for ( i = 0; i < n; i++ )
      {
       
        Serial.print(WiFi.SSID(i));
        Serial.print(" = ");
        Serial.println(ssid[i]);
        
        if(strcmp((char*)(WiFi.SSID(j).c_str()), (char*)ssid[i]) != 0 )

        { 
        WiFi.begin(ssid[i], password);
        Serial.print(WiFi.SSID(j));
        Serial.print(" = + = ");
        Serial.println(ssid[i]);
        }
      }
     }
    }

Вывод в монитор порта:
 

OpenWrt = IPAD4
⸮ = + = IPAD4
Connecting Wifi: OpenWrt 1234
......
WiFi connected

 

b707
Offline
Зарегистрирован: 26.05.2017

блин, ну что за бардак в коде...

- почему в строке 16 условие <= n, а в 18 - < n

- почему вообще оба цикла до n, если мы сравниваем два разных списка разного размера - список запомненных и список сканированных сетей?

- почему в строке 21 ты печатаешь WiFi.SSID(i), а в строке 25 сравниваешь уже WiFi.SSID(j) ?

- функция strcmp() выдает ноль, если строки РАВНЫ. а у тебя условие наоборот...

Нельзя так...

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

Нельзя так...

не понял ты полёт мысли свободного художника

сканирование даст количество сетей > 1
SSID храню в массиве чаров с нуля (цикл перебора из массива получается смещён вниз на 1)
По J - да, правил я сей косяк, видимо взял не правленный скетч, вылез опять
!= сделано намерено, вывести в порт, что и с чем сравнивается...

PS можно было конечно и забить...но я зануда...хочу понять...

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

но я зануда...хочу понять...

ну тогда разбирайся

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

ну тогда разбирайся

эта борьба пока не в мою пользу )))

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

b707 пишет:

ua6em пишет:

И что, сравнивает строки?

У меня нет

для ЕСП32 правильная запись

if ( ! strcmp((char*)WiFi.SSID(j).c_str(), (char*)ssid[i]) )

Спорить не буду, так как нет таких контроллеров и ничего в IDE не настроено под них.

b707
Offline
Зарегистрирован: 26.05.2017

BOOM пишет:

Спорить не буду, так как нет таких контроллеров и ничего в IDE не настроено под них.

я в исходник библиотеки смотрю

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

BOOM пишет:

b707 пишет:

ua6em пишет:

И что, сравнивает строки?

У меня нет

для ЕСП32 правильная запись

if ( ! strcmp((char*)WiFi.SSID(j).c_str(), (char*)ssid[i]) )

Спорить не буду, так как нет таких контроллеров и ничего в IDE не настроено под них.

завтра проверю на esp32, их есть у меня, тока скетч перепишу на универсальный

Код проверен, скетчик сделан универсальным и для ESP32 и для ESP8266...строка разбора - РАБОТАЕТ!!!
Так как сам код практического смысла не имеет, не выкладываю...