NEWS
Разные вопросы по Vis
-
Bluefox супер!
чем больше изучаю ioBroker, тем он мне больше нравится своей гибкостью и возможностями.
Подскажи еще пожалуйста, как можно упростить вот такую конструкцию:
Ну для начала. Можно использовать jquery. Он неплохо упрощает. `~~[code]~~[{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval": "0","gestures-offsetX":0,"gestures-offsetY":0,"class":"b-block"},"style":{"left":"481px","top":"98px"}, "widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval": "0","gestures-offsetX":0,"gestures-offsetY":0,"html":" \n"},"style": {"left":"322px","top":"99px","width":"154px","height":"27px"},"widgetSet":"basic"}][/code]` Но я считаю, что это не правильный подход. Это квитирование работает только в одном виз и больше нигде.. А что делать на соседнем планшете? Надо создать объект: javasciprt.0.acknowledged и его ставить на false, как только есть что квитировать и прописывать в виз true по кнопке. Тогда информация на всех планшетах/телефонах будет синхронной и даже можно послать сообщение или произнести что нибудь. И использовать эту переменную, в поле class как {a:javasciprt.0.acknowledged;a ? '' : 'b-block'} [48_click.gif](/assets/uploads/files/48_click.gif) [/i][/i] ``` ` -
Согласен!
Зациклился на визуализации и упустил из виду, что отображаться будет на нескольких устройствах.
В общем у меня такой вышел результат:
{a:javascript.0.test.color;b:javascript.0.Signalka.acknowledged; (a=='true' && b=='true') ? 'c-red': a=='true' ? 'b-block':''}т.е. если пришла тревога, фон определенного виджета мерцает желтым-красным
если есть квитирование, но тревога еще висит - то фон красный
-
Согласен!
Зациклился на визуализации и упустил из виду, что отображаться будет на нескольких устройствах.
В общем у меня такой вышел результат:
{a:javascript.0.test.color;b:javascript.0.Signalka.acknowledged; (a=='true' && b=='true') ? 'c-red': a=='true' ? 'b-block':''}т.е. если пришла тревога, фон определенного виджета мерцает желтым-красным
если есть квитирование, но тревога еще висит - то фон красный `
Я себе делал так! ````
[{"tpl":"tplHqButton","data":{"visibility-cond":"==","visibility-val":1,"oid":"mqtt.0.myhome.Mother.AquaStoroj","min":"0","max":"1","iconName":"/vis/img/Icons/dashui_ico/mfd/sani_irrigation.png","btIconWidth":"63","offsetAuto":false,"leftOffset":"-10","topOffset":"-10","timeAsInterval":"true","infoLeftFontSize":"12","infoFontRightSize":"12","changeEffect":"flash","testActive":false,"usejQueryStyle":false,"waveColor":"#FFFFFF","oid-working":"","filterkey":"","visibility-oid":"mqtt.0.myhome.Mother.AquaStoroj","styleActive":"hq-button-red-active","caption":"","captionOn":"","gestures-offsetX":0,"gestures-offsetY":0},"style":{"left":"165px","top":"263px","border-radius":"50px","width":"50","height":"50","z-index":"3"},"widgetSet":"hqwidgets"}]Но только для кого оно мигать будет? у меня если что произошло в зависимости от обстоятельств либо голос, либо на телефон оповещение сразу идет. -
звуковое оповещение тоже будет + сообщение или звонок на телефон
виджет будет отображать несколько состояний в обычном режиме на прозрачном фоне и те же состояния и цветной фон в режиме охраны, если датчик сработал. Поэтому использую поле "класс".
Можно было бы обойтись только свойством "цвет фона", но для красоты хочется добавить еще переливы фона с помощью CSS :)
Причем в зависимости от нескольких переменных, фон должен иметь разное цветовое состояние.
-
Пока вышел такой рабочий вариант:
!
createState('Signalka.acknowledged', false); // создаем переменную "квитирование" // Классы CSS для датчиков createState('Signalka.Sensor.10_CSS', ''); createState('Signalka.Sensor.11_CSS', ''); createState('Signalka.Sensor.12_CSS', ''); createState('Signalka.Sensor.13_CSS', ''); createState('Signalka.Sensor.14_CSS', ''); ! var mySubscription; var Sensor_Start = 10; var CountSens = 5; ! on("mysensors.0.30.1_CUSTOM.V_VAR1"/*Signalka.V_VAR1*/, function (obj) { log ('Статус сигнализации = ' + obj.state.val); if (obj.state.val == 2) { log("Режим 'Охрана' включаем подписку на события с датчиков"); //подписываемся на несколько объектов по шаблону. Срабатывать будет только если новое значение больше предыдущего mySubscription = on({id: /^mysensors\.0\.30\.1._CUSTOM\.V_VAR1$/, change: 'gt'}, function (obj) { log("Сработал датчик " + obj.id + " включить тревогу"); //var tmp = obj.state.val & 3; // отсекаем все лишнее, оставляем геркон и вибро if ((obj.state.val & 3) > 0) { log('Определяем в какой CSS писать'); var str = obj.id.substr(obj.id.indexOf("_CUSTOM")-2, 2); // парсим id датчика, чтобы определить его номер setState("javascript.0.Signalka.Sensor."+ str +"_CSS", "s-blink" , true/*ack*/); // включаем мигание фона у нужного датчика } setState("javascript.0.Signalka.acknowledged"/*acknowledged*/, true , true/*ack*/); // включить индикацию тревоги }); } else { if (unsubscribe(mySubscription)) { log('Отключаем подписку на события с датчиков'); } } }); // подписка на событие "сквитировано" on({id: 'javascript.0.Signalka.acknowledged', change: 'lt'}, function (obj) { for (i = Sensor_Start; i < Sensor_Start+CountSens; i++){ var CSS = getState("javascript.0.Signalka.Sensor."+ i +"_CSS"); var SensState = getState("mysensors.0.30." + i +"_CUSTOM.V_VAR1"); if ((CSS.val == "s-blink") && ((SensState.val & 3) === 0)) CSS.val = ''; // все тревоги с датчика ушли if ((CSS.val == "s-blink") && ((SensState.val & 3) > 0)) CSS.val = 's-red'; //тревоги еще есть setState("javascript.0.Signalka.Sensor."+ i +"_CSS", CSS.val , true/*ack*/); // сохраняем новый CSS log('Статус новый CSS ' + CSS.val + ', SensState ' + SensState.val + ', SensState & ' + (SensState.val & 3)); } }); // подписка на состояние датчиков "good" и квитирование = false on({id: /^mysensors\.0\.30\.1._CUSTOM\.V_VAR1$/, change: 'lt'}, function (obj) { var Ack = getState("javascript.0.Signalka.acknowledged"); if (Ack.val === false) { var str = obj.id.substr(obj.id.indexOf("_CUSTOM")-2, 2); // парсим id датчика, чтобы определить его номер setState("javascript.0.Signalka.Sensor."+ str +"_CSS", "" , true/*ack*/); } }); !
у виджета датчика соответсвенно класс CSS {javascript.0.Signalka.Sensor.10_CSS}в идеале надо бы добавить возможность вводить номер датчика прямо в рантайме, чтобы не требовалось лезть в редактор для перепривязки ID объекта
-
Подскажите в чём ошибаюсь
setState ('vis.0.control.command', {instance: 'FFFFFFFF', command: 'changedView', data: 'surfer8.31/Security'}); // переключится на вкладку setState ('vis.0.control.command', {instance: 'FFFFFFFF', command: 'alert ', data: 'Message; Test ;info'}); // показать уведомление -
Подскажите в чём ошибаюсь
setState ('vis.0.control.command', {instance: 'FFFFFFFF', command: 'changedView', data: 'surfer8.31/Security'}); // переключится на вкладку setState ('vis.0.control.command', {instance: 'FFFFFFFF', command: 'alert ', data: 'Message; Test ;info'}); // показать уведомление ```` `changedView => changeView
У тебя правда так view называется? surfer8.31/Security
'alert ' => 'alert' (лишний пробел)
setState ('vis.0.control.command', {val: {instance: 'FFFFFFFF', command: 'changeView', data: 'surfer8.31/Security'}, ack: false}); setState ('vis.0.control.command', {val: {instance: '*', command: 'alert', data: 'Message; Test ;info'}, ack: false}); -
Bluefox, да так получилось, по названию планшета /вкладка которую хочу открывать. Но вообще заработало, спасибо за помощь.
Пишу с пульта….
-
У тебя правда так view называется? surfer8.31/Security `
Вроде понял, если указать Security, перейдёт на всех устройствах где есть вкладка с таким названием -
-
Установил версию драйвера 0.10.9 с гит.
Заработал только после команды
iobroker upload visВ логе ошибка появилась:
host-cubietruck 2016-09-10 10:47:44.512 error startInstance system.adapter.vis.0: TypeError: Cannot read property 'version' of undefined ```` `Проверь правильность файлa …/node_modules/iobroker.web/io-package.json.
А какой controller?
-
Где задаётся время жизни кэша web-сервера?
Картинку обновляю в папке /vis.0/ - на клиенте видна старая версия.
-
Где задаётся время жизни кэша web-сервера?
Картинку обновляю в папке /vis.0/ - на клиенте видна старая версия. `
Там её нельзя обновлять.Нужно обновлять через вызов
> iorboker upload /path/to/file/picture.png /vis.0/main/somewhere/picture.png -
Где задаётся время жизни кэша web-сервера?
Картинку обновляю в папке /vis.0/ - на клиенте видна старая версия. `
Там её нельзя обновлять.Нужно обновлять через вызов
> iorboker upload /path/to/file/picture.png /vis.0/main/somewhere/picture.png`Таким образом единственный способ получать снимки с камер и сохранять их в веб-папку примерно такой? :
camera1_snap_tmp = '/tmp/cam1.jpg'; camera1_snap_web = '/vis.0/main/img/cam1.jpg'; cmd_get_snap1 = 'wget "http://192.168.2.10:8088/snapshot?username=user&userpwd=passw&strm=1" --no-use-server-timestamps -O ' + camera1_snap_tmp; exec(cmd_get_snap1, function (error, result, stderr) { if ((function () {var val = (stderr.indexOf('.jpg’ saved') + 1); if (val === 'true') return true; if (val === 'false') return false; return !!val;})()) { cmd_copy_web = '/usr/bin/iobroker upload ' + camera1_snap_tmp + ' ' + camera1_snap_web; exec (cmd_copy_web); console.log('copy image to web folder: ' + cmd_copy_web); } else { console.log('Error get image from camera'); } }); -
camera1_snap_web = '/vis.0/main/img/cam1.jpg'; cmd_get_snap1 = 'http://192.168.2.10:8088/snapshot?username=user&userpwd=passw&strm=1'; var request = require('request'); request.get({url: cmd_get_snap1, encoding: 'binary'}, function (err, response, body) { writeFile(camera1_snap_web, body, function (error) { console.log('file written'); }); }); -
На главной странице в vis- редакторе настроил элемент "bars - Views bar" .
К кнопкам этого элемента подключены другие страницы.
Так вот при быстрой прокрутке любой страницы - текущая страница закрывается и происходит переход назад, как будто нажали клавишу "Backspase".
На компьютере этого эффекта нет - оно и понятно - там мышь.
А вот на браузере на android-e этот эффект мешает. Если ОЧЕНЬ медленно скролить то возврата на главную страницу нет, но так просматривать страницы невозможно.
-
camera1_snap_web = '/vis.0/main/img/cam1.jpg'; cmd_get_snap1 = 'http://192.168.2.10:8088/snapshot?username=user&userpwd=passw&strm=1'; var request = require('request'); request.get({url: cmd_get_snap1, encoding: 'binary'}, function (err, response, body) { writeFile(camera1_snap_web, body, function (error) { console.log('file written'); }); }); ```` `Спасибо. То есть "iobroker upload" не нужен для web если сохранять файл встроенными в драйвер js функциями (https://github.com/ioBroker/ioBroker.javascript ).
-
К вопросу о прокрутке и автоматическому переходу назад( как будто нажали клавишу "Backspase") - куда копать?
Дело в настройках vis-а или это глюк виджета?
-
В редактор VIS планируется добавить кнопку "Опустить ниже" выбранный элемент на форме по сравнению с другими.
Надеюсь понятно описал :)
А то когда добавляешь например виджет Border в конце, приходится все элементы добавленные до него, выделять, вырезать и снова вставлять, чтобы они были "выше" него.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login