Блог

PlayStation 4 Pro в HomeKit через Home Assistant

Не так давно в Home Assistant появилась встроенная интеграция PlayStation 4 в виде медиа-плеера, работает очень удобно, показывает во что сейчас рубятся на приставке, сама подгружает обложки игр. Однако раньше в HomeKit она добавлялась просто как выключатель с возможностью удалённо включить/перевести в режим покоя. Недавняя запись, написанная любезным Григорием Абрамовым (grishmanCH), натолкнула меня на мысль попробовать добавить плойку не в качестве выключателя, а в качестве телевизора (поддержка ТВ в HomeKit появилась начиная с версии Home Assistant 0.93).

В чём же принципиальное различие? У телевизора есть поддержка пульта и списка источников. И если пульт на данный момент не функционирует, то список источников наполняется играми установленными на PlayStation, что позволяет в интерфейсе приложения Дом всегда видеть что сейчас запущено на приставке, переключать игру/приложение, как вручную, так и в составе сценариев и автоматизаций HomeKit. Допустим, вы привыкли после работы пошпилить в любимую игру, можно создать HomeKit-сценарий который включит ТВ, выключит основной свет и включит мягкую подсветку, запустит конкретную игру; затем привязать этот сценарий к нажатию на беспроводную кнопку возле хозяйского кресла. Если звучит как план, приступим.

Добавляем PS4 в Home Assistant

Если у вас ещё не добавлена PlayStation в HA, эта часть для вас, если уже всё добавлено, переходите к следующей.

  • Первым делом скачайте из AppStore приложение PS4 Second Screen
  • Откройте в HA раздел настроек, там пункт Интеграции, нажмите + чтобы добавить новую и выберите PlayStation 4, во всплывшем окне нажмите Submit
  • Откройте на телефоне PS4 Second Screen (думаю не нужно говорить, что все устройства должны быть в одной WiFi сети) в появившемся списке должен быть Home Assistant, нажимайте на него, в HA должно всплыть окно, где я рекомендую выбрать ручной режим и указать IP-адрес плойки (позаботьтесь о том чтобы этот адрес никогда не менялся либо в настройках роутера, либо самой PlayStation)
  • Далее на PS4 открывайте Настройки > Настройки подключения мобильного приложения > Добавить устройство
  • Отобразившийся код необходимо ввести в HA и указать регион в котором вы покупаете игры (он будет брать информацию об играх и обложки исходя из этой настройки, имейте в виду)
  • Готово, в списке объектов должен появиться новый media_player.playstation_4 или как вы его называли

Из Home Assistant в HomeKit

Чтобы PS4 появилась в HomeKit нужно внести пару изменений в конфигурационных файлах. Для начала в файле configuration.yaml необходимо убедиться что устройство будет добавлено, потому что по стандарту HA не прокидывает устройства типа media_player. Следует добавить примерно такие строчки:

homekit: filter: include_entities: - media_player.playstation_4 entity_config: media_player.playstation_4: name: Гостиная PlayStation

Последний и самый важный штрих, нужно в файле customize.yaml указать класс устройства tv, чтобы в HomeKit плойка отображалась как телевизор, а не как выключатель:

media_player.playstation_4: device_class: tv

Готово, после перезагрузки PS4 появится в интерфейсе приложения Дом. Привожу примеры как это выглядит в iOS 13, так как пользуюсь бетой и нет возможности сделать скриншоты на старой версии:

Под названием приставки отображается запущенная в данный момент игра.
Поддерживается управление питанием и выбор игры/приложения.

Важные моменты

Список игр в Home Assistant будет автоматически дополняться при первом запуске игры, но чтобы эта игра отобразилась и в списке источников в HomeKit, нужно перезагрузить Home Assistant.

Также заметил что если игра не запущена, но приставка включена, то в списке источников будет указана первая из доступных игр.

Если нет желания видеть в источниках все игры с приставки, можно ограничиться небольшим списком любимых игр, для этого приведите файл customize примерно к следующему виду (названия должны точно повторять то, что указано в списке источников в HA):

media_player.playstation_4: device_class: tv source_list: [God of War,Overcooked,RESIDENT EVIL 2,YouTube]

Если что-то упустил, пишите в комментариях. Всем спасибо.


Спасибо за упоминание!

Спасибо за отличную статью! 

При добавлении интеграции ругается, что не удалось подключиться к порту 987.

Как пробросить порт?


Про порты можете прочитать в официальной документации, там есть решение, зависит от ОС. https://www.home-assistant.io/components/ps4/">Вот ссылка

В том то и дело, что я не понял этот момент в документации. Получается не на стороне роутера нужно порты пробрасывать?

Если через официальное приложение Sony все работает, то на роутере ничего менять не надо. В документации написано что ОС в которую установлен ХА может ограничивать доступ к портам и нужно их доступ для ХА открыть. У меня ХА был в HassOS и сейчас в докере на Raspbian и всё работает без проблем и там и там.

Добрый день! Не подскажите как заставить работать интеграцию ps4 в докере? 

Выдает ошибку: Не удалось подключиться к порту 987. В docker-compose.yml прописан network_mode: host. Полдня уже мучаюсь. До этого завелось только после команды: sudo setcap 'cap_net_bind_service=+ep' <python> из инструкции. Сейчас это не помогает.

Разобрался. 
НА устанавливал по инструкции в которой предполагалось добавлять пользователя Pi в группу докера. И добавлять user: '1000:1000' в композ. По факту получалось этого юзера в контейнере не было. И мне приходилось монтировать поддельный /etc/passwd иначе я получал no user exists for uid 1000...
После того как я убрал user: '1000:1000' и смонтированный /etc/passwd с пользователем pi из docker-compose.yml, все заработало. В контейнере появился рут пользователь. Но я теперь не понимаю зачем в инструкции поступили таким образом. Или есть какой-то смысл не пускать рута в контейнер?

У меня была раньше заведена через on_off в виде свитча и упорно не хотела обновляться через удаление и снова добавление энтити в кит. Помогло только почистить файл с БД ХА, сразу зашла как надо. Может пригодится кому.

Отличная статья! Всё работает, но есть один нюанс: если консоль находится в спящем режиме (статус "standby"), то в HK отображается статус "вкл.", что не совсем корректно. Можно ли как-нибудь приравнять статус "standby" к статусу "off"?   


Вернуться назад
Вернуться назад