Полтора дня потратил на простенькую вроде бы задачку., так и не одолел ( Ну не программист я …) Может кто уже делал такое: Перед ( в принципе можно и одновременно) срабатыванием релюшки WB должен подать короткий сигнал через Buzzer. Все Гиты и Хабы переворошил (там всё по созданию с кнопками частоты и громкости., меня устроило бы фиксированные…)., чёт никак…
Простенький код:
defineRule(“Rele_control”, { //название правила - “управление реле”
whenChanged: “wb-adc/R1”, //при изменении состояния датчика света
then: function (newValue, devName, cellName) { //выполняй следующие действия
if ( dev["wb-adc"]["R1"] > 800) { //если сопротивление датчика меньше 500,
dev["wb-gpio"]["EXT1_R3A5"] = 0; //установи на выходе wb-gpio устройство EXT1_R3A1 в состояние "выключено"
} else { // иначе
if ( dev["wb-adc"]["R1"] < 1550) {//если сопротивление датчика больше 1550, (обеспечиваем гистерезис)
dev["wb-gpio"]["EXT1_R3A5"] = 1; //установи EXT1_R3A1 в состояние "включено"
}
}
}
});
Не могу понять - что и куда вставлять для “Бип-Бип”…
function beep(freq, vol, duration) { // объявление функции "пискнуть", задается частота, громкость и длительность в мс
dev["buzzer"]["frequency"] = freq; // устанавливаем частоту,
dev["buzzer"]["volume"] = vol; // .. громкость
dev["buzzer"]["enabled"] = true; // .. включаем пищалку
setTimeout(function() { // задаем функцию, которая выполнится по истечению времени
dev["buzzer"]["enabled"] = false; // она просто выключит пищалку
}, duration); // через заданное количество миллисекунд
}
defineRule("Rele_control", { //название правила - "управление реле"
whenChanged: "wb-adc/R1", //при изменении состояния датчика света
then: function (newValue, devName, cellName) { //выполняй следующие действия
if (newValue > 800) { //если сопротивление датчика меньше 500,
dev["wb-gpio"]["EXT1_R3A5"] = 0; //установи на выходе wb-gpio устройство EXT1_R3A1 в состояние "выключено"
beep(2000, 50, 50); //бип 2000 Гц, половина громкости, 50 мс
} else if (newValue < 1550) { //иначе если сопротивление датчика больше 1550, (обеспечиваем гистерезис)
dev["wb-gpio"]["EXT1_R3A5"] = 1; //установи EXT1_R3A1 в состояние "включено"
beep(3000, 100, 100); //бип 3000 Гц, полная громкость, 100 мс
}
}
});
Вон оно как, Михалыч… (С НашаРаша). Теперь понятно. Я то пытался функцию пристроить в середине цикла…
Получилось… Правда попискивает в выключеном состоянии реле - это видимо “0” приходит… Ну с этими мелочами улажу.
Спасибо огромное!.
Всё сделал как хотел. Правда пришлось -таки для бипера отдельное правило ваять, и следит он не за датчиком, а за переключением реле. Иначе при каждом изменении значений датчика срабатывает сигнал… а так - канал включился - прошел сигнал., выключается - сигнал… Можно разные по длительности и тональности… Вобщем тут на любой вкус. Я вот думаю - а может темку открыть с примерами правил? Для таких зелёных не программистов как я - много будет интересного. Тут кусочек кода присмотрел., там углядел. А то трудновато попервоначалу вникнуть во все ньюансы.