Работа MDM с оборудованием BOLID
Модератор: immortal
-
- Сообщения: 136
- Зарегистрирован: Вс июл 14, 2013 2:42 pm
- Благодарил (а): 6 раз
- Поблагодарили: 26 раз
Re: Работа MDM с оборудованием BOLID
болид можно сростить двумя способами
или через С2000-ПП по модбас
или писать обработчик ихнего дурацкого протокола Орион
или через С2000-ПП по модбас
или писать обработчик ихнего дурацкого протокола Орион
-
- Сообщения: 100
- Зарегистрирован: Вт ноя 11, 2014 5:16 pm
- Откуда: Шатура
- Благодарил (а): 4 раза
- Поблагодарили: 8 раз
Re: Работа MDM с оборудованием BOLID
У меня работает через skif. Все события из болида валятся в него, затем, через скрипт передаются в МДМ, в МДМ php обработчик по образу ESP.
Отправлено с моего SM-G900FD через Tapatalk
Отправлено с моего SM-G900FD через Tapatalk
Windows, Debian 8, 1-Wire
Connect
Connect
-
- Сообщения: 100
- Зарегистрирован: Вт ноя 11, 2014 5:16 pm
- Откуда: Шатура
- Благодарил (а): 4 раза
- Поблагодарили: 8 раз
Re: Работа MDM с оборудованием BOLID
вот скрипт, который крутится на сервере
соответственно http://10.195.30.33/objects/?script=skifevents
10.195.30.33 заменить на свой IP МДМ
skifevents - имя скрипта в МДМ
скриптПоказать
****************************************************************************
** При запуске сервера сохранить все события в файл (если файл не существует).
** Дописывать в конец файла все вновь поступившие события.
** Сценарий только для сервера (поместить в каталог 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); // Ключ (пароли не высвечиваются, только коды ключей)
*/
** При запуске сервера сохранить все события в файл (если файл не существует).
** Дописывать в конец файла все вновь поступившие события.
** Сценарий только для сервера (поместить в каталог 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); // Ключ (пароли не высвечиваются, только коды ключей)
*/
10.195.30.33 заменить на свой IP МДМ
skifevents - имя скрипта в МДМ
Windows, Debian 8, 1-Wire
Connect
Connect
-
- Сообщения: 136
- Зарегистрирован: Вс июл 14, 2013 2:42 pm
- Благодарил (а): 6 раз
- Поблагодарили: 26 раз
Re: Работа MDM с оборудованием BOLID
Для работы через скиф нужен пульт же вроди... У меня вот например дома висит КДЛ на нем ВТ 8 штук. рядом с ним СП1 (4 реле). еще на КДЛе висят датчики дыма и счетчики импульсов.
По началу пробовал расковырять ихний протокол... дурной протокол.. видимо инженеры БОЛИД очень любят функцию xor... короче забил, пошел за 800р купил С2000-ПП. В итоге получаем немного геммора с настройкой и на выходе нормальный православный понятный modbus.
По началу пробовал расковырять ихний протокол... дурной протокол.. видимо инженеры БОЛИД очень любят функцию xor... короче забил, пошел за 800р купил С2000-ПП. В итоге получаем немного геммора с настройкой и на выходе нормальный православный понятный modbus.
- За это сообщение автора Geban поблагодарил:
- Pioneer-dz (Чт окт 06, 2016 9:56 pm)
- Рейтинг: 1.16%
-
- Сообщения: 113
- Зарегистрирован: Пт дек 14, 2012 3:46 am
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
-
- Сообщения: 87
- Зарегистрирован: Пн янв 27, 2014 2:50 pm
- Откуда: Россия, Тюмень
- Благодарил (а): 12 раз
- Поблагодарили: 14 раз
Re: Работа MDM с оборудованием BOLID
Я пробовал, работает.smoker_vvo писал(а):SergeyM: По MQTT завязывать Болид и МДМ не пробовали??
Связывал через скиф
Пишу с пульта....
-
- Сообщения: 100
- Зарегистрирован: Вт ноя 11, 2014 5:16 pm
- Откуда: Шатура
- Благодарил (а): 4 раза
- Поблагодарили: 8 раз
Re: Работа MDM с оборудованием BOLID
Да. Подтверждаю, в последней версии Skif добавлена возможность работы по mqtt. После 2х часов танцев с бубном заработало. Правда еще не пробовал управлять болидом из МДМ.
Отправлено с моего SM-G900FD через Tapatalk
Отправлено с моего SM-G900FD через Tapatalk
Windows, Debian 8, 1-Wire
Connect
Connect
-
- Сообщения: 113
- Зарегистрирован: Пт дек 14, 2012 3:46 am
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
Re: Работа MDM с оборудованием BOLID
Нуууу..... рассказывайте, рассказывайте.... какие коды за что отвечаютЪ....... С управлением как то не получается... И поделитесь кодом для МДМ по анализу ......
-
- Сообщения: 100
- Зарегистрирован: Вт ноя 11, 2014 5:16 pm
- Откуда: Шатура
- Благодарил (а): 4 раза
- Поблагодарили: 8 раз
Re: Работа MDM с оборудованием BOLID
Полный перечень кодов есть в документации на Болид. В хелпе Скифа тоже есть. Код сейчас выложить не могу, нахожусь в больнице. Посмотрите у меня в коннекте, там может быть.
Отправлено с моего SM-G900FD через Tapatalk
Отправлено с моего SM-G900FD через Tapatalk
Windows, Debian 8, 1-Wire
Connect
Connect
-
- Сообщения: 113
- Зарегистрирован: Пт дек 14, 2012 3:46 am
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
Re: Работа MDM с оборудованием BOLID
Дяденьки! Ну поделитесь взамодействием BOLID, MQTT и МДМ...... например, как получив значение 24 (на охране) перевести его некое текстовое значение типа ОХРАНА Включена....... или присвоить цветовой статус красный Желтый Зеленый. и как управлять ШС или разделами с МДМ.....