NEWS
Простейшая логика
-
Но ты вполне можешь его установить написав 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.
типа этого:
Для проверки логики рекомендую иногда переключаться на код через кнопку "показать код"
-
Да только сейчас заметил, что ты имя объекта сравниваешь со ста.
Там результат всегда один.
Понятно где проблема?
-
Да , разобрался, заработало.
Всем спасибо огромное.
1502_iobroker-4.jpeg -
Поскольку я очень далек от программирования, и кроме школьного QBasic-а ничего не знаю, может кто то сделать небольшую вводную лекцию по принципам работы ioBroker-а?) Сильно не смейтесь от глупых вопросов
Логику писать смогу только в Blockly.
Для чего нужны "Категории", что в них добавлять?
Есть где то описание виджетов? (сейчас я слабо представляю что значит oid-working: ID батарейного индикатора: ID качества сигнала: в Димере).
И главный вопрос что делать со скриптами?
Если мне надо чтобы скрипт выполнился однократно по нажатию кнопки с этим понятно, но если надо что бы он выполнялся по сигналу с какого то датчика, к примеру движения, куда его вставлять?
И как то можно заставить брокер все время принимать и обрабатывать показания со входов? А то выходит реакция на датчик 1-30 сек как повезет или это так только с фоторезистором, датчики движения по другому будут работать?
Если это было уже разжевано на немецком форуме, дайте ссылку, думаю вместе с google translate разберемся
Спасибо.