Релиз IntraHouse V5
-
Пользователь @Lost написал в Релиз IntraHouse V5:
Похоже не работает. Ваш пример сценария виртуального датчика темноты после запуска на вкладке "Описание" имеет состояние "Активен", а в окне на вкладке "Редактор" состояние Not active. Если же в таймерах этого сценария вместо временных точек указать интервал то сценарий нормально отрабатывает. На вкладке "Редактор" отображаются сообщения, например Active timer "sunrise" on 10.02 07:47:14 Active timer "sunset" on 10.02 17:20:43
Проверили, такая конструкция отрабатывает штатно:
this.startTimer('sunrise', this.getSysTime('sunrise','tomorrow'), 'onSunrise');
Результат в отладчике:
10.02 10:38:20.544 ---Started 10.02 10:38:20.555 getSysTime sunrise tomorrow = 11.02 07:27:55.983 (1644553675983) 10.02 10:38:20.555 Start timer sunrise on time 11.02 07:27:55 (1644553675983)
Какой код вы используете, из V4?
-
@intrapro У меня сообщения такие же. Но как я уже писал, после перехода на вкладку "Описание" и обратно в "редактор" внизу в окне пишет, что сценарий не активен. На вкладке описание он активен. И по факту отработок утром и вечером нет
-
Вечером смогу прислать скрин и сообщения отладчика.
-
Код брал из v4
-
Вот первый вариант сценария:
/**
- @desc 0 - светло, 1 - темно
- Запускается на старте сервера
- @version 5
*/
const darkness = Device("DDark_001");
const script = {
time:0,
// boot() {
// return true;
// },start() { let now = Date.now(); let sunrise = this.getSysTime('sunrise','today'); let sunset = this.getSysTime('sunset','today'); let val = (now < sunrise || now > sunset) ? 1 : 0; darkness.assign('state', val); let nextrise = (now < sunrise) ? sunrise : this.getSysTime('sunrise','tomorrow'); this.startTimer('sunrise', nextrise, 'onSunrise'); let nextset = (now < sunset) ? sunset : this.getSysTime('sunset','tomorrow'); this.startTimer('sunset', nextset, 'onSunset'); },
//Восход
onSunrise() {
ну и дальше код.После запуска сценария в отладчике видим:
10.02 19:47:28.925 ---Started
10.02 19:47:28.926 getSysTime sunrise today = 10.02 07:47:14.968 (1644468434968)
10.02 19:47:28.926 getSysTime sunset today = 10.02 17:20:43.979 (1644502843979)
10.02 19:47:28.926 DDark_001 device common function: assign
10.02 19:47:28.927 assign[ 'state', 1, 'scen003' ]
10.02 19:47:28.927 getSysTime sunrise tomorrow = 11.02 07:45:21.239 (1644554721239)
10.02 19:47:28.927 Start timer sunrise on time 11.02 07:45:21 (1644554721239)
10.02 19:47:28.927 getSysTime sunset tomorrow = 11.02 17:22:40.361 (1644589360361)
10.02 19:47:28.927 Start timer sunset on time 11.02 17:22:40 (1644589360361)Переходим на вкладку "Описание"
Сценарий активен. Переходим на вкладку "Редактор".
Видим, что сценарий не работает. И по факту утром и вечером состояние датчика не меняется.
А вот тут показано, что вроде как ошибка есть, но нет времени останова сценария
-
А теперь вот такой вариант:
/**
- @desc 0 - светло, 1 - темно
- Запускается на старте сервера
- @version 5
*/
const darkness = Device("DDark_001");
const script = {
time:0,
// boot() {
// return true;
// },start() { let now = Date.now(); let sunrise = this.getSysTime('sunrise','today'); let sunset = this.getSysTime('sunset','today'); let val = (now < sunrise || now > sunset) ? 1 : 0; darkness.assign('state', val); let nextrise = (now < sunrise) ? sunrise : this.getSysTime('sunrise','tomorrow'); this.startTimer('sunrise', (nextrise-now)/1000, 'onSunrise'); let nextset = (now < sunset) ? sunset : this.getSysTime('sunset','tomorrow'); this.startTimer('sunset', (nextset-now)/1000, 'onSunset'); },
//Восход
onSunrise() {Отладчик:
10.02 20:00:07.496 ---Started
10.02 20:00:07.498 getSysTime sunrise today = 10.02 07:47:14.968 (1644468434968)
10.02 20:00:07.498 getSysTime sunset today = 10.02 17:20:43.979 (1644502843979)
10.02 20:00:07.499 DDark_001 device common function: assign
10.02 20:00:07.515 assign[ 'state', 1, 'scen003' ]
10.02 20:00:07.522 getSysTime sunrise tomorrow = 11.02 07:45:21.239 (1644554721239)
10.02 20:00:07.522 Start timer sunrise for 42313.743 sec
10.02 20:00:07.523 getSysTime sunset tomorrow = 11.02 17:22:40.361 (1644589360361)
10.02 20:00:07.524 Start timer sunset for 76952.865 secВкладка "Описание"
Вкладка "Редактор"
Вкладка "Сценарии"
Тут теперь ошибок нет, но сценарий типа остановлен. Хотя по факту в этом случае все работает.
-
И еще. Если в последнем варианте сценария сделать какие либо правки и сохранить их, то после следующего запуска он сразу останавливается. Запустить его удается только после перезагрузки сервера
10.02 20:03:54.197 scen003 Active:
Active timer "sunrise" on 11.02 07:45:21
Active timer "sunset" on 11.02 17:22:40
10.02 20:05:38.958 Exit
10.02 20:05:38.959 ---Stopped---
10.02 20:05:38.959 ---Stopped---
10.02 20:05:44.721 ---Started
10.02 20:05:44.721 getSysTime sunrise today = 10.02 07:47:14.968 (1644468434968)
10.02 20:05:44.721 getSysTime sunset today = 10.02 17:20:43.979 (1644502843979)
10.02 20:05:44.721 DDark_001 device common function: assign
10.02 20:05:44.722 assign[ 'state', 1, 'scen003' ]
10.02 20:05:44.722 getSysTime sunrise tomorrow = 11.02 07:45:21.239 (1644554721239)
10.02 20:05:44.722 Start timer sunrise for 41976.518 sec
10.02 20:05:44.722 getSysTime sunset tomorrow = 11.02 17:22:40.361 (1644589360361)
10.02 20:05:44.723 Start timer sunset for 76615.64 sec
10.02 20:05:44.723 ---Stopped---Ну как то так. Уж не знаю я что не верно делаю или косяк. Подскажите.
-
@Lost, спасибо за подробный анализ проблемы!
Будем разбираться
-
И функция boot() похоже не работает. По крайней мере этот сценарий не запускается при перезегрузке сервера. Пока закоментарил.
-
Пользователь @Lost написал в Релиз IntraHouse V5:
И функция boot() похоже не работает. По крайней мере этот сценарий не запускается при перезагрузке сервера. Пока закоментарил.
Вышла версия 5.8.12-beta. В ней работает функция boot(), синтаксис как в V4.
Проблемы с таймерами также исправлены. Еще раз спасибо за баг-репорт
-
@intrapro Спасибо. Будем дальше изучать систему.
-
Все вроде работает. Заметил, что после перезагрузки сервера и запуска сценария функцией boot() на вкладке "Выполнение" папки "Сценарии" вот такая картина:
По факту сценарий активен, а тут показано, что он остановился.
-
Пользователь @Lost написал в Релиз IntraHouse V5:
Все вроде работает....
По факту сценарий активен, а тут показано, что он остановился.Да, это вы верно заметили, здесь информация не совсем верно представлена.
Показывает, сколько длится синхронная часть (последняя выполненная функция, грубо говоря). Контроль зацикливания
-
Добрый вечер!
При дальнейшем ковырянии выявил, что вот такая конструкция не передает сообщения в Telegram:
this.info("telegram","u0002", "Был план получить снимок с камеры " + this.cam_id + ", но увы" );
Хотя в отладчике все нормально. В Pushnotification передача выполняется.
-
@Lost, уберите "не" из конструкции if (result.filename)
-
@Alex_Jet Это сделано специально, чтобы отправляла ь не картинка, а сообщение после else.
-
Это сообщение удалено!
-
Странно, ничего не делал и pushnotification заработал
-
А что означает следующая надпись на вкладке "О системе"?
Число привязанных каналов превышает доступные! Исполнительная система переведена в режим ограниченного функционала!
-
@Lost К сожалению при выпуске бета с 5.8.17 по 5.8.19 была допущена ошибка в механизме версий.
- Выполните установку IntraHouse командой curl https://docs.intrahouse.ru/ru/intrahouse-installation/
- Войдите с учетными данными admin/202020
- Переключитесь на свой проект
В версии 5.8.20-beta проблема исправлена
В процессе установки ваш проект не пропадет.
Просим извинения за доставленные неудобства.