Сценарии - новая версия API

Программная платформа для систем автоматизации.
Диспетчеризация, Умный дом.
Alex_Jet
Сообщения: 669
Зарегистрирован: 21 дек 2016, 05:43

Re: Сценарии - новая версия API

Сообщение Alex_Jet » 11 сен 2019, 04:16

Коллеги! А можно комментарии по вот этому посту - viewtopic.php?f=18&t=5446&start=320#p10760?

intrahouse
Сообщения: 566
Зарегистрирован: 12 дек 2016, 20:22

Re: Сценарии - новая версия API

Сообщение intrahouse » 11 сен 2019, 07:19

Пока не сделали

intrahouse
Сообщения: 566
Зарегистрирован: 12 дек 2016, 20:22

Re: Сценарии - новая версия API

Сообщение intrahouse » 11 сен 2019, 11:59

artem521 писал(а):
08 сен 2019, 18:20
И подскажите пожалуйста, как сделать сценарий блок схему, где при сработке датчика будет воспроизводиться аудио файл. Как было в berry.
Специализированной команды сейчас нет. В блок-схеме можно использовать блок Команда OS. В поле Текст нужно прописать вызов программы воспроизведения звукового файла, например aplay или mplayer. После пробела нужно указать полный путь к файлу, например:
aplay /home/my/sounds/ding.wav
Если звук не воспроизводится, нужно смотреть отладчик. При запуске сценария в отладчике можно увидеть результат выполнения системной команды

artem521
Сообщения: 143
Зарегистрирован: 18 ноя 2017, 08:39

Re: Сценарии - новая версия API

Сообщение artem521 » 11 сен 2019, 12:11

intrahouse писал(а):
11 сен 2019, 11:59
artem521 писал(а):
08 сен 2019, 18:20
И подскажите пожалуйста, как сделать сценарий блок схему, где при сработке датчика будет воспроизводиться аудио файл. Как было в berry.
Специализированной команды сейчас нет. В блок-схеме можно использовать блок Команда OS. В поле Текст нужно прописать вызов программы воспроизведения звукового файла, например aplay или mplayer. После пробела нужно указать полный путь к файлу, например:
aplay /home/my/sounds/ding.wav
Если звук не воспроизводится, нужно смотреть отладчик. При запуске сценария в отладчике можно увидеть результат выполнения системной команды
Спасибо большое за ответ;)

Alex_Jet
Сообщения: 669
Зарегистрирован: 21 дек 2016, 05:43

Re: Сценарии - новая версия API

Сообщение Alex_Jet » 23 сен 2019, 09:59

Коллеги! Помагите))) Недавно писал, что не отображаются статусы голосовых терминалов и, соответственно, не могу ими управлять (viewtopic.php?f=18&t=5494&start=30#p10828). Тогда все починил и все было ок. Но такое ощущение что при последнем обновлении где-то что-то было изменено и из плагина не запускается данный сценарий (сегодня утром включал свет и другой сценарий работал). Даже хуже - при ручном запуске сценария VoiceTerminal_Status в отладчике вообще ничего нет - ни start, ни stop! Свойства, объявленные в сценарии на вкладке "Параметры" у плагина не появляются... что такое может быть? При этом плагин получает от терминала сообщения и пытается запустить сценарий:

Код: Выделить всё

23.09 16:55:56.429 voiceterminal2: 192.168.11.52 => localhost:11052 HTTP GET /api/method/name.method?music_volume=100&volume=100&username=voiceterminal&terminal=VT2&uptime=2142315
23.09 16:55:56.430 voiceterminal2: 192.168.11.52 <= localhost:11052 
23.09 16:55:56.430 voiceterminal2: { type: 'startscene',
  id: 'VoiceTerminal_Status',
  arg: '{"music_volume":"100","volume":"100","username":"voiceterminal","terminal":"VT2","uptime":"2142315"}' }
23.09 16:55:56.431 IH: startscene VoiceTerminal_Status
Последний раз редактировалось Alex_Jet 30 сен 2019, 08:05, всего редактировалось 2 раза.

amgstone
Сообщения: 76
Зарегистрирован: 29 янв 2019, 21:19

Re: Сценарии - новая версия API

Сообщение amgstone » 30 сен 2019, 07:29

Есть сценарий на включение света, когда я захожу домой срабатывает SMOTION2 (датчик света) с проверкой датчика датчика освещенности SENSORA1, когда есть движения там где есть датчик движения то скрипт работает при условии что не было 30 секунд без движения. Вопрос как можно его дополнить: Задача: SMOTION2 (точка входа в помещение) активирует сценарий и что бы SMOTION21 (конечная точка в помещении) останавливала сценарий. но если я задерживаюсь на любых зонах там где есть датчик движения (SMOTION2,SMOTION4,SMOTION21) то там продолжает гореть свет а в других зонах он гаснет цвет, но если я дохожу до конечной точки (SMOTION21) то цвет через назначенное время гаснет всюду даже если таймер в какой то зоне еще активный.

const LAMP23 = Device("LAMP23");
const LAMPHL11 = Device("LAMPHL11");
const LAMPKL12 = Device("LAMPKL12");
const SMOTION2 = Device("SMOTION2");
const SMOTION4 = Device("SMOTION4");
const SMOTION21 = Device("SMOTION21");
const SENSORA1 = Device("SENSORA1",'');

startOnChange([SMOTION2],SENSORA1.value<10);

script({
start() {
this.log("auto_light start");
this.addListener(SMOTION2, "onMotion");
this.addListener(SMOTION4, "onMotion");
this.addListener(SMOTION21, "onMotion");
},
onMotion(){
this.log("auto_light onMotion");
LAMP23.turnOnSaveAuto();
LAMPHL11.turnOnSaveAuto();
LAMPKL12.turnOnSaveAuto();
this.stopTimer("T1");
this.startTimer("T1", 30, "offLight");
},
offLight(){
LAMP23.turnOffSaveAuto();
LAMPHL11.turnOffSaveAuto();
LAMPKL12.turnOffSaveAuto();
this.log("auto_light end");
this.exit();
}
})

Alex_Jet
Сообщения: 669
Зарегистрирован: 21 дек 2016, 05:43

Re: Сценарии - новая версия API

Сообщение Alex_Jet » 30 сен 2019, 08:05

Alex_Jet писал(а):
23 сен 2019, 09:59
Коллеги! Помагите))) Недавно писал, что не отображаются статусы голосовых терминалов и, соответственно, не могу ими управлять (viewtopic.php?f=18&t=5494&start=30#p10828). Тогда все починил и все было ок. Но такое ощущение что при последнем обновлении где-то что-то было изменено и из плагина не запускается данный сценарий (сегодня утром включал свет и другой сценарий работал). Даже хуже - при ручном запуске сценария VoiceTerminal_Status в отладчике вообще ничего нет - ни start, ни stop! Свойства, объявленные в сценарии на вкладке "Параметры" у плагина не появляются... что такое может быть? При этом плагин получает от терминала сообщения и пытается запустить сценарий:

Код: Выделить всё

23.09 16:55:56.429 voiceterminal2: 192.168.11.52 => localhost:11052 HTTP GET /api/method/name.method?music_volume=100&volume=100&username=voiceterminal&terminal=VT2&uptime=2142315
23.09 16:55:56.430 voiceterminal2: 192.168.11.52 <= localhost:11052 
23.09 16:55:56.430 voiceterminal2: { type: 'startscene',
  id: 'VoiceTerminal_Status',
  arg: '{"music_volume":"100","volume":"100","username":"voiceterminal","terminal":"VT2","uptime":"2142315"}' }
23.09 16:55:56.431 IH: startscene VoiceTerminal_Status
Коллеги, посмотрите все же что происходит с Scene Engine? Мне кажется после последних обновлений у меня перестает работать часть сценариев (по крайней мере 2 шт., связанных с Voice Terminal - точно прекращают свою работу!). Например, вышеприведенный. Захожу в сценарий, изменяю его (ввожу, например, пробел), сохраняю и он работает до поры до времени...

intrapro
Сообщения: 471
Зарегистрирован: 13 дек 2016, 09:14

Re: Сценарии - новая версия API

Сообщение intrapro » 30 сен 2019, 13:40

Alex_Jet писал(а):
30 сен 2019, 08:05
Alex_Jet писал(а):
23 сен 2019, 09:59
Коллеги! Помагите))) Недавно писал, что не отображаются статусы голосовых терминалов и, соответственно, не могу ими управлять (viewtopic.php?f=18&t=5494&start=30#p10828). Тогда все починил и все было ок. Но такое ощущение что при последнем обновлении где-то что-то было изменено и из плагина не запускается данный сценарий (сегодня утром включал свет и другой сценарий работал). Даже хуже - при ручном запуске сценария VoiceTerminal_Status в отладчике вообще ничего нет - ни start, ни stop! Свойства, объявленные в сценарии на вкладке "Параметры" у плагина не появляются... что такое может быть? При этом плагин получает от терминала сообщения и пытается запустить сценарий:

Код: Выделить всё

23.09 16:55:56.429 voiceterminal2: 192.168.11.52 => localhost:11052 HTTP GET /api/method/name.method?music_volume=100&volume=100&username=voiceterminal&terminal=VT2&uptime=2142315
23.09 16:55:56.430 voiceterminal2: 192.168.11.52 <= localhost:11052 
23.09 16:55:56.430 voiceterminal2: { type: 'startscene',
  id: 'VoiceTerminal_Status',
  arg: '{"music_volume":"100","volume":"100","username":"voiceterminal","terminal":"VT2","uptime":"2142315"}' }
23.09 16:55:56.431 IH: startscene VoiceTerminal_Status
Коллеги, посмотрите все же что происходит с Scene Engine? Мне кажется после последних обновлений у меня перестает работать часть сценариев (по крайней мере 2 шт., связанных с Voice Terminal - точно прекращают свою работу!). Например, вышеприведенный. Захожу в сценарий, изменяю его (ввожу, например, пробел), сохраняю и он работает до поры до времени...
Добрый день! Навскидку изменений, связанных со сценариями, было немного (обработка результата команд execOS и pluginCommand).
Нужно определить что конкретно перестало работать
  • не срабатывает запуск сценария из плагина;
  • сценарий запускается, но не находит устройства;
  • не присваиваются свойства;
  • свойства присвоились, но не показываются в окне устройства
Для начала предлагаю пойти простым дедовским способом :) Поставьте команды логирования в сценарий, а когда не сработало - посмотрите журнал.

Код: Выделить всё

 
 start(param) {
    let device = '';
    this.log("VoiceTerminal_Status started with "+param);
   
    //Скрипт запускается плагином с параметрами
    if(param !== undefined) {
      const obj = JSON.parse(param);
      
      //Выбор устройства
      if(obj.terminal == "VT1") {
        device = dev1;
        this.log("device= "+device.dn);
      }
      else if(obj.terminal == "VT2") {
        device = dev2;
        this.log("device= "+device.dn);
      } else {
         this.log("device not found:  "+ obj.terminal);
     }
     // И можно в конце вывести свойство любое после присваивания
     
Alex_Jet писал(а):
23 сен 2019, 09:59
при ручном запуске сценария VoiceTerminal_Status в отладчике вообще ничего нет - ни start, ни stop!
Вот это иногда бывает, сценарий просто не запускается, это баг отладчика. Нужно закрыть отладчик, обновить страницу и заново выбрать сценарий.

Alex_Jet
Сообщения: 669
Зарегистрирован: 21 дек 2016, 05:43

Re: Сценарии - новая версия API

Сообщение Alex_Jet » 01 окт 2019, 05:13

intrapro писал(а):
30 сен 2019, 13:40
Для начала предлагаю пойти простым дедовским способом :) Поставьте команды логирования в сценарий, а когда не сработало - посмотрите журнал.
Вот это иногда бывает, сценарий просто не запускается, это баг отладчика. Нужно закрыть отладчик, обновить страницу и заново выбрать сценарий.
Я хотел так сделать, но поскольку события от терминала сыпятся очень часто, то у меня рабочий журнал будет весь забит... вот бы вы реализовали запись лога в журнал, созданный администратором! А то журнал создать можно, а запись вести в него - нет:(
Но другой момент в том, что после тупого пересохранения сценария все начинает работать! У меня буквально на днях с новым сценарием был случай, когда в качестве param приходил не верный аргумент (не выполнил требования формата json - не закрыл кавычки) и когда он приходил, то сценарий делал start и зависал. Помогало только его новое сохранение. Возможно тут происходит то же, но надо отловить этот не верный param! Сходу не смог отловить SyntaxError от JSON.parse...не подскажите как сделать?
По описанному багу отладчика - ни разу не встречал. Хотя сценариев написал довольно много (штук 30 уже точно есть)!

Update: сделал функцию разбора JSON. В случае ошибок в синтаксисе проблема должна выводится в лог:

Код: Выделить всё

  ParseJSON(param) {
      try {
        return JSON.parse(param);
      }
      catch (e) {
        let text = e instanceof SyntaxError;
        this.log("SyntaxError - " +text+ "; param - " +param);
      }
  },

Alex_Jet
Сообщения: 669
Зарегистрирован: 21 дек 2016, 05:43

Re: Сценарии - новая версия API

Сообщение Alex_Jet » 04 окт 2019, 08:48

В общем по новым наблюдениям: как только перезагружаю iH (из вебки), то после обновления страниц (открываю отладчик плагина и открываю отладчик сценария) в плагине сообщения от железки идут и есть сообщение о запуске сценария, но в отладчике сценария - пусто!
Как только пересохраняю сценарий (добавляю и удаляю пробел, жму сохранить), то в его отладчике сразу появляются сообщения.
Повторил несколько раз - картина одинаковая. Остальные сценарии вроде бы работают.
У вас есть возможность сделать эксперимент с моим сценарием? По идее достаточно сохранить сценарий, установить плагин voiceterminal (слушающий порт 11052) и в браузере вбить http://адрес_сервера_iH:11052/api/method/name.method?music_volume=110&volume=120&username=voiceterminal&uptime=500&terminal=VT2

Ответить