/*
* Сценарий обработки событий от плагина MajorDoMo-LMS-Connect
*
* Варианты вызова сценария их плагина (в т.ч. пример передаваемых при этом параметров):
* при включении плеера:
* /objects/?script=lms&player=mr3020&status=on
* при выключении плеера:
* /objects/?script=lms&player=mr3020&status=off
* при старте проигрывания:
* /objects/?script=lms&player=mr3020&status=play
* при паузе:
* /objects/?script=lms&player=mr3020&status=pause
* при изменении громкости:
* /objects/?script=lms&player=mr3020&status=volume
* Прим.: в этом случае в сценарий также передается параметр "vollevel" со значением текущего уровня громкости плеера.
*
* Описание функций плагина, порядок установки и настройки см. по
* ссылке http://skysilver-lab.github.io/MajorDoMo-LMS-Connect/
*
* Исходный код плагина https://github.com/skysilver-lab/MajorDoMo-LMS-Connect
*
* Copyright (C) 2015 Agaphonov Dmitri aka skysilver [mailto:skysilver.da@gmail.com]
*/
// Если сценарию передан параметр player, то выполняем необходимое,
// иначе - ничего не делаем.
if (isset($params['player'])) {
$player = $params['player'];
// Если сценарию передан параметр status, то сохраним его значение в переменную для дальнейшего использования.
if (isset($params['status'])) {
$playerStatus = $params['status'];
}
// Если сценарий был запущен от имени плеера на роутере TP-Link MR3020,
// то выполним связанные с ним задачи (например, включение/выключение питания усилителя).
if ($player == 'mr3020') {
// Сохраним текущее значение уровня громкости плеера, если его значение было передано в параметрах вызова сценария.
if ((isset($params['vollevel'])) && ($playerStatus == 'volume')) sg('PlayerKitchen.VolumeLevel', $params['vollevel']);
// Узнаем текущий статус реле питания усилителя.
$relayStatus = gg('Relay1Iboard.status');
// Если реле выключено, а от плагина пришли события on или play, то включим питание усилителя.
if ($relayStatus == '0' && ($playerStatus == 'on' || $playerStatus == 'play')) {
clearTimeOut('mr3020offTimer');
cm('Relay1Iboard.turnOn');
say('Колонки на кухне включены.', 0);
}
// Если реле включено, а от плагина пришло событие off, то выключим питание усилителя.
else if ($relayStatus == '1' && $playerStatus == 'off') {
clearTimeOut('mr3020offTimer');
cm('Relay1Iboard.turnOff');
say('Колонки на кухне выключены.', 0);
}
// Если реле включено, а от плагина пришло событие pause, то запустим таймер на автоматическое отключение питания усилителя
// (т.е. если плеер бездействует, то питание отключаем через заданное время).
else if ($relayStatus == '1' && $playerStatus == 'pause') {
clearTimeOut('mr3020offTimer');
//say('Запущен таймер выключения колонок.', 0);
setTimeOut('mr3020offTimer', 'cm("Relay1Iboard.turnOff");say("Колонки на кухне выключены по таймеру.", 0);', 180);
}
// Если реле включено, а от плагина пришли события on или play, то очищаем таймер автоматического отключения питания.
else if ($relayStatus == '1' && ($playerStatus == 'on' || $playerStatus == 'play')) {
clearTimeOut('mr3020offTimer');
}
}
// Если сценарий был запущен от имени плеера на сервере Cubietruck,
// то выполним связанные с ним задачи.
if ($player == 'cubietruck') {
// Сохраним текущее значение уровня громкости плеера, если его значение было передано в параметрах вызова сценария.
if (isset($params['vollevel'])) sg('PlayerBedroom.VolumeLevel', $params['vollevel']);
}
}