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

From version 1.2
edited by admin
on 2026/05/30 23:27
Change comment: Normalize links: remove text-decoration:none
To version 3.1
edited by admin
on 2026/06/07 17:48
Change comment: Clean Confluence migrated style markers

Summary

Details

Page properties
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. В левом блоке — текст скрипта автоматизации. Внесите в него изменения, для сохранения нажмите на кнопку «Сохранить» внизу.
... ... @@ -277,7 +277,7 @@
277 277  (% style="text-align: left;" %)
278 278  Подключение прикладного Lua-модуля осуществляется функцией require. Рекомендуемая форма использования:
279 279  
280 -{{code}}
280 +{{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}}
287 +{{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}}
405 +{{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}}
422 +{{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}}
444 +{{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}}
494 +{{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}}
516 +{{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}}
529 +{{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}}
600 +{{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}}
735 +{{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.
747 +Каждая точка доступа в списке — это либо точка доступа модуля расширения МДС, либо одна из точек доступа М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}}):
779 +Для управления точкам доступа доступны следующие команды (значения параметра {{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);" %)Точка доступа в состоянии ожидания транзакции
943 +Точка доступа в состоянии ожидания транзакции
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);" %)Старт транзакции прохода по кнопке выхода
961 +Старт транзакции прохода по кнопке выхода
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);" %)Дверь удержана открытой (удержание двери)
970 +Дверь удержана открытой (удержание двери)
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);" %)Дверь открыта при совершении прохода
995 +Дверь открыта при совершении прохода
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);" %)Неисправное состояние замка (не является состоянием точки доступа)
1081 +Неисправное состояние замка (не является состоянием точки доступа)
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);" %)Удержание двери точки доступа в состоянии "закрыта и заблокирована"
1090 +Удержание двери точки доступа в состоянии "закрыта и заблокирована"
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);" %)Взлом двери точки доступа в состоянии "закрыта и заблокирована"
1099 +Взлом двери точки доступа в состоянии "закрыта и заблокирована"
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(%%)##
1118 +##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}}
1130 +{{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}}
1299 +{{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}}
1315 +{{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}}
1418 +{{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}}
1550 +{{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}}
1558 +{{code language="java"}}
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}}
1591 +{{code language="java"}}
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}}
1617 +{{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);" %)Изменение состояния периферии(%%) =====
1761 +===== {{id name="РуководствопоскриптамLua-Изменениесостоянияпериферии"/}}Изменение состояния периферии(%%) =====
1770 1770  
1771 1771  (% style="text-align: left;" %)
1772 1772  При изменении состояния какого-либо элемента периферии (обычно, это различные входы) вызывается функция-обработчик {{code language="none"}}pacs_input{{/code}}. Ниже приведён Lua-код, который позволит в зависимости от типа элемента периферии получить его логическое состояние.
1773 1773  
1774 -{{code}}
1766 +{{code language="java"}}
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}}
1850 +{{code language="java"}}
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}}
1939 +{{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}}
1980 +{{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(%%) =====
2016 +===== {{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}}
2035 +{{code language="java"}}
2044 2044  local log = require("log")
2045 2045  local logger = log.get_logger("script.lua")
2046 2046   
... ... @@ -2081,7 +2081,7 @@
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(%%) =====
2076 +===== {{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}}.

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