Скрипты — различия между версиями

Материал из WebHMI Wiki
Перейти к: навигация, поиск
Строка 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

О скриптах LUA

WebHMI начиная с версии 1.10.0.3393 позволяет создавать пользовательские программы на языке LUA [1].

Управление программами LUA происходит в пункте меню Setup --> LUA Scripts:
Lua-scripts-1.png

Lua-scripts-2.png

Каждый скрипт должен содержать в себе функцию с именем main. Именно она будет вызвана в необходимый момент (в зависимости от настроек скрипта - в каждом цикле, при действии на dashboard или при изменении значения регистра). Также, весь скрипт будет выполнен один раз при запуске демона. Это может быть полезно для инициализации некоторых переменный и т.п.

В функцию main будет передан один параметр — userId — ID пользователя, который выполнил этот скрипт. Если скрипт выполняется в каждом цикле или при изменении регистра то userId будет равен нулю.

Помимо стандартных функций LUA, в WebHMI определены еще такие функции:

  • GetReg
  • SetReg
  • WriteReg
  • AddInfoMessage
  • AddWarningMessage
  • AddAlertMessage
  • SendSMS
  • ERROR
  • INFO
  • DEBUG
  • TRACE

Для удобства работы с регистрами из программ LUA, каждому регистру можно присвоить символическое имя и работать из LUA уже с этим именем. Это имя указывается в настройках регистра в поле Variable name:
Lua-scripts-3.png
Lua-scripts-4.png

Пример простейшего скрипта, который показывает вызовы всех 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 в случае успеха.