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.
    • V
      v965 last edited by

      Помогите добавить к существующему скрипту функцию гистерезиса, был бы очень признателен готовому скрипту.

      ! ````
      function checkTemperature () {
      if (getState('megadd.1.p30_P30_-unknown').val < getState('need_temp1').val - 2 && getState('megadd.0.p9_P9-unknown').val === false) {
      log('Включаем пол');
      setState ('megadd.0.p9_P9
      -unknown', true);
      }
      else if(getState('megadd.1.p30_P30
      -unknown').val > getState('need_temp1').val && getState('megadd.0.p9_P9-unknown').val === true){
      log('Выключаем пол');
      setState ('megadd.0.p9_P9
      -unknown', false);
      }
      }
      ! createState('need_temp1', function () {
      on('need_temp1', checkTemperature);
      });
      on('megadd.1.p30_P30
      -_unknown', checkTemperature);

      1 Reply Last reply Reply Quote 0
      • I
        instalator last edited by

        @v965:

        Помогите добавить к существующему скрипту функцию гистерезиса, был бы очень признателен готовому скрипту.

        ! function checkTemperature () { if (getState('megadd.1.p30_P30_-_unknown').val < getState('need_temp1').val - 2 && getState('megadd.0.p9_P9_-_unknown').val === false) { log('Включаем пол'); setState ('megadd.0.p9_P9_-_unknown', true); } else if(getState('megadd.1.p30_P30_-_unknown').val > getState('need_temp1').val && getState('megadd.0.p9_P9_-_unknown').val === true){ log('Выключаем пол'); setState ('megadd.0.p9_P9_-_unknown', false); } } ! createState('need_temp1', function () { on('need_temp1', checkTemperature); }); on('megadd.1.p30_P30_-_unknown', checkTemperature); `

        так?

        ! ````
        createState('need_temp1', 21);
        ! on({id: "megadd.1.p30_P30_-unknown", change: "any"}, function (data){
        var need = getState('javascript.0.need_temp1').val;
        var p9 = getState('megadd.0.p9_P9
        -unknown').val;
        if((data.state.val < (need - 2)) && !p9){
        log('Включаем пол');
        setState ('megadd.0.p9_P9
        -unknown', true);
        } else if (data.state.val > need && p9){
        log('Выключаем пол');
        setState ('megadd.0.p9_P9
        -_unknown', false);
        }
        });

        1 Reply Last reply Reply Quote 0
        • V
          v965 last edited by

          Не. Это требуемая температура, я её задаю в hqwidjet.

          А нужно чтобы к примеру установил температуру 18 градусов, когда будет фактически 18, выключение не должно произойти, оно должно произойти при достижении температуры (гистерезис 0.5 или любой) 18.5.

          Грубо говоря чтобы не клацало в минимальном диапазоне отключения включения (18 выключилось 17.99 включилось)

          вот что то подобное

          ! 3
          ! 4
          ! 5
          ! 6
          ! 7
          ! 8
          ! 9
          ! 10
          ! 11
          ! 12
          ! 13
          ! 14
          ! 15
          ! 16
          ! 17
          ! 18
          ! 19
          ! 20
          ! 21
          ! 22
          ! 23
          ! 24
          ! 25
          ! 26
          ! 27
          ! 28
          ! 29
          ! 30
          ! // 2-Punkt-Regler Raumheizung
          ! // Raumkurzname am Anfang des Datenpunktnamen und als JS-Gruppenname
          ! var raum = name.split(".")[2];
          ! // halbe Hysterese in K
          ! var hh = 0.1;
          ! var xid = getIdByName(raum + ".Temperatur");
          ! var wid = getIdByName(raum + ".Sollwert");
          ! var yid = getIdByName(raum + ".Heizen");
          ! var x = getState(xid).val; // Istwert in °C
          ! var w = getState(wid).val; // Sollwert in °C
          ! function hys() {
          ! if (x <= w - hh) setState(yid, true);
          ! else if (x >= w + hh) setState(yid, false);
          ! }
          ! hys(); // Script start
          ! on(xid, function(dp) {
          ! x = dp.state.val;
          ! hys();
          ! });
          ! on(wid, function(dp) {
          ! w = dp.state.val;
          ! hys();
          ! });

          1 Reply Last reply Reply Quote 0
          • I
            instalator last edited by

            @v965:

            Не. Это требуемая температура, я её задаю в hqwidjet.

            А нужно чтобы к примеру установил температуру 18 градусов, когда будет фактически 18, выключение не должно произойти, оно должно произойти при достижении температуры (гистерезис 0.5 или любой) 18.5.

            Грубо говоря чтобы не клацало в минимальном диапазоне отключения включения (18 выключилось 17.99 включилось) `

            так?

            ! ````
            createState('need_temp1', 21);
            ! on({id: "megadd.1.p30_P30_-unknown", change: "any"}, function (data){
            var need = getState('javascript.0.need_temp1').val;
            var p9 = getState('megadd.0.p9_P9
            -unknown').val;
            if((data.state.val < (need - 2)) && !p9){
            log('Включаем пол');
            setState ('megadd.0.p9_P9
            -unknown', true);
            } else if ((data.state.val > (need + 0,5)) && p9){
            log('Выключаем пол');
            setState ('megadd.0.p9_P9
            -_unknown', false);
            }
            });

            1 Reply Last reply Reply Quote 0
            • V
              v965 last edited by

              Да наверное это оно! Спасибо!

              Простите сразу не заметил в первом сообщении это if((data.state.val < (need - 2)) && !p9){

              1 Reply Last reply Reply Quote 0
              • V
                v965 last edited by

                Смотрю в книгу вижу фи"у 😄

                Он же изначально (гистерезис) есть в скрипте который я вложил в первом сообщении

                if (getState('megadd.1.p30_P30_-unknown').val < getState('need_temp1').val - 0.5 && getState('megadd.0.p9_P9-_unknown').val === false) {

                log('Включаем пол');

                Красненьким выделил 0.5 градуса гистерезис (это уже я поставил 0.5) по умолчанию было 2 - это и смутило что не срабатывал клапан. Ставил 19 градусов он выключался смотрю уже 18 ,а не включается, конечно он же должен был включиться снова на 17 😄

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                649
                Online

                31.8k
                Users

                80.0k
                Topics

                1.3m
                Posts

                2
                6
                1209
                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