क्या ESP8266 किसी तरह वाईफाई एक्सेस डेटा को याद रखता है?


10

आज मैंने एक ESP8266 के साथ कुछ छेड़छाड़ की, ओटीए की कोशिश की और एक वेबसर्वर लिखा। एक त्रुटि खोजने के लिए, मैंने स्केच को केवल निम्न पंक्तियों में घटाया:

#include <ESP8266WebServer.h>

ESP8266WebServer server(80);

void setup() {
  Serial.begin(115200);
  server.on("/", []() {
    Serial.println("Sending response...");
    server.send(200, "text/plain", "Hi there!");
  });
  server.begin();
}

void loop() {
  server.handleClient();
}

ध्यान दें कि Wifi नेटवर्क से कनेक्ट करने के लिए कोई कोड नहीं है। हालाँकि, चिप अभी भी मेरे स्थानीय, WPA2-सुरक्षित, हर बूट पर नेटवर्क से जुड़ती है। मैं चिप को पिंग कर सकता हूं, मेरे ब्राउज़र को "हाय वहाँ" मिल सकता है! http के माध्यम से संदेश, सीरियल संदेश मुद्रित हो जाता है।

यह कैसे हो सकता है? क्या ESP8266 किसी भी तरह वाईफाई जानकारी को बरकरार रखता है, शायद कुछ पुराने ओटीए डेटा के कारण जो पूरी तरह से ओवरराइट नहीं किया गया था?

मैं platformio का उपयोग कर रहा हूँ। यहाँ मेरा पूरा platformio.ini है:

[env:d1_mini]
platform = espressif8266
board = d1_mini
framework = arduino

मैंने संकलन और अपलोड लॉग यहाँ पोस्ट किया: https://pastebin.com/BtGrFZiu

जवाबों:


12

हां, सामान्य रूप से अंतिम वाईफाई क्रेडेंशियल फ्लैश में सेव किया जाएगा और ईएसपी 8266 इस डेटा को बूटअप पर लोड करता है और अंतिम ज्ञात वाईफाई को फिर से कनेक्ट करता है। Https://github.com/esp8266/Arduino/issues/2843#issuecomment-334640100 देखें :

एसडीके फ्लैश के क्षेत्र में वाईफाई क्रेडेंशियल्स सहित कुछ जानकारी संग्रहीत करता है।

अपडेट के बाद त्वरित स्टार्टअप की अनुमति के लिए उस सेक्टर को फ्लैशिंग के बीच रखा जाता है। बूट पर, आपके स्केच को निष्पादित करने से पहले, एसडीके वाईफाई क्रेडेंशियल्स को पुनः प्राप्त करेगा और एक त्वरित कनेक्शन का प्रयास करेगा।

इस व्यवहार को https://github.com/esp8266/Arduino/blob/master/doc/esp8266wifi/station-class.rst#setautoconnectWiFi.setAutoConnect(autoConnect) में दस्तावेज के रूप में उपयोग करके नियंत्रित किया जा सकता है । यह बदले में एस्प्रेसिफ एसडीके फ़ंक्शन ( एपीआई संदर्भ ) कहता हैwifi_station_set_auto_connect

यहां छवि विवरण दर्ज करें

संक्षेप में: यह सामान्य व्यवहार है। यदि आप यह सुनिश्चित करना चाहते हैं कि आपका ESP8266 किसी भी वाईफाई से कनेक्ट नहीं होता है जब तक कि आप इसे स्पष्ट रूप से नहीं बताते हैं, WiFi.setAutoConnect(autoConnect)तो शुरुआत में कॉल करें ।

संपादित करें: फर्मवेयर कोड के भीतर से, आप उपयोग कर सकते हैं system_restore। प्रलेखन का कहना है कि यह वाईफाई से संबंधित डेटा को रीसेट करेगा। इससे पिछली सेटिंग्स को नष्ट कर देना चाहिए। फ़ंक्शन को Argino-ESP8266 के भीतर https://github.com/esp8266/Arduino/blob/master/tools/sdk/include/user_interface.h से शामिल किया जा सकता है । मैंने खुद यह कोशिश नहीं की है और न ही मैं यह कह सकता हूं कि यह वास्तव में फ्लैश से सुरक्षा-महत्वपूर्ण जानकारी मिटा देता है।

एबीसी

या, जैसा कि आपने भी पता लगाया है, पूरे फ्लैश को हार्ड-मिटाने से पूरी निश्चितता के साथ वाईफाई डेटा को शुद्ध किया जाएगा। यह विकल्प के esptool.pyसाथ प्रयोग करके प्राप्त किया जा सकता है erase_flash, जैसे python esptool.py -p COM6 erase_flash। फिर आप नए फर्मवेयर को फ्लैश कर सकते हैं जो पिछली वाईफाई सेटिंग्स का उपयोग नहीं करेंगे (लेकिन संभवतः डिफ़ॉल्ट एक्सेस प्वाइंट को फिर से खोलेंगे)।

फिर वहाँ भी है ESP.eraseConfigजो केवल संबंधित फ़्लैश क्षेत्रों को मिटा देता है।


धन्यवाद। क्या उन क्रेडेंशियल्स को मिटाने का एक तरीका है जो पहले फ्लैश से सेट किए गए थे? संपादित करें: यह पाया गया कि यह एसप्टल के साथ संभव है: esp8266.com/viewtopic.php?f=32&t=8204
Geier

1
@ जीयर अपडेट किया गया।
मैक्सिमिलियन गेरहार्ट

1
WiFi.disconnect () याद किए गए क्रेडेंशियल्स को भी हटा देता है
जुराज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.