Spiffs auslesen und in char* umwandeln

Hallo zusammen,
ich "bastle" jetzt schon seit einiger Zeit an einem Script, um meinen ESP8266 über eine Web Adresse konfigurieren zu können, also Wlan, Passwort, MQTT Adresse usw. (Ich weiß es gibt fertige Lösungen, aber ich wollte mich selbst daran versuchen). Soweit funktioniert auch alles nur mit dem auslesen der Daten habe ich so meine Schwierigkeiten. Ich nutze SPIFFS um die Daten zu speichern. Auslesen funktioniert auch allerdings nur als String, ich benötige die Daten aber als char* und daran scheitere ich im Moment. :thinking: Hat vielleicht jemand eine Idee mit der ich den String in eine char* umwandeln oder besser die Daten gleich in char* auslesen kann? :thinking:.

Hier ein Ausschnitt aus meinem mein Script da dieses recht lang ist:

char* ssid; //Wlan Name
char* WLan = "/WLan.txt";

//WLAN von Spiffs lesen
void WLANSPIFFS(){
int i;
File Name = SPIFFS.open(WLan, "r");
String Test = Name.readString();
Serial.println(Test);
Serial.print("ssid:");
Serial.println(ssid);
}

https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/c_str/

Konvertierung ist da aber der falsche Ausdruck. Das gibt einem Lese-Zugriff auf das interne char Array

hab ich versucht allerdings wenn ich "ssd =Test.c_str()" eingebe kommt die meldung invalid conversion from'const char*' to 'char*'

Verwede doch einfach die EEPROM-Library.
Die nutzt beim ESP natürlich mangels echtem EEPROM ebenfalls den SPIFFS, aber bietet Dir einfache Methoden Int, Char & Co. zu lesen und zu schreiben.

Ich werde mich mal dran versuchen :slight_smile:
Hab dass Problem mit SPIFFS auch erst mal gelöst wenn ich gleich die variable ssid in die read zeile schreibe funktioniert es :slight_smile: String ssid = Name.readString();
ich werde mir trotzdem den EEPROM mal näher ansehen :slight_smile:

Warum? Wenn du sie ändern möchtest, bist du mit c_str()in die falsche Richtung unterwegs.
Wenn nicht, möchtest du eventuell in Wirklichkeit einen const char* haben ?
const char* ssd = Test.c_str();

Dann lerne was das bedeutet statt willkürlich Code einzutippen. Nur weil es irgendwann kompiliert ist das nicht unbedingt die richtige Lösung

schön. SPIFFS ist aber am ESP8266 abgekündigt:
https://arduino-esp8266.readthedocs.io/en/latest/filesystem.html#spiffs-deprecation-warning

mach dir ein struct für alle deine Daten die du persistieren möchtest und schreibe sie in die EEPROM Emulation. Quasi ein Einzeiler zum Schreiben, ein Einzeiler zum lesen, ein Einzeiler um auf die Daten zuzugreifen.

1 Like

Na, dann eben LittleFS.
Hier geht es um den Unterschied zwischen char* und const char* .
Und der hängt erstmal am Umweg über String, bzw. am schlampigen Programmierer.

Na ja, man kommt nicht so leicht auf den Fehler, String zu verwenden, wenn die Daten im EEPROM liegen. :wink:

String result;
EEPROM.get(0,result);  // Geht leider, gibt aber nur Unsinn..