ESP8266 - AP_STA mód fagyás(?)
Re: ESP8266 - AP_STA mód fagyás(?)
X-Post: fenékenbillentés.....
Az X-post elérhetősége: viewtopic.php?f=46&t=2009&p=34106#p34106
Az X-post elérhetősége: viewtopic.php?f=46&t=2009&p=34106#p34106
http://www.tavir.hu - a gazda
Re: ESP8266 - AP_STA mód fagyás(?)
Csak AP módban teszteltétek esetleg a problémát?
OFF:
OFF:
Ezzel még várjunk. Lehet hogy szabályzattól eltérő fórumhasználatér is sör jár.X-Post: fenékenbillentés.....
Re: ESP8266 - AP_STA mód fagyás(?)
Off:
Ingyen meghívó az Arduino Day 2017-re (Április 1 )
Hazai esemény még nincsen....
Ingyen meghívó az Arduino Day 2017-re (Április 1 )
Hazai esemény még nincsen....
http://www.tavir.hu - a gazda
Re: ESP8266 - AP_STA mód fagyás(?)
) Arduino Day-re +1
De amúgy miért ne?!
Az X-Postot majd mergelem a megfelelő ágba bocsi
De amúgy miért ne?!
Az X-Postot majd mergelem a megfelelő ágba bocsi
Re: ESP8266 - AP_STA mód fagyás(?)
Én mindenképpen aze elosztott vagy routolt IoT topilógiában gondolkodok amennyiben nem indokolja más körülmény.Robert írta:Nagyon a széléről, csak 2 gondolat:
- fórumokban írták, hogy a _routerek_ nagy része nem csípi, ha az eszközök időnként eltűnnek, megjelennek a terükben. És így ezen eszközöket ignorálják. Ez ott volt érdekes, hogy hőmérés és deep sleep. (Felkelek, adatküldök, pihenek - és a többedik felkelés után az MSI és a TPLink router is kivágott)
Én úgy csinálom, hogy a szofverből állítható, hogy az adott node Gateway vagy Node üzemmódban műxik -e. A node-k alszanak, mérnek, adatot küldenek a Gateway-nek. Az gyűjti, és továbbítja netre. Így a Gateway fixen wifin lóg mindig, és csak a node-k alszanak, így nem vesznek össze a roterrel A másik lehetőség az RF kapcsolat az eszközök között, de ezzel méz nem volt időm foglalkozni.
Re: ESP8266 - AP_STA mód fagyás(?)
Ez neked stabil megoldás lett végülis?japeti10 írta:Igen, arra én is rájöttem (azóta is ezzel izzadok "csakazértis"), hogy nem szabad a módok közt kapcsolgatni. Marha sok idő, és a létező AP kapcsolatokat is eldobálja, színtiszta fejetlenség lesz belőle.. Most ott tartok (omlós még), hogy kikapcsolom wifit, ettől még AP megmarad, és csak azt nézem scan-al, hogy van e olyan nevű elérhető hálózat, mint mihez csatlakozni akarok. Ha van, megpróbálok csatlakozni. Valahol itt tartok. Az ötlet nem saját, valamelyik fórumon is idáig jutottak. És látom a Te linkeden is hasonlóan gondolkodik valaki. Nem tudom, akarok e ezzel izzadni, még 1 napot adok neki..
Én több workaroundot is végig próbáltam, és az én tapasztalatom az hogy nem kapcsolagatok a módok között..
Az én logikám szerint, ha egyszer az ESP-t AP+STA-ba raktad, akkor azmiatt, mert a ledöglött a wifi, amire csatlakozni akarsz, miért is váltanál módot? A mód váltás szerintem arra van, hogy kiválaszd, milyen üzemmódban akarsz jelen lenni a hálózatin, és nem hibakezelésre.
Tehát nekem továbbra is ez a menetrend, ami bejött, és router megdöglés / hibás config esetén is az AP-hoz villám gyorsan hozzáférek:
Kód: Egész kijelölése
void ConnectToWifi() {
WiFi.setAutoReconnect(false);
if (String(config.ssid)!="")
{
if (!config.dhcp)
{
WiFi.config(IPAddress(config.IP[0],config.IP[1],config.IP[2],config.IP[3] ),
IPAddress(config.Gateway[0],config.Gateway[1],config.Gateway[2],config.Gateway[3] ),
IPAddress(config.Netmask[0],config.Netmask[1],config.Netmask[2],config.Netmask[3] ),
IPAddress(8,8,8,8)
);
}
if (WiFi.status() != WL_CONNECTED)
{
WiFi.begin(config.ssid.c_str(), config.password.c_str());
int tryConnect=0;
while(WiFi.waitForConnectResult() != WL_CONNECTED && tryConnect<3) {
tryConnect++;
delay(250);
}
}
}
}
void ConfigureWifi()
{
ESP.eraseConfig();
WiFi.softAPdisconnect();
WiFi.disconnect();
WiFi.mode(WIFI_AP_STA);
if (AdminEnabled)
{
ConfigureAP();
ConfigureCaptivePortal();
}
ConnectToWifi();
wifiHasConnected=WifiHasConnected();
}
Ezen kívül ticker fél percenként (vagy csatlakozási esmény) ellenőrzi a connectet (WifiHasConnected), és ha nincs, újraconnectálok manuálisan.
Még egy apróság, amin el lehet csúszni: Tickerrel közvetlenül ne indíts semmilyen hosszú műveletet, pl. wifi kezelést!
A Tickerrel csak olyan metódust hívj, ami bebillent pl. egy falget (reconnectToWifi=true), és ezt a flaget a loopban vizsgálva hívd meg a reconnectet.
Re: ESP8266 - AP_STA mód fagyás(?)
Igen ilyenekre aszinkron szervernél sem árt figyelni, de hát ez a lényegük.A Tickerrel csak olyan metódust hívj, ami bebillent pl. egy falget (reconnectToWifi=true), és ezt a flaget a loopban vizsgálva hívd meg a reconnectet.
Re: ESP8266 - AP_STA mód fagyás(?)
Ja a lényeget kihagytam, hogy nálam a AP-STA és STA közötti váltogatást bírja a Ticker. Mondjuk ez nincs egy hónapos tapasztalat de kb napi 2 váltogatás van benne az összes egységnek.
Viszont beállítottam egy sima AP kapcsolatot és az nem dobja el eddig a rácsatlakozott klienst (eddig 20 perc után ). Ha ezt stabilan hozza akkor van remény
Viszont beállítottam egy sima AP kapcsolatot és az nem dobja el eddig a rácsatlakozott klienst (eddig 20 perc után ). Ha ezt stabilan hozza akkor van remény
Re: ESP8266 - AP_STA mód fagyás(?)
Sziasztok!
Én is ezzel a problémával kűzdök 2 napja... annyi különbséggel, hogy nálam tegnap meg is halt egy chip... mármint a wifi része... pont akkor amikor előjött A HIBA ... vagyis rá pár percre...
végigolvastam a fórumot, de sajnos a hiba konkrét forrására még nem jöttem rá... és lehet, hogy nem is fogok, mert haladni kell... így egy áthidaló megoldást hoztam össze, amit a mellékelt mintakód tartalmaz.
tudja amit kell : felcsatlakozik, ellenőriz, újracsatlakozik, meg minden.. a lényeg, hogy nem akad le (legalább is nem sokáig)... elvileg... még nem nagyon teszteltem, de elsőre úgy tűnik működik.
Én is ezzel a problémával kűzdök 2 napja... annyi különbséggel, hogy nálam tegnap meg is halt egy chip... mármint a wifi része... pont akkor amikor előjött A HIBA ... vagyis rá pár percre...
végigolvastam a fórumot, de sajnos a hiba konkrét forrására még nem jöttem rá... és lehet, hogy nem is fogok, mert haladni kell... így egy áthidaló megoldást hoztam össze, amit a mellékelt mintakód tartalmaz.
tudja amit kell : felcsatlakozik, ellenőriz, újracsatlakozik, meg minden.. a lényeg, hogy nem akad le (legalább is nem sokáig)... elvileg... még nem nagyon teszteltem, de elsőre úgy tűnik működik.
Kód: Egész kijelölése
#include <ESP8266WiFi.h>
#include <Ticker.h>
#define STA_SSID "Cartooning1"
#define STA_PASS "pomikacinke"
#define AP_SSID "esp"
#define AP_PASS "12345678"
Ticker flipper;
boolean _STAok=false;
void WifiData();
boolean TestSTA(){
Serial.print(F("TestSTA - "));
for (int i=0;i<10;i++){
if (WiFi.status() != WL_CONNECTED) {
if (i == 9) {
Serial.println(F("Sikertelen STA csatlakozás"));
_STAok=false;
return false;
}
delay(500);
Serial.print(".");
}else{
Serial.println(F("Sikeres STA csatlakozás"));
_STAok=true;
return true;
}
}
}
void setup() {
Serial.begin(115200);
delay(10);
Serial.print(F("\n\n"));
Serial.print(F("ESP STA teszt\n\n"));
Serial.print(F("Wifi csatlakozás: ->"));
// előzőleg esetleg beragadt AP mód törlése
WiFi.mode(WIFI_OFF);
WiFi.disconnect();
// automatikus STA csatlakozás bekapcsolása
WiFi.setAutoConnect(true);
delay(100);
WiFi.begin(STA_SSID, STA_PASS);
if(!TestSTA()){
WiFi.mode(WIFI_OFF);
WiFi.disconnect();
}
WiFi.softAP(AP_SSID, AP_PASS, 4, 1);
WiFi.mode(WIFI_AP_STA);
flipper.attach(5, Verify_STA_AP);
}
void loop() {
delay(0);
}
void Verify_STA_AP(){
Serial.print(F("Verify_STA_AP - "));
if (_STAok && !TestSTA()){
WiFi.mode(WIFI_OFF);
WiFi.disconnect();
WiFi.softAP(AP_SSID, AP_PASS, 4, 1);
}else if (!_STAok && TestSTA()){
WiFi.mode(WIFI_OFF);
WiFi.disconnect();
WiFi.begin(STA_SSID, STA_PASS);
WiFi.softAP(AP_SSID, AP_PASS, 4, 1);
}
}