NEWS
Орион Bolid
-
Вобщем была идея прицепить через переходник bolid-modbus.
Недавно копался на харде наткнулся на прогу арм-скиф, пошёл на оф сайт посмотреть что нового есть и бинго
ОБНОВЛЕНИЕ ПРОГРАММЫ ДО ВЕРСИИ 2.7.0
В сценарии добавлен протокол MQTT. Данный протокол предназначен для интеграции с программами «Умный дом».
Добавлена документация на API WebSocket.
скрипты для arm-скиф (поместить в каталог Scripts\ScriptsServer)
!
/**************************************************************************** ** Демонстрация соединения скрипта с внешним ПО при помощи протокола MQTT ** (Message Queuing Telemetry Transport) - протокол обмена сообщениями, ** реализующий модель "публикация/подпись". Для обмена по этому протоколу ** требуется брокер (сервер) MQTT, например mosquitto. Скрипт соединяется с ** брокером, подписывается на сообщение, публикует сообщение, получает это же ** сообщение от брокера и записывает его в лог-файл. ** Сценарий для сервера (поместить в каталог Scripts\ScriptsServer). ****************************************************************************/ ! var timerReconnect = 0; //Таймер попдключения в случае ошибки или разрыва соединения ! // Инициализация глобального объекта "mqtt" mqtt.init("localhost", 1883, "clientId", "user", "password"); ! // Соединение сигналов объекта mqtt с функциями скрипта. Функции описаны ниже. // Основные сигналы: mqtt.connacked.connect ( connacked ); mqtt.received.connect ( received ); mqtt.error.connect ( error ); mqtt.disconnected.connect( disconnected ); ! // Вспомогательные сигналы. Могут понадобиться при отладке: mqtt.connected.connect ( connected ); mqtt.subacked.connect ( subacked ); mqtt.unsubacked.connect ( unsubacked ); ! mqtt.connect(); // Подключиться к брокеру. ! //--------------------------------------------------------------------------- // Функция вызывается при подтверждении установления соединения с брокером. // Не путать с функцией connected (см. далее). //--------------------------------------------------------------------------- function connacked() { armSkif.writeLog( scriptFileName + " (connacked)"); ! mqtt.subscribe("test/test/#"); // Подписаться на все сообщения топика "test/test/" //mqtt.unsubscribe("test/test/#"); // Отписаться от всех сообщений топика "test/test/" ! // Опубликовать сообщение в топике "test/test/1". // true - брокер будет хранить сообщение данного топика даже при перезагрузке. mqtt.publish("test/test/1", "test1 проверка1", true); } //--------------------------------------------------------------------------- //Функция вызывается при получении сообщении от брокера. //--------------------------------------------------------------------------- function received(topic, payload) { armSkif.writeLog( scriptFileName + " (received): " + topic +": "+ payload); } //--------------------------------------------------------------------------- // Функция вызывается при возникновении ошибки в процессе соединения. //--------------------------------------------------------------------------- function error(err) { armSkif.writeLog( scriptFileName + " (error): " +err); ! mqtt.disconnect(); // Отключиться от брокера. timeReconnect(); } //--------------------------------------------------------------------------- // Функция вызывается при отключении от брокера. //--------------------------------------------------------------------------- function disconnected() { armSkif.writeLog( scriptFileName + " (disconnected)"); ! timeReconnect(); } //--------------------------------------------------------------------------- // Переподключиться в случае отключения или ошибки //--------------------------------------------------------------------------- function timeReconnect() { // Через одну секунду вызвать функцию reconnect if (timerReconnect==0) timerReconnect = armSkif.setTimeout(reconnect, 1000); } //--------------------------------------------------------------------------- function reconnect() { timerReconnect = 0; mqtt.connect(); // Подключиться к брокеру. } ! //=========================================================================== // Далее приведены вспомогательные функции. // Эти функции не обязательно применять, они могут помочи при отладке скрипта. ! //--------------------------------------------------------------------------- // Функция вызывается при установлении соединения с брокером. // Подтверждение еще не получено, но TCP-соединение уже установлено. //--------------------------------------------------------------------------- function connected() { armSkif.writeLog( scriptFileName + " (connected)"); } //--------------------------------------------------------------------------- // Функция вызывается при подтверждении подписки, mid - количество подписок. //--------------------------------------------------------------------------- function subacked(mid) { armSkif.writeLog( scriptFileName + " (subacked): " + mid ); } //--------------------------------------------------------------------------- // Функция вызывается при подтверждении отписки, mid - количество подписок. //--------------------------------------------------------------------------- function unsubacked(mid) { armSkif.writeLog( scriptFileName + " (unsubacked): " + mid); } !! ```
/**************************************************************************** ** При запуске сервера читает списки пультов разделов шлейфов и т.д., ** транслирует этот список на mqtt шину ** События транслирует в нужные разделы шины mqtt ** Выполняет действия по приходу событий с шины mqtt ** Сценарий только для сервера (поместить в каталог Scripts\ScriptsServer). ** Create by Oleg Lisovskiy 2015 year ****************************************************************************/ ! //Параметры подключения к брокеру MQTT const MQTT_SERVER = "localhost"; const MQTT_PORT = 1883; const MQTT_CLIENTID = "clientId"; const MQTT_USER = "user"; const MQTT_PASSWD = "password"; const MQTT_ROOT = "all/bolid"; ! const PREFIX_PKU = "pku_"; const PREFIX_DEV = "device_"; const PREFIX_SH = "sh_"; const PREFIX_RELAY = "relay_"; const PREFIX_PART = "part_"; ! //--------------------------------------------------------------------------- // Запрашивать АЦП указанных шлейфов: // Раскомментируйте о отредактируйте данный блок /* const ADC_REQ = [ { "pku": "1", "devs": [ { "dev": "4", "sh": [ 1,2,3 ], }, ], }, ]; */ ! //=========================================================================== armSkif.writeLog( "Start script: " + scriptFileName ); ! armSkif.signalPollFinished.connect ( sig_pollFinished ); armSkif.signalUpdateDeviceState.connect ( sig_UpdateDeviceState ); armSkif.signalUpdateSh.connect ( sig_UpdateSh ); armSkif.signalUpdateExit.connect ( sig_UpdateRelay ); armSkif.signalUpdateRelay.connect ( sig_UpdateExit ); armSkif.signalUpdatePart.connect ( sig_UpdatePart ); armSkif.signalUpdateGPart.connect ( sig_UpdateGPart ); armSkif.signalUpdateADC.connect ( sig_UpdateADC ); ! armSkif.setInterval(function() { requestADC(ADC_REQ); }, 60000); ! var timerReconnect = 0; // Таймер попдключения в случае ошибки или разрыва соединения var reconnect = false; // Определяем что произошло переподключение. Для инициализации состояний. ! mqtt.init ( MQTT_SERVER, MQTT_PORT, MQTT_CLIENTID, MQTT_USER, MQTT_PASSWD ); mqtt.connacked.connect ( mqtt_connacked ); mqtt.received.connect ( mqtt_received ); mqtt.error.connect ( mqtt_error ); mqtt.disconnected.connect ( mqtt_disconnected ); ! mqtt.connect(); // Подключиться к брокеру. ! //=========================================================================== // MQTT //--------------------------------------------------------------------------- // Функция вызывается при подтверждении установления соединения с брокером. function mqtt_connacked() { armSkif.writeLog( scriptFileName + " (mqtt_connacked)"); mqtt.subscribe(MQTT_ROOT + "/+/+/+/on"); mqtt.subscribe(MQTT_ROOT + "/+/+/on"); ! if (reconnect) { reconnect = false; ! var listPKU = armSkif.getListPKU(); // Список пультов for (var i=0; i<listpku.length; 0/++i)/Цикл/для/каждого/пульта/{/var/numpku="listPKU[i];" Номер/sig_pollfinished(numpku);/}/---------------------------------------------------------------------------/Функция/вызывается/при/получении/сообщении/от/брокера./function/mqtt_received(topic,/payload)/armskif.writelog(/scriptfilename/+/"/(mqtt_received):/topic/+":/"+/payload);/obj="{};" str="^" mqtt_root/"\\/prefix_pku/"(\\d+)\\/prefix_part/on";/myreg="new" regexp(str);/if/(/myreg.test(topic)/)/obj.state="part" ;/arr="myReg.exec(topic);" obj.pku="Arr[1];" obj.part="Arr[2];" obj.value="payload;" else/prefix_dev/prefix_sh/obj.dev="Arr[2];" obj.sh="Arr[3];" else{/prefix_relay/obj.relay="Arr[3];" (obj.state)/skif_command(obj);/возникновении/ошибки/в/процессе/соединения./mqtt_error(err)/(mqtt_error):/err);/mqtt.disconnect();/Отключиться/mqtt_timereconnect();/отключении/mqtt_disconnected()/(mqtt_disconnected)");/mqtt_timereconnect()/Через/одну/секунду/вызвать/функцию/mqtt_reconnect/(timerreconnect="=0)" timerreconnect="armSkif.setTimeout(mqtt_reconnect," 1000);/mqtt_reconnect()/reconnect="true;" mqtt.connect();/Подключиться/к/брокеру./=="=========================================================================" skif/sig_pollfinished(npku)/(start/pollfinished)");/mqtt_make_pku_meta(/npku,armskif.getpkutypestr/(npku),/"type"/);/npku,armskif.getpkuversion/"ver"/npku,armskif.getpkudescription(npku),/"desc"/listdevices="armSkif.getListDevices(nPKU);" Список/приборов/for/(var/j="0;" j<listdevices.length;/++j)/прибора/dev="listDevices[j];" mqtt_make_device_meta(/npku,/dev,/armskif.getdevicetypestr/(npku,/dev),/armskif.getdeviceversion/armskif.getdevicedescription(npku,/armskif.getdevicetamperstate(npku,/"ts"/armskif.getdevicepowerstate/"ps"/dev)/listsh="armSkif.getListSh(nPKU," dev);/шлейфов/k="0;" k<listsh.length;/++k)/шлейфа/sh="listSh[k];" mqtt_make_sh_meta(/sh,/armskif.getshdescription(npku,/sh),/armskif.getshstate/sh)/listrelay="armSkif.getListRelay(nPKU," реле/k<listrelay.length;/relay="listRelay[k];" mqtt_make_relay_meta(/relay,/armskif.getrelaydescription(npku,/relay),/armskif.getrelaystate/relay)/listexit="armSkif.getListExit(nPKU," контролируемых/цепей/k<listexit.length;/каждой/контролируемой/цепи/npku,dev,relay,armskif.getrelaydescription(npku,/relay),"desc"/npku,dev,relay,armskif.getexitstate/relay),"state"/listparts="armSkif.getListParts(nPKU);" разделов/j<listparts.length;/раздела/part="listParts[j];" mqtt_make_part_meta(/part,armskif.getpartdescription(npku,/part),"desc"/part,armskif.getpartstate/part)/listgparts="armSkif.getListGParts(nPKU);" групп/j<listgparts.length;/группы/part,/armskif.getpartdescription(npku,/armskif.getpartstate/(request/adc)");/requestadc(adc_req);/(end/requestadc(obj_adc)/adc/request/");/Запросить/АЦП/шлейфов./Ответ/будет/signalupdateadc./j<obj_adc.length;/adc_pku="obj_adc[j].pku;" adc_devs="obj_adc[j].devs;" k<adc_devs.length;/++k){/adc_dev="adc_devs[k].dev;" adc_shs="adc_devs[k].sh;" m="0;" m<adc_shs.length;/++m){/adc_sh="adc_shs[m];" npku/adc";/nvalue="value;" value="=" ''/d="new" date();/stamp="d.getUnixTimestamp();" '/("'/c")';/mqtt.publish(topic,/nvalue,/true);/)"+/"adc=" + adc + " ts"/npku,ndev,/ndev),"ps"/dev),"ts"/dev),"ps"/sig_updatesh(npku,/fsh)/fsh="=" ){/ndev="listDevices[j];" ndev);/ndev,/armskif.getshstate(npku,="">>8; var sh = fsh & 0x00FF; mqtt_make_sh_meta( nPKU, dev,sh, armSkif.getShState(nPKU, dev, sh) ); } } //--------------------------------------------------------------------------- function sig_UpdateRelay(nPKU, frl) { if ( frl == 0 ){ var listDevices = armSkif.getListDevices(nPKU); for (var j=0; j<listdevices.length; ++j)/{/var/ndev="listDevices[j];" listrelay="armSkif.getListRelay(nPKU," ndev);/Список/реле/for/(var/k="0;" k<listrelay.length;/++k)/relay="listRelay[k];" mqtt_make_relay_meta/(/npku,/ndev,/relay,/armskif.getrelaystate(npku,/relay)/);/}/else{/dev="frl">>8; var relay = frl & 0x00FF; mqtt_make_relay_meta (nPKU, dev, relay, armSkif.getRelayState(nPKU, dev, relay) ); } } //--------------------------------------------------------------------------- function sig_UpdateExit(nPKU, frl) { if ( frl == 0 ){ var listDevices = armSkif.getListDevices(nPKU); for (var j=0; j<listdevices.length; ++j)/{/var/ndev="listDevices[j];" listexit="armSkif.getListExit(nPKU," ndev);/Список/контролируемых/цепей/реле/for/(var/k="0;" k<listexit.length;/++k)/relay="listExit[k];" mqtt_make_relay_meta(/npku,ndev,relay,armskif.getexitstate(npku,/ndev,/relay),/"state"/);/}/else{/dev="frl">>8; var relay = frl & 0x00FF; mqtt_make_relay_meta( nPKU, dev, relay, armSkif.getRelayState(nPKU, dev, relay), "state" ); } } //--------------------------------------------------------------------------- function sig_UpdatePart(nPKU, part) { if ( part == 0 ){ var listParts = armSkif.getListParts(nPKU); // Список разделов for (var j=0; j<listparts.length; 0/++j)/{/var/npart="listParts[j];" mqtt_make_part_meta(/npku,/npart,/armskif.getpartstate(npku,/npart)/);/}/else/part,/part)/---------------------------------------------------------------------------/function/sig_updategpart(npku,/gpart)/if/(/gpart="=" ){/listgparts="armSkif.getListGParts(nPKU);" Список/групп/разделов/for/(var/j="0;" j<listgparts.length;/ngpart="listGParts[j];" ngpart,/ngpart)/gpart,/skif_command(obj)/armskif.writelog(/scriptfilename/+/"(skif_command_start)"/obj.state);/re="new" regexp("\[01\]");/(!/re.test(obj.value)/)/"(command/not/or/1)");/return;/(obj.state="=" "relay"){/relay)");/prog="(obj.value" =="1)" ?/armskif.rl_on/:/armskif.rl_off;/armskif.controlrelay(obj.pku,/obj.dev,/obj.relay,/prog);/"sh"){/sh)");/obj.value="=" armskif.controlsh_disarm(obj.pku,/obj.sh);/armskif.controlsh_arm(obj.pku,/"part"){/part)");/armskif.controlpart_disarm(obj.pku,obj.part);/armskif.controlpart_arm(obj.pku,obj.part);/meta/mqtt_make_pku_meta(npku,/nvalue,/nmeta_name)/topic="MQTT_ROOT" "/prefix_pku/npku;/(nmeta_name/!="=" undefined){/nmeta_name;/nmeta_name="=" "ver"/nvalue/100;/if(/\d+/.test(nvalue))/'"';/mqtt.publish(topic,/true);/mqtt_make_device_meta(npku,/ndev,/npku/prefix_dev/ndev;/undefined)/=100;/mqtt_make_sh_meta(npku,/nsh,/ndev/prefix_sh/nsh;/mqtt_make_relay_meta(npku,/nrelay,/prefix_relay/nrelay;/mqtt_make_part_meta(npku,/prefix_part/npart;/date.prototype.getunixtimestamp="function()" return/math.round(this.gettime()/1000);/<e=""></listparts.length;></listdevices.length;></listdevices.length;></listpku.length;>
! Скрипт для iobroker
! >![spoiler]`[code]// Скрипт интеграции Орион болид в iobroker при помощи arm-скиф на примере одного раздела
// можно именять цвет иконок или надписей в vis в зависимости от состояния системы охраны,
// для этого в значение цвет прописать {javascript.0.home.security.color}
// версия 3.0
! var idSayIt = "sayit.0.tts.text";
createState('home.security.color', 'white'); // Отображает статус разными цветами
createState('home.security.status', 'false'); // Создаёт и изменяет переменную в зависимости от состояния,
//можно использовать далее(например перекрыть воду или обесточить квартиру при постановке на охрану)
! on({id: 'mqtt.0.all.bolid.pku_1.part_2', change: 'any'}, function (obj) {
var temp = obj.newState.val;
log(' Чего приняли: ' + temp);
! if (obj.newState.val=='24') {
//setState (idSayIt, 'Режим охраны Активирован.');
//sendTo('pushover.0', { message: 'Режим охраны Активирован.', title: 'home.security', priority: 1});
setState('home.security.color',"green");
setState('home.security.status',"true");
log('Режим охраны Активирован.');
}if (obj.newState.val=='109') { //setState (idSayIt, 'Режим охраны Деактивирован.'); //sendTo('pushover.0', { message: 'Режим охраны Деактивирован.', title: 'home.security', priority: 1}); setState('home.security.color',"white"); setState('home.security.status',"false"); log('Режим охраны Деактивирован.'); } //if (obj.newState.val=='119') { //setState (idSayIt, 'Режим охраны Активность датчика.'); //sendTo('pushover.0', { message: 'Режим охраны Активность датчика.', title: 'home.security', priority: 1}); //setState('home.security.color',"orange"); //log('Режим охраны Активность датчика.'); //} if (obj.newState.val=='3') { //setState (idSayIt, 'Режим охраны НАРУШЕНИЕ.'); //sendTo('pushover.0', { message: 'Режим охраны НАРУШЕНИЕ.', title: 'home.security', priority: 1}); setState('home.security.color',"red"); log('Режим охраны НАРУШЕНИЕ.'); }! });[/code]`[/spoiler][/i]
-
Вобщем была идея прицепить через переходник bolid-modbus.
Недавно копался на харде наткнулся на прогу арм-скиф, пошёл на оф сайт посмотреть что нового есть и бинго `
Тоже смотрел эту программу…Решение хорошее, тем более что решения болида для охраны и пожарки хороши, если бы не одно но...
Я переписывался с автором, данные в арм-скиф можно выцепить только из пульта С2000М((
ИМХО покупать http://satro-paladin.com/catalog/good/7654-s2000-m за 6 с лишним тысяч рублей, если мне достаточно http://satro-paladin.com/catalog/good/7625-s2000-4 за 2т.р. - перебор…
Пока отложил решение данного вопроса.
З.Ы. арм-скиф можно http://arm-skif.ru/publ/buildroot/1-1-0-3 на малине))
-
Вобщем была идея прицепить через переходник bolid-modbus.
Недавно копался на харде наткнулся на прогу арм-скиф, пошёл на оф сайт посмотреть что нового есть и бинго `
Тоже смотрел эту программу…Решение хорошее, тем более что решения болида для охраны и пожарки хороши, если бы не одно но...
Я переписывался с автором, данные в арм-скиф можно выцепить только из пульта С2000М((
ИМХО покупать http://satro-paladin.com/catalog/good/7654-s2000-m за 6 с лишним тысяч рублей, если мне достаточно http://satro-paladin.com/catalog/good/7625-s2000-4 за 2т.р. - перебор…
Пока отложил решение данного вопроса.
З.Ы. арм-скиф можно http://arm-skif.ru/publ/buildroot/1-1-0-3 на малине)) `
С ценами согласен, автора скифа просили работу программы без пульта, но пока глухо.Я заморочился только потому , что у меня есть 2000-м+кдл+2000 езернет .
Осталось запрограмить всё ,с болидом нет проблем, есть непонимание как написать скрипты для iobroker .
Я пока подключил скиф через скрипт который полный к iobroker, появился mqtt.0.clients ,но объектов нет, надеюсь что при нормальной работе они создадутся автоматом.
-
С ценами согласен, автора скифа просили работу программы без пульта, но пока глухо. `
И скорее всего ничего не поменяется…
@aurodionov:Я заморочился только потому , что у меня есть 2000-м+кдл+2000 езернет .
Осталось запрограмить всё ,с болидом нет проблем, есть непонимание как написать скрипты для iobroker .
Я пока подключил скиф через скрипт который полный к iobroker, появился mqtt.0.clients ,но объектов нет, надеюсь что при нормальной работе они создадутся автоматом. `
О_о, держи в курсе тогда если что выйдет, может тоже где нить "возьму" С2000-М, у меня много объектов разных)) -
Вобщем работает, связка с2000кдл-rs485-с2000м-rs232-скиф-скрипт_mqtt-iobroker
Отображает взятие и снятие разделов в виз, выдаёт вагон параметров и состояний, скрипты не пользовал не научился писать
можно накидать датчики на план и мониторить их состояние.
Продолжаю копать :))
51_bol.png
51_bol1.png -
Ещё пару скринов, снят-взят раздел
51_bol2.png
51_bol3.png
2470_spotify.jpg -
Подскажите что прользовать в виз для отображения более двух состояний и присвоением разных картинок
например датчик движения, пожарные, смк могут отображать своё состояние при снятом разделе
А ещё прошу помощи по скрипту, при установке снятии ,отправка в пушовер например+ проговаривание голосом+ зажать ногу меги
! mqtt-0 2016-01-09 21:12:28 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_1"(number): 109
! mqtt-0 2016-01-09 21:12:28 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_2"(number): 109
! mqtt-0 2016-01-09 21:12:28 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.device_100.sh_1"(number): 109
! mqtt-0 2016-01-09 21:12:06 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_1"(number): 3
! mqtt-0 2016-01-09 21:12:06 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_2"(number): 3
! mqtt-0 2016-01-09 21:12:06 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.device_100.sh_1"(number): 3
! mqtt-0 2016-01-09 21:11:57 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_1"(number): 24
! mqtt-0 2016-01-09 21:11:57 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_2"(number): 24
! mqtt-0 2016-01-09 21:11:57 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.device_100.sh_1"(number): 24
! mqtt-0 2016-01-09 21:11:51 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_1"(number): 109
! mqtt-0 2016-01-09 21:11:51 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_2"(number): 109
! mqtt-0 2016-01-09 21:11:51 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.device_100.sh_1"(number): 109
! mqtt-0 2016-01-09 21:11:32 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_1"(number): 24
! mqtt-0 2016-01-09 21:11:32 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_2"(number): 24
! mqtt-0 2016-01-09 21:11:32 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.device_100.sh_1"(number): 24
! mqtt-0 2016-01-09 21:02:34 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_1"(number): 109
! mqtt-0 2016-01-09 21:02:34 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_2"(number): 109
! mqtt-0 2016-01-09 21:02:34 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.device_100.sh_1"(number): 109
! mqtt-0 2016-01-09 21:01:47 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_1"(number): 3
! mqtt-0 2016-01-09 21:01:47 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_2"(number): 3
! mqtt-0 2016-01-09 21:01:47 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.device_100.sh_1"(number): 3
! mqtt-0 2016-01-09 21:01:36 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_1"(number): 24
! mqtt-0 2016-01-09 21:01:36 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_2"(number): 24
! mqtt-0 2016-01-09 21:01:36 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.device_100.sh_1"(number): 24
! mqtt-0 2016-01-09 21:00:56 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_1"(number): 109
! mqtt-0 2016-01-09 21:00:56 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_2"(number): 1093- тевога, 109- снят, 24-взят, 119- сработка невзятого датчика( можно мониторить и реагировать соответственно,например включить свет при сработке датчика движения)
-
Подскажите что прользовать в виз для отображения более двух состояний и присвоением разных картинок
например датчик движения, пожарные, смк могут отображать своё состояние при снятом разделе `
! [{"tpl":"tplMfdCustom10Dialog","data":{"oid":"nothing_selected","visibility-cond":"==","visibility-val":1,"asButton":"true","dialog_width":"440","dialog_height":"200","icon0":"widgets/jqui-mfd/img/sani_valve_0.png","icon1":"widgets/jqui-mfd/img/sani_valve_10.png","icon2":"widgets/jqui-mfd/img/sani_valve_20.png","icon3":"widgets/jqui-mfd/img/sani_valve_30.png","icon4":"widgets/jqui-mfd/img/sani_valve_40.png","icon5":"widgets/jqui-mfd/img/sani_valve_50.png","icon6":"widgets/jqui-mfd/img/sani_valve_60.png","icon7":"widgets/jqui-mfd/img/sani_valve_70.png","icon8":"widgets/jqui-mfd/img/sani_valve_80.png","icon9":"widgets/jqui-mfd/img/sani_valve_90.png","icon10":"widgets/jqui-mfd/img/sani_valve_100.png"},"style":{"left":"187px","top":"421px"},"widgetSet":"jqui-mfd"}]
@aurodionov:А ещё прошу помощи по скрипту, при установке снятии ,отправка в пушовер например+ проговаривание голосом+ зажать ногу меги
! mqtt-0 2016-01-09 21:12:28 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_1"(number): 109
! mqtt-0 2016-01-09 21:12:28 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_2"(number): 109
! mqtt-0 2016-01-09 21:12:28 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.device_100.sh_1"(number): 109
! mqtt-0 2016-01-09 21:12:06 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_1"(number): 3
! mqtt-0 2016-01-09 21:12:06 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_2"(number): 3
! mqtt-0 2016-01-09 21:12:06 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.device_100.sh_1"(number): 3
! mqtt-0 2016-01-09 21:11:57 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_1"(number): 24
! mqtt-0 2016-01-09 21:11:57 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_2"(number): 24
! mqtt-0 2016-01-09 21:11:57 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.device_100.sh_1"(number): 24
! mqtt-0 2016-01-09 21:11:51 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_1"(number): 109
! mqtt-0 2016-01-09 21:11:51 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_2"(number): 109
! mqtt-0 2016-01-09 21:11:51 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.device_100.sh_1"(number): 109
! mqtt-0 2016-01-09 21:11:32 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_1"(number): 24
! mqtt-0 2016-01-09 21:11:32 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_2"(number): 24
! mqtt-0 2016-01-09 21:11:32 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.device_100.sh_1"(number): 24
! mqtt-0 2016-01-09 21:02:34 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_1"(number): 109
! mqtt-0 2016-01-09 21:02:34 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_2"(number): 109
! mqtt-0 2016-01-09 21:02:34 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.device_100.sh_1"(number): 109
! mqtt-0 2016-01-09 21:01:47 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_1"(number): 3
! mqtt-0 2016-01-09 21:01:47 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_2"(number): 3
! mqtt-0 2016-01-09 21:01:47 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.device_100.sh_1"(number): 3
! mqtt-0 2016-01-09 21:01:36 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_1"(number): 24
! mqtt-0 2016-01-09 21:01:36 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_2"(number): 24
! mqtt-0 2016-01-09 21:01:36 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.device_100.sh_1"(number): 24
! mqtt-0 2016-01-09 21:00:56 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_1"(number): 109
! mqtt-0 2016-01-09 21:00:56 info Client [home.security] _publishes "mqtt.0.all.bolid.pku_1.part_2"(number): 1093- тевога, 109- снят, 24-взят, 119- сработка невзятого датчика( можно мониторить и реагировать соответственно,например включить свет при сработке датчика движения) `
on({id: 'mqtt.0.all.bolid.pku_1.part_1', change: 'any'}, function (obj) { if(obj.newState.val == '24'){ log('Взят под охрану'); } else{ log('Не взят под охрану'); } });PS Спрячь код из первого поста под спойлеры.
9054_wasch-deiner.jpg
9054_wasch-original.jpg -
instalator, спасибо за пример, малость дополнил
! ````
on({id: 'mqtt.0.all.bolid.pku_1.part_2', change: 'any'}, function (obj) {if (obj.newState.val=='24') { // setState (idSayIt, 'Режим охраны Активирован.'); sendTo('pushover.0', { message: 'Режим охраны Активирован.', title: 'home.security', priority: 1}); log('Режим охраны Активирован.'); } if (obj.newState.val=='109') { // setState (idSayIt, 'Режим охраны Деактивирован.'); sendTo('pushover.0', { message: 'Режим охраны Деактивирован.', title: 'home.security', priority: 1}); log('Режим охраны Деактивирован.'); } if (obj.newState.val=='3') { // setState (idSayIt, 'Режим охраны НАРУШЕНИЕ.'); sendTo('pushover.0', { message: 'Режим охраны НАРУШЕНИЕ.', title: 'home.security', priority: 1}); log('Режим охраны НАРУШЕНИЕ.'); }! });
продолжаю ковырять -
instalator, спасибо за пример, малость дополнил
! ````
on({id: 'mqtt.0.all.bolid.pku_1.part_2', change: 'any'}, function (obj) {if (obj.newState.val=='24') { // setState (idSayIt, 'Режим охраны Активирован.'); sendTo('pushover.0', { message: 'Режим охраны Активирован.', title: 'home.security', priority: 1}); log('Режим охраны Активирован.');}
if (obj.newState.val=='109') { // setState (idSayIt, 'Режим охраны Деактивирован.'); sendTo('pushover.0', { message: 'Режим охраны Деактивирован.', title: 'home.security', priority: 1}); log('Режим охраны Деактивирован.'); } if (obj.newState.val=='3') { // setState (idSayIt, 'Режим охраны НАРУШЕНИЕ.'); sendTo('pushover.0', { message: 'Режим охраны НАРУШЕНИЕ.', title: 'home.security', priority: 1}); log('Режим охраны НАРУШЕНИЕ.'); }! });
продолжаю ковырять `setState('sayit.0.tts.text', 'Режим охраны Активирован');
-
Всё намного интересней :)
! ````
// Скрипт интеграции Орион болид в iobroker при помощи arm-скиф на примере одного раздела
// можно именять цвет иконок или надписей в vis в зависимости от состояния системы охраны,
// для этого в значение цвет прописать {javascript.0.home.security.color}
//
! var idSayIt = "sayit.0.tts.text";
createState('home.security.color', "white");
! on({id: 'mqtt.0.all.bolid.pku_1.part_2', change: 'any'}, function (obj) {if (obj.newState.val=='24') { // setState (idSayIt, 'Режим охраны Активирован.'); sendTo('pushover.0', { message: 'Режим охраны Активирован.', title: 'home.security', priority: 1}); setState('home.security.color',"green"); log('Режим охраны Активирован.'); } if (obj.newState.val=='109') { // setState (idSayIt, 'Режим охраны Деактивирован.'); sendTo('pushover.0', { message: 'Режим охраны Деактивирован.', title: 'home.security', priority: 1}); setState('home.security.color',"white"); log('Режим охраны Деактивирован.'); } if (obj.newState.val=='119') { // setState (idSayIt, 'Режим охраны Активность датчика.'); sendTo('pushover.0', { message: 'Режим охраны Активность датчика.', title: 'home.security', priority: 1}); setState('home.security.color',"orange"); log('Режим охраны Активность датчика.'); } if (obj.newState.val=='3') { // setState (idSayIt, 'Режим охраны НАРУШЕНИЕ.'); sendTo('pushover.0', { message: 'Режим охраны НАРУШЕНИЕ.', title: 'home.security', priority: 1}); setState('home.security.color',"red"); log('Режим охраны НАРУШЕНИЕ.'); }! });
-
Очередное изменение ,смотреть первый пост
instalator, подскажи как отправить команду на взятие раздела
-
Мужики, помогите установить брокер на WinXP.
-
А как скрипт вставить….. Не могу понять со стороны Брокера
-
А как скрипт вставить….. Не могу понять со стороны Брокера `
который скрипт?1.скрипты для arm-скиф (поместить в каталог Scripts\ScriptsServer) ,перезагрузить скиф(подхватит скрипт и опубликует по mqtt)
2.в iobroker создать пустой js скрипт и скопировать в него то что для иоб
Скоро буду переделывать домашнюю сигнализацию напишу подробно, что и как делал
-
Вот вот именно п.2. Буквально пошагово…. как создать пустой скрипт. просто в обычном редакторе или в сомом ИОБ
-
-
Спасибо. Разобралься. Все генеальное просто….
-
Всех с наступившим Новым годом и Рождеством!
aurodionov поделись кодом для снятия постановки раздела/шлейфа на охрану….
-
Поможите настроить отображение нескольки состояний сигнализации, использую этот код
[{"tpl":"tplMfdCustom10","data":{"oid":"javascript.0.home.secure_mansarda.color","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"asButton":true,"icon0":"widgets/jqui-mfd/img/sani_valve_0.svg","icon1":"widgets/jqui-mfd/img/sani_valve_10.svg","icon2":"widgets/jqui-mfd/img/sani_valve_20.svg","icon3":"widgets/jqui-mfd/img/sani_valve_30.svg","icon4":"widgets/jqui-mfd/img/sani_valve_40.svg","icon5":"widgets/jqui-mfd/img/sani_valve_50.svg","icon6":"widgets/jqui-mfd/img/sani_valve_60.svg","icon7":"widgets/jqui-mfd/img/sani_valve_70.svg","icon8":"widgets/jqui-mfd/img/sani_valve_80.svg","icon9":"widgets/jqui-mfd/img/sani_valve_90.svg","icon10":"widgets/jqui-mfd/img/sani_valve_100.svg","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"iconValue0":"3","iconColor0":"#f51919","iconValue1":"24","iconColor1":"#34f61e","iconValue2":"109","iconColor2":"#2efaf3","min":"3","max":"110","show_active":true,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide"},"style":{"left":"101px","top":"809px"},"widgetSet":"jqui-mfd"}]
но ни чего не происходит
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden