Homeassistant Custom Component sensor provides travel time from https://maps.openrouteservice.org/.
This component will set up the following platforms.
Platform | Description |
---|---|
sensor |
Show travel time between two places. |
The easiest way to add this to your Homeassistant installation is using HACS. And then follow the instructions under Configuration below.
- Using the tool of choice open the directory (folder) for your HA configuration (where you find
configuration.yaml
). - If you do not have a
custom_components
directory (folder) there, you need to create it. - In the
custom_components
directory (folder) create a new folder calledopen_route_service
. - Download all the files from the
custom_components/open_route_service/
directory (folder) in this repository. - Place the files you downloaded in the new directory (folder) you created.
- Follow the instructions under Configuration below.
Using your HA configuration directory (folder) as a starting point you should now also have this:
custom_components/open_route_service/__init__.py
custom_components/open_route_service/manifest.json
custom_components/open_route_service/sensor.py
You need to register for an API key here.
Openroute Services offers a Free Plan which includes 1.000 free requests (For reverse geocoding) per day. More information can be found here
To enable the sensor, add the following lines to your configuration.yaml
file:
# Example entry for configuration.yaml
sensor:
- platform: open_route_service
api_key: "YOUR_API_KEY"
origin_latitude: "51.222975"
origin_longitude: "9.267577"
destination_latitude: "51.257430"
destination_longitude: "9.335892"
Key | Type | Required | Description |
---|---|---|---|
api_key |
string |
true |
Your application's API key (get one by following the instructions above). |
origin_latitude |
string |
true |
The starting latitude for calculating travel distance and time. Must be used in combination with origin_longitude. Cannot be used in combination with origin_entity_id |
origin_longitude |
string |
true |
The starting longitude for calculating travel distance and time. Must be used in combination with origin_latitude. Cannot be used in combination with origin_entity_id |
destination_latitude |
string |
true |
The finishing latitude for calculating travel distance and time. Must be used in combination with destination_longitude. Cannot be used in combination with destination_entity_id |
destination_longitude |
string |
true |
The finishing longitude for calculating travel distance and time. Must be used in combination with destination_latitude. Cannot be used in combination with destination_entity_id |
origin_entity_id |
string |
true |
The entity_id holding the starting point for calculating travel distance and time. Cannot be used in combination with origin_latitude / origin_longitude |
destination_entity_id |
string |
true |
The entity_id holding the finishing point for calculating travel distance and time. Cannot be used in combination with destination_latitude / destination_longitude |
name |
string |
false |
A name to display on the sensor. The default is "HERE Travel Time". |
mode |
string |
false |
You can choose between: cycling-regular , cycling-road , cycling-mountain , cycling-electric , driving-car , driving-hvg , foot-walking , foot-hiking or wheelchair . The default is driving-car . |
route_mode |
string |
false |
You can choose between: fastest , or shortest . The default is fastest |
unit_system |
string |
false |
You can choose between metric or imperial . Defaults to metric or imperial based on the Home Assistant configuration. |
scan_interval |
integer |
false |
"Defines the update interval of the sensor in seconds. Defaults to 300 (5 minutes)." |
origin_reverse_geocode_enabled |
boolean |
false |
"Whether to resolve the origin coordinates to a geolocation(address). Defaults to true." |
destination_reverse_geocode_enabled |
boolean |
false |
"Whether to resolve the destination coordinates to a geolocation(address). Defaults to true." |
Tracking can be set up to track entities of type device_tracker
, zone
, sensor
and person
. If an entity is placed in the origin or destination then every 5 minutes when the platform updates it will use the latest location of that entity.
# Example entry for configuration.yaml
sensor:
# Tracking entity to entity
- platform: open_route_service
api_key: "YOUR_API_KEY"
name: Phone To Home
origin_entity_id: device_tracker.mobile_phone
destination_entity_id: zone.home
- device_tracker
- If the state is a zone, then the zone location will be used
- If the state is not a zone, it will look for the longitude and latitude attributes
- zone
- Uses the longitude and latitude attributes
- sensor
- If the state is a zone, then will use the zone location
- All other states will be passed directly into the HERE API
- This includes all valid locations listed in the Configuration Variables
You can also use the homeassistant.update_entity
service to update the sensor on-demand. For example, if you want to update sensor.morning_commute
every 2 minutes on weekday mornings, you can use the following automation:
automation:
- id: update_morning_commute_sensor
alias: "Commute - Update morning commute sensor"
initial_state: 'on'
trigger:
- platform: time_pattern
minutes: '/2'
condition:
- condition: time
after: '08:00:00'
before: '11:00:00'
- condition: time
weekday:
- mon
- tue
- wed
- thu
- fri
action:
- service: homeassistant.update_entity
entity_id: sensor.morning_commute