Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Русский
    3. ioBroker
    4. Скрипты
    5. ioBroker скрипты
    6. Расчёт абсолютной влажности из относительной и обратно.

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      SolarW last edited by

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

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

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

      • 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 Reply Quote 0
      • S
        SolarW last edited by SolarW

        Наткнулся случайно на свою же тему и понял что не написал в нее решение которое использую после подсказок более опытных товарищей и поиска примеров математики на 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 Reply Quote 0
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate

        811
        Online

        31.8k
        Users

        80.0k
        Topics

        1.3m
        Posts

        влажность
        1
        2
        702
        Loading More Posts
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes
        Reply
        • Reply as topic
        Log in to reply
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
        The ioBroker Community 2014-2023
        logo