Changes for page Руководство по скриптам Lua
Last modified by superadmin on 2026/06/15 21:57
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -277,7 +277,7 @@ 277 277 (% style="text-align: left;" %) 278 278 Подключение прикладного Lua-модуля осуществляется функцией require. Рекомендуемая форма использования: 279 279 280 -{{code language="java"}}280 +{{code}} 281 281 local log = require("log") 282 282 {{/code}} 283 283 ... ... @@ -284,7 +284,7 @@ 284 284 (% style="text-align: left;" %) 285 285 Вызвать функцию Lua-модуля в таком случае можно следующим образом, например: 286 286 287 -{{code language="java"}}287 +{{code}} 288 288 local logger = log.get_logger("MyLogger") 289 289 {{/code}} 290 290 ... ... @@ -402,7 +402,7 @@ 402 402 (% style="text-align: left;" %) 403 403 В перечислении {{code language="none"}}fec.TYPE{{/code}} описаны различные типы периферии. Для управления пригодны типы {{code language="none"}}fec.TYPE.RELE{{/code}} (выход на плате контроллера) и {{code language="none"}}fec.TYPE.SART_RELE{{/code}} (выход на модуле расширения). Для управления выходами следует использовать функцию set_value(тип периферии, ID элемента, состояние), где в первый параметр необходимо передать одно из значений перечисления {{code language="none"}}fec.TYPE{{/code}}, во второй параметр — идентификатор (адрес) элемента для управления, в третий параметр — требуемое состояние (для выходов это 0 = Выключено, 1 = Включено). Например: 404 404 405 -{{code language="java"}}405 +{{code}} 406 406 local fec = require("fec") 407 407 fec.set_value(fec.TYPE.RELE, 1, 1) 408 408 {{/code}} ... ... @@ -419,7 +419,7 @@ 419 419 (% style="text-align: left;" %) 420 420 Поскольку управление светодиодной / звуковой индикацией на считывателях осуществляется в рамках алгоритмов доступа и состояние красного, зелёного светодиодов и звука взаимосвязано (если красный светодиод горит, то зелёный погашен и др.) — для удобства управления всей индикацией реализована функция-обёртка {{code language="none"}}fec.set_reader(ID считывателя, зелёный светодиод, красный светодиод, звук){{/code}}. Пример использования функции приведён ниже: 421 421 422 -{{code language="java"}}422 +{{code}} 423 423 local fec = require("fec") 424 424 fec.set_reader(1, fec.DIOD.MODE_OFF, fec.DIOD.MODE_025_025, fec.BEEPER.MODE_OFF) 425 425 {{/code}} ... ... @@ -441,7 +441,7 @@ 441 441 (% style="text-align: left;" %) 442 442 Ниже приведён пример использования модуля HTTP для отправки GET-запроса на IP-адрес веб-сайта (% class="nolink" %)http:~/~/example.com. 443 443 444 -{{code language="java"}}444 +{{code}} 445 445 local log = require("log") 446 446 local http = require("http") 447 447 local logger = log.get_logger("script.lua") ... ... @@ -491,7 +491,7 @@ 491 491 (% style="text-align: left;" %) 492 492 Пример: 493 493 494 -{{code language="java"}}494 +{{code}} 495 495 -- параметры запроса 496 496 local http_request = { 497 497 url = "http://93.184.216.34", ... ... @@ -513,7 +513,7 @@ 513 513 (% style="text-align: left;" %) 514 514 Для передачи запроса с телом в форме текста достаточно присвоить параметру запроса body соответствующее строковое значение. Например: 515 515 516 -{{code language="java"}}516 +{{code}} 517 517 local http_request = { 518 518 url = "http://10.1.30.3:8080/myservice", 519 519 method = http.METHOD.POST, ... ... @@ -526,7 +526,7 @@ 526 526 (% style="text-align: left;" %) 527 527 Модуль также позволяет передавать запрос с телом в форме JSON-документа, который автоматически формируется из Lua-таблицы. Например: 528 528 529 -{{code language="java"}}529 +{{code}} 530 530 local http_request = { 531 531 url = "http://10.1.30.3:8080/myservice", 532 532 method = http.METHOD.POST ... ... @@ -597,7 +597,7 @@ 597 597 (% style="text-align: left;" %) 598 598 Пример приведён ниже: 599 599 600 -{{code language="java"}}600 +{{code}} 601 601 local log = require("log") 602 602 local logger = log.get_logger("MyLogger") 603 603 ... ... @@ -734,7 +734,7 @@ 734 734 735 735 Получить список точек доступа с их идентификаторами можно через поле {{code language="none"}}lonpacs.ap_instance{{/code}}, которое заполняется при инициализации модуля и виртуальной Lua-машины (до того, как будет выполняться пользовательский Lua-скрипт). Поле {{code language="none"}}lonpacs.ap_instance{{/code}} содержит Lua-таблицу, в которой ключами являются токены точек доступа, а значениями — Lua-таблицы с системными параметрами точек доступа. Структура таблицы представлена в коде ниже: 736 736 737 -{{code language="java"}}737 +{{code}} 738 738 lonpacs.ap = { 739 739 "токен первой точки доступа" = { 740 740 ... ... ... @@ -1133,7 +1133,7 @@ 1133 1133 1134 1134 Функция {{code language="none"}}parse_ap_status{{/code}} возвращает Lua-таблицу следующего вида: 1135 1135 1136 -{{code language="java"}}1136 +{{code}} 1137 1137 { 1138 1138 door_state = .. 1139 1139 lock_state = .. ... ... @@ -1304,7 +1304,7 @@ 1304 1304 (% style="text-align: left;" %) 1305 1305 Получить список точек доступа с их идентификаторами можно через поле {{code language="none"}}pacs.ap{{/code}}, которое заполняется при инициализации модуля и виртуальной Lua-машины (до того, как будет выполняться пользовательский Lua-скрипт). Поле {{code language="none"}}pacs.ap{{/code}} содержит Lua-таблицу, в которой ключами являются токены точек доступа, а значениями — Lua-таблицы с системными параметрами точек доступа. Структура таблицы представлена в коде ниже: 1306 1306 1307 -{{code language="java"}}1307 +{{code}} 1308 1308 pacs.ap = { 1309 1309 "токен первой точки доступа" = { 1310 1310 "#" = 0, ... ... @@ -1320,7 +1320,7 @@ 1320 1320 (% style="text-align: left;" %) 1321 1321 Соответственно, для перебора точек доступа (например, чтобы для каждой точки доступа проинциализировать свой алгоритм) удобно использовать следующий код: 1322 1322 1323 -{{code language="java"}}1323 +{{code}} 1324 1324 for key,item in pairs(pacs.ap) do 1325 1325 if item["#"] == 0 or item["#"] == 1 then 1326 1326 -- код обработки точки доступа с токеном = key ... ... @@ -1423,7 +1423,7 @@ 1423 1423 (% style="text-align: left;" %) 1424 1424 В режиме доступа «Пользовательский» для реализации алгоритма может потребоваться задать из Lua-скрипта для каждой точки доступа системные параметры. Для указания параметров из Lua-скрипта предназначена функция {{code language="none"}}pacs.set_configuration(token, {...}){{/code}}, в первом аргументе необходимо передать токен точки доступа, во втором аргументе — Lua-таблицу с параметрами. Например: 1425 1425 1426 -{{code language="java"}}1426 +{{code}} 1427 1427 for key,item in pairs(pacs.ap) do 1428 1428 local configuration = {} 1429 1429 configuration["input.mode"] = "card" ... ... @@ -1555,7 +1555,7 @@ 1555 1555 {{info title="ВНИМАНИЕ"}} 1556 1556 В данном случае это должны быть именно «глобальные функции», определённые, например, следующим образом: 1557 1557 1558 -{{code language="java"}}1558 +{{code}} 1559 1559 function pacs_reader_input(token, data) 1560 1560 -- тело функции 1561 1561 end ... ... @@ -1563,7 +1563,7 @@ 1563 1563 1564 1564 Локальные функции с таким же именем не будут вызваны: 1565 1565 1566 -{{code language="java"}}1566 +{{code}} 1567 1567 local pacs_reader_input = function(token, data) 1568 1568 -- функция не будет вызвана 1569 1569 end ... ... @@ -1596,7 +1596,7 @@ 1596 1596 1597 1597 В первом аргументе {{code language="none"}}token{{/code}} передаётся токен точки доступа, на которой предъявлен идентификатор; во втором аргументе передаётся Lua-таблица с идентификаторами: 1598 1598 1599 -{{code language="java"}}1599 +{{code}} 1600 1600 { 1601 1601 "facility_code" = "123", 1602 1602 "card_number" = "12345", ... ... @@ -1622,7 +1622,7 @@ 1622 1622 1623 1623 Второй аргумент {{code language="none"}}args{{/code}} — параметры разрешения доступа: 1624 1624 1625 -{{code language="java"}}1625 +{{code}} 1626 1626 { 1627 1627 "use_extended_time" = true, 1628 1628 "access_time_duration" = число (unix-timestamp), ... ... @@ -1771,7 +1771,7 @@ 1771 1771 (% style="text-align: left;" %) 1772 1772 При изменении состояния какого-либо элемента периферии (обычно, это различные входы) вызывается функция-обработчик {{code language="none"}}pacs_input{{/code}}. Ниже приведён Lua-код, который позволит в зависимости от типа элемента периферии получить его логическое состояние. 1773 1773 1774 -{{code language="java"}}1774 +{{code}} 1775 1775 local fec = require("fec") 1776 1776 1777 1777 -- Логическое состояние элемента ... ... @@ -1855,7 +1855,7 @@ 1855 1855 ((( 1856 1856 Первый аргумент — токен точки доступа. Второй аргумент — Lua-таблица с идентификаторами (такая же, какая получена в функции-обработчике {{code language="none"}}pacs_reader_input{{/code}}): 1857 1857 1858 -{{code language="java"}}1858 +{{code}} 1859 1859 { 1860 1860 "facility_code" = "123", 1861 1861 "card_number" = "12345", ... ... @@ -1944,7 +1944,7 @@ 1944 1944 1945 1945 Второй аргумент — Lua-таблица со значением состояния по различным «осям»: 1946 1946 1947 -{{code language="java"}}1947 +{{code}} 1948 1948 { 1949 1949 "lock" = Unlocked, 1950 1950 "door" = Open, ... ... @@ -1985,7 +1985,7 @@ 1985 1985 (% style="text-align: left;" %) 1986 1986 Пример использования модуля приведён ниже: 1987 1987 1988 -{{code language="java"}}1988 +{{code}} 1989 1989 local storage = require("storage") 1990 1990 1991 1991 local my_options = storage.get("my_key") ... ... @@ -2040,7 +2040,7 @@ 2040 2040 (% style="text-align: left;" %) 2041 2041 Пример: 2042 2042 2043 -{{code language="java"}}2043 +{{code}} 2044 2044 local log = require("log") 2045 2045 local logger = log.get_logger("script.lua") 2046 2046