NEWS


  • Вобщем была идея прицепить через переходник 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]


  • @aurodionov:

    Вобщем была идея прицепить через переходник 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 на малине))


  • @electric69:

    @aurodionov:

    Вобщем была идея прицепить через переходник 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:

    С ценами согласен, автора скифа просили работу программы без пульта, но пока глухо. `
    И скорее всего ничего не поменяется…
    @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): 109

    3- тевога, 109- снят, 24-взят, 119- сработка невзятого датчика( можно мониторить и реагировать соответственно,например включить свет при сработке датчика движения)


  • @aurodionov:

    Подскажите что прользовать в виз для отображения более двух состояний и присвоением разных картинок

    например датчик движения, пожарные, смк могут отображать своё состояние при снятом разделе `

    ! [{"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): 109

    3- тевога, 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('Режим охраны НАРУШЕНИЕ.');
    }
    

    ! });

    продолжаю ковырять

  • @aurodionov:

    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.


  • А как скрипт вставить….. Не могу понять со стороны Брокера


  • @smoker_vvo:

    А как скрипт вставить….. Не могу понять со стороны Брокера `
    который скрипт?

    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"}]

    но ни чего не происходит

Suggested Topics

  • 16
  • 4
  • 6
  • 3
  • 2
  • 40
  • 12
  • 1

1.8k
Online

37.0k
Users

42.7k
Topics

593.3k
Posts