мНет описания правки |
мНет описания правки |
||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE:Lua}} | {{DISPLAYTITLE:Lua}} | ||
{{Breadcrumbs|Lua}} | {{Breadcrumbs|Lua}} | ||
{{Warning|ВНИМАНИЕ! Информация на этой странице сильно устарела!}} | {{Warning|ВНИМАНИЕ! Информация на этой странице сильно устарела!}} | ||
Текущая версия от 10:16, 29 января 2025
ВНИМАНИЕ! Информация на этой странице сильно устарела!
Общие сведения
Cкрипт homed.lua
это подключаемый модуль языка Lua, упрощающий написание скриптов для автоматизации работы сервисов HOMEd. Для работы скрипта необходимо наличие допонительных модулей:
lua-cjson
lua-mosquitto
Загрузить актуальную версию скрипта можно на GitHub.
Функции модуля
tickEvent(timestamp)
Функция, которая вызывается каждую секунду в процессе работы скрипта. Аргументы:
timestamp
- текущая метка времени в формате Unix Time
deviceEvent(service, device, endpoint, data)
Функция, которая вызывается каждый раз, когда скрипт получает сообщение с данными от устройства. Аргументы:
service
- сервис, например "zigbee"
device
- адрес или имя устройства (если в конфигурации включен параметр names
)
endpoint
- номер конечной точки, от которого поступили данные (nil, если это "одноканальное" устройство)
data
- таблица с данными, соответствует содержимому JSON-объекта в MQTT-сообщении
deviceRequest(service, device, endpoint, data)
Отправка запроса для управления устройством. Аргументы:
service
- сервис, например "zigbee"
device
- адрес или имя устройства
endpoint
- номер конечной точки, от которого поступили данные (nil, если это "одноканальное" устройство)
data
- таблица с данными, соответствует содержимому JSON-объекта в MQTT-сообщении
setHost(value)
Настройка адреса MQTT-брокера. Аргументы:
value
- адрес, по умолчанию localhost
setPort(value)
Настройка номера порта MQTT-брокера. Аргументы:
value
- номер порта, по умолчанию 1883
setUsername(value)
Настройка имени пользователя для подключения к MQTT-брокеру. Аргументы:
value
- имя пользователя, по умолчанию отсутствует (nil)
setPassword(value)
Настройка пароля для подключения к MQTT-брокеру. Аргументы:
value
- пароль, по умолчанию отсутствует (nil)
setPrefix(value)
Настройка корневого MQTT-топика. Аргументы:
value
- корневой топик, по умолчанию homed
start()
Запуск подключения к брокеру и таймера, вызывающего функцию tickEvent
.
stop()
Отключение от брокера и остановка таймера, вызывающего функцию tickEvent
.
Использование скриптов
Чтобы написать скрипт автоматизации, нужно создать папку, в которой будет находиться скрипт, например:
$ mkdir -p /opt/lua
В эту папку необходимо скачать файл модуля:
$ wget -O /opt/lua/homed.lua https://raw.githubusercontent.com/u236/homed-lua-module/main/homed.lua
И создать файл скрипта, например, /opt/lua/my.lua
. Пример скрипта:
homed = require('homed')
homed.tickEvent = function(timestamp)
-- данный пример изменяет состояние реле каждые 5 минут
time = os.date('*t')
if time.sec == 0 and time.min % 5 == 0 then
homed.deviceRequest('zigbee', 'my relay', nil, {status = 'toggle'})
end
end
homed.deviceEvent = function(service, device, endpoint, data)
-- данный пример включает реле, если обранужено нажатие на кнопку
if (device == 'my button' and data['action'] == 'singleClick') then
homed.deviceRequest('zigbee', 'my relay', nil, {status = 'on'})
end
end
homed.start()
Запуск скрипта:
$ lua /opt/lua/my.lua