Dmitry Orlov
Member
Что-то не могу найти, неужели нет примера как реализовать функциональность Arduino WiFiManager на голом NON-OS SDK ESP8266? Речь идет о запуске WEB-server на Soft-AP для настройки SSID/Pwd и т. п. параметров устройства.
А что такого замечательного в "Arduino WiFiManager" ?Что-то не могу найти, неужели нет примера как реализовать функциональность Arduino WiFiManager на голом NON-OS SDK ESP8266? Речь идет о запуске WEB-server на Soft-AP для настройки SSID/Pwd и т. п. параметров устройства.
Функциональность.А что такого замечательного в "Arduino WiFiManager" ?
А конкретней можно?Структура настроек WiFi есть давно и шире, чем в Arduino, к примеру в Web-свалке.
Я компилирую с последней 2.10, с предыдущими основная функциональность с MQTT падала постоянно.Она не очень оптимальна, т.к. строилась по мере развития версий SDK с добавлением в каждой новой SDK функций и ошибок...
Ну пока мне только SSID и пароль нужны.Так-же есть и другие проекты на ESP8266 с управлением через Web большинства настроек WiFi.
Так и есть, этот кусок на ESP - крохотная часть большого проекта, которая и не моя изначально была, но пришлось. Я бы, может, и Arduino использовал, но я как-то вытаскивал из нее сорцы для одной железяки (дисплейчика), и код этот был просто ужасен. Весь этот нетворкинг - вообще не мое, я проектирую железо (источники питания для света) и софт для них, а тут гейт в интернет понадобился.Какой-то ардуинный вопрос у вас. Типа дайте готовое, а пишите в теме создания своих прошивок и про SDK...
https://www.google.ru/search?q=github+esp8266+sdk+mqttИзначально не понятно, что вам надо. Возьмите примеры из любого проекта на github. Поиском находятся десятки. github esp8266 sdk mqtt - Поиск в Google
Да, но там слишком много. Нужен именно и только кусок для настройки WiFi, и больше ничего.Настройку WiFi из web сервера? -> GitHub - Spritetm/esphttpd: Esphttpd mirror of http://git.spritesserver.nl/esphttpd.git/
Надергал из разных примеров, заработала конфигурация через WEB. Осталась непонятка с прожигом ESP из Eclipse. Если беру новый, из упаковки, модуль, то пока я его один раз каким-то скриптом из Arduino IDEВозьмите примеры из любого проекта на github. Поиском находятся десятки.
#include <ESP8266WiFi.h>
//how many clients should be able to telnet to this ESP8266
#define MAX_SRV_CLIENTS 1
//const char* ssid = "**********";
//const char* password = "**********";
#define WIFI_SSID "Orlov-Home"
#define WIFI_PWD "AAAAABBBBB"
//const char* ssid = "ORANGE";
//const char* password = "1234123467";
const char* ssid = "Orlov-Home";
const char* password = "AAAAABBBBB";
const char* myHostname = "ESP";
WiFiServer server(23);
WiFiClient serverClients[MAX_SRV_CLIENTS];
void setup() {
Serial1.begin(115200);
WiFi.hostname(myHostname);
WiFi.begin(ssid, password);
Serial1.print("\nConnecting to "); Serial1.println(ssid);
uint8_t i = 0;
while (WiFi.status() != WL_CONNECTED && i++ < 20) delay(500);
if(i == 21){
Serial1.print("Could not connect to"); Serial1.println(ssid);
while(1) delay(500);
}
//start UART and the server
Serial.begin(115200);
server.begin();
server.setNoDelay(true);
Serial1.print("Ready! Use 'telnet ");
Serial1.print(WiFi.localIP());
Serial1.println(" 23' to connect");
}
void loop() {
uint8_t i;
//check if there are any new clients
if (server.hasClient()){
for(i = 0; i < MAX_SRV_CLIENTS; i++){
//find free/disconnected spot
if (!serverClients[i] || !serverClients[i].connected()){
if(serverClients[i]) serverClients[i].stop();
serverClients[i] = server.available();
Serial1.print("New client: "); Serial1.print(i);
continue;
}
}
//no free/disconnected spot so reject
WiFiClient serverClient = server.available();
serverClient.stop();
}
//check clients for data
for(i = 0; i < MAX_SRV_CLIENTS; i++){
if (serverClients[i] && serverClients[i].connected()){
if(serverClients[i].available()){
//get data from the telnet client and push it to the UART
while(serverClients[i].available()) Serial.write(serverClients[i].read());
}
}
}
//check UART for data
if(Serial.available()){
size_t len = Serial.available();
uint8_t sbuf[len];
Serial.readBytes(sbuf, len);
//push UART data to all connected telnet clients
for(i = 0; i < MAX_SRV_CLIENTS; i++){
if (serverClients[i] && serverClients[i].connected()){
serverClients[i].write(sbuf, len);
delay(1);
}
}
}
}