My goal is to have an option to continue running a fan for 3 different durations. To easily select the times I’d like to display the choices as buttons. These should be like an input_select in that it makes sense to only have 1 option (or none) selected at a time. I believe I’ve got the UI somewhat how I want it using this for the card:
- type: "custom:hui-entities-card"
title: Garage AFS
show_header_toggle: false
entities:
- entity: switch.garage_fan
- entity: fan.garage_afs
type: custom:fan-control-entity-row
name: Garage Air Filter
customTheme: false
- type: "custom:button-entity-row"
buttons:
- entity: input_boolean.timer_30min
name: 30
service: script.afs_30
#service_data:
# entity_id:
style:
- flex-direction: column
icon_style:
- padding-right: 0 !important
- '--iron-icon-height': 2.5em
- '--iron-icon-width': 2.5em
state_styles:
"off":
font-weight: normal
"on":
color: green
font-weight: bold
- entity: input_boolean.timer_60min
name: 60
service: script.garage_afs_off
state_styles:
"off":
font-weight: normal
"on":
color: green
font-weight: bold
- entity: input_boolean.timer_90min
name: 90
service: script.garage_afs_off
I just have booleans for the buttons defined as:
timer_30min:
name: 30min
icon: mdi:timer
initial: off
timer_60min:
name: 60min
icon: mdi:timer
initial: off
timer_90min:
name: 90min
icon: mdi:timer
initial: off
and then the script is currently this:
afs_30:
alias: AFS OFF After 30min
sequence:
- entity_id: input_boolean.timer_30min
service: input_boolean.toggle
- entity_id: input_boolean.timer_60min
service: input_boolean.turn_off
- entity_id: input_boolean.timer_90min
service: input_boolean.turn_off
- condition: state
entity_id: input_boolean.timer_30min
state: 'on'
- delay: 00:30:00
- entity_id: script.garage_afs_off
service: homeassistant.turn_on
- entity_id: input_boolean.timer_30min
service: input_boolean.turn_off
I’m still in the testing phase as well as trying to determine if I’m even going about this the best way seems it seems rather convoluted to me. I do get this error thrown when I try the “30 minute timer” so with this code it’s not working properly yet.
AttributeError: 'NoneType' object has no attribute 'is_on'
2020-02-10 17:27:30 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection.140600466809040] 'NoneType' object has no attribute 'is_on'
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 134, in handle_call_service
connection.context(msg),
File "/usr/src/homeassistant/homeassistant/core.py", line 1226, in async_call
await asyncio.shield(self._execute_service(handler, service_call))
File "/usr/src/homeassistant/homeassistant/core.py", line 1251, in _execute_service
await handler.func(service_call)
File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 202, in service_handler
if script.is_on:
I initially tried using a timer and passing the duration based on which button was pressed but I couldn’t get that to work but I’m a little stuck on how to clean up this mess and get it to work.