using the 2 techniques you both suggested, and Yamllint checked, seems to be fine both ways. The initial state is there as an example, and ‘pattern’ checks if one fills it put correctly ![]()
full package fyi:
##########################################################################################
# Package Google Traveltime
# only feed api with calls while necessary/desired to mitigate api call restrictions
# MtHvdB 07072018
##########################################################################################
homeassistant:
customize:
sensor.travel_destination:
templates:
icon: >
if (entities['input_select.travel_mode'].state === 'bicycling') return 'mdi:bike';
if (entities['input_select.travel_mode'].state === 'driving') return 'mdi:car';
if (entities['input_select.travel_mode'].state === 'walking') return 'mdi:transit-transfer';
if (entities['input_select.travel_mode'].state === 'transit') return 'mdi:train';
return 'mdi:bus';
sensor.select_travel_destination:
icon: mdi:login
sensor.select_travel_origin:
icon: mdi:logout
sensor.select_travel_mode:
icon: mdi:transit-transfer
input_select.travel_mode:
templates:
icon: >
if (state === 'bicycling') return 'mdi:bike';
if (state === 'driving') return 'mdi:car';
if (state === 'walking') return 'mdi:transit-transfer';
if (state === 'transit') return 'mdi:train';
return 'mdi:bus';
sensor.distance_selected_destination:
icon: mdi:map-marker-distance
friendly_name: Distance
sensor.duration_selected_destination:
icon: mdi:timer
friendly_name: Duration
sensor.duration_in_traffic_selected_destination:
icon: mdi:traffic-light
friendly_name: In traffic
##########################################################################################
# Sensors
##########################################################################################
sensor:
- platform: google_travel_time
api_key: !secret google_travel
mode: sensor.select_travel_mode
departure_time: now
name: Travel destination
origin: sensor.select_travel_origin
destination: sensor.select_travel_destination
- platform: template
sensors:
select_travel_destination:
value_template: '{{states.input_select.travel_destination.state}}'
select_travel_origin:
value_template: '{{states.input_select.travel_origin.state}}'
select_travel_mode:
value_template: '{{states.input_select.travel_mode.state}}'
distance_selected_destination:
value_template: '{{states.sensor.travel_destination.attributes.distance}}'
duration_selected_destination:
value_template: '{{states.sensor.travel_destination.attributes.duration}}'
duration_in_traffic_selected_destination:
value_template: '{{states.sensor.travel_destination.attributes.duration_in_traffic}}'
input_travel_origin:
value_template: '{{states.input_text.travel_origin.state}}'
input_travel_destination:
value_template: '{{states.input_text.travel_destination.state}}'
##########################################################################################
# Inputs
##########################################################################################
input_text:
travel_destination:
icon: mdi:login
name: Travel destination
pattern:
- City
- Country
initial: "City, Country"
travel_origin:
icon: mdi:logout
name: Travel origin
pattern: "[City, Country]"
initial: "City, Country"
input_select:
travel_destination:
icon: mdi:login
name: Travel destination
options:
- Select
- Not yet set
initial: Select
# - zone.home
# - device.tracker.iphone
# - device.tracker.telefoon
travel_origin:
icon: mdi:logout
name: Travel origin
options:
- Select
- Not yet set
initial: Select
# - zone.home
# - device_tracker.iphone
# - device_tracker.telefoon
travel_mode:
icon: mdi:bike
name: Travel mode
options:
- driving
- bicycling
- walking
- transit
initial: bicycling
##########################################################################################
# Automation to set Input_select options with template
##########################################################################################
automation:
- alias: Update Travel Destination options
initial_state: 'on'
trigger:
- platform: state
entity_id: input_text.travel_destination
- platform: homeassistant
event: start
action:
- service: input_select.set_options
data_template:
entity_id: input_select.travel_destination
options:
- Select
- Roosendaal, Netherlands
- Amsterdam, Netherlands
- Eindhoven, Netherlands
- Utrecht, Netherlands
- Antwerp, Belgium
- Brussels, Belgium
- Berlin, Germany
- Bayreuth, Germany
- Paris, France
- '{{ states("input_text.travel_destination") }}'
- alias: Update Travel Destination options
initial_state: 'on'
trigger:
- platform: state
entity_id: input_text.travel_origin
- platform: homeassistant
event: start
action:
- service: input_select.set_options
data_template:
entity_id: input_select.travel_origin
options:
- Select
- Roosendaal, Netherlands
- Amsterdam, Netherlands
- Eindhoven, Netherlands
- Utrecht, Netherlands
- Antwerp, Belgium
- Brussels, Belgium
- Berlin, Germany
- Bayreuth, Germany
- Paris, France
- '{{ states("input_text.travel_origin") }}'
##########################################################################################
# Frontend Group
##########################################################################################
group:
travel_destination:
name: Travel destination
icon: mdi:transit-transfer
entities:
- input_select.travel_origin
- input_text.travel_origin
- input_select.travel_destination
- input_text.travel_destination
- input_select.travel_mode
- sensor.travel_destination
- sensor.distance_selected_destination
- sensor.duration_selected_destination
- sensor.duration_in_traffic_selected_destination