Betriebsparameter beim ESP32 speichern?

Hallo, mein Temperaturlogger mit WLAN und FTP-Server-Speicherung ist soweit fertig.

Ich möchte nun die Daten für das Login zum WLAN-Login aus einem Speicher beziehen. Das Gerät wird an wechselnden Orten betrieben und damit muss das WLAN-Login jeweils angepasst werden. Ohne jeweils mit der IDE da vor Ort rumzustricken.

Ich stelle mir einen Zugang per Bluetooth per Bluetooth-Seriell-App vor. Eine Testroutine zur Ausgabe der Daten per BT habe ich schon mal gemacht. Aber jetzt bräuchte ich es andersrum. Also mit dem Handy die BT-Verbindung aufbauen, einen Konfig-String eintippen und herüberschicken und der soll dann entsprechend aufbereitet gespeichert werden. Nach Neustart des ESP soll er dann die neuen Login-Daten verwenden.

Mit Speicherung von Daten bei/in einem "Arduino"-ähnlichen Gerät habe ich Null Erfahrung und werde von dem gegoogelten Zeugs nur erschlagen.

Ich brauche eine simple BT-Empfangsroutine für eine Zeile Text. Z.B. "SID=Netzwerkname,Pass=Passwort". Das Aufbereiten und Verarbeiten kann ich.

Und dann brauche ich eine Funktion, die die neuen Daten irgendwo speichert. Flash? RTC?
Und eine weitere, die das im Setup beim Neustart auslesen kann.

Hat da jemand zufällig mal so was gelöst? Und vielleicht ein paar verständliche Zeilen Code dazu?

Danke vorab.

Gratulation!

Wie immer gibt es mehrere Möglichkeiten, Werte zu speichern. Der ESP32 bietet die Möglichkeit, dies in seinem Dateisystem SPIFFS oder neuer LittleFS zu tun:

ESP32 Save Data Permanently using Preferences Library

"Permanent" bedeutet, geht bei Reset nicht verloren, ist aber durchaus veränderbar.

Der ESP32 kann als Access Point starten, dann gibst Du Zugangswerte ein und machst einen Reset, wo die neuen Zugangsdaten verwendet werden:
How to Set an ESP32 Access Point (AP) for Web Server
Login Manager
WiFiManager

Eventuell helfen Dir die Links zu einer eigenen Lösung :slightly_smiling_face:

"preferences.h" ist schon der richtige Suchbegriff für den ESP32.

Wäre ich du würde ich nicht mit Bluetooth rummachen sondern Wifi nutzen.
entweder

  • per "Knopfdruck" den ESP als AP starten lassen dann mit dem ESP verbinden und SSID / Passwort vergeben
    oder
  • WifiManager
    oder
  • wenns immer die "gleichen" Wifis an unterschiedlichen Orten sind die du nutzen willst, eventuell gem. dem Beispiel:
    Wifi/WifiMulti gleich alle bekannten SSID/Passwörter einspeichern

P.S.:

Wenn du damit den RTC Speicher am ESP32 meinst ... der geht bei Stromverlust verloren bzw wird mit großer Wahrscheinlichkeit ohne Stromversorgung korrupt. Daher besser preferences.h nutzen.

Falls er mit RTC ein RTC-Modul meint, bibt es da welche mit batteriegepuffertem RAM und bei der DS3231 kann man den EEPROM problemlos gegen einen FRAM austauschen. Das aber nur zur allgemeinen Info.
Am ESP32 ist preferences.h die Lösung der Wahl oder auch LittleFS .

Gruß Tommy

Für zwei Strings mit 10 bis 20 Zeichen ist ein Dateisystem wohl etwas überdosiert. Das mit "Key "und "Value" sieht gut aus

Das scheint eine brauchbare Basis zu sein

Mein Teil muss immer sofort als Logger starten. Also Start, WLAN-einloggen, FTP starten und Logging-Loop

Die eventuelle Änderung der WLAN-Parameter und ein Neustart muss beliebig im Laufe der Zeit ausgelöst werden können. Also nur, wenn das Umfeld sich ändert.

Das mit den Preferenzes wird es wohl sein. Einen Webserver oder WiFiManager etc. zu installieren wäre wohl Kanonen auf Spatzen hier.

Nicht wirklich. Meine Aufgabe ist so winzig. Da möchte ich nicht 100 Zeilen Code installieren und mich mit zig Sachen und unnötigem Drumherum beschäftigen nur für diese winzige Sache.

Ich werde mir wohl was mit den Preferenzes hinstricken und einen Teil aus einem Bluetooth-Beispiel reinpacken, um bei Bedarf per Handy schnell die neuen Zugangsdaten bei Bedarf reinzuschicken.

Dann komme ich auf weniger als 20 Zeilen Code. (laut bisherigen Testversuch)

Danke für die Mühe - auch an die anderen Antworter.


Das Dateisystem ist eigentlich immer vorhanden, ist also nur eine Frage, ob Du es nutzt oder nicht.

Genau das tut nach meinem Verständnis der WiFiManager.

Aber mach, wie Du denkst, wird schon passen :slightly_smiling_face:

zeig uns dann unbedingt dein Ergebnis und den Code dazu.

Du kannst den WiFi-Manager auch so bauen, dass er sofort seine Arbeit aufnimmt, wenn er sich im WLAN anmelden kann.
Wenn nicht, macht er einen AP auf und wartet auf die Eingabe der Daten vom neuen WiFi und beginnt dann nach einem Reboot.
Sofort in beliebigem WLAN ist Illusion.

Gruß Tommy

Wie schon gesagt - das ist alles gut gemeint, aber viel zu viel Drumherum für den Minizweck.

Das soll er ja auch nicht. Mein Teil soll sich nur im WLAN anmelden und die FTP-Verbinung aufbauen. Dann Endlosloop zur Datenübermittlung. Das geht so bereits! Das sind nur ein paar Zeilen Code. was WLAN und FTP betrifft

So soll er nicht!

Habe ich auch nicht verlangt! Er startet in dem WLAN, welches als letztes gesetzt wurde. Und bei Bedarf möchte ich ihm ohne IDE neue Login-Daten reinschreiben, die er dann beim nächsten Start benutzen soll.

Das ist alles so pillepalle wenig - da brauche ich keine Webserver, WiFi-Manager oder was auch immer. Ich wollte nur Tipps, wie ich die Speicherei in den ESP hinbekomme. Und das ist mit dem ersten Tipp ja geklärt worden. Danke! Ein paar Zeilen Code zum Speichern oder zum Lesen. Und für den Empfang eines Strings per BT sind es auch nur eine handvoll Zeilen. Wurde dann im Betrieb so ein "Steuerstring" empfangen, werden die neuen Daten in den Speicher geschrieben und neu gestartet. Nochmal eine handvoll Zeilen.

Für mich ist das jetzt erledigt. Danke allerseits.

Genau das macht der Wifimanager. Und es sind nur ein paar Zeilen Code. Und es ist fertig und 1000 fach erprobt.

Für ihn ist es doch erledigt mit ein paar Zeilen und er will unbedingt BT.
Jeder wie er mag.

Gruß Tommy

Hi, ich habe einiges zum WM gelesen. Und das war seitenlang und mit viel Code. Mehr Programm als meine ganze Loggerei. Aber wenn es denn da auch eine kurze einfache Lösung gibt, wäre ich für ein Beispiel dankbar. Wie gesagt - das bisher selbst gefundene war nur erschreckend viel.

was ist passiert als du einfach mal das Basis beispiel ausprobiert hast?

Das "Basisbeispiel" habe ich heute Mittag erst gefunden, nachdem ich durch die erste Antwort auf das Thema "Wifimanager" gekommen bin. Es wird dann wohl morgen oder übermorgen mal probiert. Leider bin ich nicht so allwissend wie viele besonders schlaue Leute, um immer gleich alles zu wissen, was es gibt und wonach man suchen muss. Und da dauert es halt manchmal länger. Danke für deine Mühe.

Tatsächlich nur ein paar Zeilen. Einfacher kann es gar nicht sein. Erster Test erfolgreich. Eine Super-Doku dazu habe ich woanders gefunden. Das zuvor an verschiedenen Stellen Gefundene hatte mich immer regelrecht erschlagen und abgeschreckt. Manche können es vor lauter Wissen einfach nicht simpel erklären und mit einfachen Beispielen zeigen.

Danke!

Ein öffentliches Forum lebt vom Nehmen und Geben, ein Link zur "Super-Doku" könnte anderen helfen und wäre damit ein hilfreicher Dank :wink:

OK: ESP32 WiFiManager - Easy WiFi Provisioning

2 Likes

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.