Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
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
    718

  • 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

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

Geplant Angeheftet Gesperrt Verschoben ioBroker скрипты
влажность
2 Beiträge 1 Kommentatoren 907 Aufrufe 1 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S Offline
    S Offline
    SolarW
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • S Offline
      S Offline
      SolarW
      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
      0

      Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

      Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

      Mit deinem Input könnte dieser Beitrag noch besser werden 💗

      Registrieren Anmelden
      Antworten
      • In einem neuen Thema antworten
      Anmelden zum Antworten
      • Älteste zuerst
      • Neuste zuerst
      • Meiste Stimmen


      Support us

      ioBroker
      Community Adapters
      Donate

      354

      Online

      32.7k

      Benutzer

      82.6k

      Themen

      1.3m

      Beiträge
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
      ioBroker Community 2014-2025
      logo
      • Anmelden

      • Du hast noch kein Konto? Registrieren

      • Anmelden oder registrieren, um zu suchen
      • Erster Beitrag
        Letzter Beitrag
      0
      • Home
      • Aktuell
      • Tags
      • Ungelesen 0
      • Kategorien
      • Unreplied
      • Beliebt
      • GitHub
      • Docu
      • Hilfe