Last modified by superadmin on 2026/06/15 21:57

From version 3.1
edited by admin
on 2026/06/07 17:48
Change comment: Clean Confluence migrated style markers
To version 1.1
edited by pugachevskaya_elena
on 2026/01/16 16:17
Change comment: There is no comment for this version

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.admin
1 +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. В левом блоке — текст скрипта автоматизации. Внесите в него изменения, для сохранения нажмите на кнопку «Сохранить» внизу.
... ... @@ -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   
... ... @@ -633,6 +633,7 @@
633 633  
634 634  loninput.lua позволяет «подписаться» на изменения состояния входов. Для управления «подписчиками» в модуле доступны следующие функции:
635 635  
636 +(% class="wrapped" %)
636 636  |=(((
637 637  Функция
638 638  )))|=(((
... ... @@ -671,6 +671,7 @@
671 671  
672 672  В функцию {{code language="none"}}on_loninput_input_state_changed{{/code}} передаются следующие параметры:
673 673  
675 +(% class="wrapped" %)
674 674  |=(((
675 675  Параметр
676 676  )))|=(((
... ... @@ -732,7 +732,7 @@
732 732  
733 733  Получить список точек доступа с их идентификаторами можно через поле {{code language="none"}}lonpacs.ap_instance{{/code}}, которое заполняется при инициализации модуля и виртуальной Lua-машины (до того, как будет выполняться пользовательский Lua-скрипт). Поле {{code language="none"}}lonpacs.ap_instance{{/code}} содержит Lua-таблицу, в которой ключами являются токены точек доступа, а значениями — Lua-таблицы с системными параметрами точек доступа. Структура таблицы представлена в коде ниже:
734 734  
735 -{{code language="java"}}
737 +{{code}}
736 736  lonpacs.ap = {
737 737   "токен первой точки доступа" = {
738 738   ...
... ... @@ -744,12 +744,13 @@
744 744  }
745 745  {{/code}}
746 746  
747 -Каждая точка доступа в списке — это либо точка доступа модуля расширения МДС, либо одна из точек доступа М2.
749 +(% style="color: rgb(51,51,51);" %)Каждая точка доступа в списке — это либо точка доступа модуля расширения МДС, либо одна из точек доступа М2.
748 748  
749 749  ===== {{id name="РуководствопоскриптамLua-Управлениеточкойдоступа"/}}Управление точкой доступа =====
750 750  
751 751  Для управления точками доступа на модулях расширения доступна функция {{code language="none"}}transmit_status(token, status){{/code}}, которая позволяет отправлять модулям команды управления. Функция принимает следующие параметры:
752 752  
755 +(% class="wrapped" %)
753 753  |=(((
754 754  Параметр
755 755  )))|=(((
... ... @@ -776,8 +776,9 @@
776 776  Команда управления (требуемый статус точки доступа); значение из перечисления {{code language="none"}}lonpacs.AP_COMMAND{{/code}} (см. ниже)
777 777  )))
778 778  
779 -Для управления точкам доступа доступны следующие команды (значения параметра {{code language="none"}}status{{/code}}):
782 +(% style="color: rgb(51, 51, 51); color: rgb(51, 51, 51)" %)Для управления точкам доступа доступны следующие команды (значения параметра {{code language="none"}}status{{/code}}):
780 780  
784 +(% class="wrapped" %)
781 781  |=(((
782 782  Команда
783 783  )))|=(((
... ... @@ -844,6 +844,7 @@
844 844  
845 845  Модуль {{code language="none"}}lonpacs.lua{{/code}} позволяет «подписаться» на события изменения состояния точек доступа, мониторинга связи с точками доступа, изменения состояния прохода (фазы алгоритма прохода). Для управления «подписчиками» в модуле доступны следующие функции:
846 846  
851 +(% class="wrapped" %)
847 847  |=(((
848 848  Функция
849 849  )))|=(((
... ... @@ -926,6 +926,7 @@
926 926  
927 927  Параметр {{code language="none"}}ap_status{{/code}} может принимать одно из следующих значений:
928 928  
934 +(% class="wrapped" %)
929 929  |=(((
930 930  Состояние точки доступа
931 931  )))|=(((
... ... @@ -940,7 +940,7 @@
940 940  )))|(((
941 941  0
942 942  )))|(((
943 -Точка доступа в состоянии ожидания транзакции
949 +(% style="color: rgb(51,51,51);" %)Точка доступа в состоянии ожидания транзакции
944 944  )))
945 945  |(((
946 946  {{code language="none"}}
... ... @@ -958,7 +958,7 @@
958 958  )))|(((
959 959  2
960 960  )))|(((
961 -Старт транзакции прохода по кнопке выхода
967 +(% style="color: rgb(51,51,51);" %)Старт транзакции прохода по кнопке выхода
962 962  )))
963 963  |(((
964 964  {{code language="none"}}
... ... @@ -967,7 +967,7 @@
967 967  )))|(((
968 968  5
969 969  )))|(((
970 -Дверь удержана открытой (удержание двери)
976 +(% style="color: rgb(51,51,51);" %)Дверь удержана открытой (удержание двери)
971 971  )))
972 972  |(((
973 973  {{code language="none"}}
... ... @@ -992,7 +992,7 @@
992 992  )))|(((
993 993  10
994 994  )))|(((
995 -Дверь открыта при совершении прохода
1001 +(% style="color: rgb(51,51,51);" %)Дверь открыта при совершении прохода
996 996  )))
997 997  |(((
998 998  {{code language="none"}}
... ... @@ -1078,7 +1078,7 @@
1078 1078  )))|(((
1079 1079  32
1080 1080  )))|(((
1081 -Неисправное состояние замка (не является состоянием точки доступа)
1087 +(% style="color: rgb(51,51,51);" %)Неисправное состояние замка (не является состоянием точки доступа)
1082 1082  )))
1083 1083  |(((
1084 1084  {{code language="none"}}
... ... @@ -1087,7 +1087,7 @@
1087 1087  )))|(((
1088 1088  53
1089 1089  )))|(((
1090 -Удержание двери точки доступа в состоянии "закрыта и заблокирована"
1096 +(% style="color: rgb(51,51,51);" %)Удержание двери точки доступа в состоянии "закрыта и заблокирована"
1091 1091  )))
1092 1092  |(((
1093 1093  {{code language="none"}}
... ... @@ -1096,7 +1096,7 @@
1096 1096  )))|(((
1097 1097  54
1098 1098  )))|(((
1099 -Взлом двери точки доступа в состоянии "закрыта и заблокирована"
1105 +(% style="color: rgb(51,51,51);" %)Взлом двери точки доступа в состоянии "закрыта и заблокирована"
1100 1100  )))
1101 1101  |(((
1102 1102  {{code language="none"}}
... ... @@ -1115,7 +1115,7 @@
1115 1115  Текущая транзакция пользователя обрывается.
1116 1116  )))
1117 1117  |(((
1118 -##ARMED_CLOSE_BLOCKED_FORCE_OPEN(%%)##
1124 +##(% style="color: rgb(68,68,68);" %)ARMED_CLOSE_BLOCKED_FORCE_OPEN(%%)##
1119 1119  )))|(((
1120 1120  106
1121 1121  )))|(((
... ... @@ -1127,7 +1127,7 @@
1127 1127  
1128 1128  Функция {{code language="none"}}parse_ap_status{{/code}} возвращает Lua-таблицу следующего вида:
1129 1129  
1130 -{{code language="java"}}
1136 +{{code}}
1131 1131  {
1132 1132   door_state = ..
1133 1133   lock_state = ..
... ... @@ -1138,6 +1138,7 @@
1138 1138  
1139 1139  где значение полей таблицы следующее:
1140 1140  
1147 +(% class="wrapped" %)
1141 1141  |=(((
1142 1142  Поле
1143 1143  )))|=(((
... ... @@ -1206,6 +1206,7 @@
1206 1206  (% style="text-align: left;" %)
1207 1207  Значение кода состояния алгоритма прохода (фазы прохода) {{code language="none"}}status, {{/code}}полученного в функции {{code language="none"}}lonpacs_on_pass_status_changed(token, status, notify_key),{{/code}} может принимать одно из следующих значений:
1208 1208  
1216 +(% class="wrapped" %)
1209 1209  |=(((
1210 1210  Код (условный)
1211 1211  )))|=(((
... ... @@ -1296,7 +1296,7 @@
1296 1296  (% style="text-align: left;" %)
1297 1297  Получить список точек доступа с их идентификаторами можно через поле {{code language="none"}}pacs.ap{{/code}}, которое заполняется при инициализации модуля и виртуальной Lua-машины (до того, как будет выполняться пользовательский Lua-скрипт). Поле {{code language="none"}}pacs.ap{{/code}} содержит Lua-таблицу, в которой ключами являются токены точек доступа, а значениями — Lua-таблицы с системными параметрами точек доступа. Структура таблицы представлена в коде ниже:
1298 1298  
1299 -{{code language="java"}}
1307 +{{code}}
1300 1300  pacs.ap = {
1301 1301   "токен первой точки доступа" = {
1302 1302   "#" = 0,
... ... @@ -1312,7 +1312,7 @@
1312 1312  (% style="text-align: left;" %)
1313 1313  Соответственно, для перебора точек доступа (например, чтобы для каждой точки доступа проинциализировать свой алгоритм) удобно использовать следующий код:
1314 1314  
1315 -{{code language="java"}}
1323 +{{code}}
1316 1316  for key,item in pairs(pacs.ap) do
1317 1317   if item["#"] == 0 or item["#"] == 1 then
1318 1318   -- код обработки точки доступа с токеном = key
... ... @@ -1415,7 +1415,7 @@
1415 1415  (% style="text-align: left;" %)
1416 1416  В режиме доступа «Пользовательский» для реализации алгоритма может потребоваться задать из Lua-скрипта для каждой точки доступа системные параметры. Для указания параметров из Lua-скрипта предназначена функция {{code language="none"}}pacs.set_configuration(token, {...}){{/code}}, в первом аргументе необходимо передать токен точки доступа, во втором аргументе — Lua-таблицу с параметрами. Например:
1417 1417  
1418 -{{code language="java"}}
1426 +{{code}}
1419 1419  for key,item in pairs(pacs.ap) do
1420 1420   local configuration = {}
1421 1421   configuration["input.mode"] = "card"
... ... @@ -1547,7 +1547,7 @@
1547 1547  {{info title="ВНИМАНИЕ"}}
1548 1548  В данном случае это должны быть именно «глобальные функции», определённые, например, следующим образом:
1549 1549  
1550 -{{code language="java"}}
1558 +{{code}}
1551 1551  function pacs_reader_input(token, data)
1552 1552   -- тело функции
1553 1553  end
... ... @@ -1555,7 +1555,7 @@
1555 1555  
1556 1556  Локальные функции с таким же именем не будут вызваны:
1557 1557  
1558 -{{code language="java"}}
1566 +{{code}}
1559 1559  local pacs_reader_input = function(token, data)
1560 1560   -- функция не будет вызвана
1561 1561  end
... ... @@ -1588,7 +1588,7 @@
1588 1588  
1589 1589  В первом аргументе {{code language="none"}}token{{/code}} передаётся токен точки доступа, на которой предъявлен идентификатор; во втором аргументе передаётся Lua-таблица с идентификаторами:
1590 1590  
1591 -{{code language="java"}}
1599 +{{code}}
1592 1592  {
1593 1593   "facility_code" = "123",
1594 1594   "card_number" = "12345",
... ... @@ -1614,7 +1614,7 @@
1614 1614  
1615 1615  Второй аргумент {{code language="none"}}args{{/code}} — параметры разрешения доступа:
1616 1616  
1617 -{{code language="java"}}
1625 +{{code}}
1618 1618  {
1619 1619   "use_extended_time" = true,
1620 1620   "access_time_duration" = число (unix-timestamp),
... ... @@ -1758,12 +1758,12 @@
1758 1758  {{/info}}
1759 1759  
1760 1760  (% style="text-align: left;" %)
1761 -===== {{id name="РуководствопоскриптамLua-Изменениесостоянияпериферии"/}}Изменение состояния периферии(%%) =====
1769 +===== {{id name="РуководствопоскриптамLua-Изменениесостоянияпериферии"/}}(% style="color: rgb(112,112,112);" %)Изменение состояния периферии(%%) =====
1762 1762  
1763 1763  (% style="text-align: left;" %)
1764 1764  При изменении состояния какого-либо элемента периферии (обычно, это различные входы) вызывается функция-обработчик {{code language="none"}}pacs_input{{/code}}. Ниже приведён Lua-код, который позволит в зависимости от типа элемента периферии получить его логическое состояние.
1765 1765  
1766 -{{code language="java"}}
1774 +{{code}}
1767 1767  local fec = require("fec")
1768 1768   
1769 1769  -- Логическое состояние элемента
... ... @@ -1847,7 +1847,7 @@
1847 1847  (((
1848 1848  Первый аргумент — токен точки доступа. Второй аргумент — Lua-таблица с идентификаторами (такая же, какая получена в функции-обработчике {{code language="none"}}pacs_reader_input{{/code}}):
1849 1849  
1850 -{{code language="java"}}
1858 +{{code}}
1851 1851  {
1852 1852   "facility_code" = "123",
1853 1853   "card_number" = "12345",
... ... @@ -1936,7 +1936,7 @@
1936 1936  
1937 1937  Второй аргумент — Lua-таблица со значением состояния по различным «осям»:
1938 1938  
1939 -{{code language="java"}}
1947 +{{code}}
1940 1940  {
1941 1941   "lock" = Unlocked,
1942 1942   "door" = Open,
... ... @@ -1977,7 +1977,7 @@
1977 1977  (% style="text-align: left;" %)
1978 1978  Пример использования модуля приведён ниже:
1979 1979  
1980 -{{code language="java"}}
1988 +{{code}}
1981 1981  local storage = require("storage")
1982 1982   
1983 1983  local my_options = storage.get("my_key")
... ... @@ -2013,7 +2013,7 @@
2013 2013  {{/info}}
2014 2014  
2015 2015  (% style="text-align: left;" %)
2016 -===== {{id name="РуководствопоскриптамLua-set_timeout"/}}set_timeout(%%) =====
2024 +===== {{id name="РуководствопоскриптамLua-set_timeout"/}}(% style="color: rgb(112,112,112);" %)set_timeout(%%) =====
2017 2017  
2018 2018  (% style="text-align: left;" %)
2019 2019  Запланировать вызов указанной Lua-функции спустя заданное количество миллисекунд.
... ... @@ -2032,7 +2032,7 @@
2032 2032  (% style="text-align: left;" %)
2033 2033  Пример:
2034 2034  
2035 -{{code language="java"}}
2043 +{{code}}
2036 2036  local log = require("log")
2037 2037  local logger = log.get_logger("script.lua")
2038 2038   
... ... @@ -2069,11 +2069,11 @@
2069 2069  * ключ — строка, ключ, по которому можно будет понять в Lua-функции, кто и когда запланировал её отложенный вызов.
2070 2070  
2071 2071  {{error title="ВНИМАНИЕ"}}
2072 -Также [[как и в 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.
2073 2073  {{/error}}
2074 2074  
2075 2075  (% style="text-align: left;" %)
2076 -===== {{id name="РуководствопоскриптамLua-clear_interval"/}}clear_interval(%%) =====
2084 +===== {{id name="РуководствопоскриптамLua-clear_interval"/}}(% style="color: rgb(112,112,112);" %)clear_interval(%%) =====
2077 2077  
2078 2078  (% style="text-align: left;" %)
2079 2079  Аналогично clear_timeout функция позволяет отменить запланированное ранее периодическое задание: {{code language="none"}}clear_interval(ID задания){{/code}}, где {{code language="none"}}ID задания{{/code}} — результат выполнения функции {{code language="none"}}set_interval{{/code}}.

Интерфейс НЕЙРОСС