****************************************************************************
** При запуске сервера сохранить все события в файл (если файл не существует).
** Дописывать в конец файла все вновь поступившие события.
** Сценарий только для сервера (поместить в каталог Scripts\ScriptsServer).
****************************************************************************/
const numPku = 1; // Номер пульта
const fileName = "test/allEvents.txt"; // Файл для записи событий (относительно каталого log)
//---------------------------------------------------------------------------
if (!armSkif.fileExists(fileName)){ // Если файл не суествует, то:
var count = armSkif.getEventCount(numPku); // Количество событий в БД
for (var i=0; i<count;){
var str="";
for (var j=0; (j<100) && (i<count); j++)
str += strEvent(i++); // Функция описана ниже
// armSkif.writeFile(fileName, str); // Записать в файл
}
}
armSkif.signalNewEvent.connect( newEvent );// Вызвать функцию newEvent при поступлении нового события
//---------------------------------------------------------------------------
function newEvent(nPKU, count){
if ( (numPku==nPKU) && (count>0)){ // Если событие для нужного пульта
var n = count - 1; // Порядковый номер события в базе данных
var str = strEvent(n); // Функция описана ниже
// armSkif.writeFile(fileName, str); // Записать в файл
if (armSkif.isOsLinux()) armSkif.runProgram(str);
}
}
//---------------------------------------------------------------------------
function strEvent(n){ // Функция возвращает информацию о событии с номером (n)
var date = armSkif.getEventDate(numPku, n); // Дата/время события
var zone = armSkif.getEventZone(numPku, n); // Зона доступа (для СКУД)
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 str = "curl " + '"' + "
http://10.195.30.33/objects/?script=skifevents&nPKU=" + nPKU + // начало
//date.toLocaleDateString() + ";" + // Дата
//date.toLocaleTimeString() + ";" + // Время
"&Date=" + date.getDate() + "." + date.getMonth() + "." + date.getFullYear() + // Дата
"&Time=" + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds() + // Время
"&zone" + zone + // Зона доступа
"&nPart" + nPart + //Раздел
"&nPart_descr" + nPart_descr + // Описание раздела
"&nPart_state" + nPart_state + // Состояние раздела
"&EventDev" + armSkif.getEventDev(numPku, n) + // Номер прибора
"&getEventUnit" + armSkif.getEventUnit(numPku, n) + // Агрегат (шлейф/реле/считыватель)
"&nPart_event=" + armSkif.convertStateToDescript( armSkif.getEvent(numPku, n) ) + // Описание события
"&nPart_eventpart=" + armSkif.getEventPart(numPku, n) + // Раздел
"&Event_zone=" + ((zone==-1) ? "": zone) + // Зона доступа (для СКУД)
"&Event_descr=" + armSkif.getEventDescr(numPku, n)+ // Описание события
"&Event_addr=" + armSkif.getEventAddr(numPku, n) + // Адрес (прибор/шлейф/реле/считыватель)
"&Event_descr=" + armSkif.getEventUser(numPku, n) + "\n"; // Хозорган
return str;
}
/*
Не задействованные функции
armSkif.getEventDev(numPku, n); // Номер прибора
armSkif.getEventUnit(numPku, n); // Агрегат (шлейф/реле/считыватель)
armSkif.isUnitSh(numPku, n); // Если событие относится к шлейфу
armSkif.isUnitRl(numPku, n); // Если событие относится к реле
armSkif.isUnitRd(numPku, n); // Если событие относится к считывателю
armSkif.getEventKey(numPku, n); // Ключ (пароли не высвечиваются, только коды ключей)
*/