Changes for page Руководство по скриптам Lua
Last modified by superadmin on 2026/06/15 21:57
Summary
-
Page properties (2 modified, 0 added, 0 removed)
-
Objects (0 modified, 1 added, 0 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. pugachevskaya_elena1 +XWiki.superadmin - Content
-
... ... @@ -40,7 +40,7 @@ 40 40 == {{id name="РуководствопоскриптамLua-Какредактироватьскрипт"/}}Как редактировать скрипт == 41 41 42 42 (% style="text-align: left;" %) 43 -Для удобство редактирования и отладки скрипта автоматизации предназначен текстовый online-редактор, доступный в наших продуктах по адресу {{code language="none"}}http://[ip-address]/lua-editor/{{/code}} или ##http:~/~/[ip-address]/ (% style="color: rgb(51,51,51);" %)internal/(%%)lua-editor/##.43 +Для удобство редактирования и отладки скрипта автоматизации предназначен текстовый online-редактор, доступный в наших продуктах по адресу {{code language="none"}}http://[ip-address]/lua-editor/{{/code}} или ##http:~/~/[ip-address]/internal/(%%)lua-editor/##. 44 44 45 45 (% style="text-align: left;" %) 46 46 1. В левом блоке — текст скрипта автоматизации. Внесите в него изменения, для сохранения нажмите на кнопку «Сохранить» внизу. ... ... @@ -250,7 +250,6 @@ 250 250 )))|(% style="text-align: left;" %)((( 251 251 Все продукты 252 252 )))|(% style="text-align: left;" %)((( 253 -(% class="content-wrapper" %) 254 254 ((( 255 255 Асинхронное выполнение отложенных по времени или периодических действий. 256 256 ... ... @@ -277,7 +277,7 @@ 277 277 (% style="text-align: left;" %) 278 278 Подключение прикладного Lua-модуля осуществляется функцией require. Рекомендуемая форма использования: 279 279 280 -{{code}} 279 +{{code language="java"}} 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}} 286 +{{code language="java"}} 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}} 404 +{{code language="java"}} 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}} 421 +{{code language="java"}} 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}} 443 +{{code language="java"}} 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}} 493 +{{code language="java"}} 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}} 515 +{{code language="java"}} 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}} 528 +{{code language="java"}} 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}} 599 +{{code language="java"}} 601 601 local log = require("log") 602 602 local logger = log.get_logger("MyLogger") 603 603 ... ... @@ -633,7 +633,6 @@ 633 633 634 634 loninput.lua позволяет «подписаться» на изменения состояния входов. Для управления «подписчиками» в модуле доступны следующие функции: 635 635 636 -(% class="wrapped" %) 637 637 |=((( 638 638 Функция 639 639 )))|=((( ... ... @@ -672,7 +672,6 @@ 672 672 673 673 В функцию {{code language="none"}}on_loninput_input_state_changed{{/code}} передаются следующие параметры: 674 674 675 -(% class="wrapped" %) 676 676 |=((( 677 677 Параметр 678 678 )))|=((( ... ... @@ -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}} 734 +{{code language="java"}} 738 738 lonpacs.ap = { 739 739 "токен первой точки доступа" = { 740 740 ... ... ... @@ -746,13 +746,12 @@ 746 746 } 747 747 {{/code}} 748 748 749 - (% style="color: rgb(51,51,51);" %)Каждая точка доступа в списке — это либо точка доступа модуля расширения МДС, либо одна из точек доступа М2.746 +Каждая точка доступа в списке — это либо точка доступа модуля расширения МДС, либо одна из точек доступа М2. 750 750 751 751 ===== {{id name="РуководствопоскриптамLua-Управлениеточкойдоступа"/}}Управление точкой доступа ===== 752 752 753 753 Для управления точками доступа на модулях расширения доступна функция {{code language="none"}}transmit_status(token, status){{/code}}, которая позволяет отправлять модулям команды управления. Функция принимает следующие параметры: 754 754 755 -(% class="wrapped" %) 756 756 |=((( 757 757 Параметр 758 758 )))|=((( ... ... @@ -779,9 +779,8 @@ 779 779 Команда управления (требуемый статус точки доступа); значение из перечисления {{code language="none"}}lonpacs.AP_COMMAND{{/code}} (см. ниже) 780 780 ))) 781 781 782 - (% style="color: rgb(51, 51, 51); color: rgb(51, 51, 51)" %)Для управления точкам доступа доступны следующие команды (значения параметра {{code language="none"}}status{{/code}}):778 +Для управления точкам доступа доступны следующие команды (значения параметра {{code language="none"}}status{{/code}}): 783 783 784 -(% class="wrapped" %) 785 785 |=((( 786 786 Команда 787 787 )))|=((( ... ... @@ -848,7 +848,6 @@ 848 848 849 849 Модуль {{code language="none"}}lonpacs.lua{{/code}} позволяет «подписаться» на события изменения состояния точек доступа, мониторинга связи с точками доступа, изменения состояния прохода (фазы алгоритма прохода). Для управления «подписчиками» в модуле доступны следующие функции: 850 850 851 -(% class="wrapped" %) 852 852 |=((( 853 853 Функция 854 854 )))|=((( ... ... @@ -931,7 +931,6 @@ 931 931 932 932 Параметр {{code language="none"}}ap_status{{/code}} может принимать одно из следующих значений: 933 933 934 -(% class="wrapped" %) 935 935 |=((( 936 936 Состояние точки доступа 937 937 )))|=((( ... ... @@ -946,7 +946,7 @@ 946 946 )))|((( 947 947 0 948 948 )))|((( 949 - (% style="color: rgb(51,51,51);" %)Точка доступа в состоянии ожидания транзакции942 +Точка доступа в состоянии ожидания транзакции 950 950 ))) 951 951 |((( 952 952 {{code language="none"}} ... ... @@ -964,7 +964,7 @@ 964 964 )))|((( 965 965 2 966 966 )))|((( 967 - (% style="color: rgb(51,51,51);" %)Старт транзакции прохода по кнопке выхода960 +Старт транзакции прохода по кнопке выхода 968 968 ))) 969 969 |((( 970 970 {{code language="none"}} ... ... @@ -973,7 +973,7 @@ 973 973 )))|((( 974 974 5 975 975 )))|((( 976 - (% style="color: rgb(51,51,51);" %)Дверь удержана открытой (удержание двери)969 +Дверь удержана открытой (удержание двери) 977 977 ))) 978 978 |((( 979 979 {{code language="none"}} ... ... @@ -998,7 +998,7 @@ 998 998 )))|((( 999 999 10 1000 1000 )))|((( 1001 - (% style="color: rgb(51,51,51);" %)Дверь открыта при совершении прохода994 +Дверь открыта при совершении прохода 1002 1002 ))) 1003 1003 |((( 1004 1004 {{code language="none"}} ... ... @@ -1084,7 +1084,7 @@ 1084 1084 )))|((( 1085 1085 32 1086 1086 )))|((( 1087 - (% style="color: rgb(51,51,51);" %)Неисправное состояние замка (не является состоянием точки доступа)1080 +Неисправное состояние замка (не является состоянием точки доступа) 1088 1088 ))) 1089 1089 |((( 1090 1090 {{code language="none"}} ... ... @@ -1093,7 +1093,7 @@ 1093 1093 )))|((( 1094 1094 53 1095 1095 )))|((( 1096 - (% style="color: rgb(51,51,51);" %)Удержание двери точки доступа в состоянии "закрыта и заблокирована"1089 +Удержание двери точки доступа в состоянии "закрыта и заблокирована" 1097 1097 ))) 1098 1098 |((( 1099 1099 {{code language="none"}} ... ... @@ -1102,7 +1102,7 @@ 1102 1102 )))|((( 1103 1103 54 1104 1104 )))|((( 1105 - (% style="color: rgb(51,51,51);" %)Взлом двери точки доступа в состоянии "закрыта и заблокирована"1098 +Взлом двери точки доступа в состоянии "закрыта и заблокирована" 1106 1106 ))) 1107 1107 |((( 1108 1108 {{code language="none"}} ... ... @@ -1121,7 +1121,7 @@ 1121 1121 Текущая транзакция пользователя обрывается. 1122 1122 ))) 1123 1123 |((( 1124 -## (% style="color: rgb(68,68,68);" %)ARMED_CLOSE_BLOCKED_FORCE_OPEN(%%)##1117 +##ARMED_CLOSE_BLOCKED_FORCE_OPEN(%%)## 1125 1125 )))|((( 1126 1126 106 1127 1127 )))|((( ... ... @@ -1133,7 +1133,7 @@ 1133 1133 1134 1134 Функция {{code language="none"}}parse_ap_status{{/code}} возвращает Lua-таблицу следующего вида: 1135 1135 1136 -{{code}} 1129 +{{code language="java"}} 1137 1137 { 1138 1138 door_state = .. 1139 1139 lock_state = .. ... ... @@ -1144,7 +1144,6 @@ 1144 1144 1145 1145 где значение полей таблицы следующее: 1146 1146 1147 -(% class="wrapped" %) 1148 1148 |=((( 1149 1149 Поле 1150 1150 )))|=((( ... ... @@ -1213,7 +1213,6 @@ 1213 1213 (% style="text-align: left;" %) 1214 1214 Значение кода состояния алгоритма прохода (фазы прохода) {{code language="none"}}status, {{/code}}полученного в функции {{code language="none"}}lonpacs_on_pass_status_changed(token, status, notify_key),{{/code}} может принимать одно из следующих значений: 1215 1215 1216 -(% class="wrapped" %) 1217 1217 |=((( 1218 1218 Код (условный) 1219 1219 )))|=((( ... ... @@ -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}} 1298 +{{code language="java"}} 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}} 1314 +{{code language="java"}} 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}} 1417 +{{code language="java"}} 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}} 1549 +{{code language="java"}} 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}} 1557 +{{code language="java"}} 1567 1567 local pacs_reader_input = function(token, data) 1568 1568 -- функция не будет вызвана 1569 1569 end ... ... @@ -1588,7 +1588,6 @@ 1588 1588 )))|(% style="text-align: left;" %)((( 1589 1589 К считывателю предъявлен идентификатор 1590 1590 )))|(% style="text-align: left;" %)((( 1591 -(% class="content-wrapper" %) 1592 1592 ((( 1593 1593 Вызывается тогда, когда к считывателю контроллера предъявлен идентификатор. 1594 1594 ... ... @@ -1596,7 +1596,7 @@ 1596 1596 1597 1597 В первом аргументе {{code language="none"}}token{{/code}} передаётся токен точки доступа, на которой предъявлен идентификатор; во втором аргументе передаётся Lua-таблица с идентификаторами: 1598 1598 1599 -{{code}} 1589 +{{code language="java"}} 1600 1600 { 1601 1601 "facility_code" = "123", 1602 1602 "card_number" = "12345", ... ... @@ -1616,13 +1616,12 @@ 1616 1616 )))|(% style="text-align: left;" %)((( 1617 1617 Получена внешняя команда на инициацию транзакции доступа. 1618 1618 )))|(% style="text-align: left;" %)((( 1619 -(% class="content-wrapper" %) 1620 1620 ((( 1621 1621 Первый аргумент {{code language="none"}}token{{/code}} — токен точки доступа. 1622 1622 1623 1623 Второй аргумент {{code language="none"}}args{{/code}} — параметры разрешения доступа: 1624 1624 1625 -{{code}} 1614 +{{code language="java"}} 1626 1626 { 1627 1627 "use_extended_time" = true, 1628 1628 "access_time_duration" = число (unix-timestamp), ... ... @@ -1766,12 +1766,12 @@ 1766 1766 {{/info}} 1767 1767 1768 1768 (% style="text-align: left;" %) 1769 -===== {{id name="РуководствопоскриптамLua-Изменениесостоянияпериферии"/}} (% style="color: rgb(112,112,112);" %)Изменение состояния периферии(%%) =====1758 +===== {{id name="РуководствопоскриптамLua-Изменениесостоянияпериферии"/}}Изменение состояния периферии(%%) ===== 1770 1770 1771 1771 (% style="text-align: left;" %) 1772 1772 При изменении состояния какого-либо элемента периферии (обычно, это различные входы) вызывается функция-обработчик {{code language="none"}}pacs_input{{/code}}. Ниже приведён Lua-код, который позволит в зависимости от типа элемента периферии получить его логическое состояние. 1773 1773 1774 -{{code}} 1763 +{{code language="java"}} 1775 1775 local fec = require("fec") 1776 1776 1777 1777 -- Логическое состояние элемента ... ... @@ -1851,11 +1851,10 @@ 1851 1851 )))|(% style="text-align: left;" %)((( 1852 1852 Выполнить проверку переданных идентификаторов и начать транзакцию доступа 1853 1853 )))|(% style="text-align: left;" %)((( 1854 -(% class="content-wrapper" %) 1855 1855 ((( 1856 1856 Первый аргумент — токен точки доступа. Второй аргумент — Lua-таблица с идентификаторами (такая же, какая получена в функции-обработчике {{code language="none"}}pacs_reader_input{{/code}}): 1857 1857 1858 -{{code}} 1846 +{{code language="java"}} 1859 1859 { 1860 1860 "facility_code" = "123", 1861 1861 "card_number" = "12345", ... ... @@ -1938,13 +1938,12 @@ 1938 1938 )))|(% style="text-align: left;" %)((( 1939 1939 Изменить состояние точки доступа 1940 1940 )))|(% style="text-align: left;" %)((( 1941 -(% class="content-wrapper" %) 1942 1942 ((( 1943 1943 Первый аргумент — токен точки доступа. 1944 1944 1945 1945 Второй аргумент — Lua-таблица со значением состояния по различным «осям»: 1946 1946 1947 -{{code}} 1934 +{{code language="java"}} 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}} 1975 +{{code language="java"}} 1989 1989 local storage = require("storage") 1990 1990 1991 1991 local my_options = storage.get("my_key") ... ... @@ -2021,7 +2021,7 @@ 2021 2021 {{/info}} 2022 2022 2023 2023 (% style="text-align: left;" %) 2024 -===== {{id name="РуководствопоскриптамLua-set_timeout"/}} (%style="color: rgb(112,112,112);" %)set_timeout(%%) =====2011 +===== {{id name="РуководствопоскриптамLua-set_timeout"/}}set_timeout(%%) ===== 2025 2025 2026 2026 (% style="text-align: left;" %) 2027 2027 Запланировать вызов указанной Lua-функции спустя заданное количество миллисекунд. ... ... @@ -2040,7 +2040,7 @@ 2040 2040 (% style="text-align: left;" %) 2041 2041 Пример: 2042 2042 2043 -{{code}} 2030 +{{code language="java"}} 2044 2044 local log = require("log") 2045 2045 local logger = log.get_logger("script.lua") 2046 2046 ... ... @@ -2077,11 +2077,11 @@ 2077 2077 * ключ — строка, ключ, по которому можно будет понять в Lua-функции, кто и когда запланировал её отложенный вызов. 2078 2078 2079 2079 {{error title="ВНИМАНИЕ"}} 2080 -Также [[как и в JavaScript>>url:https://learn.javascript.ru/settimeout-setinterval#%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9-settimeout||style=" text-decoration: none;" shape="rect"]], рекомендуется избегать использования set_interval, сделав выбор в пользу рекурсивного set_timeout.2067 +Также [[как и в JavaScript>>url:https://learn.javascript.ru/settimeout-setinterval#%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9-settimeout||style="" shape="rect"]], рекомендуется избегать использования set_interval, сделав выбор в пользу рекурсивного set_timeout. 2081 2081 {{/error}} 2082 2082 2083 2083 (% style="text-align: left;" %) 2084 -===== {{id name="РуководствопоскриптамLua-clear_interval"/}} (% style="color: rgb(112,112,112);" %)clear_interval(%%) =====2071 +===== {{id name="РуководствопоскриптамLua-clear_interval"/}}clear_interval(%%) ===== 2085 2085 2086 2086 (% style="text-align: left;" %) 2087 2087 Аналогично clear_timeout функция позволяет отменить запланированное ранее периодическое задание: {{code language="none"}}clear_interval(ID задания){{/code}}, где {{code language="none"}}ID задания{{/code}} — результат выполнения функции {{code language="none"}}set_interval{{/code}}.
- XWiki.ShortUrlClass[0]
-
- Short URL code
-
... ... @@ -1,0 +1,1 @@ 1 +05486 - Last known target (debug)
-
... ... @@ -1,0 +1,1 @@ 1 +ui.Руководство по скриптам Lua.WebHome