ESP8266 Arduino - szerver újraindítás vagy ön Reset
Re: ESP8266 Arduino - szerver újraindítás vagy ön Reset
Szerintem nincs. Legalább is ESP Arduino vonalon.
http://links2004.github.io/Arduino/index.html
https://github.com/esp8266/Arduino
http://esp8266.github.io/Arduino/versio ... ystem.html
https://github.com/esp8266/Arduino/releases
https://github.com/esp8266/Arduino/blob ... er-library
http://www.esp8266.com/viewforum.php?f=33
http://links2004.github.io/Arduino/index.html
https://github.com/esp8266/Arduino
http://esp8266.github.io/Arduino/versio ... ystem.html
https://github.com/esp8266/Arduino/releases
https://github.com/esp8266/Arduino/blob ... er-library
http://www.esp8266.com/viewforum.php?f=33
Re: ESP8266 Arduino - szerver újraindítás vagy ön Reset
Hogy egy kicsit a AP név váltásra is visszatérjek.
Ez a forma is működik.
Ez a forma is működik.
Kód: Egész kijelölése
WiFi.softAPdisconnect(true);
delay(100);
WiFi.mode(WIFI_AP);
WiFi.softAP(s.c_str(), AP_PASS, 4);
Re: ESP8266 Arduino - szerver újraindítás vagy ön Reset
Szép kis gyűjtemény, köszi.
Re: ESP8266 Arduino - szerver újraindítás vagy ön Reset
Sziasztok!
Két esp között próbálok kapcsolatot létrehozni egyenlőre sikertelenül.
AZ egyik AP a másik STA.
Az STA látja az AP-t, wifi kapcsolat létre is ön, de mint szerver kliens kapcsolat nem jön össze.
Viszont ha az egyszer AP-nak beállított modul tápot kap rögtön sugározni kezd, hiába fut rajta csak egy led villogtató program.
Ez a modul már nem tud a ruteremhez sem csatlakozni olyan kóddal ami az elött simán ment.
Van olyan megoldás hogy minden újra programozáskor tiszta lappal induljon, és ne legyenek benne a korábbi beállítások?
Két esp között próbálok kapcsolatot létrehozni egyenlőre sikertelenül.
AZ egyik AP a másik STA.
Az STA látja az AP-t, wifi kapcsolat létre is ön, de mint szerver kliens kapcsolat nem jön össze.
Viszont ha az egyszer AP-nak beállított modul tápot kap rögtön sugározni kezd, hiába fut rajta csak egy led villogtató program.
Ez a modul már nem tud a ruteremhez sem csatlakozni olyan kóddal ami az elött simán ment.
Van olyan megoldás hogy minden újra programozáskor tiszta lappal induljon, és ne legyenek benne a korábbi beállítások?
Re: ESP8266 Arduino - szerver újraindítás vagy ön Reset
Ha szerver megvan és eléred webes böngészőről, és az ott futtatott oldalon mondjuk ajaxal tudsz lekérni adatot az ESP-ről akkor már csak egy hasonló kliens kell az ESP-re.
Meghívása
ESP rögzíti az előző kapcsolódási módot azt törölni kell ha nem szeretnéd használni.
Ezt pedig pont kicsit lejjebb tettem közzé, hogy lehet az AP módot kikapcsolni.
Következő kód azt csinálja magpróbál STA kapcsolatot felvennia routerrel ha ne jön össze akkor AP-STA (ilyenkor be lehet állítani a wifi csatlakozási adatokat akár) közben ha mégis sikerül STA mód akkor kikapcsolja az AP-STA módot és csak STA lesz még meg nem szakad megint.
Simán ezt teszem a loop ciklusba pár másodpercenként meghívva.
Itt kb látszik a Wifi mód váltogatás.
Régen azt tréfált meg hogy a egy új ESP modul beállítása WiFi.setAutoConnect(false); volt és nem csatlakozott. Pontosabban akkor még nem tudtam hogy van ilyen csak azt láttam hogy ha egyszer elveszti a kapcolatot többé nem kapcsolódik a routerhez.
Estig nem vagyok addig remélem sikerül az infókból gazdálkodni.
Kód: Egész kijelölése
void client_read(IPAddress *ip, String *send_text) {
WiFiClient client;
if (!client.connect(*ip, 80)) {
//Serial.println("connection failed");
*send_text = "failed";
return;
}
client.print(
String("GET ") + *send_text + " HTTP/1.1\r\n" + "Host: " + "\r\n"
+ "Connection: close\r\n\r\n");
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
//Serial.println(">>> Client Timeout !");
client.stop();
*send_text = "failed";
return;
}
}
while (client.available()) {
*send_text = client.readStringUntil('\r');
//Serial.print(line);
}
}
Kód: Egész kijelölése
IPAddress ip = { 192, 168, x, x }; // szerver ESP címe
String send_text = F("/set_k?k=0"); // üzenet
client_read(&ip, &send_text); // &send_text = szerver válasz üzenete ebben jön vissza
Serial.print(send_text);
Ezt pedig pont kicsit lejjebb tettem közzé, hogy lehet az AP módot kikapcsolni.
Következő kód azt csinálja magpróbál STA kapcsolatot felvennia routerrel ha ne jön össze akkor AP-STA (ilyenkor be lehet állítani a wifi csatlakozási adatokat akár) közben ha mégis sikerül STA mód akkor kikapcsolja az AP-STA módot és csak STA lesz még meg nem szakad megint.
Simán ezt teszem a loop ciklusba pár másodpercenként meghívva.
Itt kb látszik a Wifi mód váltogatás.
Régen azt tréfált meg hogy a egy új ESP modul beállítása WiFi.setAutoConnect(false); volt és nem csatlakozott. Pontosabban akkor még nem tudtam hogy van ilyen csak azt láttam hogy ha egyszer elveszti a kapcolatot többé nem kapcsolódik a routerhez.
Kód: Egész kijelölése
/**
*
* const char* sta_ssid
* const char* sta_psk
* byte* sta_ip
* const char* ap_ssid
* const char* ap_psk
* byte* ap_channel Sikertelen STA csatlakozás esetén érvényes,
* minden más esetben az STA kapcsolat catornája
* lesz az AP csatorna száma is.
*
* ha még nem volt STA csatlakozás
* WiFi.status -> 6
* WiFi.Mode -> 3
*/
void STA_AP_STA(const char* sta_ssid, const char* sta_psk, byte* sta_ip,
const char* ap_ssid, const char* ap_psk, byte* ap_channel) {
IPAddress f_ip = WiFi.localIP();
// Serial.print("WiFi.status -> ");
// Serial.println(WiFi.status());
// Serial.print("WiFi.Mode -> ");
// Serial.println(WiFi.getMode());
// Serial.println();
// ha STA módban van IP ellenőrzés
if (WiFi.status() == 3) { // ha STA módban van
// ha nem fix IP cím és nem 0 akkor beállítja a fix IP címet
if (f_ip[3] != *sta_ip and *sta_ip != 0) {
f_ip[3] = *sta_ip;
WiFi.config(f_ip, WiFi.gatewayIP(), WiFi.subnetMask());
// WifiData();
}
//Serial.println("STA OK");
if (WiFi.getMode()!= 3) {
WiFi.softAPdisconnect(true);
WiFi.mode(WIFI_STA);
return;
}
} else { // ha megszűnt az STA kapsolat
// AP-STA mód beállítása ha még nincs beállítva
if (WiFi.getMode() != WIFI_AP_STA) {
WiFi.mode(WIFI_AP_STA);
WiFi.softAP(ap_ssid, ap_psk, *ap_channel, 0);
}
}
// ha 1 a status akkor már próbált csatlakozni de nem sikerült.
// innen már magától csatlakozik WiFi.setAutoConnect(true); miatt nem kell nekünk
if (WiFi.status() == 1) {
return;
}
// STA csatlakozás indítása, beállítása
WiFi.softAPdisconnect(true);
WiFi.mode(WIFI_STA);
WiFi.setAutoConnect(true);
WiFi.begin(sta_ssid, sta_psk);
byte b = 0;
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
// 10 x próbál meg csatlakozni AP_STA módba lép
b++;
if (b > 10) {
WiFi.mode(WIFI_AP_STA);
return;
}
}
// fix IP cím beállítása ha nem 0
if (*sta_ip != 0) {
f_ip = WiFi.localIP();
f_ip[3] = *sta_ip;
WiFi.config(f_ip, WiFi.gatewayIP(), WiFi.subnetMask());
}
}
Estig nem vagyok addig remélem sikerül az infókból gazdálkodni.
Re: ESP8266 Arduino - szerver újraindítás vagy ön Reset
Köszi Sanyi!
Átnézem ezeket, majd írom mire mentem.
Az előbb sikerült a kapcsolat, a hiba okát még nem értem, de sikerült megkerülni.
Köszi Szabolcs
Átnézem ezeket, majd írom mire mentem.
Az előbb sikerült a kapcsolat, a hiba okát még nem értem, de sikerült megkerülni.
Köszi Szabolcs
Re: ESP8266 Arduino - szerver újraindítás vagy ön Reset
Sziasztok!
Újabb kérdésem lenne,
Ha az esp modult AP módba állítom, van e arra lehetőség hogy én határozzam meg mi legyen a modul ip címe?
Köszi Szabolcs.
Újabb kérdésem lenne,
Ha az esp modult AP módba állítom, van e arra lehetőség hogy én határozzam meg mi legyen a modul ip címe?
Köszi Szabolcs.
Re: ESP8266 Arduino - szerver újraindítás vagy ön Reset
A modul címe AP-re kötött. Nem átírható.
Re: ESP8266 Arduino - szerver újraindítás vagy ön Reset
Találtam egy ilyen megoldást:
IPAddress ip(192, 168, 2, 10);
IPAddress SubnetMask(255, 255, 255, 0);
WiFi.softAPConfig(ip, ip, SubnetMask);
WiFi.softAP(AP_SSID, AP_PASS);
Ezen az ip-n elérem másik esp ről vagy laptopról is.
Ez így jó lehet, vagy félreértek valamit?
IPAddress ip(192, 168, 2, 10);
IPAddress SubnetMask(255, 255, 255, 0);
WiFi.softAPConfig(ip, ip, SubnetMask);
WiFi.softAP(AP_SSID, AP_PASS);
Ezen az ip-n elérem másik esp ről vagy laptopról is.
Ez így jó lehet, vagy félreértek valamit?
Re: ESP8266 Arduino - szerver újraindítás vagy ön Reset
Vagy ha mégis akkor pld. így.
Kód: Egész kijelölése
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
char ap_ssid[] = "ESP";
char ap_pass[] = "12345678";
IPAddress ap_ip(192, 168, 4, 12);
IPAddress ap_sub(255, 255, 255, 0);
int ap_channel = 4;
ESP8266WebServer server(80);
void get_wifi() {
Serial.print(F("**********************************\n"));
Serial.print(F("* STA MAC: "));
Serial.println(WiFi.macAddress()); // ESP MAC címmét adja vissza
Serial.print(F("* STA localIP: "));
Serial.println(WiFi.localIP()); // STA IP cím
Serial.print(F("* AP MAC: "));
Serial.println(WiFi.softAPmacAddress()); // ESP MAC címmét adja vissza
Serial.print(F("* AP localIP: "));
Serial.println(WiFi.softAPIP()); // IP cím
Serial.print(F("* wifi Status: "));
Serial.println(WiFi.status());
Serial.print(F("* wifi STA SSID: "));
Serial.println(WiFi.SSID());
Serial.print(F("* wifi STA psk: "));
Serial.println(WiFi.psk());
Serial.print(F("* wifi STA RSSI: "));
Serial.println(WiFi.RSSI());
Serial.print(F("* wifi getAutoConnect(): "));
Serial.println(WiFi.getAutoConnect());
Serial.print(F("* wifi waitForConnectResult(): "));
Serial.println(WiFi.waitForConnectResult());
Serial.print(F("* wifi Mode: "));
Serial.println(WiFi.getMode()); // Wifi mode WIFI_OFF = 0, WIFI_STA = 1, WIFI_AP = 2, WIFI_AP_STA = 3
Serial.print(F("*********\n"));
WiFi.printDiag(Serial);
Serial.print(F("**********************************\n"));
}
/***************************/
void setup(void) {
Serial.begin(115200);
delay(10);
Serial.println();
WiFi.disconnect();
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(ap_ip, ap_ip, ap_sub);
WiFi.softAP(ap_ssid, ap_pass, ap_channel);
get_wifi();
server.on("/", []() { // ip cím hez tartozó html oldal megrajzolása
server.send ( 200, "text/plain", "Sikeres AP kapcsolat teszt oldal" );
});
server.begin();
}
/***************************/
void loop(void) {
server.handleClient();
}
Re: ESP8266 Arduino - szerver újraindítás vagy ön Reset
Jól érted, és gyorsabb is voltál.
Re: ESP8266 Arduino - szerver újraindítás vagy ön Reset
Ezzel nem azt írhtod át, amivel a helyi hálózaton lehet?
Amikor önálló (router nélküli), akkor nem kötött?
Amikor önálló (router nélküli), akkor nem kötött?
Re: ESP8266 Arduino - szerver újraindítás vagy ön Reset
Nem kötött.
STA módban amikor routerhez csatlakozol akkor ezt kell használni
Itt nem mindegy mikor adod meg az IP címet mert ha jól emlékezem akkor pld a gmail levelező nem működik ha ebben a formában kap egyedi IP címet az ESP, de ha a routerhez csatlakozás után kap fix IP címet akkor szépen működik.
ami a következő képen alakul
STA módban amikor routerhez csatlakozol akkor ezt kell használni
Kód: Egész kijelölése
WiFi.begin(ssid, password);
WiFi.config(ip, gateway, subnet);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected! IP address: ");
Serial.println(WiFi.localIP());
ami a következő képen alakul
Kód: Egész kijelölése
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
WiFi.config(ip, gateway, subnet);
Serial.println("");
Serial.print("Connected! IP address: ");
Serial.println(WiFi.localIP());
Re: ESP8266 Arduino - szerver újraindítás vagy ön Reset
Nekem mindkét változatra szükségem van.
Az az esp amin a szerver fut AP_STA módban van. A DHCP-től kér fix IP-t. Ehhez csatlakozik a többi kliensként a ruteren keresztül.
Ha a ruter megszűnik akkor direkt kapcsolódnak, majd lehetőség szerint vissza. Ugyanerre akarom állítani az AP mód IP címét hogy kliens-szerver kapcsolatnál ne kelljen külön kezelni. Hogy ez okoz e ütközést, az még tesztelésre vár.
Most azon vesződők hogy kliens oldalon az autóconnekt mindig az elsődleges (ruter) kapcsolat irányába menjen.
Az az esp amin a szerver fut AP_STA módban van. A DHCP-től kér fix IP-t. Ehhez csatlakozik a többi kliensként a ruteren keresztül.
Ha a ruter megszűnik akkor direkt kapcsolódnak, majd lehetőség szerint vissza. Ugyanerre akarom állítani az AP mód IP címét hogy kliens-szerver kapcsolatnál ne kelljen külön kezelni. Hogy ez okoz e ütközést, az még tesztelésre vár.
Most azon vesződők hogy kliens oldalon az autóconnekt mindig az elsődleges (ruter) kapcsolat irányába menjen.
Re: ESP8266 Arduino - szerver újraindítás vagy ön Reset
Hajdanán nekem is volt efféle elképzelésem hogy ugyanazt a ssid és IP címet kapja az esp mint a router és ha nincs router akkor az esp veszi át a szerepét. Aztán erre nem volt akkora szükség mégsem és így már halva született, nem lett kidogozva.
Az hogy ide oda váltogat STA és AP-STA mód között a router elérhetőségtől függően, arra már közzé tettem az én megoldásom nemrég. Csak ott az AP maradt a gyári IP címen.
Az hogy ide oda váltogat STA és AP-STA mód között a router elérhetőségtől függően, arra már közzé tettem az én megoldásom nemrég. Csak ott az AP maradt a gyári IP címen.