mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 12:47:08 +00:00
commit
0cc9555d14
@ -20,7 +20,7 @@ DEPENDENCIES = ['enocean']
|
|||||||
DEFAULT_NAME = 'EnOcean binary sensor'
|
DEFAULT_NAME = 'EnOcean binary sensor'
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
vol.Required(CONF_ID): cv.string,
|
vol.Required(CONF_ID): vol.All(cv.ensure_list, [vol.Coerce(int)]),
|
||||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||||
vol.Optional(CONF_SENSOR_CLASS, default=None): SENSOR_CLASSES_SCHEMA,
|
vol.Optional(CONF_SENSOR_CLASS, default=None): SENSOR_CLASSES_SCHEMA,
|
||||||
})
|
})
|
||||||
|
@ -74,6 +74,7 @@ CACHE-CONTROL: max-age=60
|
|||||||
EXT:
|
EXT:
|
||||||
LOCATION: http://{0}:{1}/description.xml
|
LOCATION: http://{0}:{1}/description.xml
|
||||||
SERVER: FreeRTOS/6.0.5, UPnP/1.0, IpBridge/0.1
|
SERVER: FreeRTOS/6.0.5, UPnP/1.0, IpBridge/0.1
|
||||||
|
hue-bridgeid: 1234
|
||||||
ST: urn:schemas-upnp-org:device:basic:1
|
ST: urn:schemas-upnp-org:device:basic:1
|
||||||
USN: uuid:Socket-1_0-221438K0100073::urn:schemas-upnp-org:device:basic:1
|
USN: uuid:Socket-1_0-221438K0100073::urn:schemas-upnp-org:device:basic:1
|
||||||
|
|
||||||
|
@ -26,8 +26,9 @@ DEPENDENCIES = ['enocean']
|
|||||||
SUPPORT_ENOCEAN = SUPPORT_BRIGHTNESS
|
SUPPORT_ENOCEAN = SUPPORT_BRIGHTNESS
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
vol.Required(CONF_ID): cv.string,
|
vol.Optional(CONF_ID, default=[]): vol.All(cv.ensure_list,
|
||||||
vol.Required(CONF_SENDER_ID): cv.string,
|
[vol.Coerce(int)]),
|
||||||
|
vol.Required(CONF_SENDER_ID): vol.All(cv.ensure_list, [vol.Coerce(int)]),
|
||||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ DEFAULT_NAME = 'EnOcean sensor'
|
|||||||
DEPENDENCIES = ['enocean']
|
DEPENDENCIES = ['enocean']
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
vol.Required(CONF_ID): cv.string,
|
vol.Required(CONF_ID): vol.All(cv.ensure_list, [vol.Coerce(int)]),
|
||||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ DEFAULT_NAME = 'EnOcean Switch'
|
|||||||
DEPENDENCIES = ['enocean']
|
DEPENDENCIES = ['enocean']
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
vol.Required(CONF_ID): cv.string,
|
vol.Required(CONF_ID): vol.All(cv.ensure_list, [vol.Coerce(int)]),
|
||||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
|
|||||||
return False
|
return False
|
||||||
finally:
|
finally:
|
||||||
if response is not None:
|
if response is not None:
|
||||||
yield from response.close()
|
yield from response.release()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
token = data['data']['token']
|
token = data['data']['token']
|
||||||
@ -72,7 +72,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
|
|||||||
return False
|
return False
|
||||||
finally:
|
finally:
|
||||||
if response is not None:
|
if response is not None:
|
||||||
yield from response.close()
|
yield from response.release()
|
||||||
|
|
||||||
yield from async_add_devices(
|
yield from async_add_devices(
|
||||||
HookSmartHome(
|
HookSmartHome(
|
||||||
@ -127,7 +127,7 @@ class HookSmartHome(SwitchDevice):
|
|||||||
|
|
||||||
finally:
|
finally:
|
||||||
if response is not None:
|
if response is not None:
|
||||||
yield from response.close()
|
yield from response.release()
|
||||||
|
|
||||||
_LOGGER.debug("Got: %s", data)
|
_LOGGER.debug("Got: %s", data)
|
||||||
return data['return_value'] == '1'
|
return data['return_value'] == '1'
|
||||||
|
@ -204,7 +204,6 @@ class ActiveConnection:
|
|||||||
self.hass = hass
|
self.hass = hass
|
||||||
self.request = request
|
self.request = request
|
||||||
self.wsock = None
|
self.wsock = None
|
||||||
self.socket_task = None
|
|
||||||
self.event_listeners = {}
|
self.event_listeners = {}
|
||||||
|
|
||||||
def debug(self, message1, message2=''):
|
def debug(self, message1, message2=''):
|
||||||
@ -220,34 +219,6 @@ class ActiveConnection:
|
|||||||
self.debug('Sending', message)
|
self.debug('Sending', message)
|
||||||
self.wsock.send_json(message, dumps=JSON_DUMP)
|
self.wsock.send_json(message, dumps=JSON_DUMP)
|
||||||
|
|
||||||
@callback
|
|
||||||
def _cancel_connection(self, event):
|
|
||||||
"""Cancel this connection."""
|
|
||||||
self.socket_task.cancel()
|
|
||||||
|
|
||||||
@asyncio.coroutine
|
|
||||||
def _call_service_helper(self, msg):
|
|
||||||
"""Helper to call a service and fire complete message."""
|
|
||||||
yield from self.hass.services.async_call(msg['domain'], msg['service'],
|
|
||||||
msg['service_data'], True)
|
|
||||||
try:
|
|
||||||
self.send_message(result_message(msg['id']))
|
|
||||||
except RuntimeError:
|
|
||||||
# Socket has been closed.
|
|
||||||
pass
|
|
||||||
|
|
||||||
@callback
|
|
||||||
def _forward_event(self, iden, event):
|
|
||||||
"""Helper to forward events to websocket."""
|
|
||||||
if event.event_type == EVENT_TIME_CHANGED:
|
|
||||||
return
|
|
||||||
|
|
||||||
try:
|
|
||||||
self.send_message(event_message(iden, event))
|
|
||||||
except RuntimeError:
|
|
||||||
# Socket has been closed.
|
|
||||||
pass
|
|
||||||
|
|
||||||
@asyncio.coroutine
|
@asyncio.coroutine
|
||||||
def handle(self):
|
def handle(self):
|
||||||
"""Handle the websocket connection."""
|
"""Handle the websocket connection."""
|
||||||
@ -255,9 +226,15 @@ class ActiveConnection:
|
|||||||
yield from wsock.prepare(self.request)
|
yield from wsock.prepare(self.request)
|
||||||
|
|
||||||
# Set up to cancel this connection when Home Assistant shuts down
|
# Set up to cancel this connection when Home Assistant shuts down
|
||||||
self.socket_task = asyncio.Task.current_task(loop=self.hass.loop)
|
socket_task = asyncio.Task.current_task(loop=self.hass.loop)
|
||||||
self.hass.bus.async_listen(EVENT_HOMEASSISTANT_STOP,
|
|
||||||
self._cancel_connection)
|
@callback
|
||||||
|
def cancel_connection(event):
|
||||||
|
"""Cancel this connection."""
|
||||||
|
socket_task.cancel()
|
||||||
|
|
||||||
|
unsub_stop = self.hass.bus.async_listen(EVENT_HOMEASSISTANT_STOP,
|
||||||
|
cancel_connection)
|
||||||
|
|
||||||
self.debug('Connected')
|
self.debug('Connected')
|
||||||
|
|
||||||
@ -351,6 +328,8 @@ class ActiveConnection:
|
|||||||
_LOGGER.exception(error)
|
_LOGGER.exception(error)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
|
unsub_stop()
|
||||||
|
|
||||||
for unsub in self.event_listeners.values():
|
for unsub in self.event_listeners.values():
|
||||||
unsub()
|
unsub()
|
||||||
|
|
||||||
@ -363,8 +342,20 @@ class ActiveConnection:
|
|||||||
"""Handle subscribe events command."""
|
"""Handle subscribe events command."""
|
||||||
msg = SUBSCRIBE_EVENTS_MESSAGE_SCHEMA(msg)
|
msg = SUBSCRIBE_EVENTS_MESSAGE_SCHEMA(msg)
|
||||||
|
|
||||||
|
@callback
|
||||||
|
def forward_events(event):
|
||||||
|
"""Helper to forward events to websocket."""
|
||||||
|
if event.event_type == EVENT_TIME_CHANGED:
|
||||||
|
return
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.send_message(event_message(msg['id'], event))
|
||||||
|
except RuntimeError:
|
||||||
|
# Socket has been closed.
|
||||||
|
pass
|
||||||
|
|
||||||
self.event_listeners[msg['id']] = self.hass.bus.async_listen(
|
self.event_listeners[msg['id']] = self.hass.bus.async_listen(
|
||||||
msg['event_type'], partial(self._forward_event, msg['id']))
|
msg['event_type'], forward_events)
|
||||||
|
|
||||||
self.send_message(result_message(msg['id']))
|
self.send_message(result_message(msg['id']))
|
||||||
|
|
||||||
@ -386,7 +377,18 @@ class ActiveConnection:
|
|||||||
"""Handle call service command."""
|
"""Handle call service command."""
|
||||||
msg = CALL_SERVICE_MESSAGE_SCHEMA(msg)
|
msg = CALL_SERVICE_MESSAGE_SCHEMA(msg)
|
||||||
|
|
||||||
self.hass.async_add_job(self._call_service_helper(msg))
|
@asyncio.coroutine
|
||||||
|
def call_service_helper(msg):
|
||||||
|
"""Helper to call a service and fire complete message."""
|
||||||
|
yield from self.hass.services.async_call(
|
||||||
|
msg['domain'], msg['service'], msg['service_data'], True)
|
||||||
|
try:
|
||||||
|
self.send_message(result_message(msg['id']))
|
||||||
|
except RuntimeError:
|
||||||
|
# Socket has been closed.
|
||||||
|
pass
|
||||||
|
|
||||||
|
self.hass.async_add_job(call_service_helper(msg))
|
||||||
|
|
||||||
def handle_get_states(self, msg):
|
def handle_get_states(self, msg):
|
||||||
"""Handle get states command."""
|
"""Handle get states command."""
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"""Constants used by Home Assistant components."""
|
"""Constants used by Home Assistant components."""
|
||||||
MAJOR_VERSION = 0
|
MAJOR_VERSION = 0
|
||||||
MINOR_VERSION = 34
|
MINOR_VERSION = 34
|
||||||
PATCH_VERSION = '2'
|
PATCH_VERSION = '3'
|
||||||
__short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION)
|
__short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION)
|
||||||
__version__ = '{}.{}'.format(__short_version__, PATCH_VERSION)
|
__version__ = '{}.{}'.format(__short_version__, PATCH_VERSION)
|
||||||
REQUIRED_PYTHON_VER = (3, 4, 2)
|
REQUIRED_PYTHON_VER = (3, 4, 2)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user