from homeassistant.const import EVENT_STATE_CHANGED from datetime import datetime, time @state_trigger("input_select.light_mode") def monitor_service_calls(value=None): if not value is None: log.info(f"Light state change to: {value}") if value == 'All on': log.info("Go to All on") pyscript.state_goto_all_on() elif value == 'All off': log.info("Go to All off") pyscript.state_goto_all_off() elif value == 'Morning': log.info("Go to Morning") pyscript.state_goto_morning() elif value == 'Windows': log.info("Go to Windows") pyscript.state_goto_window() else: log.info("Light state was None") @service def handleWallButtonPressed(): log.info(f"The wall button has been pressed. Curr state: {input_select.light_mode}") currHour = datetime.now().time().hour if( input_select.light_mode == 'All on' ): input_select.light_mode = 'All off' elif( input_select.light_mode == 'Morning' ): input_select.light_mode = 'All off' elif( input_select.light_mode == 'All off' ): log.info(f'Is All off. Hour is: {currHour}') if( currHour == 5 or currHour == 6 ): input_select.light_mode = 'Morning' else: input_select.light_mode = 'All on' elif( input_select.light_mode == 'Windows' ): input_select.light_mode = 'All on' @service def state_goto_all_on(): task.unique('state_goto_py') log.info(f"********* ALL ON *********** State: " + input_select.light_mode ) light.turn_on(entity_id='light.tradfri_bulb') # Stora flyglampan light.turn_on(entity_id='light.hall_inner') light.turn_on(entity_id='light.hall_door') light.turn_on(entity_id='light.rislampa') switch.turn_on(entity_id='switch.matsal_altandorr') switch.turn_on(entity_id='switch.matsal_piano') switch.turn_on(entity_id='switch.koksfonster') for x in range(2): #light.turn_on(entity_id='light.liv_room_table_lamp',brightness='1') # Temp disable when high energy prices #task.sleep(0.5) light.turn_on(entity_id='light.liv_room_corner_lamp',brightness='1') task.sleep(0.5) pyscript.kitchen_worklights_button_trigger() #pyscript.handle_bedroom_light() # Temp disable when high energy prices @service def state_goto_window(): task.unique('state_goto_py') log.info(f"********* WINDOW *********** State: " + input_select.light_mode ) light.turn_off(entity_id='light.tradfri_bulb') switch.turn_on(entity_id='switch.koksfonster') switch.turn_off(entity_id='switch.matsal_altandorr') switch.turn_off(entity_id='switch.matsal_piano') light.turn_off(entity_id='light.hall_inner') light.turn_off(entity_id='light.hall_door') light.turn_off(entity_id='light.rislampa') for x in range(2): light.turn_off(entity_id='light.liv_room_table_lamp') task.sleep(0.5) light.turn_off(entity_id='light.liv_room_corner_lamp') task.sleep(0.5) pyscript.kitchen_worklights_button_trigger() #pyscript.handle_bedroom_light() @service def state_goto_morning(): task.unique('state_goto_py') log.info(f"********* MORNING *********** State: " + str(input_select.light_mode) ) light.turn_off(entity_id='light.tradfri_bulb') switch.turn_off(entity_id='switch.matsal_altandorr') switch.turn_on(entity_id='switch.matsal_piano') switch.turn_on(entity_id='switch.koksfonster') light.turn_off(entity_id='light.hall_inner') light.turn_on(entity_id='light.hall_door') light.turn_off(entity_id='light.rislampa') for x in range(2): light.turn_on(entity_id='light.liv_room_corner_lamp',brightness='1') task.sleep(0.5) pyscript.kitchen_worklights_button_trigger() #pyscript.handle_bedroom_light() @service def state_goto_all_off(): task.unique('state_goto_py') log.info(f"********* ALL OFF *********** State: " + input_select.light_mode ) light.turn_off(entity_id='light.tradfri_bulb') light.turn_off(entity_id='light.hall_inner') light.turn_off(entity_id='light.hall_door') light.turn_off(entity_id='light.rislampa') switch.turn_off(entity_id='switch.koksfonster') switch.turn_off(entity_id='switch.matsal_altandorr') switch.turn_off(entity_id='switch.matsal_piano') #switch.turn_off(entity_id='switch.tradfri_outlet') # Sovrum OFF # Temp disable when high energy prices for x in range(2): #light.turn_off(entity_id='light.liv_room_table_lamp') # Temp disable when high energy prices #task.sleep(0.5) light.turn_off(entity_id='light.liv_room_corner_lamp') task.sleep(0.5) input_boolean.movie_mode = 'off' pyscript.kitchen_worklights_button_trigger() @state_trigger("input_boolean.movie_mode") def movie_mode_button_trigger(): log.info(f"********* MOVIE MODE *********** To:" + input_boolean.movie_mode + " State: " + input_select.light_mode ) if input_boolean.movie_mode == 'off' and input_select.light_mode == 'All on': log.info(f"Movie mode, turn lights ON") for x in range(2): light.turn_on(entity_id='light.liv_room_table_lamp',brightness='1') task.sleep(0.5) light.turn_on(entity_id='light.liv_room_corner_lamp',brightness='1') task.sleep(0.5) else: log.info(f"Movie mode, turn lights OFF") for x in range(2): light.turn_off(entity_id='light.liv_room_table_lamp') task.sleep(0.5) light.turn_off(entity_id='light.liv_room_corner_lamp') task.sleep(0.5)