Code Reference
Interact with your Homeassistant Instance remotely.
- class homeassistant_api.Client(*args, use_async=False, verify_ssl=True, **kwargs)
The all-in-one class to interact with Home Assistant!
- Parameters:
api_url – The location of the api endpoint. e.g.
http://localhost:8123/api
Required.token – The refresh or long lived access token to authenticate your requests. Required.
global_request_kwargs – A dictionary or dict-like object of kwargs to pass to
requests.request()
oraiohttp.ClientSession.request()
. Optional.cache_session – A
requests_cache.CachedSession
object to use for caching requests. Optional.async_cache_session – A
aiohttp_client_cache.CachedSession
object to use for caching requests. Optional.
- async async_check_api_config()
Asks Home Assistant to validate its configuration file and returns true/false.
POST /api/config/core/check_config
- Return type:
- async async_fire_event(event_type, **event_data)
Fires a given event_type within homeassistant. Must be an existing event_type.
POST /api/events/<event_type>
- Return type:
- async async_get_components()
Returns a tuple of all registered components.
GET /api/components
- async async_get_config()
Returns the yaml configuration of homeassistant.
GET /api/config
- async async_get_domain(domain_id)
Fetches all
Service
’s under a particular serviceDomain
. Uses cached data fromget_domains()
if available.
- async async_get_entities()
Fetches all entities from the api.
GET /api/states
- async async_get_entity(group_id=None, slug=None, entity_id=None)
Returns a Entity model for an
entity_id
.GET /api/states/<entity_id>
- async async_get_entity_histories(entities=None, start_timestamp=None, end_timestamp=None, significant_changes_only=False)
Returns a generator of entity state histories from homeassistant.
GET /api/history/period/<timestamp>
- Return type:
- async async_get_error_log()
Returns the server error log as a string.
GET /api/error_log
- Return type:
- async async_get_event(name)
Gets the
Event
with the specified name if it has at least one listener. Uses cached data fromget_events()
if available.
- async async_get_events()
Gets the Events that happen within homeassistant
GET /api/events
- async async_get_logbook_entries(*args, **kwargs)
Returns a list of logbook entries from homeassistant.
GET /api/logbook/<timestamp>
- Return type:
- async async_get_rendered_template(template)
Renders a given Jinja2 template string with Home Assistant context data.
POST /api/template
- Return type:
- async async_get_state(*, entity_id=None, group_id=None, slug=None)
Fetches the state of the entity specified.
GET /api/states/<entity_id>
- Return type:
- async async_get_states()
Gets the states of all entities within homeassistant.
GET /api/states
- async async_request(path, method='GET', headers=None, **kwargs)
Base method for making requests to the api
- Return type:
- async static async_response_logic(response)
Processes custom mimetype content asyncronously.
- Return type:
- async async_set_state(state)
This method sets the representation of a device within Home Assistant and will not communicate with the actual device. To communicate with the device, use
Service.trigger()
orService.async_trigger()
.POST /api/states/<entity_id>
- Return type:
- async async_trigger_service(domain, service, **service_data)
Tells Home Assistant to trigger a service, returns all states changed while in the process of being called.
POST /api/services/<domain>/<service>
- check_api_config()
Asks Home Assistant to validate its configuration file.
POST /api/config/core/check_config
- Return type:
- static construct_params(params)
Custom method for constructing non-standard query strings
- Return type:
- fire_event(event_type, **event_data)
Fires a given event_type within homeassistant. Must be an existing event_type. POST /api/events/<event_type>
- static format_entity_id(entity_id)
Takes in a string and formats it into valid snake_case.
- Return type:
- get_components()
Returns a tuple of all registered components.
GET /api/components
- get_config()
Returns the yaml configuration of homeassistant.
GET /api/config
- get_domain(domain_id)
Fetches all
Service
’s under a particular serviceDomain
. Uses cached data fromget_domains()
if available.
- get_entities()
Fetches all entities from the api and returns them as a dictionary of
Group
’s.GET /api/states
- get_entity(group_id=None, slug=None, entity_id=None)
Returns an
Entity
model for anentity_id
.GET /api/states/<entity_id>
- get_entity_histories(entities=None, start_timestamp=None, end_timestamp=None, significant_changes_only=False)
Yields entity state histories. See docs on the
History
model.GET /api/history/period/<timestamp>
- get_event(name)
Gets the
Event
with the specified name if it has at least one listener. Uses cached data fromget_events()
if available.
- get_events()
Gets the Events that happen within homeassistant
GET /api/events
- get_logbook_entries(*args, **kwargs)
Returns a list of logbook entries from homeassistant.
GET /api/logbook/<timestamp>
- Return type:
- get_rendered_template(template)
Renders a Jinja2 template with Home Assistant context data. See https://www.home-assistant.io/docs/configuration/templating.
POST /api/template
- Return type:
- get_state(*, entity_id=None, group_id=None, slug=None)
Fetches the state of the entity specified.
GET /api/states/<entity_id>
- Return type:
- get_states()
Gets the states of all entities within homeassistant.
GET /api/states
- prepare_entity_id(*, group_id=None, slug=None, entity_id=None)
Combines optional
group
andslug
into anentity_id
if provided. Favorsentity_id
overgroup
orslug
.- Return type:
- static prepare_get_entity_histories_params(entities=None, start_timestamp=None, end_timestamp=None, significant_changes_only=False)
Pre-logic for Client.get_entity_histories and Client.async_get_entity_histories.
- static prepare_get_logbook_entry_params(filter_entities=None, start_timestamp=None, end_timestamp=None)
Prepares the query string and url path for retrieving logbook entries.
- prepare_headers(headers=None)
Prepares and verifies dictionary headers.
- request(path, method='GET', headers=None, decode_bytes=True, **kwargs)
Base method for making requests to the api
- Return type:
- classmethod response_logic(response, decode_bytes=True)
Processes responses from the API and formats them
- Return type:
- set_state(state)
This method sets the representation of a device within Home Assistant and will not communicate with the actual device. To communicate with the device, use
Service.trigger()
orService.async_trigger()
.POST /api/states/<entity_id>
- Return type:
- pydantic model homeassistant_api.State
A model representing a state of an entity.
Show JSON schema
{ "title": "State", "description": "A model representing a state of an entity.", "type": "object", "properties": { "entity_id": { "description": "The entity_id this state corresponds to.", "title": "Entity Id", "type": "string" }, "state": { "description": "The string representation of the state of the entity.", "title": "State", "type": "string" }, "attributes": { "default": {}, "description": "A dictionary of extra attributes of the state.", "title": "Attributes", "type": "object" }, "last_changed": { "description": "The last time the state was changed.", "format": "date-time", "title": "Last Changed", "type": "string" }, "last_updated": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "The last time the state updated.", "title": "Last Updated" }, "context": { "anyOf": [ { "$ref": "#/$defs/Context" }, { "type": "null" } ], "default": null, "description": "Provides information about the context of the state." } }, "$defs": { "Context": { "description": "Model for entity state contexts.", "properties": { "id": { "description": "Unique string identifying the context.", "maxLength": 128, "title": "Id", "type": "string" } }, "required": [ "id" ], "title": "Context", "type": "object" } }, "required": [ "entity_id", "state" ] }
- Config:
arbitrary_types_allowed: bool = True
validate_assignment: bool = True
- Fields:
attributes (Dict[str, Any])
context (homeassistant_api.models.states.Context | None)
entity_id (str)
last_changed (datetime.datetime)
last_updated (datetime.datetime | None)
state (str)
- pydantic model homeassistant_api.Service
Model representing services from homeassistant
Show JSON schema
{ "$defs": { "Domain": { "description": "Model representing the domain that services belong to.", "properties": { "domain_id": { "description": "The name of the domain that services belong to. (e.g. :code:`frontend` in :code:`frontend.reload_themes`", "title": "Domain Id", "type": "string" }, "services": { "additionalProperties": { "$ref": "#/$defs/Service" }, "default": {}, "description": "A dictionary of all services belonging to the domain indexed by their names", "title": "Services", "type": "object" } }, "required": [ "domain_id" ], "title": "Domain", "type": "object" }, "Service": { "description": "Model representing services from homeassistant", "properties": { "service_id": { "title": "Service Id", "type": "string" }, "domain": { "$ref": "#/$defs/Domain" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Name" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Description" }, "fields": { "anyOf": [ { "additionalProperties": { "$ref": "#/$defs/ServiceField" }, "type": "object" }, { "type": "null" } ], "default": null, "title": "Fields" } }, "required": [ "service_id", "domain" ], "title": "Service", "type": "object" }, "ServiceField": { "description": "Model for service parameters/fields.", "properties": { "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Description" }, "example": { "default": null, "title": "Example" }, "selector": { "anyOf": [ { "type": "object" }, { "type": "null" } ], "default": null, "title": "Selector" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Name" }, "required": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "title": "Required" } }, "title": "ServiceField", "type": "object" } }, "allOf": [ { "$ref": "#/$defs/Service" } ] }
- Config:
arbitrary_types_allowed: bool = True
validate_assignment: bool = True
- Fields:
description (str | None)
domain (homeassistant_api.models.domains.Domain)
fields (Dict[str, homeassistant_api.models.domains.ServiceField] | None)
name (str | None)
service_id (str)
- trigger(**service_data)
Triggers the service associated with this object.
- pydantic model homeassistant_api.History
Model representing past
State
’s of an entity.Show JSON schema
{ "title": "History", "description": "Model representing past :py:class:`State`'s of an entity.", "type": "object", "properties": { "states": { "description": "A tuple of previous states of an entity.", "items": { "$ref": "#/$defs/State" }, "title": "States", "type": "array" } }, "$defs": { "Context": { "description": "Model for entity state contexts.", "properties": { "id": { "description": "Unique string identifying the context.", "maxLength": 128, "title": "Id", "type": "string" } }, "required": [ "id" ], "title": "Context", "type": "object" }, "State": { "description": "A model representing a state of an entity.", "properties": { "entity_id": { "description": "The entity_id this state corresponds to.", "title": "Entity Id", "type": "string" }, "state": { "description": "The string representation of the state of the entity.", "title": "State", "type": "string" }, "attributes": { "default": {}, "description": "A dictionary of extra attributes of the state.", "title": "Attributes", "type": "object" }, "last_changed": { "description": "The last time the state was changed.", "format": "date-time", "title": "Last Changed", "type": "string" }, "last_updated": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "The last time the state updated.", "title": "Last Updated" }, "context": { "anyOf": [ { "$ref": "#/$defs/Context" }, { "type": "null" } ], "default": null, "description": "Provides information about the context of the state." } }, "required": [ "entity_id", "state" ], "title": "State", "type": "object" } }, "required": [ "states" ] }
- Config:
arbitrary_types_allowed: bool = True
validate_assignment: bool = True
- Fields:
states (Tuple[homeassistant_api.models.states.State, ...])
- pydantic model homeassistant_api.Group
Represents the groups that entities belong to.
Show JSON schema
{ "$defs": { "Context": { "description": "Model for entity state contexts.", "properties": { "id": { "description": "Unique string identifying the context.", "maxLength": 128, "title": "Id", "type": "string" } }, "required": [ "id" ], "title": "Context", "type": "object" }, "Entity": { "description": "Represents entities inside of homeassistant", "properties": { "slug": { "title": "Slug", "type": "string" }, "state": { "$ref": "#/$defs/State" }, "group": { "$ref": "#/$defs/Group" } }, "required": [ "slug", "state", "group" ], "title": "Entity", "type": "object" }, "Group": { "description": "Represents the groups that entities belong to.", "properties": { "group_id": { "description": "A unique string identifying different types/groups of entities.", "title": "Group Id", "type": "string" }, "entities": { "additionalProperties": { "$ref": "#/$defs/Entity" }, "default": {}, "description": "A dictionary of all entities belonging to the group indexed by their :code:`entity_id`.", "title": "Entities", "type": "object" } }, "required": [ "group_id" ], "title": "Group", "type": "object" }, "State": { "description": "A model representing a state of an entity.", "properties": { "entity_id": { "description": "The entity_id this state corresponds to.", "title": "Entity Id", "type": "string" }, "state": { "description": "The string representation of the state of the entity.", "title": "State", "type": "string" }, "attributes": { "default": {}, "description": "A dictionary of extra attributes of the state.", "title": "Attributes", "type": "object" }, "last_changed": { "description": "The last time the state was changed.", "format": "date-time", "title": "Last Changed", "type": "string" }, "last_updated": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "The last time the state updated.", "title": "Last Updated" }, "context": { "anyOf": [ { "$ref": "#/$defs/Context" }, { "type": "null" } ], "default": null, "description": "Provides information about the context of the state." } }, "required": [ "entity_id", "state" ], "title": "State", "type": "object" } }, "allOf": [ { "$ref": "#/$defs/Group" } ] }
- Config:
arbitrary_types_allowed: bool = True
validate_assignment: bool = True
- Fields:
entities (Dict[str, homeassistant_api.models.entity.Entity])
group_id (str)
- pydantic model homeassistant_api.Event
Event class for Home Assistant Event Triggers
For attribute information see the Data Science docs on Event models https://data.home-assistant.io/docs/events
Show JSON schema
{ "title": "Event", "description": "Event class for Home Assistant Event Triggers\n\nFor attribute information see the Data Science docs on Event models\nhttps://data.home-assistant.io/docs/events", "type": "object", "properties": { "event": { "description": "The event name/type.", "title": "Event", "type": "string" }, "listener_count": { "description": "How many listeners are interesting in this event in Home Assistant.", "title": "Listener Count", "type": "integer" } }, "required": [ "event", "listener_count" ] }
- Config:
arbitrary_types_allowed: bool = True
validate_assignment: bool = True
- Fields:
event (str)
listener_count (int)
-
field listener_count:
int
[Required] How many listeners are interesting in this event in Home Assistant.
- async async_fire(**event_data)
Fires the event type in homeassistant. Ex. on_startup
- Return type:
- pydantic model homeassistant_api.Entity
Represents entities inside of homeassistant
Show JSON schema
{ "$defs": { "Context": { "description": "Model for entity state contexts.", "properties": { "id": { "description": "Unique string identifying the context.", "maxLength": 128, "title": "Id", "type": "string" } }, "required": [ "id" ], "title": "Context", "type": "object" }, "Entity": { "description": "Represents entities inside of homeassistant", "properties": { "slug": { "title": "Slug", "type": "string" }, "state": { "$ref": "#/$defs/State" }, "group": { "$ref": "#/$defs/Group" } }, "required": [ "slug", "state", "group" ], "title": "Entity", "type": "object" }, "Group": { "description": "Represents the groups that entities belong to.", "properties": { "group_id": { "description": "A unique string identifying different types/groups of entities.", "title": "Group Id", "type": "string" }, "entities": { "additionalProperties": { "$ref": "#/$defs/Entity" }, "default": {}, "description": "A dictionary of all entities belonging to the group indexed by their :code:`entity_id`.", "title": "Entities", "type": "object" } }, "required": [ "group_id" ], "title": "Group", "type": "object" }, "State": { "description": "A model representing a state of an entity.", "properties": { "entity_id": { "description": "The entity_id this state corresponds to.", "title": "Entity Id", "type": "string" }, "state": { "description": "The string representation of the state of the entity.", "title": "State", "type": "string" }, "attributes": { "default": {}, "description": "A dictionary of extra attributes of the state.", "title": "Attributes", "type": "object" }, "last_changed": { "description": "The last time the state was changed.", "format": "date-time", "title": "Last Changed", "type": "string" }, "last_updated": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "The last time the state updated.", "title": "Last Updated" }, "context": { "anyOf": [ { "$ref": "#/$defs/Context" }, { "type": "null" } ], "default": null, "description": "Provides information about the context of the state." } }, "required": [ "entity_id", "state" ], "title": "State", "type": "object" } }, "allOf": [ { "$ref": "#/$defs/Entity" } ] }
- Config:
arbitrary_types_allowed: bool = True
validate_assignment: bool = True
- Fields:
group (homeassistant_api.models.entity.Group)
slug (str)
state (homeassistant_api.models.states.State)
- get_state()
Asks Home Assistant for the state of the entity and updates it locally
- Return type:
- update_state()
Tells Home Assistant to set its current local State object. (You can modify the local state object yourself.)
- Return type:
- get_history(start_timestamp=None, end_timestamp=None, significant_changes_only=False)
- async async_get_state()
Asks Home Assistant for the state of the entity and sets it locally
- Return type:
- async async_update_state()
Tells Home Assistant to set the current local State object.
- Return type:
- pydantic model homeassistant_api.Domain
Model representing the domain that services belong to.
Show JSON schema
{ "$defs": { "Domain": { "description": "Model representing the domain that services belong to.", "properties": { "domain_id": { "description": "The name of the domain that services belong to. (e.g. :code:`frontend` in :code:`frontend.reload_themes`", "title": "Domain Id", "type": "string" }, "services": { "additionalProperties": { "$ref": "#/$defs/Service" }, "default": {}, "description": "A dictionary of all services belonging to the domain indexed by their names", "title": "Services", "type": "object" } }, "required": [ "domain_id" ], "title": "Domain", "type": "object" }, "Service": { "description": "Model representing services from homeassistant", "properties": { "service_id": { "title": "Service Id", "type": "string" }, "domain": { "$ref": "#/$defs/Domain" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Name" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Description" }, "fields": { "anyOf": [ { "additionalProperties": { "$ref": "#/$defs/ServiceField" }, "type": "object" }, { "type": "null" } ], "default": null, "title": "Fields" } }, "required": [ "service_id", "domain" ], "title": "Service", "type": "object" }, "ServiceField": { "description": "Model for service parameters/fields.", "properties": { "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Description" }, "example": { "default": null, "title": "Example" }, "selector": { "anyOf": [ { "type": "object" }, { "type": "null" } ], "default": null, "title": "Selector" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Name" }, "required": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "title": "Required" } }, "title": "ServiceField", "type": "object" } }, "allOf": [ { "$ref": "#/$defs/Domain" } ] }
- Config:
arbitrary_types_allowed: bool = True
validate_assignment: bool = True
- Fields:
domain_id (str)
services (Dict[str, homeassistant_api.models.domains.Service])
-
field domain_id:
str
[Required] The name of the domain that services belong to. (e.g.
frontend
infrontend.reload_themes
-
field services:
Dict
[str
, Service] = {} A dictionary of all services belonging to the domain indexed by their names
- classmethod from_json(json, client)
Constructs Domain and Service models from json data.
- Return type:
- class homeassistant_api.Processing(response, decode_bytes=True)
Uses to processor functions to convert json data into common python data types.
- static processor(mimetype)
A decorator used to register a response converter function.
- Return type:
Callable
[[Callable
[[Union
[CachedResponse
,ClientResponse
,Response
,CachedResponse
]],Any
]],Callable
[[Union
[CachedResponse
,ClientResponse
,Response
,CachedResponse
]],Any
]]
- process_content(*, async_=False)
Looks up processors by their Content-Type header and then calls the processor with the response.
- Return type:
- pydantic model homeassistant_api.LogbookEntry
Model representing entries in the Logbook.
Show JSON schema
{ "title": "LogbookEntry", "description": "Model representing entries in the Logbook.", "type": "object", "properties": { "when": { "description": "When the entry was logged.", "format": "date-time", "title": "When", "type": "string" }, "name": { "description": "The name of the entry.", "title": "Name", "type": "string" }, "message": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Optional message for the entry.", "title": "Message" }, "entity_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Optional relevant entity_id.", "title": "Entity Id" }, "state": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The new state information of the entity_id.", "title": "State" }, "domain": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "When the entry was logged.", "title": "Domain" }, "context_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Optional relevant context instead of an entity.", "title": "Context Id" }, "icon": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "An MDI icon associated with the entity_id.", "title": "Icon" } }, "required": [ "when", "name" ] }
- Config:
arbitrary_types_allowed: bool = True
validate_assignment: bool = True
- Fields:
context_id (str | None)
domain (str | None)
entity_id (str | None)
icon (str | None)
message (str | None)
name (str)
state (str | None)
when (datetime.datetime)
- exception homeassistant_api.APIConfigurationError
Error raised when api says it has an invalid configuration file
- with_traceback()
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
- exception homeassistant_api.EndpointNotFoundError(path)
Error raised when a request is made to a non existing endpoint.
- with_traceback()
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
- exception homeassistant_api.HomeassistantAPIError
Base class for custom errors
- with_traceback()
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
- exception homeassistant_api.MalformedDataError
Error raised when data from api is not formatted as JSON
- with_traceback()
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
- exception homeassistant_api.MalformedInputError
Error raised when user passes malformed data in parameters
- with_traceback()
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
- exception homeassistant_api.MethodNotAllowedError(method)
Error raised when a request is made to an endpoint with a non-allowed method.
- with_traceback()
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
- exception homeassistant_api.ParameterMissingError
Error raised when an expected attribute is missing from api response data.
- with_traceback()
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.