Сценарии в intraHouse Cherry



  • @intrapro:

    @sergeyygr:

    Ммм… Только обогрев ввода тоже с инверсией и глюка такого не наблюдается. Правда сценарий там немного другой. Сейчас попробовал, актуатор отопления переподключил на "работающий" сценарий и результат тот же. Правда заметил то, что произвольное переключение актуатора прекращается при достижении показания датчика более 10 ти градусов (radiator100_1 переключаться прекратил. Подожду пока температура поднимется в другой комнате и проверю.

    А случайно для датчика температуры не выставлен диапазон от 10 градусов?

    С установкой флага ошибки меньше 10?

    Можно посмотреть в журнале датчика температуры

    4.jpeg
    5.jpeg



  • И еще интервалы показаний датчиков не получается задать в плагине. Датчики передают показания как вздумается. По шине I2C может меняться 2 раза в секунду при установке интервала опроса 15 секунд. По шине 1W - один раз в 25-30 секунд при установке 5 секунд. И изменить не получается. Может плагин виноват? (или мои кривые руки))))



  • Если ошибки нет, тогда зацикливание с датчиком температуры скорее всего не связано.

    Попробуйте так:

    check() {
    return bat.auto && ( (bat.dval == 0)&&(Number(dt.aval) <= Number(dt.defval)-0.5) || (bat.dval == 1)&&(Number(dt.aval) >= Number(dt.defval) ) );
    },
    
    start() {
    	if (bat.dval == 0) {
    		this.do(bat, "aon");
    	} else {
    		this.do(bat, "aoff");
    	}
    }	
    
    
    

    @sergeyygr:

    И еще интервалы показаний датчиков не получается задать в плагине. Датчики передают показания как вздумается. По шине I2C может меняться 2 раза в секунду при установке интервала опроса 15 секунд. По шине 1W - один раз в 25-30 секунд при установке 5 секунд. И изменить не получается. Может плагин виноват? (или мои кривые руки))))

    Руки вероятно не виноваты 🙂

    По 1W через MegaD помнится есть минимальное время отклика как раз порядка 20-25 сек. Там же последовательный опрос цепочки датчиков

    По шине I2C - нужно посмотреть лог, скиньте, пригодится, когда будем плагин переделывать



  • @intrapro:

    Если ошибки нет, тогда зацикливание с датчиком температуры скорее всего не связано.

    Попробуйте так:

    > check() {
    > return bat.auto && ( (bat.dval == 0)&&(Number(dt.aval) <= Number(dt.defval)-0.5) || (bat.dval == 1)&&(Number(dt.aval) >= Number(dt.defval) ) );
    > },
    > 
    > start() {
    > 	if (bat.dval == 0) {
    > 		this.do(bat, "aon");
    > 	} else {
    > 		this.do(bat, "aoff");
    > 	}
    > }	
    > 
    > 
    

    @sergeyygr:

    И еще интервалы показаний датчиков не получается задать в плагине. Датчики передают показания как вздумается. По шине I2C может меняться 2 раза в секунду при установке интервала опроса 15 секунд. По шине 1W - один раз в 25-30 секунд при установке 5 секунд. И изменить не получается. Может плагин виноват? (или мои кривые руки))))

    Руки вероятно не виноваты 🙂

    По 1W через MegaD помнится есть минимальное время отклика как раз порядка 20-25 сек. Там же последовательный опрос цепочки датчиков

    По шине I2C - нужно посмотреть лог, скиньте, пригодится, когда будем плагин переделывать

    Такой вариант сценария пробовал, не помогло(((



  • @sergeyygr:

    Такой вариант сценария пробовал, не помогло(((

    А в отладчике что? В рабочих сценариях конкретно по этому сценарию?

    Еще можно временно добавить логирование :

    start() {
      if (bat.dval == 0) {
         this.log('Температура '+dt.aval+'  уставка '+dt.defval+'  Батарея '+bat.dval+' -> ВКЛЮЧАЕМ');
         this.do(bat, "aon");
      } else {
        this.log('Температура '+dt.aval+'  уставка '+dt.defval+'  Батарея '+bat.dval+' -> ВЫКЛЮЧАЕМ');
       this.do(bat, "aoff");
     }
    }
    
    


  • @intrapro:

    @sergeyygr:

    Такой вариант сценария пробовал, не помогло(((

    А в отладчике что? В рабочих сценариях конкретно по этому сценарию?

    Еще можно временно добавить логирование :

    > start() {
    >   if (bat.dval == 0) {
    >      this.log('Температура '+dt.aval+'  уставка '+dt.defval+'  Батарея '+bat.dval+' -> ВКЛЮЧАЕМ');
    >      this.do(bat, "aon");
    >   } else {
    >     this.log('Температура '+dt.aval+'  уставка '+dt.defval+'  Батарея '+bat.dval+' -> ВЫКЛЮЧАЕМ');
    >    this.do(bat, "aoff");
    >  }
    > }
    > 
    

    При температуре в помещении 10 градусов все нормально, режим авто работает, уставку датчика делаешь больше 10 ти - нормально, актуатор включается. Сейчас температура в помещении упала ниже 9,28 - началась "чихарда" с актуатором.

    лог сценария высылаю
    лог сценария.zip



  • @sergeyygr:

    При температуре в помещении 10 градусов все нормально, режим авто работает, уставку датчика делаешь больше 10 ти - нормально, актуатор включается. Сейчас температура в помещении упала ниже 9,28 - началась "чихарда" с актуатором.

    лог сценария высылаю

    Чудеса 🙂 А так?

    start() {
      this.log('Температура '+dt.aval+' уставка '+dt.defval+'  Батарея '+bat.dval);
    
      if (bat.dval == 0 && (Number(dt.aval) < Number(dt.defval))) {
         this.log(dt.aval+' < '+dt.defval+ ' -> ВКЛЮЧАЕМ');
         this.do(bat, "aon");
      } 
    
      if (bat.dval == 1 && (Number(dt.aval) > Number(dt.defval))) {
         this.log(dt.aval+' > '+dt.defval+ ' -> ВЫКЛЮЧАЕМ');
       this.do(bat, "aoff");
     }
    }
    
    


  • @intrapro:

    @sergeyygr:

    При температуре в помещении 10 градусов все нормально, режим авто работает, уставку датчика делаешь больше 10 ти - нормально, актуатор включается. Сейчас температура в помещении упала ниже 9,28 - началась "чихарда" с актуатором.

    лог сценария высылаю

    Чудеса 🙂 А так?

    > start() {
    >   this.log('Температура '+dt.aval+' уставка '+dt.defval+'  Батарея '+bat.dval);
    >   
    >   if (bat.dval == 0 && (Number(dt.aval) < Number(dt.defval))) {
    >      this.log(dt.aval+' < '+dt.defval+ ' -> ВКЛЮЧАЕМ');
    >      this.do(bat, "aon");
    >   } 
    >   
    >   if (bat.dval == 1 && (Number(dt.aval) > Number(dt.defval))) {
    >      this.log(dt.aval+' > '+dt.defval+ ' -> ВЫКЛЮЧАЕМ');
    >    this.do(bat, "aoff");
    >  }
    > }
    > 
    

    Работает!!!



  • @sergeyygr:

    @intrapro:

    @sergeyygr:

    При температуре в помещении 10 градусов все нормально, режим авто работает, уставку датчика делаешь больше 10 ти - нормально, актуатор включается. Сейчас температура в помещении упала ниже 9,28 - началась "чихарда" с актуатором.

    лог сценария высылаю

    Чудеса 🙂 А так?

    > > start() {
    > >   this.log('Температура '+dt.aval+' уставка '+dt.defval+'  Батарея '+bat.dval);
    > >   
    > >   if (bat.dval == 0 && (Number(dt.aval) < Number(dt.defval))) {
    > >      this.log(dt.aval+' < '+dt.defval+ ' -> ВКЛЮЧАЕМ');
    > >      this.do(bat, "aon");
    > >   } 
    > >   
    > >   if (bat.dval == 1 && (Number(dt.aval) > Number(dt.defval))) {
    > >      this.log(dt.aval+' > '+dt.defval+ ' -> ВЫКЛЮЧАЕМ');
    > >    this.do(bat, "aoff");
    > >  }
    > > }
    > > 
    

    Работает!!!

    И так тоже работает

    const script = {

    check() {

    return bat.auto && ((!bat.dval)&&(Number(dt.aval) <= Number(dt.defval)-0.5) || (bat.dval)&&(Number(dt.aval) >= Number(dt.defval)));

    },

    start() {

    this.log('Температура '+dt.aval+' уставка '+dt.defval+' Батарея '+bat.dval);

    if (!bat.dval && (Number(dt.aval) < Number(dt.defval))) {

    this.log(dt.aval+' < '+dt.defval+ ' -> ВКЛЮЧАЕМ');

    this.do(bat, "aon");

    }

    if (bat.dval && (Number(dt.aval) > Number(dt.defval))) {

    this.log(dt.aval+' > '+dt.defval+ ' -> ВЫКЛЮЧАЕМ');

    this.do(bat, "aoff");

    }

    }

    };



  • @sergeyygr:

    Работает!!!

    Постараемся исправить. Спасибо вам за тестирование 🙂



  • Добрый день!

    После сохранения отредактированного сценария теперь не могу зайти в список сценариев. Восстановление проекта из резервной копии не помогло. Список рабочих сценариев открывается. Как это лечится???
    Снимок.GIF



  • Попробуйте сделать так. Найти папку /var/lib/intrahouse-c/projects/<имя проекта>/scenes/script/

    В этой папке хранятся файлы сценариев с расширением js

    Удалите последний редактированный сценарий. Или перенесите его себе, чтобы сохранить.

    После удаления, сервер надо перезагрузить.



  • @sergeyygr:

    Добрый день!

    После сохранения отредактированного сценария теперь не могу зайти в список сценариев. Восстановление проекта из резервной копии не помогло. Список рабочих сценариев открывается. Как это лечится???

    Помогло! Спасибо!



  • @intrahouse:

    Попробуйте сделать так. Найти папку /var/lib/intrahouse-c/projects/<имя проекта>/scenes/script/

    В этой папке хранятся файлы сценариев с расширением js

    Удалите последний редактированный сценарий. Или перенесите его себе, чтобы сохранить.

    После удаления, сервер надо перезагрузить.

    Помогло! Спасибо!!!



  • Тема закрыта в связи с выходом новой версии API сценариев.


Log in to reply