Problem mit SPIFFS

Moin,

in Matrix hatten wir das Thema schon mal kurz. Hier will ich das nochmal ausführlicher angehen. Irgendwas passt mit dem SPIFFS nicht, wenn man einen komplett frischen OBS hat. Nach dem Flashen sehe ich im Display immer „Config …RESET“.

Code-Analyse:

  1. Es wird if (!cfg.loadConfig()) aufgerufen
  2. loadConfig findet die Datei im SPIFFS nicht, daher wird die Config mit den Default-Werten gefüllt
  3. Es wird isNew=true gesetzt. triggerServerMode wird daher auch auf true gesetzt
  4. Der ServerMode wird startet

Beobachtung: Die saveConfig wird initial nie aufgerufen, sosdass man bei einem Neustart des Geräts immer wieder Config …RESET sieht.

Wann wird die saveConfig aufgerufen?

a) Wenn ich eine obs.json auf der SD-Karte habe
b) Diverse Stellen in der configServer.cpp

Also wir haben ja am Wochenende einen Haufen OBS mit v0.16.765 geflasht und die liefen super.

Einen hatten wir der dein Verhalten hatte, glaube ich (das war vor 2 Wochen, @gluap war dabei, vielleicht weiß der es noch genau). Ich glaube wir haben einfach den ESP32 getauscht, und dann ging es.

Vielleicht einfach ein Problem mit dem SPI? :man_shrugging:

Alle OBS anderen haben auch bei nagelneuer config keinen Server gestartet initial.

Was ish mich frage ist, warum es bei euch funktioniert. Ich habe ja den Code analysiert und eigentlich müsste genau das Verhalten immer bei neuen ESPs auftreten.

Wie habt ihr sie ESPs geflasht? pio? Browser?

Habt ihr beim ersten Boot direkt das WLAN
konfiguriert, sodass die Config geschrieben wurde?

Ah ja gut die waren vorgeflasht vielleicht hat da jemensch schon auch jeden einmal gestartet. Auf die Idee kam ich gar nicht. @zoe weiß das genauer. Ich habe nur einen bekommen der sich so wie du beschreibst verhielt, den mit pio neu geflasht, und der hatte dann immer noch dieses Verhalten. Kann sein dass der einfach nie Konfiguration geschrieben hatte und ich wusste es nicht und habe einfach den ESP als kaputt deklariert :joy:

Wir haben eins als kaputt deklariert, aber genau warum weiß ich nicht. @simse hat alle CPUs im Vorfeld von den Workshops geflasht und getestet.
Ich glaube, Benjamin hat den „kaputten“ mitgenommen.

Ich bin gerade nicht sicher, aber warum sollte die Konfiguration gespeichert werden, wenn es keine Einträge gibt?

Gespeichert wird z.B. wenn beim Installieren gleich ein WLAN eingetragen wird und natürlich auch beim Konfigurieren über die UI.

Ich glaube, Dennis hätte gern dass irgendwas geschrieben wird, um hieraus rauszukommen:

 if (configIsNew) {
    log_i("Config was freshly generated, will start in server mode.");
    triggerServerMode = true;
 }

Sonst kommt mensch ja nur in den Messmodus, indem mensch irgendwas konfiguriert. Das ist ein bisschen schwer zu verstehen und implizit. Ich teste auch lieber direkt mit Messmodus wenn ich einen neuen OBS baue, finde diesen triggerServerMode also irgendwie nicht so hilfreich… aaaaber ich habe ihn auch noch nie erlebt :man_shrugging:

Ok, verstehe. Das wird benötigt um nach der Installation zuverlässig die WLAN settings über improv (via Browser UI) setzen zu können. In der Regel klappt das auch da die improv Anfragen frühzeitig auf der Seriellen erkannt werden.
Eventuell kann das so weg oder zumindest abgeschwächt werden.