Скрипт не отрабатывает



  • Задача такая. Опрашивать оборудование ( кондиционеры и ИБП) и хранить данные..
    Я вот накарябал скрипт но что то сообщения приходят без остановки, посмотрите что не так.
    /**

    • @name Air3_4data3
    • @desc Тестовый сценарий
    • @version 4
      */
      const temp = Device("STEMP2");
      startOnChange(temp);
      script({
      start(){
      if (temp.value < 80);
      if(temp.value > 40);
      this.info('telegram', 'OWNER', 'Высокая температура кондиционеров 3-4!');
      }
      });


  • @dangers-77 Добрый день.
    Ваш скрипт будет срабатывать при каждом изменении значения, и при каждом запуске отправляется сообщение
    Идея же в том, чтобы послать один раз при выходе за диапазон, затем при нормализации?
    Есть разные варианты, можно например, так:

    /**
    @name test_temp
    @desc Тестовый сценарий
    @version 4
    */
    
    const temp = Device("STEMP2");
    startOnChange(temp);
    script({
      start(){
        const max = 40;
        const min = 10
        if ((temp.value > max) || (temp.value < min)) {  // Выход за диапазон
          if (temp.value > max) this.info('telegram', 'OWNER', 'Температура выше максимальной!');
          if (temp.value < min) this.info('telegram', 'OWNER', 'Температура ниже минимальной!');
          this.addListener(temp, 'onTempChange');  // Сценарий не завершаем, подключаем слушателя событий датчика
        }
      // Если температура в норме - сценарий завершается. Запустится опять при изменении
      },
      
      onTempChange() {
          if ((temp.value < max) && (temp.value > min)) {
            this.info('telegram', 'OWNER', 'Температура в норме!');
            this.exit();  // Температура в норме - завершаем сценарий
          }
      }
    });
    


  • Спасибо большое. Очень помогли. А то я переделал свой вроде тоже работал но с повторами пока в норму температура не в станет. Истеричный скрипт у меня получился
    /**

    • @name Новый мультисценарий
    • @desc
    • @version 4
      */
      const temp = Device("Air3_4data3");

    startOnChange(temp);

    script({
    start() {
    if (temp.value < 80){temp.on();

    } else if (temp.value > 30){temp.off();

    this.info('telegram', 'OWNER', 'Повышенная температура Нур-Султан ЦОД 3 кондиционер 3-4!');
    }
    }
    });


Авторизуйтесь, чтобы ответить