From 50b492c64a75e1523de058f7fd5d829b1b51f5c7 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen <Paulus@PaulusSchoutsen.nl> Date: Tue, 29 Apr 2014 00:30:31 -0700 Subject: [PATCH] Remote instances are now 100% operational --- README.md | 217 +++++---- docs/architecture-remote.png | Bin 0 -> 79012 bytes docs/architecture.png | Bin 33778 -> 32018 bytes home-assistant.conf.default | 2 +- homeassistant/__init__.py | 89 ++-- homeassistant/bootstrap.py | 9 +- .../{httpinterface => http}/__init__.py | 184 +++++--- .../www_static/favicon.ico | Bin .../www_static/style.css | 0 homeassistant/remote.py | 424 +++++++++++------- homeassistant/test.py | 212 ++++----- start.py | 4 +- 12 files changed, 691 insertions(+), 450 deletions(-) create mode 100644 docs/architecture-remote.png rename homeassistant/components/{httpinterface => http}/__init__.py (80%) rename homeassistant/components/{httpinterface => http}/www_static/favicon.ico (100%) rename homeassistant/components/{httpinterface => http}/www_static/style.css (100%) diff --git a/README.md b/README.md index 5ae5de1cf84..f52bc381f22 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,86 @@ Installation instructions Done. Start it now by running `python start.py` +Architecture +------------ +The core of Home Assistant exists of three parts; an EventBus for firing events, a StateMachine that keeps track of the state of things and a ServiceRegistry to manage services. + + + +For example to control the lights there are two components. One is the device_tracker that polls the wireless router for connected devices and updates the state of the tracked devices in the State Machine to be either 'Home' or 'Not Home'. + +When a state is changed a state_changed event is fired for which the device_sun_light_trigger component is listening. Based on the new state of the device combined with the state of the sun it will decide if it should turn the lights on or off: + + In the event that the state of device 'Paulus Nexus 5' changes to the 'Home' state: + If the sun has set and the lights are not on: + Turn on the lights + + In the event that the combined state of all tracked devices changes to 'Not Home': + If the lights are on: + Turn off the lights + + In the event of the sun setting: + If the lights are off and the combined state of all tracked device equals 'Home': + Turn on the lights + +By using the Bus as a central communication hub between components it is easy to replace components or add functionality. For example if you would want to change the way devices are detected you only have to write a component that updates the device states in the State Machine. + +### Components + +**sun** +Tracks the state of the sun and when the next sun rising and setting will occur. +Depends on: latitude and longitude +Action: maintains state of `weather.sun` including attributes `next_rising` and `next_setting` + +**device_tracker** +Keeps track of which devices are currently home. +Action: sets the state per device and maintains a combined state called `all_devices`. Keeps track of known devices in the file `known_devices.csv`. + +**Light** +Keeps track which lights are turned on and can control the lights. + +**WeMo** +Keeps track which WeMo switches are in the network and allows you to control them. + +**device_sun_light_trigger** +Turns lights on or off using a light control component based on state of the sun and devices that are home. +Depends on: light control, track_sun, DeviceTracker +Action: + * Turns lights off when all devices leave home. + * Turns lights on when a device is home while sun is setting. + * Turns lights on when a device gets home after sun set. + +Registers services `light_control/turn_light_on` and `light_control/turn_light_off` to turn a or all lights on or off. + +Optional service data: + - `light_id` - only act on specific light. Else targets all. + - `transition_seconds` - seconds to take to swithc to new state. + +**chromecast** +Registers three services to start playing YouTube video's on the ChromeCast. + +Service `chromecast/play_youtube_video` starts playing the specified video on the YouTube app on the ChromeCast. Specify video using `video` in service_data. + +Service `chromecast/start_fireplace` will start a YouTube movie simulating a fireplace and the `chromecast/start_epic_sax` service will start playing Epic Sax Guy 10h version. + +**media_buttons** +Registers services that will simulate key presses on the keyboard. It currently offers the following Buttons as a Service (BaaS): `keyboard/volume_up`, `keyboard/volume_down` and `keyboard/media_play_pause` +This actor depends on: PyUserInput + +**downloader** +Registers service `downloader/download_file` that will download files. File to download is specified in the `url` field in the service data. + +**browser** +Registers service `browser/browse_url` that opens `url` as specified in event_data in the system default browser. + +### Multiple connected instances + +Home Assistant supports running multiple synchronzied instances using a master-slave model. Slaves forward all local events fired and states set to the master instance which will then replicate it to each slave. + +Because each slave maintains it's own ServiceRegistry it is possible to have multiple slaves respond to one service call. + + + Web interface and API --------------------- Home Assistent runs a webserver accessible on port 8123. @@ -50,6 +130,8 @@ Home Assistent runs a webserver accessible on port 8123. A screenshot of the debug interface:  +In the package `homeassistant.remote` a Python API on top of the HTTP API can be found. + All API calls have to be accompanied by an 'api_password' parameter (as specified in `home-assistant.conf`) and will return JSON encoded objects. If successful calls will return status code 200 or 201. @@ -61,19 +143,6 @@ Other status codes that can occur are: The api supports the following actions: -**/api/states - GET**<br> -Returns a list of entity ids for which a state is available - -```json -{ - "entity_ids": [ - "Paulus_Nexus_4", - "weather.sun", - "all_devices" - ] -} -``` - **/api/events - GET**<br> Returns a dict with as keys the events and as value the number of listeners. @@ -103,6 +172,29 @@ Returns a dict with as keys the domain and as value a list of published services } ``` +**/api/states - GET**<br> +Returns a dict with as keys the entity_ids and as value the state. + +```json +{ + "sun.sun": { + "attributes": { + "next_rising": "07:04:15 29-10-2013", + "next_setting": "18:00:31 29-10-2013" + }, + "entity_id": "sun.sun", + "last_changed": "23:24:33 28-10-2013", + "state": "below_horizon" + }, + "process.Dropbox": { + "attributes": {}, + "entity_id": "process.Dropbox", + "last_changed": "23:24:33 28-10-2013", + "state": "on" + } +} +``` + **/api/states/<entity_id>** - GET<br> Returns the current state from an entity @@ -112,7 +204,7 @@ Returns the current state from an entity "next_rising": "07:04:15 29-10-2013", "next_setting": "18:00:31 29-10-2013" }, - "entity_id": "weather.sun", + "entity_id": "sun.sun", "last_changed": "23:24:33 28-10-2013", "state": "below_horizon" } @@ -155,6 +247,31 @@ optional parameter: service_data - JSON encoded object } ``` +**/api/event_forwarding** - POST<br> +Setup event forwarding to another Home Assistant instance.<br> +parameter: host - string<br> +parameter: api_password - string<br> +optional parameter: port - int<br> + +```json +{ + "message": "Event forwarding setup." +} +``` + +**/api/event_forwarding** - DELETE<br> +Cancel event forwarding to another Home Assistant instance.<br> +parameter: host - string<br> +optional parameter: port - int<br> + +If your client does not support DELETE HTTP requests you can add an optional attribute _METHOD and set its value to DELETE. + +```json +{ + "message": "Event forwarding cancelled." +} +``` + Android remote control ---------------------- @@ -166,75 +283,3 @@ An app has been built using [Tasker for Android](https://play.google.com/store/a The [APK](https://raw.github.com/balloob/home-assistant/master/android-tasker/Home_Assistant.apk) and [Tasker project XML](https://raw.github.com/balloob/home-assistant/master/android-tasker/Home_Assistant.prj.xml) can be found in [/android-tasker/](https://github.com/balloob/home-assistant/tree/master/android-tasker)  - -Architecture ------------- -The core of Home Assistant exists of two parts; a Bus for calling services and firing events and a State Machine that keeps track of the state of things. - - - -For example to control the lights there are two components. One is the device_tracker that polls the wireless router for connected devices and updates the state of the tracked devices in the State Machine to be either 'Home' or 'Not Home'. - -When a state is changed a state_changed event is fired for which the device_sun_light_trigger component is listening. Based on the new state of the device combined with the state of the sun it will decide if it should turn the lights on or off: - - In the event that the state of device 'Paulus Nexus 5' changes to the 'Home' state: - If the sun has set and the lights are not on: - Turn on the lights - - In the event that the combined state of all tracked devices changes to 'Not Home': - If the lights are on: - Turn off the lights - - In the event of the sun setting: - If the lights are off and the combined state of all tracked device equals 'Home': - Turn on the lights - -By using the Bus as a central communication hub between components it is easy to replace components or add functionality. For example if you would want to change the way devices are detected you only have to write a component that updates the device states in the State Machine. - -### Components - -**sun** -Tracks the state of the sun and when the next sun rising and setting will occur. -Depends on: latitude and longitude -Action: maintains state of `weather.sun` including attributes `next_rising` and `next_setting` - -**device_tracker** -Keeps track of which devices are currently home. -Action: sets the state per device and maintains a combined state called `all_devices`. Keeps track of known devices in the file `known_devices.csv`. - -**Light** -Keeps track which lights are turned on and can control the lights. - -**WeMo** -Keeps track which WeMo switches are in the network and allows you to control them. - -**device_sun_light_trigger** -Turns lights on or off using a light control component based on state of the sun and devices that are home. -Depends on: light control, track_sun, DeviceTracker -Action: - * Turns lights off when all devices leave home. - * Turns lights on when a device is home while sun is setting. - * Turns lights on when a device gets home after sun set. - -Registers services `light_control/turn_light_on` and `light_control/turn_light_off` to turn a or all lights on or off. - -Optional service data: - - `light_id` - only act on specific light. Else targets all. - - `transition_seconds` - seconds to take to swithc to new state. - -**chromecast** -Registers three services to start playing YouTube video's on the ChromeCast. - -Service `chromecast/play_youtube_video` starts playing the specified video on the YouTube app on the ChromeCast. Specify video using `video` in service_data. - -Service `chromecast/start_fireplace` will start a YouTube movie simulating a fireplace and the `chromecast/start_epic_sax` service will start playing Epic Sax Guy 10h version. - -**media_buttons** -Registers services that will simulate key presses on the keyboard. It currently offers the following Buttons as a Service (BaaS): `keyboard/volume_up`, `keyboard/volume_down` and `keyboard/media_play_pause` -This actor depends on: PyUserInput - -**downloader** -Registers service `downloader/download_file` that will download files. File to download is specified in the `url` field in the service data. - -**browser** -Registers service `browser/browse_url` that opens `url` as specified in event_data in the system default browser. diff --git a/docs/architecture-remote.png b/docs/architecture-remote.png new file mode 100644 index 0000000000000000000000000000000000000000..3109c92184675a0542757e43a006fe019ae50b50 GIT binary patch literal 79012 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 literal 0 HcmV?d00001 diff --git a/docs/architecture.png b/docs/architecture.png index 927410ee87575f54c9608431a3f411b7cbecf180..8a53f65c7cac9e399f43b9b821d7c2d18a6a66f8 100644 GIT binary patch literal 32018 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	Qcj%RiU00{{Xc%G=l}n3 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 literal 33778 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 M>FVdQ&MBb@0FZxo@c;k- diff --git a/home-assistant.conf.default b/home-assistant.conf.default index d0ae2c4738c..5227d34ef99 100644 --- a/home-assistant.conf.default +++ b/home-assistant.conf.default @@ -2,7 +2,7 @@ latitude=32.87336 longitude=-117.22743 -[httpinterface] +[http] api_password=mypass [light.hue] diff --git a/homeassistant/__init__.py b/homeassistant/__init__.py index 75204036e17..b7962442501 100644 --- a/homeassistant/__init__.py +++ b/homeassistant/__init__.py @@ -9,6 +9,7 @@ of entities and react to changes. import time import logging import threading +import enum import datetime as dt import functools as ft @@ -40,24 +41,21 @@ class HomeAssistant(object): """ Core class to route all communication to right components. """ def __init__(self): - self._pool = pool = _create_worker_pool() + self._pool = pool = create_worker_pool() self.bus = EventBus(pool) - self.states = StateMachine(self.bus) self.services = ServiceRegistry(self.bus, pool) + self.states = StateMachine(self.bus) - def start(self, non_blocking=False): - """ Start home assistant. - Set non_blocking to True if you don't want this method to block - as long as Home Assistant is running. """ - + def start(self): + """ Start home assistant. """ Timer(self) self.bus.fire(EVENT_HOMEASSISTANT_START) - if non_blocking: - return - + def block_till_stopped(self): + """ Will register service homeassistant/stop and + will block until called. """ request_shutdown = threading.Event() self.services.register(DOMAIN, SERVICE_HOMEASSISTANT_STOP, @@ -96,6 +94,7 @@ class HomeAssistant(object): def state_listener(event): """ The listener that listens for specific state changes. """ if entity_id == event.data['entity_id'] and \ + 'old_state' in event.data and \ _matcher(event.data['old_state'].state, from_state) and \ _matcher(event.data['new_state'].state, to_state): @@ -235,7 +234,7 @@ class JobPriority(util.OrderedEnum): return JobPriority.EVENT_DEFAULT -def _create_worker_pool(thread_count=POOL_NUM_THREAD): +def create_worker_pool(thread_count=POOL_NUM_THREAD): """ Creates a worker pool to be used. """ logger = logging.getLogger(__name__) @@ -264,22 +263,37 @@ def _create_worker_pool(thread_count=POOL_NUM_THREAD): return util.ThreadPool(thread_count, job_handler, busy_callback) +class EventOrigin(enum.Enum): + """ Distinguish between origin of event. """ + # pylint: disable=no-init + + local = "LOCAL" + remote = "REMOTE" + + def __str__(self): + return self.value + + # pylint: disable=too-few-public-methods class Event(object): """ Represents an event within the Bus. """ - __slots__ = ['event_type', 'data'] + __slots__ = ['event_type', 'data', 'origin'] - def __init__(self, event_type, data=None): + def __init__(self, event_type, data=None, origin=EventOrigin.local): self.event_type = event_type self.data = data or {} + self.origin = origin def __repr__(self): + # pylint: disable=maybe-no-member if self.data: - return "<Event {}: {}>".format( - self.event_type, util.repr_helper(self.data)) + return "<Event {}[{}]: {}>".format( + self.event_type, self.origin.value[0], + util.repr_helper(self.data)) else: - return "<Event {}>".format(self.event_type) + return "<Event {}[{}]>".format(self.event_type, + self.origin.value[0]) class EventBus(object): @@ -291,7 +305,7 @@ class EventBus(object): self._listeners = {} self._logger = logging.getLogger(__name__) self._lock = threading.Lock() - self._pool = pool or _create_worker_pool() + self._pool = pool or create_worker_pool() @property def listeners(self): @@ -302,7 +316,7 @@ class EventBus(object): return {key: len(self._listeners[key]) for key in self._listeners} - def fire(self, event_type, event_data=None): + def fire(self, event_type, event_data=None, origin=EventOrigin.local): """ Fire an event. """ with self._lock: # Copy the list of the current listeners because some listeners @@ -311,7 +325,7 @@ class EventBus(object): get = self._listeners.get listeners = get(MATCH_ALL, []) + get(event_type, []) - event = Event(event_type, event_data) + event = Event(event_type, event_data, origin) self._logger.info("Bus:Handling {}".format(event)) @@ -390,7 +404,9 @@ class State(object): """ Static method to create a state from a dict. Ensures: state == State.from_json_dict(state.to_json_dict()) """ - if 'entity_id' not in json_dict and 'state' not in json_dict: + if not (json_dict and + 'entity_id' in json_dict and + 'state' in json_dict): return None last_changed = json_dict.get('last_changed') @@ -429,6 +445,11 @@ class StateMachine(object): """ List of entity ids that are being tracked. """ return list(self._states.keys()) + def all(self): + """ Returns a dict mapping all entity_ids to their state. """ + return {entity_id: state.copy() for entity_id, state + in self._states.items()} + def get(self, entity_id): """ Returns the state of the specified entity. """ state = self._states.get(entity_id) @@ -456,24 +477,22 @@ class StateMachine(object): attributes = attributes or {} with self._lock: - if entity_id in self._states: - old_state = self._states[entity_id] + old_state = self._states.get(entity_id) - if old_state.state != new_state or \ - old_state.attributes != attributes: + # If state did not exist or is different, set it + if not old_state or \ + old_state.state != new_state or \ + old_state.attributes != attributes: - state = self._states[entity_id] = \ - State(entity_id, new_state, attributes) + state = self._states[entity_id] = \ + State(entity_id, new_state, attributes) - self._bus.fire(EVENT_STATE_CHANGED, - {'entity_id': entity_id, - 'old_state': old_state, - 'new_state': state}) + event_data = {'entity_id': entity_id, 'new_state': state} - else: - # If state did not exist yet - self._states[entity_id] = State(entity_id, new_state, - attributes) + if old_state: + event_data['old_state'] = old_state + + self._bus.fire(EVENT_STATE_CHANGED, event_data) # pylint: disable=too-few-public-methods @@ -501,7 +520,7 @@ class ServiceRegistry(object): def __init__(self, bus, pool=None): self._services = {} self._lock = threading.Lock() - self._pool = pool or _create_worker_pool() + self._pool = pool or create_worker_pool() bus.listen(EVENT_CALL_SERVICE, self._event_to_service_call) @property diff --git a/homeassistant/bootstrap.py b/homeassistant/bootstrap.py index 7f63d725964..5d089aa31c6 100644 --- a/homeassistant/bootstrap.py +++ b/homeassistant/bootstrap.py @@ -194,13 +194,12 @@ def from_config_file(config_path, enable_logging=True): add_status("Keyboard", load_module('keyboard').setup(hass)) # Init HTTP interface - if has_opt("httpinterface", "api_password"): - httpinterface = load_module('httpinterface') + if has_opt("http", "api_password"): + http = load_module('http') - httpinterface.HTTPInterface( - hass, get_opt("httpinterface", "api_password")) + http.setup(hass, get_opt("http", "api_password")) - add_status("HTTPInterface", True) + add_status("HTTP", True) # Init groups if has_section("group"): diff --git a/homeassistant/components/httpinterface/__init__.py b/homeassistant/components/http/__init__.py similarity index 80% rename from homeassistant/components/httpinterface/__init__.py rename to homeassistant/components/http/__init__.py index be20e5be228..2cd5a67f3f4 100644 --- a/homeassistant/components/httpinterface/__init__.py +++ b/homeassistant/components/http/__init__.py @@ -73,13 +73,13 @@ import logging import re import os from http.server import BaseHTTPRequestHandler, HTTPServer +from socketserver import ThreadingMixIn from urllib.parse import urlparse, parse_qs import homeassistant as ha +import homeassistant.remote as rem import homeassistant.util as util -SERVER_PORT = 8123 - HTTP_OK = 200 HTTP_CREATED = 201 HTTP_MOVED_PERMANENTLY = 301 @@ -92,46 +92,49 @@ HTTP_UNPROCESSABLE_ENTITY = 422 URL_ROOT = "/" URL_CHANGE_STATE = "/change_state" URL_FIRE_EVENT = "/fire_event" - -URL_API_STATES = "/api/states" -URL_API_STATES_ENTITY = "/api/states/{}" -URL_API_EVENTS = "/api/events" -URL_API_EVENTS_EVENT = "/api/events/{}" -URL_API_SERVICES = "/api/services" -URL_API_SERVICES_SERVICE = "/api/services/{}/{}" +URL_CALL_SERVICE = "/call_service" URL_STATIC = "/static/{}" -class HTTPInterface(threading.Thread): - """ Provides an HTTP interface for Home Assistant. """ +def setup(hass, api_password, server_port=None, server_host=None): + """ Sets up the HTTP API and debug interface. """ + server_port = server_port or rem.SERVER_PORT + + # If no server host is given, accept all incoming requests + server_host = server_host or '0.0.0.0' - # pylint: disable=too-many-arguments - def __init__(self, hass, api_password, server_port=None, server_host=None): - threading.Thread.__init__(self) + server = HomeAssistantHTTPServer((server_host, server_port), + RequestHandler, hass, api_password) - self.daemon = True + hass.listen_once_event( + ha.EVENT_HOMEASSISTANT_START, + lambda event: + threading.Thread(target=server.start, daemon=True).start()) - server_port = server_port or SERVER_PORT - # If no server host is given, accept all incoming requests - server_host = server_host or '0.0.0.0' +class HomeAssistantHTTPServer(ThreadingMixIn, HTTPServer): + """ Handle HTTP requests in a threaded fashion. """ - self.server = HTTPServer((server_host, server_port), RequestHandler) + def __init__(self, server_address, RequestHandlerClass, + hass, api_password): + super().__init__(server_address, RequestHandlerClass) - self.server.flash_message = None - self.server.logger = logging.getLogger(__name__) - self.server.hass = hass - self.server.api_password = api_password + self.hass = hass + self.api_password = api_password + self.logger = logging.getLogger(__name__) - hass.listen_once_event(ha.EVENT_HOMEASSISTANT_START, - lambda event: self.start()) + # To store flash messages between sessions + self.flash_message = None - def run(self): - """ Start the HTTP interface. """ - self.server.logger.info("Starting") + # We will lazy init this one if needed + self.event_forwarder = None - self.server.serve_forever() + def start(self): + """ Starts the server. """ + self.logger.info("Starting") + + self.serve_forever() # pylint: disable=too-many-public-methods @@ -139,13 +142,15 @@ class RequestHandler(BaseHTTPRequestHandler): """ Handles incoming HTTP requests """ PATHS = [ # debug interface - ('GET', '/', '_handle_get_root'), - ('POST', re.compile(r'/change_state'), '_handle_change_state'), - ('POST', re.compile(r'/fire_event'), '_handle_fire_event'), - ('POST', re.compile(r'/call_service'), '_handle_call_service'), + ('GET', URL_ROOT, '_handle_get_root'), + # These get compiled as RE because these methods are reused + # by other urls that use url parameters + ('POST', re.compile(URL_CHANGE_STATE), '_handle_change_state'), + ('POST', re.compile(URL_FIRE_EVENT), '_handle_fire_event'), + ('POST', re.compile(URL_CALL_SERVICE), '_handle_call_service'), # /states - ('GET', '/api/states', '_handle_get_api_states'), + ('GET', rem.URL_API_STATES, '_handle_get_api_states'), ('GET', re.compile(r'/api/states/(?P<entity_id>[a-zA-Z\._0-9]+)'), '_handle_get_api_states_entity'), @@ -154,19 +159,24 @@ class RequestHandler(BaseHTTPRequestHandler): '_handle_change_state'), # /events - ('GET', '/api/events', '_handle_get_api_events'), + ('GET', rem.URL_API_EVENTS, '_handle_get_api_events'), ('POST', re.compile(r'/api/events/(?P<event_type>[a-zA-Z\._0-9]+)'), '_handle_fire_event'), # /services - ('GET', '/api/services', '_handle_get_api_services'), + ('GET', rem.URL_API_SERVICES, '_handle_get_api_services'), ('POST', re.compile((r'/api/services/' r'(?P<domain>[a-zA-Z\._0-9]+)/' r'(?P<service>[a-zA-Z\._0-9]+)')), '_handle_call_service'), + # /event_forwarding + ('POST', rem.URL_API_EVENT_FORWARD, '_handle_post_api_event_forward'), + ('DELETE', rem.URL_API_EVENT_FORWARD, + '_handle_delete_api_event_forward'), + # Statis files ('GET', re.compile(r'/static/(?P<file>[a-zA-Z\._\-0-9/]+)'), '_handle_get_static') @@ -193,6 +203,9 @@ class RequestHandler(BaseHTTPRequestHandler): except KeyError: api_password = '' + if '_METHOD' in data: + method = data['_METHOD'][0] + if url.path.startswith('/api/'): self.use_json = True @@ -327,11 +340,9 @@ class RequestHandler(BaseHTTPRequestHandler): "<th>Attributes</th><th>Last Changed</th>" "</tr>").format(self.server.api_password)) - for entity_id in \ - sorted(self.server.hass.states.entity_ids, - key=lambda key: key.lower()): - - state = self.server.hass.states.get(entity_id) + for entity_id, state in \ + sorted(self.server.hass.states.all().items(), + key=lambda item: item[0].lower()): attributes = "<br>".join( ["{}: {}".format(attr, state.attributes[attr]) @@ -512,7 +523,7 @@ class RequestHandler(BaseHTTPRequestHandler): self._write_json(state.as_dict(), status_code=HTTP_CREATED, location= - URL_API_STATES_ENTITY.format(entity_id)) + rem.URL_API_STATES_ENTITY.format(entity_id)) else: self._message( "State of {} changed to {}".format(entity_id, new_state)) @@ -534,21 +545,33 @@ class RequestHandler(BaseHTTPRequestHandler): This handles the following paths: /fire_event /api/events/<event_type> + + Events from /api are threated as remote events. """ try: try: event_type = path_match.group('event_type') + event_origin = ha.EventOrigin.remote except IndexError: # If group event_type does not exist in path_match event_type = data['event_type'][0] + event_origin = ha.EventOrigin.local - try: + if 'event_data' in data: event_data = json.loads(data['event_data'][0]) - except KeyError: - # Happens if key 'event_data' does not exist + else: event_data = None - self.server.hass.bus.fire(event_type, event_data) + # Special case handling for event STATE_CHANGED + # We will try to convert state dicts back to State objects + if event_type == ha.EVENT_STATE_CHANGED and event_data: + for key in ('old_state', 'new_state'): + state = ha.State.from_dict(event_data.get(key)) + + if state: + event_data[key] = state + + self.server.hass.bus.fire(event_type, event_data, event_origin) self._message("Event {} fired.".format(event_type)) @@ -598,9 +621,8 @@ class RequestHandler(BaseHTTPRequestHandler): # pylint: disable=unused-argument def _handle_get_api_states(self, path_match, data): - """ Returns the entitie ids which state are being tracked. """ - self._write_json( - {'entity_ids': list(self.server.hass.states.entity_ids)}) + """ Returns a dict containing all entity ids and their state. """ + self._write_json(self.server.hass.states.all()) # pylint: disable=unused-argument def _handle_get_api_states_entity(self, path_match, data): @@ -609,10 +631,9 @@ class RequestHandler(BaseHTTPRequestHandler): state = self.server.hass.states.get(entity_id) - try: - self._write_json(state.as_dict()) - except AttributeError: - # If state for entity_id does not exist + if state: + self._write_json(state) + else: self._message("State does not exist.", HTTP_UNPROCESSABLE_ENTITY) def _handle_get_api_events(self, path_match, data): @@ -623,6 +644,60 @@ class RequestHandler(BaseHTTPRequestHandler): """ Handles getting overview of services. """ self._write_json({'services': self.server.hass.services.services}) + def _handle_post_api_event_forward(self, path_match, data): + """ Handles adding an event forwarding target. """ + + try: + host = data['host'][0] + api_password = data['api_password'][0] + + port = int(data['port'][0]) if 'port' in data else None + + if self.server.event_forwarder is None: + self.server.event_forwarder = \ + rem.EventForwarder(self.server.hass) + + api = rem.API(host, api_password, port) + + self.server.event_forwarder.connect(api) + + self._message("Event forwarding setup.") + + except KeyError: + # Occurs if domain or service does not exist in data + self._message("No host or api_password received.", + HTTP_BAD_REQUEST) + + except ValueError: + # Occurs during error parsing port + self._message( + "Invalid value received for port", HTTP_UNPROCESSABLE_ENTITY) + + def _handle_delete_api_event_forward(self, path_match, data): + """ Handles deleting an event forwarding target. """ + + try: + host = data['host'][0] + + port = int(data['port'][0]) if 'port' in data else None + + if self.server.event_forwarder is not None: + api = rem.API(host, None, port) + + self.server.event_forwarder.disconnect(api) + + self._message("Event forwarding cancelled.") + + except KeyError: + # Occurs if domain or service does not exist in data + self._message("No host or api_password received.", + HTTP_BAD_REQUEST) + + except ValueError: + # Occurs during error parsing port + self._message( + "Invalid value received for port", HTTP_UNPROCESSABLE_ENTITY) + def _handle_get_static(self, path_match, data): """ Returns a static file. """ req_file = util.sanitize_filename(path_match.group('file')) @@ -680,4 +755,5 @@ class RequestHandler(BaseHTTPRequestHandler): if data: self.wfile.write( - json.dumps(data, indent=4, sort_keys=True).encode("UTF-8")) + json.dumps(data, indent=4, sort_keys=True, + cls=rem.JSONEncoder).encode("UTF-8")) diff --git a/homeassistant/components/httpinterface/www_static/favicon.ico b/homeassistant/components/http/www_static/favicon.ico similarity index 100% rename from homeassistant/components/httpinterface/www_static/favicon.ico rename to homeassistant/components/http/www_static/favicon.ico diff --git a/homeassistant/components/httpinterface/www_static/style.css b/homeassistant/components/http/www_static/style.css similarity index 100% rename from homeassistant/components/httpinterface/www_static/style.css rename to homeassistant/components/http/www_static/style.css diff --git a/homeassistant/remote.py b/homeassistant/remote.py index 26641b113c9..b5f24620508 100644 --- a/homeassistant/remote.py +++ b/homeassistant/remote.py @@ -17,24 +17,37 @@ import urllib.parse import requests import homeassistant as ha -import homeassistant.components.httpinterface as hah + +SERVER_PORT = 8123 + +URL_API_STATES = "/api/states" +URL_API_STATES_ENTITY = "/api/states/{}" +URL_API_EVENTS = "/api/events" +URL_API_EVENTS_EVENT = "/api/events/{}" +URL_API_SERVICES = "/api/services" +URL_API_SERVICES_SERVICE = "/api/services/{}/{}" +URL_API_EVENT_FORWARD = "/api/event_forwarding" METHOD_GET = "get" METHOD_POST = "post" -def _setup_call_api(host, port, api_password): - """ Helper method to setup a call api method. """ - port = port or hah.SERVER_PORT +class API(object): + """ Object to pass around Home Assistant API location and credentials. """ + # pylint: disable=too-few-public-methods - base_url = "http://{}:{}".format(host, port) + def __init__(self, host, api_password, port=None): + self.host = host + self.port = port or SERVER_PORT + self.api_password = api_password + self.base_url = "http://{}:{}".format(host, self.port) - def _call_api(method, path, data=None): + def __call__(self, method, path, data=None): """ Makes a call to the Home Assistant api. """ data = data or {} - data['api_password'] = api_password + data['api_password'] = self.api_password - url = urllib.parse.urljoin(base_url, path) + url = urllib.parse.urljoin(self.base_url, path) try: if method == METHOD_GET: @@ -46,7 +59,134 @@ def _setup_call_api(host, port, api_password): logging.getLogger(__name__).exception("Error connecting to server") raise ha.HomeAssistantError("Error connecting to server") - return _call_api + +class HomeAssistant(ha.HomeAssistant): + """ Home Assistant that forwards work. """ + # pylint: disable=super-init-not-called + + def __init__(self, local_api, remote_api): + self.local_api = local_api + self.remote_api = remote_api + + self._pool = pool = ha.create_worker_pool() + + self.bus = EventBus(remote_api, pool) + self.services = ha.ServiceRegistry(self.bus, pool) + self.states = StateMachine(self.bus, self.remote_api) + + def start(self): + ha.Timer(self) + + # Setup that events from remote_api get forwarded to local_api + connect_remote_events(self.remote_api, self.local_api) + + self.bus.fire(ha.EVENT_HOMEASSISTANT_START, + origin=ha.EventOrigin.remote) + + +class EventBus(ha.EventBus): + """ EventBus implementation that forwards fire_event to remote API. """ + + def __init__(self, api, pool=None): + super().__init__(pool) + self._api = api + + def fire(self, event_type, event_data=None, origin=ha.EventOrigin.local): + """ Forward local events to remote target, + handles remote event as usual. """ + # All local events that are not TIME_CHANGED are forwarded to API + if origin == ha.EventOrigin.local and \ + event_type != ha.EVENT_TIME_CHANGED: + + fire_event(self._api, event_type, event_data) + + else: + super().fire(event_type, event_data, origin) + + +class EventForwarder(object): + """ Listens for events and forwards to specified APIs. """ + + def __init__(self, hass, restrict_origin=None): + self.hass = hass + self.restrict_origin = restrict_origin + self.logger = logging.getLogger(__name__) + + # We use a tuple (host, port) as key to ensure + # that we do not forward to the same host twice + self._targets = {} + + self._lock = threading.Lock() + + def connect(self, api): + """ + Attach to a HA instance and forward events. + + Will overwrite old target if one exists with same host/port. + """ + with self._lock: + if len(self._targets) == 0: + # First target we get, setup listener for events + self.hass.bus.listen(ha.MATCH_ALL, self._event_listener) + + key = (api.host, api.port) + + self._targets[key] = api + + def disconnect(self, api): + """ Removes target from being forwarded to. """ + with self._lock: + key = (api.host, api.port) + + did_remove = self._targets.pop(key, None) is None + + if len(self._targets) == 0: + # Remove event listener if no forwarding targets present + self.hass.bus.remove_listener(ha.MATCH_ALL, + self._event_listener) + + return did_remove + + def _event_listener(self, event): + """ Listen and forwards all events. """ + with self._lock: + # We don't forward time events or, if enabled, non-local events + if event.event_type == ha.EVENT_TIME_CHANGED or \ + (self.restrict_origin and event.origin != self.restrict_origin): + return + + for api in self._targets.values(): + fire_event(api, event.event_type, event.data, self.logger) + + +class StateMachine(ha.StateMachine): + """ + Fires set events to an API. + Uses state_change events to track states. + """ + + def __init__(self, bus, api): + super().__init__(None) + + self.logger = logging.getLogger(__name__) + + self._api = api + + self.mirror() + + bus.listen(ha.EVENT_STATE_CHANGED, self._state_changed_listener) + + def set(self, entity_id, new_state, attributes=None): + """ Calls set_state on remote API . """ + set_state(self._api, entity_id, new_state, attributes) + + def mirror(self): + """ Discards current data and mirrors the remote state machine. """ + self._states = get_states(self._api, self.logger) + + def _state_changed_listener(self, event): + """ Listens for state changed events and applies them. """ + self._states[event.data['entity_id']] = event.data['new_state'] class JSONEncoder(json.JSONEncoder): @@ -61,212 +201,168 @@ class JSONEncoder(json.JSONEncoder): return json.JSONEncoder.default(self, obj) -class EventBus(object): - """ Allows to interface with a Home Assistant EventBus via the API. """ +def connect_remote_events(from_api, to_api): + """ Sets up from_api to forward all events to to_api. """ - def __init__(self, host, api_password, port=None): - self.logger = logging.getLogger(__name__) + data = {'host': to_api.host, 'api_password': to_api.api_password} - self._call_api = _setup_call_api(host, port, api_password) + if to_api.port is not None: + data['port'] = to_api.port - @property - def listeners(self): - """ List of events that is being listened for. """ - try: - req = self._call_api(METHOD_GET, hah.URL_API_EVENTS) + try: + from_api(METHOD_POST, URL_API_EVENT_FORWARD, data) - if req.status_code == 200: - data = req.json() + except ha.HomeAssistantError: + pass - return data['event_listeners'] - - else: - raise ha.HomeAssistantError( - "Got unexpected result (3): {}.".format(req.text)) - except ValueError: # If req.json() can't parse the json - self.logger.exception("Bus:Got unexpected result") - raise ha.HomeAssistantError( - "Got unexpected result: {}".format(req.text)) - - except KeyError: # If not all expected keys are in the returned JSON - self.logger.exception("Bus:Got unexpected result (2)") - raise ha.HomeAssistantError( - "Got unexpected result (2): {}".format(req.text)) - - def fire(self, event_type, event_data=None): - """ Fire an event. """ - - if event_data: - data = {'event_data': json.dumps(event_data, cls=JSONEncoder)} - else: - data = None +def disconnect_remote_events(from_api, to_api): + """ Disconnects forwarding events from from_api to to_api. """ + data = {'host': to_api.host, '_METHOD': 'DELETE'} - req = self._call_api(METHOD_POST, - hah.URL_API_EVENTS_EVENT.format(event_type), - data) + if to_api.port is not None: + data['port'] = to_api.port - if req.status_code != 200: - error = "Error firing event: {} - {}".format( - req.status_code, req.text) + try: + from_api(METHOD_POST, URL_API_EVENT_FORWARD, data) - self.logger.error("Bus:{}".format(error)) - raise ha.HomeAssistantError(error) + except ha.HomeAssistantError: + pass -class StateMachine(object): - """ Allows to interface with a Home Assistant StateMachine via the API. """ +def get_event_listeners(api, logger=None): + """ List of events that is being listened for. """ + try: + req = api(METHOD_GET, URL_API_EVENTS) - def __init__(self, host, api_password, port=None): - self._call_api = _setup_call_api(host, port, api_password) + return req.json()['event_listeners'] if req.status_code == 200 else {} - self.lock = threading.Lock() - self.logger = logging.getLogger(__name__) + except (ha.HomeAssistantError, ValueError, KeyError): + # ValueError if req.json() can't parse the json + # KeyError if 'event_listeners' not found in parsed json + if logger: + logger.exception("Bus:Got unexpected result") - @property - def entity_ids(self): - """ List of entity ids which states are being tracked. """ + return {} - try: - req = self._call_api(METHOD_GET, hah.URL_API_STATES) - return req.json()['entity_ids'] +def fire_event(api, event_type, event_data=None, logger=None): + """ Fire an event at remote API. """ - except requests.exceptions.ConnectionError: - self.logger.exception("StateMachine:Error connecting to server") - return [] + if event_data: + data = {'event_data': json.dumps(event_data, cls=JSONEncoder)} + else: + data = None - except ValueError: # If req.json() can't parse the json - self.logger.exception("StateMachine:Got unexpected result") - return [] + try: + req = api(METHOD_POST, URL_API_EVENTS_EVENT.format(event_type), data) - except KeyError: # If 'entity_ids' key not in parsed json - self.logger.exception("StateMachine:Got unexpected result (2)") - return [] + if req.status_code != 200 and logger: + logger.error( + "Error firing event: {} - {}".format( + req.status_code, req.text)) - def set(self, entity_id, new_state, attributes=None): - """ Set the state of a entity, add entity if it does not exist. + except ha.HomeAssistantError: + pass - Attributes is an optional dict to specify attributes of this state. """ - attributes = attributes or {} +def get_state(api, entity_id, logger=None): + """ Queries given API for state of entity_id. """ - self.lock.acquire() + try: + req = api(METHOD_GET, + URL_API_STATES_ENTITY.format(entity_id)) - data = {'new_state': new_state, - 'attributes': json.dumps(attributes)} + # req.status_code == 422 if entity does not exist - try: - req = self._call_api(METHOD_POST, - hah.URL_API_STATES_ENTITY.format(entity_id), - data) + return ha.State.from_dict(req.json()) \ + if req.status_code == 200 else None - if req.status_code != 201: - error = "Error changing state: {} - {}".format( - req.status_code, req.text) + except (ha.HomeAssistantError, ValueError): + # ValueError if req.json() can't parse the json + if logger: + logger.exception("Error getting state") - self.logger.error("StateMachine:{}".format(error)) - raise ha.HomeAssistantError(error) + return None - except requests.exceptions.ConnectionError: - self.logger.exception("StateMachine:Error connecting to server") - raise ha.HomeAssistantError("Error connecting to server") - finally: - self.lock.release() +def get_states(api, logger=None): + """ Queries given API for all states. """ - def get(self, entity_id): - """ Returns the state of the specified entity. """ + try: + req = api(METHOD_GET, + URL_API_STATES) - try: - req = self._call_api(METHOD_GET, - hah.URL_API_STATES_ENTITY.format(entity_id)) + json_result = req.json() + states = {} - if req.status_code == 200: - data = req.json() + for entity_id, state_dict in json_result.items(): + state = ha.State.from_dict(state_dict) - return ha.State.from_dict(data) + if state: + states[entity_id] = state - elif req.status_code == 422: - # Entity does not exist - return None + return states - else: - raise ha.HomeAssistantError( - "Got unexpected result (3): {}.".format(req.text)) + except (ha.HomeAssistantError, ValueError, AttributeError): + # ValueError if req.json() can't parse the json + # AttributeError if parsed JSON was not a dict + if logger: + logger.exception("Error getting state") - except requests.exceptions.ConnectionError: - self.logger.exception("StateMachine:Error connecting to server") - raise ha.HomeAssistantError("Error connecting to server") + return {} - except ValueError: # If req.json() can't parse the json - self.logger.exception("StateMachine:Got unexpected result") - raise ha.HomeAssistantError( - "Got unexpected result: {}".format(req.text)) - except KeyError: # If not all expected keys are in the returned JSON - self.logger.exception("StateMachine:Got unexpected result (2)") - raise ha.HomeAssistantError( - "Got unexpected result (2): {}".format(req.text)) +def set_state(api, entity_id, new_state, attributes=None, logger=None): + """ Tells API to update state for entity_id. """ - def is_state(self, entity_id, state): - """ Returns True if entity exists and is specified state. """ - try: - return self.get(entity_id).state == state - except AttributeError: - # get returned None - return False + attributes = attributes or {} + data = {'new_state': new_state, + 'attributes': json.dumps(attributes)} -class ServiceRegistry(object): - """ Allows to interface with a Home Assistant ServiceRegistry - via the API. """ + try: + req = api(METHOD_POST, + URL_API_STATES_ENTITY.format(entity_id), + data) - def __init__(self, host, api_password, port=None): - self.logger = logging.getLogger(__name__) + if req.status_code != 201 and logger: + logger.error( + "Error changing state: {} - {}".format( + req.status_code, req.text)) - self._call_api = _setup_call_api(host, port, api_password) + except ha.HomeAssistantError: + if logger: + logger.exception("Error setting state to server") - @property - def services(self): - """ List the available services. """ - try: - req = self._call_api(METHOD_GET, hah.URL_API_SERVICES) - if req.status_code == 200: - data = req.json() +def is_state(api, entity_id, state, logger=None): + """ Queries API to see if entity_id is specified state. """ + cur_state = get_state(api, entity_id, logger) - return data['services'] + return cur_state and cur_state.state == state - else: - raise ha.HomeAssistantError( - "Got unexpected result (3): {}.".format(req.text)) - except ValueError: # If req.json() can't parse the json - self.logger.exception("ServiceRegistry:Got unexpected result") - raise ha.HomeAssistantError( - "Got unexpected result: {}".format(req.text)) +def get_services(api, logger=None): + """ Returns a dict with per domain the available services at API. """ + try: + req = api(METHOD_GET, URL_API_SERVICES) - except KeyError: # If not all expected keys are in the returned JSON - self.logger.exception("ServiceRegistry:Got unexpected result (2)") - raise ha.HomeAssistantError( - "Got unexpected result (2): {}".format(req.text)) + return req.json()['services'] if req.status_code == 200 else {} - def call_service(self, domain, service, service_data=None): - """ Calls a service. """ + except (ha.HomeAssistantError, ValueError, KeyError): + # ValueError if req.json() can't parse the json + # KeyError if not all expected keys are in the returned JSON + if logger: + logger.exception("ServiceRegistry:Got unexpected result") - if service_data: - data = {'service_data': json.dumps(service_data)} - else: - data = None + return {} - req = self._call_api(METHOD_POST, - hah.URL_API_SERVICES_SERVICE.format( - domain, service), - data) - if req.status_code != 200: - error = "Error calling service: {} - {}".format( - req.status_code, req.text) +def call_service(api, domain, service, service_data=None, logger=None): + """ Calls a service at the remote API. """ + event_data = service_data or {} + event_data[ha.ATTR_DOMAIN] = domain + event_data[ha.ATTR_SERVICE] = service - self.logger.error("ServiceRegistry:{}".format(error)) + fire_event(api, ha.EVENT_CALL_SERVICE, event_data, logger) diff --git a/homeassistant/test.py b/homeassistant/test.py index c193e2df7b2..b61b17f32d2 100644 --- a/homeassistant/test.py +++ b/homeassistant/test.py @@ -13,11 +13,11 @@ import requests import homeassistant as ha import homeassistant.remote as remote -import homeassistant.components.httpinterface as hah +import homeassistant.components.http as http API_PASSWORD = "test1234" -HTTP_BASE_URL = "http://127.0.0.1:{}".format(hah.SERVER_PORT) +HTTP_BASE_URL = "http://127.0.0.1:{}".format(remote.SERVER_PORT) def _url(path=""): @@ -28,6 +28,7 @@ def _url(path=""): class HAHelper(object): # pylint: disable=too-few-public-methods """ Helper class to keep track of current running HA instance. """ hass = None + slave = None def ensure_homeassistant_started(): @@ -39,9 +40,9 @@ def ensure_homeassistant_started(): hass.bus.listen('test_event', len) hass.states.set('test', 'a_state') - hah.HTTPInterface(hass, API_PASSWORD) + http.setup(hass, API_PASSWORD) - hass.bus.fire(ha.EVENT_HOMEASSISTANT_START) + hass.start() # Give objects time to startup time.sleep(1) @@ -51,6 +52,26 @@ def ensure_homeassistant_started(): return HAHelper.hass +def ensure_slave_started(): + """ Ensure a home assistant slave is started. """ + + if not HAHelper.slave: + local_api = remote.API("127.0.0.1", API_PASSWORD, 8124) + remote_api = remote.API("127.0.0.1", API_PASSWORD) + slave = remote.HomeAssistant(local_api, remote_api) + + http.setup(slave, API_PASSWORD, 8124) + + slave.start() + + # Give objects time to startup + time.sleep(1) + + HAHelper.slave = slave + + return HAHelper.slave + + # pylint: disable=too-many-public-methods class TestHTTPInterface(unittest.TestCase): """ Test the HTTP debug interface and API. """ @@ -75,12 +96,12 @@ class TestHTTPInterface(unittest.TestCase): """ Test if we get access denied if we omit or provide a wrong api password. """ req = requests.get( - _url(hah.URL_API_STATES_ENTITY.format("test"))) + _url(remote.URL_API_STATES_ENTITY.format("test"))) self.assertEqual(req.status_code, 401) req = requests.get( - _url(hah.URL_API_STATES_ENTITY.format("test")), + _url(remote.URL_API_STATES_ENTITY.format("test")), params={"api_password": "not the password"}) self.assertEqual(req.status_code, 401) @@ -89,7 +110,7 @@ class TestHTTPInterface(unittest.TestCase): """ Test if we can change a state from the debug interface. """ self.hass.states.set("test.test", "not_to_be_set") - requests.post(_url(hah.URL_CHANGE_STATE), + requests.post(_url(http.URL_CHANGE_STATE), data={"entity_id": "test.test", "new_state": "debug_state_change2", "api_password": API_PASSWORD}) @@ -110,7 +131,7 @@ class TestHTTPInterface(unittest.TestCase): self.hass.listen_once_event("test_event_with_data", listener) requests.post( - _url(hah.URL_FIRE_EVENT), + _url(http.URL_FIRE_EVENT), data={"event_type": "test_event_with_data", "event_data": '{"test": 1}', "api_password": API_PASSWORD}) @@ -122,18 +143,20 @@ class TestHTTPInterface(unittest.TestCase): def test_api_list_state_entities(self): """ Test if the debug interface allows us to list state entities. """ - req = requests.get(_url(hah.URL_API_STATES), + req = requests.get(_url(remote.URL_API_STATES), data={"api_password": API_PASSWORD}) - data = req.json() + remote_data = req.json() - self.assertEqual(list(self.hass.states.entity_ids), - data['entity_ids']) + local_data = {entity_id: state.as_dict() for entity_id, state + in self.hass.states.all().items()} + + self.assertEqual(local_data, remote_data) def test_api_get(self): """ Test if the debug interface allows us to get a state. """ req = requests.get( - _url(hah.URL_API_STATES_ENTITY.format("test")), + _url(remote.URL_API_STATES_ENTITY.format("test")), data={"api_password": API_PASSWORD}) data = ha.State.from_dict(req.json()) @@ -147,7 +170,7 @@ class TestHTTPInterface(unittest.TestCase): def test_api_get_non_existing_state(self): """ Test if the debug interface allows us to get a state. """ req = requests.get( - _url(hah.URL_API_STATES_ENTITY.format("does_not_exist")), + _url(remote.URL_API_STATES_ENTITY.format("does_not_exist")), params={"api_password": API_PASSWORD}) self.assertEqual(req.status_code, 422) @@ -157,7 +180,7 @@ class TestHTTPInterface(unittest.TestCase): self.hass.states.set("test.test", "not_to_be_set") - requests.post(_url(hah.URL_API_STATES_ENTITY.format("test.test")), + requests.post(_url(remote.URL_API_STATES_ENTITY.format("test.test")), data={"new_state": "debug_state_change2", "api_password": API_PASSWORD}) @@ -172,7 +195,7 @@ class TestHTTPInterface(unittest.TestCase): new_state = "debug_state_change" req = requests.post( - _url(hah.URL_API_STATES_ENTITY.format( + _url(remote.URL_API_STATES_ENTITY.format( "test_entity_that_does_not_exist")), data={"new_state": new_state, "api_password": API_PASSWORD}) @@ -195,7 +218,7 @@ class TestHTTPInterface(unittest.TestCase): self.hass.listen_once_event("test.event_no_data", listener) requests.post( - _url(hah.URL_API_EVENTS_EVENT.format("test.event_no_data")), + _url(remote.URL_API_EVENTS_EVENT.format("test.event_no_data")), data={"api_password": API_PASSWORD}) # Allow the event to take place @@ -217,7 +240,7 @@ class TestHTTPInterface(unittest.TestCase): self.hass.listen_once_event("test_event_with_data", listener) requests.post( - _url(hah.URL_API_EVENTS_EVENT.format("test_event_with_data")), + _url(remote.URL_API_EVENTS_EVENT.format("test_event_with_data")), data={"event_data": '{"test": 1}', "api_password": API_PASSWORD}) @@ -238,7 +261,7 @@ class TestHTTPInterface(unittest.TestCase): self.hass.listen_once_event("test_event_with_bad_data", listener) req = requests.post( - _url(hah.URL_API_EVENTS_EVENT.format("test_event")), + _url(remote.URL_API_EVENTS_EVENT.format("test_event")), data={"event_data": 'not json', "api_password": API_PASSWORD}) @@ -250,7 +273,7 @@ class TestHTTPInterface(unittest.TestCase): def test_api_get_event_listeners(self): """ Test if we can get the list of events being listened for. """ - req = requests.get(_url(hah.URL_API_EVENTS), + req = requests.get(_url(remote.URL_API_EVENTS), params={"api_password": API_PASSWORD}) data = req.json() @@ -259,7 +282,7 @@ class TestHTTPInterface(unittest.TestCase): def test_api_get_services(self): """ Test if we can get a dict describing current services. """ - req = requests.get(_url(hah.URL_API_SERVICES), + req = requests.get(_url(remote.URL_API_SERVICES), params={"api_password": API_PASSWORD}) data = req.json() @@ -277,7 +300,7 @@ class TestHTTPInterface(unittest.TestCase): self.hass.services.register("test_domain", "test_service", listener) requests.post( - _url(hah.URL_API_SERVICES_SERVICE.format( + _url(remote.URL_API_SERVICES_SERVICE.format( "test_domain", "test_service")), data={"api_password": API_PASSWORD}) @@ -299,7 +322,7 @@ class TestHTTPInterface(unittest.TestCase): self.hass.services.register("test_domain", "test_service", listener) requests.post( - _url(hah.URL_API_SERVICES_SERVICE.format( + _url(remote.URL_API_SERVICES_SERVICE.format( "test_domain", "test_service")), data={"service_data": '{"test": 1}', "api_password": API_PASSWORD}) @@ -310,7 +333,7 @@ class TestHTTPInterface(unittest.TestCase): self.assertEqual(len(test_value), 1) -class TestRemote(unittest.TestCase): +class TestRemoteMethods(unittest.TestCase): """ Test the homeassistant.remote module. """ @classmethod @@ -318,134 +341,115 @@ class TestRemote(unittest.TestCase): """ things to be run when tests are started. """ cls.hass = ensure_homeassistant_started() - cls.remote_sm = remote.StateMachine("127.0.0.1", API_PASSWORD) - cls.remote_eb = remote.EventBus("127.0.0.1", API_PASSWORD) - cls.remote_sr = remote.ServiceRegistry("127.0.0.1", API_PASSWORD) - cls.sm_with_remote_eb = ha.StateMachine(cls.remote_eb) - cls.sm_with_remote_eb.set("test", "a_state") - - # pylint: disable=invalid-name - def test_remote_sm_list_state_entities(self): - """ Test if the debug interface allows us to list state entity ids. """ + cls.api = remote.API("127.0.0.1", API_PASSWORD) - self.assertEqual(list(self.hass.states.entity_ids), - self.remote_sm.entity_ids) + def test_get_event_listeners(self): + """ Test Python API get_event_listeners. """ - def test_remote_sm_get(self): - """ Test if debug interface allows us to get state of an entity. """ - remote_state = self.remote_sm.get("test") + self.assertEqual( + remote.get_event_listeners(self.api), self.hass.bus.listeners) - state = self.hass.states.get("test") - - self.assertEqual(remote_state.state, state.state) - self.assertEqual(remote_state.last_changed, state.last_changed) - self.assertEqual(remote_state.attributes, state.attributes) - - def test_remote_sm_get_non_existing_state(self): - """ Test remote state machine to get state of non existing entity. """ - self.assertEqual(self.remote_sm.get("test_does_not_exist"), None) - - def test_remote_sm_state_change(self): - """ Test if we can change the state of an existing entity. """ - - self.remote_sm.set("test", "set_remotely", {"test": 1}) - - state = self.hass.states.get("test") - - self.assertEqual(state.state, "set_remotely") - self.assertEqual(state.attributes['test'], 1) - - def test_remote_eb_listening_for_same(self): - """ Test if remote EB correctly reports listener overview. """ - self.assertEqual(self.hass.bus.listeners, - self.remote_eb.listeners) - - # pylint: disable=invalid-name - def test_remote_eb_fire_event_with_no_data(self): - """ Test if the remote bus allows us to fire an event. """ + def test_fire_event(self): + """ Test Python API fire_event. """ test_value = [] def listener(event): # pylint: disable=unused-argument """ Helper method that will verify our event got called. """ test_value.append(1) - self.hass.listen_once_event("test_event_no_data", listener) + self.hass.listen_once_event("test.event_no_data", listener) - self.remote_eb.fire("test_event_no_data") + remote.fire_event(self.api, "test.event_no_data") # Allow the event to take place time.sleep(1) self.assertEqual(len(test_value), 1) - # pylint: disable=invalid-name - def test_remote_eb_fire_event_with_data(self): - """ Test if the remote bus allows us to fire an event. """ - test_value = [] + def test_get_state(self): + """ Test Python API get_state. """ - def listener(event): # pylint: disable=unused-argument - """ Helper method that will verify our event got called. """ - if event.data["test"] == 1: - test_value.append(1) + self.assertEqual( + remote.get_state(self.api, 'test'), self.hass.states.get('test')) - self.hass.listen_once_event("test_event_with_data", listener) + def test_get_states(self): + """ Test Python API get_state_entity_ids. """ - self.remote_eb.fire("test_event_with_data", {"test": 1}) + self.assertEqual( + remote.get_states(self.api), self.hass.states.all()) - # Allow the event to take place - time.sleep(1) + def test_set_state(self): + """ Test Python API set_state. """ + remote.set_state(self.api, 'test', 'set_test') - self.assertEqual(len(test_value), 1) + self.assertEqual(self.hass.states.get('test').state, 'set_test') - # pylint: disable=invalid-name - def test_remote_sr_call_service_with_no_data(self): - """ Test if the remote bus allows us to fire a service. """ + def test_is_state(self): + """ Test Python API is_state. """ + + self.assertEqual( + remote.is_state(self.api, 'test', + self.hass.states.get('test').state), + True) + + def test_get_services(self): + """ Test Python API get_services. """ + + self.assertEqual( + remote.get_services(self.api), self.hass.services.services) + + def test_call_service(self): + """ Test Python API call_service. """ test_value = [] def listener(service_call): # pylint: disable=unused-argument - """ Helper method that will verify our service got called. """ + """ Helper method that will verify that our service got called. """ test_value.append(1) self.hass.services.register("test_domain", "test_service", listener) - self.remote_sr.call_service("test_domain", "test_service") + remote.call_service(self.api, "test_domain", "test_service") - # Allow the service call to take place + # Allow the event to take place time.sleep(1) self.assertEqual(len(test_value), 1) - # pylint: disable=invalid-name - def test_remote_sr_call_service_with_data(self): - """ Test if the remote bus allows us to fire an event. """ - test_value = [] - def listener(service_call): # pylint: disable=unused-argument - """ Helper method that will verify our service got called. """ - if service_call.data["test"] == 1: - test_value.append(1) +class TestRemoteClasses(unittest.TestCase): + """ Test the homeassistant.remote module. """ - self.hass.services.register("test_domain", "test_service", listener) + @classmethod + def setUpClass(cls): # pylint: disable=invalid-name + """ things to be run when tests are started. """ + cls.hass = ensure_homeassistant_started() + cls.slave = ensure_slave_started() - self.remote_sr.call_service("test_domain", "test_service", {"test": 1}) + def test_statemachine_init(self): + """ Tests if remote.StateMachine copies all states on init. """ + self.assertEqual(self.hass.states.all(), self.slave.states.all()) - # Allow the event to take place + def test_statemachine_set(self): + """ Tests if setting the state on a slave is recorded. """ + self.slave.states.set("test", "remote.statemachine test") + + # Allow interaction between 2 instances time.sleep(1) - self.assertEqual(len(test_value), 1) + self.assertEqual(self.slave.states.get("test").state, + "remote.statemachine test") - def test_local_sm_with_remote_eb(self): - """ Test if we get the event if we change a state on a - StateMachine connected to a remote bus. """ + def test_eventbus_fire(self): + """ Test if events fired from the eventbus get fired. """ test_value = [] def listener(event): # pylint: disable=unused-argument """ Helper method that will verify our event got called. """ test_value.append(1) - self.hass.listen_once_event(ha.EVENT_STATE_CHANGED, listener) + self.slave.listen_once_event("test.event_no_data", listener) - self.sm_with_remote_eb.set("test", "local sm with remote eb") + self.slave.bus.fire("test.event_no_data") # Allow the event to take place time.sleep(1) diff --git a/start.py b/start.py index eeb29a27a12..527110856df 100644 --- a/start.py +++ b/start.py @@ -3,4 +3,6 @@ import homeassistant import homeassistant.bootstrap -homeassistant.bootstrap.from_config_file("home-assistant.conf").start() +hass = homeassistant.bootstrap.from_config_file("home-assistant.conf") +hass.start() +hass.block_till_stopped() -- GitLab