Сценарии
|
|
arm-skif | Дата: Понедельник, 25.08.2014, 11:51 | Сообщение # 1 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Добавил в программу возможность написания сценариев. Скачать для windows: Skif_v231. Скачать для GNU/Linux: Skif_linux_v231. Это не самостоятельная версия, а обновление версии 2.3.0. Документация и примеры входят в состав архива. Прямая ссылка на документацию: Scripts.pdf
Если не хватает каких-то возможностей сценариев, или что-то не работает - пишите в этой теме, буду дополнять, исправлять.
|
|
| |
K707 | Дата: Вторник, 26.08.2014, 08:20 | Сообщение # 2 |
Группа: Проверенные
Сообщений: 193
Статус: Оффлайн
| Добрый день. Спасибо за новую версию. Столько простора для творчества открылось с добавлением сценариев. Вопрос, а планируете специализированные окошечки для создания сценария (на подобие принципа работы программы Sign of Misery, с готовыми заготовками сценария)?
|
|
| |
arm-skif | Дата: Вторник, 26.08.2014, 09:22 | Сообщение # 3 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Добрый день. Видимо имеется ввиду графический редактор сценариев. Подумаю над этим. Сейчас думаю как сделать встроенный web-сервер, потом хочется добраться таки до реализации отображения АЦП на графических планах.
|
|
| |
K707 | Дата: Вторник, 26.08.2014, 09:33 | Сообщение # 4 |
Группа: Проверенные
Сообщений: 193
Статус: Оффлайн
| Да Вы правильно поняли, я про графический редактор сценариев.
|
|
| |
flyjshum | Дата: Среда, 27.08.2014, 07:48 | Сообщение # 5 |
Группа: Проверенные
Сообщений: 6
Статус: Оффлайн
| Добрый день. По ссылке версия 2.3.1 для windows, для linux версии нет?
|
|
| |
arm-skif | Дата: Среда, 27.08.2014, 09:23 | Сообщение # 6 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Добрый день. Собирать промежуточные версии для всех платформ затратно по времени. Новая версия появляется на главной раз в 3-4 месяца, а промежуточные версии появляются на форуме чаще. Могу начать собирать промежуточные версии и для linux x64. Сегодня вечером соберу.
|
|
| |
arm-skif | Дата: Среда, 27.08.2014, 20:20 | Сообщение # 7 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| flyjshum, у вас какой дистрибутив linux? Добавил в первое сообщение ссылку для linux x86-64.
|
|
| |
flyjshum | Дата: Среда, 27.08.2014, 23:22 | Сообщение # 8 |
Группа: Проверенные
Сообщений: 6
Статус: Оффлайн
| Тестирую на ubuntu (виртуальная машина), а в итоге всем рулить будет raspberry pi. Спасибо
|
|
| |
arm-skif | Дата: Четверг, 28.08.2014, 09:28 | Сообщение # 9 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| В программу добавилась еще одно библиотека - QtScript. Поэтому для ubuntu скорее всего придется доустановить libqt4-script (если не установлена). Все необходимые библиотеки для ubuntu: libphonon4, libqt4-core, libqt4-gui, libqt4-network, libqt4-script.
|
|
| |
Sanyka | Дата: Суббота, 06.09.2014, 21:51 | Сообщение # 10 |
Группа: Проверенные
Сообщений: 43
Статус: Оффлайн
| Arm-skif, добавление сценариев - супер! Только начал придумывать как их реализовать внешними скриптами, а у Вас уже готовое решение на блюдечке! СПАСИБО!
|
|
| |
arm-skif | Дата: Суббота, 06.09.2014, 22:25 | Сообщение # 11 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Пожалуйста.
|
|
| |
FlyJ | Дата: Пятница, 12.09.2014, 22:03 | Сообщение # 12 |
Группа: Проверенные
Сообщений: 64
Статус: Оффлайн
| arm-skif поясните, пожалуйста, логику работы сигналов в подсистеме скрипты. Есть следующий сигнал: signalUpdatePart (numPKU, part) Изменилось состояние раздела. Если part = 0, то изменились состояния всех разделов данного ПКУ.
Код const numPKU=257 //номер пульта const part=3 //номер раздела armSkif.signalUpdatePart(numPKU, part) { //некоторые действия, выполняющиеся //при изменении состояния раздела 3 } Т.е. положив скрипт в автозапуск серверного ПО каким образом отследить изменение состояния раздела и запустить выполнение некоторых действий? Скрипт будет запущен один раз и каждый раз будет реагировать на изменение состояния раздела или же при наступления события (сигнала) нужно перезапускать скрипт? В Ваших примерах этого не нашел.
Спасибо.
|
|
| |
arm-skif | Дата: Суббота, 13.09.2014, 06:33 | Сообщение # 13 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Цитата FlyJ ( ) Скрипт будет запущен один раз и каждый раз будет реагировать на изменение состояния раздела Именно так. Пример этого сигнала можно посмотреть в файле "Examples\08_Alarm_Relay.js".
Вот так можно соединить сигнал с функцией: Код armSkif.signaUpdatePart.connect( updatePart ); а потом в функции проверять тот ли это раздел что нам нужно: Код const numPKU = 1; // Номер пульта const numPart = 1; // Номер раздела
function updatePart(nPKU, nPart) { if ( (nPKU == numPKU) && (nPart == numPart) ) { // Если нужный раздел, то выполнить. } } Кстати, при необходимости можно и отключить сигнал от функции: Код armSkif.signaUpdatePart.disconnect( updatePart );
|
|
| |
arm-skif | Дата: Суббота, 13.09.2014, 07:01 | Сообщение # 14 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Цитата FlyJ ( ) const numPKU=257 //номер пульта Здесь может быть ошибка. В конфигурации сервера каждому пульту присваивается порядковый номер от 1 до 255. А вот в конфигурации клиента так может быть, т.к. этот номер состоит из номера сервера и номера пульта ((1<<8) |1)==257. Посмотрите какой номер пульта будет записываться в лог: Код armSkif.signaUpdatePart.connect( updatePart );
function updatePart(nPKU, nPart) { armSkif.writeLog("PKU: " + nPKU + ", part: " +nPart); }
|
|
| |
FlyJ | Дата: Суббота, 13.09.2014, 08:18 | Сообщение # 15 |
Группа: Проверенные
Сообщений: 64
Статус: Оффлайн
| Спасибо. пропустил этот пример, все наглядно. У Вас используется функция signaUpdatePart, это не опечатка (отсутствует буква l в слове signal)? Так в примерах и в мануале.
|
|
| |
arm-skif | Дата: Суббота, 13.09.2014, 11:04 | Сообщение # 16 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Опечатка. Спасибо, исправлю. На данный момент в программе работает "signaUpdatePart". Я все примеры проверял на работоспособность и т.к. опечатка везде, то я ее не заметил.
В документации еще нашел опечатку " SignalUpdateSh" - первая буква должна быть маленькой. Это текстовый редактор постарался, в программе с маленькой буквы.
|
|
| |
vovanrostov | Дата: Суббота, 24.01.2015, 11:29 | Сообщение # 17 |
Группа: Проверенные
Сообщений: 9
Статус: Оффлайн
| Добрый день. Подскажите пожалуйста как будет выглядеть сценарий? Задача такая: есть прибор С2000-СП1(адрес 3) . Реле 1 необходимо включить в 8.00, выключить в 20.00, каждый день. В двух вариантах: Автозапуск во время старта программы и запуск пользователем. Заранее спасибо! Читал Вашу инструкцию что-то не получается у меня. Видно делаю что-то не так.
|
|
| |
arm-skif | Дата: Суббота, 24.01.2015, 12:31 | Сообщение # 18 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Добрый день. Если сценарий запускаете в клиентсом ПО, то возможные причины: - пользователь должен быть авторизован, иначе нельзя управлять реле,
- должен быть указан номер сервера.
Для проверки работы сценария удобно пользоваться выводом информации в файл при помощи команды: armSkif.writeLog("Строка");. Так можно проверить срабатывает ли какая-либо функция.
Сценарии управления реле по времени лучше запускать в серверном ПО (папка Scripts\ScriptsServer).
За основу можно взять пример "06_Sheduler_Relay.js". Я подправил этот файл под задачу (прочитайте комментарии в файле):
|
|
| |
arm-skif | Дата: Суббота, 24.01.2015, 12:51 | Сообщение # 19 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| В клиентском ПО можно управлять реле, расположенном на графическом плане, или написать два подобных сценария (поместить в папку Scripts\ScriptsClientMenu):Код var numPKU = 1; // Номер пульта const numDev = 3; // Номер прибора const numRelay= 1; // Номер реле
const numServer = 1; // Номер сервера numPKU = armSkif.convert2ByteToWord(numServer, numPKU);
// Включить реле armSkif.controlRelay(numPKU, numDev, numRelay, armSkif.RL_ON );
// Выключить реле //armSkif.controlRelay(numPKU, numDev, numRelay, armSkif.RL_OFF);
|
|
| |
vovanrostov | Дата: Суббота, 24.01.2015, 18:10 | Сообщение # 20 |
Группа: Проверенные
Сообщений: 9
Статус: Оффлайн
| Спасибо. Все работает отлично! Подскажите как сделать чтобы в одном скрипте исполнялось несколько действий? Например по сценарию включалось сразу два реле?
|
|
| |
arm-skif | Дата: Суббота, 24.01.2015, 19:48 | Сообщение # 21 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Пожалуйста. Нужно добавить две строки управления реле: Код armSkif.controlRelay(numPKU, numDev, numRelay, armSkif.RL_ON ); armSkif.controlRelay(numPKU, numDev, numRelay+1, armSkif.RL_ON );
или так: armSkif.controlRelay(numPKU, numDev, 1, armSkif.RL_ON ); armSkif.controlRelay(numPKU, numDev, 2, armSkif.RL_ON );
|
|
| |
СергейМ | Дата: Пятница, 06.03.2015, 16:53 | Сообщение # 22 |
Группа: Проверенные
Сообщений: 12
Статус: Оффлайн
| Коллеги, подскажите, как из сценария отправить данные в php скрипт? по типу Код http://IP/objects/?script=myscript¶m1=value1
Сообщение отредактировал СергейМ - Пятница, 06.03.2015, 16:57 |
|
| |
arm-skif | Дата: Воскресенье, 08.03.2015, 20:59 | Сообщение # 23 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Про php не знаю, но в скифе есть еще websocket. Посмотрите в папке WebSocket, возможно это будет даже лучше.
|
|
| |
СергейМ | Дата: Четверг, 19.03.2015, 17:16 | Сообщение # 24 |
Группа: Проверенные
Сообщений: 12
Статус: Оффлайн
| Модернизировал скрипт: Код /**************************************************************************** ** Показать сообщение при изменении состояния раздела ****************************************************************************/
const numServer = 1; // Номер сервера const numPKU = 1; // Номер пульта const numPart = 1; // Номер раздела
var serverNumPKU = armSkif.convert2ByteToWord(numServer, numPKU); // Если состояние какого-нибудь раздела изменится, то вызвать функцию. armSkif.signalUpdatePart.connect( updatePart );
//--------------------------------------------------------------------------- function updatePart(nPKU, nPart) { if ( (nPKU == serverNumPKU) ) // Если нужный раздел, то показать сообщение: var nPart_descr = armSkif.getPartDescription(nPKU, nPart); var nPart_descr = nPart_descr.replace (/\s/ig,"_"); var nPart_state = armSkif.convertStateToDescript( armSkif.getPartState(nPKU, nPart) ); var nPart_state = nPart_state.replace (/\s/ig,"_"); var nPart_State_code = armSkif.getPartState(nPKU, nPart); var sendmes = "curl " + '"' + "http://10.195.30.227/objects/?script=skifdata&nPKU=" + nPKU + "&nPart_State_code=" + nPart_State_code + "&nPart=" + nPart + "&nPart_descr=" + nPart_descr + "&nPart_state=" + nPart_state + '"'; if (armSkif.isOsLinux()) armSkif.runProgram(sendmes);
} //--------------------------------------------------------------------------------
если добавить в автозапуск клиента, то всё работает, но если в автозапуск сервера, то получаю ошибку в логах: Цитата [BolidCOM]Ошибка при работе с UDP портом 2048: невозможно отправить сообщение как исправить ситуацию? или RunProgram из под серверной части на работает?
|
|
| |
arm-skif | Дата: Четверг, 19.03.2015, 17:27 | Сообщение # 25 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Ошибка [BolidCOM]не связана со скриптами, а связана со взаимодействием с пультом через С2000-Ethernet.
Скрипт не работает на сервере, потому что здесь лишнее преобразование armSkif.convert2ByteToWord. Это клиенту нужно знать с пультом какого сервера работать, поэтому номер пульта состоит из номера сервера и номера пульта на сервере. А для самого сервера пульты имеют простые номера.
ЗаменитеКод if ( nPKU == serverNumPKU ) на
|
|
| |
СергейМ | Дата: Четверг, 19.03.2015, 22:08 | Сообщение # 26 |
Группа: Проверенные
Сообщений: 12
Статус: Оффлайн
| спасибо, заработало
|
|
| |
arm-skif | Дата: Пятница, 20.03.2015, 09:15 | Сообщение # 27 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Пожалуйста.
|
|
| |
FlyJ | Дата: Вторник, 28.07.2015, 21:26 | Сообщение # 28 |
Группа: Проверенные
Сообщений: 64
Статус: Оффлайн
| Возник вопрос. У меня пульт настроен следующим образом. Шлейф серверная (датчик движения), единственный в разделе, если выключен режим охраны, то датчик просто фиксирует движение без тревоги (сообщение на пульте с2000-м ненорма ШС (в случае обнаружения движения), восстановление ШС (в случае отсутствия движения))). использую сигналы. Код const numServer = 1; // Номер сервера const numPKU = 257; // Номер пульта const numPart = 1; // Номер раздела const numFsh = 2; // Номер шлейфа
var serverNumPKU = armSkif.convert2ByteToWord(numServer, numPKU); armSkif.signalUpdatePart.connect( updatePart ); armSkif.signalUpdateSh.connect( updateSh ); //--------------------------------------------------------------------------- function updatePart(nPKU, nPart) {armSkif.messageInformation("Информация", "Изменилось состояние раздела"); }
function updateSh(nPKU, nFsh) {armSkif.messageInformation("Информация", "Изменилось состояние шлейфа"); } В случае если объект (раздел и шлейф) ставиться под охрану или снимается, то выходит диалоговое окно с информацией, т.е. сигнал срабатывает. Если раздел (и шлейф) снят с охраны и ОПС обнаруживает движение (на с2000-м фиксируется событие ненорма ШС) , никакой сигнал не срабатывает (signalUpdatePart signalUpdateSh). Скрипт запускается в клиентском приложении (не автозапуск). В таблице 9 я данного события не нашел. На скриншоте в журнале отмечено как данное событие фиксирует клиентское ПО.
|
|
| |
arm-skif | Дата: Среда, 29.07.2015, 08:18 | Сообщение # 29 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Мое предположение такое: пульт выдает сообщение в журнал событий, но состояние шлейфа не меняет. Шлейф как был снят, так и остался снят. Посмотрите состояние шлейфа в боковой панели "ШС" или "Все ШС" или на пульте. Это только предположение, позже я проверю так ли это.
Можно попробовать решить данную задачу не через состояние шлейфа, а через события. Посмотрите примеры: 22_WriteAllEvents.js, 23_WriteEvents.js
В таблице 9 это события 117, 119. Да, некоторые названия отличаются. Раньше Скиф не поддерживал в скриптах события, поэтому я привел таблицу состояний. Например событию "Снятие ШС" соответствует состояние "Снят". Я поправлю это в документации на сценарии.
|
|
| |
FlyJ | Дата: Среда, 29.07.2015, 09:57 | Сообщение # 30 |
Группа: Проверенные
Сообщений: 64
Статус: Оффлайн
| Цитата arm-skif ( )
Можно попробовать решить данную задачу не через состояние шлейфа, а через события. Посмотрите примеры: 22_WriteAllEvents.js, 23_WriteEvents.js
Я думал об этом варианте. Эта функция быстро срабатывает? Хочу отлавливать движение в помещение с помощью обьемника в режиме он-лайн
|
|
| |
arm-skif | Дата: Среда, 29.07.2015, 10:03 | Сообщение # 31 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Быстро.
|
|
| |
arm-skif | Дата: Среда, 29.07.2015, 10:23 | Сообщение # 32 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Заметил что у вас события нарушение и восстановление проходят в одно и то же время. Это тоже может быть причиной. Скиф запрашивает состояние шлейфа после возникновения события, и хоть запрос посылается пульту сразу, пульт может ответить уже после восстановления шлейфа. В таком случае, в сценарии нужно реагировать на события. Или как-то увеличить время нарушения шлейфа (если в этом причина).
|
|
| |
FlyJ | Дата: Среда, 29.07.2015, 10:52 | Сообщение # 33 |
Группа: Проверенные
Сообщений: 64
Статус: Оффлайн
| Цитата arm-skif ( ) Заметил что у вас события нарушение и восстановление проходят в одно и то же время. Это тоже может быть причиной. Только на датчики движения (ИО) моргнул индикатор(т.е. зафиксировал движение - на пульте событие ненорма шс и мгновенно восстановление шс. Снова фиксирует движение опять ненорма шс. По сути мне достаточно отловить ненорма шс, подождать пару секунд, а потом снова проверить было ли событие ненорма шс. Т.е. человек все еще в помещении или нет. В таком случае можно попробовать использовать writeallevent. А на форуме болид что то было про программируемый технологический тип шлейфа, может это поможет...гляну мануал
|
|
| |
arm-skif | Дата: Среда, 29.07.2015, 10:54 | Сообщение # 34 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Кстати, в документации на Фотон-9 написано что длительность тревожного извещения не менее 2 секунд. У вас какой извещатель? Странно что события нарушения и восстановления проходят в одну секунду.
|
|
| |
FlyJ | Дата: Среда, 29.07.2015, 17:50 | Сообщение # 35 |
Группа: Проверенные
Сообщений: 64
Статус: Оффлайн
| Время, в течение которого вход 6-го типа должен быть в норме для восстановления из состояния "Неисправность технологического входа", а также отработки включённых параметров "Автоперевзятие из тревоги" и "Контроль в снятом состоянии" Нашел такой параметр в мануале на с2000 кдл. Вечером проверюДобавлено (29.07.2015, 14:31) ---------------------------------------------
Цитата arm-skif ( ) Кстати, в документации на Фотон-9 написано что длительность тревожного извещения не менее 2 секунд. У вас какой извещатель? Странно что события нарушения и восстановления проходят в одну секунду.
C2000-икДобавлено (29.07.2015, 17:50) ---------------------------------------------
Цитата arm-skif ( ) Заметил что у вас события нарушение и восстановление проходят в одно и то же время. Это тоже может быть причиной. Скиф запрашивает состояние шлейфа после возникновения события, и хоть запрос посылается пульту сразу, пульт может ответить уже после восстановления шлейфа. В таком случае, в сценарии нужно реагировать на события. Или как-то увеличить время нарушения шлейфа (если в этом причина). Изменил время восстановления шлейфа в конфигурации С2000-КДЛ. Теперь система работает следующим образом: в снятом состоянии на пульте сообщение ненорма ШС, проходит 10 секунд и, если датчик в течении 10 секунд не обнаруживает движение, на пульт приходит сообщение восстановление ШС. В программе в журнале эти события фиксируются, на вкладке "ШС" состояние "снят" и не меняется, скрипт, увы, не отлавливает это событие. Буду проверять вариант через writeallevent
|
|
| |
FlyJ | Дата: Среда, 29.07.2015, 17:52 | Сообщение # 36 |
Группа: Проверенные
Сообщений: 64
Статус: Оффлайн
|
|
|
| |
arm-skif | Дата: Среда, 29.07.2015, 20:42 | Сообщение # 37 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| А пульт какое состояние шлейфа показывает?
|
|
| |
FlyJ | Дата: Понедельник, 03.08.2015, 08:45 | Сообщение # 38 |
Группа: Проверенные
Сообщений: 64
Статус: Оффлайн
| arm-skif, ненорма шс Добавлено (02.08.2015, 22:52) --------------------------------------------- Добрый вечер. Когда на сервере в автозапуске запускается скрипт, который запускает внешнее приложение (runProgram(path_to_php-script.php "параметр1" "параметр2")), то вместо русских символов, передаются знаки вопроса. php скрипт выполняется через консольный интерпретатор PHP и вносит в БД MySQL информацию ,переданную АРМ Скифом. В PHP скрипте, первым делом (после подключения к БД) устанавливается нужная кодировка (UTF8). Собственно вопрос в следующем, видимо скрипт АРМ Скифа отдает русские символы в другой кодировке, кто-то в курсе в какой? Добавлено (03.08.2015, 08:45) --------------------------------------------- Причем, если делать запись в файл (как в вашем примере), то кодировка файла UTF8
|
|
| |
arm-skif | Дата: Понедельник, 03.08.2015, 15:16 | Сообщение # 39 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| АРМ Скиф работает в UTF8. Возможно что-то не так преобразуется в runProgram, проверю.
|
|
| |
arm-skif | Дата: Понедельник, 03.08.2015, 21:12 | Сообщение # 40 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Проверил в linux, с кодировкой все нормально. Сценарий в кодировке UTF8:armSkif.runProgram('kcalc -caption "ARM Skif проверка1"');
Результат:
|
|
| |
arm-skif | Дата: Понедельник, 03.08.2015, 21:49 | Сообщение # 41 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Вот такой скрипт тоже нормально работает: armSkif.runProgram("sh 1.sh проверка");
Отдельно создан файл 1.sh, в который я записал: echo $1 >> /home/sergey/test1.txt
|
|
| |
arm-skif | Дата: Вторник, 04.08.2015, 01:51 | Сообщение # 42 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Попробуйте скрипт во вложении, он записывает состояния шлейфов в лог. У меня сигнал на изменения шлейфа срабатывает. Нет С2000-ИК, не могу точно сказать в чем причина. Если этот скрипт не сработает, то тогда через события.
|
|
| |
arm-skif | Дата: Вторник, 04.08.2015, 11:15 | Сообщение # 43 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Насчет состояния шлейфа у меня есть еще одно предположение, я проверю, а потом попробуем на новой версии.
|
|
| |
FlyJ | Дата: Вторник, 04.08.2015, 22:19 | Сообщение # 44 |
Группа: Проверенные
Сообщений: 64
Статус: Оффлайн
| Цитата arm-skif ( ) Попробуйте скрипт во вложении, он записывает состояния шлейфов в лог. Аналогично. Реакция только на тревоги, взятие или снятие. Через события работает. Время реакции секунда или две (с учетом того, что событие архивируются в бд MySQL). С кодировкой вопрос решен. Скиф передает в php скрипт в UTF8. В БД таблица была в UTF8, а вот одно из полей этой таблицы в latin1. Исправил средствами phpmyadmin кодировку поля на UTF8, русский язык стал отображаться корректно. Спасибо.
|
|
| |
arm-skif | Дата: Вторник, 04.08.2015, 23:39 | Сообщение # 45 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Попробуйте заменить серверное ПО на rpi: rpi.2.6.5 Проблема в том, что новые приборы могут сообщать состояние ШС двумя разными способами (условно назовем их старый и новый). В момент запуска, Скиф опрашивает ШС новым способом, а в момент поступления события - старым (так удобно в реализации). Видимо для совместимости со старым ПО, для старого способа новый прибор выдает не самое приоритетное состояние ШС. Сейчас опрос старых приборов старым способом (как и было), а новых приборов - только новым способом.
|
|
| |
FlyJ | Дата: Среда, 05.08.2015, 19:23 | Сообщение # 46 |
Группа: Проверенные
Сообщений: 64
Статус: Оффлайн
| взял файл сервера из предыдущего сообщения, заменил тот что был на rpi. в автозагрузку сервера положил скрипт из 42 сообщения. Сервер в лог пишет только взятие/снятие/тревогу
Сообщение отредактировал FlyJ - Среда, 05.08.2015, 19:23 |
|
| |
arm-skif | Дата: Среда, 05.08.2015, 20:37 | Сообщение # 47 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Странно. Это исправление решило подобную проблему у другого пользователя для С2000-4. Какая версия КДЛ и извещателя? Подумаю в чем может быть проблема.
|
|
| |
FlyJ | Дата: Среда, 05.08.2015, 21:35 | Сообщение # 48 |
Группа: Проверенные
Сообщений: 64
Статус: Оффлайн
| Цитата arm-skif ( ) версия КДЛ 1.36
|
|
| |
signalizachia | Дата: Вторник, 02.02.2016, 19:21 | Сообщение # 49 |
Группа: Проверенные
Сообщений: 1
Статус: Оффлайн
| Доброго времени суток, прошу прощения за мой французский, но я электронщик по образованию. Если я просто управляю реле скриптом из клиента var numPKU = 1; // Номер пульта const numDev = 4; // Номер прибора const numRelay= 4; // Номер реле
const numServer = 1; // Номер сервера numPKU = armSkif.convert2ByteToWord(numServer, numPKU);
// Включить реле armSkif.controlRelay(numPKU, numDev, numRelay, armSkif.RL_ON ); то все гуд, но если я вставляю вот такой скрипт const numPKU = 1; // Номер пульта const numPart = 3; // Номер раздела const numDev = 4; // Номер прибора const numRelay= 4; // Номер реле // Если состояние какого-нибудь раздела изменится, то вызвать функцию. armSkif.signalUpdatePart.connect( updatePart );
//--------------------------------------------------------------------------- function updatePart(nPKU, nPart)
{if ( (nPKU == numPKU) && (nPart == numPart) ) // Если нужный раздел, то: {var partState = armSkif.getPartState(nPKU, nPart);// Состояние раздела if ( armSkif.isAlarmState(partState) ) // Если тревога, то: armSkif.controlRelay(numPKU, numDev, numRelay, armSkif.RL_ON ); // Включить реле else armSkif.controlRelay(numPKU, numDev, numRelay, armSkif.RL_OFF); // Выключить реле }} в папку ScriptsServer то ничего не происходит и как понять что я делаю не так-тоже вопрос, а существуют какие либо средства отладки или это глупый вопрос?
|
|
| |
arm-skif | Дата: Вторник, 02.02.2016, 21:09 | Сообщение # 50 |
Группа: Администраторы
Сообщений: 835
Статус: Оффлайн
| Вполне рабочий скрипт. Вставьте в начало скрипта строку: armSkif.writeLog("start");
а после function updatePart(nPKU, nPart) {
вставьте: armSkif.writeLog(nPKU +", "+ nPart);
Результат можно посмотреть в файле: log\ServerSkif_script.log
в этом же файле будут указаны ошибки выполнения скрипта.
|
|
| |