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()