Шаг №7 – Запись и чтение параметров конфигурации в файл

Программирование по порядку.
В этом скетче, записываем и считываем данные настройки модуля в файл.

Скетч: Step7-FileConfig

39 мыслей о “Шаг №7 – Запись и чтение параметров конфигурации в файл”

    1. Тысячу раз подумайте прежде чем делать фиксированный IP. Если он вам действительно нужен и без него никуда. Заставьте роутер выдавать плате постоянный IP. Если это не решит проблемы, только тогда добавляйте это в код и на веб страницу.

  1. В восторге от Ваших уроков. Огромный респект. К сожалению в скетч последнего урока не попали FTP и AREST и пришлось их ставить “ручками”. Не пожелание, а скорее просьба добавить к уже почти сформированной “веб-морде” авторизацию. Хочется работать с сервером из интернета, а без авторизации это глупо. Успехов!

  2. Здравствуйте .
    В 7 уроке в web интерфейсе пароль wifi не могу назначить более 15 :символов.
    В чем может быть подвох .

  3. ребята возникла проблема при записи в файловою систему(пример из сайта), пробовал на разных версиях arduino ide(1.6.6 и 1.6.8) и на двух пк(на одном чистая система виндовс 7) все время одна и та жэ ошибка
    Вот что видает IDE:

    Exception in thread “AWT-EventQueue-0” java.lang.NoSuchMethodError: processing.app.Sketch.getBuildPath()Ljava/io/File;
    at com.esp8266.mkspiffs.ESP8266FS.getBuildFolderPath(ESP8266FS.java:117)
    at com.esp8266.mkspiffs.ESP8266FS.createAndUpload(ESP8266FS.java:263)
    at com.esp8266.mkspiffs.ESP8266FS.run(ESP8266FS.java:322)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

    1. Установите старую библиотеку ESP8266FS-0.1.3zip
      С более поздней ESP8266FS-0.3.0zip выдает такие же
      ошибки . Также лучше установить Arduino IDE 1.6.5-r5 .
      У меня прошивается все скорости до 921600 .
      И не парьте себе мозг.
      В более поздних IDE нужно будет соблюдать синтаксис C++.

  4. В примере есть не точность в функции saveConfig().
    При маленьком сейве – не заметно. При большом и частом – файл записывается пустым {}.
    ……………………….
    json.printTo(jsonConfig); /// – Нужно убрать.
    // Открываем файл для записи
    File configFile = SPIFFS.open(“/config.json”, “w”);
    if (!configFile) {
    //Serial.println(“Failed to open config file for writing”);
    return false;
    }
    // Записываем строку json в файл
    json.printTo(configFile);
    configFile.close(); ///// – Добавить
    return true;
    }

      1. Размер файла после сохранения 980 байт. Переменные – строки, цифры (устройство – вайфай термометр)
        Частота сохранения 3…5 минут.
        Через некоторое время 20…60 минут в сохраненном json только {}.
        Удаление файла не помогает, новый создается тоже пустой {}.
        После перезагрузки всё нормально.

        Сделал манипуляции, как описал – всё заработало.

        1. Первое что бы я сделал это не смешивал основные настройки модуля и данные которые вы хотите сохранять. Все это нужно делать в разных файлах. Процедура сохранения данных должна быть другой. И это зависит от конкретной задачи.

          1. Думаю для радиолюбительства не принципиально, где хранить настройки и нужные переменные.
            Вопрос только работает ли функция или нет.
            Сейчас идут 4-е сутки онлайн, проблем не выявлено.

  5. Здравствуйте, возникла вот такая проблема. При открытии редактора, страница открывается, но на ней ничего нет, кроме верхней заливки и вертикальной полосы, отделяющей файлы от кода. В чём может быть проблема( делал всё, как сказано)?

  6. После запуска скетчей ваших уроков, где предусмотрено создание точки доступа “WIFI”, в случае неудачного подключения к домашнему роутеру, залил другой скетч, из другой темы с другим IP, так-же с подключением к домашнему роутеру.
    С удивлением обнаруживаю, что помимо полнофункционального подключения ESP к роутеру клиентом, у меня одновременно присутствует и “фантомная” точка доступа “WIFI” прекрасно работающаяя с новым скетчем, хотя в последнем о ней вообще не упоминалось.
    Возможно ли полностью очистить память в ESP, во избежание появления подобных призраков?

    1. Признаться, при нескольких попытках еще раз повторить подобный эффект, положительного результата достигнуто не было.

    2. Возможно. Нужно в прямую задать режим работы ESP в вашем скеетче. Скорее всего Вы явно не указываете режим. И ESP берет свои последнии настройки из flash.

  7. Посмотрел Ваше видео, попробовал, все работает, спасибо за труд, только вот где продолжение? И если не тяжело, пожалуйста укажите в каком порядке смотреть по мере поступления информации, а то я уже запутался.

  8. У меня JSON файл сохраняется пустым.
    Добавил дебаг:
    Serial.println(“ssidName json “+json[“ssidName”].as()+” ssidName var “+ _ssid);
    Выдаёт значение только _ssid, в json пусто.
    Добавил размер буфера 512:
    DynamicJsonBuffer jsonBuffer(512);
    всё работает.

  9. Ошибка компиляции для платы Generic ESP8266 Module
    спотыкается на #include
    пока ответят разберусь самостоятельно, но все-же…

  10. Подскажите почему появляется ошибка. H:\Sketch\esp8266\02_ESP8266_NEW\Step7-FileConfig\FileConfig.ino: In function ‘bool loadConfig()’:
    FileConfig:22:5: error: ‘DynamicJsonBuffer’ was not declared in this scope
    DynamicJsonBuffer jsonBuffer;

  11. Начиная с кода для этого видео и во всех последующих скетч перестал загружаться с ошибкой “Ошибка компиляции для платы…” Перебрал все варианты: менял версии ide, версии ядра, платы. Безрезультатно, скетч не загружается.
    Друзья, выручайте! Что я делаю не так?

    1. У вас остались старые версии скетча? попробуйте загрузить ту, которая до изменений. Если она пойдет без ошибок, значит проблема в скетче. Возможно вы вставили код криво и где-вышла лишняя фигурная скобка (функция осталась не закрытой или наоборот закрылась раньше времени), у меня такое бывало.

  12. Уважаемый админ! Спасибо за примеры кода, я оказалось весьма просто и понятно.

    Мне нужно было сделать простое сохранение настроек (пару переменных) в файл. Добавил в скетч #include и #include (последнюю library скачал), перенес ваши функции FS_init, loadConfig и saveConfig (только удалил ненужные фрагменты), добавил в setup() вызов FS_init(); и loadConfig() и вауля, работает

  13. всем привет !!! не могу понять почему при компиляции выходит такая ошибка подскажите пожалуйста ‘DynamicJsonBuffer’ was not declared in this scope

  14. Добрый день. Я столкнулся с проблемой записи данных в config.json. После первой попытки записи файл пропадает. После перезагрузке ESP файл перезаписывается но не чего не считывается. При попытки зайти на него через браузер там крякозябры. Пробывал на голом скетче записать и считать в Serial хоть что нибуть, тоже крякозябры или квадратики. Может проблема в кодировке. Что делать, подскажите пожалуйста.

Добавить комментарий для admin Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.