So I created this automation with input from the community, that I used to control my lights with an IHC controller. Uses 4 binary_sensor inputs and one light to be controlled. But blueprint writes the following error:
Invalid blueprint: extra keys not allowed @ data['blueprint']['action']. Got [OrderedDict([('choose', [OrderedDict([('conditions', [OrderedDict([('condition', 'template'), ('value_template', "{{ ( trigger.entity_id ) == ( 'light_turn_on' ) }}")])]), ('sequence', [OrderedDict([('service', 'light.turn_on'), ('entity_id', Input(name='target_light')), ('data', OrderedDict([('brightness', 190)]))])])]), OrderedDict([('conditions', [OrderedDict([('condition', 'template'), ('value_template', "{{ ( trigger.entity_id ) == ( 'light_turn_off' ) }}")])]), ('sequence', [OrderedDic... extra keys not allowed @ data['blueprint']['condition']. Got [] extra keys not allowed @ data['blueprint']['mode']. Got 'single' extra keys not allowed @ data['blueprint']['trigger']. Got [OrderedDict([('platform', 'state'), ('entity_id', [Input(name='light_turn_on'), Input(name='light_turn_off'), Input(name='light_turn_up'), Input(name='light_turn_down')]), ('from', 'off'), ('to', 'on')])] extra keys not allowed @ data['blueprint']['variables']. Got OrderedDict([('light_turn_on', Input(name='light_turn_on')), ('light_turn_off', Input(name='light_turn_off')), ('light_turn_up', Input(name='light_turn_up')), ('light_turn_down', Input(name='light_turn_down')), ('target_light', Input(name='target_ligh'))])
Code:
blueprint:
name: Light controller
description: Turn a light On/Off/Up/Down based on binary sensor
domain: automation
input:
light_turn_on:
name: Binary Sensor On
description: This sensor is used to register
selector:
entity:
domain: binary_sensor
light_turn_off:
name: Binary Sensor Off
description: This sensor is used to register turn Off state
selector:
entity:
domain: binary_sensor
light_turn_up:
name: Binary Sensor brightness up
description: This sensor is used to register turn brightness up state
selector:
entity:
domain: binary_sensor
light_turn_down:
name: Binary Sensor brightness down
description: This sensor is used to register turn brightness down state
selector:
entity:
domain: binary_sensor
target_light:
name: Light to control
description: The light to turn On/Off/ and brightness Up/Down
selector:
target:
entity:
domain: light
# Declare blueprint inputs as variables for use in {{templates}}
variables:
light_turn_on: !input light_turn_on
light_turn_off: !input light_turn_off
light_turn_up: !input light_turn_up
light_turn_down: !input light_turn_down
target_light: !input target_ligh
# Trigger when binary_sensor is changed from Off to On
trigger:
- platform: state
entity_id:
- !input light_turn_on
- !input light_turn_off
- !input light_turn_up
- !input light_turn_down
from: 'off'
to: 'on'
condition: []
action:
- choose:
- conditions:
- condition: template
value_template: '{{ ( trigger.entity_id ) == ( ''light_turn_on'' ) }}'
sequence:
- service: light.turn_on
entity_id: !input target_light
data:
brightness: 190
- conditions:
- condition: template
value_template: '{{ ( trigger.entity_id ) == ( ''light_turn_off'' ) }}'
sequence:
- service: light.turn_off
entity_id: !input target_light
- conditions:
- condition: template
value_template: '{{ ( trigger.entity_id ) == ( ''light_turn_up'' ) }}'
sequence:
- service: light.turn_on
entity_id: !input target_light
data_template:
brightness: '{{ ([states.target_light.attributes.brightness + 20, 255] | min) | int }}'
- conditions:
- condition: template
value_template: '{{ ( trigger.entity_id ) == ( ''light_turn_down'' ) }}'
sequence:
- service: light.turn_on
entity_id: !input target_light
data_template:
brightness: '{{ ([states.target_light.attributes.brightness - 20, 5] | max) | int }}'
mode: single