Автоматика для туалета Вытяжной вентилятор, датчик движения, свет.
-
сделал такой скрипт
/**
-
@name Світло коридор 1 поверх
-
@desc
-
@version 4
*/
const motion = Device("SMOTION1");
const lamp = Device("LAMP2", "Светильник коридор 1", [
{"name":"timeOff", "note":"Светильник горит без движения, сек", "type":"number", "val":50},
{"name":"tempVal", "note":"$", "type":"number", "val":300}
]);
const regim = Device("SWITCH1","Режим теплых полов");
startOnChange(motion);
script({
start() {
this.addTimer("T1");
if (this.timer.T1 != 'on'){
if(regim.value != 3){
if(lamp.isOff())
lamp.turnOnSaveAuto();
}
}
this.addListener(motion, "onMotion");
},
onMotion(){
if(lamp.getParam("tempVal")==300){
lamp.setParam("tempVal",150);
}else{
lamp.setParam("tempVal",lamp.getParam("tempVal")+50);
}
this.log(lamp.getParam("tempVal"));
if (motion.isOn()){
if (this.timer.T1 == 'on'){
this.stopTimer("T1");
}
if(regim.value != 1 && regim.value != 3){
if(lamp.isOff())
lamp.turnOnSaveAuto();
}
}
if (motion.isOff()){
this.startTimer("T1",lamp.getParam("timeOff"),"turnOff");
}
},
turnOff() {
if(motion.isOff())
lamp.turnOffSaveAuto();
}
});
но тогда появляется это:
Какие есть предложения?
-
-
Какие есть предложения?
Если вам не нравится, что параметры показаны в основном интерфейсе, можно их скрыть - добавить свойство hide:1
const lamp = Device("LAMP2", "Светильник коридор 1", [ {"name":"timeOff", "note":"Светильник горит без движения, сек", "type":"number", "val":50, "hide":1 }, {"name":"tempVal", "note":"$", "type":"number", "val":300, "hide":1 } ]);
-
добрый день, помогите создать мнемосхему. Как можно сделать в ванной автоматическое включение вентилятора, то есть если зашел в туалет включился свет по датчику движения и я через минуту вышел с туалета то вентилятор после моего выхода не включается, но если я был в туалете 5 минут то после моего выхода с туалета и выключения света включается вентилятор на 5 минут, но если я был в туалете 10 минут то после моего выхода с туалета и виключения света включаеться вентилятор на 10 минут.
Если этот сценарий все еще актуален - с помощью блок-схемы его не реализуешь, так как надо засекать время работы лампы и слушать события устройств во время выполнения сценария.
И лучше свет по датчику движения оставить стандартно. А для вентилятора добавить сценарий, который ориентируется на лампу.
Вот мультисценарий, который работает следующим образом:
При включении лампы вентилятор выключится
При выключении лампы вентилятор включится, если лампа горела более 5 минут, и будет работать столько же, сколько горела лампа
/** * @name Вентилятор в туалете * @desc Вентилятор включается после отключения света на время, пропорциональное работе светильника * Работает, если вентилятор находится в режиме АВТО * @version 4 */ const lamp = Device("ActorD"); const vent = Device("ActorD"); startOnChange([lamp], vent.auto); script({ tsStart:0, timeVentOn:0, start() { if (this.isChanged(lamp,'dval') && lamp.isOn()) { // Включили лампу - выключаем вентилятор, засекаем время vent.turnOffSaveAuto(); this.tsStart = Date.now(); // Будем следить за лампой this.addListener(lamp, 'onLamp'); } }, onLamp() { // Интересуют только переключения лампы if (!this.isChanged(lamp,'dval')) return; if (lamp.isOn()) { // Лампа включилась - все начинается сначала this.stopTimer('T1'); this.removeListener(vent, 'onVent'); vent.turnOffSaveAuto(); this.tsStart = Date.now(); } else { // Лампа выключилась - определяем время горения в секундах let periodSek = (Date.now() - this.tsStart)/1000; // Если лампа горела больше 5 мин (300 сек) и вентилятор в автомате if ((periodSek > 300) && vent.auto) { // Включим вентилятор и взведем таймер, чтобы затем отключить вентилятор this.timeVentOn = Math.round(periodSek); vent.turnOnSaveAuto(); this.startTimer('T1', this.timeVentOn, 'onTimerReady'); // Также будем слушать события вентилятора - если его отключат вручную или сбросят автомат this.addListener(vent, 'onVent'); } else { // Время менее 5 или вент не авто this.exit(); } } }, onVent() { if (!vent.auto || vent.isOff()) { // Вент отключен или не авто this.exit(); } }, onTimerReady() { vent.turnOffSaveAuto(); this.exit(); } });
Вы можете доработать сценарий по своему вкусу
-
добрый день, тут все окей, но у меня есть датчик влажности и я хочу чтобы при включении света начился опрос датчика влажности (если начал принимать ванну), и вентилятор включился если влажность увеличилась от заданной даже когда свет включенный.
-
добрый день, тут все окей, но у меня есть датчик влажности и я хочу чтобы при включении света начился опрос датчика влажности (если начал принимать ванну), и вентилятор включился если влажность увеличилась от заданной даже когда свет включенный.
А при отключенном свете управлять вентилятором по датчику влажности не надо?
Первоначальная задача :
@amgstone:есть если зашел в туалет включился свет по датчику движения и я через минуту вышел с туалета то вентилятор после моего выхода не включается, но если я был в туалете 5 минут то после моего выхода с туалета и выключения света включается вентилятор на 5 минут, но если я был в туалете 10 минут то после моего выхода с туалета и виключения света включаеться вентилятор на 10 минут.
Судя по задаче, включать вентилятор можно только тогда, когда свет не горит.
Для чего? Я могу только догадываться. Но хотелось бы знать точнее.
@amgstone:и вентилятор включился если влажность увеличилась от заданной даже когда свет включенный
Здесь уже нужно включать вентилятор независимо от света? Только по датчику влажности?
Я предлагаю сформулировать задачу полностью. И не одним предложением, а по пунктам.
И чтобы было понятно, что вы хотите. Какая цель?
Например:
Включать вентилятор при условии:
1. Свет горит/не горит
2. Влажность больше x%
…
Выключать вентилятор при условии:
Попробуйте сформулировать задачу как в примере: https://ih-systems.com/ru/scen-climate2/
-
добрый день, тут все окей, но у меня есть датчик влажности и я хочу чтобы при включении света начился опрос датчика влажности (если начал принимать ванну), и вентилятор включился если влажность увеличилась от заданной даже когда свет включенный.
А зачем Вам привязка к свету? Я управляю вытяжками по влажности независимо от света, написал простой мультисценарий, влажность достигла уставки - включить на 5 минут вытяжку. Далее, если влажность не упадет - вытяжка включится повторно.
-
нужно 2 действия в одном скрипте. Я себе ето представляю так:
1.
-
включаю свет в ванной (начинается отщет времени)
-
если я нахожусь в ванной например 2 мин. (в параметрах устройства должно настраиватся), в параметрах должно настраиватся как миниму 3 временых интервала, тоесть: я нахожусь в ванной 2 минуты то вентилятор не включается, я нахожусь в ванной 3 минуты (время устанавливается в параметрах устройства) то вентилятор включается на 3 минуты (время устанавливается в параметрах устройства) и по аналогии 3 параметр.
-
если в ванной включился свет то начинается слежение за датчиком влажности и если влажность становится выше установленого значения то включается вентилятор и выключается когда влажность дошла до заданого значения, но желательно зделать ограничения по времени после выключения света, если вентилятор слабенький или чтобы не забирало много тепла с помещения то он не сможет быстро вернуть влажность в помещении на заданый параметр.
-
-
нужно 2 действия в одном скрипте. Я себе ето представляю так:
1.
-
включаю свет в ванной (начинается отщет времени)
-
если я нахожусь в ванной например 2 мин. (в параметрах устройства должно настраиватся), в параметрах должно настраиватся как миниму 3 временых интервала, тоесть: я нахожусь в ванной 2 минуты то вентилятор не включается, я нахожусь в ванной 3 минуты (время устанавливается в параметрах устройства) то вентилятор включается на 3 минуты (время устанавливается в параметрах устройства) и по аналогии 3 параметр.
-
если в ванной включился свет то начинается слежение за датчиком влажности и если влажность становится выше установленого значения то включается вентилятор и выключается когда влажность дошла до заданого значения, но желательно зделать ограничения по времени после выключения света, если вентилятор слабенький или чтобы не забирало много тепла с помещения то он не сможет быстро вернуть влажность в помещении на заданый параметр.
Получается, если влажность высокая, но свет не включали - вентилятор не включать?
-
-
нужно 2 действия в одном скрипте. Я себе ето представляю так:
1.
-
включаю свет в ванной (начинается отщет времени)
-
если я нахожусь в ванной например 2 мин. (в параметрах устройства должно настраиватся), в параметрах должно настраиватся как миниму 3 временых интервала, тоесть: я нахожусь в ванной 2 минуты то вентилятор не включается, я нахожусь в ванной 3 минуты (время устанавливается в параметрах устройства) то вентилятор включается на 3 минуты (время устанавливается в параметрах устройства) и по аналогии 3 параметр.
-
если в ванной включился свет то начинается слежение за датчиком влажности и если влажность становится выше установленого значения то включается вентилятор и выключается когда влажность дошла до заданого значения, но желательно зделать ограничения по времени после выключения света, если вентилятор слабенький или чтобы не забирало много тепла с помещения то он не сможет быстро вернуть влажность в помещении на заданый параметр.
Получается, если влажность высокая, но свет не включали - вентилятор не включать?
даже если свет выключили или не выключали то вентилятор должен работать пока не уменьшит влажность до заданного значения.
-
-
нужно 2 действия в одном скрипте. Я себе ето представляю так:
1.
-
включаю свет в ванной (начинается отщет времени)
-
если я нахожусь в ванной например 2 мин. (в параметрах устройства должно настраиватся), в параметрах должно настраиватся как миниму 3 временых интервала, тоесть: я нахожусь в ванной 2 минуты то вентилятор не включается, я нахожусь в ванной 3 минуты (время устанавливается в параметрах устройства) то вентилятор включается на 3 минуты (время устанавливается в параметрах устройства) и по аналогии 3 параметр.
-
если в ванной включился свет то начинается слежение за датчиком влажности и если влажность становится выше установленого значения то включается вентилятор и выключается когда влажность дошла до заданого значения, но желательно зделать ограничения по времени после выключения света, если вентилятор слабенький или чтобы не забирало много тепла с помещения то он не сможет быстро вернуть влажность в помещении на заданый параметр.
Получается, если влажность высокая, но свет не включали - вентилятор не включать?
даже если свет выключили или не выключали то вентилятор должен работать пока не уменьшит влажность до заданного значения.
Сделайте один скрипт по влажности, а второй по свету. Это две разные задачи, по-моему не решаемые в одном скрипте
-
-
добрый день, тут все окей, но у меня есть датчик влажности и я хочу чтобы при включении света начился опрос датчика влажности (если начал принимать ванну), и вентилятор включился если влажность увеличилась от заданной даже когда свет включенный.
А зачем Вам привязка к свету? Я управляю вытяжками по влажности независимо от света, написал простой мультисценарий, влажность достигла уставки - включить на 5 минут вытяжку. Далее, если влажность не упадет - вытяжка включится повторно.
Вы были правы привязка к свету (включение) не очень удобно, так как если я в туалете нахожусь больше 3 минут то надо включать вентилятор.
-
добрый день, тут все окей, но у меня есть датчик влажности и я хочу чтобы при включении света начился опрос датчика влажности (если начал принимать ванну), и вентилятор включился если влажность увеличилась от заданной даже когда свет включенный.
А зачем Вам привязка к свету? Я управляю вытяжками по влажности независимо от света, написал простой мультисценарий, влажность достигла уставки - включить на 5 минут вытяжку. Далее, если влажность не упадет - вытяжка включится повторно.
Вы были правы привязка к свету (включение) не очень удобно, так как если я в туалете нахожусь больше 3 минут то надо включать вентилятор.
У меня так, но нужно переписать на API v4