Перейти к содержанию
Материалы раздела

settings.lua

Библиотека хранит настройки устройства в NVS (энергонезависимой памяти) и поддерживает значения по умолчанию.

settings(name, defaults)

Создаёт объект для работы с настройками.

Аргументы:

  • name — имя пространства в NVS;
  • defaults — таблица со значениями по умолчанию.

Возвращает объект с методами для работы с настройками.

При создании объекта библиотека записывает значения по умолчанию для ключей, которых ещё нет в NVS.

local settings = require("settings")
local cfg = settings("myapp", {
    volume = 50,
    brightness = 100,
    language = "ru"
})

settings.get(key)

Получить значение настройки.

Аргументы:

  • key — ключ настройки.

Возвращает значение из NVS или значение по умолчанию.

local vol = cfg.get("volume")  -- 50 (если не изменено)

settings.set(key, value)

Установить значение настройки.

Аргументы:

  • key — ключ настройки;
  • value — новое значение.
cfg.set("volume", 75)

settings.load()

Загрузить все настройки в таблицу.

Возвращает таблицу со всеми настройками.

local all = cfg.load()
print(all.volume)      -- 75
print(all.brightness)  -- 100
print(all.language)    -- "ru"

settings.save(s)

Сохранить несколько настроек из таблицы.

Аргументы:

  • s — таблица настроек, которые нужно сохранить.
cfg.save({
    volume = 80,
    brightness = 50
})

settings.restore()

Восстановить все настройки до значений по умолчанию.

cfg.restore()

settings.clear()

Удалить все настройки из NVS.

cfg.clear()

settings.defaults

Таблица со значениями по умолчанию, переданными при создании объекта.

print(cfg.defaults.volume)  -- 50

Пример использования

local settings = require("settings")

-- создаём настройки со значениями по умолчанию
local cfg = settings("device", {
    ssid = "MyWiFi",
    password = "secret",
    timeout = 30
})

-- читаем настройку
local ssid = cfg.get("ssid")

-- изменяем настройку
cfg.set("timeout", 60)

-- загружаем все настройки
local all = cfg.load()
for k, v in pairs(all) do
    print(k, v)
end

-- восстанавливаем значения по умолчанию
cfg.restore()