Sonos подключение

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

AndreyZak
Сообщения: 24
Зарегистрирован: Пт окт 16, 2015 8:47 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Sonos подключение

Сообщение AndreyZak » Вт ноя 17, 2015 9:58 pm

Здравствуйте уважаемые форумчане. Подскажите пожалуйста, как правильно использовать(подключить) коды с Github? У меня есть колонка Sonos Play:1, на Github нашел коды PHP для управления колонкой, но вот как их правильно внедрить в систему пока не знаю. Есть предположение, что нужно создать класс с методами и свойствами, создать объект(мою колонку), но куда вписать данные коды не пойму. Помогите разобраться. Спасибо.
Ссылка на GitHub с кодом:https://github.com/DjMomo/sonos
AndreyZak
Сообщения: 24
Зарегистрирован: Пт окт 16, 2015 8:47 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Sonos подключение

Сообщение AndreyZak » Вт ноя 17, 2015 11:29 pm

Ни у кого нет Sonos :shock:
Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск
Благодарил (а): 18 раз
Поблагодарили: 94 раза

Re: Sonos подключение

Сообщение Dark_Veter » Ср ноя 18, 2015 10:50 am

Колонки нету, могу примерно рассказать. Файл sonos.class.php (с гитхаба) кидаешь в lib/hardware/. Затем создаешь класс, свойство с ip колонки (например SonosIp), свойство с громкостью (например volume). Создаешь нужные тебе методы, например getVolume, в коде методы пишешь:

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

include_once(ROOT.'lib/hardware/sonos.class.php');
$sonos_1 = new SonosPHPController($this->getProperty("SonosIp"));
$volume = $sonos_1->GetVolume();
$this->setProperty("volume", $volume); 
Ну и по анологии остальное, setVolume, и т.д. Создаешь объект класса (например sonos1), Заполняешь свойство SonosIp и пользуешь (например так:

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

callMethod("sonos1.getVolume"); 
)
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
AndreyZak
Сообщения: 24
Зарегистрирован: Пт окт 16, 2015 8:47 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Sonos подключение

Сообщение AndreyZak » Ср ноя 18, 2015 11:05 am

Спасибо, вечером буду экспериментировать!!!
AndreyZak
Сообщения: 24
Зарегистрирован: Пт окт 16, 2015 8:47 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Sonos подключение

Сообщение AndreyZak » Ср ноя 18, 2015 12:05 pm

Не дождался вечера :D , настроил удаленно.
То что вы написали, полностью работает. В MD в свойстве Volume отобразилась текущая громкость колонки.
Извините за наглость, но можно еще пару вопросов про заполнение свойств и методов?
1. Если я создам метод setVolume, он будет относиться к свойству Volume? Или он будет независимый?
2. Если мне нужно создать методы, допустим Play, Stop, мне надо будет создать сначала свойства с такими же именами? Или создать одно свойство, ну скажем, PlayBack и мои методы будут относится к нему?
3. Ну и уж совсем наглость, не могли бы вы накидать для примера код еще какого нибудь метода, setVolume, Play или Stop, для наглядного примера, что на что и как меняется.
Спасибо!
Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск
Благодарил (а): 18 раз
Поблагодарили: 94 раза

Re: Sonos подключение

Сообщение Dark_Veter » Ср ноя 18, 2015 1:30 pm

Свойства в основном нужны для хранения каких-то данных, методы для выполнения действий. Так что какие свойства и методы использовать зависит от ваших потребностей :-)
1. По хорошему метод setVolume должен использовать свойство volume и выглядеть будет примерно так:

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

if ($params['volume']) {
  include_once(ROOT.'lib/hardware/sonos.class.php');
  $sonos_1 = new SonosPHPController($this->getProperty("SonosIp"));
  $volume = $this->getProperty("volume");
  if ($volume != $params['volume']) {
    $this->setProperty("volume", $params['volume']);
    $sonos_1 = $sonos_1->SetVolume($params['volume']);
  }
}  
Использовать так:

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

callMethod('sonos1.setVolume',array('volume'=>50)); 
2. Это уже от ваших хотелок зависит. Если хотите хранить значение, допустим play, тогда создавайте свойство. Но можно и без него обойтись.
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
AndreyZak
Сообщения: 24
Зарегистрирован: Пт окт 16, 2015 8:47 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Sonos подключение

Сообщение AndreyZak » Ср ноя 18, 2015 1:38 pm

Сейчас мозг лопнет :lol:
AndreyZak
Сообщения: 24
Зарегистрирован: Пт окт 16, 2015 8:47 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Sonos подключение

Сообщение AndreyZak » Ср ноя 18, 2015 1:43 pm

Работает, ура.
AndreyZak
Сообщения: 24
Зарегистрирован: Пт окт 16, 2015 8:47 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Sonos подключение

Сообщение AndreyZak » Ср ноя 18, 2015 1:52 pm

Скажите для какой именно цели в данной строчке

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

callMethod('sonos1.setVolume',array('volume'=>50)); 
используется массив? Для плавного увеличения громкости?
Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск
Благодарил (а): 18 раз
Поблагодарили: 94 раза

Re: Sonos подключение

Сообщение Dark_Veter » Ср ноя 18, 2015 3:16 pm

Нет, это просто массив с параметрами, т.е. мы просто передаем громкость. Там всего один элемент, но может быть несколько.
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
Ответить