os.version()
Возвращает сведения о версии прошивки.
Аргументы: нет
Возвращает четыре значения: название системы, версию, время создания прошивки в формате Unix time и идентификатор ревизии. Эти данные удобны для диагностики и обращения в техническую поддержку.
local name, version, built_at, revision = os.version()
print(name, version, built_at, revision)
os.flashEUI()
Получить идентификатор встроенного SPI FLASH.
Аргументы: нет
Возвращает: идентификатор или ничего.
/ > os.flashEUI()
cb6254185b430e2e
os.uptime([mode])
Выводит время работы после загрузки или возвращает его в заданном формате.
Аргументы:
mode = 0или аргумент не задан: печатает строку в консоль и ничего не возвращает.mode = 1: возвращает таблицу.mode = 2: возвращает время после загрузки в миллисекундах. Это не Unix timestamp. Пока значение помещается вlua_Integer, возвращается число; более широкое значение возвращается точной десятичной строкой.
При mode = 1 таблица содержит:
current: строку времени в формате%H:%M;days: количество полных дней;hours: часы;mins: минуты;secs: секунды.
/ > os.uptime()
23:26 up 0:19:05
local up = os.uptime(1)
print("days:", up.days, "hours:", up.hours, "mins:", up.mins, "secs:", up.secs)
os.time([date])
Без аргументов возвращает текущее время в формате Unix time. Аргумент date — таблица с полями year, month, day, а также необязательными hour, min, sec и isdst; функция преобразует её в Unix time.
Поля таблицы трактуются в часовом поясе, заданном os.tz(): установленное смещение вычитается при преобразовании, поэтому os.time(table) является обратной операцией для локальной формы os.date("*t", timestamp).
Подробнее о формате таблицы см. в документации Lua.
/ > os.time()
1552405265
os.timestamp([resolution], [endian], [as_string], [uptime])
Возвращает системное время или время работы устройства с заданной точностью.
Аргументы:
resolution:"s","ms"или"us"; по умолчанию"s";endian: порядок байтов"le"или"be"; используется приas_string = true, по умолчанию"le";as_string: вернуть бинарную строку вместо числа; по умолчаниюfalse;uptime: использовать время после загрузки вместо системного времени; по умолчаниюfalse.
Для секунд бинарная строка занимает 4 байта, для миллисекунд и микросекунд — 8 байт.
Если as_string = false, результат возвращается числом, пока он помещается в
lua_Integer, и точной десятичной строкой для более широких значений. В
стандартном 32-битном профиле текущие Unix timestamp в миллисекундах и
микросекундах поэтому являются строками. Для фиксированного бинарного формата
используйте as_string = true.
Примеры:
-- Unix time в секундах
local ts = os.timestamp()
-- Unix time в миллисекундах
local ts_ms = os.timestamp("ms")
-- Unix time в микросекундах
local ts_us = os.timestamp("us")
-- Четыре байта, младший байт первым
local bytes_le = os.timestamp("s", "le", true)
-- Восемь байтов, старший байт первым
local bytes_be = os.timestamp("ms", "be", true)
-- Время после загрузки в миллисекундах
local uptime_ms = os.timestamp("ms", "le", false, true)
timezone = os.tz([timezone])
Получает или задаёт смещение часового пояса в часах.
Аргументы:
timezone(необязательно): целое смещение относительно UTC в часах от-24до24.
Возвращает:
- без аргумента — текущее смещение;
- с аргументом — ничего.
os.date([format, [timestamp]])
Преобразует Unix time в строку по шаблону format или в таблицу при format = "*t". Если timestamp не указан, используется текущее время.
К локальным форматам применяется смещение os.tz(). Начальный символ !
выбирает UTC и всегда игнорирует это смещение, например
os.date("!%Y-%m-%dT%H:%M:%SZ", timestamp).
Подробнее о форматах см. в документации Lua.
/ > table = os.date("*t", 906000490)
/ > os.date("today is %A, in %B")
today is Tuesday, in March
/ > os.date()
Tue Mar 12 15:35:36 2019
os.settime(…)
Устанавливает системное время. Поддерживаются две формы вызова:
os.settime(hours, minutes, seconds, month, day, year [, isdst]);os.settime{year=..., month=..., day=..., hour=..., min=..., sec=...}.
Возвращает установленное время в формате Unix time. Обычно следует передавать время UTC.
/ > os.settime{year=1970, month=1, day=1, hour=0, min=0, sec=0}
0
/ > os.settime{year=1970, month=1, day=1, hour=0, min=1, sec=0}
60
os.factoryreset()
Отменяет установленные OTA-обновления и перезагружает устройство с заводской прошивкой. Функция доступна только на устройствах с заводским разделом прошивки.
Аргументы: нет.
Возвращает: ничего.
os.factoryreset()
os.history([enable])
Включает или отключает запись истории команд, введённых в консоли. История доступна по клавишам «вверх» и «вниз». Для сохранения истории нужен смонтированный раздел SD или RAMFS, например fs.mount("/rfs", "ramfs").
Аргументы:
- enable (необязательно):
trueдля включения,falseдля отключения. Если аргумент не указан, функция возвращает текущее состояние.
Возвращает текущее состояние, если аргумент не указан; иначе ничего.
-- Включить историю
os.history(true)
os.logcons([enable])
Включение или отключение логирования. Если оно включено, сообщения журнала отображаются в консоли и записываются в файл /log/messages.log, если подключена SD-карта. Если оно отключено, сообщения журнала записываются в файл /log/messages.log, если подключена SD-карта.
Аргументы:
- enable (необязательно):
trueдля включения вывода,falseдля отключения. Если аргумент не указан, функция возвращает текущее состояние.
Возвращает текущее состояние, если аргумент не указан; иначе ничего.
-- Не выводить журнал в консоль
os.logcons(false)
os.loglevel([level])
Устанавливает уровень логирования. Уровень логирования контролирует объем информации журнала, который Lua RTOS отображает на консоли и записывает в файл /log/messages.log (если подключена SD-карта).
Аргументы:
- level (необязательно): уровень логирования, может быть os.LOG_ALL, os.LOG_INFO, os.LOG_EMERG, os.LOG_ALERT, os.LOG_CRIT, os.LOG_ERR, os.LOG_WARNING, os.LOG_NOTICE, os.LOG_DEBUG. Если этот аргумент не предоставлен, функция возвращает текущую настройку loglevel.
Возвращает: ничего или текущую настройку loglevel, если аргумент enable не предоставлен.
-- Show only error logs
os.loglevel(os.LOG_ERR)
os.syslog(message[, level])
Записывает сообщение в системный журнал (syslog).
Аргументы:
message: сообщение для записи в системный журнал
- level (необязательно): уровень логирования, может быть os.LOG_ALL, os.LOG_INFO, os.LOG_EMERG, os.LOG_ALERT, os.LOG_CRIT, os.LOG_ERR, os.LOG_WARNING, os.LOG_NOTICE, os.LOG_DEBUG. Если этот аргумент не предоставлен, функция возвращает текущую настройку loglevel.
Возвращает: ничего.
-- Log an informative message
os.syslog("foo", os.LOG_INFO)
os.rsyslog([server])
Включает или отключает логирование на удаленный сервер rsyslog.
Аргументы:
- server (необязательно): имя или IP-адрес удаленного сервера syslog. Пустая строка или 0.0.0.0 для отключения.
Возвращает: текущий установленный сервер rsyslog.
-- Retrieve the currently set rsyslog server
/ > os.rsyslog()
0.0.0.0
-- Set a new rsyslog server
/ > os.rsyslog("10.0.0.1")
10.0.0.1
-- Retrieve the currently set rsyslog server
/ > os.rsyslog()
10.0.0.1
-- Disable logging to a remote syslog server
/ > os.rsyslog("0.0.0.0")
0.0.0.0
os.shell([enable])
Включить или отключить оболочку Lua RTOS.
/ > ls
f 370 abp.lua
d - examples
d - sys
f 468 system.lua
f 388 wifi.lua
f 40 autorun.lua
/ > cd examples
/examples > ls
d - blocks
d - lua
d - a
f 0 system.lua
/examples >
Аргументы:
- enable (необязательно): true для включения / false для отключения. Если этот аргумент не предоставлен, функция возвращает текущую настройку оболочки.
Возвращает: ничего или текущую настройку оболочки (true/false), если аргумент enable не предоставлен.
os.exists(path)
Проверяет, существует ли файл или директория по указанному пути.
Аргументы:
- path: путь к файлу или директории.
Возвращает: true если файл или директория существует, false в противном случае.
/ > os.exists("/system.lua")
true
/ > os.exists("/nonexistent.lua")
false
os.isfile(path)
Проверяет, является ли указанный путь файлом.
Аргументы:
- path: путь для проверки.
Возвращает: true если путь существует и является файлом, false в противном случае.
/ > os.isfile("/system.lua")
true
/ > os.isfile("/examples")
false
os.isdir(path)
Проверяет, является ли указанный путь директорией.
Аргументы:
- path: путь для проверки.
Возвращает: true если путь существует и является директорией, false в противном случае.
/ > os.isdir("/examples")
true
/ > os.isdir("/system.lua")
false
os.clock()
Возвращает процессорное время в секундах, использованное данным процессом.
Аргументы: нет
Возвращает: число (время в секундах с момента запуска).
/ > os.clock()
0.123456
os.difftime(t1, t2)
Возвращает разницу между двумя временными метками.
Аргументы:
- t1: первая временная метка
- t2: вторая временная метка
Возвращает: число (разница в секундах между t1 и t2).
/ > start = os.time()
/ > -- ... some operations ...
/ > elapsed = os.difftime(os.time(), start)
os.remove(path)
Удаляет файл или директорию. Поддерживает wildcard (*) для удаления нескольких файлов. Путь, который не помещается в системный PATH_MAX, отклоняется с ошибкой и никогда не используется в усечённом виде.
Аргументы:
- path: путь к файлу, директории или шаблон с wildcard (*)
Возвращает: true в случае успеха, false и сообщение об ошибке в случае неудачи.
-- Удаление одного файла
/ > os.remove("/tmp/test.txt")
true
-- Удаление директории
/ > os.remove("/tmp/mydir")
true
-- Удаление по шаблону
/ > os.remove("/tmp/*.tmp")
true
os.rename(oldname, newname)
Переименовывает файл или директорию.
Аргументы:
- oldname: текущее имя файла или директории
- newname: новое имя файла или директории
Возвращает: true в случае успеха, false и сообщение об ошибке в случае неудачи.
/ > os.rename("/old.txt", "/new.txt")
true
os.tmpname()
Генерирует уникальное имя временного файла.
Аргументы: нет
Возвращает: строку с путем к временному файлу.
/ > tmp = os.tmpname()
/ > print(tmp)
/tmp/lua_a1B2c3
os.exit([code [, close]])
Завершает выполнение программы.
Аргументы:
- code (опционально): код завершения (число или boolean). true = EXIT_SUCCESS, false = EXIT_FAILURE. По умолчанию EXIT_SUCCESS.
- close (опционально): если true, закрывает состояние Lua перед выходом.
Возвращает: ничего (программа завершается).
Примечание: На ESP32 при code = true выполняется перезагрузка системы через esp_restart().
-- Успешное завершение
/ > os.exit()
-- Завершение с кодом ошибки
/ > os.exit(false)
-- Завершение с закрытием состояния Lua
/ > os.exit(0, true)
os.get_partition()
Возвращает метку текущего запущенного раздела.
Аргументы: нет
Возвращает: строку с меткой раздела.
/ > os.get_partition()
lua_rtos
os.change_partition()
Переключается на следующий OTA-раздел и перезагружает систему.
Аргументы: нет
Возвращает: ничего (система перезагружается).
os.partitions()
Выводит список всех разделов flash-памяти.
Аргументы: нет
Возвращает: ничего (выводит информацию в консоль).
Type, SubType, Address, Size, Encrypted, Label
--------------------------------------------------
0x01, 0x00, 0x10000, 0x100000, 0, factory
0x01, 0x10, 0x110000, 0x100000, 0, ota_0
os.passwd()
Интерактивная смена системного пароля.
Аргументы: нет
Возвращает: ничего.
/ > os.passwd()
Changing password for user 'admin'
Old password: ********
New password: ********
Retype new password: ********
Password changed
os.autopasswd(password)
Автоматическая установка пароля без подтверждения.
Аргументы:
- password: новый пароль
Возвращает: true в случае успеха, false в случае неудачи.
/ > os.autopasswd("newpassword123")
true
os.now()
Возвращает время в миллисекундах с момента загрузки системы.
Аргументы: нет
Возвращает: миллисекунды числом, пока значение помещается в lua_Integer,
иначе точной десятичной строкой. Счётчик основан на 64-битном монотонном
таймере и не обнуляется при переполнении 32-битного системного тика.
/ > os.now()
12345678
os.stdout([path])
Перенаправляет stdout в файл или возвращает вывод в консоль.
Аргументы:
- path (опционально): путь к файлу для перенаправления вывода. Если nil или не указано, сбрасывает перенаправление.
Возвращает: ничего.
-- Перенаправить вывод в файл
/ > os.stdout("/tmp/output.txt")
/ > print("This goes to file")
/ > os.stdout() -- сброс
os.clear()
Очищает экран консоли.
Аргументы: нет
Возвращает: ничего.
/ > os.clear()
os.ls([path [, to_table]])
Выводит список файлов в директории. Поддерживает wildcard (*).
Аргументы:
- path (опционально): путь к директории или шаблон. По умолчанию текущая директория.
- to_table (опционально): если 1, возвращает таблицу вместо вывода в консоль.
Возвращает: ничего или массив строк с именами файлов (если to_table = 1).
-- Вывод списка файлов
/ > os.ls()
f 370 abp.lua
d - examples
...
-- С wildcard
/ > os.ls("*.lua")
-- Вернуть таблицей
/ > files = os.ls("/", 1)
/ > for _, name in ipairs(files) do print(name) end
os.cd([path])
Изменяет текущую директорию.
Аргументы:
- path (опционально): путь к новой директории. По умолчанию “/”.
Возвращает: ничего.
/ > os.cd("/examples")
/examples >
os.pwd()
Возвращает текущую директорию.
Аргументы: нет
Возвращает: строку с путем текущей директории.
/examples > os.pwd()
/examples
os.mkdir(path)
Создает директорию.
Аргументы:
- path: путь к создаваемой директории
Возвращает: true в случае успеха, false в случае неудачи.
/ > os.mkdir("/tmp/newdir")
true
os.stats([what])
Выполняет полную сборку мусора и возвращает или печатает сведения о памяти системы.
Аргументы:
what = "mem": вернуть объём свободной памяти;what = "table": вернуть таблицу с полямиfreeиmin;- без аргумента: напечатать текущий и минимальный объём свободной памяти и ничего не возвращать.
Возвращает: число для "mem", таблицу для "table" или ничего без аргумента.
-- Напечатать текущую и минимальную свободную память
/ > os.stats()
Free mem: 45632
Free mem min: 40128
-- Получить свободную память числом
/ > free = os.stats("mem")
-- Детальная информация
/ > s = os.stats("table")
/ > print(s.free, s.min)
os.format(path)
Форматирует файловую систему.
Аргументы:
- path: путь к монтированной файловой системе
Возвращает: ничего. Требует подтверждение пользователя.
/ > os.format("/sd")
This will erase all data in /sd. Are you sure? (y/n): y
Format complete
os.cat(path)
Выводит содержимое файла на консоль.
Аргументы:
- path: путь к файлу
Возвращает: ничего.
/ > os.cat("/system.lua")
-- contents of file...
os.more(path)
Выводит содержимое файла на консоль с постраничным просмотром.
Аргументы:
- path: путь к файлу
Возвращает: ничего.
/ > os.more("/largefile.txt")
-- shows content page by page --
Press any key to continue...
os.dmesg()
Выводит содержимое системного журнала (kernel log).
Аргументы: нет
Возвращает: ничего.
/ > os.dmesg()
[ 0.000] boot: ESP-IDF v4.4.1-dirty 2nd stage bootloader
...
os.run([code])
Выполняет Lua код. Если код не указан, принимает ввод с UART.
Аргументы:
- code (опционально): строка с Lua кодом для выполнения
Возвращает: ничего.
-- Выполнить код из строки
/ > os.run("print('Hello from run')")
Hello from run
-- Ввести код интерактивно
/ > os.run()
> local x = 10
> print(x * 2)
> -- Ctrl+D для завершения
20
os.lua_running()
Проверяет, запущен ли Lua.
Аргументы: нет
Возвращает: true если Lua запущен, false в противном случае.
/ > os.lua_running()
true
os.lua_interpreter()
Проверяет, активен ли Lua интерпретатор.
Аргументы: нет
Возвращает: true если интерпретатор активен, false в противном случае.
/ > os.lua_interpreter()
true
os.bootcount()
Возвращает счетчик загрузок системы.
Аргументы: нет
Возвращает: число (количество загрузок).
/ > os.bootcount()
42
os.edit(path)
Запускает текстовый редактор для редактирования файла.
Аргументы:
- path: путь к файлу для редактирования
Возвращает: ничего.
/ > os.edit("/system.lua")
-- открывается редактор --
os.df([path [, console]])
Возвращает информацию о свободном месте на диске (disk free).
Аргументы:
- path (опционально): путь к файловой системе. По умолчанию “/”.
- console (опционально): если true, выводит информацию в консоль.
Возвращает: свободное место и общий размер либо ничего (если console = true).
Каждое значение возвращается числом, пока помещается в lua_Integer, иначе
точной десятичной строкой. Поэтому том размером 2 ГиБ в стандартном 32-битном
Lua-профиле возвращает строку "2147483648", а не отрицательное число.
-- Вывод в консоль
/ > os.df("/sd", true)
Free: 1024 MB, Total: 2048 MB
-- Получить значения
/ > free, total = os.df("/sd")
/ > print(free, type(total), total)
1073741824 string 2147483648
os.locks()
Выводит список заблокированных драйверов).
Аргументы: нет
Возвращает: ничего.
/ > os.locks()
Driver Owner
------------------------
GPIO task1
UART task2
os.cp(src, dst)
Копирует файл через временный файл в каталоге назначения. Готовый временный
файл заменяет dst атомарным rename(): при нехватке памяти, ошибке чтения
или записи прежний файл назначения остаётся неизменным, а незавершённый
временный файл удаляется.
Аргументы:
- src: путь к исходному файлу
- dst: путь к целевому файлу
Возвращает: true в случае успеха, false в случае неудачи.
/ > os.cp("/system.lua", "/backup/system.lua")
true