Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Русский
  3. ioBroker
  4. Скрипты
  5. ioBroker скрипты
  6. Внести гистерезис в скрипт

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Внести гистерезис в скрипт

Geplant Angeheftet Gesperrt Verschoben ioBroker скрипты
6 Beiträge 2 Kommentatoren 1.4k Aufrufe
  • Ä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.
  • V Offline
    V Offline
    v965
    schrieb am zuletzt editiert von
    #1

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

    ! ````
    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 Antwort Letzte Antwort
    0
    • I Offline
      I Offline
      instalator
      schrieb am zuletzt editiert von
      #2

      @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);
      }
      });

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

      http://blog.instalator.ru/

      1 Antwort Letzte Antwort
      0
      • V Offline
        V Offline
        v965
        schrieb am zuletzt editiert von
        #3

        Не. Это требуемая температура, я её задаю в 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 Antwort Letzte Antwort
        0
        • I Offline
          I Offline
          instalator
          schrieb am zuletzt editiert von
          #4

          @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);
          }
          });

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

          http://blog.instalator.ru/

          1 Antwort Letzte Antwort
          0
          • V Offline
            V Offline
            v965
            schrieb am zuletzt editiert von
            #5

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

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

            1 Antwort Letzte Antwort
            0
            • V Offline
              V Offline
              v965
              schrieb am zuletzt editiert von
              #6

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

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

              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 :D

              1 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              411

              Online

              32.6k

              Benutzer

              82.2k

              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