Jump to content
ELFORUM - Forumul electronistilor

zvonacfirst

Membru cunoscut
  • Posts

    1,002
  • Joined

  • Last visited

Profile Fields

  • Location
    Bucuresti

Recent Profile Visitors

5,250 profile views

zvonacfirst's Achievements

Grand Master

Grand Master (14/14)

  • Conversation Starter
  • Very Popular Rare
  • Reacting Well
  • Week One Done
  • Dedicated

Recent Badges

  1. Posibil ca vreodată să schimb modalitatea de conectare la net. Poate îmi instalez propriul router sau las un modem mobil la locatie, cine stie? Codul este pregătit să pot modifica credentialele (mie nu-mi suna aiurea, ci foarte cuprinzător, prefer așa în loc de user și parolă) fără să port laptopul cu mine. Apăs un buton și rezolv de pe telefon.
  2. Multumesc tuturor. Rezolvarea se regaseste in codul modificat postat mai jos. Acum functioneaza exact asa cum am exprimat cerintele din postarea mea de mai sus. * daca la pornire credentialele NU SUNT salvate in eeprom porneste serverul web. Cu WiFi Manager sunt introduse credentialele si sunt salvate in eeprom. * daca la pornire credentialele SUNT salvate in eeprom, se incearca conectarea la WiFi * dupa ce s-a conectat la wifi, apasarea butonului conectat la pinul D7 duce la stergerea credentialelor salvate în EEPROM si apoi la resetare -> se reia ciclul * daca la pornire credentialele SUNT salvate in eeprom DAR conectarea la WiFi esueaza -> SERVERUL WEB NU PORNESTE si incearca reconectarea pana cand reuseste Concluzie: * serverul web si interfata WiFi Manager pornesc numai daca: - nu exista credentialele de conectare la WiFi stocate in eeprom (de ex. la prima pornire) - este apasat butonul conectat la pinul D7 (GPIO13). Apasarea butonului duce la stergerea datelor din eeprom si la resetarea Wemos-ului => ciclul se reia Bucla de reconectare care este acum in cod functioneaza practic la infinit, asa ca riscul de a porni interfata WiFi Manager este eliminat. Daca routerul WiFi nu este disponibil cateva zile (apare un blocaj, cum de altfel cred ca s-a intamplat in descrierea mea initiala), la prima revenire a retelei se rezolva si conectarea. #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <WiFiManager.h> #include <EEPROM.h> // Definirea pinului pentru buton const int buttonPin = 13; // Definirea userului si parolei pentru serverul web const char* www_username = "BereRece"; const char* www_password = "****"; // Initializarea serverului web pe portul 80 ESP8266WebServer server(80); // Functia de autentificare bool is_authenticated() { if (!server.authenticate(www_username, www_password)) { server.requestAuthentication(); return false; } return true; } void handleRoot() { if (!is_authenticated()) { return; } server.send(200, "text/plain", "Welcome, you are authenticated!"); } // Functia pentru stergerea credentialelor si resetarea Wemos D1 Mini void handleReset() { if (digitalRead(buttonPin) == LOW) { Serial.println("Button pressed, resetting WiFi credentials."); WiFiManager wifiManager; wifiManager.resetSettings(); delay(1000); ESP.restart(); } } // Functia de initializare a serverului web void startWebServer() { server.on("/", handleRoot); server.begin(); Serial.println("Web server started."); } void setup() { Serial.begin(115200); // Initializarea pinului pentru buton pinMode(buttonPin, INPUT_PULLUP); // Initializarea EEPROM EEPROM.begin(512); // Verificarea daca exista credentiale salvate WiFiManager wifiManager; bool credentialsSaved = WiFi.SSID().length() > 0; // Conditie 1: Daca nu exista credentiale salvate, porneste WiFiManager if (!credentialsSaved) { Serial.println("No saved credentials, starting WiFiManager."); wifiManager.autoConnect("WemosAP"); if (WiFi.status() == WL_CONNECTED) { Serial.println("WiFi connected after configuration."); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } startWebServer(); // Porneste serverul web pentru configurare } else { // Condiție 2: Daca exista credentiale, incearca sa se conecteze la WiFi Serial.println("Connecting to saved WiFi."); WiFi.begin(); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); // Verifica daca butonul este apasat pentru resetarea credentialelor if (digitalRead(buttonPin) == LOW) { Serial.println("Button pressed during connection attempt, resetting WiFi credentials."); wifiManager.resetSettings(); delay(1000); ESP.restart(); } } Serial.println("\nWiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } } void loop() { if (WiFi.status() == WL_CONNECTED) { // Daca serverul web este pornit, trateaza cererile server.handleClient(); // Verifica daca butonul este apasat pentru resetarea credentialelor handleReset(); } else { // Daca nu este conectat la WiFi, verifica daca butonul este apasat if (digitalRead(buttonPin) == LOW) { Serial.println("Button pressed, starting web server for configuration."); startWebServer(); } } }
  3. Mulțumesc @Bandi Szasz. Nu trebuie recitit tot topicul ci doar ultima mea postare. După o pană de curent, dacă nu se poate conecta la WiFi, chiar daca credențialele sunt scrise in eeprom este pornit serverul web care așteaptă să mă conectez la el pentru a accesa interfața WiFi Manager iar accesarea online devine imposibilă. Așa cum am scris în explicațiile de la începutul codului, eu aș vrea să pornească serverul numai dacă credentialele pentru conectare la WiFi nu au fost salvate anterior în eeprom sau la apăsarea butonului de pe pinul GPIO13. Deci dacă găsește eeprom-ul gol pornește serverul, dacă nu este gol reîncearcă în mod repetat conectarea la WiFi cu credențialele pe care le găsește în eeprom.
  4. Va salut. Redeschid acest topic pentru ca ma lovesc de o problema pe care nu stiu sa o rezolv si am nevoie de ajutor. Am in provincie un Wemos cu un server web si cu WiFi Manager pentru modificarea si salvarea credentialelor pentru retea. Reteaua WiFi este a unui vecin, sunt conectat cu acordul lui dar nu am acces la configurarea ei. Problema mea este legata de faptul ca nu reusesc inhibarea pornirii serverului web dupa restart (o pana de curent) daca Wemos-ul nu reuseste sa se conecteze la WiFi (din diferite motive). De ce vreau acest lucru: Wemos-ul este la 100 de km distanta. La un moment dat, probabil ca la o cadere de curent, nu am mai functionat si l-am gasit cu web serverul pornit. A trebuit sa merg pana acolo sa ii fac reset, ceea ce nu este convenabil. Cand am ajuns am constata ca reteaua WiFi era functionala dar probabil ca isi revenise dupa expirarea timeoutului de 30 de secunde pe care il aveam in cod. wifiManager.setConnectTimeout(30); Am incercat sa gasesc o solutie, asa cum vedeti in codul urmator. Am descris ce am reusit si ce nu am reusit sa rezolv, sper sa fie suficient de clar. Bineinteles ca as putea sa ii dau un timeout mai mare in care sa tot incerce sa se conecteze, nu stiu cat de lung trebuie sa fie. Multumesc in avans. /* --------------------------------------------------------------------------------------------- Ce merge: * daca la pornire credentialele NU SUNT salvate in eeprom trebuie sa porneasca serverul web. Cu WiFi Manager sunt introduse credentialele care sunt salvate in eeprom. * daca la pornire credentialele SUNT salvate in eeprom, se incearca conectarea la wifi * dupa ce s-a conectat la wifi, apasarea butonului conectat la pinul D7 duce la stergerea credentialelor salvate în EEPROM si apoi la resetare -> se reia ciclul --------------------------------------------------------------------------------------------- Ce nu am reusit sa fac sa mearga: * conectarea securizata la serverul web cu userul si parola definite * daca la pornire credentialele SUNT salvate in eeprom DAR conectarea la WiFi esueaza -> SERVERUL WEB NU TREBUIE SA PORNEASCA, trebuie sa incerce reconectarea pana cand reuseste --------------------------------------------------------------------------------------------- */ #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <WiFiManager.h> #include <EEPROM.h> // Definirea pinului pentru buton const int buttonPin = 13; // Definirea userului si parolei pentru conectarea la serverul web const char* www_username = "BereRece"; const char* www_password = "****"; // Initializeaza serverul web pe portul 80 ESP8266WebServer server(80); // Functia de autentificare bool is_authenticated() { if (!server.authenticate(www_username, www_password)) { server.requestAuthentication(); return false; } return true; } void handleRoot() { if (!is_authenticated()) { return; } server.send(200, "text/plain", "Welcome, you are authenticated!"); } // Functia pentru stergerea credentialelor si restartarea Wemos D1 Mini void handleReset() { if (digitalRead(buttonPin) == LOW) { Serial.println("Button pressed, resetting WiFi credentials."); WiFiManager wifiManager; wifiManager.resetSettings(); delay(1000); ESP.restart(); } } // Functia de initializare a serverului web void startWebServer() { server.on("/", handleRoot); server.begin(); Serial.println("Web server started."); } void setup() { Serial.begin(115200); // Initializarea pinului pentru buton pinMode(buttonPin, INPUT_PULLUP); // Initializarea EEPROM EEPROM.begin(512); // Verifica daca exista credentiale salvate WiFiManager wifiManager; if (!WiFi.SSID()) { Serial.println("No saved credentials, starting WiFiManager."); wifiManager.autoConnect("WemosAP"); if (WiFi.status() == WL_CONNECTED) { Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); startWebServer(); } } else { Serial.println("Connecting to saved WiFi."); WiFi.begin(); if (WiFi.waitForConnectResult() == WL_CONNECTED) { Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); startWebServer(); } else { Serial.println("Failed to connect to saved WiFi. Starting WiFiManager."); wifiManager.autoConnect("WemosAP"); } } } void loop() { if (WiFi.status() == WL_CONNECTED) { server.handleClient(); handleReset(); // Verifica daca butonul este apasat pentru // resetarea credentialelor si pornirea serverului web } }
  5. Sa știi ca apa nu este asa de agresiva la Ocna Sibiului ca cea de la Ocnele Mari sau la Ocna Sugatag. De exemplu eu ma barbieresc în fiecare dimineață și nu fac spume când întru în apa. În schimb la Ocnele Mari, dacă ai făcut greșeală asta o data, în mod clar nu mai greșești și a doua oara. Diferența între apa din lacurile de la Ocna Sibiului și celelalte doua locații amintite, este ca la cele din urma apa este combinata cu sare din saline, adică nu are un echilibru natural cum este la Ocna Sibiului unde salinitatea creste progresiv cu adâncimea.
  6. Oarecum legat de subiect, deși nu scriu despre o salină. Eu și soția suntem efectiv îndrăgostiți de Ocna Sibiului, sau de Marea (Litoralul) Ardealului cum i se mai spune. De mai bine de 15 ani, ne programăm în fiecare an câte două sejururi de o săptămână, în iunie și în septembrie. Chiar și în pandemie am fost. Sunt 12 lacuri cu apă sărată, inclusiv unul cu nămol, formate prin prăbușirea unor exploatări de sare în forma de clopot, ocne de sare. Salinitate este diferită de la un lac la altul. Noi preferăm lacul Avram Iancu (Ocna pustie) care are o adâncime de cca 134m și o salinitate de 320g sare/litru de apă, dar mai mergem și la Lacul Brâncoveanu cu adincime de cca 80m și salinitate de cca 420g sare/litrul de apă. La fiecare lac apă este în contact cu masivul de sare. De fapt sarea este vizibila într-un mod impresionant în malurile lacurilor. În afara efectelor terapeutice ale băilor sărate, noi mergem de plăcere, ne simțim bine și ne relaxăm mai ceva ca la mare.
  7. zvonacfirst

    Donaţii

    As vrea eu masina de paine. Mulțumesc.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines