Автоматика для туалета Вытяжной вентилятор, датчик движения, свет.



  • добрый день, помогите создать мнемосхему. Как можно сделать в ванной автоматическое включение вентилятора, то есть если зашел в туалет включился свет по датчику движения и я через минуту вышел с туалета то вентилятор после моего выхода не включается, но если я был в туалете 5 минут то после моего выхода с туалета и выключения света включается вентилятор на 5 минут, но если я был в туалете 10 минут то после моего выхода с туалета и виключения света включаеться вентилятор на 10 минут.



  • @amgstone:

    добрый день, помогите создать мнемосхему. Как можно сделать в ванной автоматическое включение вентилятора, то есть если зашел в туалет включился свет по датчику движения и я через минуту вышел с туалета то вентилятор после моего выхода не включается, но если я был в туалете 5 минут то после моего выхода с туалета и выключения света включается вентилятор на 5 минут, но если я был в туалете 10 минут то после моего выхода с туалета и виключения света включаеться вентилятор на 10 минут.

    Тут сценарий нужен, а не мнемосхема



  • Наверное что-то такое, но без отладки не уверен:
    vent1.JPG



  • @homa:

    Наверное что-то такое, но без отладки не уверен:

    вечером попробую, отпишусь, мнемосхему создал, нужно только проверить))))



  • @homa:

    Наверное что-то такое, но без отладки не уверен:

    даже не дрогнулось:



  • сделал такой скрипт

    /**

    • @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();

    }

    });

    но тогда появляется это:

    Какие есть предложения?



  • @amgstone:

    Какие есть предложения?

    Если вам не нравится, что параметры показаны в основном интерфейсе, можно их скрыть - добавить свойство 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 }
      ]); 
    
    
    


  • @amgstone:

    добрый день, помогите создать мнемосхему. Как можно сделать в ванной автоматическое включение вентилятора, то есть если зашел в туалет включился свет по датчику движения и я через минуту вышел с туалета то вентилятор после моего выхода не включается, но если я был в туалете 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:

    добрый день, тут все окей, но у меня есть датчик влажности и я хочу чтобы при включении света начился опрос датчика влажности (если начал принимать ванну), и вентилятор включился если влажность увеличилась от заданной даже когда свет включенный.

    А при отключенном свете управлять вентилятором по датчику влажности не надо?

    Первоначальная задача :
    @amgstone:

    есть если зашел в туалет включился свет по датчику движения и я через минуту вышел с туалета то вентилятор после моего выхода не включается, но если я был в туалете 5 минут то после моего выхода с туалета и выключения света включается вентилятор на 5 минут, но если я был в туалете 10 минут то после моего выхода с туалета и виключения света включаеться вентилятор на 10 минут.

    Судя по задаче, включать вентилятор можно только тогда, когда свет не горит.

    Для чего? Я могу только догадываться. Но хотелось бы знать точнее.
    @amgstone:

    и вентилятор включился если влажность увеличилась от заданной даже когда свет включенный

    Здесь уже нужно включать вентилятор независимо от света? Только по датчику влажности?

    Я предлагаю сформулировать задачу полностью. И не одним предложением, а по пунктам.

    И чтобы было понятно, что вы хотите. Какая цель?

    Например:

    Включать вентилятор при условии:

    1. Свет горит/не горит

    2. Влажность больше x%

    Выключать вентилятор при условии:

    Попробуйте сформулировать задачу как в примере: https://ih-systems.com/ru/scen-climate2/



  • @amgstone:

    добрый день, тут все окей, но у меня есть датчик влажности и я хочу чтобы при включении света начился опрос датчика влажности (если начал принимать ванну), и вентилятор включился если влажность увеличилась от заданной даже когда свет включенный.

    А зачем Вам привязка к свету? Я управляю вытяжками по влажности независимо от света, написал простой мультисценарий, влажность достигла уставки - включить на 5 минут вытяжку. Далее, если влажность не упадет - вытяжка включится повторно.



  • нужно 2 действия в одном скрипте. Я себе ето представляю так:

    1.

    • включаю свет в ванной (начинается отщет времени)

    • если я нахожусь в ванной например 2 мин. (в параметрах устройства должно настраиватся), в параметрах должно настраиватся как миниму 3 временых интервала, тоесть: я нахожусь в ванной 2 минуты то вентилятор не включается, я нахожусь в ванной 3 минуты (время устанавливается в параметрах устройства) то вентилятор включается на 3 минуты (время устанавливается в параметрах устройства) и по аналогии 3 параметр.

    • если в ванной включился свет то начинается слежение за датчиком влажности и если влажность становится выше установленого значения то включается вентилятор и выключается когда влажность дошла до заданого значения, но желательно зделать ограничения по времени после выключения света, если вентилятор слабенький или чтобы не забирало много тепла с помещения то он не сможет быстро вернуть влажность в помещении на заданый параметр.



  • @amgstone:

    нужно 2 действия в одном скрипте. Я себе ето представляю так:

    1.

    • включаю свет в ванной (начинается отщет времени)

    • если я нахожусь в ванной например 2 мин. (в параметрах устройства должно настраиватся), в параметрах должно настраиватся как миниму 3 временых интервала, тоесть: я нахожусь в ванной 2 минуты то вентилятор не включается, я нахожусь в ванной 3 минуты (время устанавливается в параметрах устройства) то вентилятор включается на 3 минуты (время устанавливается в параметрах устройства) и по аналогии 3 параметр.

    • если в ванной включился свет то начинается слежение за датчиком влажности и если влажность становится выше установленого значения то включается вентилятор и выключается когда влажность дошла до заданого значения, но желательно зделать ограничения по времени после выключения света, если вентилятор слабенький или чтобы не забирало много тепла с помещения то он не сможет быстро вернуть влажность в помещении на заданый параметр.

    Получается, если влажность высокая, но свет не включали - вентилятор не включать?



  • @intrapro:

    @amgstone:

    нужно 2 действия в одном скрипте. Я себе ето представляю так:

    1.

    • включаю свет в ванной (начинается отщет времени)

    • если я нахожусь в ванной например 2 мин. (в параметрах устройства должно настраиватся), в параметрах должно настраиватся как миниму 3 временых интервала, тоесть: я нахожусь в ванной 2 минуты то вентилятор не включается, я нахожусь в ванной 3 минуты (время устанавливается в параметрах устройства) то вентилятор включается на 3 минуты (время устанавливается в параметрах устройства) и по аналогии 3 параметр.

    • если в ванной включился свет то начинается слежение за датчиком влажности и если влажность становится выше установленого значения то включается вентилятор и выключается когда влажность дошла до заданого значения, но желательно зделать ограничения по времени после выключения света, если вентилятор слабенький или чтобы не забирало много тепла с помещения то он не сможет быстро вернуть влажность в помещении на заданый параметр.

    Получается, если влажность высокая, но свет не включали - вентилятор не включать?

    даже если свет выключили или не выключали то вентилятор должен работать пока не уменьшит влажность до заданного значения.



  • @amgstone:

    @intrapro:

    @amgstone:

    нужно 2 действия в одном скрипте. Я себе ето представляю так:

    1.

    • включаю свет в ванной (начинается отщет времени)

    • если я нахожусь в ванной например 2 мин. (в параметрах устройства должно настраиватся), в параметрах должно настраиватся как миниму 3 временых интервала, тоесть: я нахожусь в ванной 2 минуты то вентилятор не включается, я нахожусь в ванной 3 минуты (время устанавливается в параметрах устройства) то вентилятор включается на 3 минуты (время устанавливается в параметрах устройства) и по аналогии 3 параметр.

    • если в ванной включился свет то начинается слежение за датчиком влажности и если влажность становится выше установленого значения то включается вентилятор и выключается когда влажность дошла до заданого значения, но желательно зделать ограничения по времени после выключения света, если вентилятор слабенький или чтобы не забирало много тепла с помещения то он не сможет быстро вернуть влажность в помещении на заданый параметр.

    Получается, если влажность высокая, но свет не включали - вентилятор не включать?

    даже если свет выключили или не выключали то вентилятор должен работать пока не уменьшит влажность до заданного значения.

    Сделайте один скрипт по влажности, а второй по свету. Это две разные задачи, по-моему не решаемые в одном скрипте



  • @homa:

    @amgstone:

    добрый день, тут все окей, но у меня есть датчик влажности и я хочу чтобы при включении света начился опрос датчика влажности (если начал принимать ванну), и вентилятор включился если влажность увеличилась от заданной даже когда свет включенный.

    А зачем Вам привязка к свету? Я управляю вытяжками по влажности независимо от света, написал простой мультисценарий, влажность достигла уставки - включить на 5 минут вытяжку. Далее, если влажность не упадет - вытяжка включится повторно.

    Вы были правы привязка к свету (включение) не очень удобно, так как если я в туалете нахожусь больше 3 минут то надо включать вентилятор.



  • @amgstone:

    @homa:

    @amgstone:

    добрый день, тут все окей, но у меня есть датчик влажности и я хочу чтобы при включении света начился опрос датчика влажности (если начал принимать ванну), и вентилятор включился если влажность увеличилась от заданной даже когда свет включенный.

    А зачем Вам привязка к свету? Я управляю вытяжками по влажности независимо от света, написал простой мультисценарий, влажность достигла уставки - включить на 5 минут вытяжку. Далее, если влажность не упадет - вытяжка включится повторно.

    Вы были правы привязка к свету (включение) не очень удобно, так как если я в туалете нахожусь больше 3 минут то надо включать вентилятор.

    У меня так, но нужно переписать на API v4
    BathVentHum.zip


Авторизуйтесь, чтобы ответить