├── LICENSE ├── README.md ├── ZWAVE.md ├── alarm └── manual.yaml ├── alerts ├── README.md ├── flood_while_away.yaml ├── flood_while_home.yaml ├── freezer_lid.yaml ├── garage_door_l.yaml └── garage_door_r.yaml ├── auth_providers.yaml ├── automation ├── README.md ├── alarm │ ├── README.md │ ├── alarm_arm_away.yaml │ ├── alarm_arm_night.yaml │ ├── alarm_arm_vacation.yaml │ ├── alarm_disarm_hall.yaml │ ├── alarm_disarm_morning.yaml │ └── alarm_disarm_returned.yaml ├── all_away_media_off.yaml ├── battery │ ├── README.md │ ├── battery_aa.yaml │ ├── battery_cr1632.yaml │ ├── battery_cr2032.yaml │ ├── battery_cr2450.yaml │ └── battery_notes.yaml ├── bedtime.yaml ├── camera │ ├── frigate_motion_start.yaml │ ├── frigate_motion_stop.yaml │ ├── frigate_new_event.yaml │ ├── frigate_new_notification.yaml │ ├── frigate_new_object.yaml │ ├── frigate_notification.yaml │ ├── start_camera_stream.yaml │ └── stop_camera_stream.yaml ├── family_room │ ├── README.md │ ├── awtrix_clock_colours.yaml │ ├── family_room_not_occupied.yaml │ ├── family_room_occupied.yaml │ ├── freezer_left_open.yaml │ ├── modes │ │ ├── family_room_arrival.yaml │ │ ├── family_room_away.yaml │ │ ├── family_room_bedtime.yaml │ │ ├── family_room_off.yaml │ │ └── family_room_on.yaml │ ├── reset_radio.yaml │ └── tv_not_satv.yaml ├── front_of_house │ ├── README.md │ ├── front_door_closed.yaml │ ├── front_door_left_open.yaml │ ├── front_door_open.yaml │ ├── garage_door_closed.yaml │ ├── garage_door_open.yaml │ ├── garage_open_nobody_home.yaml │ ├── number-sign-off.yaml │ ├── number-sign-on-evening.yaml │ ├── number-sign-on-morning.yaml │ ├── person2-up-early.yaml │ ├── person2_away_garage_open.yaml │ ├── person2_home_disable_garage_open.yaml │ ├── person2_home_enable_garage_open.yaml │ └── probably_leaving.yaml ├── garden │ ├── README.md │ ├── garden_lights_left_on.yaml │ ├── gate_open_doors_closed.yaml │ ├── nighttime_garden_off.yaml │ ├── returned_gate_open.yaml │ ├── utility-door-left-open.yaml │ ├── utility-door-sunset-closed.yaml │ ├── utility-door-sunset-off.yaml │ ├── utility-door-sunset-on.yaml │ └── utility-remote.yaml ├── guest_room │ ├── guest_bedroom_not_occupied.yaml │ └── guest_bedroom_occupied.yaml ├── guests │ ├── guest_mode_off.yaml │ └── guest_mode_on.yaml ├── hall │ ├── README.md │ ├── hall_lights_on_when_off.yaml │ ├── hall_lights_turned_off.yaml │ ├── hall_lights_unavailable_off.yaml │ ├── hall_not_occupied.yaml │ ├── hall_occupied.yaml │ ├── lights │ │ ├── hall_lights_to_away.yaml │ │ ├── hall_lights_to_bedtime.yaml │ │ ├── hall_lights_to_dim.yaml │ │ ├── hall_lights_to_motion.yaml │ │ ├── hall_lights_to_night_on.yaml │ │ └── hall_lights_to_off.yaml │ ├── modes │ │ ├── hall_mode_away.yaml │ │ ├── hall_mode_bedtime.yaml │ │ ├── hall_mode_dim.yaml │ │ ├── hall_mode_night_on.yaml │ │ └── hall_mode_off.yaml │ └── turned_off_by_person3.yaml ├── house │ ├── house_awake.yaml │ ├── lights │ │ ├── house_lights_from_bedtime.yaml │ │ └── house_lights_to_bedtime.yaml │ └── modes │ │ ├── house_mode_auto.yaml │ │ ├── house_mode_away.yaml │ │ ├── house_mode_bedtime.yaml │ │ └── house_mode_holiday.yaml ├── house_awake.yaml ├── living_room │ ├── README.md │ ├── cooler_outside_livingroom.yaml │ ├── dimmer.yaml │ ├── dimmer_down_motion.yaml │ ├── dimmer_off.yaml │ ├── dimmer_off_while_off.yaml │ ├── dimmer_on.yaml │ ├── dimmer_on_while_away.yaml │ ├── dimmer_up_enable_lights.yaml │ ├── dog_slipped_in.yaml │ ├── hotter_outside_livingroom.yaml │ ├── lights │ │ ├── living_room_christmas_tree_off.yaml │ │ ├── living_room_christmas_tree_on.yaml │ │ ├── living_room_lights_bedtime.yaml │ │ ├── living_room_lights_day_on.yaml │ │ ├── living_room_lights_dim_on.yaml │ │ ├── living_room_lights_motion.yaml │ │ ├── living_room_lights_night_on.yaml │ │ ├── living_room_lights_off.yaml │ │ ├── living_room_lights_on_when_off.yaml │ │ └── living_room_lights_wake_on.yaml │ ├── living_room_adaptive.yaml │ ├── living_room_dark_motion.yaml │ ├── living_room_dark_no_motion.yaml │ ├── living_room_movement.yaml │ ├── living_room_table_light_unav_off.yaml │ ├── living_room_table_light_unav_on.yaml │ ├── modes │ │ ├── living_room_arrival.yaml │ │ ├── living_room_away.yaml │ │ ├── living_room_bedtime.yaml │ │ ├── living_room_day_on.yaml │ │ ├── living_room_dim.yaml │ │ ├── living_room_dim_motion.yaml │ │ ├── living_room_dim_off.yaml │ │ ├── living_room_mode_motion.yaml │ │ ├── living_room_mode_motion_off.yaml │ │ ├── living_room_night_on.yaml │ │ ├── living_room_not_occupied.yaml │ │ ├── living_room_occupied.yaml │ │ ├── living_room_off.yaml │ │ ├── living_room_off_empty.yaml │ │ ├── living_room_sleep_mode.yaml │ │ └── living_room_wake_off.yaml │ ├── override │ │ └── living_room_override.yaml │ ├── sonos_off_tv_unmute.yaml │ ├── sonos_on_tv_mute.yaml │ ├── tv-on-sonos-off.yaml │ ├── tv_light_on.yaml │ ├── tv_off.yaml │ └── tv_on_reconnect.yaml ├── master_bedroom │ ├── README.md │ ├── air_quality.yaml │ ├── bedhead-light-dim-late.yaml │ ├── lights │ │ ├── lights_off_sleeping_bedtime.yaml │ │ ├── master_bedroom_lights_bedtime.yaml │ │ ├── master_bedroom_lights_dim.yaml │ │ ├── master_bedroom_lights_motion.yaml │ │ ├── master_bedroom_lights_night.yaml │ │ ├── master_bedroom_lights_off.yaml │ │ ├── master_bedroom_lights_on.yaml │ │ ├── master_bedroom_lights_sleeping.yaml │ │ └── master_bedroom_lights_wake.yaml │ ├── master_bedroom_button_pushed.yaml │ ├── master_bedroom_cube.yaml │ ├── master_bedroom_not_occupied.yaml │ ├── master_bedroom_occupied.yaml │ └── modes │ │ ├── master_bedroom_lights_turned_off.yaml │ │ ├── master_bedroom_lights_turned_on.yaml │ │ ├── master_bedroom_mode_bedtime.yaml │ │ ├── master_bedroom_mode_off.yaml │ │ ├── master_bedroom_mode_on.yaml │ │ ├── master_bedroom_mode_wake.yaml │ │ ├── master_bedroom_motion.yaml │ │ ├── master_bedroom_no_motion.yaml │ │ └── master_bedroom_to_mode_off.yaml ├── notification │ ├── README.md │ ├── awtrix_weather_app.yaml │ ├── bin_notification.yaml │ ├── bin_reminder.yaml │ ├── rain_alert.yaml │ ├── signal │ │ └── signal_received.yaml │ ├── telegram │ │ ├── callback_whereis.yaml │ │ ├── command_check.yaml │ │ ├── command_help.yaml │ │ ├── command_lights.yaml │ │ ├── command_lights_on.yaml │ │ ├── command_ping.yaml │ │ ├── command_status.yaml │ │ ├── command_trains.yaml │ │ ├── command_where.yaml │ │ ├── command_whereis.yaml │ │ ├── commands_lights_off.yaml │ │ └── telegram_callback_trains.yaml │ └── weather_notification.yaml ├── office │ ├── README.md │ ├── awtrix_calendar.yaml │ ├── awtrix_clock_mode.yaml │ ├── awtrix_next_meeting.yaml │ ├── hotter_outside_office.yaml │ ├── lights │ │ ├── office_alert.yaml │ │ ├── office_lights_dim.yaml │ │ ├── office_lights_motion.yaml │ │ ├── office_lights_off.yaml │ │ ├── office_lights_on.yaml │ │ ├── office_lights_pause.yaml │ │ ├── office_lights_unpaused.yaml │ │ └── office_lights_wake.yaml │ ├── location_update.yaml │ ├── modes │ │ ├── office_lights_turned_off.yaml │ │ ├── office_lights_turned_on.yaml │ │ ├── office_mode_no_wake.yaml │ │ ├── office_mode_off.yaml │ │ ├── office_mode_on.yaml │ │ ├── office_mode_wake.yaml │ │ ├── office_motion.yaml │ │ ├── office_no_motion.yaml │ │ ├── office_no_presence.yaml │ │ ├── office_not_occupied.yaml │ │ ├── office_occupied.yaml │ │ ├── office_paused_motion.yaml │ │ ├── office_presence.yaml │ │ └── office_unoccupied.yaml │ ├── office_air.yaml │ ├── office_calendar_announcement.yaml │ ├── office_calendar_reminder.yaml │ ├── office_dial.yaml │ ├── office_dial_rotate.yaml │ ├── office_dial_test.yaml │ ├── office_lights_on_when_off.yaml │ ├── office_meeting_ended.yaml │ ├── office_meeting_started.yaml │ ├── office_sonos_switch_off.yaml │ ├── office_sonos_unavailable.yaml │ ├── office_unoccupied_window_open.yaml │ ├── office_volume_change.yaml │ ├── office_white_noise.yaml │ ├── outside_door_opened.yaml │ ├── pause_music_in_the_office.yaml │ └── play_music_in_the_office.yaml ├── people │ ├── adults_away.yaml │ ├── adults_away_something_open.yaml │ ├── adults_returned.yaml │ ├── bedtime_something_open.yaml │ ├── guest_mode_off_nobody_home.yaml │ ├── holiday.yaml │ ├── holiday_over.yaml │ ├── home_not_occupied.yaml │ ├── home_occupied.yaml │ ├── nearly_home.yaml │ ├── people_reload_just_arrived.yaml │ ├── people_reload_just_left.yaml │ ├── people_status_arrived.yaml │ ├── people_status_away.yaml │ ├── people_status_home.yaml │ ├── people_status_left.yaml │ ├── people_status_nearly_home.yaml │ ├── person1 │ │ ├── README.md │ │ ├── person1_asleep.yaml │ │ ├── person1_at_ep.yaml │ │ ├── person1_at_haymarket.yaml │ │ ├── person1_at_work.yaml │ │ ├── person1_awake.yaml │ │ ├── person1_away.yaml │ │ ├── person1_changing_zones.yaml │ │ ├── person1_home.yaml │ │ ├── person1_home_after_work.yaml │ │ ├── person1_in_bed.yaml │ │ ├── person1_location_update.yaml │ │ ├── person1_next_alarm.yaml │ │ ├── person1_not_at_work.yaml │ │ ├── person1_on_the_move.yaml │ │ ├── person1_phone_plugged.yaml │ │ ├── person1_phone_unplugged.yaml │ │ ├── person1_status_pixel.yaml │ │ ├── person1_tablet_away.yaml │ │ ├── person1_tablet_home.yaml │ │ ├── person1_travelling.yaml │ │ ├── person1_up.yaml │ │ ├── person1_wifi_status.yaml │ │ └── startup_person1_up.yaml │ ├── person2 │ │ ├── person2_asleep.yaml │ │ ├── person2_at_gym.yaml │ │ ├── person2_at_station.yaml │ │ ├── person2_awake.yaml │ │ ├── person2_away.yaml │ │ ├── person2_changing_zones.yaml │ │ ├── person2_coming_home.yaml │ │ ├── person2_driving.yaml │ │ ├── person2_high_accuracy.yaml │ │ ├── person2_home.yaml │ │ ├── person2_in_bed.yaml │ │ ├── person2_in_the_car.yaml │ │ ├── person2_location_update.yaml │ │ ├── person2_nearly_home.yaml │ │ ├── person2_next_alarm.yaml │ │ ├── person2_not_driving.yaml │ │ ├── person2_not_overseas.yaml │ │ ├── person2_on_the_move.yaml │ │ ├── person2_overseas.yaml │ │ ├── person2_phone_not_plugged.yaml │ │ ├── person2_phone_plugged.yaml │ │ ├── person2_phone_unplugged.yaml │ │ ├── person2_pre_alarm.yaml │ │ ├── person2_returning.yaml │ │ ├── person2_returning_home.yaml │ │ ├── person2_sleep.yaml │ │ ├── person2_tablet_plugged.yaml │ │ ├── person2_tablet_unplugged.yaml │ │ ├── person2_tablet_wifi_status.yaml │ │ ├── person2_up.yaml │ │ ├── person2_wifi_status.yaml │ │ ├── sleep_as_android.yaml │ │ └── startup_person2_up.yaml │ ├── person3 │ │ ├── person3_asleep.yaml │ │ ├── person3_awake.yaml │ │ ├── person3_away.yaml │ │ ├── person3_changing_zones.yaml │ │ ├── person3_coming_home.yaml │ │ ├── person3_home.yaml │ │ ├── person3_in_bed.yaml │ │ ├── person3_location_update.yaml │ │ ├── person3_next_alarm.yaml │ │ ├── person3_on_the_move.yaml │ │ ├── person3_phone_plugged.yaml │ │ ├── person3_phone_unplugged.yaml │ │ ├── person3_status_pixel.yaml │ │ ├── person3_travelling.yaml │ │ ├── person3_up.yaml │ │ ├── person3_wifi_status.yaml │ │ └── startup_person3_up.yaml │ ├── person4 │ │ ├── person4_away.yaml │ │ ├── person4_changing_zones.yaml │ │ ├── person4_home.yaml │ │ ├── person4_location_update.yaml │ │ └── person4_on_the_move.yaml │ ├── return-train-status.yaml │ ├── returned_home.yaml │ ├── somebody_arrived_scan.yaml │ ├── startup_location_updates.yaml │ ├── tasker_hook.yaml │ └── train-status.yaml ├── places │ ├── person2_at_ams.yaml │ ├── person2_at_bru.yaml │ ├── person2_at_cdg.yaml │ ├── person2_at_iad.yaml │ ├── person2_at_lcy.yaml │ ├── person2_at_lhr.yaml │ ├── person2_at_sin.yaml │ ├── person2_at_work_airport.yaml │ └── person2_at_work_airport_returning.yaml ├── platform │ ├── README.md │ ├── bt-front-dead.yaml │ ├── bt-front-offline-long.yaml │ ├── bt-front-offline.yaml │ ├── bt-rear-dead.yaml │ ├── bt-rear-offline.yaml │ ├── bt_node_hung.yaml │ ├── ha-started.yaml │ ├── ha-stopped.yaml │ ├── ha_automations_reloaded.yaml │ ├── hacs_update.yaml │ ├── healthcheck.yaml │ ├── internet_outage.yaml │ ├── last_motion.yaml │ ├── last_opened.yaml │ ├── last_opened_interior.yaml │ ├── living_room_table_off.yaml │ ├── living_room_table_on.yaml │ ├── notify_about_unavailable.yaml │ ├── plex_hook.yaml │ ├── printer_low.yaml │ ├── printer_problems.yaml │ ├── scanner_stuck.yaml │ ├── wan_ip_changed.yaml │ ├── zigbee2mqtt_devices.yaml │ ├── zigbee_offline.yaml │ └── zigbee_online.yaml ├── season │ ├── README.md │ ├── christmas_disabled.yaml │ ├── christmas_enabled.yaml │ ├── season_is_autumn.yaml │ ├── season_is_christmas.yaml │ ├── season_is_easter.yaml │ ├── season_is_spring.yaml │ ├── season_is_summer.yaml │ └── season_is_winter.yaml ├── second_bedroom │ ├── README.md │ ├── alarm │ │ ├── person1_alarm_left_playing.yaml │ │ ├── person1_alarm_light.yaml │ │ ├── person1_alarm_playing.yaml │ │ └── person1_up_reminder_off.yaml │ ├── lights │ │ ├── second_bedroom_lights_to_bedtime.yaml │ │ ├── second_bedroom_lights_to_dim.yaml │ │ ├── second_bedroom_lights_to_motion.yaml │ │ ├── second_bedroom_lights_to_off.yaml │ │ ├── second_bedroom_lights_to_on.yaml │ │ └── second_bedroom_lights_to_wake.yaml │ ├── modes │ │ ├── second_bedroom_mode_bedtime.yaml │ │ ├── second_bedroom_mode_motion.yaml │ │ ├── second_bedroom_mode_no_motion.yaml │ │ ├── second_bedroom_mode_off.yaml │ │ ├── second_bedroom_mode_on.yaml │ │ └── second_bedroom_mode_wake.yaml │ ├── person1_bedside_left_on.yaml │ ├── person1_phone_alarm.yaml │ ├── second_bedroom_button.yaml │ ├── second_bedroom_not_occupied.yaml │ └── second_bedroom_occupied.yaml ├── spare_bedroom │ ├── guest_mode_off.yaml │ └── guest_mode_on.yaml ├── test │ ├── README.md │ ├── telegram_callback.yaml │ ├── telegram_command.yaml │ ├── telegram_text.yaml │ ├── test_alarm.yaml │ └── test_calendar.yaml ├── things │ ├── bin_calendar.yaml │ ├── car_away.yaml │ ├── car_home.yaml │ ├── car_location.yaml │ ├── car_moved.yaml │ ├── car_update.yaml │ ├── power_cycle_loki.yaml │ └── power_cycle_tempus.yaml ├── toilet │ ├── toilet_occupied.yaml │ └── toilet_unoccupied.yaml └── vestibule │ ├── lights │ ├── vestibule_lights_to_away.yaml │ ├── vestibule_lights_to_bedtime.yaml │ ├── vestibule_lights_to_night_on.yaml │ ├── vestibule_lights_to_off.yaml │ └── vestibule_lights_to_on.yaml │ └── modes │ ├── vestibule_mode_away.yaml │ ├── vestibule_mode_bedtime.yaml │ ├── vestibule_mode_night_on.yaml │ ├── vestibule_mode_off.yaml │ └── vestibule_mode_on.yaml ├── automations.yaml ├── binary_sensors ├── README.md ├── meteoalarm.yaml ├── trend_living_room_light.yaml └── trend_sun_elevation.yaml ├── blueprints ├── automation │ ├── README.md │ ├── awtrix │ │ └── awtrix_calendar_notifier.yaml │ ├── homeassistant │ │ ├── README.md │ │ ├── motion_light.yaml │ │ └── notify_leaving_zone.yaml │ ├── light_motion.yaml │ ├── pavax │ │ └── z2m_aqara_trv_external_temperature.yaml │ ├── person_away.yaml │ └── person_home.yaml ├── script │ └── homeassistant │ │ └── confirmable_notification.yaml └── template │ └── homeassistant │ └── inverted_binary_sensor.yaml ├── climate └── README.md ├── configuration.yaml ├── custom_components ├── README.md ├── adaptive_lighting │ └── services.yaml ├── alarmo │ └── services.yaml ├── awtrix │ └── services.yaml ├── battery_notes │ └── services.yaml ├── frigate │ └── services.yaml ├── hacs │ └── frontend │ │ ├── elements │ │ └── hacs.css │ │ └── templates │ │ ├── base.html │ │ ├── error.html │ │ ├── grid.html │ │ ├── grid_new.html │ │ ├── message.html │ │ ├── modal │ │ ├── upgrade_all.html │ │ └── wrong_ha_version.html │ │ ├── overviews.html │ │ ├── repository.html │ │ ├── repository │ │ ├── authors.html │ │ ├── buttons.html │ │ ├── menu.html │ │ ├── note.html │ │ └── versionselect.html │ │ ├── settings.html │ │ ├── settings │ │ ├── buttons.html │ │ ├── custom_repositories.html │ │ ├── dev │ │ │ ├── remove_new_flag.html │ │ │ ├── repositories.html │ │ │ ├── repository.html │ │ │ ├── set_ha_version.html │ │ │ ├── template_test.html │ │ │ └── token.html │ │ ├── developer.html │ │ ├── hacs_info.html │ │ └── hidden_repositories.html │ │ ├── table.html │ │ └── table_new.html ├── llmvision │ └── services.yaml ├── myskoda │ └── quality_scale.yaml ├── remote_homeassistant │ └── services.yaml ├── skodaconnect │ └── services.yaml ├── spook │ └── services.yaml ├── sun2 │ └── services.yaml ├── thermal_comfort │ └── services.yaml ├── watchman │ └── services.yaml └── webrtc │ └── www │ ├── embed.html │ └── index.html ├── customize.yaml ├── device_tracker ├── README.md └── nmap_tracker.yaml.DISABLED ├── docker-compose.yml ├── ffmpeg.yaml ├── floorplan.html ├── frontend.yaml ├── go2rtc.yaml ├── google_assistant.yaml ├── groups ├── car.yaml ├── christmas_control.yaml ├── downstairs_occupied.yaml ├── flood_sensors.yaml ├── guests.yaml ├── living_room_lights.yaml ├── my_downstairs_windows.yaml ├── my_exit_doors.yaml ├── my_exterior_doors.yaml ├── my_exterior_windows.yaml ├── my_interior_doors.yaml ├── my_lights.yaml ├── my_other_exterior_doors.yaml ├── my_people.yaml ├── my_room_status.yaml ├── my_upstairs_windows.yaml ├── own_laptop.yaml ├── person_dor.yaml ├── person_person1.yaml ├── person_person1_tablet.yaml ├── person_person1_tablet_old.yaml ├── person_person2.yaml ├── person_person2_laptop.yaml ├── person_person2_tablet.yaml ├── person_person2_work.yaml ├── person_person3.yaml ├── person_person4.yaml ├── tv.yaml ├── upstairs_occupied.yaml └── work_laptop.yaml ├── hardware.md ├── homeassistant.yaml ├── http.yaml ├── influxdb.yaml ├── input_boolean ├── README.md ├── alarm_mode.yaml ├── bedtime.yaml ├── camera │ ├── front_camera_motion.yaml │ ├── front_camera_motion_interesting.yaml │ ├── stream_camera.yaml │ └── stream_front_camera_motion.yaml ├── car_home.yaml ├── door_front.yaml ├── door_garage_bike.yaml ├── door_garage_car.yaml ├── door_patio.yaml ├── door_utility.yaml ├── family_room_lights_auto.yaml ├── garden_lights.yaml ├── guest_mode.yaml ├── holiday_mode.yaml ├── lighting_automations.yaml ├── lighting_living_room.yaml ├── lighting_office.yaml ├── livingroom_lights_auto.yaml ├── lovelace │ ├── lovelace_car_more.yaml │ ├── lovelace_person1_more.yaml │ ├── lovelace_person2_more.yaml │ ├── lovelace_person2_work_more.yaml │ ├── lovelace_person3_more.yaml │ └── lovelace_person4_more.yaml ├── office_paused.yaml ├── people │ ├── adults_away.yaml │ ├── all_away.yaml │ ├── notify_person1_work.yaml │ ├── notify_person2_working.yaml │ ├── notify_train_status_work.yaml │ ├── person1_alarm_sounded.yaml │ ├── person1_driving.yaml │ ├── person1_home.yaml │ ├── person1_in_bed.yaml │ ├── person1_is_awake.yaml │ ├── person1_overseas.yaml │ ├── person1_phone_charging.yaml │ ├── person1_tablet_charging.yaml │ ├── person1_tablet_home.yaml │ ├── person1_travelling.yaml │ ├── person2_driving.yaml │ ├── person2_home.yaml │ ├── person2_in_bed.yaml │ ├── person2_is_awake.yaml │ ├── person2_laptop_home.yaml │ ├── person2_overseas.yaml │ ├── person2_phone_charging.yaml │ ├── person2_tablet_charging.yaml │ ├── person2_tablet_home.yaml │ ├── person2_travelling.yaml │ ├── person2_work_home.yaml │ ├── person3_driving.yaml │ ├── person3_home.yaml │ ├── person3_in_bed.yaml │ ├── person3_is_awake.yaml │ ├── person3_overseas.yaml │ ├── person3_phone_charging.yaml │ ├── person3_travelling.yaml │ ├── person4_driving.yaml │ └── person4_home.yaml ├── rooms │ ├── bathroom_occupied.yaml │ ├── family_room_christmas.yaml │ ├── family_room_occupied.yaml │ ├── garage_occupied.yaml │ ├── guest_bedroom_occupied.yaml │ ├── hall_christmas.yaml │ ├── home_occupied.yaml │ ├── kitchen_occupied.yaml │ ├── living_room_christmas.yaml │ ├── living_room_occupied.yaml │ ├── master_bedroom_occupied.yaml │ ├── master_ensuite_occupied.yaml │ ├── office_occupied.yaml │ ├── second_bedroom_occupied.yaml │ ├── second_ensuite_occupied.yaml │ ├── spare_bedroom_occupied.yaml │ ├── toilet_occupied.yaml │ ├── utility_occupied.yaml │ └── vestibule_christmas.yaml ├── shutdown_in_progress.yaml ├── test_mode.yaml ├── train_problems.yaml ├── travel │ ├── google_travel_time.yaml │ └── here_travel_time.yaml ├── update_mesh_diagram.yaml └── work_laptop_home.yaml ├── input_datetime ├── ha_shutdown.yaml ├── person1_next_alarm.yaml ├── person2_next_alarm.yaml ├── person3_next_alarm.yaml └── return_train_time.yaml ├── input_number ├── README.md ├── door_delay.yaml ├── front_camera_interesting_things.yaml ├── garden_time.yaml ├── room_dark.yaml ├── room_dim.yaml └── room_low_light.yaml ├── input_select ├── README.md ├── camera_stream_target.yaml ├── people │ ├── family_status_dropdown.yaml │ ├── person1_status_dropdown.yaml │ ├── person2_status_dropdown.yaml │ ├── person3_status_dropdown.yaml │ └── person4_status_dropdown.yaml ├── rooms │ ├── bathroom.yaml │ ├── family_room.yaml │ ├── garage.yaml │ ├── guest_bedroom.yaml │ ├── hall.yaml │ ├── house.yaml │ ├── kitchen.yaml │ ├── living_room.yaml │ ├── master_bedroom.yaml │ ├── master_ensuite.yaml │ ├── office.yaml │ ├── second_bedroom.yaml │ ├── second_ensuite.yaml │ ├── spare_bedroom.yaml │ ├── toilet.yaml │ ├── utility.yaml │ └── vestibule.yaml └── season.yaml ├── input_text ├── camera_event_id.yaml ├── camera_message.yaml ├── car.yaml ├── last_motion.yaml ├── last_opened.yaml ├── person_person1.yaml ├── person_person2.yaml ├── person_person3.yaml ├── person_person4.yaml ├── telegram_message.yaml ├── train_message.yaml └── weather_message.yaml ├── integrations.md ├── intent_scripts └── README.md ├── light ├── README.md ├── master_bedroom_bedhead.yaml └── toilet.yaml ├── local └── bin │ ├── README.md │ └── prep-and-git-push ├── logger.yaml ├── lovelace.yaml ├── lovelace ├── README.md ├── cch.yaml ├── custom_header.yaml ├── resources.yaml ├── view-admin-cameras.yaml ├── view-automations.yaml ├── view-automations_bedrooms.yaml ├── view-automations_downstairs.yaml ├── view-automations_group.yaml ├── view-automations_more.yaml ├── view-automations_notifications.yaml ├── view-automations_person1.yaml ├── view-automations_person2.yaml ├── view-automations_person3.yaml ├── view-automations_upstairs.yaml ├── view-cameras.yaml ├── view-cast.yaml ├── view-devices.yaml ├── view-floor-first.yaml ├── view-floor-ground.yaml ├── view-floorplan.yaml ├── view-frigate.yaml ├── view-home.yaml ├── view-information.yaml ├── view-inputs.yaml ├── view-lighting_control.yaml ├── view-media.yaml ├── view-overview.yaml ├── view-people.yaml ├── view-scripts.yaml ├── view-spacer.yaml ├── view-spacer2.yaml ├── view-train_status.yaml ├── view-weather.yaml └── view-zigbee.yaml ├── media_player └── README.md ├── mqtt ├── binary_sensor │ ├── mqtt_first_floor_front.yaml │ ├── mqtt_first_floor_rear.yaml │ └── zigbee2mqtt_bridge.yaml ├── device_tracker │ ├── monitor_car_front.yaml │ ├── monitor_car_rear.yaml │ ├── monitor_person1_bt_front_mobile.yaml │ ├── monitor_person1_bt_front_tablet.yaml │ ├── monitor_person1_bt_mobile.yaml │ ├── monitor_person1_bt_tablet.yaml │ ├── monitor_person2_bt_front_laptop.yaml │ ├── monitor_person2_bt_front_mobile.yaml │ ├── monitor_person2_bt_front_tablet.yaml │ ├── monitor_person2_bt_front_work.yaml │ ├── monitor_person2_bt_laptop.yaml │ ├── monitor_person2_bt_mobile.yaml │ ├── monitor_person2_bt_tablet.yaml │ ├── monitor_person2_bt_work.yaml │ ├── monitor_person3_bt_front_mobile.yaml │ ├── monitor_person3_bt_mobile.yaml │ ├── monitor_person4_bt_front_mobile.yaml │ ├── monitor_person4_bt_mobile.yaml │ ├── monitor_work_front_laptop.yaml │ ├── monitor_work_laptop.yaml │ ├── person_person1.yaml │ ├── person_person1_tablet_wifi.yaml │ ├── person_person1_wifi.yaml │ ├── person_person2.yaml │ ├── person_person2_tablet_wifi.yaml │ ├── person_person2_wifi.yaml │ ├── person_person3.yaml │ ├── person_person3_wifi.yaml │ └── person_person4.yaml └── sensor │ ├── people │ ├── mqtt_car.yaml │ ├── mqtt_person1.yaml │ ├── mqtt_person1_tablet.yaml │ ├── mqtt_person2.yaml │ ├── mqtt_person2_tablet.yaml │ ├── mqtt_person2_work.yaml │ └── mqtt_person3.yaml │ └── zigbee │ ├── zigbee2mqtt_coordinator.yaml │ ├── zigbee2mqtt_version.yaml │ ├── zigbee3mqtt_coordinator.yaml │ ├── zigbee3mqtt_state.yaml │ └── zigbee3mqtt_version.yaml ├── notify ├── README.md ├── adults.yaml ├── apprise.yaml ├── discord_webhook.yaml ├── garage.yaml ├── office_alert.yaml ├── office_alert_silent.yaml ├── person1.yaml ├── person2.yaml ├── person3.yaml ├── signal.yaml ├── status_alert.yaml ├── telegram.yaml ├── tts_family_room.yaml ├── tts_guest_bedroom.yaml ├── tts_living_room.yaml ├── tts_master_bedroom.yaml ├── tts_office.yaml └── tts_second_bedroom.yaml ├── proximity ├── README.md ├── person1_home.yaml ├── person1_work.yaml ├── person2_head_office.yaml ├── person2_home.yaml ├── person2_work.yaml ├── person3_home.yaml ├── person4_home.yaml └── person4_work.yaml ├── recorder.yaml ├── rest ├── healthcheck.yaml └── signal.yaml ├── samsung_tv.yaml ├── scenes.yaml ├── scenes ├── README.md ├── family_room │ └── family_room_radio.yaml └── house │ └── all_off.yaml ├── scripts ├── README.md ├── alarm_lights_enable.yaml ├── alarm_lights_on.yaml ├── bedtime_slow_off.yaml ├── camera │ └── README.md ├── garden_door_after_sunset.yaml ├── hall │ ├── hall_lights_night.yaml │ ├── hall_string_off.yaml │ ├── hall_string_on.yaml │ ├── hall_strip_dim.yaml │ ├── hall_strip_night.yaml │ ├── hall_strip_off.yaml │ └── hall_strip_on.yaml ├── house_alert.yaml ├── nop.yaml ├── notify_house.yaml ├── notify_person2.yaml ├── notify_person2_at_home.yaml ├── notify_person3_at_home.yaml ├── people │ ├── person1 │ │ ├── person1_away.yaml │ │ ├── person1_home.yaml │ │ ├── person1_travel_sensor.yaml │ │ ├── person1_traveltime.yaml │ │ └── wake_person1.yaml │ ├── person2 │ │ ├── person2_away.yaml │ │ ├── person2_home.yaml │ │ ├── person2_notify_test.yaml │ │ ├── person2_travel_sensor.yaml │ │ └── person2_traveltime.yaml │ ├── person3 │ │ ├── person3_away.yaml │ │ ├── person3_home.yaml │ │ ├── person3_travel_sensor.yaml │ │ └── person3_traveltime.yaml │ └── person4 │ │ ├── person4_away.yaml │ │ ├── person4_home.yaml │ │ ├── person4_travel_sensor.yaml │ │ └── person4_traveltime.yaml ├── red_alert.yaml ├── scan_bt.yaml ├── scan_bt_arrive.yaml ├── scan_bt_depart.yaml ├── scan_bt_restart.yaml ├── test.yaml ├── train_message.yaml ├── update_car_location.yaml ├── volume_alert.yaml ├── weather_notification_accuweather.yaml ├── weather_notification_here.yaml └── weather_notification_owm.yaml ├── sensors ├── README.md ├── bin │ └── README.md ├── time_date.yaml └── uk_transport.yaml ├── shell_commands ├── catt.yaml ├── download_image.yaml └── healthcheck.yaml ├── switch ├── README.md ├── family_room_tv.yaml └── living_room_tv.yaml ├── telegram.yaml ├── template ├── bin │ ├── bin_blue.yaml │ ├── bin_brown.yaml │ ├── bin_green.yaml │ ├── bin_grey.yaml │ └── next_bin_collection.yaml ├── calendar │ ├── person2_holiday.yaml │ └── person2_work_events.yaml ├── feels_like.yaml ├── flood_while_away.yaml ├── flood_while_home.yaml ├── garage_door_freezer_combi.yaml ├── garden_gate.yaml ├── garden_lights_on.yaml ├── home_count.yaml ├── last_motion.yaml ├── last_opened.yaml ├── last_opened_interior.yaml ├── metno_temperature.yaml ├── miband │ ├── miband_battery_level.yaml │ ├── miband_connected.yaml │ ├── miband_heartrate.yaml │ ├── miband_spo2.yaml │ ├── miband_steps.yaml │ └── miband_stress.yaml ├── office │ ├── office_mmwave_region_1.yaml │ └── office_mmwave_region_2.yaml ├── outside_humdity.yaml ├── outside_temperature.yaml ├── people │ ├── distance_person1_person2.yaml │ ├── distance_person1_person3.yaml │ └── distance_person2_person3.yaml ├── ps5_power.yaml ├── ps5_status.yaml ├── sky_q_family_room_transport.yaml ├── sky_q_living_room_transport.yaml ├── sun_elevation.yaml └── unavailable.yaml ├── timers ├── garden_lights.yaml ├── hall_motion.yaml ├── living_room_motion.yaml ├── master_bedroom_bedhead.yaml └── second_bedroom_bedside.yaml ├── tts.yaml ├── ui-lovelace-admin.yaml ├── ui-lovelace-automations.yaml ├── ui-lovelace-people.yaml ├── ui-lovelace.yaml ├── weather └── README.md ├── www ├── README.md ├── community │ ├── platinum-weather-card │ │ ├── a-clear-day.svg │ │ ├── a-clear-night.svg │ │ ├── a-cloudy-1-day.svg │ │ ├── a-cloudy-1-night.svg │ │ ├── a-cloudy-2-day.svg │ │ ├── a-cloudy-2-night.svg │ │ ├── a-cloudy-3-day.svg │ │ ├── a-cloudy-3-night.svg │ │ ├── a-cloudy.svg │ │ ├── a-dust.svg │ │ ├── a-fog-day.svg │ │ ├── a-fog-night.svg │ │ ├── a-fog.svg │ │ ├── a-frost-day.svg │ │ ├── a-frost-night.svg │ │ ├── a-frost.svg │ │ ├── a-hail.svg │ │ ├── a-haze-day.svg │ │ ├── a-haze-night.svg │ │ ├── a-haze.svg │ │ ├── a-hurricane.svg │ │ ├── a-isolated-thunderstorms-day.svg │ │ ├── a-isolated-thunderstorms-night.svg │ │ ├── a-isolated-thunderstorms.svg │ │ ├── a-rain-and-sleet-mix.svg │ │ ├── a-rain-and-snow-mix.svg │ │ ├── a-rainy-1-day.svg │ │ ├── a-rainy-1-night.svg │ │ ├── a-rainy-1.svg │ │ ├── a-rainy-2-day.svg │ │ ├── a-rainy-2-night.svg │ │ ├── a-rainy-2.svg │ │ ├── a-rainy-3-day.svg │ │ ├── a-rainy-3-night.svg │ │ ├── a-rainy-3.svg │ │ ├── a-scattered-thunderstorms-day.svg │ │ ├── a-scattered-thunderstorms-night.svg │ │ ├── a-scattered-thunderstorms.svg │ │ ├── a-severe-thunderstorm.svg │ │ ├── a-snow-and-sleet-mix.svg │ │ ├── a-snowy-1-day.svg │ │ ├── a-snowy-1-night.svg │ │ ├── a-snowy-1.svg │ │ ├── a-snowy-2-day.svg │ │ ├── a-snowy-2-night.svg │ │ ├── a-snowy-2.svg │ │ ├── a-snowy-3-day.svg │ │ ├── a-snowy-3-night.svg │ │ ├── a-snowy-3.svg │ │ ├── a-thunderstorms.svg │ │ ├── a-tornado.svg │ │ ├── a-tropical-storm.svg │ │ ├── a-unknown.svg │ │ ├── a-wind.svg │ │ ├── fire-ban-black.svg │ │ ├── fire-ban-white.svg │ │ ├── s-clear-day.svg │ │ ├── s-clear-night.svg │ │ ├── s-cloudy-1-day.svg │ │ ├── s-cloudy-1-night.svg │ │ ├── s-cloudy-2-day.svg │ │ ├── s-cloudy-2-night.svg │ │ ├── s-cloudy-3-day.svg │ │ ├── s-cloudy-3-night.svg │ │ ├── s-cloudy.svg │ │ ├── s-dust.svg │ │ ├── s-fog-day.svg │ │ ├── s-fog-night.svg │ │ ├── s-fog.svg │ │ ├── s-frost-day.svg │ │ ├── s-frost-night.svg │ │ ├── s-frost.svg │ │ ├── s-hail.svg │ │ ├── s-haze-day.svg │ │ ├── s-haze-night.svg │ │ ├── s-haze.svg │ │ ├── s-hurricane.svg │ │ ├── s-isolated-thunderstorms-day.svg │ │ ├── s-isolated-thunderstorms-night.svg │ │ ├── s-isolated-thunderstorms.svg │ │ ├── s-rain-and-sleet-mix.svg │ │ ├── s-rain-and-snow-mix.svg │ │ ├── s-rainy-1-day.svg │ │ ├── s-rainy-1-night.svg │ │ ├── s-rainy-1.svg │ │ ├── s-rainy-2-day.svg │ │ ├── s-rainy-2-night.svg │ │ ├── s-rainy-2.svg │ │ ├── s-rainy-3-day.svg │ │ ├── s-rainy-3-night.svg │ │ ├── s-rainy-3.svg │ │ ├── s-scattered-thunderstorms-day.svg │ │ ├── s-scattered-thunderstorms-night.svg │ │ ├── s-scattered-thunderstorms.svg │ │ ├── s-severe-thunderstorm.svg │ │ ├── s-snow-and-sleet-mix.svg │ │ ├── s-snowy-1-day.svg │ │ ├── s-snowy-1-night.svg │ │ ├── s-snowy-1.svg │ │ ├── s-snowy-2-day.svg │ │ ├── s-snowy-2-night.svg │ │ ├── s-snowy-2.svg │ │ ├── s-snowy-3-day.svg │ │ ├── s-snowy-3-night.svg │ │ ├── s-snowy-3.svg │ │ ├── s-thunderstorms.svg │ │ ├── s-tornado.svg │ │ ├── s-tropical-storm.svg │ │ ├── s-unknown.svg │ │ └── s-wind.svg │ └── weather-card │ │ └── icons │ │ ├── cloudy-day-1.svg │ │ ├── cloudy-day-2.svg │ │ ├── cloudy-day-3.svg │ │ ├── cloudy-night-1.svg │ │ ├── cloudy-night-2.svg │ │ ├── cloudy-night-3.svg │ │ ├── cloudy.svg │ │ ├── day.svg │ │ ├── night.svg │ │ ├── rainy-1.svg │ │ ├── rainy-2.svg │ │ ├── rainy-3.svg │ │ ├── rainy-4.svg │ │ ├── rainy-5.svg │ │ ├── rainy-6.svg │ │ ├── rainy-7.svg │ │ ├── snowy-1.svg │ │ ├── snowy-2.svg │ │ ├── snowy-3.svg │ │ ├── snowy-4.svg │ │ ├── snowy-5.svg │ │ ├── snowy-6.svg │ │ ├── thunder.svg │ │ ├── weather-sprite.svg │ │ ├── weather.svg │ │ ├── weather_sagittarius.svg │ │ └── weather_sunset.svg ├── custom_ui │ ├── dark-sky-weather-card.css │ ├── floorplan │ │ ├── floorplan.css │ │ ├── floorplan.svg │ │ └── ha-floorplan.html │ ├── state-card-floorplan.html │ └── weather-card.css ├── floorplan │ └── config │ │ └── home │ │ ├── floorplan.css │ │ ├── floorplan.svg │ │ ├── ha-floorplan.css │ │ ├── home.css │ │ └── home.svg ├── hass.html ├── icons │ └── weather_icons │ │ ├── animated │ │ ├── cloudy-day-1.svg │ │ ├── cloudy-day-2.svg │ │ ├── cloudy-day-3.svg │ │ ├── cloudy-night-1.svg │ │ ├── cloudy-night-2.svg │ │ ├── cloudy-night-3.svg │ │ ├── cloudy.svg │ │ ├── day.svg │ │ ├── night.svg │ │ ├── rainy-1.svg │ │ ├── rainy-2.svg │ │ ├── rainy-3.svg │ │ ├── rainy-4.svg │ │ ├── rainy-5.svg │ │ ├── rainy-6.svg │ │ ├── rainy-7.svg │ │ ├── snowy-1.svg │ │ ├── snowy-2.svg │ │ ├── snowy-3.svg │ │ ├── snowy-4.svg │ │ ├── snowy-5.svg │ │ ├── snowy-6.svg │ │ ├── thunder.svg │ │ ├── weather-sprite.svg │ │ ├── weather.svg │ │ ├── weather_sagittarius.svg │ │ └── weather_sunset.svg │ │ └── static │ │ ├── cloudy-day-1.svg │ │ ├── cloudy-day-2.svg │ │ ├── cloudy-day-3.svg │ │ ├── cloudy-night-1.svg │ │ ├── cloudy-night-2.svg │ │ ├── cloudy-night-3.svg │ │ ├── cloudy.svg │ │ ├── day.svg │ │ ├── night.svg │ │ ├── rainy-1.svg │ │ ├── rainy-2.svg │ │ ├── rainy-3.svg │ │ ├── rainy-4.svg │ │ ├── rainy-5.svg │ │ ├── rainy-6.svg │ │ ├── rainy-7.svg │ │ ├── snowy-1.svg │ │ ├── snowy-2.svg │ │ ├── snowy-3.svg │ │ ├── snowy-4.svg │ │ ├── snowy-5.svg │ │ ├── snowy-6.svg │ │ ├── thunder.svg │ │ ├── weather-sprite.svg │ │ ├── weather.svg │ │ ├── weather_sagittarius.svg │ │ └── weather_sunset.svg ├── images │ ├── ghome-mini.svg │ ├── light-circle.svg │ ├── motion-sensor.svg │ ├── patio.svg │ ├── socket.svg │ ├── speaker.svg │ ├── tv-familyroom.svg │ ├── tv-livingroom.svg │ ├── tv.svg │ └── xbox.svg └── z-wave-graph.html └── yeelight.yaml /alarm/manual.yaml: -------------------------------------------------------------------------------- 1 | platform: manual 2 | name: "HA Alarm" 3 | code: !secret alarm_code 4 | arming_time: 60 5 | trigger_time: 120 6 | delay_time: 30 7 | disarm_after_trigger: false 8 | disarmed: 9 | trigger_time: 0 10 | armed_home: 11 | arming_time: 0 12 | delay_time: 0 13 | armed_night: 14 | arming_time: 0 15 | delay_time: 0 16 | -------------------------------------------------------------------------------- /alerts/README.md: -------------------------------------------------------------------------------- 1 | # Alerts 2 | 3 | Component: [alert](https://home-assistant.io/components/alert/) 4 | 5 | ## Garage 6 | 7 | Simple alerts to nag us that we've left either of the the garage doors open. We need this because they're not visible from the house. 8 | -------------------------------------------------------------------------------- /alerts/flood_while_away.yaml: -------------------------------------------------------------------------------- 1 | name: "Leak while away" 2 | message: "There is a water leak in the following rooms: {{ expand('group.flood_sensors')|selectattr('state', 'eq', 'on')|map(attribute='name')|list|join(', ') }}" 3 | done_message: "The water leak has been dealt with" 4 | entity_id: binary_sensor.flood_while_away 5 | state: 'on' 6 | repeat: 7 | - 180 8 | - 360 9 | - 720 10 | - 1440 11 | can_acknowledge: True 12 | skip_first: False 13 | notifiers: 14 | - person2 15 | - person3 16 | -------------------------------------------------------------------------------- /alerts/flood_while_home.yaml: -------------------------------------------------------------------------------- 1 | name: "Leak while at home" 2 | message: "There is a water leak in the following rooms: {{ expand('group.flood_sensors')|selectattr('state', 'eq', 'on')|map(attribute='name')|list|join(', ') }}" 3 | done_message: "The water leak has been dealt with" 4 | entity_id: binary_sensor.flood_while_home 5 | state: 'on' 6 | repeat: 7 | - 60 8 | - 120 9 | - 180 10 | - 360 11 | - 720 12 | can_acknowledge: True 13 | skip_first: False 14 | notifiers: 15 | - status_alert 16 | -------------------------------------------------------------------------------- /alerts/freezer_lid.yaml: -------------------------------------------------------------------------------- 1 | name: "The chest bike has been left open" 2 | message: "The chest bike has been open for {{ relative_time(states.binary_sensor.chest_bike_lid_contact.last_changed) }}" 3 | done_message: "The chest bike is now closed" 4 | entity_id: binary_sensor.chest_bike_lid_contact 5 | state: 'on' 6 | repeat: 7 | - 10 8 | - 20 9 | - 30 10 | - 60 11 | can_acknowledge: True 12 | skip_first: True 13 | notifiers: 14 | - garage 15 | -------------------------------------------------------------------------------- /alerts/garage_door_l.yaml: -------------------------------------------------------------------------------- 1 | name: "Garage door for the bike has been left open" 2 | message: "Garage door for the bike has been open for {{ relative_time(states.binary_sensor.garage_door_bike_contact.last_changed) }}" 3 | done_message: "Garage door for the bike is now closed" 4 | entity_id: binary_sensor.garage_door_bike_contact 5 | state: 'on' 6 | repeat: 7 | - 10 8 | - 20 9 | - 30 10 | - 60 11 | can_acknowledge: True 12 | skip_first: True 13 | notifiers: 14 | - garage 15 | -------------------------------------------------------------------------------- /alerts/garage_door_r.yaml: -------------------------------------------------------------------------------- 1 | name: "Garage door for car has been left open" 2 | message: "Garage door for car has been open for {{ relative_time(states.binary_sensor.garage_door_car_contact.last_changed) }}" 3 | done_message: "Garage door for car is now closed" 4 | entity_id: binary_sensor.garage_door_car_contact 5 | state: 'on' 6 | repeat: 7 | - 10 8 | - 20 9 | - 30 10 | - 60 11 | can_acknowledge: True 12 | skip_first: True 13 | notifiers: 14 | - garage 15 | -------------------------------------------------------------------------------- /automation/alarm/README.md: -------------------------------------------------------------------------------- 1 | # Automations, automations everywhere, and all the brains did hurt 2 | 3 | Documentation: [automation](https://home-assistant.io/docs/automation/) 4 | 5 | _Some of these were first written when I started with HA, and didn't know better. You'll find that I've used hyphens (-) in some file names and underscores (\_) to match Home Assistant in others. Mostly I'm not renaming files._ 6 | 7 | Explanations to follow 8 | 9 | ## Alarm 10 | 11 | These are for enabling, disabling, and triggering the alarm. It doesn't really do anything right now. 12 | -------------------------------------------------------------------------------- /automation/alarm/alarm_arm_away.yaml: -------------------------------------------------------------------------------- 1 | id: 'alarm_arm_away' 2 | alias: 'Alarm arm away' 3 | trigger: 4 | - platform: state 5 | entity_id: 6 | - binary_sensor.home_occupied 7 | - group.downstairs_occupied 8 | to: 'off' 9 | condition: 10 | - condition: state 11 | entity_id: 12 | - binary_sensor.home_occupied 13 | - group.downstairs_occupied 14 | state: 'off' 15 | action: 16 | - service: alarmo.arm 17 | data: 18 | entity_id: alarm_control_panel.master 19 | mode: away 20 | -------------------------------------------------------------------------------- /automation/alarm/alarm_arm_night.yaml: -------------------------------------------------------------------------------- 1 | id: 'alarm_arm_at_night' 2 | alias: 'Alarm arm at night' 3 | trigger: 4 | - platform: state 5 | entity_id: input_boolean.bedtime 6 | to: 'on' 7 | action: 8 | - service: alarmo.arm 9 | data: 10 | entity_id: alarm_control_panel.master 11 | mode: night 12 | -------------------------------------------------------------------------------- /automation/alarm/alarm_arm_vacation.yaml: -------------------------------------------------------------------------------- 1 | id: 'alarm_arm_vacation' 2 | alias: 'Alarm arm vacation' 3 | trigger: 4 | - platform: state 5 | entity_id: input_boolean.holiday_mode 6 | to: 'on' 7 | action: 8 | - service: alarmo.arm 9 | data: 10 | entity_id: alarm_control_panel.master 11 | mode: vacation 12 | -------------------------------------------------------------------------------- /automation/alarm/alarm_disarm_hall.yaml: -------------------------------------------------------------------------------- 1 | id: 'alarm_disarm_hall' 2 | alias: 'Alarm disarm hall' 3 | trigger: 4 | - platform: state 5 | entity_id: binary_sensor.vestibule_multi_occupancy 6 | to: 'on' 7 | condition: 8 | - condition: state 9 | entity_id: binary_sensor.front_door_contact 10 | state: 'off' 11 | - condition: not 12 | conditions: 13 | - condition: state 14 | entity_id: alarm_control_panel.master 15 | state: 'disarmed' 16 | action: 17 | - service: alarmo.disarm 18 | data: 19 | entity_id: alarm_control_panel.master 20 | -------------------------------------------------------------------------------- /automation/alarm/alarm_disarm_morning.yaml: -------------------------------------------------------------------------------- 1 | id: 'alarm_disarm_in_the_morning' 2 | alias: 'Alarm disarm in the morning' 3 | trigger: 4 | - platform: state 5 | entity_id: input_boolean.bedtime 6 | to: 'off' 7 | - platform: state 8 | entity_id: binary_sensor.utility_motion_occupancy 9 | to: 'on' 10 | condition: 11 | - condition: not 12 | conditions: 13 | - condition: state 14 | entity_id: alarm_control_panel.master 15 | state: 'disarmed' 16 | action: 17 | - service: alarmo.disarm 18 | data: 19 | entity_id: alarm_control_panel.master 20 | -------------------------------------------------------------------------------- /automation/alarm/alarm_disarm_returned.yaml: -------------------------------------------------------------------------------- 1 | id: 'alarm_disarm_upon_return' 2 | alias: 'Alarm disarm upon return' 3 | trigger: 4 | - platform: state 5 | entity_id: binary_sensor.home_occupied 6 | to: 'on' 7 | condition: 8 | - condition: not 9 | conditions: 10 | - condition: state 11 | entity_id: alarm_control_panel.master 12 | state: 'disarmed' 13 | action: 14 | - service: alarmo.disarm 15 | data: 16 | entity_id: alarm_control_panel.master 17 | -------------------------------------------------------------------------------- /automation/battery/README.md: -------------------------------------------------------------------------------- 1 | # Automations, automations everywhere, and all the brains did hurt 2 | 3 | Documentation: [automation](https://home-assistant.io/docs/automation/) 4 | 5 | _Some of these were first written when I started with HA, and didn't know better. You'll find that I've used hyphens (-) in some file names and underscores (\_) to match Home Assistant in others. Mostly I'm not renaming files._ 6 | 7 | ## Batteries 8 | 9 | Battery related automations, to notify us when the batteries are running down, so we know what to buy. These include the battery type. 10 | -------------------------------------------------------------------------------- /automation/battery/battery_aa.yaml: -------------------------------------------------------------------------------- 1 | id: 'battery_aa' 2 | alias: 'Battery AA' 3 | mode: 'parallel' 4 | trigger: 5 | - platform: state 6 | entity_id: binary_sensor.family_room_multi_battery_low 7 | to: 'on' 8 | action: 9 | service: notify.apprise 10 | data: 11 | target: discord 12 | title: "" 13 | message: ":low_battery: The {{ trigger.to_state.name }} has a low battery, fit some new AAs" 14 | -------------------------------------------------------------------------------- /automation/camera/frigate_new_object.yaml: -------------------------------------------------------------------------------- 1 | id: 'frigate_new_object' 2 | alias: 'Frigate new object' 3 | trigger: 4 | - platform: state 5 | entity_id: 6 | - sensor.front_bicycle_count 7 | - sensor.front_bus_count 8 | - sensor.front_car_count 9 | - sensor.front_motorcycle_count 10 | - sensor.front_person_count 11 | to: ~ 12 | condition: 13 | - condition: template 14 | value_template: "{{ trigger.to_state.state|int(0) > trigger.from_state.state|int(0) }}" 15 | action: 16 | - service: notify.discord 17 | data: 18 | message: "We've just seen a new {{ trigger.to_state.name }} out the front" 19 | target: >- 20 | !secret discord_camera_channel 21 | -------------------------------------------------------------------------------- /automation/camera/stop_camera_stream.yaml: -------------------------------------------------------------------------------- 1 | id: 'stop_camera_stream' 2 | alias: 'Stop camera stream' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: input_boolean.stream_camera 7 | to: 'off' 8 | action: 9 | - service: media_player.turn_off 10 | data: 11 | entity_id: "{{ states('input_select.camera_stream_target') }}" 12 | -------------------------------------------------------------------------------- /automation/family_room/README.md: -------------------------------------------------------------------------------- 1 | # Automations, automations everywhere, and all the brains did hurt 2 | 3 | Documentation: [automation](https://home-assistant.io/docs/automation/) 4 | 5 | ## Family room 6 | 7 | I used to track this in the individual automations, but it was getting silly, so now room occupancy is recorded in an input boolean 8 | 9 | ### `family_room_occupied.yaml` 10 | 11 | The room is considered occupied if: 12 | 13 | * Some media device is playing or the TV is on 14 | * We're home, or guest mode is enabled 15 | 16 | ### `family_room_not_occupied.yaml` 17 | 18 | The room is considered not occupied if: 19 | 20 | * All the media devices are off 21 | -------------------------------------------------------------------------------- /automation/front_of_house/front_door_closed.yaml: -------------------------------------------------------------------------------- 1 | id: 'front_door_closed' 2 | alias: 'Front door closed' 3 | trigger: 4 | - platform: state 5 | entity_id: binary_sensor.front_door_contact 6 | to: 'off' 7 | action: 8 | - service: script.turn_on 9 | entity_id: script.scan_bt 10 | -------------------------------------------------------------------------------- /automation/front_of_house/front_door_open.yaml: -------------------------------------------------------------------------------- 1 | id: 'front_door_open' 2 | alias: 'Front door open' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: binary_sensor.front_door_contact 7 | to: 'on' 8 | action: 9 | - service: script.turn_on 10 | entity_id: script.scan_bt 11 | -------------------------------------------------------------------------------- /automation/front_of_house/garage_door_closed.yaml: -------------------------------------------------------------------------------- 1 | id: 'garage_door_closed' 2 | alias: 'Garage door closed' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: binary_sensor.garage_door_car_contact 7 | to: 'off' 8 | condition: 9 | - condition: state 10 | entity_id: input_boolean.person2_home 11 | state: 'on' 12 | for: '00:05:00' 13 | action: 14 | - service: script.scan_bt_depart 15 | -------------------------------------------------------------------------------- /automation/front_of_house/garage_door_open.yaml: -------------------------------------------------------------------------------- 1 | id: 'garage_door_open' 2 | alias: 'Garage door open' 3 | trigger: 4 | - platform: state 5 | entity_id: binary_sensor.garage_door_car_contact 6 | to: 'on' 7 | condition: 8 | - condition: state 9 | entity_id: input_boolean.person2_home 10 | state: 'off' 11 | for: '00:05:00' 12 | action: 13 | - service: script.scan_bt_arrive 14 | -------------------------------------------------------------------------------- /automation/front_of_house/number-sign-on-morning.yaml: -------------------------------------------------------------------------------- 1 | id: 'number_on_in_the_morning' 2 | initial_state: 'on' 3 | alias: 'Number on in the morning' 4 | trigger: 5 | - platform: time 6 | at: '06:30:00' 7 | - platform: homeassistant 8 | event: start 9 | condition: 10 | - condition: or 11 | conditions: 12 | - condition: state 13 | entity_id: sun.sun 14 | state: 'below_horizon' 15 | - condition: numeric_state 16 | entity_id: sensor.outside_light_sensor_illuminance_lux 17 | below: 50 18 | - condition: state 19 | entity_id: switch.number_sign 20 | state: 'off' 21 | action: 22 | - service: switch.turn_on 23 | entity_id: switch.number_sign 24 | -------------------------------------------------------------------------------- /automation/front_of_house/person2-up-early.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_up_early' 2 | initial_state: 'on' 3 | alias: 'person2 up early' 4 | trigger: 5 | - platform: state 6 | entity_id: media_player.person2 7 | to: 'playing' 8 | - platform: state 9 | entity_id: media_player.master_bedroom 10 | to: 'playing' 11 | condition: 12 | - condition: and 13 | conditions: 14 | - condition: sun 15 | before: sunrise 16 | - condition: time 17 | after: '02:00:00' 18 | - condition: state 19 | entity_id: switch.number_sign 20 | state: 'off' 21 | action: 22 | - service: switch.turn_on 23 | entity_id: switch.number_sign 24 | -------------------------------------------------------------------------------- /automation/front_of_house/person2_home_disable_garage_open.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_home_disable_garage_open' 2 | alias: 'person2 home disable Garage open' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: input_boolean.person2_home 7 | to: 'on' 8 | condition: 9 | - condition: state 10 | entity_id: input_boolean.person2_home 11 | state: 'on' 12 | action: 13 | - service: automation.turn_off 14 | entity_id: automation.person2_away_garage_open 15 | -------------------------------------------------------------------------------- /automation/garden/nighttime_garden_off.yaml: -------------------------------------------------------------------------------- 1 | id: 'nighttime_garden_off' 2 | initial_state: 'off' 3 | alias: 'Nighttime garden off' 4 | description: 'Turn off the lights if they are left on between midnight and sunrise' 5 | trigger: 6 | platform: state 7 | entity_id: switch.garden_lights 8 | to: 'on' 9 | for: '00:15:00' 10 | condition: 11 | - condition: time 12 | after: '00:00:00' 13 | - condition: state 14 | entity_id: sun.sun 15 | state: 'below_horizon' 16 | action: 17 | service: switch.turn_off 18 | entity_id: switch.garden_lights 19 | -------------------------------------------------------------------------------- /automation/guests/guest_mode_off.yaml: -------------------------------------------------------------------------------- 1 | id: 'guest_mode_off' 2 | initial_state: 'on' 3 | alias: 'Guest mode off' 4 | trigger: 5 | - platform: state 6 | entity_id: group.guests 7 | to: 'off' 8 | - platform: homeassistant 9 | event: start 10 | condition: 11 | - condition: state 12 | entity_id: input_boolean.guest_mode 13 | state: 'on' 14 | - condition: state 15 | entity_id: group.guests 16 | state: 'off' 17 | action: 18 | - service: input_boolean.turn_off 19 | entity_id: input_boolean.guest_mode 20 | - condition: state 21 | entity_id: light.downstairs_hall 22 | state: 'on' 23 | - service: script.hall_strip_on 24 | -------------------------------------------------------------------------------- /automation/guests/guest_mode_on.yaml: -------------------------------------------------------------------------------- 1 | id: 'guest_mode_on' 2 | initial_state: 'on' 3 | alias: 'Guest mode on' 4 | trigger: 5 | - platform: state 6 | entity_id: group.guests 7 | to: 'on' 8 | - platform: homeassistant 9 | event: start 10 | condition: 11 | - condition: state 12 | entity_id: input_boolean.guest_mode 13 | state: 'off' 14 | - condition: state 15 | entity_id: group.guests 16 | state: 'on' 17 | action: 18 | - service: input_boolean.turn_on 19 | entity_id: input_boolean.guest_mode 20 | -------------------------------------------------------------------------------- /automation/hall/hall_lights_on_when_off.yaml: -------------------------------------------------------------------------------- 1 | id: 'hall_lights_on_when_off' 2 | initial_state: 'on' 3 | alias: 'Hall lights on when off' 4 | trigger: 5 | - platform: state 6 | entity_id: light.downstairs_hall 7 | from: 'off' 8 | to: 'on' 9 | for: '00:30:00' 10 | condition: 11 | - condition: state 12 | entity_id: input_select.hall 13 | state: 'Off' 14 | action: 15 | - service: switch.turn_off 16 | entity_id: switch.adaptive_lighting_hall 17 | - service: light.turn_off 18 | data: 19 | entity_id: light.downstairs_hall 20 | transition: 5 21 | -------------------------------------------------------------------------------- /automation/hall/modes/hall_mode_away.yaml: -------------------------------------------------------------------------------- 1 | id: 'hall_mode_away' 2 | initial_state: 'on' 3 | alias: 'Hall mode away' 4 | trigger: 5 | - platform: state 6 | entity_id: binary_sensor.home_occupied 7 | to: 'off' 8 | - platform: homeassistant 9 | event: start 10 | - platform: event 11 | event_type: automation_reloaded 12 | condition: 13 | - condition: template 14 | value_template: "{{ not is_state('input_select.hall','Away') }}" 15 | - condition: state 16 | entity_id: binary_sensor.home_occupied 17 | state: 'off' 18 | action: 19 | - service: input_select.select_option 20 | data: 21 | entity_id: 'input_select.hall' 22 | option: 'Away' 23 | -------------------------------------------------------------------------------- /automation/house/house_awake.yaml: -------------------------------------------------------------------------------- 1 | id: 'house_awake' 2 | alias: 'House awake' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: input_boolean.bedtime 7 | to: 'off' 8 | action: 9 | - service: switch.turn_off 10 | target: 11 | entity_id: 12 | - switch.adaptive_lighting_sleep_mode_hall 13 | - switch.adaptive_lighting_sleep_mode_living_room_lamps 14 | - switch.adaptive_lighting_sleep_mode_living_room_table 15 | - switch.adaptive_lighting_sleep_mode_master_bedroom 16 | - switch.adaptive_lighting_sleep_mode_office 17 | - switch.adaptive_lighting_sleep_mode_second_bedroom 18 | -------------------------------------------------------------------------------- /automation/house/lights/house_lights_from_bedtime.yaml: -------------------------------------------------------------------------------- 1 | id: 'house_lights_from_bedtime' 2 | initial_state: 'on' 3 | alias: 'House lights from bedtime' 4 | trigger: 5 | - platform: state 6 | entity_id: input_select.house 7 | from: 'Bedtime' 8 | condition: 9 | - condition: state 10 | entity_id: input_boolean.lighting_automations 11 | state: 'on' 12 | - condition: not 13 | conditions: 14 | - condition: state 15 | entity_id: input_select.house 16 | state: 'Bedtime' 17 | action: 18 | - service: switch.turn_off 19 | entity_id: switch.adaptive_lighting_sleep_mode_hall 20 | -------------------------------------------------------------------------------- /automation/house/lights/house_lights_to_bedtime.yaml: -------------------------------------------------------------------------------- 1 | id: 'house_lights_to_bedtime' 2 | initial_state: 'on' 3 | alias: 'House lights to bedtime' 4 | trigger: 5 | - platform: state 6 | entity_id: input_select.house 7 | to: 'Bedtime' 8 | condition: 9 | - condition: state 10 | entity_id: input_boolean.lighting_automations 11 | state: 'on' 12 | - condition: state 13 | entity_id: input_select.house 14 | state: 'Bedtime' 15 | action: 16 | - service: switch.turn_on 17 | entity_id: switch.adaptive_lighting_sleep_mode_hall 18 | -------------------------------------------------------------------------------- /automation/house/modes/house_mode_auto.yaml: -------------------------------------------------------------------------------- 1 | id: 'house_mode_auto' 2 | alias: 'House mode auto' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: binary_sensor.home_occupied 7 | to: 'on' 8 | - platform: state 9 | entity_id: input_boolean.bedtime 10 | to: 'off' 11 | action: 12 | - service: input_select.select_option 13 | data: 14 | entity_id: input_select.house 15 | option: 'Auto' 16 | -------------------------------------------------------------------------------- /automation/house/modes/house_mode_away.yaml: -------------------------------------------------------------------------------- 1 | id: 'house_mode_away' 2 | alias: 'House mode away' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: binary_sensor.home_occupied 7 | to: 'off' 8 | action: 9 | - service: input_select.select_option 10 | data: 11 | entity_id: input_select.house 12 | option: 'Away' 13 | -------------------------------------------------------------------------------- /automation/house/modes/house_mode_bedtime.yaml: -------------------------------------------------------------------------------- 1 | id: 'house_mode_bedtime' 2 | alias: 'House mode bedtime' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: input_boolean.bedtime 7 | to: 'on' 8 | action: 9 | - service: input_select.select_option 10 | data: 11 | entity_id: input_select.house 12 | option: 'Bedtime' 13 | -------------------------------------------------------------------------------- /automation/house/modes/house_mode_holiday.yaml: -------------------------------------------------------------------------------- 1 | id: 'house_mode_holiday' 2 | alias: 'House mode holiday' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: input_boolean.holiday_mode 7 | to: 'on' 8 | action: 9 | - service: input_select.select_option 10 | data: 11 | entity_id: input_select.house 12 | option: 'Holiday' 13 | -------------------------------------------------------------------------------- /automation/living_room/dimmer.yaml: -------------------------------------------------------------------------------- 1 | id: 'dimmer' 2 | alias: Dimmer 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: event.hue_dimmer_action 7 | to: ~ 8 | action: 9 | - service: notify.send_message 10 | target: 11 | entity_id: notify.debug_log 12 | data: 13 | message: "The following button was pressed: {{ trigger.to_state.attributes.event_type }} - {{ trigger.to_state.attributes.action }}" 14 | -------------------------------------------------------------------------------- /automation/living_room/dimmer_down_motion.yaml: -------------------------------------------------------------------------------- 1 | id: 'dimmer_up_motion' 2 | alias: Dimmer up motion 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: event.hue_dimmer_action 7 | to: ~ 8 | condition: 9 | - condition: template 10 | value_template: >- 11 | {{ trigger.to_state.attributes.event_type == 'down_press' }} 12 | - condition: state 13 | entity_id: input_select.living_room 14 | state: 'Motion' 15 | action: 16 | - service: input_select.select_option 17 | data: 18 | entity_id: input_select.living_room 19 | option: 'Dim' 20 | -------------------------------------------------------------------------------- /automation/living_room/dimmer_on_while_away.yaml: -------------------------------------------------------------------------------- 1 | id: 'dimmer_on_while_away' 2 | alias: Dimmer on while away 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: event.hue_dimmer_action 7 | to: ~ 8 | condition: 9 | - condition: template 10 | value_template: >- 11 | {{ trigger.to_state.attributes.event_type == 'press' }} 12 | - condition: template 13 | value_template: "{{ trigger.to_state.attributes.action == 'on_press' }}" 14 | - condition: state 15 | entity_id: input_boolean.living_room_occupied 16 | state: 'off' 17 | action: 18 | - service: input_boolean.turn_on 19 | entity_id: input_boolean.living_room_occupied 20 | -------------------------------------------------------------------------------- /automation/living_room/dimmer_up_enable_lights.yaml: -------------------------------------------------------------------------------- 1 | id: 'dimmer_up_enable_lights' 2 | alias: Dimmer up enable lights 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: event.hue_dimmer_action 7 | to: ~ 8 | condition: 9 | - condition: template 10 | value_template: >- 11 | {{ trigger.to_state.attributes.event_type == 'up_press' }} 12 | - condition: state 13 | entity_id: input_boolean.lighting_living_room 14 | state: 'off' 15 | action: 16 | - service: input_boolean.turn_on 17 | entity_id: input_boolean.lighting_living_room 18 | -------------------------------------------------------------------------------- /automation/living_room/living_room_movement.yaml: -------------------------------------------------------------------------------- 1 | id: 'living_room_movement' 2 | initial_state: 'on' 3 | alias: 'Living room movement' 4 | trigger: 5 | platform: state 6 | entity_id: binary_sensor.living_room_presence_occupancy 7 | to: 'on' 8 | condition: 9 | condition: and 10 | conditions: 11 | - condition: state 12 | entity_id: input_boolean.livingroom_lights_auto 13 | state: 'on' 14 | - condition: state 15 | entity_id: timer.living_room_motion 16 | state: 'active' 17 | action: 18 | - service: timer.cancel 19 | entity_id: timer.living_room_motion 20 | - service: timer.start 21 | data: 22 | entity_id: timer.living_room_motion 23 | duration: '00:02:00' 24 | -------------------------------------------------------------------------------- /automation/living_room/living_room_table_light_unav_off.yaml: -------------------------------------------------------------------------------- 1 | id: 'living_room_table_light_unavailable_off' 2 | initial_state: 'on' 3 | alias: 'Living room table light unavailable off' 4 | trigger: 5 | - platform: state 6 | entity_id: light.living_room_table_lamp 7 | from: 'unavailable' 8 | to: 'off' 9 | condition: 10 | - condition: or 11 | conditions: 12 | - condition: state 13 | entity_id: input_select.living_room 14 | state: 'Dim' 15 | - condition: state 16 | entity_id: input_select.living_room 17 | state: 'Night on' 18 | action: 19 | - service: light.turn_on 20 | data: 21 | entity_id: light.living_room_table_lamp 22 | transition: 3 23 | -------------------------------------------------------------------------------- /automation/living_room/sonos_off_tv_unmute.yaml: -------------------------------------------------------------------------------- 1 | id: 'sonos_off_tv_unmute' 2 | initial_state: 'on' 3 | alias: 'Sonos off TV unmute' 4 | trigger: 5 | - platform: state 6 | entity_id: media_player.living_room 7 | from: 'playing' 8 | to: 'paused' 9 | - platform: state 10 | entity_id: media_player.living_room 11 | from: 'playing' 12 | to: 'idle' 13 | condition: 14 | - condition: state 15 | entity_id: media_player.samsung_tv 16 | state: 'on' 17 | action: 18 | - service: media_player.volume_mute 19 | data: 20 | entity_id: media_player.samsung_tv 21 | is_volume_muted: false 22 | -------------------------------------------------------------------------------- /automation/living_room/sonos_on_tv_mute.yaml: -------------------------------------------------------------------------------- 1 | id: 'sonos_on_tv_mute' 2 | initial_state: 'on' 3 | alias: 'Sonos on TV mute' 4 | trigger: 5 | - platform: state 6 | entity_id: media_player.living_room 7 | from: 'paused' 8 | to: 'playing' 9 | - platform: state 10 | entity_id: media_player.living_room 11 | from: 'idle' 12 | to: 'playing' 13 | condition: 14 | - condition: state 15 | entity_id: media_player.samsung_tv 16 | state: 'on' 17 | action: 18 | - service: media_player.volume_mute 19 | data: 20 | entity_id: media_player.samsung_tv 21 | is_volume_muted: true 22 | -------------------------------------------------------------------------------- /automation/living_room/tv-on-sonos-off.yaml: -------------------------------------------------------------------------------- 1 | id: 'tv_on_sonos_off' 2 | initial_state: 'on' 3 | alias: 'TV on Sonos off' 4 | trigger: 5 | - platform: state 6 | entity_id: device_tracker.living_room_chromecast 7 | from: 'not_home' 8 | to: 'home' 9 | condition: 10 | - condition: and 11 | conditions: 12 | - condition: state 13 | entity_id: media_player.samsung_tv 14 | state: 'on' 15 | - condition: state 16 | entity_id: media_player.living_room 17 | state: 'playing' 18 | action: 19 | - service: media_player.media_stop 20 | entity_id: media_player.living_room 21 | -------------------------------------------------------------------------------- /automation/living_room/tv_light_on.yaml: -------------------------------------------------------------------------------- 1 | id: 'tv_light_on' 2 | initial_state: 'on' 3 | alias: 'TV light on' 4 | trigger: 5 | - platform: state 6 | entity_id: light.living_room_tv_lamp 7 | to: 'on' 8 | condition: 9 | - condition: state 10 | entity_id: input_boolean.livingroom_lights_auto 11 | state: 'on' 12 | action: 13 | - service: homeassistant.turn_off 14 | entity_id: input_boolean.livingroom_lights_auto 15 | -------------------------------------------------------------------------------- /automation/living_room/tv_off.yaml: -------------------------------------------------------------------------------- 1 | id: 'living_tv_off' 2 | alias: 'Living room TV turned off' 3 | initial_state: 'on' 4 | trigger: 5 | - alias: 'TV turned off' 6 | platform: state 7 | entity_id: media_player.samsung_tv 8 | to: 'off' 9 | for: '00:05:00' 10 | condition: 11 | - condition: state 12 | entity_id: media_player.sky_q_living_room 13 | state: 'playing' 14 | action: 15 | - service: media_player.turn_off 16 | target: 17 | entity_id: media_player.sky_q_living_room 18 | -------------------------------------------------------------------------------- /automation/living_room/tv_on_reconnect.yaml: -------------------------------------------------------------------------------- 1 | id: 'tv_on_reconnect' 2 | alias: 'TV on reconnect' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: device_tracker.living_room_chromecast 7 | to: 'home' 8 | for: '00:00:30' 9 | - platform: state 10 | entity_id: media_player.samsung_tv 11 | to: 'on' 12 | for: '00:00:30' 13 | condition: 14 | - condition: state 15 | entity_id: media_player.living_room_tv 16 | state: 'unavailable' 17 | action: 18 | - service: homeassistant.update_entity 19 | entity_id: media_player.living_room_tv 20 | -------------------------------------------------------------------------------- /automation/master_bedroom/bedhead-light-dim-late.yaml: -------------------------------------------------------------------------------- 1 | id: 'bedhead_light_dim_late' 2 | alias: 'Bedhead light dim late' 3 | trigger: 4 | - platform: time 5 | at: '23:00:00' 6 | - platform: state 7 | entity_id: light.master_bedroom_bedhead 8 | to: 'on' 9 | condition: 10 | - condition: state 11 | entity_id: light.master_bedroom_bedhead 12 | state: 'on' 13 | - condition: time 14 | after: '22:59:59' 15 | action: 16 | - service: input_select.select_option 17 | data: 18 | entity_id: input_select.master_bedroom 19 | option: 'Bedtime' 20 | -------------------------------------------------------------------------------- /automation/master_bedroom/modes/master_bedroom_lights_turned_off.yaml: -------------------------------------------------------------------------------- 1 | id: 'master_bedroom_lights_turned_off' 2 | initial_state: 'on' 3 | alias: 'Master bedroom lights turned off' 4 | trigger: 5 | - platform: state 6 | entity_id: light.master_bedroom 7 | to: 'off' 8 | condition: 9 | - condition: template 10 | value_template: "{{ states('input_select.master_bedroom') not in ('Off') }}" 11 | action: 12 | - service: input_select.select_option 13 | data: 14 | entity_id: input_select.master_bedroom 15 | option: 'Off' 16 | -------------------------------------------------------------------------------- /automation/master_bedroom/modes/master_bedroom_lights_turned_on.yaml: -------------------------------------------------------------------------------- 1 | id: 'master_bedroom_lights_turned_on' 2 | initial_state: 'on' 3 | alias: 'Master bedroom lights turned on' 4 | trigger: 5 | - platform: state 6 | entity_id: light.master_bedroom 7 | to: 'on' 8 | condition: 9 | - condition: state 10 | entity_id: input_select.master_bedroom 11 | state: 'Off' 12 | action: 13 | - service: input_select.select_option 14 | data: 15 | entity_id: input_select.master_bedroom 16 | option: 'Auto' 17 | -------------------------------------------------------------------------------- /automation/master_bedroom/modes/master_bedroom_mode_bedtime.yaml: -------------------------------------------------------------------------------- 1 | id: 'master_bedroom_mode_bedtime' 2 | alias: 'Master bedroom mode bedtime' 3 | trigger: 4 | - platform: state 5 | entity_id: input_boolean.person2_in_bed 6 | to: 'on' 7 | for: '00:30:00' 8 | condition: 9 | - condition: template 10 | value_template: "{{ states('input_select.master_bedroom') not in ('Bedtime','Off') }}" 11 | - condition: state 12 | entity_id: input_boolean.person2_is_awake 13 | state: 'on' 14 | action: 15 | - service: input_select.select_option 16 | data: 17 | entity_id: input_select.master_bedroom 18 | option: 'Bedtime' 19 | -------------------------------------------------------------------------------- /automation/master_bedroom/modes/master_bedroom_to_mode_off.yaml: -------------------------------------------------------------------------------- 1 | id: 'master_bedroom_mode_to_off' 2 | initial_state: 'on' 3 | alias: 'Master bedroom mode to off' 4 | trigger: 5 | - platform: state 6 | entity_id: light.master_bedroom 7 | to: 'off' 8 | for: '00:00:05' 9 | - platform: state 10 | entity_id: input_boolean.master_bedroom_occupied 11 | to: 'off' 12 | action: 13 | - service: input_select.select_option 14 | data: 15 | entity_id: input_select.master_bedroom 16 | option: 'Off' 17 | -------------------------------------------------------------------------------- /automation/notification/README.md: -------------------------------------------------------------------------------- 1 | # Automations, automations everywhere, and all the brains did hurt 2 | 3 | Documentation: [automation](https://home-assistant.io/docs/automation/) 4 | 5 | ## Notifications 6 | 7 | These are notifications for things people should be aware of - mostly this is background stuff. 8 | 9 | ### bin_notification.yaml 10 | 11 | Uses the bin sensors to send a notification to the LaMetric clock the day before the recycling is due to be collected. It is pushed every 5 minutes, at 30 seconds past the minute. 12 | 13 | ### weather_notification.yaml 14 | 15 | Sends a notification about the forthcoming weather conditions to the LaMetric clock every 5 minutes. 16 | -------------------------------------------------------------------------------- /automation/notification/signal/signal_received.yaml: -------------------------------------------------------------------------------- 1 | id: 'signal_received' 2 | alias: 'Signal received' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: sensor.signal_message_received 7 | attribute: source 8 | to: !secret signal_recipient 9 | action: 10 | - service: input_text.set_value 11 | target: 12 | entity_id: input_text.command 13 | data: 14 | value: >- 15 | {{- state_attr('sensor.signal_message_received','dataMessage').message -}} 16 | -------------------------------------------------------------------------------- /automation/notification/telegram/command_lights.yaml: -------------------------------------------------------------------------------- 1 | id: 'telegram_command_lights' 2 | alias: 'Telegram command lights' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: event 6 | event_type: telegram_command 7 | event_data: 8 | command: '/lights' 9 | condition: 10 | - condition: template 11 | value_template: "{{ trigger.event.data.args|length == 0 }}" 12 | action: 13 | - service: telegram_bot.send_message 14 | data: 15 | message: > 16 | The following lights are on: {{ expand('group.my_lights')|selectattr('state', 'eq', 'on')|map(attribute='name')|list|join(', ') }} 17 | -------------------------------------------------------------------------------- /automation/notification/telegram/command_lights_on.yaml: -------------------------------------------------------------------------------- 1 | id: 'telegram_command_lights_on' 2 | alias: 'Telegram command lights on' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: event 6 | event_type: telegram_command 7 | event_data: 8 | command: '/lights' 9 | condition: 10 | - condition: template 11 | value_template: "{{ (trigger.event.data.args|length == 1) and (trigger.event.data.args[0] == 'on') }}" 12 | action: 13 | - service: telegram_bot.send_message 14 | data: 15 | message: > 16 | Turning the lights {{ trigger.event.data.args[0] }} 17 | -------------------------------------------------------------------------------- /automation/notification/telegram/command_ping.yaml: -------------------------------------------------------------------------------- 1 | id: 'telegram_command_ping' 2 | alias: 'Telegram command ping' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: event 6 | event_type: telegram_command 7 | event_data: 8 | command: '/ping' 9 | action: 10 | - service: telegram_bot.send_message 11 | data: 12 | message: > 13 | Pong at {{ as_timestamp(now(),0)|timestamp_custom("%Y-%m-%d %H:%M:%S", local=True) }} 14 | -------------------------------------------------------------------------------- /automation/notification/telegram/command_status.yaml: -------------------------------------------------------------------------------- 1 | id: 'telegram_command_status' 2 | alias: 'Telegram command status' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: event 6 | event_type: telegram_command 7 | event_data: 8 | command: '/status' 9 | action: 10 | - service: telegram_bot.send_message 11 | data: 12 | message: > 13 | There are {{ expand('group.my_downstairs_windows','my_upstairs_windows','group.my_exterior_doors') | selectattr('state', 'eq', 'on')|list|count }} doors and windows open 14 | 15 | {{ expand('group.my_downstairs_windows','my_upstairs_windows','group.my_exterior_doors') | selectattr('state', 'eq', 'on')|map(attribute='name')|list|join(', ') }} 16 | -------------------------------------------------------------------------------- /automation/notification/telegram/command_trains.yaml: -------------------------------------------------------------------------------- 1 | id: 'telegram_command_trains' 2 | alias: 'Telegram command trains' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: event 6 | event_type: telegram_command 7 | event_data: 8 | command: '/trains' 9 | action: 10 | - service: script.train_message 11 | - service: telegram_bot.send_message 12 | data: 13 | inline_keyboard: [[[ "Recheck", "/trains" ]]] 14 | message: "{{ states('input_text.train_message') }}" 15 | -------------------------------------------------------------------------------- /automation/notification/telegram/commands_lights_off.yaml: -------------------------------------------------------------------------------- 1 | id: 'telegram_command_lights_off' 2 | alias: 'Telegram command lights off' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: event 6 | event_type: telegram_command 7 | event_data: 8 | command: '/lights' 9 | condition: 10 | - condition: template 11 | value_template: "{{ (trigger.event.data.args|length == 1) and (trigger.event.data.args[0] == 'off') }}" 12 | action: 13 | - service: telegram_bot.send_message 14 | data: 15 | message: > 16 | Turning the lights {{ trigger.event.data.args[0] }} 17 | -------------------------------------------------------------------------------- /automation/notification/telegram/telegram_callback_trains.yaml: -------------------------------------------------------------------------------- 1 | id: 'telegram_callback_trains' 2 | alias: 'Telegram callback trains' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: event 6 | event_type: telegram_callback 7 | event_data: 8 | data: "/trains" 9 | action: 10 | - service: script.train_message 11 | - service: telegram_bot.answer_callback_query 12 | data: 13 | message: "{{ states('input_text.train_message') }}" 14 | callback_query_id: "{{ trigger.event.data.id }}" 15 | -------------------------------------------------------------------------------- /automation/office/modes/office_lights_turned_off.yaml: -------------------------------------------------------------------------------- 1 | id: 'office_lights_turned_off' 2 | initial_state: 'on' 3 | alias: 'Office lights turned off' 4 | trigger: 5 | - platform: state 6 | entity_id: light.office_strip 7 | to: 'off' 8 | for: '00:00:30' 9 | condition: 10 | - condition: not 11 | conditions: 12 | - condition: state 13 | entity_id: input_select.office 14 | state: 'Off' 15 | action: 16 | - service: input_select.select_option 17 | data: 18 | entity_id: input_select.office 19 | option: 'Off' 20 | -------------------------------------------------------------------------------- /automation/office/modes/office_mode_no_wake.yaml: -------------------------------------------------------------------------------- 1 | id: 'office_mode_no_wake' 2 | initial_state: 'on' 3 | alias: 'Office mode no wake' 4 | trigger: 5 | - platform: state 6 | entity_id: input_select.office 7 | to: 'Wake' 8 | for: '01:00:00' 9 | action: 10 | - service: input_select.select_option 11 | data: 12 | entity_id: input_select.office 13 | option: 'Off' 14 | -------------------------------------------------------------------------------- /automation/office/modes/office_no_presence.yaml: -------------------------------------------------------------------------------- 1 | id: 'office_no_presence' 2 | alias: 'Office no presence' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: binary_sensor.office_mmwave_region_1 7 | to: 'off' 8 | condition: 9 | - condition: state 10 | entity_id: input_boolean.office_occupied 11 | state: 'on' 12 | - condition: state 13 | entity_id: media_player.office 14 | state: 'playing' 15 | action: 16 | - service: input_select.select_option 17 | data: 18 | entity_id: input_select.office 19 | option: 'Pause' 20 | - service: input_boolean.turn_on 21 | data: 22 | entity_id: input_boolean.office_paused 23 | -------------------------------------------------------------------------------- /automation/office/modes/office_presence.yaml: -------------------------------------------------------------------------------- 1 | id: 'office_presence' 2 | alias: 'Office presence' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: 7 | - binary_sensor.office_mmwave_region_1 8 | - binary_sensor.office_presence_occupancy 9 | to: 'on' 10 | condition: 11 | - condition: state 12 | entity_id: input_boolean.office_paused 13 | state: 'on' 14 | action: 15 | - service: input_boolean.turn_off 16 | data: 17 | entity_id: input_boolean.office_paused 18 | -------------------------------------------------------------------------------- /automation/office/modes/office_unoccupied.yaml: -------------------------------------------------------------------------------- 1 | id: 'office_unoccupied' 2 | initial_state: 'on' 3 | alias: 'Office unoccupied' 4 | trigger: 5 | - platform: state 6 | entity_id: input_boolean.office_occupied 7 | to: 'off' 8 | action: 9 | - service: input_boolean.turn_off 10 | entity_id: input_boolean.stream_front_camera_motion 11 | - service: input_boolean.turn_on 12 | entity_id: 13 | - input_boolean.lighting_living_room 14 | - input_boolean.lighting_office 15 | -------------------------------------------------------------------------------- /automation/office/office_dial_test.yaml: -------------------------------------------------------------------------------- 1 | id: 'office_dial_test' 2 | alias: 'Office dial test' 3 | trigger: 4 | - platform: state 5 | entity_id: event.office_dial_moes_action 6 | to: ~ 7 | action: 8 | - service: notify.send_message 9 | target: 10 | entity_id: notify.debug_log 11 | data: 12 | message: >- 13 | Office dial from {{ trigger.from_state.attributes.event_type }}/{{ trigger.from_state.attributes.direction }} to {{ trigger.to_state.attributes.event_type }}/{{ trigger.to_state.attributes.direction }} 14 | -------------------------------------------------------------------------------- /automation/office/office_lights_on_when_off.yaml: -------------------------------------------------------------------------------- 1 | id: 'office_lights_on_when_off' 2 | alias: 'Office lights on when off' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: light.office_strip 7 | to: 'on' 8 | for: '00:00:30' 9 | condition: 10 | - condition: state 11 | entity_id: input_select.office 12 | state: 'Off' 13 | action: 14 | - service: light.turn_off 15 | data: 16 | entity_id: light.office_strip 17 | transition: 1 18 | -------------------------------------------------------------------------------- /automation/office/office_sonos_switch_off.yaml: -------------------------------------------------------------------------------- 1 | id: 'office_sonos_switch_off' 2 | alias: 'Office Sonos switch off' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: switch.office_sonos 7 | to: 'off' 8 | for: '00:00:20' 9 | action: 10 | - service: switch.turn_on 11 | entity_id: switch.office_sonos 12 | -------------------------------------------------------------------------------- /automation/office/office_unoccupied_window_open.yaml: -------------------------------------------------------------------------------- 1 | id: 'office_unoccupied_window_open' 2 | alias: 'Office unoccupied window open' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: input_boolean.office_occupied 7 | to: 'off' 8 | condition: 9 | - condition: state 10 | entity_id: input_boolean.office_occupied 11 | state: 'off' 12 | - condition: state 13 | entity_id: binary_sensor.office_window_contact 14 | state: 'on' 15 | action: 16 | - service: notify.person2 17 | data: 18 | message: "You left the office window open" 19 | -------------------------------------------------------------------------------- /automation/office/office_volume_change.yaml: -------------------------------------------------------------------------------- 1 | id: 'office_volume_change' 2 | initial_state: 'on' 3 | alias: 'Office volume change' 4 | trigger: 5 | - platform: state 6 | entity_id: media_player.office 7 | attribute: volume_level 8 | action: 9 | - service: notify.awtrix_6d6f50 10 | data: 11 | message: "{{ ((state_attr('media_player.office','volume_level')|float(0))*100)|round(0) }}" 12 | data: 13 | icon: 56192 14 | progress: "{{ ((state_attr('media_player.office','volume_level')|float(0))*200)|round(0) }}" 15 | progressC: "18B04C" 16 | progressBC: "333344" 17 | repeat: 1 18 | duration: 2 19 | -------------------------------------------------------------------------------- /automation/people/adults_away.yaml: -------------------------------------------------------------------------------- 1 | id: 'adults_away' 2 | alias: 'Adults away' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: 7 | - input_boolean.person3_home 8 | - input_boolean.person2_home 9 | to: 'off' 10 | condition: 11 | # Both away 12 | - condition: and 13 | conditions: 14 | - condition: state 15 | entity_id: input_boolean.person3_home 16 | state: 'off' 17 | - condition: state 18 | entity_id: input_boolean.person2_home 19 | state: 'off' 20 | action: 21 | - service: input_boolean.turn_on 22 | entity_id: input_boolean.adults_away 23 | -------------------------------------------------------------------------------- /automation/people/adults_returned.yaml: -------------------------------------------------------------------------------- 1 | id: 'adults_returned' 2 | alias: 'Adults returned' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: 7 | - input_boolean.person3_home 8 | - input_boolean.person2_home 9 | to: 'on' 10 | condition: 11 | - condition: state 12 | entity_id: input_boolean.adults_away 13 | state: 'on' 14 | action: 15 | - service: input_boolean.turn_off 16 | entity_id: input_boolean.adults_away 17 | -------------------------------------------------------------------------------- /automation/people/person1/person1_at_ep.yaml: -------------------------------------------------------------------------------- 1 | id: 'person1_at_ep' 2 | alias: 'person1 at work Park' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: device_tracker.sm_a546b 7 | to: 'work Park' 8 | condition: 9 | - condition: state 10 | entity_id: input_boolean.person1_at_hw 11 | state: 'on' 12 | - condition: state 13 | entity_id: input_boolean.person2_home 14 | state: 'on' 15 | action: 16 | - service: notify.apprise 17 | data: 18 | target: telegram_ha 19 | title: '' 20 | message: 'person1 is at work Park' 21 | - service: input_boolean.turn_off 22 | entity_id: input_boolean.person1_at_hw 23 | -------------------------------------------------------------------------------- /automation/people/person1/person1_awake.yaml: -------------------------------------------------------------------------------- 1 | id: 'person1_awake' 2 | alias: 'person1 awake' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: input_boolean.person1_in_bed 7 | to: 'off' 8 | action: 9 | - service: input_boolean.turn_on 10 | entity_id: input_boolean.person1_is_awake 11 | - service: input_boolean.turn_off 12 | entity_id: input_boolean.person1_alarm_sounded 13 | - service: media_player.turn_off 14 | entity_id: 15 | - media_player.cast_second_bedroom_speaker 16 | - media_player.person1 17 | - service: script.turn_on 18 | entity_id: script.person1_travel_sensor 19 | -------------------------------------------------------------------------------- /automation/people/person1/person1_location_update.yaml: -------------------------------------------------------------------------------- 1 | id: 'person1_location_update' 2 | initial_state: 'on' 3 | alias: 'person1 location update' 4 | trigger: 5 | # I've moved 6 | - platform: state 7 | entity_id: 8 | - device_tracker.sm_a546b 9 | - input_select.person1_status_dropdown 10 | - input_boolean.person1_home 11 | - sensor.person1s_time_to_home_duration 12 | - sensor.person1s_time_to_home_by_bus_google 13 | - sensor.person1s_time_to_home_by_foot_duration 14 | - sensor.person1s_time_to_home_waze 15 | - sensor.person1_places 16 | action: 17 | - service: script.turn_on 18 | entity_id: script.person1_travel_sensor 19 | -------------------------------------------------------------------------------- /automation/people/person1/person1_next_alarm.yaml: -------------------------------------------------------------------------------- 1 | id: 'person1_next_alarm' 2 | initial_state: 'on' 3 | alias: 'person1 next alarm' 4 | trigger: 5 | - platform: state 6 | entity_id: sensor.sm_a546b_next_alarm 7 | to: ~ 8 | for: '00:05:00' 9 | action: 10 | - service: input_datetime.set_datetime 11 | entity_id: input_datetime.person1_next_alarm 12 | data: 13 | timestamp: >- 14 | {{ states('sensor.sm_a546b_next_alarm')|as_timestamp(0) }} 15 | -------------------------------------------------------------------------------- /automation/people/person1/person1_not_at_work.yaml: -------------------------------------------------------------------------------- 1 | id: 'person1_not_at_work' 2 | alias: 'person1 not at work' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: numeric_state 6 | entity_id: sensor.university_person1_distance 7 | above: 10000 8 | condition: 9 | - condition: state 10 | entity_id: input_boolean.person1_at_hw 11 | state: 'on' 12 | action: 13 | - service: input_boolean.turn_off 14 | entity_id: input_boolean.person1_at_hw 15 | -------------------------------------------------------------------------------- /automation/people/person1/person1_phone_plugged.yaml: -------------------------------------------------------------------------------- 1 | id: 'person1_phone_plugged' 2 | initial_state: 'on' 3 | alias: 'person1 phone plugged' 4 | trigger: 5 | - platform: event 6 | event_type: tasker_webhook 7 | event_data: 8 | who: person1 9 | condition: 10 | - condition: template 11 | value_template: >- 12 | {{ 'Plugged' in trigger.event.data.what }} 13 | action: 14 | - service: input_boolean.turn_off 15 | entity_id: input_boolean.person1_phone_charging 16 | - delay: '00:00:02' 17 | - service: input_boolean.turn_on 18 | entity_id: input_boolean.person1_phone_charging 19 | -------------------------------------------------------------------------------- /automation/people/person1/person1_phone_unplugged.yaml: -------------------------------------------------------------------------------- 1 | id: 'person1_phone_unplugged' 2 | initial_state: 'on' 3 | alias: 'person1 phone unplugged' 4 | trigger: 5 | - platform: event 6 | event_type: tasker_webhook 7 | event_data: 8 | who: person1 9 | condition: 10 | - condition: template 11 | value_template: >- 12 | {{ 'Unplugged' in trigger.event.data.what }} 13 | action: 14 | - service: input_boolean.turn_on 15 | entity_id: input_boolean.person1_phone_charging 16 | - delay: '00:00:02' 17 | - service: input_boolean.turn_off 18 | entity_id: input_boolean.person1_phone_charging 19 | -------------------------------------------------------------------------------- /automation/people/person1/person1_tablet_home.yaml: -------------------------------------------------------------------------------- 1 | id: 'person1_tablet_home' 2 | initial_state: 'on' 3 | alias: 'person1 tablet home' 4 | trigger: 5 | - platform: state 6 | entity_id: 7 | - group.person_person1_tablet 8 | to: 'home' 9 | - platform: homeassistant 10 | event: start 11 | condition: 12 | - condition: state 13 | entity_id: input_boolean.person1_tablet_home 14 | state: 'off' 15 | - condition: state 16 | entity_id: group.person_person1_tablet 17 | state: 'home' 18 | action: 19 | - service: input_boolean.turn_on 20 | entity_id: input_boolean.person1_tablet_home 21 | -------------------------------------------------------------------------------- /automation/people/person1/person1_travelling.yaml: -------------------------------------------------------------------------------- 1 | id: 'person1_travelling' 2 | alias: 'person1 Travelling' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: numeric_state 6 | entity_id: sensor.home_person1_distance 7 | above: 50000 8 | for: 9 | hours: 3 10 | - platform: time 11 | at: '23:00:00' 12 | condition: 13 | condition: and 14 | conditions: 15 | - condition: state 16 | entity_id: input_boolean.person1_home 17 | state: 'off' 18 | - condition: numeric_state 19 | entity_id: sensor.home_person1_distance 20 | above: 20000 21 | action: 22 | - service: input_boolean.turn_on 23 | entity_id: input_boolean.person1_travelling 24 | -------------------------------------------------------------------------------- /automation/people/person1/startup_person1_up.yaml: -------------------------------------------------------------------------------- 1 | id: 'startup_person1_up' 2 | alias: 'Startup person1 up' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: homeassistant 6 | event: start 7 | condition: 8 | - condition: or 9 | conditions: 10 | - condition: time 11 | after: '06:00:00' 12 | before: '22:00:00' 13 | - condition: state 14 | entity_id: input_boolean.person1_home 15 | state: 'off' 16 | action: 17 | - service: input_boolean.turn_on 18 | entity_id: input_boolean.person1_is_awake 19 | -------------------------------------------------------------------------------- /automation/people/person2/person2_at_gym.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_at_gym' 2 | alias: 'person2 at gym' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: device_tracker.pixel_xl 7 | to: 'Gym' 8 | for: 9 | minutes: 15 10 | action: 11 | - service: homeassistant.turn_on 12 | entity_id: automation.person2_returning_home 13 | - condition: state 14 | entity_id: input_boolean.person2_driving 15 | state: 'on' 16 | - service: input_boolean.turn_off 17 | entity_id: input_boolean.person2_driving 18 | -------------------------------------------------------------------------------- /automation/people/person2/person2_at_station.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_at_station' 2 | alias: 'person2 at station' 3 | trigger: 4 | - platform: state 5 | entity_id: device_tracker.pixel_xl 6 | to: 'home Station' 7 | condition: 8 | - condition: state 9 | entity_id: binary_sensor.workday_sensor 10 | state: 'on' 11 | action: 12 | - service: automation.turn_on 13 | entity_id: automation.person2_returning_home 14 | -------------------------------------------------------------------------------- /automation/people/person2/person2_changing_zones.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_changing_zones' 2 | initial_state: 'on' 3 | alias: 'person2 changing zones' 4 | trigger: 5 | # Been away for a few minutes 6 | - platform: state 7 | entity_id: device_tracker.pixel_xl 8 | to: 'not_home' 9 | for: '00:05:00' 10 | # Arrived in a zone 11 | - platform: state 12 | entity_id: device_tracker.pixel_xl 13 | from: 'not_home' 14 | condition: 15 | # Been at least 5 minutes 16 | - condition: template 17 | value_template: "{{ (now() - state_attr('script.person2_traveltime','last_triggered')).seconds > 300 }}" 18 | action: 19 | - service: script.person2_traveltime 20 | -------------------------------------------------------------------------------- /automation/people/person2/person2_coming_home.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_coming_home' 2 | alias: 'person2 coming home' 3 | trigger: 4 | - platform: state 5 | entity_id: device_tracker.pixel_xl 6 | to: 'home Station' 7 | condition: 8 | - condition: and 9 | conditions: 10 | - condition: time 11 | after: '10:00:00' 12 | - condition: state 13 | entity_id: binary_sensor.home_occupied 14 | state: 'off' 15 | action: 16 | - service: notify.person2 17 | data: 18 | message: "Nobody's home right now" 19 | - service: homeassistant.turn_off 20 | entity_id: automation.person2_coming_home 21 | -------------------------------------------------------------------------------- /automation/people/person2/person2_driving.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_driving' 2 | initial_state: 'on' 3 | alias: 'person2 driving' 4 | trigger: 5 | - platform: state 6 | entity_id: binary_sensor.pixel_xl_android_auto 7 | to: 'on' 8 | id: 'auto' 9 | condition: 10 | # Not driving 11 | - condition: state 12 | entity_id: input_boolean.person2_driving 13 | state: 'off' 14 | action: 15 | - service: input_boolean.turn_on 16 | entity_id: input_boolean.person2_driving 17 | -------------------------------------------------------------------------------- /automation/people/person2/person2_high_accuracy.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_high_accuracy' 2 | alias: 'person2 high accuracy mode' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: binary_sensor.pixel_xl_high_accuracy_mode 7 | to: 'on' 8 | for: '00:05:00' 9 | - platform: state 10 | entity_id: input_boolean.person2_home 11 | to: 'on' 12 | condition: 13 | - condition: state 14 | entity_id: binary_sensor.pixel_xl_high_accuracy_mode 15 | state: 'on' 16 | action: 17 | - service: notify.mobile_app_pixel_xl 18 | data: 19 | message: "command_high_accuracy_mode" 20 | data: 21 | command: "turn_off" 22 | -------------------------------------------------------------------------------- /automation/people/person2/person2_nearly_home.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_nearly_home' 2 | alias: 'person2 nearly home' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: zone 6 | entity_id: device_tracker.pixel_xl 7 | zone: zone.nearly_home 8 | condition: 9 | - condition: state 10 | entity_id: input_boolean.person2_home 11 | state: 'off' 12 | action: 13 | - service: notify.send_message 14 | target: 15 | entity_id: notify.debug_log 16 | data: 17 | message: "person2 is nearly home" 18 | -------------------------------------------------------------------------------- /automation/people/person2/person2_not_driving.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_not_driving' 2 | initial_state: 'on' 3 | alias: 'person2 not driving' 4 | trigger: 5 | - platform: state 6 | entity_id: binary_sensor.pixel_xl_android_auto 7 | to: 'off' 8 | id: 'auto' 9 | condition: 10 | # Driving 11 | - condition: state 12 | entity_id: input_boolean.person2_driving 13 | state: 'on' 14 | action: 15 | - service: input_boolean.turn_off 16 | entity_id: input_boolean.person2_driving 17 | -------------------------------------------------------------------------------- /automation/people/person2/person2_not_overseas.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_not_overseas' 2 | initial_state: 'on' 3 | alias: 'person2 not overseas' 4 | trigger: 5 | - platform: state 6 | entity_id: sensor.pixel_xl_geocoded_location 7 | attribute: iso_country_code 8 | to: 'GB' 9 | condition: 10 | - condition: state 11 | entity_id: sensor.pixel_xl_geocoded_location 12 | attribute: iso_country_code 13 | state: 'GB' 14 | # Not overseas 15 | - condition: state 16 | entity_id: input_boolean.person2_overseas 17 | state: 'on' 18 | action: 19 | - service: input_boolean.turn_off 20 | entity_id: input_boolean.person2_overseas 21 | -------------------------------------------------------------------------------- /automation/people/person2/person2_phone_not_plugged.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_phone_not_plugged' 2 | alias: 'person2 phone not plugged in' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: time 6 | at: '22:45:00' 7 | condition: 8 | - condition: state 9 | entity_id: sensor.pixel_xl_charger_type 10 | state: 'none' 11 | - condition: state 12 | entity_id: input_boolean.person2_home 13 | state: 'on' 14 | action: 15 | - service: notify.person2 16 | data: 17 | message: "Don't forget to plug the phone in" 18 | -------------------------------------------------------------------------------- /automation/people/person2/person2_pre_alarm.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_pre_alarm' 2 | alias: 'person2 pre alarm' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: event 6 | event_type: 'SleepAsAndroid_person2' 7 | event_data: 8 | event: 'smart_period' 9 | - platform: event 10 | event_type: 'SleepAsAndroid_person2' 11 | event_data: 12 | event: 'before_smart_period' 13 | action: 14 | - service: input_boolean.turn_on 15 | entity_id: input_boolean.person2_pre_alarm 16 | -------------------------------------------------------------------------------- /automation/people/person2/person2_sleep.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_sleep_status' 2 | alias: 'person2 sleep status' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: webhook 6 | webhook_id: '01234567-dead-beef-cafe-0123456789abc' 7 | allowed_methods: 8 | - POST 9 | local_only: false 10 | action: 11 | - service: notify.send_message 12 | target: 13 | entity_id: notify.debug_log 14 | data: 15 | message: >- 16 | Sleep as Android: {{ trigger.json.event }} / {{ trigger.json }} 17 | -------------------------------------------------------------------------------- /automation/people/person2/person2_tablet_plugged.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_tablet_plugged' 2 | initial_state: 'on' 3 | alias: 'person2 tablet plugged' 4 | trigger: 5 | - platform: state 6 | entity_id: sensor.person2_p11_charger_type 7 | from: 'none' 8 | condition: 9 | - condition: state 10 | entity_id: sensor.person2_p11_charger_type 11 | state: 'none' 12 | action: 13 | - service: input_boolean.turn_on 14 | entity_id: input_boolean.person2_tablet_charging 15 | -------------------------------------------------------------------------------- /automation/people/person2/person2_tablet_unplugged.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_tablet_unplugged' 2 | initial_state: 'on' 3 | alias: 'person2 tablet unplugged' 4 | trigger: 5 | - platform: state 6 | entity_id: sensor.person2_p11_charger_type 7 | to: 'none' 8 | condition: 9 | - condition: state 10 | entity_id: sensor.person2_p11_charger_type 11 | state: 'none' 12 | action: 13 | - service: input_boolean.turn_off 14 | entity_id: input_boolean.person2_tablet_charging 15 | -------------------------------------------------------------------------------- /automation/people/person2/sleep_as_android.yaml: -------------------------------------------------------------------------------- 1 | id: 'sleep_as_android' 2 | alias: 'Sleep as android' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: event 6 | event_type: 'SleepAsAndroid_person2' 7 | action: 8 | - service: notify.send_message 9 | target: 10 | entity_id: notify.debug_log 11 | data: 12 | message: >- 13 | SleepAsAndroid: {{ trigger.event.data }} 14 | -------------------------------------------------------------------------------- /automation/people/person2/startup_person2_up.yaml: -------------------------------------------------------------------------------- 1 | id: 'startup_person2_up' 2 | alias: 'Startup person2 up' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: homeassistant 6 | event: start 7 | condition: 8 | - condition: or 9 | conditions: 10 | - condition: time 11 | after: '06:00:00' 12 | before: '22:00:00' 13 | - condition: state 14 | entity_id: input_boolean.person2_home 15 | state: 'off' 16 | action: 17 | - service: input_boolean.turn_on 18 | entity_id: input_boolean.person2_is_awake 19 | -------------------------------------------------------------------------------- /automation/people/person3/person3_awake.yaml: -------------------------------------------------------------------------------- 1 | id: 'person3_awake' 2 | initial_state: 'on' 3 | alias: 'person3 awake' 4 | trigger: 5 | - platform: state 6 | entity_id: 7 | - input_boolean.person3_in_bed 8 | - input_boolean.person3_home 9 | to: 'off' 10 | action: 11 | - service: input_boolean.turn_on 12 | entity_id: input_boolean.person3_is_awake 13 | - service: input_boolean.turn_off 14 | entity_id: input_boolean.person3_in_bed 15 | - service: script.turn_on 16 | entity_id: script.person3_travel_sensor 17 | -------------------------------------------------------------------------------- /automation/people/person3/person3_location_update.yaml: -------------------------------------------------------------------------------- 1 | id: 'person3_location_update' 2 | initial_state: 'on' 3 | alias: 'person3 location update' 4 | mode: single 5 | trigger: 6 | # I've moved 7 | - platform: state 8 | entity_id: 9 | - device_tracker.pixel_6a 10 | - input_select.person3_status_dropdown 11 | - input_boolean.person3_home 12 | - sensor.person3s_time_to_home_duration 13 | - sensor.person3s_time_to_home_by_bus_duration 14 | - sensor.person3s_time_to_home_by_google 15 | - sensor.person3s_time_to_home_by_foot_duration 16 | - sensor.person3_places 17 | action: 18 | - service: script.turn_on 19 | entity_id: script.person3_travel_sensor 20 | -------------------------------------------------------------------------------- /automation/people/person3/person3_next_alarm.yaml: -------------------------------------------------------------------------------- 1 | id: 'person3_next_alarm' 2 | alias: 'person3 next alarm' 3 | trigger: 4 | - platform: state 5 | entity_id: sensor.pixel_6a_next_alarm 6 | to: ~ 7 | action: 8 | - condition: template 9 | value_template: >- 10 | {{ state_attr('sensor.pixel_6a_next_alarm','Time in Milliseconds') is not none }} 11 | - service: input_datetime.set_datetime 12 | entity_id: input_datetime.person3_next_alarm 13 | data: 14 | timestamp: "{{ state_attr('sensor.pixel_6a_next_alarm','Time in Milliseconds')/1000 }}" 15 | -------------------------------------------------------------------------------- /automation/people/person3/startup_person3_up.yaml: -------------------------------------------------------------------------------- 1 | id: 'startup_person3_up' 2 | alias: 'Startup person3 up' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: homeassistant 6 | event: start 7 | condition: 8 | - condition: or 9 | conditions: 10 | - condition: time 11 | after: '06:00:00' 12 | before: '22:00:00' 13 | - condition: state 14 | entity_id: input_boolean.person3_home 15 | state: 'off' 16 | action: 17 | - service: input_boolean.turn_on 18 | entity_id: input_boolean.person3_is_awake 19 | -------------------------------------------------------------------------------- /automation/people/person4/person4_changing_zones.yaml: -------------------------------------------------------------------------------- 1 | id: 'person4_changing_zones' 2 | initial_state: 'on' 3 | alias: 'Elizabeth changing zones' 4 | trigger: 5 | # Been away for a few minutes 6 | - platform: state 7 | entity_id: device_tracker.dsb_0230 8 | to: 'not_home' 9 | for: '00:05:00' 10 | # Arrived in a zone 11 | - platform: state 12 | entity_id: device_tracker.dsb_0230 13 | from: 'not_home' 14 | condition: 15 | # Been at least 5 minutes 16 | - condition: template 17 | value_template: "{{ (now() - state_attr('script.person4_traveltime','last_triggered')).seconds > 300 }}" 18 | action: 19 | - service: script.turn_on 20 | entity_id: script.person4_traveltime 21 | -------------------------------------------------------------------------------- /automation/people/person4/person4_home.yaml: -------------------------------------------------------------------------------- 1 | id: 'person4_home' 2 | initial_state: 'on' 3 | alias: 'Elizabeth home' 4 | trigger: 5 | - platform: state 6 | entity_id: 7 | - device_tracker.00_1d_29_f0_4d_da 8 | - device_tracker.person4_bt_front_mobile_2 9 | - device_tracker.person4_bt_mobile_2 10 | to: 'home' 11 | condition: 12 | - condition: numeric_state 13 | entity_id: group.person_person4 14 | above: 0 15 | value_template: "{{ dict((states|selectattr('entity_id', 'in', state_attr('group.person_person4', 'entity_id'))|list)|groupby('state'))['home']|count }}" 16 | action: 17 | - service: script.turn_on 18 | entity_id: script.person4_home 19 | -------------------------------------------------------------------------------- /automation/people/person4/person4_location_update.yaml: -------------------------------------------------------------------------------- 1 | id: 'person4_location_update' 2 | initial_state: 'on' 3 | alias: 'Elizabeth location update' 4 | trigger: 5 | # I've moved 6 | - platform: state 7 | entity_id: 8 | - device_tracker.dsb_0230 9 | - input_select.person4_status_dropdown 10 | - input_boolean.person4_home 11 | - sensor.person4s_time_to_home_distance 12 | - sensor.person4s_time_to_home_waze 13 | - sensor.person4s_time_to_person4_o 14 | action: 15 | - service: script.turn_on 16 | entity_id: script.person4_travel_sensor 17 | -------------------------------------------------------------------------------- /automation/people/return-train-status.yaml: -------------------------------------------------------------------------------- 1 | id: 'return_train_status' 2 | alias: 'Return train status' 3 | trigger: 4 | - platform: time 5 | at: input_datetime.return_train_time 6 | #at: '16:35:00' 7 | condition: 8 | - condition: state 9 | entity_id: binary_sensor.workday_sensor 10 | state: 'on' 11 | - condition: numeric_state 12 | entity_id: sensor.work_person2_distance 13 | below: 5 14 | action: 15 | - service: notify.person2 16 | data: 17 | message: "{{ states('input_text.train_message') }}" 18 | -------------------------------------------------------------------------------- /automation/people/somebody_arrived_scan.yaml: -------------------------------------------------------------------------------- 1 | id: 'somebody_arrived_scan' 2 | alias: Somebody arrived scan 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: 7 | - input_select.person2_status_dropdown 8 | - input_select.person3_status_dropdown 9 | - input_select.person1_status_dropdown 10 | - input_select.person4_status_dropdown 11 | to: 'Just Arrived' 12 | condition: 13 | - condition: state 14 | entity_id: script.scan_bt_arrive 15 | state: 'off' 16 | action: 17 | - service: script.turn_on 18 | entity_id: script.scan_bt_arrive 19 | -------------------------------------------------------------------------------- /automation/people/startup_location_updates.yaml: -------------------------------------------------------------------------------- 1 | id: 'startup_location_update' 2 | initial_state: 'on' 3 | alias: 'Startup location update' 4 | trigger: 5 | # I've moved 6 | - platform: homeassistant 7 | event: start 8 | action: 9 | - delay: '00:00:30' 10 | - service: script.person3_traveltime 11 | - delay: '00:00:30' 12 | - service: script.person1_traveltime 13 | - delay: '00:00:30' 14 | - service: script.person2_traveltime 15 | - delay: '00:01:00' 16 | - service: script.person4_traveltime 17 | -------------------------------------------------------------------------------- /automation/places/person2_at_ams.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_at_amsterdam_airport' 2 | alias: 'person2 at Amsterdam Airport' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: device_tracker.pixel_xl 7 | to: 'Amsterdam Airport' 8 | action: 9 | - service: notify.person3 10 | data: 11 | message: "person2 has arrived at Amsterdam Airport" 12 | -------------------------------------------------------------------------------- /automation/places/person2_at_bru.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_at_brussels_airport' 2 | alias: 'person2 at Brussels Airport' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: device_tracker.pixel_xl 7 | to: 'Brussels Airport' 8 | action: 9 | - service: notify.person3 10 | data: 11 | message: "person2 has arrived at Brussels Airport" 12 | -------------------------------------------------------------------------------- /automation/places/person2_at_cdg.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_at_paris_cdg_airport' 2 | alias: 'person2 at Paris CDG Airport' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: device_tracker.pixel_xl 7 | to: 'Paris CDG Airport' 8 | action: 9 | - service: notify.person3 10 | data: 11 | message: "person2 has arrived at Paris CDG Airport" 12 | -------------------------------------------------------------------------------- /automation/places/person2_at_iad.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_at_dulles_airport' 2 | alias: 'person2 at Dulles Airport' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: device_tracker.pixel_xl 7 | to: 'Dulles Airport' 8 | action: 9 | - service: notify.person3 10 | data: 11 | message: "person2 has arrived at Dulles Airport" 12 | -------------------------------------------------------------------------------- /automation/places/person2_at_lcy.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_at_lcy' 2 | alias: 'person2 at LCY' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: device_tracker.pixel_xl 7 | to: 'London City Airport' 8 | - platform: state 9 | entity_id: device_tracker.pixel_xl 10 | to: 'LHR T2' 11 | action: 12 | - service: notify.person3 13 | data: 14 | message: "person2 has arrived at London City Airport" 15 | -------------------------------------------------------------------------------- /automation/places/person2_at_lhr.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_at_lhr' 2 | alias: 'person2 at LHR' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: device_tracker.pixel_xl 7 | to: 'London Heathrow Airport' 8 | - platform: state 9 | entity_id: device_tracker.pixel_xl 10 | to: 'LHR T2' 11 | action: 12 | - service: notify.person3 13 | data: 14 | message: "person2 has arrived at London Heathrow Airport" 15 | -------------------------------------------------------------------------------- /automation/places/person2_at_sin.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_at_sin' 2 | alias: 'person2 at SIN' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: device_tracker.pixel_xl 7 | to: 'Singapore Airport' 8 | action: 9 | - service: notify.person3 10 | data: 11 | message: "person2 has arrived at Singapore Airport" 12 | -------------------------------------------------------------------------------- /automation/places/person2_at_work_airport.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_at_work_airport' 2 | alias: 'person2 at work Airport' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: device_tracker.pixel_xl 7 | to: 'work Airport' 8 | for: '01:00:00' 9 | condition: 10 | - condition: state 11 | entity_id: automation.person2_at_work_airport_returning 12 | state: 'off' 13 | action: 14 | - service: automation.turn_on 15 | entity_id: automation.person2_at_work_airport_returning 16 | -------------------------------------------------------------------------------- /automation/places/person2_at_work_airport_returning.yaml: -------------------------------------------------------------------------------- 1 | id: 'person2_at_work_airport_returning' 2 | alias: 'person2 at work Airport returning' 3 | trigger: 4 | - platform: state 5 | entity_id: device_tracker.pixel_xl 6 | to: 'work Airport' 7 | condition: 8 | condition: and 9 | conditions: 10 | - condition: state 11 | entity_id: input_boolean.person2_home 12 | state: 'off' 13 | action: 14 | - service: notify.person3 15 | data: 16 | message: "person2 has landed at work Aiport" 17 | - service: automation.turn_off 18 | data: 19 | entity_id: automation.person2_at_work_airport_returning 20 | #stop_actions: false 21 | -------------------------------------------------------------------------------- /automation/platform/bt-front-dead.yaml: -------------------------------------------------------------------------------- 1 | id: 'bt_front_dead' 2 | alias: 'BT front dead' 3 | trigger: 4 | - platform: state 5 | entity_id: binary_sensor.first_floor_front 6 | to: 'off' 7 | for: '00:10:00' 8 | condition: 9 | - condition: state 10 | entity_id: 11 | - input_boolean.person2_home 12 | - input_boolean.person2_is_awake 13 | state: 'on' 14 | action: 15 | - service: notify.discord_webhook 16 | data: 17 | message: "Front Bluetooth is a zombie" 18 | -------------------------------------------------------------------------------- /automation/platform/bt-rear-dead.yaml: -------------------------------------------------------------------------------- 1 | id: 'bt_rear_dead' 2 | initial_state: 'on' 3 | alias: 'BT rear dead' 4 | trigger: 5 | - platform: state 6 | entity_id: binary_sensor.first_floor_rear 7 | to: 'off' 8 | for: '00:10:00' 9 | action: 10 | - wait_template: >- 11 | {{ is_state('input_boolean.person2_home','on') and is_state('input_boolean.person2_is_awake','on') }} 12 | - service: notify.person2 13 | data: 14 | message: "Rear Bluetooth is a zombie" 15 | -------------------------------------------------------------------------------- /automation/platform/ha-started.yaml: -------------------------------------------------------------------------------- 1 | id: 'ha_started' 2 | alias: 'HA started' 3 | initial_state: 'on' 4 | trigger: 5 | platform: homeassistant 6 | event: start 7 | action: 8 | - service: script.notify_person2 9 | data: 10 | message: "Home Assistant {{ states('sensor.current_version') }} has started on Custodes ({{ as_timestamp(utcnow())|timestamp_utc }})" 11 | - service: script.scan_bt_restart 12 | -------------------------------------------------------------------------------- /automation/platform/ha-stopped.yaml: -------------------------------------------------------------------------------- 1 | id: 'ha_stopped' 2 | alias: 'HA stopped' 3 | initial_state: 'on' 4 | trigger: 5 | platform: homeassistant 6 | event: shutdown 7 | action: 8 | - service: input_boolean.turn_on 9 | target: 10 | entity_id: input_boolean.shutdown_in_progress 11 | - service: script.notify_person2 12 | data: 13 | message: "Home Assistant {{ states('sensor.current_version') }} has shut down on Custodes ({{ as_timestamp(utcnow())|timestamp_utc }})" 14 | -------------------------------------------------------------------------------- /automation/platform/ha_automations_reloaded.yaml: -------------------------------------------------------------------------------- 1 | id: 'ha_automations_reloaded' 2 | alias: 'HA automations reloaded' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: event 6 | event_type: automation_reloaded 7 | action: 8 | - service: notify.apprise 9 | data: 10 | target: discord_ha 11 | title: " " 12 | message: "<@Tinkerer0042> :robot: Automations on Custodes have been reloaded at {{ as_timestamp(now())|timestamp_custom('%Y-%m-%d %H:%M:%S',now()) }} local" 13 | -------------------------------------------------------------------------------- /automation/platform/healthcheck.yaml: -------------------------------------------------------------------------------- 1 | id: 'healthcheck' 2 | initial_state: 'on' 3 | alias: 'Healthcheck' 4 | trigger: 5 | - platform: webhook 6 | webhook_id: !secret pi3 7 | local_only: false 8 | action: 9 | - delay: 10 | milliseconds: 1 11 | mode: parallel 12 | -------------------------------------------------------------------------------- /automation/platform/internet_outage.yaml: -------------------------------------------------------------------------------- 1 | id: 'internet_outage' 2 | alias: 'Internet outage' 3 | mode: parallel 4 | initial_state: 'on' 5 | trigger: 6 | - platform: state 7 | entity_id: 8 | - binary_sensor.fritz_box_3490_connection 9 | - binary_sensor.fritz_box_3490_link 10 | from: 'off' 11 | to: 'on' 12 | for: '00:05:00' 13 | action: 14 | - service: notify.send_message 15 | target: 16 | entity_id: notify.logfile 17 | data: 18 | message: "The internet went down and is now back up" 19 | - service: notify.person2 20 | data: 21 | message: "The internet went down and is now back up" 22 | -------------------------------------------------------------------------------- /automation/platform/living_room_table_off.yaml: -------------------------------------------------------------------------------- 1 | id: 'living_room_table_off' 2 | initial_state: 'on' 3 | alias: 'Living room table off' 4 | trigger: 5 | - platform: state 6 | entity_id: light.living_room_table_lamp 7 | from: 'unavailable' 8 | to: 'off' 9 | condition: 10 | - condition: or 11 | conditions: 12 | - condition: state 13 | entity_id: input_select.living_room 14 | state: 'Dim' 15 | - condition: state 16 | entity_id: input_select.living_room 17 | state: 'Night on' 18 | action: 19 | - service: light.turn_on 20 | data: 21 | entity_id: light.living_room_table_lamp 22 | transition: 15 23 | -------------------------------------------------------------------------------- /automation/platform/plex_hook.yaml: -------------------------------------------------------------------------------- 1 | id: 'plex_hook' 2 | initial_state: 'on' 3 | alias: 'Plex hook' 4 | trigger: 5 | - platform: webhook 6 | webhook_id: !secret plex_token 7 | allowed_methods: 8 | - POST 9 | local_only: false 10 | action: 11 | - service: notify.send_message 12 | target: 13 | entity_id: notify.debug_log 14 | data: 15 | message: > 16 | Plex: {{ trigger.data }} 17 | 18 | -------------------------------------------------------------------------------- /automation/platform/printer_low.yaml: -------------------------------------------------------------------------------- 1 | id: 'printer_low' 2 | initial_state: 'on' 3 | alias: 'Printer low' 4 | trigger: 5 | - platform: numeric_state 6 | entity_id: sensor.printer 7 | below: 100 8 | - platform: numeric_state 9 | entity_id: sensor.printer 10 | below: 20 11 | action: 12 | - service: notify.person2 13 | data: 14 | message: "The printer is running low on consumables, time to buy something." 15 | -------------------------------------------------------------------------------- /automation/platform/scanner_stuck.yaml: -------------------------------------------------------------------------------- 1 | id: 'scanner_stuck' 2 | mode: 'parallel' 3 | alias: 'BT scanner stuck' 4 | initial_state: 'on' 5 | trigger: 6 | - platform: state 7 | entity_id: 8 | - script.scan_bt 9 | - script.scan_bt_arrive 10 | - script.scan_bt_depart 11 | to: 'on' 12 | for: '00:15:00' 13 | action: 14 | - service: script.turn_off 15 | data: 16 | entity_id: "{{ trigger.entity_id }}" 17 | 18 | -------------------------------------------------------------------------------- /automation/platform/zigbee2mqtt_devices.yaml: -------------------------------------------------------------------------------- 1 | id: 'zigbee2mqtt_devices' 2 | alias: 'Zigbee2MQTT device joined or left' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: mqtt 6 | topic: "zigbee2mqtt/bridge/event" 7 | condition: 8 | - condition: template 9 | value_template: >- 10 | {{ trigger.payload_json.type == "device_joined" or trigger.payload_json == "device_leave" }} 11 | action: 12 | - service: notify.discord_webhook 13 | data: 14 | message: >- 15 | :bee: Zigbee device {{ trigger.payload_json.data.friendly_name }} just {{ trigger.payload_json.type }} 16 | -------------------------------------------------------------------------------- /automation/platform/zigbee_offline.yaml: -------------------------------------------------------------------------------- 1 | initial_state: 'on' 2 | id: 'zigbee_offline' 3 | alias: 'Zigbee offline' 4 | trigger: 5 | - platform: state 6 | entity_id: binary_sensor.zigbee2mqtt_bridge_state 7 | to: 'off' 8 | action: 9 | - service: notify.discord_webhook 10 | data: 11 | message: "The Zigbee bridge is offline at {{ as_timestamp(now())|timestamp_custom('%Y-%m-%d %H:%M:%S',now()) }} local" 12 | -------------------------------------------------------------------------------- /automation/platform/zigbee_online.yaml: -------------------------------------------------------------------------------- 1 | initial_state: 'on' 2 | id: 'zigbee_online' 3 | alias: 'Zigbee online' 4 | trigger: 5 | - platform: state 6 | entity_id: binary_sensor.zigbee2mqtt_bridge_state 7 | to: 'on' 8 | action: 9 | - service: notify.discord_webhook 10 | data: 11 | message: "The Zigbee bridge is back online at {{ as_timestamp(now())|timestamp_custom('%Y-%m-%d %H:%M:%S',now()) }} local" 12 | -------------------------------------------------------------------------------- /automation/season/christmas_disabled.yaml: -------------------------------------------------------------------------------- 1 | id: 'christmas_disabled' 2 | alias: 'Christmas disabled' 3 | trigger: 4 | - platform: homeassistant 5 | event: start 6 | - platform: event 7 | event_type: automation_reloaded 8 | - platform: state 9 | entity_id: input_select.season 10 | from: 'Christmas' 11 | condition: 12 | - condition: not 13 | conditions: 14 | - condition: state 15 | entity_id: input_select.season 16 | state: 'Christmas' 17 | action: 18 | - service: homeassistant.turn_off 19 | entity_id: group.christmas_control 20 | -------------------------------------------------------------------------------- /automation/season/christmas_enabled.yaml: -------------------------------------------------------------------------------- 1 | id: 'christmas_enabled' 2 | alias: 'Christmas enabled' 3 | trigger: 4 | - platform: homeassistant 5 | event: start 6 | - platform: event 7 | event_type: automation_reloaded 8 | - platform: state 9 | entity_id: input_select.season 10 | to: 'Christmas' 11 | condition: 12 | - condition: state 13 | entity_id: input_select.season 14 | state: 'Christmas' 15 | - condition: state 16 | entity_id: group.christmas_control 17 | state: 'off' 18 | action: 19 | - service: homeassistant.turn_off 20 | entity_id: group.christmas_control 21 | -------------------------------------------------------------------------------- /automation/season/season_is_autumn.yaml: -------------------------------------------------------------------------------- 1 | id: 'season_is_autumn' 2 | alias: 'Season is autumn' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: homeassistant 6 | event: start 7 | - platform: time 8 | at: '03:00:00' 9 | condition: 10 | - condition: template 11 | value_template: '{{ 12 > now().month > 8 }}' 12 | - condition: not 13 | conditions: 14 | - condition: state 15 | entity_id: input_select.season 16 | state: 'Autumn' 17 | action: 18 | - service: input_select.select_option 19 | data: 20 | entity_id: input_select.season 21 | option: Autumn 22 | -------------------------------------------------------------------------------- /automation/season/season_is_christmas.yaml: -------------------------------------------------------------------------------- 1 | id: 'season_is_christmas' 2 | alias: 'Season is Christmas' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: homeassistant 6 | event: start 7 | - platform: time 8 | at: '02:00:00' 9 | condition: 10 | - condition: template 11 | value_template: '{{ ( now().month == 1 and now().day < 7 ) or ( now().month == 12 and now().day >= 12 ) }}' 12 | - condition: not 13 | conditions: 14 | - condition: state 15 | entity_id: input_select.season 16 | state: 'Christmas' 17 | action: 18 | - service: input_select.select_option 19 | data: 20 | entity_id: input_select.season 21 | option: Christmas 22 | -------------------------------------------------------------------------------- /automation/season/season_is_summer.yaml: -------------------------------------------------------------------------------- 1 | id: 'season_is_summer' 2 | alias: 'Season is summer' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: homeassistant 6 | event: start 7 | - platform: time 8 | at: '03:00:00' 9 | condition: 10 | - condition: template 11 | value_template: '{{ 9 > now().month > 5 }}' 12 | - condition: not 13 | conditions: 14 | - condition: state 15 | entity_id: input_select.season 16 | state: 'Summer' 17 | action: 18 | - service: input_select.select_option 19 | data: 20 | entity_id: input_select.season 21 | option: Summer 22 | -------------------------------------------------------------------------------- /automation/second_bedroom/alarm/person1_alarm_light.yaml: -------------------------------------------------------------------------------- 1 | id: 'person1_alarm_light' 2 | alias: 'person1 alarm light' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: light.second_bedroom 7 | to: 'off' 8 | condition: 9 | # Alarm has gone off and still in bed 10 | - condition: state 11 | entity_id: 12 | - input_boolean.person1_alarm_sounded 13 | - input_boolean.person1_in_bed 14 | state: 'on' 15 | action: 16 | - service: light.turn_on 17 | target: 18 | entity_id: light.second_bedroom 19 | data: 20 | transition: 5 21 | -------------------------------------------------------------------------------- /automation/second_bedroom/alarm/person1_up_reminder_off.yaml: -------------------------------------------------------------------------------- 1 | id: 'person1_up_reminder_off' 2 | alias: 'person1 up reminder off' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: input_boolean.person1_alarm_sounded 7 | to: 'off' 8 | action: 9 | - service: script.turn_off 10 | entity_id: script.wake_person1 11 | -------------------------------------------------------------------------------- /automation/second_bedroom/modes/second_bedroom_mode_wake.yaml: -------------------------------------------------------------------------------- 1 | id: 'second_bedroom_mode_wake' 2 | initial_state: 'on' 3 | alias: 'Second bedroom mode wake' 4 | trigger: 5 | - platform: state 6 | entity_id: input_boolean.person1_alarm_sounded 7 | to: 'on' 8 | condition: 9 | - condition: state 10 | entity_id: input_boolean.person1_home 11 | state: 'on' 12 | - condition: time 13 | before: '10:00:00' 14 | action: 15 | - service: input_select.select_option 16 | data: 17 | entity_id: input_select.second_bedroom 18 | option: 'Wake' 19 | -------------------------------------------------------------------------------- /automation/second_bedroom/person1_bedside_left_on.yaml: -------------------------------------------------------------------------------- 1 | id: 'person1_bedside_left_on' 2 | alias: 'person1 bedside left on' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: time 6 | at: '23:59:59' 7 | condition: 8 | - condition: state 9 | entity_id: light.second_bedroom 10 | state: 'on' 11 | action: 12 | - service: input_select.select_option 13 | data: 14 | entity_id: input_select.second_bedroom 15 | option: 'Bedtime' 16 | - delay: '00:01:00' 17 | - service: input_select.select_option 18 | data: 19 | entity_id: input_select.second_bedroom 20 | option: 'Off' 21 | -------------------------------------------------------------------------------- /automation/second_bedroom/person1_phone_alarm.yaml: -------------------------------------------------------------------------------- 1 | id: 'person1_phone_alarm' 2 | alias: 'person1 phone alarm' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: time 6 | at: sensor.sm_a546b_next_alarm 7 | condition: 8 | - condition: state 9 | entity_id: input_boolean.person1_home 10 | state: 'on' 11 | - condition: not 12 | conditions: 13 | - condition: state 14 | entity_id: sensor.sm_a546b_next_alarm 15 | state: 'unavailable' 16 | action: 17 | - service: input_select.select_option 18 | data: 19 | entity_id: input_select.second_bedroom 20 | option: 'Wake' 21 | -------------------------------------------------------------------------------- /automation/spare_bedroom/guest_mode_off.yaml: -------------------------------------------------------------------------------- 1 | id: 'spare_bedroom_guest_mode_off' 2 | alias: 'Spare bedroom guest mode off - turn down the heat' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: input_boolean.guest_mode 7 | to: 'off' 8 | action: 9 | - service: climate.set_preset_mode 10 | data: 11 | preset_mode: 'away' 12 | target: 13 | entity_id: climate.spare_bedroom_radiator 14 | -------------------------------------------------------------------------------- /automation/spare_bedroom/guest_mode_on.yaml: -------------------------------------------------------------------------------- 1 | id: 'spare_bedroom_guest_mode_on' 2 | alias: 'Spare bedroom guest mode on - turn up the heat' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: input_boolean.guest_mode 7 | to: 'on' 8 | action: 9 | - service: climate.set_temperature 10 | data: 11 | temperature: 21 12 | target: 13 | entity_id: climate.spare_bedroom_radiator 14 | -------------------------------------------------------------------------------- /automation/test/README.md: -------------------------------------------------------------------------------- 1 | # Automations, automations everywhere, and all the brains did hurt 2 | 3 | Documentation: [automation](https://home-assistant.io/docs/automation/) 4 | 5 | ## Test 6 | 7 | These are for when I'm playing with things 8 | -------------------------------------------------------------------------------- /automation/test/telegram_callback.yaml: -------------------------------------------------------------------------------- 1 | id: 'telegram_callback' 2 | alias: 'Telegram callback' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: event 6 | event_type: telegram_callback 7 | action: 8 | - service: notify.send_message 9 | target: 10 | entity_id: notify.debug_log 11 | data: 12 | message: > 13 | Received callback: {{ trigger.event.data.data }} with message {{ trigger.event.data.message }} 14 | From: {{ trigger.event.data.from_first }} {{ trigger.event.data.from_last }} aka {{ trigger.event.data.user_id }} in {{ trigger.event.data.chat_id }}/{{ trigger.event.data.chat }} 15 | -------------------------------------------------------------------------------- /automation/test/telegram_command.yaml: -------------------------------------------------------------------------------- 1 | id: 'telegram_command' 2 | alias: 'Telegram command' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: event 6 | event_type: telegram_command 7 | action: 8 | - service: notify.send_message 9 | target: 10 | entity_id: notify.debug_log 11 | data: 12 | message: > 13 | Received a command {{ trigger.event.data.command }} {{ trigger.event.data.args }} 14 | From: {{ trigger.event.data.from_first }} {{ trigger.event.data.from_last }} aka {{ trigger.event.data.user_id }} in {{ trigger.event.data.chat_id }}/{{ trigger.event.data.chat }} 15 | -------------------------------------------------------------------------------- /automation/test/telegram_text.yaml: -------------------------------------------------------------------------------- 1 | id: 'telegram_text' 2 | alias: 'Telegram text' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: event 6 | event_type: telegram_text 7 | action: 8 | - service: notify.send_message 9 | target: 10 | entity_id: notify.debug_log 11 | data: 12 | message: > 13 | Received text: {{ trigger.event.data.text }} 14 | From: {{ trigger.event.data.from_first }} {{ trigger.event.data.from_last }} aka {{ trigger.event.data.user_id }} in {{ trigger.event.data.chat_id }}/{{ trigger.event.data.chat }} 15 | -------------------------------------------------------------------------------- /automation/test/test_alarm.yaml: -------------------------------------------------------------------------------- 1 | id: 'test_alarm' 2 | alias: 'Test alarm' 3 | trigger: 4 | - platform: time 5 | at: sensor.pixel_xl_next_alarm 6 | action: 7 | - service: notify.person2 8 | data: 9 | message: "The alarm, it's time" 10 | -------------------------------------------------------------------------------- /automation/things/car_home.yaml: -------------------------------------------------------------------------------- 1 | id: 'car_home' 2 | initial_state: 'on' 3 | alias: 'Car home' 4 | trigger: 5 | - platform: state 6 | entity_id: 7 | - device_tracker.skoda_superb_combi_position 8 | to: 'home' 9 | - platform: homeassistant 10 | event: start 11 | condition: 12 | - condition: state 13 | entity_id: input_boolean.car_home 14 | state: 'off' 15 | - condition: state 16 | entity_id: device_tracker.skoda_superb_combi_position 17 | state: 'home' 18 | action: 19 | - service: input_boolean.turn_on 20 | entity_id: input_boolean.car_home 21 | - service: input_text.set_value 22 | data: 23 | entity_id: input_text.car 24 | value: "Home" 25 | -------------------------------------------------------------------------------- /automation/things/car_moved.yaml: -------------------------------------------------------------------------------- 1 | id: 'car_moved' 2 | alias: 'car moved' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: state 6 | entity_id: device_tracker.skoda_superb_combi_position 7 | action: 8 | - service: script.update_car_location 9 | -------------------------------------------------------------------------------- /automation/things/car_update.yaml: -------------------------------------------------------------------------------- 1 | id: 'car_update_myskoda' 2 | alias: 'Car update for MySkoda' 3 | initial_state: 'on' 4 | triggers: 5 | - trigger: state 6 | entity_id: binary_sensor.pixel_xl_android_auto 7 | to: ~ 8 | for: '00:01:00' 9 | id: 'auto' 10 | actions: 11 | - action: homeassistant.update_entity 12 | data: 13 | entity_id: 14 | - device_tracker.skoda_superb_combi_position 15 | 16 | -------------------------------------------------------------------------------- /automation/things/power_cycle_loki.yaml: -------------------------------------------------------------------------------- 1 | id: 'power_cycle_loki' 2 | alias: 'Power cycle loki' 3 | initial_state: 'on' 4 | triggers: 5 | - trigger: state 6 | entity_id: device_tracker.rpi_loki 7 | to: 'not_home' 8 | for: '00:10:00' 9 | conditions: 10 | - condition: state 11 | entity_id: switch.cloudfree_usb_loki 12 | state: 'on' 13 | actions: 14 | - action: switch.turn_off 15 | target: 16 | entity_id: switch.cloudfree_usb_loki 17 | - delay: '00:00:05' 18 | - action: switch.turn_on 19 | target: 20 | entity_id: switch.cloudfree_usb_loki 21 | - action: notify.discord_webhook 22 | data: 23 | message: "Loki was down for 10 minutes so we power cycled it" 24 | -------------------------------------------------------------------------------- /automation/toilet/toilet_unoccupied.yaml: -------------------------------------------------------------------------------- 1 | id: 'toilet_unoccupied' 2 | alias: 'Toilet unoccupied' 3 | initial_state: 'on' 4 | trigger: 5 | - platform: event 6 | event_type: automation_reloaded 7 | - platform: numeric_state 8 | entity_id: sensor.toilet_light_sensor_illuminance_lux 9 | below: 2 10 | - platform: state 11 | entity_id: binary_sensor.toilet_door_contact 12 | to: 13 | - 'on' 14 | - 'off' 15 | condition: 16 | - condition: numeric_state 17 | entity_id: sensor.toilet_light_sensor_illuminance_lux 18 | below: 2 19 | action: 20 | - service: input_boolean.turn_off 21 | target: 22 | entity_id: input_boolean.toilet_occupied 23 | -------------------------------------------------------------------------------- /automation/vestibule/modes/vestibule_mode_away.yaml: -------------------------------------------------------------------------------- 1 | id: 'vestibule_mode_away' 2 | initial_state: 'on' 3 | alias: 'Vestibule mode away' 4 | trigger: 5 | - platform: state 6 | entity_id: binary_sensor.home_occupied 7 | to: 'off' 8 | condition: 9 | - condition: template 10 | value_template: "{{ not is_state('input_select.vestibule','Away') }}" 11 | action: 12 | - service: input_select.select_option 13 | data: 14 | entity_id: 'input_select.vestibule' 15 | option: 'Away' 16 | -------------------------------------------------------------------------------- /automations.yaml: -------------------------------------------------------------------------------- 1 | - id: '1699433252013' 2 | alias: Spare bedroom external temperature sensor 3 | description: Configures the spare bedroom TRV to receive the temperature from the 4 | external sensor 5 | use_blueprint: 6 | path: pavax/z2m_aqara_trv_external_temperature.yaml 7 | input: 8 | external_temp_sensor: sensor.spare_bedroom_environment_temperature 9 | aqara_trv_device: 06c5830a30a0058db6c294ccf8f6e0d0 10 | -------------------------------------------------------------------------------- /binary_sensors/meteoalarm.yaml: -------------------------------------------------------------------------------- 1 | - platform: meteoalarm 2 | country: "united-kingdom" 3 | province: "Strathclyde" 4 | -------------------------------------------------------------------------------- /binary_sensors/trend_living_room_light.yaml: -------------------------------------------------------------------------------- 1 | - platform: trend 2 | sensors: 3 | trend_living_room_light: 4 | entity_id: sensor.living_room_light_sensor_illuminance_lux 5 | friendly_name: Living room light level trend 6 | device_class: light 7 | max_samples: 5 8 | sample_duration: 3600 9 | -------------------------------------------------------------------------------- /binary_sensors/trend_sun_elevation.yaml: -------------------------------------------------------------------------------- 1 | - platform: trend 2 | sensors: 3 | trend_sun_elevation: 4 | entity_id: sensor.sun_solar_elevation 5 | friendly_name: Sun rising 6 | max_samples: 5 7 | sample_duration: 300 8 | -------------------------------------------------------------------------------- /blueprints/automation/README.md: -------------------------------------------------------------------------------- 1 | # Blueprints 2 | 3 | I'm just messing about with Blueprints for now. These aren't in use, and will likely see many changes before they are. 4 | 5 | What this means is, they may not work ;) 6 | -------------------------------------------------------------------------------- /blueprints/automation/homeassistant/README.md: -------------------------------------------------------------------------------- 1 | # Blueprints 2 | 3 | These are the default blueprints that HA ships. They're not mine. 4 | -------------------------------------------------------------------------------- /climate/README.md: -------------------------------------------------------------------------------- 1 | # Climate 2 | 3 | Components 4 | * [climate.generic_thermostat](https://home-assistant.io/components/climate.generic_thermostat/) 5 | * [input_boolean](https://www.home-assistant.io/components/input_boolean/) 6 | 7 | This is the simplest way of exposing the temperature sensors to Google. There's a dummy input boolean to pretend to be the heater. 8 | -------------------------------------------------------------------------------- /custom_components/README.md: -------------------------------------------------------------------------------- 1 | # Custom components 2 | 3 | * [HACS](https://hacs.netlify.com) for intalling, updating, and finding new custom integrations. All other custom integrations are installed using this. 4 | * [Circadian lighting](https://github.com/claytonjn/hass-circadian_lighting/) since the built in [flux integration](https://www.home-assistant.io/integrations/flux) isn't as good. 5 | * [Home Assistant Remote](https://github.com/lukas-hetzenecker/home-assistant-remote) for linking my Z-Wave and primary instances. This is more effective than my ugly MQTT hack. 6 | -------------------------------------------------------------------------------- /custom_components/awtrix/services.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DubhAd/Home-AssistantConfig/6f3e1a07e0e32c6d7b5386830244baca3499fcf6/custom_components/awtrix/services.yaml -------------------------------------------------------------------------------- /custom_components/hacs/frontend/templates/error.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% block content %} 3 | 4 | {% endblock %} 5 | -------------------------------------------------------------------------------- /custom_components/hacs/frontend/templates/message.html: -------------------------------------------------------------------------------- 1 |