diff --git a/xboxone/Dockerfile b/xboxone/Dockerfile index a217cf5..d5d60c9 100644 --- a/xboxone/Dockerfile +++ b/xboxone/Dockerfile @@ -17,6 +17,6 @@ RUN apk add --no-cache jq gcc musl-dev python3-dev libffi-dev openssl-dev python if [[ ! -e /usr/bin/python ]]; then ln -sf /usr/bin/python3 /usr/bin/python; fi && \ rm -r /root/.cache -RUN pip3 install xbox-smartglass-rest==0.9.6 +RUN pip3 install xbox-smartglass-rest==0.9.8 CMD [ "/run.sh" ] diff --git a/xboxone/README.md b/xboxone/README.md index 206fe48..0e73d55 100644 --- a/xboxone/README.md +++ b/xboxone/README.md @@ -89,7 +89,7 @@ media_player: name: Living Room Xbox One ``` -**Note**: _This is just an example, don't copy and past it! Create your own!_ +**Note**: _This is just an example, don't copy and paste it! Create your own!_ ### Option: `platform` diff --git a/xboxone/config.json b/xboxone/config.json index 8637134..35371ec 100644 --- a/xboxone/config.json +++ b/xboxone/config.json @@ -1,6 +1,6 @@ { "name": "Xbox One", - "version": "1.1.0", + "version": "2.0.0", "slug": "xboxone", "description": "Control your Xbox One from your Home Assistant device", "url": "https://github.com/hunterjm/hassio-addons/tree/master/xboxone", diff --git a/xboxone/run.sh b/xboxone/run.sh index b7d9a00..1e28e3c 100644 --- a/xboxone/run.sh +++ b/xboxone/run.sh @@ -1,8 +1,8 @@ #!/bin/bash # Copy over the xbox component -mkdir -p /config/custom_components/media_player -cp -f xboxone.py /config/custom_components/media_player/xboxone.py +mkdir -p /config/custom_components/xboxone +cp -f xboxone.py /config/custom_components/xboxone/media_player.py # Persistent tokens on reboot touch /config/.xbox-token.json diff --git a/xboxone/xboxone.py b/xboxone/xboxone.py index a217b47..90b6e9e 100644 --- a/xboxone/xboxone.py +++ b/xboxone/xboxone.py @@ -9,15 +9,18 @@ - Original code: https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/media_player/firetv.py """ import logging - +import functools import requests import voluptuous as vol from urllib.parse import urljoin from homeassistant.components.media_player import ( - SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, PLATFORM_SCHEMA, + MediaPlayerDevice, PLATFORM_SCHEMA) + +from homeassistant.components.media_player.const import ( + SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, SUPPORT_SELECT_SOURCE, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, - SUPPORT_VOLUME_STEP, SUPPORT_VOLUME_MUTE, SUPPORT_PLAY, MediaPlayerDevice, + SUPPORT_VOLUME_STEP, SUPPORT_VOLUME_MUTE, SUPPORT_PLAY, MEDIA_TYPE_MUSIC, MEDIA_TYPE_VIDEO, MEDIA_TYPE_TVSHOW, MEDIA_TYPE_CHANNEL) from homeassistant.const import ( STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, STATE_UNKNOWN, STATE_ON, @@ -33,7 +36,7 @@ SUPPORT_NEXT_TRACK | SUPPORT_SELECT_SOURCE | SUPPORT_PLAY | \ SUPPORT_VOLUME_STEP | SUPPORT_VOLUME_MUTE -REQUIRED_SERVER_VERSION = '0.9.6' +REQUIRED_SERVER_VERSION = '0.9.8' DEFAULT_SSL = False DEFAULT_HOST = 'localhost' @@ -312,7 +315,11 @@ def _update_volume_controls(self): def poweron(self): try: - response = self.get('/device//poweron').json() + url = '/device//poweron' + params = None + if self._ip: + params = { 'addr': self._ip } + response = self.get(url, params=params).json() if not response.get('success'): _LOGGER.error('Failed to poweron {0}'.format(self.liveid)) return None @@ -542,7 +549,7 @@ def state(self): if playback_state: state = playback_state elif self._xboxone.connected or self._xboxone.available: - if self._xboxone.active_app_type not in ['Application', 'App'] or self._xboxone.active_app == 'Home': + if self._xboxone.active_app_type in ['Application', 'App'] or self._xboxone.active_app == 'Home': state = STATE_ON else: state = STATE_UNKNOWN