Custom Component for Homeassistant Providing Travel Time Information using openrouteservice.org
https://github.com/eifinger/open_route_service.git
sensor | Show travel time between two places.
configuration.yaml).custom_components directory (folder) there, you need to create it.custom_components directory (folder) create a new folder called open_route_service.custom_components/open_route_service/ directory (folder) in this repository.text
custom_components/open_route_service/__init__.py
custom_components/open_route_service/manifest.json
custom_components/open_route_service/sensor.py
`
## Setup
You need to register for an API key [here](https://openrouteservice.org/dev).
Openroute Services offers a Free Plan which includes 1.000 free requests (For reverse geocoding) per day. More information can be found [here](https://openrouteservice.org/plans/)
## Configuration
To enable the sensor, add the following lines to your configuration.yaml file:
`yaml
# 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"
`
## Configuration options
Key | Type | Required | Description
-- | -- | -- | --
apikey | string | true | Your application's API key (get one by following the instructions above).
originlatitude | 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
originlongitude | 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
destinationlatitude | 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
destinationlongitude | 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
originentityid | 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
destinationentityid | 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, driving-car or foot-walking. The default is driving-car.
routemode | string | false | You can choose between: fastest, or shortest. The default is fastest
unitsystem | string | false | You can choose between metric or imperial. Defaults to metric or imperial based on the Home Assistant configuration.
scaninterval | integer | false | "Defines the update interval of the sensor in seconds. Defaults to 300 (5 minutes)."
originreversegeocodeenabled | boolean | false | "Whether to resolve the origin coordinates to a geolocation(address). Defaults to true."
destinationreversegeocodeenabled | boolean | false | "Whether to resolve the destination coordinates to a geolocation(address). Defaults to true."
## Dynamic Configuration
Tracking can be set up to track entities of type devicetracker, 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.
`yaml
# 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
`
## Entity Tracking
- **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_
## Updating sensors on-demand using Automation
You can also use the homeassistant.updateentity 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:
`yaml
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
``
