
* Added lgtv platform to control a LG Smart TV running NetCast 3.0 (LG Smart TV models released in 2012) and NetCast 4.0 (LG Smart TV models released in 2013). * Update media_player.lgtv.markdown * Rename media_player.lgtv.markdown to media_player.lg_netcast.markdown * added description of the include/exclude entities/domains feature for history component. * o moved configuration examples to the section where the filtering is explained o improved configuration variables description
4.5 KiB
layout, title, description, date, sidebar, comments, sharing, footer, logo, ha_category, ha_release
layout | title | description | date | sidebar | comments | sharing | footer | logo | ha_category | ha_release |
---|---|---|---|---|---|---|---|---|---|---|
page | History | Instructions how to enable history support for Home Assistant. | 2015-03-23 19:59 | true | false | true | true | home-assistant.png | History | pre 0.7 |
The history
component will track everything that is going on within Home Assistant and allows the user to browse through it.
To enable the history option in your installation, add the following to your configuration.yaml
file:
# Basic configuration.yaml entry
history:
Events are saved in a local database. Google Graphs is used to draw the graph. Drawing is happening 100% in your browser. No data is transferred to anyone at any time.
Configuration variables:
- exclude (Optional): Configure which components should not be displayed.
- entities (Optional): The list of entity ids to be excluded from the history.
- domains (Optional): The list of domains to be excluded from the history.
- include (Optional): Configure which components should be displayed.
- entities (Optional): The list of entity ids to be included from the history.
- domains (Optional): The list of domains to be included from the history.
Without any include
or exclude
configuration the history displays graphs for every entity (well that's not exactly true - for instance hidden
entities or scenes
are never shown) on a given date. If you are only interested in some of the entities you several options:
- Define domains and entities to
exclude
(aka. blacklist). This is convenient when you are basically happy with the information displayed, but just want to remove some entities or domains. Usually these are entities/domains which do not change (likeweblink
) or rarely change (updater
orautomation
).
# Example configuration.yaml entry with exclude
history:
exclude:
domains:
- automation
- weblink
- updater
entities:
- sensor.last_boot
- sensor.date
- Define domains and entities to display by using the
include
configuration (aka. whitelist). If you have a lot of entities in your system and yourexclude
lists possibly get very large, it might be better just to define the entities or domains to display.
# Example configuration.yaml entry with include
history:
include:
domains:
- sensor
- switch
- media_player
- Use the
include
list to define the domains/entities to display, and exclude some of them with in theexclude
list. This makes sense if you for instance include thesensor
domain, but want to exclude some specific sensors. Instead of adding every sensor entity to theinclude
entities
list just include thesensor
domain and exclude the sensor entities you are not interested in.
# Example configuration.yaml entry with include and exclude
history:
include:
domains:
- sensor
- switch
- media_player
exclude:
entities:
- sensor.last_boot
- sensor.date
{% linkable_title Implementation details %}
The history is stored in a SQLite database home-assistant.db
within your config directory.
- events table is all events except
time_changed
that happened while recorder component was running. - states table contains all the
new_state
values ofstate_changed
events. - Inside the states table you have:
entity_id
: the entity_id of the entitystate
: the state of the entityattributes
: JSON of the state attributeslast_changed
: timestamp last time the state has changed. A state_changed event can happen when just attributes change.last_updated
: timestamp anything has changed (state, attributes)created
: timestamp this entry was inserted into the database
When the history component queries the states table it only selects states where the state has changed: WHERE last_changed=last_updated
{% linkable_title On dates %}
SQLite databases do not support native dates. That's why all the dates are saved in seconds since the UNIX epoch. Convert them manually using this site or in Python:
from datetime import datetime
datetime.fromtimestamp(1422830502)
{% linkable_title API %}
The history information are also available through the RESTful API.