Используя добавочный и штатный блок для RemoteXY , блок WiFiManager и следуя рекомендациям приведенным в примере можно менять имя и пароль сети без перепрошивки ЕСП.
Менять можно также из UART и создав точку доступа в настройках контроллера.
Указанный способ можно применить и другим проектам, где требуется менять имя и пароль сети.
Отправлено спустя 5 часов 54 минуты 55 секунд:
При оформлении забыл написать в setup() удалить ещё:
RemoteXY_Init ();
Отправлено спустя 1 час 16 минут 53 секунды:
На всякий случай скомпилированный и исправленный скетч
#define REMOTEXY_MODE__ESP8266WIFI_LIB_CLOUD //добавлено
#include <ESP8266WiFi.h> //добавлено
//#define REMOTEXY_MODE__ESP8266_HARDSERIAL_CLOUD //удалено
//______________________________________________________________
#include <RemoteXY.h>
#include <Ticker.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>
extern "C" {
#include "user_interface.h";
}
//___________________________________________________
//УДАЛЕНЫ 4 СТРОКИ
/*#define REMOTEXY_SERIAL Serial
#define REMOTEXY_SERIAL_SPEED 9600
#define REMOTEXY_WIFI_SSID "удалить"
#define REMOTEXY_WIFI_PASSWORD "удалить"*/
//___________________________________________________
#define REMOTEXY_CLOUD_SERVER "cloud.remotexy.com"
#define REMOTEXY_CLOUD_PORT 6376
#define REMOTEXY_CLOUD_TOKEN "eaa0940e7f7cf8e36a2274b5aded5396"
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] = {1, 0, 20, 0, 8, 13, 0, 2, 0, 26, 13, 63, 30, 2, 26, 31, 31, 79, 78, 0, 79, 70, 70, 0};
struct {
unsigned char switch_1;
unsigned char connect_flag;
} RemoteXY;
#pragma pack(pop)
String SSID_str;
String Passw_Str;
const char* REMOTEXY_WIFI_SSID="";
const char* REMOTEXY_WIFI_PASSWORD="";
char ssid_Str[30];
char passw_Str[30];
bool en;
bool ResetSettinges;
bool setIPAdr;
String SSIDStr;
String PasswStr;
Ticker ticker;
char ssidStr[30];
char passwStr[30];
bool start= true;
bool _bounseInputD5S = 0;
bool _bounseInputD5O = 0;
unsigned long _bounseInputD5P = 0UL;
void setup()
{
//_____________________________________________
//RemoteXY_Init (); //УДАЛЕНО
//_____________________________________________
pinMode(5, INPUT_PULLUP);
pinMode(2, OUTPUT);
_bounseInputD5O = digitalRead(5);
SSID_str.toCharArray(ssid_Str, SSID_str.length()+1);
Passw_Str.toCharArray(passw_Str, Passw_Str.length()+1);
REMOTEXY_WIFI_SSID = ssid_Str;
REMOTEXY_WIFI_PASSWORD=passw_Str;
remotexy = new CRemoteXY (RemoteXY_CONF_PROGMEM, &RemoteXY,
REMOTEXY_ACCESS_PASSWORD,
REMOTEXY_WIFI_SSID, REMOTEXY_WIFI_PASSWORD, REMOTEXY_CLOUD_SERVER,
REMOTEXY_CLOUD_PORT, REMOTEXY_CLOUD_TOKEN);
Serial.begin(115200);
pinMode(BUILTIN_LED, OUTPUT);
ticker.attach(0.6, tick);
}
void loop()
{RemoteXY_Handler ();
bool _bounceInputTmpD5 = (digitalRead (5));
if (_bounseInputD5S)
{
if (millis() >= (_bounseInputD5P + 40))
{_bounseInputD5O= _bounceInputTmpD5; _bounseInputD5S=0;}
}
else
{
if (_bounceInputTmpD5 != _bounseInputD5O )
{_bounseInputD5S=1; _bounseInputD5P = millis();}
}
//Плата:1
en = !(0);
ResetSettinges = !(_bounseInputD5O);
setIPAdr = 0;
if (en) {
if (start) { start = false;
WiFiManager wifiManager;
if (ResetSettinges) wifiManager.resetSettings();
wifiManager.setAPCallback(configModeCallback);
wifiManager.setTimeout(180);
if (setIPAdr) wifiManager.setAPStaticIPConfig(IPAddress(10,0,1,1), IPAddress(10,0,1,1), IPAddress(255,255,255,0));
if ( !wifiManager.autoConnect("AutoConnectAP", "password")) {
Serial.println("failed to connect and hit 180");
delay(3000);
ESP.reset();
delay(5000);
} Serial.println("connected...yeey ");
ticker.detach();
digitalWrite(BUILTIN_LED, LOW);
}
SSIDStr = WiFi.SSID();
PasswStr = WiFi.psk();
}
SSID_str = SSIDStr;
Passw_Str = PasswStr;
//Плата:2
digitalWrite(2, (RemoteXY.switch_1));
}
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 tick()
{
int state = digitalRead(BUILTIN_LED); // get the current state of GPIO1 pin
digitalWrite(BUILTIN_LED, !state);
}
void configModeCallback(WiFiManager *myWiFiManager)
{
Serial.println("Entered config mode");
Serial.println(WiFi.softAPIP());
//if you used auto generated SSID, print it
Serial.println(myWiFiManager->getConfigPortalSSID());
//entered config mode, make led toggle faster
ticker.attach(0.2, tick);
}
Не забудьте поставить свой токен. Пока можете проверить на этом.