NEWS
Простейшая логика
-
Добрый день!
Подскажите знающие люди можно ли создавать правила логики чем нибудь помимо скриптов?
Языка я не знаю(да и времени особо нет разбираться) поэтому для меня это создает неудобства(
Задача для начала самая тривиальная:
Есть у меня Esp, датчик движения и лампочка и реле)
Я хочу чтобы по сигналу от датчика движения загоралась лампа/
Я пытался создать сцену для этого/ В свойствах сцены указывал триггер, но оно не работает корректно(минимальное время обновления mqtt - 5 сек). Сразу после срабатывания триггера желаемый контакт меняет значение, но на долю секунды и реле не успевает сработать.
Подскажите как реализовать желаемое)
Заранее благодарен)
Ps: на geektimes в комментах BlueFox упоминал blockly как среду визуального программирования, но полазив по немецкой ветке с переводчиком я так понял, что он его только запиливает…
Или я что-то упустил?
Про Node-Red я молчу/ по мне так штука бесполезная/ ни мануальв ни разьяснений в инете я не нашел/ помоему в целях автоматизации дома он бесполезен/ Если не прав - давайте обсудим)
Кому интересно вот статья https://geektimes.ru/post/277154/ `
Но ты вполне можешь его установить написав 4 строчки:cd /opt/iobroker npm install https://github.com/ioBroker/ioBroker.javascript/tarball/master iobroker upload javascript iobroker start javascript
После обновления в браузере должен blockly появится `
Сделал. А куда смотреть теперь?
Последняя команда выдает ошибку
root@orangepipc:/opt/iobroker# iobroker start javascript
events.js:141
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE :::9001
at Object.exports._errnoException (util.js:873:11)
at exports._exceptionWithHostPort (util.js:896:20)
at Server._listen2 (net.js:1250:14)
at listen (net.js:1286:10)
at Server.listen (net.js:1382:5)
at _initWebServer (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInMemServer.js:2634:24)
at /opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInMemServer.js:147:9
at new ObjectsInMemServer (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInMemServer.js:154:7)
at null._onTimeout (/opt/iobroker/node_modules/iobroker.js-controller/lib/setup.js:2406:27)
at Timer.listOnTimeout (timers.js:92:15)
Все))) Завелось))
Спасибо)
Сделал эти команды/ после чего в консоли iobroker stop/start - после
iobroker upload javascript
iobroker start javascript
Обновил браузер. В разделе со скриптами создал новый скрипт и blockly загрузился) буду изучать)
-
Добрый день!
Подскажите знающие люди можно ли создавать правила логики чем нибудь помимо скриптов?
Языка я не знаю(да и времени особо нет разбираться) поэтому для меня это создает неудобства(
Задача для начала самая тривиальная:
Есть у меня Esp, датчик движения и лампочка и реле)
Я хочу чтобы по сигналу от датчика движения загоралась лампа/
Я пытался создать сцену для этого/ В свойствах сцены указывал триггер, но оно не работает корректно(минимальное время обновления mqtt - 5 сек). Сразу после срабатывания триггера желаемый контакт меняет значение, но на долю секунды и реле не успевает сработать.
Подскажите как реализовать желаемое)
Заранее благодарен)
Ps: на geektimes в комментах BlueFox упоминал blockly как среду визуального программирования, но полазив по немецкой ветке с переводчиком я так понял, что он его только запиливает…
Или я что-то упустил?
Про Node-Red я молчу/ по мне так штука бесполезная/ ни мануальв ни разьяснений в инете я не нашел/ помоему в целях автоматизации дома он бесполезен/ Если не прав - давайте обсудим)
Кому интересно вот статья https://geektimes.ru/post/277154/ `
Но ты вполне можешь его установить написав 4 строчки:cd /opt/iobroker npm install https://github.com/ioBroker/ioBroker.javascript/tarball/master iobroker upload javascript iobroker start javascript
После обновления в браузере должен blockly появится `
Сделал. А куда смотреть теперь? `
На вкладку скрипты
48_2016-07-27_21_14_23-pi_raspberrypi___.png -
Но ты вполне можешь его установить написав 4 строчки:
cd /opt/iobroker npm install https://github.com/ioBroker/ioBroker.javascript/tarball/master iobroker upload javascript iobroker start javascript
После обновления в браузере должен blockly появится `
Сделал. А куда смотреть теперь?
На вкладку скрипты
Сделал) Все работает) спасибо -
Добрый день!
Подскажите знающие люди можно ли создавать правила логики чем нибудь помимо скриптов?
Языка я не знаю(да и времени особо нет разбираться) поэтому для меня это создает неудобства(
Задача для начала самая тривиальная:
Есть у меня Esp, датчик движения и лампочка и реле)
Я хочу чтобы по сигналу от датчика движения загоралась лампа/ `
Па пробуй вот это http://www.ab-log.ru/forum/viewtopic.php?f=1&t=1130 в iobroker через megad драйвер http://forum.iobroker.net/viewtopic.php?f=16&t=2722
Там можно сразу сценарий прописать, если сервер отвалится выполнит что пропишите. А для iobroker скриптик
on('megad.3.p3_P3', function (obj) { if (obj.newState.val === true && getState('megad.3.p7_P7').val === false) { setState ('megad.3.p7_P7', true); } else if(obj.newState.val === false && getState('megad.3.p7_P7').val === true){ setState ('megad.3.p7_P7', false); } });
-
Сделал. А куда смотреть теперь?
На вкладку скрипты
Сделал) Все работает) спасибо `
Я только что добавил блоки в javascript. Проделай ту же процедуру ещё раз. -
Добрый день!
Подскажите знающие люди можно ли создавать правила логики чем нибудь помимо скриптов?
Языка я не знаю(да и времени особо нет разбираться) поэтому для меня это создает неудобства(
Задача для начала самая тривиальная:
Есть у меня Esp, датчик движения и лампочка и реле)
Я хочу чтобы по сигналу от датчика движения загоралась лампа/ `
Па пробуй вот это http://www.ab-log.ru/forum/viewtopic.php?f=1&t=1130 в iobroker через megad драйвер http://forum.iobroker.net/viewtopic.php?f=16&t=2722
Там можно сразу сценарий прописать, если сервер отвалится выполнит что пропишите. А для iobroker скриптик
on('megad.3.p3_P3', function (obj) { if (obj.newState.val === true && getState('megad.3.p7_P7').val === false) { setState ('megad.3.p7_P7', true); } else if(obj.newState.val === false && getState('megad.3.p7_P7').val === true){ setState ('megad.3.p7_P7', false); } }); ```` `
Спасибо Вам за наводку) Но к сожалению меня не впечатлило/ Думаю что оригинальная железка работает намного лучше/
А на Esp это прошивка грузится через раз, постоянно отваливается, и вообще чтото сама по себе творит/ в админку пройти с 3 раза удается….
На данный момент ничего лучше http://wifi-iot.com/ не пробовал/ стоит 110 рублей за лицензию на одно устройство/ и куча радостей из коробки(не сочтите за рекламу. продукт реально стоящий)
Остановлюсь на связке iobroker + mqtt
-
Спасибо Вам за наводку) Но к сожалению меня не впечатлило/ Думаю что оригинальная железка работает намного лучше/
А на Esp это прошивка грузится через раз, постоянно отваливается, и вообще чтото сама по себе творит/ в админку пройти с 3 раза удается…. `
По дому работает на данный момент 5 устройств, без перебойно 24часа, на нескольких (в светильниках) ещё даже старые прошивки. Даже рядом не наблюдаю описанных вами глюков, всё работает чётко.
-
Спасибо Вам за наводку) Но к сожалению меня не впечатлило/ Думаю что оригинальная железка работает намного лучше/
А на Esp это прошивка грузится через раз, постоянно отваливается, и вообще чтото сама по себе творит/ в админку пройти с 3 раза удается…. `
По дому работает на данный момент 5 устройств, без перебойно 24часа, на нескольких (в светильниках) ещё даже старые прошивки. Даже рядом не наблюдаю описанных вами глюков, всё работает чётко. `
Может я что не так делал?
Делал так:
прошил на esp 0.3.2
настроил wifi
настроил мега адептер
и тут самое интересное - считал значения с устройства? - будь добр перезагрузи его чтобы адаптер с ним соединился
записал значения на устройство? - перезагрузи
Часто меняешь значения параметров? перезагрузи
Ну в общем не стабильно все как-то( ну или я криворукий)
Были у меня большие надежды на эту прошивку т.к. хочу в перспективе купить настоящие megaD.
Видимо буду сам собирать подобие MegaD на ардуине с сетевым модулем.
-
Спасибо Вам за наводку) Но к сожалению меня не впечатлило/ Думаю что оригинальная железка работает намного лучше/
А на Esp это прошивка грузится через раз, постоянно отваливается, и вообще чтото сама по себе творит/ в админку пройти с 3 раза удается…. `
По дому работает на данный момент 5 устройств, без перебойно 24часа, на нескольких (в светильниках) ещё даже старые прошивки. Даже рядом не наблюдаю описанных вами глюков, всё работает чётко. `
Может я что не так делал?
Делал так:
прошил на esp 0.3.2
настроил wifi
настроил мега адептер
и тут самое интересное - считал значения с устройства? - будь добр перезагрузи его чтобы адаптер с ним соединился
записал значения на устройство? - перезагрузи
Часто меняешь значения параметров? перезагрузи
Ну в общем не стабильно все как-то( ну или я криворукий)
Были у меня большие надежды на эту прошивку т.к. хочу в перспективе купить настоящие megaD.
Видимо буду сам собирать подобие MegaD на ардуине с сетевым модулем. `
Аха уже надо :lol:
Драйвер Megad не для этого устройства, автор MegadESP использует api MegaD-328 + фишки
Заполнять нужно руками, читайте тему http://forum.iobroker.net/viewtopic.php?f=16&t=2722
-
Создал такой скрипт````
on('megad.0.p0_P0', function (obj) {
if (obj.newState.val < 32 && getState('megad.0.p13_P13').val === false) {
log('Включаем нагрев');
setState ('megad.0.p13_P13', true);
}
else if(obj.newState.val > 32 && getState('megad.0.p13_P13').val === true){
log('Выключаем нагрев');
setState ('megad.0.p13_P13', false);
}
});выполняет роль термостата если температура ниже 32 то на вызоде P13 включено, если меньше - то выключено. Есть такой красивый элемент в HQwidgets - inner temperarure Допустим в поле "ID актуальной температуры:" написано: need_Temp1 Как привязать "ID актуальной температуры:" с условием в скрипте?
-
Создал такой скрипт````
on('megad.0.p0_P0', function (obj) {
if (obj.newState.val < 32 && getState('megad.0.p13_P13').val === false) {
log('Включаем нагрев');
setState ('megad.0.p13_P13', true);
}
else if(obj.newState.val > 32 && getState('megad.0.p13_P13').val === true){
log('Выключаем нагрев');
setState ('megad.0.p13_P13', false);
}
});выполняет роль термостата если температура ниже 32 то на вызоде P13 включено, если меньше - то выключено. Есть такой красивый элемент в HQwidgets - inner temperarure Допустим в поле "ID актуальной температуры:" написано: need_Temp1 Как привязать "ID актуальной температуры:" с условием в скрипте? `
Что такое "need_Temp1" ? Это то куда будет писаться 32?
-
Создал такой скрипт````
on('megad.0.p0_P0', function (obj) {
if (obj.newState.val < 32 && getState('megad.0.p13_P13').val === false) {
log('Включаем нагрев');
setState ('megad.0.p13_P13', true);
}
else if(obj.newState.val > 32 && getState('megad.0.p13_P13').val === true){
log('Выключаем нагрев');
setState ('megad.0.p13_P13', false);
}
});выполняет роль термостата если температура ниже 32 то на вызоде P13 включено, если меньше - то выключено. Есть такой красивый элемент в HQwidgets - inner temperarure Допустим в поле "ID актуальной температуры:" написано: need_Temp1 Как привязать "ID актуальной температуры:" с условием в скрипте? `
Что такое "need_Temp1" ? Это то куда будет писаться 32? `
Это я просто ввел сам руками, как это было сделано в DemoView версии с лампочками.Подразумевалось, что это будет та температура, которая будет задаваться крутилкой в виджете.
В скрипте она сейчас жестко привязана и равна 32. Хочется это значение менять в виджете, а что-бы оно само менялось в скрипте.
Получается в виджете "HQwidgets - inner temperarure" нельзя установить желаемую температуру (крутилкой)? И отображать реальную температуру внутри кружка, как это сделано с влажностью? Тогда для чего там есть маленькое серое поле вверху справа? Там еже и объект "Вентель есть" :-).
Что-то тяжеловато методом "тыка" осваивать возможности виджетов.
PS: немного разобрался…
Прописываю в :
ID объекта: - need_temp1 (вписываю руками)
ID влажности: - megad.0.p1_P1_humidity
ID актуальной температуры: - megad.0.p0_P0
Необходимо передать значение need_temp1 в скрипт (вместо значения 32 в условии).
-
Создал такой скрипт````
on('megad.0.p0_P0', function (obj) {
if (obj.newState.val < 32 && getState('megad.0.p13_P13').val === false) {
log('Включаем нагрев');
setState ('megad.0.p13_P13', true);
}
else if(obj.newState.val > 32 && getState('megad.0.p13_P13').val === true){
log('Выключаем нагрев');
setState ('megad.0.p13_P13', false);
}
});выполняет роль термостата если температура ниже 32 то на вызоде P13 включено, если меньше - то выключено. Есть такой красивый элемент в HQwidgets - inner temperarure Допустим в поле "ID актуальной температуры:" написано: need_Temp1 Как привязать "ID актуальной температуры:" с условием в скрипте? `
Что такое "need_Temp1" ? Это то куда будет писаться 32? `
Это я просто ввел сам руками, как это было сделано в DemoView версии с лампочками.Подразумевалось, что это будет та температура, которая будет задаваться крутилкой в виджете.
В скрипте она сейчас жестко привязана и равна 32. Хочется это значение менять в виджете, а что-бы оно само менялось в скрипте.
Получается в виджете "HQwidgets - inner temperarure" нельзя установить желаемую температуру (крутилкой)? И отображать реальную температуру внутри кружка, как это сделано с влажностью? Тогда для чего там есть маленькое серое поле вверху справа? Там еже и объект "Вентель есть" :-).
Что-то тяжеловато методом "тыка" осваивать возможности виджетов.
PS: немного разобрался…
Прописываю в :
ID объекта: - need_temp1 (вписываю руками)
ID влажности: - megad.0.p1_P1_humidity
ID актуальной температуры: - megad.0.p0_P0
Необходимо передать значение need_temp1 в скрипт (вместо значения 32 в условии). `
function checkTemperature () { if (getState('megad.0.p0_P0').val < getState('need_temp1').val - 2 && getState('megad.0.p13_P13').val === false) { log('Включаем нагрев'); setState ('megad.0.p13_P13', true); } else if(getState('megad.0.p0_P0').val > getState('need_temp1').val && getState('megad.0.p13_P13').val === true){ log('Выключаем нагрев'); setState ('megad.0.p13_P13', false); } } createState('need_temp1', function () { on('need_temp1', checkTemperature); }); on('megad.0.p0_P0', checkTemperature);
в vis использовать ID: javascript.0.need_temp1
И тебе надо встроить гистерезис, а то при температуре в например 32 у тебя будет насос туда сюда постоянно включаться.
-
Пытаюсь в Blokly состряпать скрипт управления релюшкой в зависимости от сенсора качества воздуха. Почему то не хочет управлять.
В Обьектах меняю 3.1_LIGHT.V_STATUS на true-false, релюшка работает.
Подскажите, где я не прав…
1502_iobroker-1.jpeg
1502_iobroker-2.jpeg -
Пытаюсь в Bloskly состряпать скрипт управления релюшкой в зависимости от сенсора качества воздуха. Почему то не хочет управлять.
В Обьектах меняю 3.1_LIGHT.V_STATUS на true-false, релюшка работает.
Подскажите, где я не прав… `
А не пробовал вместо 1/0 использовать true/false. Это другой блок из логики. -
Пробовал, тож не реагирует. Из VIS прекрастно релюшка управляется.
-
Ну тут надо появиться смекалку и проверить части по отдельности. Сначала просто вызвать "установить " без триггера. Если идет, то встроить дебаг в триггер и посмотреть печатается ли что нибудь.
-
Получается условия больше, меньше и равно не хотят работать
1502_iobroker-3.jpeg -
sanich2908 по идее ошибка в логике.
Во первых логичней поставить условие вызова по "изменению", а не "обновлению", хотя смотря какая цель.
Во вторых задано не верно условие. Ты сравниваешь "Объект" с числом 100, а надо сравнивать значение уровня света с числом 100.
типа этого:
Для проверки логики рекомендую иногда переключаться на код через кнопку "показать код"
-
Да только сейчас заметил, что ты имя объекта сравниваешь со ста.
Там результат всегда один.
Понятно где проблема?