• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь ESP8266: проблемы с файловой системой

Cadil

New member
Уже больше года в своих скетчах использую загрузку некоторых переменных через окно в браузере с использованием файловой системы (SPIFFS). С недавнего времени начались проблемы с этой загрузкой. Сначала я не придал этой проблеме значения - подумал, что затер память, но на новом модуле NodeMCU ESP12E проблема не исчезла.
Во вложении приведен скетч, в котором проблема отражена в чистом виде. Логика скетча такова: после заливки в модуль ESP8266 поднимается точка доступа Wi-Fi (логин: am180206, пароль: vb654321). Необходимо подключиться к этой точке, далее открыть в браузере страницу http://192.168.4.1. Ввести в окнах браузера логин, пароль своей сети и ключ авторизации Blynk. Если все работает корректно, то сообщений типа Failed to open config file, Failed to load config на мониторе компилятора не будет, модуль будет регулярно отправлять данные на сервер Blynk"а. А вместо записи token: Blynk token будет записан ключ: token: b0bf3e0d02f648c6b7affxxxxxxxxxxxx.
У меня есть сомнения, что в новом модуле повреждена ФС, а если повреждена, то как в этом убедиться? Где копать в этой ситуации?
 

Вложения

svs2007m

Active member
Если раньше все работало, то ВОЗМОЖНО проблема в обновленных библиотеках

#include <BlynkSimpleEsp8266.h> зачем тогда тебе дубль #include <SimpleTimer.h> ?

А эта чуть ли не каждый день релизы обновляет .Так парсинг 5 версии отличается от 6 версии библиотеки
#include <ArduinoJson.h>
 

Cadil

New member
Копать как всегда, делать отладку.
Да, вроде, вывел в консоль все нужные точки.
Например, при выполнении кода
Код:
       if (shouldSaveConfig) {
                Serial.println("saving config");
                DynamicJsonBuffer jsonBuffer;
                JsonObject &json = jsonBuffer.createObject();
              
                json["blynk_token"] = custom_blynk_token.getValue();
             
                File configFile = SPIFFS.open("/config.json", "w");
                if (!configFile) {
                        Serial.println("failed to open config file for writing");
                }

                json.printTo(Serial);
                json.printTo(configFile);
                configFile.close();
                //end save
        }
Приходит сообщение "saving config", а уже после четвертой команды - проблемы с открытием файла конфигурации: "failed to open config file for writing". Снова отформатировал модуль, откатился до предыдущей версии библиотеки ArduinoJson.h, которая тут задействована - не помогло. Что еще тут придумаешь ...
 

Cadil

New member
Если раньше все работало, то ВОЗМОЖНО проблема в обновленных библиотеках

#include <BlynkSimpleEsp8266.h> зачем тогда тебе дубль #include <SimpleTimer.h> ?

А эта чуть ли не каждый день релизы обновляет .Так парсинг 5 версии отличается от 6 версии библиотеки
#include <ArduinoJson.h>
 

Cadil

New member
Если раньше все работало, то ВОЗМОЖНО проблема в обновленных библиотеках
В некоторых библиотеках я делал откаты.
#include <BlynkSimpleEsp8266.h> зачем тогда тебе дубль #include <SimpleTimer.h> ?
Плохо почистил основной скетч - уже убрал SimpleTimer.h.
А эта чуть ли не каждый день релизы обновляет .Так парсинг 5 версии отличается от 6 версии библиотеки
#include <ArduinoJson.h>
Делал откат до 5 версии. В промежутке задействована еще ода библиотека FS.h. (фрагмент кода в предыдущем посте). В ней последнее изменение, кажется, 4 месяца назад.
 

Cadil

New member
Как оказалось, слетела галочка в компиляторе: Flash Size->4M (1M-SPIFS). Помог специалист с интернет-магазина.
Благодарю всех, кто откликнулся.
 

CodeNameHawk

Moderator
Команда форума
Приходит сообщение "saving config", а уже после четвертой команды - проблемы с открытием файла конфигурации: "failed to open config file for writing"
И что видно в файловой, после этого?
У меня возникли проблемы при переходе с 2.4.2 на версию 2.5.0.

Как оказалось, слетела галочка в компиляторе: Flash Size->4M (1M-SPIFS)
Она слететь не может, может указывать другой объем.
 

svs2007m

Active member
Несколько не в тему. Если Вы используете Blynk зачем Вам WEB морда ? Виджет Терминал + пара кнопок типа "сохранить" и "загрузить". Через командную строку терминала вводите любые значения и через структуру или по отдельности сохраняете, ну например в EEPROM.
 

Cadil

New member
Несколько не в тему. Если Вы используете Blynk зачем Вам WEB морда ? Виджет Терминал + пара кнопок типа "сохранить" и "загрузить". Через командную строку терминала вводите любые значения и через структуру или по отдельности сохраняете, ну например в EEPROM.
Безусловно, можно сделать и так. Я же пытаюсь сделать термостат, который мог бы настроить человек, далекий от программирования. Детали - тут. Мне интересен взгляд со стороны.
 

nikolz

Well-known member
Безусловно, можно сделать и так. Я же пытаюсь сделать термостат, который мог бы настроить человек, далекий от программирования. Детали - тут. Мне интересен взгляд со стороны.
а зачем дурина, RF на 433 и 10 стабилизаторов ?
 

nikolz

Well-known member
Про "10 стабилизаторов" поподробней, пожалуйста.
По вашей ссылки посмотрел.
это вы написали?
-------------------------
Компонент Цена, $
анализатор
Wi-Fi плата NodeMCU CP2102 ESP8266 2,53
Датчик температуры и влажности DHT22 2,34
Датчик содержания СО2 MH Z-19 18,50
Часы RTC DS3231 1,00
Экран OLED LCD синий 0.96" I2C 128x64 1,95
RF модуль 433MHz, передатчик (цена комплекта: передатчик, приемник) 0,99
4-канальный преобразователь логических уровней 3,3В-5В (Logical Layer Converter) 0,28
Стабилизатор напряжения LM7805 (10 шт.) 0,79
Адаптер AC100-240V 50/60Hz DC12V 2A 10,70
Макетная плата (стеклотекстолит), контакты и др. 2,00
контактор
Модуль Arduino Pro Mini 5V 1,45
RF модуль 433MHz (приемник) -
2-канальный модуль реле 0,98
Адаптер AC-DC HLK-PM01 4,29
Макетная плата (стеклотекстолит), контакты и др. 2,00
Всего: 49,80
 

svs2007m

Active member
Так Blynk так позиционируется как МИН кода С++. А через терминал Blynk ЛЮБОЙ параметр на раз за 3 сек. Ваш скетч сократится в разы !!!!
 

Cadil

New member
Так Blynk так позиционируется как МИН кода С++. А через терминал Blynk ЛЮБОЙ параметр на раз за 3 сек. Ваш скетч сократится в разы !!!!
Согласен. Но многие не знают, что такое Blynk, а почтовый ящик есть у всех. Впрочем, ключ Blynk , как и все остальное можно не вводить - термостат будет работать.
Я задался целью сделать простое в обращении и универсальное устройство.
 

Cadil

New member
В свое время делал для этого
Orang.jpg
Подозрительно низкая влажность почвы на скрине - 4%.
Нижний предел оптимальной влажности приближенно оценивается в зависимости от вида почв и растений следующими величинами: для трав —50…60 % пористости, для зерновых—45…50 %, для овощных и технических культур —40…45 %
 
Сверху Снизу