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. Hat vielleicht jemand eine Idee mit der ich den String in eine char* umwandeln oder besser die Daten gleich in char* auslesen kann? .
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);
}
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
Hab dass Problem mit SPIFFS auch erst mal gelöst wenn ich gleich die variable ssid in die read zeile schreibe funktioniert es String ssid = Name.readString();
ich werde mir trotzdem den EEPROM mal näher ansehen
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();
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.
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.
String result;
EEPROM.get(0,result); // Geht leider, gibt aber nur Unsinn..