Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Русский
  3. ioBroker
  4. Скрипты
  5. ioBroker скрипты
  6. Автоматизация света и вытяжки в ванной по датчику движения и влажности (с использованием данных из sql)

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    714

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    5.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

Автоматизация света и вытяжки в ванной по датчику движения и влажности (с использованием данных из sql)

Scheduled Pinned Locked Moved ioBroker скрипты
12 Posts 6 Posters 6.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H Offline
    H Offline
    hawkeye
    wrote on last edited by
    #3

    Спасибо, но немного не то.

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

    Абсолютное значение по моим наблюдениям сейчас гуляет от 10 до 30%, летом думаю разбег будет ещё больше, но когда кто-то идёт в душ влажность по показаниям датчика в течении минуты повышается резко на 20-30%. По этому росту я хочу определять, что кто-то там ещё есть, несмотря на то, что от датчика движения нет сообщений, поскольку как только заходишь в душевую кабинку её стекла экранируют тепло от тела и датчик движения не работает.

    1 Reply Last reply
    0
    • I Offline
      I Offline
      instalator
      wrote on last edited by
      #4

      @hawkeye:

      Спасибо, но немного не то.

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

      Абсолютное значение по моим наблюдениям сейчас гуляет от 10 до 30%, летом думаю разбег будет ещё больше, но когда кто-то идёт в душ влажность по показаниям датчика в течении минуты повышается резко на 20-30%. По этому росту я хочу определять, что кто-то там ещё есть, несмотря на то, что от датчика движения нет сообщений, поскольку как только заходишь в душевую кабинку её стекла экранируют тепло от тела и датчик движения не работает. `
      а с чего ты решил что влажность все время будет увеличиваться по 20% до 1000? Влажность поднимется практичски сразу и будет по немногу падать после включения вентилятора.

      Высокий уровень Децибел вреден для здоровья!

      http://blog.instalator.ru/

      1 Reply Last reply
      0
      • H Offline
        H Offline
        hawkeye
        wrote on last edited by
        #5

        @instalator:

        а с чего ты решил что влажность все время будет увеличиваться по 20% до 1000? Влажность поднимется практичски сразу и будет по немногу падать после включения вентилятора. `
        Какие ещё 1000? См. график во вложении. (График слишком сглаженный, т.к. показания снимались каждые 5 минут).

        В целом собираюсь реализовать такай сценарий:

        1. чел входит в помещение душевой - срабатывает датчик движения, включает свет

        2. пока чел в душевой кабине датчик движение не работает - но влажность увеличивается, значит кто-то есть, соответсвенно свет гасить не нужно

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

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

        Все эти телодвижения с влажностью нужны для учёта того, что кто-то есть в помещении.

        Соответсвенно по п.2 я задумался как проанализировать скорость роста значения. Использовать значения истории видится наиболее логичным. Просто следить за скоростью роста показания влажности. Судя по анализу тех графиков что имею - если скорость роста более 2% за минуту - явно кто-то решил "подушиться".

        Вобщем-то вроде процесс сдвинулся, если что - ещё спрошу.
        5570_2018-02-25-br-hum.png

        1 Reply Last reply
        0
        • H Offline
          H Offline
          hawkeye
          wrote on last edited by
          #6

          Вот что получилось.

          megadd.0.p31_P31 - датчик влажности

          megadd.0.p32_P32 - датчик движения

          megadd.1.p25_P25 - реле света

          megadd.0.p8_P8 - реле вытяжки

          `var timer_vanna;
          var timer_vanna_vent;
          var flag_motion_vanna = false;
          var flag_hum = false;
          
          on({id: 'megadd.0.p32_P32', change: 'any'}, function (obj) { 
                  if (obj.newState.val === false){
                      flag_motion_vanna = true;
                      flag_hum = false;
                      clearTimeout(timer_vanna);
                      if (getState('megadd.1.p25_P25').val === false) {
                          setState('megadd.1.p25_P25', true);
                      }
                  }else if (obj.newState.val === true)
                  {
                      timer_vanna = setTimeout(function() {
                          flag_motion_vanna = false;
                          if (getState('megadd.0.p32_P32').val === true && flag_hum === false) {
                              setState('megadd.1.p25_P25', false); 
                          } 
                      }, 40000);
                  }
          });
          
          schedule({second: [0, 20, 40]}, function () {
              var end = new Date().getTime();
              var DT1;
              var DT = 0;
              sendTo('sql.0', 'getHistory', {
                  id: 'megadd.0.p31_P31_humidity',
                  options: {
                  end: new Date().getTime(),
                  count: 10,
                  aggregate: 'onchange'
                  //аggregate: 'm4' // or 'none' to get raw values
                  }
              }, function (result) {
              DT1=0;
              for (var i = 0; i < result.result.length; i++) {
                  //console.log(result.result[i].id + ' D= ' + new Date(result.result[i].ts).toISOString()+' V=' +result.result[i].val);
                  Hprev = result.result[i].val;
                  DT1=DT1+result.result[i].val;
                  //console.log('Rows: ' + JSON.stringify(result.result));
              }
              DT1=DT1/10;
              Htek=getState('megadd.0.p31_P31_humidity').val;
              DT=Htek-DT1;
              //console.log('DT='+DT+'('+ Htek+'-'+DT1+')');
              if (DT>=2 && flag_hum === false){
                      flag_hum = true;
                      console.log('flag_hum=true DT='+DT+'>2');
                      if (getState('megadd.1.p25_P25').val === false) {
                          setState('megadd.1.p25_P25', true);
                          console.log('Был выключен - включаю');
                      }
              }
              else if (DT<-1 && flag_hum === true) { 
                  flag_hum = false; 
                  console.log('flag_hum=false DT='+DT+'<-1');
                  if (flag_motion_vanna === false) {
                      console.log('Запуск таймера на отключение света');
                      timer_vanna = setTimeout(function() {
                          if (getState('megadd.0.p32_P32').val === true && flag_hum === false) {
                              setState('megadd.1.p25_P25', false); 
                          }
                      }, 40000);
                  }
              }
              if (DT<-2) { 
                  console.log('DT='+DT+' Запуск таймера на выключение вытяжки');
                  setState('megadd.0.p8_P8', true); 
                  clearTimeout(timer_vanna_vent);
                  timer_vanna_vent = setTimeout(function() {
                      setState('megadd.0.p8_P8', false); 
                  }, 185000);
              }
              });
          });` [/i][/i][/i][/i][/i]
          
          1 Reply Last reply
          0
          • P Offline
            P Offline
            Palko
            wrote on last edited by
            #7

            Добрый день.

            Кроме всего прочего, посмотрите в сторону микроволновых датчиков движения.

            Для них стеклянная перегородка не препятствие.

            iobroker+Beckhoff_BC9000+…

            1 Reply Last reply
            0
            • A Offline
              A Offline
              algar
              wrote on last edited by
              #8

              Подниму старую тему. Актуально для тех кто пользует InfluxDB.

              Для себя проблему идентификации повышения\понижения температуры (ну или других показателей) и скорости таких изменений решил следующим скриптом

              function getRate(id) {
                  var rate = 0;
              
                  sendTo('influxdb.0', 'query', 'SELECT DERIVATIVE(mean(value), 1h) FROM \"'+id +'\" WHERE time > now() - 2h GROUP BY time(1h) fill(linear)', function (result) {
                  if (result.error) {
                      console.error(result.error);
                      rate=0;
                  } else {
                       var res=JSON.parse(JSON.stringify(result.result[0]));
                       if (typeof res[0]=="undefined") {rate=0} else {rate = Math.round(res[res.length-1].derivative*100)/100;} 
                       setState(id+'.tempDir1h', rate, true);
                  }
              });
              
              }
              
              

              данный скрипт использует стандартную функцую influxDB DERIVATIVE, которая возвращает скорость изменения показателя за указанный в параметре промежуток времени.

              Скрипт берет данные из базы за последние 2 часа, усредняет их по часовым интервалам и возвращает скорость изменения за последний час. Отричательные значения говорят о снижении показателя, положительные об увеличении.

              1 Reply Last reply
              0
              • A Offline
                A Offline
                andrey99986
                wrote on last edited by
                #9

                Тем кто ставит вентилятор в квартире в отверстие естественной вентиляции (ЕВ) имейте ввиду что выключенный вентилятор уменьшает тягу ЕВ в ~10 раз. Если у вас всего 2 таких отверстия одно на кухне, другое в ванной и в одно их них поставить вентилятор то можно сказать что вы в среднем ухудшили вентиляцию (за счёт вытяжки) в 2 раза для квартиры в целом. Для ванной вентиляция при выключенном ухудшится в ~10 раз.

                Это легко проверяется датчиками CO2. Чтобы проветрить квартиру придётся не просто приоткрывать окно на маленькую щель, а делать сквозное проветривание.Так как тяги 1 лишь кухонной вытяжки не хватает. А если и в кухонной вытяжке поставили только периодически работающий вентилятор - то вообще всё плохо будет.

                1 Reply Last reply
                0
                • P Offline
                  P Offline
                  Pooh
                  wrote on last edited by
                  #10

                  У меня выключенный вентилятор крутиться от естественного потока (некоторые вентиляторы имеют клапан, да…)

                  https://play.google.com/store/apps/details?id=com.roy.royclub - код: UMI201155
                  https://play.google.com/store/apps/details?id=com.blockchainvault - код приглашения: Freepooh
                  https://play.google.com/store/apps/details?id=games.bee.app - код приглашения: freepooh
                  https://www.timestope.com/freepooh - witness code: freepooh

                  1 Reply Last reply
                  0
                  • A Offline
                    A Offline
                    andrey99986
                    wrote on last edited by
                    #11

                    @Pooh:

                    У меня выключенный вентилятор крутиться от естественного потока (некоторые вентиляторы имеют клапан, да…) `

                    То что он крутится это не значит что пропускная способность канала не снизилась. А клапаны от ЕВ откроются только на сильном перепаде высот и в определённое время года. Если до крыши этажей меньше 4, а в доме теплей чем на улице менее 5 градусов - уверен что клапан даже не откроется.

                    Рассчитать это очень сложно, но замерив по факту производительность высокочувствительным датчиком потока или косвенно по уровню CO2 (при щелевом приоткрытом окне) - выводы делаются однозначные.

                    1 Reply Last reply
                    0
                    • P Offline
                      P Offline
                      Pooh
                      wrote on last edited by
                      #12

                      я имел в виду такой клапан:
                      2689_klapan.jpg
                      бывают и другие, жесткие на пружинках

                      совершенно бесполезная вещь, сразу снял

                      а так да, не спорю, естественная вентиляция через выключенную вытяжку хуже

                      тоже баловался с заданием разных условий, по факту остановился на таком режиме: горит свет - работает вытяжка

                      https://play.google.com/store/apps/details?id=com.roy.royclub - код: UMI201155
                      https://play.google.com/store/apps/details?id=com.blockchainvault - код приглашения: Freepooh
                      https://play.google.com/store/apps/details?id=games.bee.app - код приглашения: freepooh
                      https://www.timestope.com/freepooh - witness code: freepooh

                      1 Reply Last reply
                      0

                      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                      With your input, this post could be even better 💗

                      Register Login
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      454

                      Online

                      32.7k

                      Users

                      82.6k

                      Topics

                      1.3m

                      Posts
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Home
                      • Recent
                      • Tags
                      • Unread 0
                      • Categories
                      • Unreplied
                      • Popular
                      • GitHub
                      • Docu
                      • Hilfe