• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Запись файлов в SPIFFS

Pilnikov

Active member
Есть такой плагин Arduino plugin for uploading files to ESP8266 file system он позволяет писать файлы SPIFFS, но только если зверек (ЕСП) подключен к компу кабелем через USB->COM.
А не знает ли кто способа заливки файлов в SPIFFS по воздуху?
З.Ы. Про способ редактирования/заливки из примера знаю, интересует загрузка в "чистую" FS
 

CodeNameHawk

Moderator
Команда форума
Скопируйте из примера httpUpdateSPIFFS
Код:
t_httpUpdate_return ret = ESPhttpUpdate.updateSpiffs("https://server/spiffs.bin");
 

Pilnikov

Active member
Скопируйте из примера httpUpdateSPIFFS
Код:
t_httpUpdate_return ret = ESPhttpUpdate.updateSpiffs("https://server/spiffs.bin");
Я попробовал пример - но чего то мне нифига не понятно как он работает. Точка доступа создается, я к ней цепляюсь - а дальше тишина.
Растолкуйте нубу плиз - что есть https://server, а что есть spiffs.bin?
 

Pilnikov

Active member
Файл с вашими данными.


Имя сервера, который вы создадите и куда положите ваш файл.

Почитайте OTA Update · ESP8266 Arduino Core
Я обновление прошивки через HTTP постиг.
Т.е. обновление возможно только с отдельного сервера? Комп в его роли не могет выступить? А вместо spiffs.bin можно что угодно записывать?
 

bstsoft

Member
Есть такой плагин ... FS
Писать файлы по воздуху самый простой и удобный способ.
2 раза записи из IDE в FS и я понял, что это будет адом, т.к. файлы изменяю часто. Даже написал эмулятор интерфейса на php для быстрого написания html. А потом начал пользоваться тем, что было в примере, путь выглядит так http://192.168.211.180/edit/index.htm. Единственное что там по одному файлу передается. Я уже изучил код и перепишу на выбор нескольких файлов. Файл ace.js я скачал из интернета и локально на FS положил.

Если еще проблему не решил можем на эту тему поговорить. Могу по скайпу показать. Потом могу сделать видео о том как FS пользоваться, если оно конечно кому то надо.
 

Pilnikov

Active member
рассматривается ситуация, когда в результате ошибочных действий пользователя (например изменение flash memory map) после прошивки область SPIFFS оказывается отформатированной и не содержит ни каких файлов. А физический доступ к МК ограничен (в корпусе, под потолком, на улице и т. д... ) Как по воздуху закинуть на чистую пустую SPIFFS файлик? ОТА, будем считать, что работает.
 

bstsoft

Member
ни каких файлов
И тут меня осенило файлы "index.htm и ace.js" которые я забрасывал на FS в папку edit не обязаны там находиться!!!
Вы просто мне открыли глаза.
Поясняю, что можно делать подправив index.htm.

Берем ESP новую или с поврежденной FS. В прошивке я заложил функцию format для новой или на всякий случай. Запускаем на локальном компе index.htm прописываем url нашей ESP и заливаем файлы.
 

enjoynering

Well-known member
в принципе разжал сам. трешачек конечно - тащить целый api Ace (Ajax.org Cloud9 Editor) для такой простой операции как забрасывание файлов на внутрнню флешку esp. а что нибудь простое на jquery есть?

автору все равно спасибо, примите это просто как конструктивную критику.
 

bstsoft

Member
@enjoynering
Вообще то там сам js походу не сильно нужен. Он пригодиться когда быстро файл надо подправить или посмотреть.

Для заливки планирую сделать простой WEB с выбором или папки или файлов по выбору. Сейчас времени на это нет. Хотя все просто как барабан.
 

mishgan

Member
Не получается закачать файлы по воздуху. Пытаюсь так
Код:
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266httpUpdate.h>
void setup() {
  Serial.begin(115200);
  Serial.println();
  WiFi.mode(WIFI_STA);
  WiFi.begin("ssid", "password");
  while (WiFi.status() != WL_CONNECTED) {
  delay (500);
  Serial.print(".");
  }
  Serial.println();
  Serial.println("Update SPIFFS...");
  t_httpUpdate_return ret = ESPhttpUpdate.updateSpiffs("http://selsovet.org/spiffs.bin");
  if(ret == HTTP_UPDATE_OK) {
  Serial.println("Update sketch...");
  ret = ESPhttpUpdate.update("http://selsovet.org/esp8266.bin");
  }
   }
void loop() {

}
После заливки в сериал порту появляются строчки.
..........
Update SPIFFS...
ets Jan 8 2013,rst cause:2, boot mode:(1,6)
ets Jan 8 2013,rst cause:4, boot mode:(1,6)
wdt reset
Загрузка бинарника esp8266.bin не происходит. Что я делаю не так?
 

gerkimuyda

New member
А тут что?
Код:
  Serial.print(" UPDATE: \""+url+"\" ");
  t_httpUpdate_return ret = ESPhttpUpdate.update(url);
  switch(ret) {
    case HTTP_UPDATE_FAILED: Serial.printf("- Failed(%d): %s.\n", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str());  break;
    case HTTP_UPDATE_NO_UPDATES:  Serial.print("- no new updates.\n");  break;
  }
А что эти примеры кажуть? Arduino/libraries/ESP8266httpUpdate/examples at master · esp8266/Arduino · GitHub
 
Сверху Снизу