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

From version 4.2
edited by superadmin
on 2026/06/15 21:57
Change comment: Short URL code assigned
To version 1.2
edited by admin
on 2026/05/30 23:27
Change comment: Normalize links: remove text-decoration:none

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.superadmin
1 +XWiki.admin
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   
... ... @@ -2068,7 +2068,7 @@
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

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