Stránka 1 z 2

ESP8266 SPIFFS

Napsal: 28 led 2021, 08:43
od BigSandy
Zdrvím.
Když mam v SPIFFS text soubor třeba soubor.txt
Bych potřeboval, aby se obsah souboru načetl při otevření web servru třeba do list boxu.
Jak na to?
Dik

Re: ESP8266 SPIFFS

Napsal: 28 led 2021, 09:36
od jankop
Netušil jsem, jak jednoduše je možné pracovat se soubory ve SPIFFS ve spolupráci s webem.
V principu

Kód: Vybrat vše

#include <LittleFS.h>
void setup() {
  ...
server.serveStatic("/text.txt", LittleFS, "text.txt");
...
}
void loop() {
...
<textarea rows="4" cols="15" name="dlouhytext"><a href="text.txt"></a>
</textarea>
...
}
LittleFS.h je nový file systém, podporovaný v nových verzích core ESP8266
Ale nejsem si jist na co se vlastně ptáš. Na SPIFFS nebo HTML formulář?

Re: ESP8266 SPIFFS

Napsal: 28 led 2021, 09:51
od BigSandy
ESP8266 bude v režimu AP.
Připojim se k AP a spustim v prohližeči web stramku uloženou v tom SPIFFS.
Chci aby se na ní vykreslil listbox a do něj se načetl obsah toho text souboru.

Re: ESP8266 SPIFFS

Napsal: 28 led 2021, 11:57
od KamilV
Pokud by to už v tom souboru mohlo být s HTML značkami OPTION, bylo by to snazší, protože načteš celý texťák a začleníš ho do výstupu mezi značky SELECT.

Pokud to v tom txt musí být bez značek, budeš muset číst řádek po řádku, třeba přes buffer, dokud nenarazíš na EOL nebo "\n".
Pak to do HTML výstupu budeš sázet v cyklu obalené značkami OPTION.

Re: ESP8266 SPIFFS

Napsal: 28 led 2021, 17:17
od BigSandy
Je jedno, jak to tam bude uloženo.
Firmu kde dělam jezdi 2X za noc kontrolovat stražní služba a ojebava to.
ESP8266 - čtečka RFID RC522 a modul reálného času.
Bude se ukladadat vždy na řadek čislo karty a čas.
Vedouci to občas zkontroluje, takže se připoji a koukne.
Možna se to bude odesilat do raspi ale to už zvladnu.

Re: ESP8266 SPIFFS

Napsal: 28 led 2021, 18:25
od KamilV

Kód: Vybrat vše

String content;

void setup() {
  ...
  server.on("/", handle_status);
  ...
}

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

void handle_status() {
  File f = SPIFFS.open("/soubor.txt");
  if(f) {
    content = "";
    while(f.available()) {
      content += f.read();
    }
    f.close();
    server.send(200, "text/html", "<html><body><select size=20>"+content+"</select></body></html>"); 
  } else {
    server.send(500, "text/html", "<html><body>Error</body></html>"); 
  }
}

Re: ESP8266 SPIFFS

Napsal: 28 led 2021, 19:30
od BigSandy
Dik, vyzkoušim.
A v tom textaku by to mělo vyt uložene jak?

Re: ESP8266 SPIFFS

Napsal: 28 led 2021, 19:53
od KamilV

Kód: Vybrat vše

<option>první řádek</option>
<option>druhý řádek</option>
<option>třetí řádek</option>
<option>čtvrtý řádek</option>
...
<option>poslední řádek</option>
Úplně nerozumím kontextu, proč to vlastně chceš vypisovat v selectu, ale je to jak jsi chtěl.

Re: ESP8266 SPIFFS

Napsal: 29 led 2021, 09:29
od BigSandy
KamilV píše:
28 led 2021, 19:53
Úplně nerozumím kontextu, proč to vlastně chceš vypisovat v selectu, ale je to jak jsi chtěl.
Přes web stranky nemam žadne zkušenosti.
Pokud viš o lepšim, jednodužšim zpusobu tak klidně.
Dik moc.

Re: ESP8266 SPIFFS

Napsal: 29 led 2021, 09:56
od KamilV
Já ale nevím, k čemu to má sloužit. Pokud je to v selectu, tak bych čekal, že je to součástí formuláře, který půjde někam odeslat, tzn. vyberu nějaký záznam a odešlu ho na nějaké další zpracování.
Pokud to má být jen kontrolní výpis, tak by to mohlo být třeba v tabulce...
Obzvláště, pokud ve výpisu (na jednom řádku txt souboru) bude více údajů, jako třeba ID karty, jméno, čas pípnutí... Pak ta tabulka bude nejpřehlednější, protože to bude ve sloupcích pěkně pod sebou.
Pokud tam máš jen jméno (jak je uvedeno na obrázku), tak je to celkem jedno, to můžeš vypsat třeba jen každý záznam na nový řádek...
Ukaž, jak vypadá jeden řádek txt souboru...