Скрипты — различия между версиями
Строка 1: | Строка 1: | ||
== О скриптах LUA == | == О скриптах LUA == | ||
− | WebHMI начиная с версии 1.10.0.3393 позволяет создавать пользовательские программы на языке LUA. | + | WebHMI начиная с версии 1.10.0.3393 позволяет создавать пользовательские программы на языке LUA [https://ru.wikipedia.org/wiki/Lua]. |
Управление программами LUA происходит в пункте меню Setup --> LUA Scripts:<br> | Управление программами LUA происходит в пункте меню Setup --> LUA Scripts:<br> | ||
[[Файл:Lua-scripts-1.png|600px]]<br> | [[Файл:Lua-scripts-1.png|600px]]<br> | ||
− | [[Файл:Lua-scripts-2.png|600px]] | + | [[Файл:Lua-scripts-2.png|600px]]<br> |
Каждый скрипт должен содержать в себе функцию с именем '''main'''. Именно она будет вызвана в необходимый момент (в зависимости от настроек скрипта - в каждом цикле, при действии на dashboard или при изменении значения регистра). Также, весь скрипт будет выполнен один раз при запуске демона. Это может быть полезно для инициализации некоторых переменный и т.п. | Каждый скрипт должен содержать в себе функцию с именем '''main'''. Именно она будет вызвана в необходимый момент (в зависимости от настроек скрипта - в каждом цикле, при действии на dashboard или при изменении значения регистра). Также, весь скрипт будет выполнен один раз при запуске демона. Это может быть полезно для инициализации некоторых переменный и т.п. | ||
Строка 23: | Строка 23: | ||
* DEBUG | * DEBUG | ||
* TRACE | * TRACE | ||
+ | |||
+ | Для удобства работы с регистрами из программ LUA, каждому регистру можно присвоить символическое имя и работать из LUA уже с этим именем. Это имя указывается в настройках регистра в поле '''Variable name''':<br> | ||
+ | [[Файл:Lua-scripts-3.png|600px]]<br> | ||
+ | [[Файл:Lua-scripts-4.png|600px]]<br> | ||
Пример простейшего скрипта, который показывает вызовы всех WebHMI функций:<br> | Пример простейшего скрипта, который показывает вызовы всех WebHMI функций:<br> |
Версия 11:16, 22 декабря 2015
Содержание
- 1 О скриптах LUA
- 2 GetReg(variable_name)
- 3 SetReg(variable_name, new_value)
- 4 WriteReg(variable_name, new_value)
- 5 SendSMS(phone_number, message)
- 6 AddInfoMessage(message, userId)
- 7 AddWarningMessage(message, userId)
- 8 AddAlertMessage(message, userId)
- 9 ERROR(message)
- 10 INFO(message)
- 11 DEBUG(message)
- 12 TRACE(message)
О скриптах LUA
WebHMI начиная с версии 1.10.0.3393 позволяет создавать пользовательские программы на языке LUA [1].
Управление программами LUA происходит в пункте меню Setup --> LUA Scripts:
Каждый скрипт должен содержать в себе функцию с именем main. Именно она будет вызвана в необходимый момент (в зависимости от настроек скрипта - в каждом цикле, при действии на dashboard или при изменении значения регистра). Также, весь скрипт будет выполнен один раз при запуске демона. Это может быть полезно для инициализации некоторых переменный и т.п.
В функцию main будет передан один параметр — userId — ID пользователя, который выполнил этот скрипт. Если скрипт выполняется в каждом цикле или при изменении регистра то userId будет равен нулю.
Помимо стандартных функций LUA, в WebHMI определены еще такие функции:
- GetReg
- SetReg
- WriteReg
- AddInfoMessage
- AddWarningMessage
- AddAlertMessage
- SendSMS
- ERROR
- INFO
- DEBUG
- TRACE
Для удобства работы с регистрами из программ LUA, каждому регистру можно присвоить символическое имя и работать из LUA уже с этим именем. Это имя указывается в настройках регистра в поле Variable name:
Пример простейшего скрипта, который показывает вызовы всех WebHMI функций:
function main (userId) local randomVal = GetReg("random_val"); SetReg("random_val_copy", randomVal); WriteReg("result", randomVal + 2); AddInfoMessage("This is lua script", userId); AddWarningMessage("Warning. This is lua script", userId); AddAlertMessage("Alert! This is lua script", userId); SendSMS("380501234567", "This is a test SMS"); ERROR("This message will be added to communication log with ERROR level"); INFO("This message will be added to communication log with INFO level"); DEBUG("This message will be added to communication log with DEBUG level"); TRACE("This message will be added to communication log with TRACE level"); end
GetReg(variable_name)
Функция GetReg возвращает текущее значение регистра с именем переменной variable_name. Если переменная не найдена или регистра не был прочитан то возвращается значение nil.
SetReg(variable_name, new_value)
Функция SetReg устанавливает текущее значение регистра с именем переменной variable_name в new_value для текущего цикла цикле. Запись во внешние устройства не происходит и при опросе этого регистра в последующих циклах будет прочитано старое значение. Возвращает 1 если произошла ошибка и 0 в случае успеха.
WriteReg(variable_name, new_value)
Функция WriteReg устанавливает текущее значение регистра с именем переменной variable_name в new_value для текущего цикла цикле и записывает это значение во внешнее устройство в начале следующего цикла. При опросе этого регистра в последующих циклах будет прочитано новое значение (если оно не изменится самим устройством). Возвращает 1 если произошла ошибка и 0 в случае успеха.
SendSMS(phone_number, message)
Функция SendSMS отправляет запрос на отправку SMS на номер phone_number с текстом message. Возвращает 1 если произошла ошибка и 0 в случае успеха. Успех не означает доставку сообщения, а только успех при создании запроса. Для работы этой функции необходимо наличие интернет-подключения и предоплаты за услуги SMS.
Формат phone_number — только цифры с указанием кода страны, без пробелов, скобок, знака плюс. Например, 380123456789.
AddInfoMessage(message, userId)
Функция AddInfoMessage добавляет сообщение message с уровнем Info в журнал Messages. userId — это ID пользователя, от имени которого должно быть добавлено сообщение. Возвращает 1 если произошла ошибка и 0 в случае успеха.
AddWarningMessage(message, userId)
Функция AddWarningMessage добавляет сообщение message с уровнем Warning в журнал Messages. userId — это ID пользователя, от имени которого должно быть добавлено сообщение. Возвращает 1 если произошла ошибка и 0 в случае успеха.
AddAlertMessage(message, userId)
Функция AddAlertMessage добавляет сообщение message с уровнем Alert в журнал Messages. userId — это ID пользователя, от имени которого должно быть добавлено сообщение. Возвращает 1 если произошла ошибка и 0 в случае успеха.
ERROR(message)
Функция ERROR добавляет сообщение message уровня ERROR в Communication Log (Maintenance --> Communication Log). Возвращает 1 если произошла ошибка и 0 в случае успеха.
INFO(message)
Функция ERROR добавляет сообщение message уровня INFO в Communication Log (Maintenance --> Communication Log). Возвращает 1 если произошла ошибка и 0 в случае успеха.
DEBUG(message)
Функция ERROR добавляет сообщение message уровня DEBUG в Communication Log (Maintenance --> Communication Log). Возвращает 1 если произошла ошибка и 0 в случае успеха.
TRACE(message)
Функция ERROR добавляет сообщение message уровня TRACE в Communication Log (Maintenance --> Communication Log). Возвращает 1 если произошла ошибка и 0 в случае успеха.