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, 0 added, 1 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. superadmin1 +XWiki.pugachevskaya_elena - 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]/internal/(%%)lua-editor/##. 43 +Для удобство редактирования и отладки скрипта автоматизации предназначен текстовый online-редактор, доступный в наших продуктах по адресу {{code language="none"}}http://[ip-address]/lua-editor/{{/code}} или ##http:~/~/[ip-address]/(% style="color: rgb(51,51,51);" %)internal/(%%)lua-editor/##. 44 44 45 45 (% style="text-align: left;" %) 46 46 1. В левом блоке — текст скрипта автоматизации. Внесите в него изменения, для сохранения нажмите на кнопку «Сохранить» внизу. ... ... @@ -250,6 +250,7 @@ 250 250 )))|(% style="text-align: left;" %)((( 251 251 Все продукты 252 252 )))|(% style="text-align: left;" %)((( 253 +(% class="content-wrapper" %) 253 253 ((( 254 254 Асинхронное выполнение отложенных по времени или периодических действий. 255 255 ... ... @@ -276,7 +276,7 @@ 276 276 (% style="text-align: left;" %) 277 277 Подключение прикладного Lua-модуля осуществляется функцией require. Рекомендуемая форма использования: 278 278 279 -{{code language="java"}}280 +{{code}} 280 280 local log = require("log") 281 281 {{/code}} 282 282 ... ... @@ -283,7 +283,7 @@ 283 283 (% style="text-align: left;" %) 284 284 Вызвать функцию Lua-модуля в таком случае можно следующим образом, например: 285 285 286 -{{code language="java"}}287 +{{code}} 287 287 local logger = log.get_logger("MyLogger") 288 288 {{/code}} 289 289 ... ... @@ -401,7 +401,7 @@ 401 401 (% style="text-align: left;" %) 402 402 В перечислении {{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 = Включено). Например: 403 403 404 -{{code language="java"}}405 +{{code}} 405 405 local fec = require("fec") 406 406 fec.set_value(fec.TYPE.RELE, 1, 1) 407 407 {{/code}} ... ... @@ -418,7 +418,7 @@ 418 418 (% style="text-align: left;" %) 419 419 Поскольку управление светодиодной / звуковой индикацией на считывателях осуществляется в рамках алгоритмов доступа и состояние красного, зелёного светодиодов и звука взаимосвязано (если красный светодиод горит, то зелёный погашен и др.) — для удобства управления всей индикацией реализована функция-обёртка {{code language="none"}}fec.set_reader(ID считывателя, зелёный светодиод, красный светодиод, звук){{/code}}. Пример использования функции приведён ниже: 420 420 421 -{{code language="java"}}422 +{{code}} 422 422 local fec = require("fec") 423 423 fec.set_reader(1, fec.DIOD.MODE_OFF, fec.DIOD.MODE_025_025, fec.BEEPER.MODE_OFF) 424 424 {{/code}} ... ... @@ -440,7 +440,7 @@ 440 440 (% style="text-align: left;" %) 441 441 Ниже приведён пример использования модуля HTTP для отправки GET-запроса на IP-адрес веб-сайта (% class="nolink" %)http:~/~/example.com. 442 442 443 -{{code language="java"}}444 +{{code}} 444 444 local log = require("log") 445 445 local http = require("http") 446 446 local logger = log.get_logger("script.lua") ... ... @@ -490,7 +490,7 @@ 490 490 (% style="text-align: left;" %) 491 491 Пример: 492 492 493 -{{code language="java"}}494 +{{code}} 494 494 -- параметры запроса 495 495 local http_request = { 496 496 url = "http://93.184.216.34", ... ... @@ -512,7 +512,7 @@ 512 512 (% style="text-align: left;" %) 513 513 Для передачи запроса с телом в форме текста достаточно присвоить параметру запроса body соответствующее строковое значение. Например: 514 514 515 -{{code language="java"}}516 +{{code}} 516 516 local http_request = { 517 517 url = "http://10.1.30.3:8080/myservice", 518 518 method = http.METHOD.POST, ... ... @@ -525,7 +525,7 @@ 525 525 (% style="text-align: left;" %) 526 526 Модуль также позволяет передавать запрос с телом в форме JSON-документа, который автоматически формируется из Lua-таблицы. Например: 527 527 528 -{{code language="java"}}529 +{{code}} 529 529 local http_request = { 530 530 url = "http://10.1.30.3:8080/myservice", 531 531 method = http.METHOD.POST ... ... @@ -596,7 +596,7 @@ 596 596 (% style="text-align: left;" %) 597 597 Пример приведён ниже: 598 598 599 -{{code language="java"}}600 +{{code}} 600 600 local log = require("log") 601 601 local logger = log.get_logger("MyLogger") 602 602 ... ... @@ -632,6 +632,7 @@ 632 632 633 633 loninput.lua позволяет «подписаться» на изменения состояния входов. Для управления «подписчиками» в модуле доступны следующие функции: 634 634 636 +(% class="wrapped" %) 635 635 |=((( 636 636 Функция 637 637 )))|=((( ... ... @@ -670,6 +670,7 @@ 670 670 671 671 В функцию {{code language="none"}}on_loninput_input_state_changed{{/code}} передаются следующие параметры: 672 672 675 +(% class="wrapped" %) 673 673 |=((( 674 674 Параметр 675 675 )))|=((( ... ... @@ -731,7 +731,7 @@ 731 731 732 732 Получить список точек доступа с их идентификаторами можно через поле {{code language="none"}}lonpacs.ap_instance{{/code}}, которое заполняется при инициализации модуля и виртуальной Lua-машины (до того, как будет выполняться пользовательский Lua-скрипт). Поле {{code language="none"}}lonpacs.ap_instance{{/code}} содержит Lua-таблицу, в которой ключами являются токены точек доступа, а значениями — Lua-таблицы с системными параметрами точек доступа. Структура таблицы представлена в коде ниже: 733 733 734 -{{code language="java"}}737 +{{code}} 735 735 lonpacs.ap = { 736 736 "токен первой точки доступа" = { 737 737 ... ... ... @@ -743,12 +743,13 @@ 743 743 } 744 744 {{/code}} 745 745 746 -Каждая точка доступа в списке — это либо точка доступа модуля расширения МДС, либо одна из точек доступа М2. 749 +(% style="color: rgb(51,51,51);" %)Каждая точка доступа в списке — это либо точка доступа модуля расширения МДС, либо одна из точек доступа М2. 747 747 748 748 ===== {{id name="РуководствопоскриптамLua-Управлениеточкойдоступа"/}}Управление точкой доступа ===== 749 749 750 750 Для управления точками доступа на модулях расширения доступна функция {{code language="none"}}transmit_status(token, status){{/code}}, которая позволяет отправлять модулям команды управления. Функция принимает следующие параметры: 751 751 755 +(% class="wrapped" %) 752 752 |=((( 753 753 Параметр 754 754 )))|=((( ... ... @@ -775,8 +775,9 @@ 775 775 Команда управления (требуемый статус точки доступа); значение из перечисления {{code language="none"}}lonpacs.AP_COMMAND{{/code}} (см. ниже) 776 776 ))) 777 777 778 -Для управления точкам доступа доступны следующие команды (значения параметра {{code language="none"}}status{{/code}}): 782 +(% style="color: rgb(51, 51, 51); color: rgb(51, 51, 51)" %)Для управления точкам доступа доступны следующие команды (значения параметра {{code language="none"}}status{{/code}}): 779 779 784 +(% class="wrapped" %) 780 780 |=((( 781 781 Команда 782 782 )))|=((( ... ... @@ -843,6 +843,7 @@ 843 843 844 844 Модуль {{code language="none"}}lonpacs.lua{{/code}} позволяет «подписаться» на события изменения состояния точек доступа, мониторинга связи с точками доступа, изменения состояния прохода (фазы алгоритма прохода). Для управления «подписчиками» в модуле доступны следующие функции: 845 845 851 +(% class="wrapped" %) 846 846 |=((( 847 847 Функция 848 848 )))|=((( ... ... @@ -925,6 +925,7 @@ 925 925 926 926 Параметр {{code language="none"}}ap_status{{/code}} может принимать одно из следующих значений: 927 927 934 +(% class="wrapped" %) 928 928 |=((( 929 929 Состояние точки доступа 930 930 )))|=((( ... ... @@ -939,7 +939,7 @@ 939 939 )))|((( 940 940 0 941 941 )))|((( 942 -Точка доступа в состоянии ожидания транзакции 949 +(% style="color: rgb(51,51,51);" %)Точка доступа в состоянии ожидания транзакции 943 943 ))) 944 944 |((( 945 945 {{code language="none"}} ... ... @@ -957,7 +957,7 @@ 957 957 )))|((( 958 958 2 959 959 )))|((( 960 -Старт транзакции прохода по кнопке выхода 967 +(% style="color: rgb(51,51,51);" %)Старт транзакции прохода по кнопке выхода 961 961 ))) 962 962 |((( 963 963 {{code language="none"}} ... ... @@ -966,7 +966,7 @@ 966 966 )))|((( 967 967 5 968 968 )))|((( 969 -Дверь удержана открытой (удержание двери) 976 +(% style="color: rgb(51,51,51);" %)Дверь удержана открытой (удержание двери) 970 970 ))) 971 971 |((( 972 972 {{code language="none"}} ... ... @@ -991,7 +991,7 @@ 991 991 )))|((( 992 992 10 993 993 )))|((( 994 -Дверь открыта при совершении прохода 1001 +(% style="color: rgb(51,51,51);" %)Дверь открыта при совершении прохода 995 995 ))) 996 996 |((( 997 997 {{code language="none"}} ... ... @@ -1077,7 +1077,7 @@ 1077 1077 )))|((( 1078 1078 32 1079 1079 )))|((( 1080 -Неисправное состояние замка (не является состоянием точки доступа) 1087 +(% style="color: rgb(51,51,51);" %)Неисправное состояние замка (не является состоянием точки доступа) 1081 1081 ))) 1082 1082 |((( 1083 1083 {{code language="none"}} ... ... @@ -1086,7 +1086,7 @@ 1086 1086 )))|((( 1087 1087 53 1088 1088 )))|((( 1089 -Удержание двери точки доступа в состоянии "закрыта и заблокирована" 1096 +(% style="color: rgb(51,51,51);" %)Удержание двери точки доступа в состоянии "закрыта и заблокирована" 1090 1090 ))) 1091 1091 |((( 1092 1092 {{code language="none"}} ... ... @@ -1095,7 +1095,7 @@ 1095 1095 )))|((( 1096 1096 54 1097 1097 )))|((( 1098 -Взлом двери точки доступа в состоянии "закрыта и заблокирована" 1105 +(% style="color: rgb(51,51,51);" %)Взлом двери точки доступа в состоянии "закрыта и заблокирована" 1099 1099 ))) 1100 1100 |((( 1101 1101 {{code language="none"}} ... ... @@ -1114,7 +1114,7 @@ 1114 1114 Текущая транзакция пользователя обрывается. 1115 1115 ))) 1116 1116 |((( 1117 -##ARMED_CLOSE_BLOCKED_FORCE_OPEN(%%)## 1124 +##(% style="color: rgb(68,68,68);" %)ARMED_CLOSE_BLOCKED_FORCE_OPEN(%%)## 1118 1118 )))|((( 1119 1119 106 1120 1120 )))|((( ... ... @@ -1126,7 +1126,7 @@ 1126 1126 1127 1127 Функция {{code language="none"}}parse_ap_status{{/code}} возвращает Lua-таблицу следующего вида: 1128 1128 1129 -{{code language="java"}}1136 +{{code}} 1130 1130 { 1131 1131 door_state = .. 1132 1132 lock_state = .. ... ... @@ -1137,6 +1137,7 @@ 1137 1137 1138 1138 где значение полей таблицы следующее: 1139 1139 1147 +(% class="wrapped" %) 1140 1140 |=((( 1141 1141 Поле 1142 1142 )))|=((( ... ... @@ -1205,6 +1205,7 @@ 1205 1205 (% style="text-align: left;" %) 1206 1206 Значение кода состояния алгоритма прохода (фазы прохода) {{code language="none"}}status, {{/code}}полученного в функции {{code language="none"}}lonpacs_on_pass_status_changed(token, status, notify_key),{{/code}} может принимать одно из следующих значений: 1207 1207 1216 +(% class="wrapped" %) 1208 1208 |=((( 1209 1209 Код (условный) 1210 1210 )))|=((( ... ... @@ -1295,7 +1295,7 @@ 1295 1295 (% style="text-align: left;" %) 1296 1296 Получить список точек доступа с их идентификаторами можно через поле {{code language="none"}}pacs.ap{{/code}}, которое заполняется при инициализации модуля и виртуальной Lua-машины (до того, как будет выполняться пользовательский Lua-скрипт). Поле {{code language="none"}}pacs.ap{{/code}} содержит Lua-таблицу, в которой ключами являются токены точек доступа, а значениями — Lua-таблицы с системными параметрами точек доступа. Структура таблицы представлена в коде ниже: 1297 1297 1298 -{{code language="java"}}1307 +{{code}} 1299 1299 pacs.ap = { 1300 1300 "токен первой точки доступа" = { 1301 1301 "#" = 0, ... ... @@ -1311,7 +1311,7 @@ 1311 1311 (% style="text-align: left;" %) 1312 1312 Соответственно, для перебора точек доступа (например, чтобы для каждой точки доступа проинциализировать свой алгоритм) удобно использовать следующий код: 1313 1313 1314 -{{code language="java"}}1323 +{{code}} 1315 1315 for key,item in pairs(pacs.ap) do 1316 1316 if item["#"] == 0 or item["#"] == 1 then 1317 1317 -- код обработки точки доступа с токеном = key ... ... @@ -1414,7 +1414,7 @@ 1414 1414 (% style="text-align: left;" %) 1415 1415 В режиме доступа «Пользовательский» для реализации алгоритма может потребоваться задать из Lua-скрипта для каждой точки доступа системные параметры. Для указания параметров из Lua-скрипта предназначена функция {{code language="none"}}pacs.set_configuration(token, {...}){{/code}}, в первом аргументе необходимо передать токен точки доступа, во втором аргументе — Lua-таблицу с параметрами. Например: 1416 1416 1417 -{{code language="java"}}1426 +{{code}} 1418 1418 for key,item in pairs(pacs.ap) do 1419 1419 local configuration = {} 1420 1420 configuration["input.mode"] = "card" ... ... @@ -1546,7 +1546,7 @@ 1546 1546 {{info title="ВНИМАНИЕ"}} 1547 1547 В данном случае это должны быть именно «глобальные функции», определённые, например, следующим образом: 1548 1548 1549 -{{code language="java"}}1558 +{{code}} 1550 1550 function pacs_reader_input(token, data) 1551 1551 -- тело функции 1552 1552 end ... ... @@ -1554,7 +1554,7 @@ 1554 1554 1555 1555 Локальные функции с таким же именем не будут вызваны: 1556 1556 1557 -{{code language="java"}}1566 +{{code}} 1558 1558 local pacs_reader_input = function(token, data) 1559 1559 -- функция не будет вызвана 1560 1560 end ... ... @@ -1579,6 +1579,7 @@ 1579 1579 )))|(% style="text-align: left;" %)((( 1580 1580 К считывателю предъявлен идентификатор 1581 1581 )))|(% style="text-align: left;" %)((( 1591 +(% class="content-wrapper" %) 1582 1582 ((( 1583 1583 Вызывается тогда, когда к считывателю контроллера предъявлен идентификатор. 1584 1584 ... ... @@ -1586,7 +1586,7 @@ 1586 1586 1587 1587 В первом аргументе {{code language="none"}}token{{/code}} передаётся токен точки доступа, на которой предъявлен идентификатор; во втором аргументе передаётся Lua-таблица с идентификаторами: 1588 1588 1589 -{{code language="java"}}1599 +{{code}} 1590 1590 { 1591 1591 "facility_code" = "123", 1592 1592 "card_number" = "12345", ... ... @@ -1606,12 +1606,13 @@ 1606 1606 )))|(% style="text-align: left;" %)((( 1607 1607 Получена внешняя команда на инициацию транзакции доступа. 1608 1608 )))|(% style="text-align: left;" %)((( 1619 +(% class="content-wrapper" %) 1609 1609 ((( 1610 1610 Первый аргумент {{code language="none"}}token{{/code}} — токен точки доступа. 1611 1611 1612 1612 Второй аргумент {{code language="none"}}args{{/code}} — параметры разрешения доступа: 1613 1613 1614 -{{code language="java"}}1625 +{{code}} 1615 1615 { 1616 1616 "use_extended_time" = true, 1617 1617 "access_time_duration" = число (unix-timestamp), ... ... @@ -1755,12 +1755,12 @@ 1755 1755 {{/info}} 1756 1756 1757 1757 (% style="text-align: left;" %) 1758 -===== {{id name="РуководствопоскриптамLua-Изменениесостоянияпериферии"/}}Изменение состояния периферии(%%) ===== 1769 +===== {{id name="РуководствопоскриптамLua-Изменениесостоянияпериферии"/}}(% style="color: rgb(112,112,112);" %)Изменение состояния периферии(%%) ===== 1759 1759 1760 1760 (% style="text-align: left;" %) 1761 1761 При изменении состояния какого-либо элемента периферии (обычно, это различные входы) вызывается функция-обработчик {{code language="none"}}pacs_input{{/code}}. Ниже приведён Lua-код, который позволит в зависимости от типа элемента периферии получить его логическое состояние. 1762 1762 1763 -{{code language="java"}}1774 +{{code}} 1764 1764 local fec = require("fec") 1765 1765 1766 1766 -- Логическое состояние элемента ... ... @@ -1840,10 +1840,11 @@ 1840 1840 )))|(% style="text-align: left;" %)((( 1841 1841 Выполнить проверку переданных идентификаторов и начать транзакцию доступа 1842 1842 )))|(% style="text-align: left;" %)((( 1854 +(% class="content-wrapper" %) 1843 1843 ((( 1844 1844 Первый аргумент — токен точки доступа. Второй аргумент — Lua-таблица с идентификаторами (такая же, какая получена в функции-обработчике {{code language="none"}}pacs_reader_input{{/code}}): 1845 1845 1846 -{{code language="java"}}1858 +{{code}} 1847 1847 { 1848 1848 "facility_code" = "123", 1849 1849 "card_number" = "12345", ... ... @@ -1926,12 +1926,13 @@ 1926 1926 )))|(% style="text-align: left;" %)((( 1927 1927 Изменить состояние точки доступа 1928 1928 )))|(% style="text-align: left;" %)((( 1941 +(% class="content-wrapper" %) 1929 1929 ((( 1930 1930 Первый аргумент — токен точки доступа. 1931 1931 1932 1932 Второй аргумент — Lua-таблица со значением состояния по различным «осям»: 1933 1933 1934 -{{code language="java"}}1947 +{{code}} 1935 1935 { 1936 1936 "lock" = Unlocked, 1937 1937 "door" = Open, ... ... @@ -1972,7 +1972,7 @@ 1972 1972 (% style="text-align: left;" %) 1973 1973 Пример использования модуля приведён ниже: 1974 1974 1975 -{{code language="java"}}1988 +{{code}} 1976 1976 local storage = require("storage") 1977 1977 1978 1978 local my_options = storage.get("my_key") ... ... @@ -2008,7 +2008,7 @@ 2008 2008 {{/info}} 2009 2009 2010 2010 (% style="text-align: left;" %) 2011 -===== {{id name="РуководствопоскриптамLua-set_timeout"/}}set_timeout(%%) ===== 2024 +===== {{id name="РуководствопоскриптамLua-set_timeout"/}}(% style="color: rgb(112,112,112);" %)set_timeout(%%) ===== 2012 2012 2013 2013 (% style="text-align: left;" %) 2014 2014 Запланировать вызов указанной Lua-функции спустя заданное количество миллисекунд. ... ... @@ -2027,7 +2027,7 @@ 2027 2027 (% style="text-align: left;" %) 2028 2028 Пример: 2029 2029 2030 -{{code language="java"}}2043 +{{code}} 2031 2031 local log = require("log") 2032 2032 local logger = log.get_logger("script.lua") 2033 2033 ... ... @@ -2064,11 +2064,11 @@ 2064 2064 * ключ — строка, ключ, по которому можно будет понять в Lua-функции, кто и когда запланировал её отложенный вызов. 2065 2065 2066 2066 {{error title="ВНИМАНИЕ"}} 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. 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. 2068 2068 {{/error}} 2069 2069 2070 2070 (% style="text-align: left;" %) 2071 -===== {{id name="РуководствопоскриптамLua-clear_interval"/}}clear_interval(%%) ===== 2084 +===== {{id name="РуководствопоскриптамLua-clear_interval"/}}(% style="color: rgb(112,112,112);" %)clear_interval(%%) ===== 2072 2072 2073 2073 (% style="text-align: left;" %) 2074 2074 Аналогично 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,1 +1,0 @@ 1 -05486 - Last known target (debug)
-
... ... @@ -1,1 +1,0 @@ 1 -ui.Руководство по скриптам Lua.WebHome