fixed get_component() missing 1 required positional argument: 'comp_or_platform'

This commit is contained in:
2018-09-06 17:19:25 +02:00
parent 0ebfa6b58b
commit d0e708d2c5
2 changed files with 11 additions and 7 deletions

View File

@@ -6,7 +6,7 @@
[Shinobi](https://shinobi.video/) is an open source cctv solution.
To enable this component, first copy `custom_components/` inside your Home Assistant config directory and add the Shinobi component and platform, for example in `configuration.yaml`. See https://github.com/moeiscool/Shinobi/wiki/API-Access on how to get your `api_key` and `group_key`. The `ssl` param is optional and defaults to `false`. The white- and blacklist is also optional and defaults to all active monitors being considered. Only one filtering method can be applied at the same time. For now, the name assigned in Shinobi is used to filter cams.
To enable this component, first copy `custom_components/` inside your Home Assistant config directory and add the Shinobi component and platform, for example in `configuration.yaml`. See https://shinobi.video/docs/api on how to get your `api_key` and `group_key`. The `ssl` param is optional and defaults to `false`. The white- and blacklist is also optional and defaults to all active monitors being considered. Only one filtering method can be applied at the same time. For now, the name assigned in Shinobi is used to filter cams.
```

View File

@@ -13,16 +13,19 @@ _LOGGER = logging.getLogger(__name__)
DEPENDENCIES = ['shinobi']
DOMAIN = 'shinobi'
shinobi = loader.get_component('shinobi')
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Optional(CONF_WHITELIST, default=[]): cv.ensure_list,
vol.Optional(CONF_BLACKLIST, default=[]): cv.ensure_list
})
shinobi = None
@asyncio.coroutine
def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
global shinobi
shinobi = hass.components.shinobi
all_monitors = shinobi.get_all_started_monitors()
if not all_monitors:
@@ -54,7 +57,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
CONF_MJPEG_URL: shinobi.monitor_stream_url(monitor['mid']),
CONF_STILL_IMAGE_URL: shinobi.monitor_still_url(monitor['mid'])
}
cameras.append(ShinobiCamera(hass, device_info, monitor))
cameras.append(ShinobiCamera(hass, shinobi, device_info, monitor))
if not cameras:
_LOGGER.warning('No active cameras found')
@@ -66,9 +69,10 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
class ShinobiCamera(MjpegCamera):
"""Representation of a Shinobi Monitor Stream."""
def __init__(self, hass, device_info, monitor):
def __init__(self, hass, shinobi, device_info, monitor):
"""Initialize as a subclass of MjpegCamera."""
super().__init__(hass, device_info)
self.shinobi = shinobi
self._monitor_id = monitor['mid']
self._is_recording = None
@@ -81,13 +85,13 @@ class ShinobiCamera(MjpegCamera):
"""Update our recording state from the Shinobi API."""
_LOGGER.debug('Updating camera state for monitor {}'.format(self._monitor_id))
status_response = shinobi.get_monitor_state(self._monitor_id)
status_response = self.shinobi.get_monitor_state(self._monitor_id)
if not status_response:
_LOGGER.warning('Could not get status for monitor {}'.format(self._monitor_id))
return
_LOGGER.debug('Monitor {} is in status {}'.format(self._monitor_id, status_response['mode']))
self._is_recording = status_response.get('status') == shinobi.SHINOBI_CAM_STATE['RECORDING']
self._is_recording = status_response.get('status') == self.shinobi.SHINOBI_CAM_STATE['RECORDING']
@property
def is_recording(self):