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. Расчёт абсолютной влажности из относительной и обратно.

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

Расчёт абсолютной влажности из относительной и обратно.

Scheduled Pinned Locked Moved ioBroker скрипты
влажность
2 Posts 1 Posters 907 Views 1 Watching
  • 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.
  • S Offline
    S Offline
    SolarW
    wrote on last edited by
    #1

    Приветствую всех присутствующих.

    Прошу помощи у уважаемого сообщества в реализации следующей задачи.
    Есть гараж.
    В гараже вытяжка.
    Два датчика температуры/влажности (меряют относительную влажность), установлены внутри и снаружи.
    Хотелось бы управлять вытяжкой, сравнивая абсолютную влажность внутри и снаружи помещения.

    Для расчёта имеются следующие исходные данные:

    • javascript.0.narodmon.sensor.press.mid - атмосферное давление в мм.рт.ст., подсмотренный на форуме скрипт дергает с народмона значения двух датчиков давления, вычисляет среднее и держит его в этом объекте. Пример значения 752.8

    • mqtt.0.ESP0016E899.dhtt1 - температура внутри гаража, градусы цельсия. Пример значения 8.3

    • mqtt.0.ESP0016E899.dhth1 - относительная влажность внутри гаража, проценты. Пример значения 64.1

    • mqtt.0.ESP0016E899.shtt - температура на улице, градусы цельция.

    • mqtt.0.ESP0016E899.shth - относительная влажность на улице, проценты.

    https://planetcalc.ru/2167/ - калькуляторы, которые позволяют используя данные значения считать абсолютную влажность из относительной и наоборот.
    Если посмотреть исходник страницы - то там похоже на JS код.

    Что хотелось бы.
    Получить скрипт, который раз в 15 минут

    • считал бы абсолютную влажность на улице используя указанные значения
    • прибавлял бы к полученному значению 0.2 г/куб получая желаемую абсолютную влажность внутри гаража (получить такую же недостижимый результат, поэтому и не стараемся)
    • пересчитывал полученное значение абсолютной влажности в относительную с учётом температуры внутри (округляя до целого значения)
    • полученное значение желаемой относительной влажности записывал бы в объект mqtt.0.ESP0016E899.thermo_set1 (стоит ESP8266 с прошивкой WiFi-IoT, в этом объекте параметр работы термостата, вернее влагостата в данном случае.

    Пример расчёта.
    На улице +5.1 градуса, относительная влажность 65%, атмосферное давление 753 мм.рт.ст.
    Согласно калькулятора абсолютная влажность составляет 0.00446 кг/куб
    Прибавляем 0.2 г/куб, получаем 0.00466 кг/куб ЖЕЛАЕМУЮ абсолютную влажность внутри.
    Температура внутри 7.6 градуса.
    Согласно калькулятора желаемая относительная влажность составит 57.63704 %
    Вот это значение хотелось бы округлить до 58% и записать как целевое в настройки влагостата.

    К сожалению я полный ноль в программировании вообще и в JS в частности :-(

    Надеюсь что кто-то, понимающий в JS найдет 10-15 минут чтобы превратить данный алгоритм в скрипт на JS.
    Возможно это будет полезно ещё кому-то кроме меня.

    Источники вдохновения:
    https://habr.com/ru/post/244135/
    http://arduino.ru/forum/proekty/kontrol-vlazhnosti-podvala-arduino-pro-mini
    http://forum.amperka.ru/threads/Контроль-влажности-и-температуры-в-погребе-подвале.9557/

    1 Reply Last reply
    0
    • S Offline
      S Offline
      SolarW
      wrote on last edited by SolarW
      #2

      Наткнулся случайно на свою же тему и понял что не написал в нее решение которое использую после подсказок более опытных товарищей и поиска примеров математики на JS в интернете.
      В общем более двух лет используется следующий скрипт:

      // Выполнение скрипта каждые 15 минут
      schedule('*/15 * * * *', function () {
          var out_t = getState('mqtt.0.test.Garazh01.dhtt2').val; //температура с уличного датчика
          // log('Температура улица = '+ out_t);
          var out_h = getState('mqtt.0.test.Garazh01.dhth2').val; //влажность с уличного датчика
          // log('Влажность улица = '+ out_h);
          var in_t = getState('mqtt.0.test.Garazh01.dhtt1').val; //температура внутри гаража
          // log('Температура гараж = '+ in_t);
          var in_h = getState('mqtt.0.test.Garazh01.dhth1').val; //влажность внутри гаража
          // log('Влажность гараж = '+ in_h);
          var pres_hgmm = getState('javascript.0.narodmon.sensor.press.mid').val; //атмосферное давление полученное с narodmon
          // log('Атмосферное давление = '+ pres_hgmm);
          var Rv = 461.5; //отсюда пересчет относительной влажности в абсолютную с учётом температуры и атмосферного давления
          var pres_hpa = (pres_hgmm * 133.322)/100; // атм давление в гПа
          var et = 6.112*Math.exp( (17.62*out_t)/(243.12+out_t) );
          var fp = 1.0016 + 3.15 * Math.pow(10,-6) * pres_hpa - 0.074/pres_hpa;
          var ept = fp*et;
          var var_e = (out_h/100)*ept;
          var out_t_k = out_t + 273.15; //внешняя температура в К
          var in_t_k = in_t + 273.15; //внутренняя температура в К
          var out_h_abs = var_e*100/(Rv*out_t_k); //абсолютная влажность снаружи
          // log('Абсолютная влажность улица = '+ out_h_abs);
          var in_h_abs = out_h_abs+0.0004; //коррекция желаемой влажности внутри
          var ew = ept*100;
          var var_e1 = in_h_abs*Rv*in_t_k;
          // log('Желаемая абс влажность гараж = '+ in_h_abs);
          var to_in_h = Math.round((var_e1/ew)*100+1);
          // log('Желаемая относ влажность гараж = '+ to_in_h);
          // log('Текущая относ влажность гараж = '+ in_h);
          setState('mqtt.0.test.Garazh02.thermset1',to_in_h,true); //назначение параметров термостата
       })
      

      В принципе в скрипте все достаточно подробно откомментировано, единственно пара моментов:

      • в исходной задаче была корректировка относительной влажности в 0.2 г/куб но практика показала что этого маловато, пришлось поднять до 0.4 г/куб
      • пока не нашел нормальных датчиков которые бы с одной стороны в уличных условиях не дохли бы а с другой стороны были совместимы с DHT22 чтобы можно было по две шт цеплять на модуль ESP8266 с прошивкой WiFi-iot
        Обычные DHT22 дохнут практически сразу, поставленные им на замену AM2320 тоже не сильно лучше, после начала сезона дождей часто "залипает" влажность на 100% и восстанавливается только после нескольких дней сухой и желательно теплой погоды.
      • на самом деле крутятся два таких скрипта, один из которых работает на вытяжку в самом гараже а второй на отдельную вытяжку в подвале.

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

      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

      462

      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