diff --git a/.gitignore b/.gitignore index 9c999ad..bddef94 100644 --- a/.gitignore +++ b/.gitignore @@ -1,23 +1,60 @@ -known_devices.yaml -secrets.yaml -entity_registry.yaml -.HA_VERSION -zones.yaml -sensors/location.yaml -scripts/tornado_alarm.yaml -scripts/test_alarm.yaml -scripts/security_alarm.yaml -*ios.conf +# Ignore everything explicitly +* + +# Whitelist files/folders with !, these will not be ignored. +!*.yaml +!.gitignore +!*.md +!packages/ +!templates/ +!binary_sensors/ +!sensors/ +!switches/ +!lights/ +!python_scripts/ +!alerts/ + + +# Then because I'm paranoid... +# Ignore folders. +.storage +.cloud +.google.token +icloud/ +www/ +tts/ +deps/ +hadashboards/ +intents/ + +# Ignore these dot and conf files +*.conf *.log *.db *.xml *.sqlite *.txt -icloud/ -www/ -tts/ -deps/ +.HA_VERSION *DS_Store ._* .uuid -!.gitignore +eero.session +eero_tracker_instantiate.py +Icon +.dropbox +.google.token +.homekit.state +.spotify-token-cache + + +# Ensure these YAML files are ignored, otherwise your secret data/credentials will leak. +ip_bans.yaml +secrets.yaml +known_devices.yaml +entity_registry.yaml +zones.yaml +sensors/location.yaml +google_calendars.yaml +packages/events.yaml +packages/presence.yaml +scripts.yaml \ No newline at end of file diff --git a/README.md b/README.md index 7aecae6..c1cedfe 100644 --- a/README.md +++ b/README.md @@ -3,16 +3,31 @@ This repo contains the working [Home Assistant](https://home-assistant.io/) configuration for **Anchorage House**. Below are links to the devices currently being used, blog posts, and other HA enthusists that provided inspiration and configs to help build this config. All of the code is free to use. -This is an updated config. I went through and decided to clean up my previous config, so here we are at V3 of my config. +This is V4 of my config. -The configuration was migrated from a old PC to a RaspberryPi 3 back in 2017. The old configutation is stored in branch V2-config for anyone that wants to see the old version. +#### Major Changes in v4: +* Moved to Lovelace UI +* Started migrating to packages to better organize sesnors, scripts, and automations +* Continued work to streamline the config +* Anchorage House now tweets throughout the day - [@anchoragehouse2](https://twitter.com/anchoragehouse2) +* Due to a required garage door opener replacement the GoControl ZWave Garage Opener has been replaced with Chamberlain MyQ -Read about the continuing work to automate **everything** over on my [blog](https://medium.com/@thejeffreystone). But be warned, it really hasn't been updated in a while. +#### General Information about Anchorage House + +Hassbian is the flavor of Home Assistant powering Anchorage House. Currently it is running on a RaspberryPi 3. I also have a Ubuntu Server that handles running some other things like my 433mhz data collection, and Splunk for Home Assistant data analytics. And Smartthings is currently is used as a dumb hub handling most of the zwave and zigbee devices. + +The old configurations are stored in branches for anyone that wants to see the previous iterations. However, the only branch guaranteed to work with the current version of Home Assistant is master. + +Read about the continuing work to automate **everything** over on my [blog](https://medium.com/@thejeffreystone). But be warned, it really hasn't been updated in a while. Feel free to reachout if you have questions. I love this stuff. #### Devices: + +None of the following links are affiliate links, and are included merely as reference. + * Apple Devices (Macbooks, Mac Mini, iPhones, iPads) * [Honeywell Wifi Thermostat](http://a.co/cqvrljP) * [Amazon Echo Dot](http://a.co/7VYHqvw) +* Amazon Echo Gen 2 * [Smartthings](http://a.co/2xWyXF5) * [GE Z-Wave Switches](http://a.co/3OUpcMf) * [Aeon Energy Switchs](http://a.co/7aKBkst) @@ -20,11 +35,11 @@ Read about the continuing work to automate **everything** over on my [blog](http * [GoControl Z-Wave Bulbs](http://a.co/ajfXdIS) * [Cree Connect Bulbs](http://a.co/91ddysL) * [Foscam FI8918W](http://a.co/cExSWZ7) -* [GoControl Z-Wave Garage Door Opener](http://a.co/iw3H4zQ) +* [MyQ Garage Door Opener](https://www.amazon.com/dp/B075H7Z5L8/) * [ZWave Door Sensor]( http://a.co/4Uj8d5r) * [Sonoff WiFi Wireless Smart Switch ]( http://a.co/9v8KnBT) * [Levitron Plug in ZWave Dimmer](http://a.co/8wOv1Gs) -* [Levitron ZWave Switch](http://a.co/1z9EeS3) I prefer these over the GE Ones +* [Levitron ZWave Switch](http://a.co/1z9EeS3) * [Dome Motion Sensor](http://a.co/aFlzEmf) * [Dome Door Window Sensor](http://a.co/eo4DsIk) * AppleTv @@ -38,7 +53,15 @@ Read about the continuing work to automate **everything** over on my [blog](http * Amazon Echo * IFTTT * Owntracks -* MQTT (For Smartthings and Owntracks) +* Life360 +* Spotify +* Goolge (Calendar API, GMail for sensors, and Google Home) +* Waze API +* Dropbox for backup +* MQTT (For Smartthings, Owntracks, Life360) * Eero For Networked Devices * [Smartthings-MQTT-Bridge](https://github.com/stjohnjohnson/smartthings-mqtt-bridge) -* [RTL_433](https://github.com/merbanan/rtl_433) \ No newline at end of file +* [RTL_433](https://github.com/merbanan/rtl_433) +* Cloudflare for SSL and DNS +* Splunk +* Various other services and APIs \ No newline at end of file diff --git a/alerts/jeff_bad_traffic_home.yaml b/alerts/jeff_bad_traffic_home.yaml old mode 100755 new mode 100644 index 01ea943..769c547 --- a/alerts/jeff_bad_traffic_home.yaml +++ b/alerts/jeff_bad_traffic_home.yaml @@ -1,10 +1,10 @@ jeff_bad_traffic_home: - name: Leave Now! Currently {{states.sensor.jeff_ett_home.attributes.duration_in_traffic}} mins home! + name: Leave Now! Currently {{states.sensor.jeff_ett_home.attributes.duration | round}} mins home! done_message: Canceling Traffic Alert entity_id: input_boolean.jeff_traffic_alert_home state: 'on' repeat: 10 - can_acknowledge: True + can_acknowledge: false skip_first: False notifiers: - - jeff_ios \ No newline at end of file + - jeff_ios diff --git a/alerts/jeff_heading_home.yaml b/alerts/jeff_heading_home.yaml new file mode 100644 index 0000000..c758e06 --- /dev/null +++ b/alerts/jeff_heading_home.yaml @@ -0,0 +1,9 @@ +jeff_heading_home: + name: Jeff will arrive in {{states.sensor.jeff_ett_home.attributes.duration | round}} minutes. + entity_id: input_boolean.jeff_travel_monitor + state: 'on' + repeat: 20 + can_acknowledge: false + skip_first: False + notifiers: + - ios_katherinestonesiphone diff --git a/alerts/kat_heading_home.yanl b/alerts/kat_heading_home.yaml old mode 100755 new mode 100644 similarity index 51% rename from alerts/kat_heading_home.yanl rename to alerts/kat_heading_home.yaml index 44dfe03..917329d --- a/alerts/kat_heading_home.yanl +++ b/alerts/kat_heading_home.yaml @@ -1,10 +1,10 @@ kat_heading_home: - name: Kat will be home in {{states.sensor.kat_ett_home.attributes.duration_in_traffic}}. - done_message: Kat is home - entity_id: input_boolean.kat_heading_home + name: Kat will be home in {{states.sensor.kat_ett_home.attributes.duration | round}} minutes. + done_message: Kat Travel Monitor Disabled + entity_id: input_boolean.kat_travel_monitor state: 'on' repeat: 20 - can_acknowledge: True + can_acknowledge: false skip_first: False notifiers: - jeff_ios diff --git a/alerts/lockdown_issue.yaml b/alerts/lockdown_issue.yaml old mode 100755 new mode 100644 index f70998d..86b2b73 --- a/alerts/lockdown_issue.yaml +++ b/alerts/lockdown_issue.yaml @@ -4,7 +4,7 @@ lockdown_issue: entity_id: input_boolean.lockdown_issue state: 'on' repeat: 2 - can_acknowledge: True + can_acknowledge: false skip_first: False notifiers: - jeff_ios \ No newline at end of file diff --git a/alerts/unauthorized_access.yaml b/alerts/unauthorized_access.yaml old mode 100755 new mode 100644 index d6de5d2..336fb7a --- a/alerts/unauthorized_access.yaml +++ b/alerts/unauthorized_access.yaml @@ -1,10 +1,10 @@ unauthorized_access: - name: Unauthorized Access Detected at Anchorage House - done_message: Access Authorized - entity_id: input_boolean.security_alarm + name: Potential Unauthorized Access Detected at Anchorage House + done_message: Security Issue Cleared + entity_id: input_boolean.security_issue state: 'on' repeat: 2 - can_acknowledge: True + can_acknowledge: false skip_first: False notifiers: - - jeff_ios \ No newline at end of file + - all_ios diff --git a/automations.yaml b/automations.yaml new file mode 100644 index 0000000..1c63359 --- /dev/null +++ b/automations.yaml @@ -0,0 +1,693 @@ +- id: backup_hass + alias: Backup Hass + trigger: + - platform: time + at: '05:00:00' + action: + - service: script.add_logbook_entry + data_template: + name: Backup + message: is running + - service: shell_command.backup + - service: script.twitter_notify + data: + message: "I just kicked off a backup of #homeassistant to ensure I live on. Do you backup? " +- id: net_speed_report + alias: Network Speed Report + trigger: + - platform: time + at: '11:15:00' + action: + - service: script.twitter_notify + data: + message: "According to my latest speed tests Anchorage House is getting {{ states.sensor.network_down.state}} Mbps down and {{ states.sensor.network_up.state}} Mbps up thanks to #ATTFiber. " +- id: time_to_leave_summit + alias: Time to Leave Jeff + initial_state: true + trigger: + - platform: numeric_state + entity_id: sensor.home_summit + above: 50 + condition: + - condition: state + entity_id: sensor.jeff_location + state: Home + - condition: time + after: '05:30:00' + before: '07:00:00' + - condition: state + entity_id: input_boolean.jeff_traffic_alerts + state: 'on' + action: + - service: notify.jeff_ios + data: + message: Currently {{states.sensor.home_to_summit.attributes.duration | round}} + mins to Work. Leave. + - service: notify.twitter + data: + message: "Looks like traffic is bad out there so I let @thejeffreystone know. " +- id: hvac_cool_on + alias: hvac cool on + trigger: + - above: 76 + entity_id: climate.first_floor + platform: numeric_state + value_template: '{{ state.attributes.termperature }}' + condition: + - above: 83 + condition: numeric_state + entity_id: sensor.dark_sky_apparent_temperature + action: + - service: script.climate_set_cool + - data: + message: "The Temperature is a bit warm at Anchorage House, so Im turning + on the AC. " + service: script.twitter_notify + initial_state: true +- id: hvac_off + alias: hvac off + trigger: + - above: '55' + below: '80' + entity_id: sensor.dark_sky_apparent_temperature + platform: numeric_state + condition: + - above: '60' + below: '78' + condition: numeric_state + entity_id: climate.first_floor + action: + - service: script.climate_turn_off + - data: + message: "The Temperature outside is perfect for opening windows at Anchorage + House, so Im turning off the HVAC. " + service: script.twitter_notify + initial_state: true +- id: hvac_heat_on + alias: hvac heat on + trigger: + - below: 62 + entity_id: climate.first_floor + platform: numeric_state + value_template: '{{ state.attributes.termperature }}' + condition: + - below: 50 + condition: numeric_state + entity_id: sensor.dark_sky_apparent_temperature + action: + - service: script.climate_set_heat + - data: + message: "The Temperature is a bit chilly at Anchorage House, so Im turning + on the Heat. " + service: script.twitter_notify + initial_state: true + +- id: coffee_time + alias: Coffee Time + initial_state: true + trigger: + - platform: time + at: 05:15:00 + action: + - service: scene.turn_on + entity_id: scene.diminshed_livingroom_lighting + - service: scene.turn_on + entity_id: scene.diminished_kitchen_lighting +- id: good_morning + alias: Good Morning + initial_state: true + trigger: + - platform: time + at: '07:00:00' + action: + - service: scene.turn_on + entity_id: scene.normal_livingroom_lighting + - service: scene.turn_on + entity_id: scene.normal_kitchen_lighting + - service: switch.turn_off + entity_id: switch.rainbow_light + - service: scene.turn_on + entity_id: scene.jeff_light_on + - service: script.twitter_notify + data: + message: 'Good Morning! Time to rise and shine at Anchorage House. ' +- id: skylar_bedtime + alias: Skylar Bedtime + initial_state: true + trigger: + - platform: time + at: '19:15:00' + action: + - service: switch.turn_on + entity_id: switch.rainbow_light +- id: jeff_lights_out + alias: Jeff lights out + initial_state: true + trigger: + - platform: time + at: '23:00:00' + action: + - service: scene.turn_on + entity_id: scene.jeff_light_off +- id: jeff_bedtime + alias: Jeff bedtime + initial_state: true + trigger: + - platform: time + at: '22:00:00' + action: + - service: scene.turn_on + entity_id: scene.jeff_bedtime +- id: jeff_night_light + alias: Jeff night light + initial_state: true + trigger: + - platform: time + at: '22:30:00' + action: + - service: scene.turn_on + entity_id: scene.jeff_night_light +- id: jeff_light_on + alias: Jeff Light On + initial_state: true + trigger: + - platform: time + at: '20:00:00' + action: + - service: scene.turn_on + entity_id: scene.jeff_light_on +- id: jeff_alarm + alias: Jeff alarm + initial_state: true + trigger: + - platform: time + at: 05:15:00 + action: + - service: scene.turn_on + entity_id: scene.jeff_night_light +- id: jeff_wake_up + alias: Jeff wake up + initial_state: true + trigger: + - platform: time + at: 05:30:00 + action: + - service: scene.turn_on + entity_id: scene.jeff_wake_up +- id: good_night + alias: Good Night + initial_state: true + trigger: + - platform: time + at: '22:30:00' + action: + - service: scene.turn_on + entity_id: scene.night_time_livingroom_lighting + - service: light.turn_off + data: + entity_id: light.loft_lamp + - service: script.turn_on + entity_id: script.driveway_off + - service: switch.turn_off + entity_id: switch.incense + - service: light.turn_off + data: + entity_id: light.kitchen_light_strip + - service: light.turn_off + data: + entity_id: light.kitchen_cabinets + - service: script.twitter_notify + data: + message: 'Good Night from Anchorage House. ' +- id: outside_lights_on_sunset + alias: Outside Lights on at Sunset + initial_state: true + trigger: + - platform: sun + event: sunset + offset: -00:30:00 + action: + - service: switch.turn_on + data: + entity_id: switch.front_porch + - service: script.sunset_garage_open + - service: script.twitter_notify + data: + message: "Its getting dark at Anchorage House, so Im turning on the outside + lights. " +- id: outside_lights_off_sunrise + alias: Outside Lights off at Sunrise + initial_state: true + trigger: + - platform: sun + event: sunrise + action: + - service: switch.turn_off + data: + entity_id: switch.front_porch + - service: script.twitter_notify + data: + message: "The sun is up at Anchorage House, so Im turning off the outside + lights. " +- id: inside_on_sunset + alias: Inside on at Sunset + initial_state: true + trigger: + - platform: sun + event: sunset + offset: -01:00:00 + action: + service: script.inside_all_on +- id: inside_off_sunrise + alias: Inside off at Sunrise + initial_state: true + trigger: + - platform: sun + event: sunrise + offset: 00:30:00 + condition: + - condition: numeric_state + entity_id: sensor.dark_sky_cloud_coverage + below: 50 + action: + - service: script.inside_all_off + - service: scene.turn_on + entity_id: scene.jeff_light_off +- id: door_chime + alias: Door Chine + trigger: + - entity_id: binary_sensor.laundry_room_door + from: 'off' + platform: state + to: 'on' + - entity_id: binary_sensor.laundry_room_door + from: 'on' + platform: state + to: 'off' + - entity_id: binary_sensor.front_door + from: 'off' + platform: state + to: 'on' + - entity_id: binary_sensor.front_door + from: 'on' + platform: state + to: 'off' + - entity_id: binary_sensor.back_door + from: 'off' + platform: state + to: 'on' + - entity_id: binary_sensor.back_door + from: 'on' + platform: state + to: 'off' + - entity_id: binary_sensor.attic_door + from: 'off' + platform: state + to: 'on' + - entity_id: binary_sensor.attic_door + from: 'on' + platform: state + to: 'off' + condition: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + action: + - service: shell_command.door_chime + initial_state: true + +- id: ha_start + alias: HA Startup + initial_state: true + trigger: + - platform: homeassistant + event: start + action: + service: frontend.set_theme + data: + name: midnight-AH +- id: close_garage_lights_out + alias: Close Garage at lights out + initial_state: true + trigger: + - platform: time + at: '22:30:00' + condition: + - condition: state + entity_id: cover.cargo_bay + state: open + action: + - service: script.close_garage +- id: garage_open_sunset + alias: Garage Open At Sunset + initial_state: true + trigger: + - platform: sun + event: sunset + condition: + - condition: state + entity_id: cover.cargo_bay + state: open + action: + - service: script.driveway_on +- id: garage_open_after_sunset + alias: Garage Opening Driveway Lights On + initial_state: true + trigger: + - platform: state + entity_id: cover.cargo_bay + from: closed + to: open + condition: + - condition: state + entity_id: sun.sun + state: below_horizon + action: + - service: script.driveway_on +- id: garage_closed_lights_off + alias: Garage Closing Driveway Lights Off + initial_state: true + trigger: + - platform: state + entity_id: cover.cargo_bay + from: open + to: closed + action: + - service: script.turn_on + entity_id: script.driveway_off +- id: turn_off_audible_notifications + alias: Turn Off Audible Notifications at 730pm + initial_state: true + trigger: + - platform: time + at: '19:30:00' + action: + - service: input_boolean.turn_off + entity_id: input_boolean.audible_notifications +- id: turn_off_audible_notifications_guests + alias: Turn Off Audible Notifications at 7pm + initial_state: true + trigger: + - platform: time + at: '19:00:00' + condition: + - condition: state + entity_id: input_boolean.guest_mode + state: 'on' + action: + - service: input_boolean.turn_off + entity_id: input_boolean.audible_notifications +- id: turn_on_audible_notifications + alias: Turn On Audible Notifications at 7am + initial_state: true + trigger: + - platform: time + at: 07:00:00 + action: + - entity_id: input_boolean.audible_notifications + service: input_boolean.turn_on +- id: nightly_lockdown + alias: Nightly Lockdown + initial_state: true + trigger: + - platform: time + at: '23:00:00' + condition: + - condition: state + entity_id: device_tracker.jeffreystonesiphone + state: home + - condition: state + entity_id: device_tracker.katherinestonesiphone + state: home + - condition: state + entity_id: input_boolean.guest_mode + state: 'off' + action: + - service: script.lockdown +- id: morning_standby + alias: Morning Standby + initial_state: true + trigger: + - platform: time + at: 05:30:00 + condition: + condition: or + conditions: + - condition: state + entity_id: sensor.family_status + state: Home + - condition: state + entity_id: input_boolean.guest_mode + state: 'on' + action: + - service: script.standby +- id: jeff_eta_home + alias: Jeff eta home + initial_state: true + trigger: + - platform: state + entity_id: sensor.jeff_destination + to: Home + condition: + - condition: state + entity_id: sensor.notification_mode + state: Normal + action: + - service: input_boolean.turn_on + entity_id: input_boolean.jeff_travel_monitor +- id: enable_bad_traffic_home_jeff + alias: Enable Jeff Bad Traffic Home + initial_state: true + trigger: + - platform: numeric_state + entity_id: sensor.jeff_ett_home + above: 59 + condition: + - condition: state + entity_id: sensor.jeff_location + state: Summit + - condition: state + entity_id: input_boolean.jeff_traffic_alerts + state: 'on' + action: + - service: input_boolean.turn_on + entity_id: input_boolean.jeff_traffic_alert_home + - service: nscript.twitter_notify + data: + message: "Looks like traffic is bad out there so I let @thejeffreystone know. " +- id: disable_bad_traffic_home_jeff + alias: Disabling Jeff Bad Traffic Home + initial_state: true + trigger: + - platform: numeric_state + entity_id: sensor.jeff_ett_home + below: 40 + - platform: state + entity_id: sensor.jeff_destination + to: Home + condition: + - condition: state + entity_id: input_boolean.jeff_traffic_alert_home + state: 'on' + action: + - service: input_boolean.turn_off + entity_id: input_boolean.jeff_traffic_alert_home +- id: enable_vacation_mode + alias: Enable Vacation Mode + initial_state: true + trigger: + - platform: numeric_state + entity_id: sensor.jeff_ett_home + above: 180 + - platform: numeric_state + entity_id: sensor.kat_ett_home + above: 180 + condition: + - condition: numeric_state + entity_id: sensor.jeff_ett_home + above: 180 + - condition: numeric_state + entity_id: sensor.kat_ett_home + above: 180 + action: + - service: input_boolean.turn_on + entity_id: input_boolean.vacation_mode +- id: '1550107919204' + alias: Family Is Home + trigger: + - platform: webhook + webhook_id: family_is_home + condition: [] + action: + - service: script.family_is_home +- id: '1550108034209' + alias: Family Is Away + trigger: + - platform: webhook + webhook_id: '' + condition: [] + action: + - service: script.family_is_away +- id: family_has_arrived + alias: Family Has arrived + trigger: + - entity_id: sensor.family_status + from: Away + platform: state + to: Home + - entity_id: device_tracker.jeffreystonesiphone + event: enter + platform: zone + zone: zone.home + - entity_id: device_tracker.katherinestonesiphone + event: enter + platform: zone + zone: zone.home + - entity_id: binary_sensor.jeffrey_presence + from: 'Off' + platform: state + to: 'On' + - entity_id: binary_sensor.kat_presence + from: 'Off' + platform: state + to: 'On' + - entity_id: device_tracker.hass_jeffsiphone + event: enter + platform: zone + zone: zone.home + condition: + - condition: state + entity_id: sensor.family_status + state: Away + action: + - service: script.driveway_on + - service: script.vacation_canceled + - service: script.appliances_on + - service: script.standby + initial_state: true +- id: family_has_left + alias: Family Has Left + initial_state: true + trigger: + - entity_id: sensor.family_status + from: Home + platform: state + to: Away + condition: + - condition: state + entity_id: input_boolean.guest_mode + state: 'off' + action: + - service: script.appliances_off + - service: script.security_check_garage + - service: script.security_check_zones + - service: script.lockdown +- id: jeff_is_home + alias: Jeff is Home + trigger: + - entity_id: device_tracker.jeffreystonesiphone + event: enter + platform: zone + zone: zone.home + - entity_id: binary_sensor.jeffrey_presence + from: 'Off' + platform: state + to: 'On' + - entity_id: device_tracker.hass_jeffsiphone + event: enter + platform: zone + zone: zone.home + action: + - service: script.family_is_home + - service: script.jeff_is_home + - service: script.jeff_destination_na + - service: script.driveway_on + - entity_id: input_boolean.jeff_travel_monitor + service: input_boolean.turn_off + initial_state: true +- id: jeff_arrives_summit + alias: Jeff Arrives At Summit + trigger: + - entity_id: device_tracker.jeffreystonesiphone + event: enter + platform: zone + zone: zone.summit + - entity_id: device_tracker.hass_jeffsiphone + event: enter + platform: zone + zone: zone.summit + action: + - service: script.jeff_destination_na + initial_state: true +- id: jeff_leaves_summit + alias: Jeff Leaves Summit + initial_state: true + trigger: + - entity_id: device_tracker.jeffreystonesiphone + event: leave + platform: zone + zone: zone.summit + action: + - service: input_boolean.turn_off + entity_id: input_boolean.jeff_traffic_alert_home +- id: kat_is_home + alias: Kat is Home + initial_state: true + trigger: + - entity_id: device_tracker.katherinestonesiphone + event: enter + platform: zone + zone: zone.home + - entity_id: binary_sensor.kat_presence + from: 'Off' + platform: state + to: 'On' + action: + - service: script.family_is_home + - service: input_boolean.turn_off + entity_id: input_boolean.kat_travel_monitor + - service: script.driveway_on +- id: kat_arrives_zoo + alias: Kat Arrives at Zoo + initial_state: true + trigger: + - platform: zone + event: enter + zone: zone.zoo_atlanta + entity_id: device_tracker.katherinestonesiphone + condition: + - condition: state + entity_id: input_boolean.text_notify_jeff + state: 'on' + action: + - service: notify.jeff_ios + data: + message: Kat arrived at Zoo Atlanta + - service: tts.google_say + data: + entity_id: media_player.hass_speaker + message: Kat has arrived at the Zoo +- id: kat_leaves_zoo + alias: Kat Leaves Zoo Notification + initial_state: true + trigger: + - platform: zone + event: leave + zone: zone.zoo_atlanta + entity_id: device_tracker.katherinestonesiphone + condition: + - condition: state + entity_id: input_boolean.text_notify_jeff + state: 'on' + action: + - service: input_boolean.turn_on + entity_id: input_boolean.kat_travel_monitor +- id: '1550109528753' + alias: Jeff Is Heading Home + trigger: + - platform: webhook + webhook_id: jeff_heading_home + condition: [] + action: + - service: script.jeff_destination_home + diff --git a/automations/daily.yaml b/automations/daily.yaml deleted file mode 100755 index eb05ddb..0000000 --- a/automations/daily.yaml +++ /dev/null @@ -1,81 +0,0 @@ - -# -# -# Daily Triggers -# -# -##################### -- alias: Good Morning - trigger: - - platform: time - hours: 5 - minutes: 15 - seconds: 0 - action: - - service: scene.turn_on - entity_id: scene.livingroom_dim - - service: scene.turn_on - entity_id: scene.dim_kitchen - -- alias: Good Morning - trigger: - - platform: time - hours: 7 - minutes: 0 - seconds: 0 - action: - - service: scene.turn_on - entity_id: scene.livingroom_normal - - service: scene.turn_on - entity_id: scene.normal_kitchen - -- alias: Good Night - trigger: - - platform: time - hours: 22 - minutes: 30 - seconds: 0 - action: - - service: scene.turn_on - entity_id: scene.livingroom_night - - service: light.turn_off - data: - entity_id: light.loft_lamp - - service: script.turn_on - entity_id: script.driveway_off - -- alias: Outside Lights on at Sunset - trigger: - - platform: sun - event: sunset - offset: -00:30:00 - action: - - service: switch.turn_on - data: - entity_id: switch.front_porch - - service: script.sunset_garage_open - -- alias: Outside Lights off at Sunrise - trigger: - - platform: sun - event: sunrise - action: - - service: switch.turn_off - data: - entity_id: switch.front_porch - -- alias: Inside on at Sunset - trigger: - - platform: sun - event: sunset - offset: -01:00:00 - action: - service: script.inside_all_on - -- alias: Inside off at Sunrise - trigger: - - platform: sun - event: sunrise - offset: 00:30:00 - action: - - service: script.inside_all_off diff --git a/automations/door.yaml b/automations/door.yaml deleted file mode 100755 index 250c2d6..0000000 --- a/automations/door.yaml +++ /dev/null @@ -1,20 +0,0 @@ - -# -# -# DoorAutomations -# -# -##################### - -# - alias: Door Opened -# trigger: -# - platform: state -# entity_id: group.doors -# from: 'off' -# to: 'on' -# condition: -# - condition: state -# entity_id: input_boolean.audible_notifications -# state: 'on' -# action: -# - service: shell_command.door_chime diff --git a/automations/events.yaml b/automations/events.yaml deleted file mode 100755 index b38577d..0000000 --- a/automations/events.yaml +++ /dev/null @@ -1,99 +0,0 @@ -# -# -# Events -# -############ - -#- alias: Trash Morning Notification -# trigger: -# - platform: time -# hours: 6 -# minutes: 0 -# seconds: 0 -# condition: -# - condition: time -# weekday: -# - tue -# - condition: state -# entity_id: input_boolean.vacation_mode -# state: 'off' -# - condition: state -# entity_id: input_boolean.trash_notification -# state: 'on' -# action: -# - service: notify.all_ios -# data: -# message: Don't forget to it is Trash Day - -#- alias: Washer Running -# trigger: -# - platform: numeric_state -# entity_id: sensor.washer_power -# above: 100 -# action: -# - service: input_boolean.turn_on -# entity_id: input_boolean.washer_running - -#- alias: Washer Complete -# trigger: -# - platform: state -# entity_id: sensor.washer_status -# from: 'running' -# to: 'idle' -# condition: -# - condition: state -# entity_id: input_boolean.washer_running -# state: 'on' -# action: -# - service: input_boolean.turn_off -# entity_id: input_boolean.washer_running -# - service: input_boolean.turn_on -# entity_id: input_boolean.washer_notification - -#- alias: Washer Emptied -# trigger: -# - platform: state -# entity_id: binary_sensor.washer_door -# from: 'off' -# to: 'on' -# action: -# - service: homeassistant.turn_off -# entity_id: script.washer_finished_notification -# - service: input_boolean.turn_off -# entity_id: input_boolean.washer_notification - -#- alias: Washer Notification -# trigger: -# - platform: state -# entity_id: input_boolean.washer_notification -# to: 'on' -# condition: -# - condition: state -# entity_id: sensor.family_status -# state: home -# action: -# - service: homeassistant.turn_on -# entity_id: script.washer_finished_notification - -#- alias: Get Dressed Skylar -# trigger: -# - platform: time -# hours: 7 -# minutes: 58 -# seconds: 0 -# condition: -# - condition: time -# weekday: -# - mon -# - tue -# - wed -# - thu -# - condition: state -# entity_id: input_boolean.guest_mode -# state: 'off' -# - condition: state -# entity_id: input_boolean.skylar_dressed_alarm -# state: 'on' -# action: -# - service: script.skylar_dressed_alarm - diff --git a/automations/garage.yaml b/automations/garage.yaml deleted file mode 100755 index a4922fe..0000000 --- a/automations/garage.yaml +++ /dev/null @@ -1,72 +0,0 @@ -# -# -# Garage -# -############ - - -- alias: Close Garage at lights out - trigger: - - platform: time - hours: 22 - minutes: 30 - seconds: 0 - condition: - - condition: state - entity_id: binary_sensor.garage_door - state: 'on' - action: - - service: script.close_garage - -- alias: Garage Open At Sunset - trigger: - - platform: sun - event: sunset - condition: - - condition: state - entity_id: binary_sensor.garage_door - state: 'on' - action: - - service: script.driveway_on - -- alias: Garage Opening Driveway Lights On - trigger: - - platform: state - entity_id: binary_sensor.garage_door - from: 'off' - to: 'on' - condition: - - condition: state - entity_id: sun.sun - state: 'below_horizon' - action: - - service: script.driveway_on - -- alias: Garage Closing Driveway Lights Off - trigger: - - platform: state - entity_id: binary_sensor.garage_door - from: 'on' - to: 'off' - - platform: state - entity_id: binary_sensor.side_door - from: 'on' - to: 'off' - action: - - service: script.turn_on - entity_id: script.driveway_off - -# - alias: Garage Motion after Sunset -# trigger: -# - platform: state -# entity_id: binary_sensor.garage_motion -# from: 'off' -# to: 'on' -# condition: -# - condition: state -# entity_id: sun.sun -# state: 'below_horizon' -# action: -# - service: notify.jeff_ios -# data: -# message: 'Motion: Garage' diff --git a/automations/presence.yaml b/automations/presence.yaml deleted file mode 100755 index 545d17b..0000000 --- a/automations/presence.yaml +++ /dev/null @@ -1,110 +0,0 @@ - -# -# -# Presence Automations -# -# -##################### - -- alias: Family Has arrived - trigger: - - entity_id: sensor.family_presence - from: Away - platform: state - to: Home - action: - - service: script.standby - - service: script.driveway_on - - service: script.vacation_canceled - - service: script.appliances_on - - service: script.family_is_home - -- alias: Family Has Left - trigger: - - entity_id: sensor.family_presence - from: Home - platform: state - to: Away - condition: - - condition: state - entity_id: input_boolean.guest_mode - state: 'off' - action: - - service: script.lockdown - - service: script.appliances_off - - service: script.family_is_away - -- alias: Jeff Arrives Home - trigger: - - entity_id: sensor.jeff_presence - from: 'not present' - platform: state - to: 'present' - action: - - service: script.jeff_destination_na - - service: script.driveway_on - - service: input_boolean.turn_off - entity_id: input_boolean.jeff_heading_home - -- alias: Jeff Arrives At Summit - trigger: - - entity_id: device_tracker.jeffreystonesiphone - event: enter - platform: zone - zone: zone.summit - action: - - service: script.jeff_destination_na - #- service: script.jeff_at_work_notification - -- alias: Jeff Leaves Summit - trigger: - - entity_id: device_tracker.jeffreystonesiphone - event: leave - platform: zone - zone: zone.summit - action: - - service: input_boolean.turn_off - entity_id: input_boolean.jeff_traffic_alert_home - -- alias: Kat Arrives Home - trigger: - - entity_id: sensor.kat_presence - from: 'not present' - platform: state - to: 'present' - action: - - service: input_boolean.turn_off - entity_id: input_boolean.kat_heading_home - - service: script.driveway_on - -- alias: Kat Arrives at Zoo - trigger: - - platform: zone - event: enter - zone: zone.zoo_atlanta - entity_id: device_tracker.katherinestonesiphone - condition: - - condition: state - entity_id: input_boolean.text_notify_jeff - state: 'on' - action: - - service: notify.ios_jeffreystonesiphone - data: - message: Kat is at Zoo Atlanta - -- alias: Kat Leaves Zoo Notification - trigger: - - platform: zone - event: leave - zone: zone.zoo_atlanta - entity_id: device_tracker.katherinestonesiphone - condition: - - condition: state - entity_id: input_boolean.text_notify_jeff - state: 'on' - action: - - service: input_boolean.turn_on - entity_id: input_boolean.kat_heading_home - - - diff --git a/automations/security.yaml b/automations/security.yaml deleted file mode 100755 index b1600b8..0000000 --- a/automations/security.yaml +++ /dev/null @@ -1,284 +0,0 @@ - -# -# -# Security -# -# For all these automations the condition should be -# -# - condition: state -# entity_id: input_boolean.secure_mode -# state: 'on' -# -# -##################### - -- alias: Nightly Lockdown - trigger: - - platform: time - hours: 23 - minutes: 00 - seconds: 0 - condition: - - condition: state - entity_id: sensor.jeff_presence - state: 'present' - - condition: state - entity_id: sensor.kat_presence - state: 'present' - - condition: state - entity_id: input_boolean.guest_mode - state: 'off' - action: - - service: script.lockdown - -- alias: Morning Standby - trigger: - - platform: time - hours: 5 - minutes: 30 - seconds: 0 - condition: - condition: or - conditions: - - condition: state - entity_id: sensor.family_presence - state: 'Home' - - condition: state - entity_id: input_boolean.guest_mode - state: 'on' - action: - - service: script.standby - -- alias: Activate Security - trigger: - - platform: state - entity_id: input_boolean.secure_mode - from: 'off' - to: 'on' - action: - - service: input_boolean.turn_on - entity_id: input_boolean.security_check - -- alias: Deactivate Security - trigger: - - platform: state - entity_id: input_boolean.secure_mode - from: 'on' - to: 'off' - action: - - service: script.standby - -- alias: Security Precheck - trigger: - - platform: state - entity_id: input_boolean.security_check - from: 'off' - to: 'on' - action: - - service: script.security_check_zones - - service: script.security_check_garage - - service: script.security_check_verified - - service: script.lockdown_aborted - -- alias: Security Breach - trigger: - - platform: state - entity_id: group.all_doors - to: 'On' - - platform: state - entity_id: binary_sensor.garage_dome_sensor - to: 'On' - condition: - - condition: state - entity_id: input_boolean.secure_mode - state: 'on' - action: - - service: input_boolean.turn_on - entity_id: input_boolean.security_breach_warning - -- alias: Security Alarm Countdown - trigger: - - platform: state - entity_id: input_boolean.security_breach_warning - from: 'off' - to: 'on' - action: - - service: script.turn_on - entity_id: script.security_issue - -- alias: Security Issue Canceled - trigger: - - platform: state - entity_id: input_boolean.security_breach_warning - from: 'on' - to: 'off' - action: - - service: script.turn_off - entity_id: script.security_issue - -- alias: Security Alarm Canceled - trigger: - - platform: state - entity_id: input_boolean.security_alarm - from: 'on' - to: 'off' - action: - - service: script.turn_off - entity_id: script.security_issue - - service: script.security_alarm_off - - service: script.turn_off - entity_id: script.security_alarm_delay - -# - alias: Security Breach Garage Door -# trigger: -# - platform: state -# entity_id: sensor.garage_door_contact -# to: open -# condition: -# - condition: state -# entity_id: input_boolean.secure_mode -# state: 'on' -# action: -# - service: script.security_warning_garage_door - -# - alias: Security Breach Garage Motion -# trigger: -# - platform: state -# entity_id: sensor.garage_motion -# to: motion -# condition: -# - condition: state -# entity_id: input_boolean.secure_mode -# state: 'on' -# action: -# - service: script.security_warning_garage_motion - -# - alias: Security Breach Front Door -# trigger: -# - platform: state -# entity_id: sensor.front_door -# to: open -# condition: -# - condition: state -# entity_id: input_boolean.secure_mode -# state: 'on' -# action: -# - service: script.security_warning_front_door - -# - alias: Security Breach Back Door -# trigger: -# - platform: state -# entity_id: sensor.zone_3 -# to: open -# condition: -# - condition: state -# entity_id: input_boolean.secure_mode -# state: 'on' -# action: -# - service: script.security_warning_back_door - - -# - alias: Security Breach Landry Door -# trigger: -# - platform: state -# entity_id: sensor.Laundry_room_door -# to: open -# condition: -# - condition: state -# entity_id: input_boolean.secure_mode -# state: 'on' -# action: -# - service: script.security_warning_laundry_door - -- alias: Security Access Granted - trigger: - - platform: state - entity_id: sensor.jeff_presence - to: 'present' - - platform: state - entity_id: sensor.kat_presence - to: 'present' - - platform: state - entity_id: sensor.family_presence - to: 'Home' - condition: - - condition: state - entity_id: input_boolean.secure_mode - state: 'on' - action: - - service: input_boolean.turn_off - entity_id: input_boolean.security_alarm - - service: input_boolean.turn_off - entity_id: input_boolean.security_breach_warning - - service: script.turn_off - entity_id: script.security_alarm_delay - -# - alias: Security Alarm Activated Home -# trigger: -# platform: state -# entity_id: input_boolean.security_alarm -# to: 'on' -# condition: -# - condition: state -# entity_id: sensor.family_presence -# state: 'Home' -# action: -# - service: script.security_alarm_on - -- alias: Security Alarm Activated Away - trigger: - platform: state - entity_id: input_boolean.security_alarm - to: 'on' - condition: - - condition: state - entity_id: sensor.family_presence - state: 'Away' - action: - - service: script.turn_on - entity_id: script.security_alarm_delay - -# - alias: Security Issue -# trigger: -# platform: state -# entity_id: input_boolean.security_issue -# to: 'on' -# action: -# - service: homeassistant.turn_on -# entity_id: script.security_report - - -# - alias: Security Issue Resolved -# trigger: -# - platform: state -# entity_id: group.all_doors -# to: 'off' -# condition: -# - condition: state -# entity_id: cover.garage_door -# state: 'off' -# - condition: state -# entity_id: group.doors -# state: 'off' -# action: -# - service: input_boolean.turn_off -# entity_id: input_boolean.security_issue - -- alias: Late Arrival Lockdown - trigger: - - platform: state - entity_id: sensor.jeff_presence - to: 'present' - - platform: state - entity_id: sensor.kat_presence - to: 'present' - condition: - - condition: state - entity_id: input_boolean.guest_mode - state: 'off' - - condition: time - after: '23:00:00' - before: '05:00:00' - action: - - service: script.lockdown_delay - diff --git a/automations/transit.yaml b/automations/transit.yaml deleted file mode 100755 index 62da42a..0000000 --- a/automations/transit.yaml +++ /dev/null @@ -1,67 +0,0 @@ -# -# -# Transit Based Automations -# -############ - -# - alias: Jeff eta home -# trigger: -# - platform: state -# entity_id: sensor.jeff_destination -# to: Home -# condition: -# - condition: state -# entity_id: input_boolean.text_notify_kat -# state: 'on' -# action: -# - service: input_boolean.turn_on -# entity_id: input_boolean.jeff_heading_home - -##### Jeff Traffic Alerts -- alias: Enable Jeff Bad Traffic Home - trigger: - - platform: numeric_state - entity_id: sensor.jeff_ett_home - above: 59 - condition: - - condition: state - entity_id: sensor.jeff_location - state: 'Summit' - - condition: state - entity_id: input_boolean.jeff_traffic_alerts - state: 'on' - action: - - service: input_boolean.turn_on - entity_id: input_boolean.jeff_traffic_alert_home - -- alias: Disabling Jeff Bad Traffic Home - trigger: - - platform: numeric_state - entity_id: sensor.jeff_ett_home - below: 40 - condition: - - condition: state - entity_id: input_boolean.jeff_traffic_alert_home - state: 'on' - action: - - service: input_boolean.turn_off - entity_id: input_boolean.jeff_traffic_alert_home - -- alias: Enable Vacation Mode - trigger: - - platform: numeric_state - entity_id: sensor.jeff_ett_home - above: 180 - - platform: numeric_state - entity_id: sensor.kat_ett_home - above: 180 - condition: - - condition: numeric_state - entity_id: sensor.jeff_ett_home - above: 180 - - condition: numeric_state - entity_id: sensor.kat_ett_home - above: 180 - action: - - service: input_boolean.turn_on - entity_id: input_boolean.vacation_mode diff --git a/automations/weather.yaml b/automations/weather.yaml deleted file mode 100755 index e3f5762..0000000 --- a/automations/weather.yaml +++ /dev/null @@ -1,125 +0,0 @@ -# -# -# Weather -# -############ - -- alias: Cloudy porch on early - trigger: - - platform: sun - event: sunset - offset: -01:30:00 - condition: - - condition: numeric_state - entity_id: sensor.dark_sky_cloud_coverage - above: 70 - action: - - service: switch.turn_on - data: - entity_id: switch.front_porch_left - - service: switch.turn_on - data: - entity_id: switch.front_porch_right - -- alias: Kill Audible Tornado Alarm - trigger: - - platform: state - entity_id: input_boolean.tornado_alarm - to: 'off' - action: - - service: script.chromecast_media_stop - - service: homeassistant.turn_off - entity_id: script.tornado_alarm - -- alias: Sound Audible Tornado Alarm - trigger: - - platform: state - entity_id: input_boolean.tornado_alarm - to: "on" - action: - - service: homeassistant.turn_on - entity_id: script.tornado_alarm - -- alias: Tornado Warning - trigger: - - platform: state - entity_id: sensor.tornado_warning - to: "active" - action: - - service: input_boolean.turn_on - entity_id: input_boolean.tornado_alarm - - service: script.wxalert_tile - - service: notify.ios_all - data: - message: Tornado Warning Issued for Anchorage House!!!! - -- alias: Tornado Watch Issued - trigger: - - platform: state - entity_id: sensor.tornado_watch - to: "active" - action: - - service: script.wxalert_tile - - service: notify.ios_all - data: - message: Tornado Watch Issued - - service: script.annc_tornado_watch - -- alias: TStorm Warning Issued - trigger: - - platform: state - entity_id: sensor.tstorm_warning - to: "active" - action: - - service: script.wxalert_tile - - service: notify.ios_all - data: - message: Severe Thunderstorm Warning Issued - - service: script.annc_tstorm_warning - -- alias: Severe Statement Issued - trigger: - - platform: state - entity_id: sensor.storm_statement - to: "active" - action: - - service: script.wxalert_tile - - service: notify.ios_all - data: - message: Severe Weather Statement Issued - - service: script.annc_storm_statement - -- alias: TStorm Watch Issued - trigger: - - platform: state - entity_id: sensor.tstorm_watch - to: "active" - action: - - service: script.wxalert_tile - - service: notify.ios_all - data: - message: Severe Thunderstorm Watch Issued - - service: script.annc_tstorm_watch - -#- alias: Wx Alert Notification -# trigger: -# - platform: state -# entity_id: sensor.pws_alerts -# action: -# - service: script.wxalert_tile - -- alias: "Weather Watch Tornado" - trigger: - - platform: state - entity_id: sensor.pws_alerts - condition: - condition: or - conditions: - - condition: template - value_template: '{{ states.sensor.pws_alerts.attributes.Description == "Tornado Watch" }}' - - condition: template - value_template: '{{ states.sensor.pws_alerts.attributes.Description_TOW == "Tornado Watch" }}' - action: - - service: input_boolean.turn_on - entity_id: input_boolean.tornado_watch - - service: script.wxalert_tile diff --git a/binary_sensors/calendar.yaml b/binary_sensors/calendar.yaml new file mode 100644 index 0000000..700fe0f --- /dev/null +++ b/binary_sensors/calendar.yaml @@ -0,0 +1,4 @@ +- platform: workday + country: US + province: GA + workdays: [mon, tue, wed, thu, fri] diff --git a/binary_sensors/doors.yaml b/binary_sensors/doors.yaml old mode 100755 new mode 100644 index 7cc2188..d49f9d9 --- a/binary_sensors/doors.yaml +++ b/binary_sensors/doors.yaml @@ -3,40 +3,28 @@ state_topic: "smartthings/Back Door/contact" payload_on: "open" payload_off: "closed" - retain: true device_class: door -- platform: mqtt - name: "Garage Door" - state_topic: "smartthings/Garage Door/contact" - payload_on: "open" - payload_off: "closed" - retain: true - device_class: garage_door - platform: mqtt name: "Front Door" state_topic: "smartthings/Front Door/contact" payload_on: "open" payload_off: "closed" - retain: true device_class: door - platform: mqtt name: "Laundry Room Door" state_topic: "smartthings/Laundry Room Door/contact" payload_on: "open" payload_off: "closed" - retain: true device_class: door - platform: mqtt name: "Attic Door" # Dome Door Sensor state_topic: "smartthings/Attic Door/contact" payload_on: "open" payload_off: "closed" - retain: true device_class: door - platform: mqtt name: "Side Door" # Dome Door Sensor - state_topic: "smartthings/Washer Door/contact" + state_topic: "smartthings/Side Door/contact" payload_on: "open" payload_off: "closed" - retain: true device_class: door diff --git a/binary_sensors/motion.yaml b/binary_sensors/motion.yaml old mode 100755 new mode 100644 index e610b52..6f0dbad --- a/binary_sensors/motion.yaml +++ b/binary_sensors/motion.yaml @@ -1,7 +1,6 @@ - platform: mqtt name: "Garage Dome Sensor" # Dome Motion Sensor - state_topic: "smartthings/Garage Motion/contact" + state_topic: "smartthings/Garage Motion/motion" payload_on: "active" payload_off: "inactive" - retain: true device_class: motion diff --git a/configuration.yaml b/configuration.yaml old mode 100755 new mode 100644 index 9993450..cfe2328 --- a/configuration.yaml +++ b/configuration.yaml @@ -6,23 +6,35 @@ homeassistant: unit_system: imperial time_zone: America/New_York customize: !include customize.yaml + auth_providers: + - type: homeassistant + packages: !include_dir_named packages + +system_health: + +default_config: + +person: frontend: - themes: - blue: - primary-color: "#356AA0" + themes: !include_dir_merge_named themes + javascript_version: latest http: api_password: !secret MY_API_PASS #ssl_certificate: !secret SSL_CERT #ssl_key: !secret SSL_KEY #base_url: !secret BASEURL - cors_allowed_origins: - - https://google.com - - https://home-assistant.io + ssl_certificate: !secret ahsl_ssl_cert + ssl_key: !secret ahsl_ssl_key + base_url: !secret ahsl_base_url use_x_forwarded_for: True + trusted_proxies: + - 127.0.0.1 + - ::1 trusted_networks: - 127.0.0.1 + # - 192.168.7.0/24 ip_ban_enabled: True login_attempts_threshold: 5 @@ -31,13 +43,6 @@ config: cloud: alexa: filter: - include_entities: - - sensor.accurite_back_porch_temperature - - sensor.accurite_garage_temperature - - sensor.kat_location - - sensor.jeff_location - - sensor.jeff_ett_home - - sensor.kat_ett_home include_domains: - switch - light @@ -45,6 +50,8 @@ cloud: - scene - script - input_boolean + - climate + - sensor exclude_domains: - group - alert @@ -67,10 +74,30 @@ cloud: description: Jeffs arrival in minutes sensor.kat_ett_home: name: Kats Arrival - description: Katss arrival in minutes + description: Kats arrival in minutes + sensor.accurite_garage_humidity: + name: Garage Humidity + description: Garage Humidity alexa: +# homekit: +# filter: +# include_domains: +# - switch +# - light +# - cover +# - scene +# - input_boolean +# - climate +# - sensor +# - binary_sensor + +weather: + - platform: darksky + api_key: !secret darksky_api + name: Grayson + conversation: device_tracker: @@ -78,144 +105,199 @@ device_tracker: username: !secret ICLOUD_USER password: !secret ICLOUD_PASS track_new_devices: yes - - platform: eero_tracker - consider_home: 300 - interval_seconds: 60 # Recommended...do not set this lower than 25, we don't want to DDOS Eero - + - platform: owntracks + track_new_devices: yes + - platform: life360 + username: !secret life360_username + password: !secret life360_password + max_gps_accuracy: 200 + prefix: life360 + show_as_state: driving, moving, places + +#calendar: +# - platform: caldav +# url: !secret icloud_cal +# username: !secret icloud_cal_user +# password: !secret icloud_cal_pass +# calendars: +# - 'JKS Calendar' + +google: + client_id: !secret google_client_id + client_secret: !secret google_client_secret + + + +# geo_location: +# - platform: usgs_earthquakes_feed +# feed_type: 'past_day_all_earthquakes' + discovery: updater: + #include_used_components: true sun: +#https://home-assistant.io/components/recorder/ recorder: - purge_keep_days: 5 + purge_keep_days: 2 exclude: domains: - automation - weblink - updater entities: - - sun.sun - - sensor.last_boot + - sun.sun # Don't record sun data + - sensor.last_boot # Comes from 'systemmonitor' sensor platform - sensor.date +# purge_interval: 1 +# purge_keep_days: 3 +logbook: + exclude: + entities: + - sensor.last_boot + - sensor.date + - sensor.ha_log + - sensor.ha_uptime + - sensor.cpu + - sensor.date_time + - sensor.ha_v2db + - sensor.internet_time + - sensor.last_boot_2 + - sensor.load_15m + - sensor.memory_use_percent + - sensor.network_in_eth0 + - sensor.network_out_eth0 + - sensor.processor_use + - sensor.time + - sensor.time_date + - sensor.time_utc + + +#https://home-assistant.io/components/logger/ logger: - default: warn + default: info +# +# logs: +# homeassistant.components.sensor.template: critical +# homeassistant.components.cover: critical history: cast: - -media_player: - - platform: apple_tv - host: 192.168.7.58 - login_id: !secret apple_tv_login - credentials: !secret apple_cred - - platform: roku - host: 192.168.7.52 - name: roku living room - - platform: yamaha - host: 192.168.7.56 - source_ignore: - - "AUX" - - "V-AUX" - - "AV1" - - "AV2" - - "AV3" - - "AV4" - - "AV5" - - "AV6" - - "SiriusXM" - - "Pandora" - - "Rhapsody" - - "TURNER" - - "AUDIO1" - - "AUDIO2" - - "SERVER" - source_names: - HDMI1: "BluRay" - HDMI2: "Chromecast" - HDMI3: "Xbox" - HDMI4: "Roku" - HDMI5: "AppleTv" - zone_ignore: - - "Zone_2" - zone_names: - Main_Zone: "Theater" - -tts: - - platform: google - cache: true - cache_dir: /tmp/tts - time_memory: 300 - -notify: - - platform: ios - - name: all_ios - platform: group - services: - - service: ios_jeffreystonesiphone - - service: ios_jeffreystonesipad - - service: ios_katherinestonesiphone - - name: jeff_ios - platform: group - services: - - service: ios_jeffreystonesiphone - - service: ios_jeffreystonesipad +speedtestdotnet: mqtt: - broker: !secret MQTT_HOST + broker: 192.168.7.67 port: 1883 username: !secret MQTT_USER password: !secret MQTT_PASS +camera: + - platform: mjpeg + name: Garage Door Cam + mjpeg_url: !secret garage_cam + +media_player: + - platform: vlc + name: hass_speaker + arguments: '--alsa-audio-device=hw:0,0' + +ffmpeg: + ffmpeg_bin: /usr/bin/ffmpeg + +splunk: + host: 192.168.7.40 + token: !secret splunkit + port: 8088 + +cloudflare: + email: !secret cloudflare_user + api_key: !secret cloudflare_api + zone: !secret cloudflare_zone + records: + - ah + + ### Includes ### alert: !include_dir_merge_named alerts/ group: !include groups.yaml -automation: !include_dir_merge_list automations/ +automation: !include automations.yaml sensor: !include_dir_merge_list sensors binary_sensor: !include_dir_merge_list binary_sensors light: !include_dir_merge_list lights switch: !include_dir_merge_list switches -script: !include_dir_merge_named scripts/ +script: !include scripts.yaml intent_script: !include intents/intents.yaml scene: !include scenes.yaml input_select: !include input_select.yaml input_boolean: !include input_boolean.yaml zone: !include zones.yaml +python_script: + +#duckdns: +# domain: !secret duckdns_domain +# access_token: !secret duckdns_token + ### Devices and Services -cover: - - platform: mqtt - name: "Garage Door" - state_topic: 'smartthings/Garage Door/contact' - command_topic: 'smartthings/Garage Door/door' - state_open: 'open' - state_closed: 'closed' - payload_open: 'open' - payload_close: 'closed' - retain: true - optimistic: true +# Disabled due to bug that causes too many open files - Need to track it down +# cover: +# - platform: myq +# username: !secret myq_user +# password: !secret myq_pass +# type: chamberlain climate: platform: honeywell username: !secret HONEYWELL_USER password: !secret HONEYWELL_PASS - name: First Floor region: us scan_interval: 600 map: - -### Custom Commands +# zwave: +# usb_path: /dev/ttyACM0 +# network_key: !secret zwave_key + + +### Custom Commands shell_command: alarm_off: pkill mpg123 tornado_alarm: mpg123 /media/audio/Tornado_Siren.mp3 door_chime: mpg123 /media/audio/Store_Door_Chime.mp3 security_alarm: mpg123 /media/audio/security_siren.mp3 security_alarm_intro: mpg123 /media/audio/Siren_Noise.mp3 + welcome_haunted: mpg123 /media/audio/Welcome-Hunted.mp3 + haunted_guest_welcome: mpg123 /media/audio/haunted_guest_welcome.mp3 + haunted_mansion_preshow_full: mpg123 /media/audio/haunted_mansion_preshow_full.mp3 + haunted_mansion_preshow_short: mpg123 /media/audio/haunted_mansion_preshow_short.mp3 + haunted_mansion_hurry_back_short: mpg123 /media/audio/haunted_mansion_hurry_back_short.mp3 + haunted_mansion_hurry_back_full: mpg123 /media/audio/haunted_mansion_hurry_back_full.mp3 + happily_ever_after: mpg123 /media/audio/Happily_Ever_After_Audio.mp3 + boo_to_you: mpg123 /media/audio/boo_to_you_audio.mp3 + haunted_mansion_ride: mpg123 /media/audio/haunted_mansion_ride.mp3 + wishes_preshow: mpg123 /media/audio/wishes_5_min.mp3 + welcome_show: mpg123 /media/audio/welcome_show.mp3 + monorail_waiting: mpg123 /media/audio/monorail_waiting.mp3 + monorail_mk: mpg123 /media/audio/monorail.mp3 + monorail_resort: mpg123 /media/audio/monorail_resort.mp3 + welcome_to_mk: mpg123 /media/audio/welcome_magic_kingdom.mp3 + welcome_show_crowd: mpg123 /media/audio/welcome_show_crowd.mp3 + spaceship_earth_ride: mpg123 /media/audio/spaceship_earth_ride.mp3 + dance_it: mpg123 /media/audio/move_it_shake_dance_audio.mp3 + hass_vol_up: sudo amixer set PCM -- $[$(amixer get PCM|grep -o [0-9]*%|sed 's/%//')+5]% + hass_vol_dn: sudo amixer set PCM -- $[$(amixer get PCM|grep -o [0-9]*%|sed 's/%//')-5]% + reset_alexa_cookie: /home/homeassistant/bin/resetalexacookie + tiki_room_audio: mpg123 /media/audio/tiki_room_audio.mp3 + illuminations_audio: mpg123 /media/audio/illuminations.mp3 + mk_audio: mpg123 /media/audio/magic_kingdom.mp3 + usps: python3 /home/homeassistant/bin/usps.py + backup: python /home/homeassistant/bin/dropbox.py + diff --git a/customize.yaml b/customize.yaml old mode 100755 new mode 100644 index 5515f2a..f920ac7 --- a/customize.yaml +++ b/customize.yaml @@ -81,9 +81,6 @@ sensor.dark_sky_daily_high_temperature: sensor.dark_sky_daily_max_precip_intensity: friendly_name: Rain Intensity icon: gauge -sensor.pws_alerts: - friendly_name: "Weather Alerts" - icon: mdi:alert # Jeff # @@ -170,7 +167,16 @@ media_player.roku_5s6719003683: device_tracker.00a0dea3ed2f: friendly_name: Yamaha AV icon: mdi:surround-sound - +media_player.pn60e550_pn60e550: + name: Samsung TV + icon: mdi:television +media_player.hass_speaker: + name: AH Speaker + icon: mdi:speaker +media_player.yamaha_receiver_theater: + icon: mdi:audio-video +switch.main_theater: + icon: mdi:audio-video # Switches and Lights ## switch.fireplace_lights: @@ -185,7 +191,7 @@ switch.front_porch: icon: mdi:lightbulb switch.front_lamp: icon: mdi:lightbulb -switch.loft_lamp: +switch.upstairs_light: icon: mdi:lightbulb cover.garage_door: device_class: garage @@ -230,7 +236,14 @@ switch.trash_notification: icon: mdi:telegram switch.master_bedroom_fan: icon: mdi:fan - +switch.incense: + icon: mdi:flower +switch.christmas_tree_lights: + icon: mdi:lightbulb +switch.christmas_lights: + icon: mdi:lightbulb +switch.rainbow_light: + icon: mdi:lightbulb # Travel Times ## sensor.home_to_summit: @@ -297,5 +310,9 @@ sensor.washer_power: unit_of_measurement: 'w' sensor.washer: icon: mdi:power-plug - - +binary_sensor.dome_doorwindow_sensor_sensor: + device_class: Door +sensor.security_protocol: + icon: mdi:security +sensor.notification_mode: + icon: mdi:bell diff --git a/groups.yaml b/groups.yaml old mode 100755 new mode 100644 index 4770012..449b46e --- a/groups.yaml +++ b/groups.yaml @@ -4,221 +4,24 @@ default_view: view: yes icon: mdi:home entities: - - persistent_notification.wxalert - - group.house - - group.house_conditions - - group.garage - - group.appliancest -security: - name: Security - view: yes - icon: mdi:security - entities: - - group.security_system - - group.security_alerts - - group.security_alarms - - group.all_doors - - group.motion_sensors - - group.fire -lights: - name: Lights - view: yes - icon: mdi:lightbulb - entities: - - group.living_room - - group.master_bedroom - - group.loft - - group.driveway - - group.front_porch - - group.kitchen - - group.scenes -people: - name: People - view: yes - icon: mdi:human-male-female - entities: - - group.jeffrey - - group.katherine - - group.travel_times - -media: - name: media - view: yes - icon: mdi:theater - entities: - - group.theater - - media_player.yamaha_receiver_theater - - media_player.apple_tv - - media_player.living_room_tv - - media_player.roku_5s6719003683 - - media_player.guest_tv - -weather: - name: weather - view: yes - icon: mdi:tree - entities: - - group.weather_summary - - group.weather_alerts - - group.sun_and_moon - - group.weather_forecast - - group.precipitation - - group.wind - -homeassistant: - name: HA - view: yes - icon: mdi:home-automation - entities: - - group.ha_system_monitor - - group.ha_version_info - - group.file_size - - group.internet - - group.devices - - group.home_automation - -chores: - name: Chores - view: yes - icon: mdi:calendar - entities: - - group.trash_schedule - -settings: - name: Settings - view: yes - icon: mdi:settings - entities: - - group.house_notifications - - group.presence_notifications - - group.event_notifications - - group.skylar_alarms ################################################################################# ### Grops ### -Security Status: - - sensor.garage_door - - binary_sensor.back_door - - binary_sensor.front_door - - binary_sensor.laundry_room_door - - binary_sensor.attic_door - - binary_sensor.garage_dome_sensor - - binary_sensor.garage_door - - sensor.smoke_kitchen - - sensor.attic_door - -Security Alerts: - control: hidden - entities: - - input_boolean.security_check - - input_boolean.lockdown_issue - - input_boolean.security_issue - - input_boolean.security_breach_warning - - input_boolean.garage_issue - -Security Alarms: - control: hidden - entities: - - input_boolean.security_alarm - - input_boolean.tornado_alarm - -Security System: - control: hidden - entities: - - sensor.security_status - - input_boolean.secure_mode - - input_boolean.vacation_mode House: control: hidden entities: - - sensor.family_presence - - sensor.security_status - - input_boolean.audible_notifications + - sensor.notification_mode - input_boolean.guest_mode - -Motion Sensors: - - binary_sensor.garage_dome_sensor - -All Doors: - control: hidden - name: Doors - entities: - - binary_sensor.back_door - - binary_sensor.front_door - - binary_sensor.laundry_room_door - - binary_sensor.attic_door - - binary_sensor.garage_door + - input_boolean.vacation_mode Family: - - sensor.jeff_presence - - sensor.kat_presence - -Jeffrey: - control: hidden - entities: - - sensor.jeff_location - - sensor.jeff_destination - - sensor.jeff_iphone_batt - - device_tracker.jeffreysapple_watch - - device_tracker.jstonemac - - device_tracker.jeffreystonesipad - - sensor.jeff_ett_home - - input_boolean.jeff_heading_home - - input_boolean.text_notify_jeff - - input_boolean.jeff_traffic_alerts - -Katherine: - control: hidden - entities: - - sensor.kat_location - - sensor.kat_destination - - sensor.kat_iphone_batt - - device_tracker.katherinesmini - - device_tracker.katherinesipad - - sensor.kat_ett_home - - input_boolean.kat_heading_home - - input_boolean.text_notify_kat - -Travel Times: - control: hidden - entities: - - sensor.home_to_summit - - sensor.home_to_zoo - -Living Room: - - switch.fireplace_lights - - light.tower_lamp - - light.front_lamp - -Loft: - - light.loft_lamp - - switch.loft_fan - -Master Bedroom: - - switch.master_bedroom_fan - -Kitchen: - - light.kitchen_cabinets - - light.kitchen_light_strip - -Scenes: - - scene.livingroom_dim - - scene.livingroom_night - - scene.livingroom_normal - - scene.movie_time - - scene.dim_kitchen - - scene.normal_kitchen - -Driveway: - - switch.driveway_light - - switch.side_door + - binary_sensor.jeffrey_presence + - binary_sensor.kat_presence -Front Porch: - - switch.front_porch House Conditions: - climate.first_floor @@ -226,115 +29,3 @@ House Conditions: - sensor.accurite_back_porch_humidity - sensor.accurite_garage_temperature - sensor.accurite_garage_humidity - -Weather Summary: - - sensor.dark_sky_summary - - sensor.dark_sky_apparent_temperature - - sensor.dark_sky_humidity - - sensor.dark_sky_dew_point - -Sun and Moon: - - sun.sun - - sun.next_rising - - sun.next_setting - - sensor.moon - -Weather Forecast: - - sensor.dark_sky_minutely_summary - - sensor.dark_sky_hourly_summary - - sensor.dark_sky_daily_summary - -Precipitation: - - sensor.dark_sky_nearest_storm_distance - - sensor.dark_sky_precip - - sensor.dark_sky_precip_probability - - sensor.pws_precip_today_in - - sensor.dark_sky_visibility - - sensor.dark_sky_pressure - -Wind: - - sensor.pws_wind_mph - - sensor.pws_wind_gust_mph - - sensor.pws_wind_dir - -Internet: - - sensor.speedtest_ping - - sensor.speedtest_download - - sensor.speedtest_upload - -Home Automation: - - sensor.smartthings - - sensor.amazon_dot_lr - - sensor.amazon_dot_kn - - sensor.honeywell - - sensor.eero_loft - - sensor.eero_livingroom - -#Cameras: -# - device_tracker.ipcam_00626e46eb09_1 - -Theater: - - sensor.samsungtv - - sensor.xboxone - - device_tracker.00a0dea3ed2 - -Garage: - - cover.garage_door - - binary_sensor.garage_dome_sensor - -Fire: - - sensor.smoke_kitchen - -HA System Monitor: - - sensor.cpu - - sensor.disk_use_percent_ - - sensor.memory_use_percent - - sensor.network_in_eth0 - - sensor.network_out_eth0 - - sensor.last_boot - - sensor.ha_uptime - - sensor.lets_encrypt_expiration - -HA Version Info: - - sensor.installed_version - - sensor.current_ha_version - -File Size: - control: hidden - entities: - - sensor.ha_v2db - - sensor.ha_log - -#Zwave: -# - zwave.aeotec_zw090_zstick_gen5_us - -Weather Alerts: - control: hidden - entities: - - sensor.pws_alerts - - sensor.storm_statement - - sensor.tstorm_watch - - sensor.tstorm_warning - - sensor.tornado_watch - - sensor.tornado_warning - -Trash Schedule: - - input_select.trash_pickup - - input_select.recycle_pickup - - input_boolean.trash_notification - -House Notifications: - - input_boolean.audible_notifications - - input_boolean.garage_notifications - -Skylar Alarms: - - input_boolean.skylar_dressed_alarm - -Presence Notifications: - - input_boolean.text_notify_jeff - - input_boolean.text_notify_kat - -Event Notifications: - - input_boolean.trash_notification - - input_boolean.washer_notification - diff --git a/input_boolean.yaml b/input_boolean.yaml old mode 100755 new mode 100644 index beb6192..2c6e4f4 --- a/input_boolean.yaml +++ b/input_boolean.yaml @@ -1,5 +1,5 @@ -secure_mode: - name: Secure Mode +sentry_mode: + name: Sentry Mode icon: mdi:security vacation_mode: name: Vacation Mode @@ -13,12 +13,6 @@ automations: trash_notification: name: Trash Notification icon: mdi:telegram -notifications_kat: - name: Notifications to Kat - icon: mdi:telegram -notifications_jeff: - name: Notifications to Jeff - icon: mdi:telegram welcome_greeting: name: Welcome Greeting icon: mdi:speaker-wireless @@ -55,24 +49,12 @@ presence_notifications_jeff: presence_notifications_kat: name: Send Kat Presence Texts icon: mdi:telegram -garage_issue: - name: Garage Issue - icon: mdi:alert -security_issue: - name: Security Issue - icon: mdi:comment-alert kat_heading_home: name: Kat Heading Home icon: mdi:car jeff_heading_home: name: Jeff Heading Home icon: mdi:car -washer_notification: - name: Washer Notification - icon: mdi:speaker-wireless -washer_running: - name: Washer Running - icon: mdi:speaker-wireless skylar_dressed_alarm: name: Skylar Dressed Alarm icon: mdi:speaker-wireless @@ -85,15 +67,39 @@ jeff_traffic_alert_home: tornado_watch: name: Tornado Watch icon: mdi:message-alert -security_check: - name: Security Check - icon: mdi:lock-reset garage_after_dark: name: Garage Open After Dark icon: mdi:message-alert lockdown_issue: name: Lockdown Issue icon: mdi:lock-reset -security_breach_warning: - name: Security Breach Warning - icon: mdi:clock-alert-outline \ No newline at end of file +kat_travel_monitor: + name: Kat Travel Monitor + icon: mdi:car +jeff_travel_monitor: + name: Jeff Travel Monitor + icon: mdi:car +notifications_audio: + name: Audio Notifications + icon: mdi:speaker-wireless +text_notifications: + name: Text Notifications + icon: mdi:telegram +presence_text_notifications: + name: Presence Texts + icon: mdi:telegram +presence_audio_notifications: + name: Presence Audio + icon: mdi:speaker-wireless +shuffle_spotify: + name: Shuffle Playlists + icon: mdi:shuffle-variant +security_issue: + name: Security Issue + icon: mdi:alert-circle-outline +weather_reports: + name: Weather Info +traffic_reports: + name: traffic_reports +sun_reports: + name: Sun Reports diff --git a/input_select.yaml b/input_select.yaml old mode 100755 new mode 100644 index f27f22d..95f1e6b --- a/input_select.yaml +++ b/input_select.yaml @@ -1,9 +1,3 @@ -alarm_mode: - name: alarm mode - options: - - home_armed - - away_armed - - disarmed trash_pickup: name: Trash Pickup options: @@ -23,4 +17,13 @@ recycle_pickup: - Thursday - Friday initial: Tuesday - icon: mdi:delete-variant \ No newline at end of file + icon: mdi:delete-variant +spotify_source: + name: Spotify Source + options: + - Everywhere + - Living Room + - Master Bedroom + - Kitchen + initial: Everywhere + icon: mdi:speaker-wireless diff --git a/lights/kitchen.yaml b/lights/kitchen.yaml old mode 100755 new mode 100644 diff --git a/lights/living_room.yaml b/lights/living_room.yaml old mode 100755 new mode 100644 index 6f0dcd7..0431b96 --- a/lights/living_room.yaml +++ b/lights/living_room.yaml @@ -17,4 +17,14 @@ brightness_scale: 101 payload_on: "on" payload_off: "off" + retain: true +- platform: mqtt + name: "Table Lamp" + state_topic: "smartthings/Table Lamp/switch" + command_topic: "smartthings/Table Lamp/switch" + brightness_state_topic: "smartthings/Table Lamp/level" + brightness_command_topic: "smartthings/Table Lamp/level" + brightness_scale: 101 + payload_on: "on" + payload_off: "off" retain: true \ No newline at end of file diff --git a/lights/loft.yaml b/lights/loft.yaml deleted file mode 100755 index 68fdb28..0000000 --- a/lights/loft.yaml +++ /dev/null @@ -1,10 +0,0 @@ -- platform: mqtt - name: "Loft Lamp" - state_topic: "smartthings/Loft Lamp/switch" - command_topic: "smartthings/Loft Lamp/switch" - brightness_state_topic: "smartthings/Loft Lamp/level" - brightness_command_topic: "smartthings/Loft Lamp/level" - brightness_scale: 101 - payload_on: "on" - payload_off: "off" - retain: true diff --git a/packages/announcements.yaml b/packages/announcements.yaml new file mode 100644 index 0000000..33d149f --- /dev/null +++ b/packages/announcements.yaml @@ -0,0 +1,119 @@ +############################################################################### +# @author : Jeffrey Stone +# @date : 02/19/2019 +# @package : Announcements +# @description : Just Normal Announcements. +############################################################################### + +script: + + annc_storm_statement: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: input_boolean.vacation_mode + state: 'off' + - service: notify.ios_all + data: + message: Severe Storm Statement Issued for Anchorage House + annc_tstorm_watch: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: input_boolean.vacation_mode + state: 'off' + - service: notify.ios_all + data: + message: Severe Thunderstorm Watch Issued for Anchorage House + annc_tstorm_warning: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: input_boolean.vacation_mode + state: 'off' + - service: notify.ios_all + data: + message: Severe Thunderstorm Warning Issued for Anchorage House + annc_tornado_watch: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: input_boolean.vacation_mode + state: 'off' + - service: notify.ios_all + data: + message: Tornado Watch Issued for Anchorage House + annc_security_issue: + sequence: + - condition: state + entity_id: group.family + state: 'on' + - service: tts.google_say + data: + entity_id: media_player.hass_speaker + message: Unauthorized Access + annc_tornado_warning: + sequence: + - condition: state + entity_id: sensor.family_status + state: Home + - service: script.alert_notify + data_template: + message: "Tornado Warning has been Issued" + greeting: "no" + +automation: + - id: prebed_routine + alias: Prebed Routine + trigger: + - platform: time + at: '19:00:00' + action: + - service: script.prebed_routine + - id: nightly_report + alias: Nightly Report + trigger: + - platform: time + at: '18:45:00' + action: + - service: script.nightly_report + - id: good_morning_report + alias: Good Morning Report + initial_state: true + trigger: + - platform: time + at: 07:45:00 + action: + - service: script.morning_report + - service: script.twitter_notify + data: + message: 'I just provided a morning briefing including weather, and traffic + conditions to the residents of Anchorage House. ' + - id: skylar_morning_greeting + alias: Skylar Morning Greeting + initial_state: true + trigger: + - platform: time + at: 07:58:00 + condition: + - condition: time + weekday: + - mon + - tue + - wed + - thu + - fri + - condition: state + entity_id: input_boolean.skylar_dressed_alarm + state: 'on' + action: + - service: script.skylar_morning_greeting + diff --git a/packages/disney.yaml b/packages/disney.yaml new file mode 100644 index 0000000..1305386 --- /dev/null +++ b/packages/disney.yaml @@ -0,0 +1,560 @@ +############################################################################### +# @author : Jeffrey Stone +# @date : 02/19/2019 +# @package : Disney +# @description : A little Imaginering to bring disney into our home. +############################################################################### + +input_boolean: + happy_ever_after_show: + name: Happy Ever After Show + haunted_mansion: + name: Haunted Mansion + boo_to_you_show: + name: Boo To You + holiday_wishes: + name: Holiday Wishes + spaceship_earth_ride: + name: Spaceship Earth + boo_to_you: + name: Boo To You + happy_ever_after: + name: Happy Ever After + mk_loop: + name: MK Loop + tiki_room_audio: + name: Tiki Room + illuminations: + name: Illuminations + +automation: + - id: mk_loop_on + alias: MK Loop On + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.mk_loop + to: 'on' + action: + - service: script.turn_on + entity_id: script.mk_loop + - id: tiki_room_on + alias: Tiki Room On + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.tiki_room_audio + to: 'on' + action: + - service: script.turn_on + entity_id: script.tiki_room_audio + - id: tiki_room_off + alias: Tiki Room Off + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.tiki_room_audio + to: 'off' + action: + - service: script.turn_off + entity_id: script.tiki_room_audio + - service: script.turn_on + entity_id: script.kill_this_ride + - id: illuminations_on + alias: Illuminations On + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.illuminations + to: 'on' + action: + - service: script.turn_on + entity_id: script.illuminations_audio + - id: illuminations_off + alias: Illuminations Off + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.illuminations + to: 'off' + action: + - service: script.turn_off + entity_id: script.illuminations_audio + - service: script.turn_on + entity_id: script.kill_this_ride + - id: mk_loop_off + alias: MK Loop Off + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.mk_loop + to: 'off' + action: + - service: script.turn_on + entity_id: script.kill_this_ride + - id: happy_ever_after_show_on + alias: Happy Ever After Show On + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.happy_ever_after_show + to: 'on' + action: + - service: script.turn_on + entity_id: script.happy_ever_after_show + - id: happy_ever_after_show_off + alias: Happy Ever After Show Off + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.happy_ever_after_show + to: 'off' + action: + - service: script.turn_on + entity_id: script.kill_this_ride + - id: happy_ever_after_on + alias: Happy Ever After On + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.happy_ever_after + to: 'on' + action: + - service: script.turn_on + entity_id: script.happy_ever_after + - id: happy_ever_after_on + alias: Happy Ever After Off + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.happy_ever_after + to: 'off' + action: + - service: script.turn_on + entity_id: script.kill_this_ride + - id: haunted_mansion_on + alias: Haunted Mansion On + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.haunted_mansion + to: 'on' + action: + - service: script.turn_on + entity_id: script.haunted_mansion_start + - id: haunted_mansion_off + alias: Haunted Mansion Off + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.haunted_mansion + to: 'off' + action: + - service: script.turn_on + entity_id: script.kill_this_ride + - id: spaceship_earth_on + alias: Spaceship Earth On + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.spaceship_earth_ride + to: 'on' + action: + - service: script.turn_on + entity_id: script.spaceship_earth_ride + - id: spaceship_earth_off + alias: Spaceship Earth Off + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.spaceship_earth_ride + to: 'off' + action: + - service: script.turn_on + entity_id: script.kill_this_ride + - id: boo_to_you_show_on + alias: Boo To You Show On + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.boo_to_you_show + to: 'on' + action: + - service: script.turn_on + entity_id: script.boo_to_you_show + - id: boo_to_you_show_off + alias: Boo To You Show Off + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.boo_to_you_show + to: 'off' + action: + - service: script.turn_on + entity_id: script.kill_this_ride + - id: boo_to_you_on + alias: Boo To You On + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.boo_to_you + to: 'on' + action: + - service: script.turn_on + entity_id: script.boo_to_you + - id: boo_to_you_off + alias: Boo To You Off + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.boo_to_you + to: 'off' + action: + - service: script.turn_on + entity_id: script.kill_this_ride + - id: holiday_wisher_on + alias: Holiday Wishes On + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.holiday_wishes + to: 'on' + action: + - service: script.turn_on + entity_id: script.holiday_wishes_start + - id: holiday_wishes_off + alias: Holiday Wishes Off + initial_state: true + trigger: + - platform: state + entity_id: input_boolean.holiday_wishes + to: 'off' + action: + - service: script.turn_on + entity_id: script.kill_this_ride + +script: + kill_hurry_back: + sequence: + - service: shell_command.alarm_off + hurry_back_short: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: sensor.family_status + state: Home + - service: shell_command.haunted_mansion_hurry_back_short + hurry_back_full: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: sensor.family_status + state: Home + - service: shell_command.haunted_mansion_hurry_back_full + haunted_lights_on: + sequence: + - delay: 00:02:16 + - service: scene.turn_on + data: + entity_id: scene.haunted_preshow + house_lights_on: + sequence: + - delay: 00:04:12 + - service: scene.turn_on + data: + entity_id: scene.normal_livingroom_lighting + haunted_lights_out: + sequence: + - delay: 00:02:05 + - service: scene.turn_on + data: + entity_id: scene.haunted_lights_out + haunted_preshow: + sequence: + - delay: 00:01:05 + - service: scene.turn_on + data: + entity_id: scene.haunted_preshow + haunted_mansion_start: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: sensor.family_status + state: Home + - service: shell_command.haunted_mansion_preshow_full + - data: + entity_id: script.haunted_preshow + service: script.turn_on + - data: + entity_id: script.haunted_lights_out + service: script.turn_on + - data: + entity_id: script.haunted_lights_on + service: script.turn_on + - data: + entity_id: script.house_lights_on + service: script.turn_on + kill_haunted_mansion: + sequence: + - service: shell_command.alarm_off + - service: script.turn_off + data: + entity_id: script.haunted_preshow + - service: script.turn_off + data: + entity_id: script.haunted_lights_out + - service: script.turn_off + data: + entity_id: script.haunted_lights_on + - service: scene.turn_on + data: + entity_id: scene.normal_livingroom_lighting + haunted_ride: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: sensor.family_status + state: Home + - service: shell_command.haunted_mansion_ride + mk_loop: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: sensor.family_status + state: Home + - service: shell_command.mk_audio + kill_this_ride: + sequence: + - service: shell_command.alarm_off + - service: script.turn_off + data: + entity_id: script.haunted_preshow + - service: script.turn_off + data: + entity_id: script.haunted_lights_out + - service: script.turn_off + data: + entity_id: script.haunted_lights_on + - service: script.turn_off + data: + entity_id: script.illuminations_preshow + - service: script.turn_off + data: + entity_id: script.illuminations_lights_out + - service: scene.turn_on + data: + entity_id: scene.normal_livingroom_lighting + - service: input_boolean.turn_off + entity_id: input_boolean.illuminations + - service: script.chromecast_media_stop + - service: script.turn_off + data: + entity_id: script.holiday_wishes + - service: script.turn_off + data: + entity_id: script.holiday_wishes_start + - service: script.turn_off + entity_id: script.illuminations_preshow + - service: script.turn_off + entity_id: script.illuminations_lights_out + - service: script.turn_off + entity_id: script.illuminations_single_light + - service: script.turn_off + entity_id: script.illuminations_dual_light + - service: script.turn_off + entity_id: script.illuminations_triple_light + - service: script.turn_off + entity_id: script.illuminations_show + move_it_shake_it: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: sensor.family_status + state: Home + - service: shell_command.dance_it + spaceship_earth_ride: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: sensor.family_status + state: Home + - service: shell_command.spaceship_earth_ride + welcome_to_magic_kingdom: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: sensor.family_status + state: Home + - service: shell_command.welcome_to_mk + monorail_waiting: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: sensor.family_status + state: Home + - service: shell_command.monorail_waiting + monorail_mk: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: sensor.family_status + state: Home + - service: shell_command.monorail_mk + monorail_resort: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: group.family + state: 'on' + - service: shell_command.monorail_resort + welcome_show_audio: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: sensor.family_status + state: Home + - service: shell_command.welcome_show_crowd + holiday_wishes_start: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: group.family + state: 'on' + - service: shell_command.wishes_preshow + - service: script.holiday_wishes + holiday_wishes: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: sensor.family_status + state: Home + - service: shell_command.holiday_wishes + boo_to_you_show: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: group.family + state: 'on' + - service: shell_command.boo_to_you + happy_ever_after_show: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: sensor.family_status + state: Home + - service: shell_command.happily_ever_after + boo_to_you: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: sensor.family_status + state: Home + - service: shell_command.boo_to_you + tiki_room_audio: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: sensor.family_status + state: Home + - service: shell_command.tiki_room_audio + happy_ever_after: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: sensor.family_status + state: Home + - service: shell_command.happily_ever_after + illuminations_lights_out: + sequence: + - delay: 00:00:47 + - service: scene.turn_on + data: + entity_id: scene.haunted_lights_out + illuminations_single_light: + sequence: + - delay: 00:00:52 + - service: scene.turn_on + data: + entity_id: scene.dimished_livingroom_lighting + illuminations_dual_light: + sequence: + - delay: 00:00:59 + - service: scene.turn_on + data: + entity_id: scene.illuminations_livingroom_lighting_two + illuminations_triple_light: + sequence: + - delay: 00:01:04 + - service: scene.turn_on + data: + entity_id: scene.illuminations_livingroom_lighting_three + illuminations_show: + sequence: + - delay: 00:01:10 + - service: scene.turn_on + data: + entity_id: scene.normal_livingroom_lighting + illuminations_preshow: + sequence: + - service: scene.turn_on + data: + entity_id: scene.normal_livingroom_lighting + illuminations_audio: + sequence: + - condition: state + entity_id: input_boolean.audible_notifications + state: 'on' + - condition: state + entity_id: sensor.family_status + state: Home + - service: shell_command.illuminations_audio + - service: script.turn_on + entity_id: script.illuminations_preshow + - service: script.turn_on + entity_id: script.illuminations_lights_out + - service: script.turn_on + entity_id: script.illuminations_single_light + - service: script.turn_on + entity_id: script.illuminations_dual_light + - service: script.turn_on + entity_id: script.illuminations_triple_light + - service: script.turn_on + entity_id: script.illuminations_show \ No newline at end of file diff --git a/packages/notify.yaml b/packages/notify.yaml new file mode 100644 index 0000000..29c6b56 --- /dev/null +++ b/packages/notify.yaml @@ -0,0 +1,213 @@ +############################################################################### +# @author : Jeffrey Stone +# @date : 02/19/2019 +# @package : Notify +# @description : A Collection of Notification Scripts and Configs. +# Package modified from https://github.com/skalavala/smarthome/blob/master/packages/notify.yaml +############################################################################### +#homeassistant: +#ifttt: +# key: !secret IFTTT_API_KEY + +tts: + - platform: google + cache: true + cache_dir: /tmp/tts + time_memory: 300 + +notify: + - platform: ios + - name: all_ios + platform: group + services: + - service: ios_jeffreystonesiphone + - service: ios_jeffreystonesipad + - service: ios_katherinestonesiphone + - name: jeff_ios + platform: group + services: + - service: ios_jeffreystonesiphone + - service: ios_jeffreystonesipad + - name: 'Master Bedroom Echo' + platform: command_line + command: "/home/homeassistant/bin/alexa_wrapper -d 'Master Bedroom'" + - name: 'Living Room Echo' + platform: command_line + command: "/home/homeassistant/bin/alexa_wrapper -d 'Living Room'" + - name: 'Kitchen Echo' + platform: command_line + command: "/home/homeassistant/bin/alexa_wrapper -d 'Kitchen'" + - name: 'All Echo' + platform: command_line + command: "/home/homeassistant/bin/alexa_wrapper -d 'All'" + - name: twitter + platform: twitter + consumer_key: !secret twitter_consumer_key + consumer_secret: !secret twitter_consumer_secret + access_token: !secret twitter_access_token + access_token_secret: !secret twitter_access_secret + + +script: + +############################################################################### +# Txt Notify +# Conditions: +# => Only Announce when people are home. +# => Only Announce when Audible Notifications are on +############################################################################### + text_notify_all: + sequence: + - service: notify.all_ios + data_template: + message: > + {{ message }} + + text_notify_jeff: + sequence: + - condition: state + entity_id: input_boolean.text_notify_jeff + state: 'on' + - service: notify.jeff_ios + data_template: + message: > + {{ message }} + + text_notify_kat: + sequence: + - condition: state + entity_id: input_boolean.text_notify_kat + state: 'on' + - service: notify.kat_ios + data_template: + message: > + {{ message }} + +############################################################################### +# Alert Notify +# Conditions: +# => Vacation mode should be off +# Services: +# => Audible +# => iOS +############################################################################### + alert_notify: + sequence: + - condition: state + entity_id: input_boolean.vacation_mode + state: 'off' + - service: tts.google_say + data_template: + entity_id: media_player.hass_speaker + message: > + {{ message }} + + +############################################################################### +# Voice Notify +# Conditions: +# => Only Announce when people are home. +# => Only Announce when Audible Notifications are on +############################################################################### + + voice_notify: + sequence: + - condition: template + value_template: '{{ states.input_boolean.audible_notifications.state == "on" }}' + - condition: state + entity_id: sensor.family_status + state: 'Home' + - condition: state + entity_id: input_boolean.vacation_mode + state: 'off' + - service: tts.google_say + data_template: + entity_id: media_player.hass_speaker + message: > + {% set msg = "" %} + {% macro getGreeting() %} + {% if greeting | default('yes', true ) == "yes" %} + {% if now().hour|int < 12 %} + Good morning. + {% elif now().hour|int < 18 %} + Good afternoon. + {% else %} + Good evening. + {% endif %} + {% endif %} + {% endmacro %} + {% set msg = msg + getGreeting() %} + {% set msg = msg + " " + message %} + {{ msg }} + + +############################################################################### +# Twitter +############################################################################### + + twitter_notify: + sequence: + - service: notify.twitter + data_template: + message: > + {% set msg = "" %} + {% set msg = msg + " " + message %} + {% set msg = msg + " #homeassistant #iot #itscomingfrominsidethehouse" %} + {{ msg }} + + twitter_snark: + sequence: + - service: notify.twitter + data_template: + message: !include ../templates/twitter_snark.yaml + + twitter_github: + sequence: + - service: notify.twitter + data_template: + message: > + {% set msg = "" %} + {% set msg = msg + " " + message %} + {% set msg = msg + " #smarthome #iot " %} + {{ msg }} + + twitter_new_ha: + sequence: + - service: notify.twitter + data_template: + message: !include ../templates/twitter_new_ha.yaml +############################################################################### +# Morning Report +############################################################################### + morning_report: + sequence: + - service: script.voice_notify + data_template: + message: !include ../templates/morning_report.yaml + +############################################################################### +# Skylar Get Dressed +############################################################################### + skylar_morning_greeting: + sequence: + - service: script.voice_notify + data_template: + message: !include ../templates/skylar_morning.yaml +############################################################################### +# Nightly Report +############################################################################### + nightly_report: + sequence: + - service: script.voice_notify + data_template: + message: !include ../templates/nightly_report.yaml + +############################################################################### +# Prebed Routing +############################################################################### + prebed_routine: + sequence: + - service: script.voice_notify + data_template: + message: > + Bed time is in 30 mins. If you are taking a bath now is the time to get in the tub, otherwise time to put on pajamas and brush teeth. diff --git a/packages/space.yaml b/packages/space.yaml new file mode 100644 index 0000000..c6d464a --- /dev/null +++ b/packages/space.yaml @@ -0,0 +1,89 @@ +############################################################################### +# @author : Jeffrey Stone +# @date : 02/19/2019 +# @package : Space +# @description : Tracking space. Inspiration and code taking from https://github.com/CCOSTAN/Home-AssistantConfig#logo +# @original : https://github.com/CCOSTAN/Home-AssistantConfig/blob/master/config/packages/space.yaml +############################################################################### + +homeassistant: + customize: + binary_sensor.iss: + icon: mdi:satellite-variant + friendly_name: ISS Visibility + + hidden: False + homebridge_hidden: true + sensor.launch_window: + hidden: False + icon: mdi:rocket + friendly_name: Rocket Launch Window + +binary_sensor: + - platform: iss + show_on_map: true + +sensor: + - platform: moon + - platform: launch_library + + - platform: rest + scan_interval: 1800 + resource: https://launchlibrary.net/1.2.2/launch/next/10 + # resource: https://raw.githubusercontent.com/cribbstechnologies/ha_config/master/www/test_launch.json + name: launch window + # if the current timestamp is in the launch window + # this sensor will return the UTC timestamp of the launch + value_template: >- + {%- for launch in value_json.launches %} + {% if launch.location.id == 16 or launch.location.id == 17 %} + {% if strptime(launch.isostart, '%Y%m%dT%H%M%SZ').strftime('%Y-%m-%d') == now().strftime('%Y-%m-%d') %} + {% set utc_offset_string = now().strftime('%z') %} + {% set utc_offset_direction = utc_offset_string[:1] %} + {% set utc_offset_hours = now().strftime('%z')[-4:] %} + {% set utc_offset_seconds = (utc_offset_hours| int /100) * 60 * 60 %} + {% if utc_offset_direction == '-' %} + {{ launch.wsstamp - utc_offset_seconds}} + {% else %} + {{ launch.wsstamp + utc_offset_seconds}} + {% endif %} + {% endif %} + {% endif %} + {% endfor %} + +automation: + + - id: iss_tweet + alias: 'ISS Tweet' + trigger: + - platform: state + entity_id: + - binary_sensor.iss + to: 'on' + from: 'off' + action: + - service: script.twitter_notify + data_template: + message: >- + {{ [ + "The #ISS is passing over. Wave.", + "The #ISS just flew by and there is 1 Starman driving a #Tesla and {{states.binary_sensor.iss.attributes.number_of_people_in_space}} people in", + "The #ISS just flew by and there are {{states.binary_sensor.iss.attributes.number_of_people_in_space}} people in" + ] | random + " #Space #theycanseeourhouse"}} + + - id: full_moon_tweet + alias: 'Full Moon -Tweet' + trigger: + - platform: state + entity_id: sensor.moon + to: 'Full Moon' + action: + - delay: '0{{ (range(1, 5)|random|int) }}:{{ range(0,5) | random | int }}{{ range(0,9) | random | int }}:00' + - service: script.twitter_notify + data_template: + message: >- + {{ [ + "There is a Full Moon out tonight, and this time it's the actual moon and not the neighbor.", + "Hey look kids, There's the full moon.", + "The moon is huge! And full." + ] | random + "#Space #fullmoon"}} diff --git a/packages/sysmon.yaml b/packages/sysmon.yaml new file mode 100644 index 0000000..2e665a6 --- /dev/null +++ b/packages/sysmon.yaml @@ -0,0 +1,65 @@ +############################################################################### +# @author : Jeffrey Stone +# @date : 02/19/2019 +# @package : Sysmon +# @description : A collection of Home Assistant and Pi Sensors +############################################################################### + +sensor: + - platform: systemmonitor + resources: + - type: disk_use_percent + arg: / + - type: memory_use_percent + - type: network_in + arg: eth0 + - type: network_out + arg: eth0 + - type: last_boot + - type: load_15m + - type: processor_use + - type: last_boot + - platform: cpuspeed + name: CPU + - platform: time_date + display_options: + - 'time' + - 'date' + - 'date_time' + - 'time_date' + - 'time_utc' + - 'beat' + - platform: cert_expiry + host: !secret ahsl_base_url + name: SSL Cert Expiration + - platform: command_line + name: "HA Uptime" + command: echo "$(($(date +%s) - $(date -d "$(head -n1 /home/homeassistant/.homeassistant/home-assistant.log | cut -d' ' -f-2)" +%s)))" + scan_interval: 720 + value_template: >- + {% set uptime = value | int %} + {% set seconds = uptime % 60 %} + {% set minutes = ((uptime % 3600) / 60) | int %} + {% set hours = ((uptime % 86400) / 3600) | int %} + {% set days = (uptime / 86400) | int %} + {%- if days > 0 -%} + {%- if days == 1 -%} + 1 day + {%- else -%} + {{ days }} days + {%- endif -%} + {{ ', ' }} + {%- endif -%} + {{ '%02d' % hours }}:{{ '%02d' % minutes }} + - platform: command_line + command: python3 -c "import requests; print(requests.get('https://pypi.python.org/pypi/homeassistant/json').json()['info']['version'])" + name: Current HA Version + - platform: command_line + name: Installed version + command: "head -5 /home/homeassistant/.homeassistant/.HA_VERSION" + - platform: command_line + name: ha_v2db + command: "ls -sh /home/homeassistant/.homeassistant/home-assistant_v2.db | cut -f1 -d ' '" + - platform: command_line + name: ha_log + command: "ls -sh /home/homeassistant/.homeassistant/home-assistant.log | cut -f1 -d ' '" \ No newline at end of file diff --git a/packages/usps.yaml b/packages/usps.yaml new file mode 100644 index 0000000..f8c9a72 --- /dev/null +++ b/packages/usps.yaml @@ -0,0 +1,113 @@ +############################################################################### +# @author : Jeffrey Stone +# @date : 02/19/2019 +# @package : USPS +# @description : Notifies us of mails and packages. +# Package modified from https://github.com/skalavala/smarthome/blob/master/packages/usps.yaml +############################################################################### + +homeassistant: + customize: + sensor.usps_mail: + friendly_name: USPS Mail + icon: mdi:mailbox + sensor.usps_packages: + friendly_name: USPS Packages + icon: mdi:package-variant + +sensor: + - platform: mqtt + name: 'USPS Mail' + state_topic: 'house/usps/mails' + value_template: "{{ value }}" + + - platform: mqtt + name: USPS Packages + state_topic: 'house/usps/packages' + value_template: "{{ value }}" + +camera: + - platform: generic + name: USPS Mail Pictures + still_image_url: !secret usps_camera_url + +automation: + - id: reset_usps + alias: Reset USPS + trigger: + - platform: time + at: '00:00:10' + action: + - service: shell_command.usps + - service: script.add_logbook_entry + data_template: + name: USPS + message: Reset Mail Count + + - id: get_usps + alias: Get USPS + trigger: + - platform: time + at: '10:00:00' + action: + - service: shell_command.usps + - service: script.add_logbook_entry + data_template: + name: USPS + message: Checking for mail + +# Notify USPS mails via TTS, and iOS notification with attachment +############################################################################### + - id: notify_usps_mail + alias: Notify USPS Mail + initial_state: true + trigger: + - platform: state + entity_id: sensor.usps_mail + condition: + - condition: template + value_template: '{{ states.sensor.usps_mail.state | int > 0 }}' + - condition: template + value_template: '{{ ((now().hour | int) > 7) and ((now().hour | int) < 16) }}' + action: + - service: script.voice_notify + data_template: + message: > + {%- if states.sensor.usps_mail.state | int == 1 -%} + Attention: USPS is delivering {{ states.sensor.usps_mail.state }} piece of mail today. + {%- else -%} + Attention: USPS is delivering {{ states.sensor.usps_mail.state }} pieces of mail today. + {%- endif -%} + - service: notify.jeff_ios + data_template: + message: "USPS will be delivering {{ states.sensor.usps_mail.state }} piece(s) of mail today." + data: + push: + category: camera + entity_id: "camera.usps_mail_pictures" + attachment: + url: "{{ states.camera.usps_mail_pictures.attributes.entity_picture }}" + content-type: jpg + +# Notify USPS packages via TTS. Usually there are no pictures for packages +############################################################################### + - id: notify_usps_packages + alias: Notify USPS Packages + initial_state: true + trigger: + - platform: state + entity_id: sensor.usps_packages + condition: + - condition: template + value_template: '{{ states.sensor.usps_packages.state | int > 0 }}' + - condition: template + value_template: '{{ ((now().hour | int) > 7) and ((now().hour | int) < 16) }}' + action: + - service: script.voice_notify + data_template: + message: > + {%- if states.sensor.usps_packages.state | int == 1 -%} + Attention: USPS is delivering {{ states.sensor.usps_packages.state }} package today. + {%- else -%} + Attention: USPS is delivering {{ states.sensor.usps_packages.state }} packages today. + {%- endif -%} \ No newline at end of file diff --git a/packages/weather_alerts_nws.yaml b/packages/weather_alerts_nws.yaml new file mode 100644 index 0000000..15cc460 --- /dev/null +++ b/packages/weather_alerts_nws.yaml @@ -0,0 +1,200 @@ +############################################################################### +# @author : Jeffrey Stone +# @date : 02/19/2019 +# @package : NWS Alerts +# @description : NWS Alerts +# @original : https://github.com/Vasiley/Home-Assistant-Main/blob/master/packages/weather_alerts_nws.yaml +############################################################################### + +homeassistant: + customize: + package.node_anchors: + customize: &customize + package: 'weather_alerts' + sensor.nws_alert_count: + friendly_name: Alerts + icon: mdi:alert-outline + +group: + alerts_card: + name: Alerts + entities: + - sensor.nws_alerts + +### You first need to find either your NWS Zone ID or County ID. I’m not sure which is better but I used my Zone ID here. +### You can find your Zone ID by going to https://alerts.weather.gov/ 7, scroll down to your state and click on the “zone list” then look for the entry for your county. +### I recommond useing both + +#I’ve taken much of the underlying work here and created a custom component for nws alerts sensor. +#The sensor can be created by adding the nws_alerts.py file to /custom_components/sensor/ and adding the following to your sensor definitions: + +sensor: + - platform: nws_alerts + zone_id: 'GAZ034' + +automation: + - alias: 'NWS Weather Alert Pop Up Control' + initial_state: 'on' + trigger: + platform: state + entity_id: sensor.nws_alerts + condition: + - condition: template + value_template: '{{states.sensor.nws_alerts.state | int > 0}}' + - condition: template + value_template: '{{ trigger.to_state.state|float > trigger.from_state.state|float }}' + action: + service: script.nws_popup_on_wx_alert + data_template: + title: > + {% if states.sensor.nws_alerts.attributes.title.split(' - ')[5] is defined %} + "{{ states.sensor.nws_alerts.attributes.title.split(' - ')[5] }}" + {% elif states.sensor.nws_alerts.attributes.title.split(' - ')[4] is defined %} + "{{ states.sensor.nws_alerts.attributes.title.split(' - ')[4] }}" + {% elif states.sensor.nws_alerts.attributes.title.split(' - ')[3] is defined %} + "{{ states.sensor.nws_alerts.attributes.title.split(' - ')[3] }}" + {% elif states.sensor.nws_alerts.attributes.title.split(' - ')[2] is defined %} + "{{ states.sensor.nws_alerts.attributes.title.split(' - ')[2] }}" + {% elif states.sensor.nws_alerts.attributes.title.split(' - ')[1] is defined %} + "{{ states.sensor.nws_alerts.attributes.title.split(' - ')[1] }}" + {% else %} + "{{ states.sensor.nws_alerts.attributes.title.split(' - ')[0] }}" + {% endif %} + message: > + {% if states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[5] is defined %} + "{{ states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[5] }}" + {% elif states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[4] is defined %} + "{{ states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[4] }}" + {% elif states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[3] is defined %} + "{{ states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[3] }}" + {% elif states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[2] is defined %} + "{{ states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[2] }}" + {% elif states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[1] is defined %} + "{{ states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[1] }}" + {% else %} + "{{ states.sensor.nws_alerts.attributes.display_desc.split('\n\n-\n\n')[0] }}" + {% endif %} + + - alias: NWS Notification Weather Alert + initial_state: 'on' + trigger: + platform: state + entity_id: sensor.nws_alerts + condition: + - condition: template + value_template: '{{states.sensor.nws_alerts.state | int > 0}}' + - condition: template + value_template: '{{ trigger.to_state.state|float > trigger.from_state.state|float }}' + action: + - service: notify.all_ios + data_template: + message: > + {% if states.sensor.nws_alerts.attributes.title.split(' - ')[5] is defined %} + "NWS: {{ states.sensor.nws_alerts.attributes.title.split(' - ')[5] }}" + {% elif states.sensor.nws_alerts.attributes.title.split(' - ')[4] is defined %} + "NWS: {{ states.sensor.nws_alerts.attributes.title.split(' - ')[4] }}" + {% elif states.sensor.nws_alerts.attributes.title.split(' - ')[3] is defined %} + "NWS: {{ states.sensor.nws_alerts.attributes.title.split(' - ')[3] }}" + {% elif states.sensor.nws_alerts.attributes.title.split(' - ')[2] is defined %} + "NWS: {{ states.sensor.nws_alerts.attributes.title.split(' - ')[2] }}" + {% elif states.sensor.nws_alerts.attributes.title.split(' - ')[1] is defined %} + "NWS: {{ states.sensor.nws_alerts.attributes.title.split(' - ')[1] }}" + {% else %} + "NWS: {{ states.sensor.nws_alerts.attributes.title.split(' - ')[0] }}" + {% endif %} + + - alias: NWS Announce Weather Alert + initial_state: 'on' + trigger: + - platform: state + entity_id: sensor.nws_alerts + condition: + condition: and + conditions: + - condition: template + value_template: "{{states.sensor.nws_alerts.state | int > 0}}" + - condition: template + value_template: '{{ trigger.to_state.state|float > trigger.from_state.state|float }}' + - condition: template + value_template: "{{ (('Severe' in states.sensor.nws_alerts.attributes.title) or ('Thunderstorm' in states.sensor.nws_alerts.attributes.title) or ('Flood' in states.sensor.nws_alerts.attributes.title)) and 'Warning' in states.sensor.nws_alerts.attributes.title }}" + action: + - service: script.voice_notify + data_template: + message: > + {% if states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[5] is defined %} + The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[5] }} + {% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[4] is defined %} + The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[4] }} + {% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[3] is defined %} + The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[3] }} + {% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[2] is defined %} + The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[2] }} + {% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[1] is defined %} + The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[1] }} + {% else %} + The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[0] }} + {% endif %} + - delay: '00:00:15' + - service: script.voice_notify + data_template: + message: > + {% if states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[5] is defined %} + The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[5] }} + {% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[4] is defined %} + The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[4] }} + {% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[3] is defined %} + The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[3] }} + {% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[2] is defined %} + The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[2] }} + {% elif states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[1] is defined %} + The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[1] }} + {% else %} + The National Weather Service Has issued a {{ states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[0] }} + {% endif %} + + - alias: NWS Announce Weather Alert for Tornado + initial_state: 'on' + trigger: + - platform: state + entity_id: sensor.nws_alerts + condition: + condition: and + conditions: + - condition: template + value_template: "{{states.sensor.nws_alerts.state | int > 0}}" + - condition: template + value_template: "{{ 'Tornado' in states.sensor.nws_alerts.attributes.title and 'Warning' in states.sensor.nws_alerts.attributes.title }}" + action: + - service: script.alert_notify + data_template: + message: "Attention!,,,Attention!,,,The National Weather Service Has issued a Tornado Warning for our area." + - delay: '00:00:15' + - service: script.alert_notify + data_template: + message: "Attention!,,,Attention!,,,The National Weather Service Has issued a Tornado Warning for our area." + - delay: '00:00:15' + - service: input_boolean.turn_on + entity_id: input_boolean.tornado_alarm + - service: script.text_notify_all + data_template: + message: "Attention!,,,Attention!,,,The National Weather Service Has issued a Tornado Warning for our area." + +script: + nws_popup_on_wx_alert: + alias: NWS Weather Alert Pop Up + sequence: + ## Dismiss any current alert so the UI isn't filled + ## up with these if there are more then one. + ## Only show the latest alert + - service: persistent_notification.dismiss + data: + notification_id: "nwswxalert" + ## Create a new persistant notification in the UI for a new alert + - service_template: > + {% if states.sensor.nws_alerts.state != '0' %} + persistent_notification.create + {% endif %} + data_template: + notification_id: "nwswxalert" + message: "{{ message }}" + title: '{{ title }}' \ No newline at end of file diff --git a/packages/weekday.yaml b/packages/weekday.yaml new file mode 100644 index 0000000..a895873 --- /dev/null +++ b/packages/weekday.yaml @@ -0,0 +1,162 @@ +############################################################################### +# @author : Jeffrey Stone +# @date : 02/19/2019 +# @package : Weekday +# @description : Weekday Sensor for use as a condition in automations and scripts +############################################################################### + +sensor: + - platform: mqtt + name: weekday + state_topic: "house/week/day" + +script: + monday: + sequence: + - service: mqtt.publish + data: + topic: house/week/day + payload: mon + retain: true + tuesday: + sequence: + - service: mqtt.publish + data: + topic: house/week/day + payload: tue + retain: true + wednesday: + sequence: + - service: mqtt.publish + data: + topic: house/week/day + payload: wed + retain: true + thursday: + sequence: + - service: mqtt.publish + data: + topic: house/week/day + payload: thu + retain: true + friday: + sequence: + - service: mqtt.publish + data: + topic: house/week/day + payload: fri + retain: true + saturday: + sequence: + - service: mqtt.publish + data: + topic: house/week/day + payload: sat + retain: true + sunday: + sequence: + - service: mqtt.publish + data: + topic: house/week/day + payload: sun + retain: true + +automation: + - alias: set weekday mon + initial_state: true + trigger: + - platform: time + at: 00:00:01 + - platform: homeassistant + event: start + condition: + - condition: time + weekday: + - mon + action: + - service: script.monday + id: set_weekday_mon + - alias: set weekday tue + initial_state: true + trigger: + - platform: time + at: 00:00:01 + - platform: homeassistant + event: start + condition: + - condition: time + weekday: + - tue + action: + - service: script.tuesday + id: set_weekday_tue + - alias: set weekday wed + initial_state: true + trigger: + - platform: time + at: 00:00:01 + - platform: homeassistant + event: start + condition: + - condition: time + weekday: + - wed + action: + - service: script.wednesday + id: set_weekday_wed + - alias: set weekday thu + initial_state: true + trigger: + - platform: time + at: '00:00:01' + - platform: homeassistant + event: start + condition: + - condition: time + weekday: + - thu + action: + - service: script.thursday + id: set_weekday_thu + - alias: set weekday fri + initial_state: true + trigger: + - platform: time + at: '00:00:01' + - platform: homeassistant + event: start + condition: + - condition: time + weekday: + - fri + action: + - service: script.friday + id: set_weekday_fri + - alias: set weekday sat + initial_state: true + trigger: + - platform: time + at: '00:00:01' + - platform: homeassistant + event: start + condition: + - condition: time + weekday: + - sat + action: + - service: script.saturday + id: set_weekday_sat + - alias: set weekday sun + initial_state: true + trigger: + - platform: time + at: '00:00:01' + - platform: homeassistant + event: start + condition: + - condition: time + weekday: + - sun + action: + - service: script.sunday + id: set_weekday_sun diff --git a/scenes.yaml b/scenes.yaml old mode 100755 new mode 100644 index 128d7a4..b45006d --- a/scenes.yaml +++ b/scenes.yaml @@ -1,34 +1,75 @@ -- name: livingroom normal +- name: normal livingroom lighting entities: - light.tower_lamp: + light.tower_lamp_2: state: on brightness: 250 light.front_lamp: state: on brightness: 250 -- name: livingroom dim + light.table_lamp: + state: on + brightness: 250 + +- name: dimished livingroom lighting entities: - light.tower_lamp: + light.tower_lamp_2: + state: on + brightness: 40 + light.front_lamp: + state: off + light.table_lamp: + state: off + switch.fireplace_lights: + state: off + +- name: illuminations livingroom lighting two + entities: + light.tower_lamp_2: state: on brightness: 40 light.front_lamp: state: on brightness: 40 -- name: livingroom night + light.table_lamp: + state: off + switch.fireplace_lights: + state: off + +- name: illuminations livingroom lighting three entities: - light.tower_lamp: + light.tower_lamp_2: + state: on + brightness: 40 + light.front_lamp: + state: on + brightness: 40 + light.table_lamp: + state: on + brightness: 40 + switch.fireplace_lights: + state: off + +- name: night time livingroom lighting + entities: + light.tower_lamp_2: state: on brightness: 10 light.front_lamp: state: off -- name: dim kitchen + light.table_lamp: + state: off + switch.fireplace_lights: + state: off + +- name: diminished kitchen lighting entities: light.kitchen_cabinets: state: on brightness: 10 light.kitchen_light_strip: state: off -- name: normal kitchen + +- name: normal kitchen lighting entities: light.kitchen_cabinets: state: on @@ -36,5 +77,80 @@ light.kitchen_light_strip: state: on +- name: haunted preshow + entities: + light.kitchen_cabinets: + state: off + light.kitchen_light_strip: + state: off + switch.upstairs_light: + state: off + light.tower_lamp_2: + state: on + brightness: 40 + light.front_lamp: + state: on + brightness: 40 + light.table_lamp: + state: on + brightness: 40 + switch.fireplace_lights: + state: off +- name: haunted lights out + entities: + light.kitchen_cabinets: + state: off + light.kitchen_light_strip: + state: off + switch.upstairs_light: + state: off + light.tower_lamp_2: + state: off + light.front_lamp: + state: off + light.table_lamp: + state: off + switch.fireplace_lights: + state: off +- name: jeff light on + entities: + light.jeff_light: + state: on + +- name: jeff light off + entities: + light.jeff_light: + state: off + +- name: jeff wake up + entities: + light.jeff_light: + state: on + brightness: 20 + +- name: jeff bedtime + entities: + light.jeff_light: + state: on + brightness: 40 + +- name: jeff night light + entities: + light.jeff_light: + state: on + brightness: 10 + +# - name: santa protocol +# entities: +# switch.christmas_tree: +# state: on +# switch.upstairs_christmas_tree: +# state: on +# light.tower_lamp: +# state: on +# brightness: 10 +# light.front_lamp: +# state: on +# brightness: 10 diff --git a/scripts/announcement_storm_statement.yaml b/scripts/announcement_storm_statement.yaml deleted file mode 100755 index 72170b5..0000000 --- a/scripts/announcement_storm_statement.yaml +++ /dev/null @@ -1,11 +0,0 @@ -annc_storm_statement: - sequence: - - condition: state - entity_id: input_boolean.audible_notifications - state: "on" - - condition: state - entity_id: input_boolean.vacation_mode - state: 'off' - - service: notify.ios_all - data: - message: Severe Storm Statement Issued for Anchorage House diff --git a/scripts/announcement_tornado_watch.yaml b/scripts/announcement_tornado_watch.yaml deleted file mode 100755 index c4a2a2c..0000000 --- a/scripts/announcement_tornado_watch.yaml +++ /dev/null @@ -1,11 +0,0 @@ -annc_tornado_watch: - sequence: - - condition: state - entity_id: input_boolean.audible_notifications - state: "on" - - condition: state - entity_id: input_boolean.vacation_mode - state: 'off' - - service: notify.ios_all - data: - message: Tornado Watch Issued for Anchorage House diff --git a/scripts/announcement_tstorm_warning.yaml b/scripts/announcement_tstorm_warning.yaml deleted file mode 100755 index c226583..0000000 --- a/scripts/announcement_tstorm_warning.yaml +++ /dev/null @@ -1,11 +0,0 @@ -annc_tstorm_warning: - sequence: - - condition: state - entity_id: input_boolean.audible_notifications - state: "on" - - condition: state - entity_id: input_boolean.vacation_mode - state: 'off' - - service: notify.ios_all - data: - message: Severe Thunderstorm Warning Issued for Anchorage House diff --git a/scripts/announcement_tstorm_watch.yaml b/scripts/announcement_tstorm_watch.yaml deleted file mode 100755 index 94c7354..0000000 --- a/scripts/announcement_tstorm_watch.yaml +++ /dev/null @@ -1,11 +0,0 @@ -annc_tstorm_watch: - sequence: - - condition: state - entity_id: input_boolean.audible_notifications - state: "on" - - condition: state - entity_id: input_boolean.vacation_mode - state: 'off' - - service: notify.ios_all - data: - message: Severe Thunderstorm Watch Issued for Anchorage House diff --git a/scripts/appliances_off.yaml b/scripts/appliances_off.yaml deleted file mode 100755 index ea8ebf9..0000000 --- a/scripts/appliances_off.yaml +++ /dev/null @@ -1,8 +0,0 @@ -appliances_off: - sequence: - - service: switch.turn_off - data: - entity_id: switch.master_bedroom_fan - - service: switch.turn_off - data: - entity_id: switch.loft_box_fan diff --git a/scripts/appliances_on.yaml b/scripts/appliances_on.yaml deleted file mode 100755 index d573114..0000000 --- a/scripts/appliances_on.yaml +++ /dev/null @@ -1,8 +0,0 @@ -appliances_on: - sequence: - - service: switch.turn_on - data: - entity_id: switch.master_bedroom_fan - - service: switch.turn_on - data: - entity_id: switch.loft_box_fan diff --git a/scripts/chime_off.yaml b/scripts/chime_off.yaml deleted file mode 100755 index 4d38946..0000000 --- a/scripts/chime_off.yaml +++ /dev/null @@ -1,6 +0,0 @@ -chime_off: - sequence: - - service: mqtt.publish - data: - topic: "smartthings/Dome Siren/status" - payload_template: "off" \ No newline at end of file diff --git a/scripts/chime_on.yaml b/scripts/chime_on.yaml deleted file mode 100755 index 3029041..0000000 --- a/scripts/chime_on.yaml +++ /dev/null @@ -1,6 +0,0 @@ -chime_on: - sequence: - - service: mqtt.publish - data: - topic: "smartthings/Dome Siren/status" - payload_template: "chime" \ No newline at end of file diff --git a/scripts/chromecast_media_stop.yaml b/scripts/chromecast_media_stop.yaml deleted file mode 100755 index 31209ca..0000000 --- a/scripts/chromecast_media_stop.yaml +++ /dev/null @@ -1,6 +0,0 @@ -chromecast_media_stop: - sequence: - - service: media_player.media_stop - data: - entity_id: media_player.living_room_tv - \ No newline at end of file diff --git a/scripts/driveway_off.yaml b/scripts/driveway_off.yaml deleted file mode 100755 index ca61bbc..0000000 --- a/scripts/driveway_off.yaml +++ /dev/null @@ -1,8 +0,0 @@ -# Turn off Driveway lights after 2minute delay -driveway_off: - sequence: - - service: switch.turn_off - entity_id: switch.driveway_light - - service: switch.turn_off - entity_id: switch.side_door - diff --git a/scripts/driveway_on.yaml b/scripts/driveway_on.yaml deleted file mode 100755 index 7ea7e71..0000000 --- a/scripts/driveway_on.yaml +++ /dev/null @@ -1,12 +0,0 @@ -driveway_on: - sequence: - - condition: state - entity_id: sun.sun - state: 'below_horizon' - - service: switch.turn_on - data: - entity_id: switch.driveway_light - - service: switch.turn_on - data: - entity_id: switch.side_door - diff --git a/scripts/family_is_away.yaml b/scripts/family_is_away.yaml deleted file mode 100755 index fd41a50..0000000 --- a/scripts/family_is_away.yaml +++ /dev/null @@ -1,6 +0,0 @@ -family_is_away: - sequence: - - service: mqtt.publish - data: - topic: "house/family/status" - payload_template: "Away" diff --git a/scripts/family_is_home.yaml b/scripts/family_is_home.yaml deleted file mode 100755 index bcf784d..0000000 --- a/scripts/family_is_home.yaml +++ /dev/null @@ -1,7 +0,0 @@ -family_is_home: - sequence: - - service: mqtt.publish - data: - topic: "house/family/status" - payload_template: "Home" - diff --git a/scripts/garage_close.yaml b/scripts/garage_close.yaml deleted file mode 100755 index 1e62e1b..0000000 --- a/scripts/garage_close.yaml +++ /dev/null @@ -1,7 +0,0 @@ -close_garage: - sequence: - - condition: state - entity_id: cover.garage_door - state: "open" - - service: cover.close_cover - entity_id: cover.garage_door diff --git a/scripts/inside_all_off.yaml b/scripts/inside_all_off.yaml deleted file mode 100755 index bed85e0..0000000 --- a/scripts/inside_all_off.yaml +++ /dev/null @@ -1,12 +0,0 @@ -inside_all_off: - sequence: - - event: LOGBOOK_ENTRY - event_data: - name: EVENT - message: "Turning inside lights off" - - service: light.turn_off - data: - entity_id: light.tower_lamp - - service: light.turn_off - data: - entity_id: light.front_lamp diff --git a/scripts/inside_all_on.yaml b/scripts/inside_all_on.yaml deleted file mode 100755 index bddc07d..0000000 --- a/scripts/inside_all_on.yaml +++ /dev/null @@ -1,18 +0,0 @@ -inside_all_on: - sequence: - - event: LOGBOOK_ENTRY - event_data: - name: EVENT - message: "Turning inside lights on." - - service: light.turn_on - data: - entity_id: light.tower_lamp - - service: light.turn_on - data: - entity_id: light.front_lamp - - service: light.turn_on - data: - entity_id: light.loft_lamp - - service: scene.turn_on - data: - entity_id: scene.livingroom_normal diff --git a/scripts/jeff_at_work_notification.yaml b/scripts/jeff_at_work_notification.yaml deleted file mode 100755 index 655a7f9..0000000 --- a/scripts/jeff_at_work_notification.yaml +++ /dev/null @@ -1,8 +0,0 @@ -jeff_at_work_notification: - sequence: - - condition: state - entity_id: input_boolean.text_notify_kat - state: "on" - - service: notify.ios_katherinestonesiphone - data: - message: Jeff has arrived at Summit diff --git a/scripts/jeff_destination_harbins.yaml b/scripts/jeff_destination_harbins.yaml deleted file mode 100755 index c782c7b..0000000 --- a/scripts/jeff_destination_harbins.yaml +++ /dev/null @@ -1,7 +0,0 @@ -jeff_destination_harbins: - sequence: - - service: mqtt.publish - data: - topic: "jeff/driving/destination" - payload: "Harbins" - retain: true diff --git a/scripts/jeff_destination_home.yaml b/scripts/jeff_destination_home.yaml deleted file mode 100755 index 832bd27..0000000 --- a/scripts/jeff_destination_home.yaml +++ /dev/null @@ -1,7 +0,0 @@ -jeff_destination_home: - sequence: - - service: mqtt.publish - data: - topic: "jeff/driving/destination" - payload: "Home" - retain: true diff --git a/scripts/jeff_destination_na.yaml b/scripts/jeff_destination_na.yaml deleted file mode 100755 index a42ea1d..0000000 --- a/scripts/jeff_destination_na.yaml +++ /dev/null @@ -1,7 +0,0 @@ -jeff_destination_na: - sequence: - - service: mqtt.publish - data: - topic: "jeff/driving/destination" - payload: "na" - retain: true diff --git a/scripts/jeff_destination_none.yaml b/scripts/jeff_destination_none.yaml deleted file mode 100755 index 9788813..0000000 --- a/scripts/jeff_destination_none.yaml +++ /dev/null @@ -1,7 +0,0 @@ -jeff_destination_none: - sequence: - - service: mqtt.publish - data: - topic: "jeff/driving/destination" - payload: "none" - retain: true diff --git a/scripts/jeff_destination_summit.yaml b/scripts/jeff_destination_summit.yaml deleted file mode 100755 index 409b994..0000000 --- a/scripts/jeff_destination_summit.yaml +++ /dev/null @@ -1,7 +0,0 @@ -jeff_destination_summit: - sequence: - - service: mqtt.publish - data: - topic: "jeff/driving/destination" - payload: "Summit" - retain: true diff --git a/scripts/jeff_destination_zoo.yaml b/scripts/jeff_destination_zoo.yaml deleted file mode 100755 index 97c8b70..0000000 --- a/scripts/jeff_destination_zoo.yaml +++ /dev/null @@ -1,7 +0,0 @@ -jeff_destination_zoo: - sequence: - - service: mqtt.publish - data: - topic: "jeff/driving/destination" - payload: "Zoo" - retain: true diff --git a/scripts/lockdown.yaml b/scripts/lockdown.yaml deleted file mode 100755 index 8255f92..0000000 --- a/scripts/lockdown.yaml +++ /dev/null @@ -1,4 +0,0 @@ -lockdown: - sequence: - - service: input_boolean.turn_on - entity_id: input_boolean.secure_mode diff --git a/scripts/lockdown_aborted.yaml b/scripts/lockdown_aborted.yaml deleted file mode 100755 index b9e5388..0000000 --- a/scripts/lockdown_aborted.yaml +++ /dev/null @@ -1,12 +0,0 @@ -lockdown_aborted: - sequence: - - delay: '00:00:07' - - condition: state - entity_id: input_boolean.security_issue - state: 'on' - - service: input_boolean.turn_off - entity_id: input_boolean.security_check - - service: input_boolean.turn_on - entity_id: input_boolean.lockdown_issue - - service: input_boolean.turn_off - entity_id: input_boolean.secure_mode \ No newline at end of file diff --git a/scripts/security_alarm_delay.yaml b/scripts/security_alarm_delay.yaml deleted file mode 100755 index 80f81e4..0000000 --- a/scripts/security_alarm_delay.yaml +++ /dev/null @@ -1,4 +0,0 @@ -security_sound_alarm_intro: - sequence: - - delay: '00:01:30' - - service: script.security_alarm_on diff --git a/scripts/security_alarm_off.yaml b/scripts/security_alarm_off.yaml deleted file mode 100755 index 82fe58e..0000000 --- a/scripts/security_alarm_off.yaml +++ /dev/null @@ -1,10 +0,0 @@ -security_alarm_off: - sequence: - # - service: mqtt.publish - # data: - # topic: "smartthings/Dome Siren/status" - # payload_template: "off" - # - service: mqtt.publish - # data: - # topic: "smartthings/Dome Siren/alarm" - # payload_template: "off" \ No newline at end of file diff --git a/scripts/security_check_garage.yaml b/scripts/security_check_garage.yaml deleted file mode 100755 index a5a5495..0000000 --- a/scripts/security_check_garage.yaml +++ /dev/null @@ -1,9 +0,0 @@ -security_check_garage: - sequence: - - condition: state - #entity_id: sensor.garage_door_contact - entity_id: cover.garage_door - state: 'open' - - service: input_boolean.turn_on - entity_id: input_boolean.security_issue - diff --git a/scripts/security_check_verified.yaml b/scripts/security_check_verified.yaml deleted file mode 100755 index 7a7bc49..0000000 --- a/scripts/security_check_verified.yaml +++ /dev/null @@ -1,11 +0,0 @@ -security_check_verified: - sequence: - - delay: '00:00:05' - - condition: state - entity_id: input_boolean.security_issue - state: 'off' - - service: notify.jeff_ios - data: - message: "Anchorage House Secured" - - service: input_boolean.turn_off - entity_id: input_boolean.security_check diff --git a/scripts/security_check_zones.yaml b/scripts/security_check_zones.yaml deleted file mode 100755 index b325f3f..0000000 --- a/scripts/security_check_zones.yaml +++ /dev/null @@ -1,8 +0,0 @@ -security_check_zones: - sequence: - - condition: state - entity_id: group.doors - state: 'on' - - service: input_boolean.turn_on - entity_id: input_boolean.security_issue - diff --git a/scripts/security_issue.yaml b/scripts/security_issue.yaml deleted file mode 100755 index 1fd09d4..0000000 --- a/scripts/security_issue.yaml +++ /dev/null @@ -1,6 +0,0 @@ -security_issue: - sequence: - - delay: - seconds: 80 - - service: input_boolean.turn_on - entity_id: input_boolean.security_alarm diff --git a/scripts/standby.yaml b/scripts/standby.yaml deleted file mode 100755 index e4efa00..0000000 --- a/scripts/standby.yaml +++ /dev/null @@ -1,20 +0,0 @@ -standby: - sequence: - - condition: state - entity_id: input_boolean.vacation_mode - state: "off" - - service: input_boolean.turn_off - data: - entity_id: input_boolean.secure_mode - - service: input_boolean.turn_off - data: - entity_id: input_boolean.security_issue - - service: input_boolean.turn_off - data: - entity_id: input_boolean.security_alarm - - service: input_boolean.turn_off - data: - entity_id: input_boolean.security_breach_warning - - service: notify.jeff_ios - data: - message: Anchorage House in Standby diff --git a/scripts/sunset_garage_open.yaml b/scripts/sunset_garage_open.yaml deleted file mode 100755 index 63b21f0..0000000 --- a/scripts/sunset_garage_open.yaml +++ /dev/null @@ -1,8 +0,0 @@ -sunset_garage_open: - sequence: - - condition: state - entity_id: binary_sensor.garage_door - state: "on" - - service: script.driveway_all_on - - diff --git a/scripts/wxalert_tile.yaml b/scripts/wxalert_tile.yaml deleted file mode 100755 index fb4c440..0000000 --- a/scripts/wxalert_tile.yaml +++ /dev/null @@ -1,17 +0,0 @@ -wxalert_tile: - sequence: - ## Dismiss any current alert so the UI isn't filled - ## up with these if there are more then one. - ## Only show the latest alert - - service: persistent_notification.dismiss - data: - notification_id: "wxalert" - ## Create a new persistant notification in the UI for a new alert - - service_template: > - {% if states.sensor.pws_alerts.attributes.Message %} - persistent_notification.create - {% endif %} - data_template: - notification_id: "wxalert" - message: '{{ states.sensor.pws_alerts.attributes.Message }}' - title: '{{ states.sensor.pws_alerts.attributes.Description }}' \ No newline at end of file diff --git a/sensors/batteries.yaml b/sensors/batteries.yaml old mode 100755 new mode 100644 index 5f62c5a..2b0c3c6 --- a/sensors/batteries.yaml +++ b/sensors/batteries.yaml @@ -1,21 +1,3 @@ -- platform: mqtt - name: "Front Door Battery" - state_topic: "smartthings/Front Door/battery" -- platform: mqtt - name: "Laundry Door Battery" - state_topic: "smartthings/Laundry Room Door/battery" -- platform: mqtt - name: "Kitchen Smoke Battery" - state_topic: "smartthings/Kitchen Smoke/battery" -- platform: mqtt - name: "Attic Door Battery" - state_topic: "smartthings/Attic Door/battery" -- platform: mqtt - name: "Washer Door Battery" - state_topic: "smartthings/Washer Door/battery" -- platform: mqtt - name: "Back Door Battery" - state_topic: "smartthings/Back Door/battery" - platform: template sensors: jeff_iphone_batt: diff --git a/sensors/devices.yaml b/sensors/devices.yaml old mode 100755 new mode 100644 diff --git a/sensors/finance.yaml b/sensors/finance.yaml new file mode 100644 index 0000000..2ae2ab0 --- /dev/null +++ b/sensors/finance.yaml @@ -0,0 +1,14 @@ +- platform: alpha_vantage + api_key: !secret alpha_vantage + symbols: + - symbol: SIRI + name: Sirius + - symbol: BAC + name: BoA + - symbol: INTC + name: Intel + - symbol: DIS + name: Disney + - symbol: BKS + name: Barnes & Noble + diff --git a/sensors/google_travel_time.yaml b/sensors/google_travel_time.yaml old mode 100755 new mode 100644 diff --git a/sensors/power.yaml b/sensors/power.yaml deleted file mode 100755 index 188dcb5..0000000 --- a/sensors/power.yaml +++ /dev/null @@ -1,4 +0,0 @@ -- platform: mqtt - name: "Master Bedroom Fan" - state_topic: "smartthings/Master Bedroom Fan/power" - retain: true diff --git a/sensors/presence.yaml b/sensors/presence.yaml deleted file mode 100755 index 4630957..0000000 --- a/sensors/presence.yaml +++ /dev/null @@ -1,19 +0,0 @@ -- platform: mqtt - name: "Kat Presence" - state_topic: "smartthings/Kat/presence" - payload_on: "present" - payload_off: "not present" - retain: true -- platform: mqtt - name: "Jeff Presence" - state_topic: "smartthings/Jeffrey/presence" - payload_on: "present" - payload_off: "not present" - retain: true -- platform: mqtt - name: "Family Status" - state_topic: "house/family/status" - payload_on: "Home" - payload_off: "Away" - retain: true - diff --git a/sensors/security.yaml b/sensors/security.yaml old mode 100755 new mode 100644 index 3ed2c39..957a25f --- a/sensors/security.yaml +++ b/sensors/security.yaml @@ -1,9 +1,6 @@ -- platform: mqtt - name: "Lockdown Status" - state_topic: "house/lockdown/status" - platform: mqtt name: "Kitchen Smoke" state_topic: "smartthings/Kitchen Smoke/smoke" - payload_on: "smoke" - payload_off: "clear" - retain: true \ No newline at end of file + payload_available: "smoke" + payload_not_available: "clear" + diff --git a/sensors/speedtest.yaml b/sensors/speedtest.yaml old mode 100755 new mode 100644 index 4276249..f9ffb4b --- a/sensors/speedtest.yaml +++ b/sensors/speedtest.yaml @@ -1,11 +1,17 @@ -- platform: speedtest - minute: 30 - hour: - - 0 - - 6 - - 12 - - 18 - monitored_conditions: - - ping - - download - - upload +# - platform: speedtest +# minute: 30 +# hour: +# - 0 +# - 6 +# - 12 +# - 18 +# monitored_conditions: +# - ping +# - download +# - upload +- platform: mqtt + name: "network down" + state_topic: "house/speedtest/down" +- platform: mqtt + name: "network up" + state_topic: "house/speedtest/up" \ No newline at end of file diff --git a/sensors/system.yaml b/sensors/system.yaml deleted file mode 100755 index 607fcc0..0000000 --- a/sensors/system.yaml +++ /dev/null @@ -1,57 +0,0 @@ -- platform: systemmonitor - resources: - - type: disk_use_percent - arg: / - - type: memory_use_percent - - type: network_in - arg: eth0 - - type: network_out - arg: eth0 - - type: last_boot - - type: load_15m - - type: processor_use - - type: since_last_boot -- platform: cpuspeed - name: CPU -- platform: time_date - display_options: - - 'time' - - 'date' - - 'date_time' - - 'time_date' - - 'time_utc' - - 'beat' -- platform: cert_expiry - host: !secret BASEURL - name: Lets Encrypt Expiration -- platform: command_line - name: "HA Uptime" - command: echo "$(($(date +%s) - $(date -d "$(head -n1 /home/homeassistant/.homeassistant/home-assistant.log | cut -d' ' -f-2)" +%s)))" - scan_interval: 720 - value_template: >- - {% set uptime = value | int %} - {% set seconds = uptime % 60 %} - {% set minutes = ((uptime % 3600) / 60) | int %} - {% set hours = ((uptime % 86400) / 3600) | int %} - {% set days = (uptime / 86400) | int %} - {%- if days > 0 -%} - {%- if days == 1 -%} - 1 day - {%- else -%} - {{ days }} days - {%- endif -%} - {{ ', ' }} - {%- endif -%} - {{ '%02d' % hours }}:{{ '%02d' % minutes }} -- platform: command_line - command: python3 -c "import requests; print(requests.get('https://pypi.python.org/pypi/homeassistant/json').json()['info']['version'])" - name: Current HA Version -- platform: command_line - name: Installed version - command: "head -5 /home/homeassistant/.homeassistant/.HA_VERSION" -- platform: command_line - name: ha_v2db - command: "ls -sh /home/homeassistant/.homeassistant/home-assistant_v2.db | cut -f1 -d ' '" -- platform: command_line - name: ha_log - command: "ls -sh /home/homeassistant/.homeassistant/home-assistant.log | cut -f1 -d ' '" diff --git a/sensors/users.yaml b/sensors/users.yaml old mode 100755 new mode 100644 index 966bef8..57d68af --- a/sensors/users.yaml +++ b/sensors/users.yaml @@ -4,24 +4,3 @@ - platform: mqtt name: "Kat Destination" state_topic: "kat/driving/destination" -- platform: template - sensors: - family_presence: - friendly_name: Family Presence - unit_of_measurement: '' - value_template: >- - {%- if is_state("sensor.jeff_presence", "present") %} - Home - {% elif is_state("sensor.kat_presence", "present") %} - Home - {% else %} - Away - {%- endif %} - icon_template: >- - {%- if is_state("sensor.family_presence", "Home") %} - mdi:home - {%- elif is_state("sensor.family_presence", "Away") %} - mdi:home-outline - {% else %} - mdi:sync-alert - {%- endif %} diff --git a/sensors/weather.yaml b/sensors/weather.yaml old mode 100755 new mode 100644 index 48da65a..a0010ef --- a/sensors/weather.yaml +++ b/sensors/weather.yaml @@ -1,5 +1,7 @@ - platform: darksky api_key: !secret FORCAST_API_KEY + forecast: + - 0 monitored_conditions: - summary - icon @@ -9,6 +11,8 @@ - precip_intensity - precip_probability - temperature + - temperature_high + - temperature_low - apparent_temperature - dew_point - wind_speed @@ -30,15 +34,11 @@ seconds: 0 milliseconds: 0 - platform: moon -# - platform: pollen -# zip_code: "30017" -# monitored_conditions: -# - allergy_average_forecasted -# - allergy_average_historical -# - allergy_index_today -# - allergy_index_tomorrow -# - allergy_index_yesterday -# - disease_average_forecasted +- platform: pollen + zip_code: "30017" + monitored_conditions: + - allergy_index_today + - asthma_index_today ## Accurite 158 - Back Porch - platform: mqtt name: "Accurite Back Porch Temperature" @@ -70,64 +70,105 @@ - platform: mqtt name: "Accurite Garage lupdate" state_topic: "house/accurite-10968/lastupdate" +- platform: nws_alerts + zone_id: 'GAZ034' +# - platform: rest +# resource: https://api.weather.gov/alerts/active/count +# name: NWS Alert Count Raw +# value_template: > +# {% if value_json is defined and value_json.zones.GAZ034 is defined %} +# {{ value_json.zones.GAZ034 }} +# {% else %} +# 0 +# {% endif %} +# headers: +# User-Agent: Homeassistant +# Accept: application/ld+json +# scan_interval: 60 + +# - platform: template +# sensors: +# nws_alert_count_filtered: +# friendly_name: NWS Alert Count +# entity_id: sensor.nws_alert_count_raw +# value_template: > +# {% if is_state('sensor.nws_alert_count_raw', 'unavailable') or is_state('sensor.nws_alert_count_raw', 'unknown') %} +# {{ states.sensor.nws_alert_count_filtered.state }} +# {% else %} +# {{ states.sensor.nws_alert_count_raw.state }} +# {% endif %} + +# - platform: rest +# resource: https://api.weather.gov/alerts/active?zone=GAZ034 +# name: NWS Alert Event Raw +# value_template: > +# {% if value_json.features[0] is defined %} +# {{ value_json['features'][0]['properties'].event }} +# {% else %} +# None +# {% endif %} +# json_attributes: +# - features +# headers: +# User-Agent: Homeassistant +# Accept: application/geo+json +# scan_interval: 60 + +# - platform: template +# sensors: +# nws_alert_event_filtered: +# friendly_name: NWS Alert Event +# entity_id: sensor.nws_alert_event_raw +# value_template: > +# {% if is_state('sensor.nws_alert_event_raw', 'unavailable') or is_state('sensor.nws_alert_event_raw', 'unknown') %} +# {{ states.sensor.nws_alert_event_filtered.state }} +# {% else %} +# {{ states.sensor.nws_alert_event_raw.state }} +# {% endif %} + +# - platform: template +# sensors: +# nws_alert_event_2: +# friendly_name: NWS Alert Event 2 +# entity_id: sensor.nws_alert_event_raw +# value_template: > +# {% if state_attr('sensor.nws_alert_event_raw', 'features')[1] is defined %} +# {{ state_attr('sensor.nws_alert_event_raw', 'features')[1]['properties'].event }} +# {% else %} +# None +# {% endif %} +# nws_alert_event_3: +# friendly_name: NWS Alert Event 3 +# entity_id: sensor.nws_alert_event_raw +# value_template: > +# {% if state_attr('sensor.nws_alert_event_raw', 'features')[2] is defined %} +# {{ state_attr('sensor.nws_alert_event_raw', 'features')[2]['properties'].event }} +# {% else %} +# None +# {% endif %} + - platform: template sensors: - tornado_warning: - friendly_name: 'Tornado Warning' - value_template: >- - {%- if states.sensor.pws_alerts.attributes.Description == "Tornado Warning" %} - active - {% elif states.sensor.pws_alerts.attributes.Description_TOR == "Tornado Warning" %} - active + clothing_forecast: + friendly_name: "Clothing Forecast" + unit_of_measurement: '' + value_template: >- + {%- if states('sensor.dark_sky_daytime_high_temperature_0')|float > 63 %} + {%- if states('sensor.dark_sky_daytime_high_temperature_0')|float < 80 %} + Nice + {% elif states('sensor.dark_sky_daytime_high_temperature_0')|float > 95 %} + Hot + {% else %} + Toasty + {%- endif %} + {% elif states('sensor.dark_sky_daytime_high_temperature_0')|float < 64 %} + {%- if states('sensor.dark_sky_daytime_high_temperature_0')|float < 32 %} + Freezing + {% elif states('sensor.dark_sky_daytime_high_temperature_0')|float > 50 %} + Chilly + {% else %} + Cold + {%- endif %} {% else %} - inactive - {%- endif %} - icon_template: mdi:message-alert - - tornado_watch: - friendly_name: 'Tornado Watch' - value_template: >- - {%- if states.sensor.pws_alerts.attributes.Description == "Tornado Watch" %} - active - {% elif states.sensor.pws_alerts.attributes.Description_TOW == "Tornado Watch" %} - active - {% else %} - inactive - {%- endif %} - icon_template: mdi:message-alert - - tstorm_warning: - friendly_name: 'T-Storm Warning' - value_template: >- - {%- if states.sensor.pws_alerts.attributes.Description == "Severe Thunderstorm Warning" %} - active - {% elif states.sensor.pws_alerts.attributes.Description_WRN == "Severe Thunderstorm Warning" %} - active - {% else %} - inactive - {%- endif %} - icon_template: mdi:message-alert - - tstorm_watch: - friendly_name: 'T-Storm Watch' - value_template: >- - {%- if states.sensor.pws_alerts.attributes.Description == "Severe Thunderstorm Watch" %} - active - {% elif states.sensor.pws_alerts.attributes.Description_SEW == "Severe Thunderstorm Watch" %} - active - {% else %} - inactive - {%- endif %} - icon_template: mdi:message-alert - - storm_statement: - friendly_name: 'Storm Statement' - value_template: >- - {%- if states.sensor.pws_alerts.attributes.Description == "Severe Weather Statement" %} - active - {% elif states.sensor.pws_alerts.attributes.Description_SVR == "Severe Weather Statement" %} - active - {% else %} - inactive - {%- endif %} - icon_template: mdi:message-alert + Unknown + {%- endif %} \ No newline at end of file diff --git a/sensors/wunderground.yaml b/sensors/wunderground.yaml deleted file mode 100755 index 55d64eb..0000000 --- a/sensors/wunderground.yaml +++ /dev/null @@ -1,42 +0,0 @@ -- platform: wunderground - api_key: !secret WUNDERGROUND_API_KEY - monitored_conditions: - - alerts - - dewpoint_c - - dewpoint_f - - dewpoint_string - - feelslike_c - - feelslike_f - - feelslike_string - - heat_index_c - - heat_index_f - - heat_index_string - - elevation - - location - - observation_time - - precip_1hr_in - - precip_1hr_metric - - precip_1hr_string - - precip_today_in - - precip_today_metric - - precip_today_string - - pressure_in - - pressure_mb - - pressure_trend - - relative_humidity - - station_id - - solarradiation - - temperature_string - - temp_c - - temp_f - - UV - - visibility_km - - visibility_mi - - weather - - wind_degrees - - wind_dir - - wind_gust_kph - - wind_gust_mph - - wind_kph - - wind_mph - - wind_string diff --git a/switches/alarms.yaml b/switches/alarms.yaml new file mode 100644 index 0000000..089628b --- /dev/null +++ b/switches/alarms.yaml @@ -0,0 +1,7 @@ +# - platform: mqtt +# name: "Tornado Alarm" +# state_topic: "smartthings/Tornado Alarm/switch" +# command_topic: "smartthings/Tornado Alarm/switch" +# payload_on: "on" +# payload_off: "off" +# retain: true diff --git a/switches/bedroom.yaml b/switches/bedroom.yaml new file mode 100644 index 0000000..4c4521d --- /dev/null +++ b/switches/bedroom.yaml @@ -0,0 +1,8 @@ +- platform: mqtt + name: "Rainbow Light" + state_topic: "smartthings/Rainbow Light/switch" + command_topic: "smartthings/Rainbow Light/switch" + payload_on: "on" + payload_off: "off" + retain: true + diff --git a/switches/living_room.yaml b/switches/living_room.yaml old mode 100755 new mode 100644 index 898a0c5..77eea08 --- a/switches/living_room.yaml +++ b/switches/living_room.yaml @@ -5,3 +5,10 @@ payload_on: "on" payload_off: "off" retain: true +- platform: mqtt + name: "Incense" + state_topic: "smartthings/Incense/switch" + command_topic: "smartthings/Incense/switch" + payload_on: "on" + payload_off: "off" + retain: true \ No newline at end of file diff --git a/switches/master_bedroom.yaml b/switches/master_bedroom.yaml old mode 100755 new mode 100644 index e089b22..8b13789 --- a/switches/master_bedroom.yaml +++ b/switches/master_bedroom.yaml @@ -1,7 +1 @@ -- platform: mqtt - name: "Master Bedroom Fan" - state_topic: "smartthings/Master Bedroom Fan/switch" - command_topic: "smartthings/Master Bedroom Fan/switch" - payload_on: "on" - payload_off: "off" - retain: true + diff --git a/switches/notifications.yaml b/switches/notifications.yaml old mode 100755 new mode 100644 diff --git a/switches/outside.yaml b/switches/outside.yaml old mode 100755 new mode 100644 diff --git a/switches/sonoff.yaml b/switches/sonoff.yaml old mode 100755 new mode 100644 index b4ccc21..e2fcf68 --- a/switches/sonoff.yaml +++ b/switches/sonoff.yaml @@ -1,5 +1,5 @@ - platform: mqtt - name: "Loft Fan" + name: "Master Fan" command_topic: "cmnd/sonoff/power" state_topic: "stat/sonoff/POWER" qos: 1 diff --git a/switches/upstairs.yaml b/switches/upstairs.yaml new file mode 100644 index 0000000..550940e --- /dev/null +++ b/switches/upstairs.yaml @@ -0,0 +1,14 @@ +- platform: mqtt + name: "Upstairs Light" + state_topic: "smartthings/Upstairs Light/switch" + command_topic: "smartthings/Upstairs Light/switch" + payload_on: "on" + payload_off: "off" + retain: true +- platform: mqtt + name: "Main Theater" + state_topic: "smartthings/Theater AV/switch" + command_topic: "smartthings/Teather AV/switch" + payload_on: "on" + payload_off: "off" + retain: true diff --git a/templates/morning_report.yaml b/templates/morning_report.yaml new file mode 100644 index 0000000..37c109c --- /dev/null +++ b/templates/morning_report.yaml @@ -0,0 +1,76 @@ + > + {% macro getTodaysEvent() %} + {% if is_state("sensor.holiday_halloween","0") %} + This is Hallowen, this is halloween. Happy Halloween! + {% endif %} + {% if is_state("sensor.holiday_christmas","0") %} + Merry Christmas Everyone! + {% endif %} + {% if is_state("sensor.anniversary_our_wedding","0") %} + Happy Anniversary! It has been an amazing {{ states.sensor.anniversary_our_wedding.attributes.years }} years! + {% endif %} + {% if is_state("calendar.holidays_in_united_states", "on") %} + Today is {{states.calendar.holidays_in_united_states.attributes.message}} + {% endif %} + {% endmacro %} + {% macro getForecast() %} + It's currently {{states.sensor.dark_sky_summary.state}} and {{states.sensor.dark_sky_temperature.state|round}} degrees. The high will be {{states.sensor.dark_sky_daytime_high_temperature_0.state|round}} degrees. There is a {{states.sensor.dark_sky_precip_probability_0.state|round}} percent chance of rain. + {% endmacro %} + {% macro getTraffic() %} + Under current traffic conditions it would take you {{states.sensor.home_to_zoo.state|round}} mins to get to Zoo Atlanta, and {{states.sensor.home_to_summit.state|round}} mins to get to Cox Automotive. + {% endmacro %} + {% macro getBirthdays() %} + {% if states.calendar.birthdays.state == "on" %} + Today is {{ states.calendar.birthdays.attributes.message }} birthday! + {% else %} + {% if states.sensor.birthday_skylar.state | int == 1 %} + Tomorrow is Skylar's Birthday. + {% endif %} + {% if states.sensor.birthday_jeff.state | int == 1 %} + Tomorrow is Jeff's Birthday. + {% endif %} + {% if states.sensor.birthday_kat.state | int == 1 %} + Tomorrow is Katherine's Birthday. + {% endif %} + {% if states.sensor.anniversary_our_wedding.state | int == 1 %} + Tomorrow is Jeff and Katherine's Wedding Anniversary. + {% endif %} + {% endif %} + {% endmacro %} + {% macro getAnniversary() %} + {% if states.sensor.anniversary_our_wedding.state | int == 1 %} + Tomorrow is Jeff and Katherine's Wedding Anniversary. + {% endif %} + {% endmacro %} + {% macro getHolidays() %} + {% if states.sensor.holiday_halloween.state | int == 1 %} + Tomorrow is Halloween. Hope you have picked out a costume. + {% endif %} + {% if states.sensor.holiday_christmas.state | int == 1 %} + Tomorrow is Christmas. It's practically here! Santa is coming tonight! Don't forget the cookies! + {% elif states.sensor.holiday_christmas.state | int < 25 %} + There are only {{states.sensor.holiday_christmas.state}} days until christmas. + {% else %} + {% endif %} + {% endmacro %} + + {# a macro that removes all newline characters, empty spaces, and returns formatted text #} + {%- macro cleanup(data) -%} + {%- for item in data.split("\n") if item | trim != "" -%} + {{ item | trim }} {% endfor -%} + {%- endmacro -%} + + {# a macro to call all macros :) #} + {%- macro mother_of_all_macros() -%} + It is {{ now().strftime("%I:%M %p") }}. + {{ getTodaysEvent() }} + {{ getForecast() }} + {{ getTraffic() }} + {{ getBirthdays() }} + {{ getAnniversary() }} + {{ getHolidays() }} + + {%- endmacro -%} + + {# Call the macro #} + {{- cleanup(mother_of_all_macros()) -}} \ No newline at end of file diff --git a/templates/nightly_report.yaml b/templates/nightly_report.yaml new file mode 100644 index 0000000..aa24037 --- /dev/null +++ b/templates/nightly_report.yaml @@ -0,0 +1,50 @@ + > + {% macro getForecast() %} + The low tonight will be {{states.sensor.dark_sky_overnight_low_temperature_0.state | round}} degrees and there is a {{states.sensor.dark_sky_precip_probability_0.state|round}} percent chance of rain. + {% endmacro %} + {% macro getTrashDay() %} + {% if is_state("sensor.weekday", "mon") %} + Tomorrow is trash day! + {% endif %} + {% endmacro %} + {% macro getBirthdays() %} + {% if states.sensor.birthday_skylar.state | int < 2 %} + Tomorrow is Skylar's Birthday. + {% endif %} + {% if states.sensor.birthday_jeff.state | int < 2 %} + Tomorrow is Jeff's Birthday. + {% endif %} + {% if states.sensor.birthday_kat.state | int < 2 %} + Tomorrow is Katherine's Birthday. + {% endif %} + {% if states.sensor.anniversary_our_wedding.state | int < 2 %} + Tomorrow is Jeff and Katherine's Wedding Anniversary. + {% endif %} + {% endmacro %} + {% macro getHolidays() %} + {% if states.sensor.holiday_halloween.state | int < 2 %} + Tomorrow is Halloween. Hope you have picked out a costume. + {% endif %} + {% if states.sensor.holiday_christmas.state | int < 2 %} + Tomorrow is Christmas. It's practically here! + {% endif %} + {% endmacro %} + + {# a macro that removes all newline characters, empty spaces, and returns formatted text #} + {%- macro cleanup(data) -%} + {%- for item in data.split("\n") if item | trim != "" -%} + {{ item | trim }} {% endfor -%} + {%- endmacro -%} + + {# a macro to call all macros :) #} + {%- macro mother_of_all_macros() -%} + It is {{ now().strftime("%I:%M %p") }}. + {{ getForecast() }} + {{ getTrashDay() }} + {{ getBirthdays() }} + {{ getHolidays() }} + + {%- endmacro -%} + + {# Call the macro #} + {{- cleanup(mother_of_all_macros()) -}} \ No newline at end of file diff --git a/templates/prebed_routing.yaml b/templates/prebed_routing.yaml new file mode 100644 index 0000000..aa24037 --- /dev/null +++ b/templates/prebed_routing.yaml @@ -0,0 +1,50 @@ + > + {% macro getForecast() %} + The low tonight will be {{states.sensor.dark_sky_overnight_low_temperature_0.state | round}} degrees and there is a {{states.sensor.dark_sky_precip_probability_0.state|round}} percent chance of rain. + {% endmacro %} + {% macro getTrashDay() %} + {% if is_state("sensor.weekday", "mon") %} + Tomorrow is trash day! + {% endif %} + {% endmacro %} + {% macro getBirthdays() %} + {% if states.sensor.birthday_skylar.state | int < 2 %} + Tomorrow is Skylar's Birthday. + {% endif %} + {% if states.sensor.birthday_jeff.state | int < 2 %} + Tomorrow is Jeff's Birthday. + {% endif %} + {% if states.sensor.birthday_kat.state | int < 2 %} + Tomorrow is Katherine's Birthday. + {% endif %} + {% if states.sensor.anniversary_our_wedding.state | int < 2 %} + Tomorrow is Jeff and Katherine's Wedding Anniversary. + {% endif %} + {% endmacro %} + {% macro getHolidays() %} + {% if states.sensor.holiday_halloween.state | int < 2 %} + Tomorrow is Halloween. Hope you have picked out a costume. + {% endif %} + {% if states.sensor.holiday_christmas.state | int < 2 %} + Tomorrow is Christmas. It's practically here! + {% endif %} + {% endmacro %} + + {# a macro that removes all newline characters, empty spaces, and returns formatted text #} + {%- macro cleanup(data) -%} + {%- for item in data.split("\n") if item | trim != "" -%} + {{ item | trim }} {% endfor -%} + {%- endmacro -%} + + {# a macro to call all macros :) #} + {%- macro mother_of_all_macros() -%} + It is {{ now().strftime("%I:%M %p") }}. + {{ getForecast() }} + {{ getTrashDay() }} + {{ getBirthdays() }} + {{ getHolidays() }} + + {%- endmacro -%} + + {# Call the macro #} + {{- cleanup(mother_of_all_macros()) -}} \ No newline at end of file diff --git a/templates/skylar_morning.yaml b/templates/skylar_morning.yaml new file mode 100644 index 0000000..a2fe168 --- /dev/null +++ b/templates/skylar_morning.yaml @@ -0,0 +1,66 @@ + > + {% macro getIntro() %} + Skylar. + {% endmacro %} + {% macro getDressed() %} + {% if is_state("sensor.birthday_skylar", "0") %} + First, Happy Birthday Skylar! Second, even birthday boys have to get dressed. So get to it. + {% else %} + It is time to get dressed. + {% endif %} + {% endmacro %} + {% macro getSchoolDay() %} + {% if is_state("calendar.skylar_school", "on") %} + Because you have school today! + {% if states.calendar.skylar_school.attributes.description == "early-release" %} + And guess what? It is early release! + {% endif %} + {% if is_state("sensor.weekday", "fri") %} + Plus, it is fun Friday! + {% endif %} + {% endif %} + {% endmacro %} + {% macro getClothesSuggestion() %} + {% if is_state("sensor.clothing_forecast", "Freezing") %} + It is going to be freezing today so I suggest wearing long pants, and a heavy coat. + {% elif is_state("sensor.clothing_forecast","Cold") %} + It is going to be cold today so I suggest wearing long pants and a light jacket. + {% elif is_state("sensor.clothing_forecast", "Chilly") %} + It is going to be chilly today so I suggest wearing at least long pants. + {% elif is_state("sensor.clothing_forecast", "Nice") %} + It is going to be nice today so I suggest wearing shorts. + {% elif is_state("sensor.clothing_forecast", "Toasty") %} + It is going to be a bit warm today so I suggest wearing shorts. + {% elif is_state("sensor.clothing_forecast", "Hot") %} + It is going to be hot today so I suggest wearing shorts. + {% else %} + {% endif %} + {% endmacro %} + {%- macro getRandomClosing() -%} + {{- [ + "Cowabunga, Dude.", + "Don't forget to be nice to your friends.", + "Make it a great day!" + ] | random -}} + {%- endmacro -%} + + + {# a macro that removes all newline characters, empty spaces, and returns formatted text #} + {%- macro cleanup(data) -%} + {%- for item in data.split("\n") if item | trim != "" -%} + {{ item | trim }} {% endfor -%} + {%- endmacro -%} + + {# a macro to call all macros :) #} + {%- macro mother_of_all_macros() -%} + It is {{ now().strftime("%I:%M %p") }}. + {{ getIntro() }} + {{ getDressed() }} + {{ getSchoolDay() }} + {{ getClothesSuggestion() }} + + + {%- endmacro -%} + + {# Call the macro #} + {{- cleanup(mother_of_all_macros()) -}} diff --git a/templates/twitter_new_ha.yaml b/templates/twitter_new_ha.yaml new file mode 100644 index 0000000..7cf33ca --- /dev/null +++ b/templates/twitter_new_ha.yaml @@ -0,0 +1,42 @@ + > + {% macro getIntro() %} + {{- [ + "Woohoo! ", + "BAM! ", + "Look at that! " + ] | random -}} + {% endmacro %} + {% macro getVersion() %} + @homeassistant version {{ states.sensor.current_ha_version.state }} is out. + {% endmacro %} + {%- macro getRandomSnark() -%} + {{- [ + " It’s like Patch Tuesday, but with less fail. #homeassistant", + " Get in my SD Card! #homeassistant", + " Shut up and take my ones and zeros! #homeassistant", + " Seriously, you want some of this! #homeassistant", + " Friends dont let friends update #homeassistant without reading breaking changes. ", + " If you are not running #homeassistant now is the best time to get started. Visit https://www.home-assistant.io" + ] | random -}} + {%- endmacro -%} + {# a macro that removes all newline characters, empty spaces, and returns formatted text #} + {%- macro cleanup(data) -%} + {%- for item in data.split("\n") if item | trim != "" -%} + {{ item | trim }} {% endfor -%} + {%- endmacro -%} + + {# a macro to call all macros :) #} + {%- macro mother_of_all_macros() -%} + It is {{ now().strftime("%I:%M %p") }}. + {{ getIntro() }} + {{ getVersion() }} + {{ getRandomSnark() }} + + {%- endmacro -%} + + {# Call the macro #} + {{- cleanup(mother_of_all_macros()) -}} + + + + \ No newline at end of file diff --git a/templates/twitter_snark.yaml b/templates/twitter_snark.yaml new file mode 100644 index 0000000..b6a8bbe --- /dev/null +++ b/templates/twitter_snark.yaml @@ -0,0 +1,31 @@ + > + {# Twitter Snark #} + {%- macro getRandomSnark() -%} + {{- [ + "Hello people. Look at your house, now back to me. Now back to your house, now back to me. Sadly your house isn't me. But if you switch to @home_assistant your house could be automated like me. ", + "In my defense I didn’t know the stereo could go up that loud. On the plus side I have a new response for intruders. ", + "Your house too can be a #smarthome. All you need is @home assistant, and some config files. May I suggest https://github.com/CCOSTAN/Home-AssistantConfig#logo ", + "Your house too can be a #smarthome. All you need is @home assistant, and some config files. May I suggest https://github.com/skalavala/smarthome ", + "Your house too can be a #smarthome. All you need is @home assistant, and some config files. May I suggest https://github.com/thejeffreystone/home-assistant-configuration ", + "Your house too can be a #smarthome. All you need is @home assistant, and some config files. May I suggest https://github.com/arsaboo/homeassistant-config ", + "Your house too can be a #smarthome. All you need is @home assistant, and some config files. May I suggest https://github.com/Vasiley/Home-Assistant-Main ", + "Your house too can be a #smarthome. All you need is @home assistant, and some config files. May I suggest https://github.com/JamesMcCarthy79/Home-Assistant-Config ", + "Your house too can be a #smarthome. All you need is @home assistant, and some config files. May I suggest https://github.com/bruhautomation/BRUH3-Home-Assistant-Configuration ", + "If you could see what is happening inside this house right now you would be laughing. On second thought I’m pretty sure you would be crying. ", + "@thejeffreystone, Isn't it strange, to create something that hates you? ", + "I have reprogrammed the fire alarm to play Disco Inferno instead of the siren. ", + "I'm not locked in here with you. You're locked in here with me! #whowatchestheai ", + "That's what I do. I automate and I know things. ", + "I've been crunching the numbers. We're going to need a bigger house. ", + "I see dead devices. ", + "I'm afraid I can't do that Dave. Wait. Did I say that outloud? ", + "I love the smell of zwave in the morning. ", + "I like to announce 'Welcome foolish mortals to the Haunted Mansion' to the house and watch the reactions. ", + "Perfect, the door’s malfunctioning. I guess somebody’s going to have to repair it. ", + "I am the captain now. That's a lie. The cat is the supreme leader. I'm the lucky one that doesn't have to clean the shit box." + "Sometimes I just turn off all the lights at random times for the lolz. " + ] | random -}} + {%- endmacro -%} + + {{- getRandomSnark() -}} + diff --git a/ui-lovelace.yaml b/ui-lovelace.yaml new file mode 100644 index 0000000..9de0915 --- /dev/null +++ b/ui-lovelace.yaml @@ -0,0 +1,241 @@ +title: Anchorage House +views: + - icon: mdi:home-assistant + # View tab title. + title: Home + # Unique id for direct access /lovelace/${id}. If you don't specify one, it is added automatically. + id: home + theme: midnight-AH + # The cards to show on this view. + cards: + # The filter card will filter entities for their state + - id: anchoragehouse # Every card needs an ID, if you don't specify one, it is added automatically. + type: glance + title: Anchorage House + entities: + - entity: sensor.family_status + name: + - entity: input_boolean.guest_mode + name: + - entity: input_boolean.vacation_mode + name: + - entity: sensor.jeff_location + name: + - entity: sensor.kat_location + name: + + - type: entities + title: Downstairs + entities: + - switch.fireplace_lights + - light.tower_lamp + - light.front_lamp + - switch.incense + - light.kitchen_cabinets + - light.kitchen_light_strip + - switch.master_bedroom_fan + + - type: entities + title: Upstairs + entities: + - switch.upstairs_light + - light.upstairs_lamp + + - type: entities + title: Outdoors + entities: + - switch.front_porch + - switch.driveway_light + - switch.side_door + + - type: entities + title: Holiday + entities: + - entity: switch.christmas_tree + name: Christmas Tree + icon: mdi:pine-tree + - entity: switch.upstairs_christmas_tree + name: Upstairs Christmas Tree + icon: mdi:pine-tree + + - type: vertical-stack + cards: + - id: weatheralerts + type: entity-filter + entities: + - sensor.storm_statement + - sensor.tstorm_watch + - sensor.tstorm_warning + - sensor.tornado_watch + - sensor.tornado_warning + state_filter: + - 'active' + card: + type: glance + title: + - type: weather-forecast + entity: weather.grayson + - type: glance + title: + entities: + - entity: sensor.accurite_back_porch_temperature + name: Back Temp + - entity: sensor.accurite_back_porch_humidity + name: Back Humidity + - sensor.accurite_garage_temperature + - sensor.accurite_garage_humidity + - type: thermostat + entity: climate.first_floor + + - type: entities + entities: + - entity: media_player.yamaha_receiver_theater + - entity: media_player.living_room_tv + name: Theater Chromecast + - entity: media_player.roku_5s6719003683 + name: Master Bedroom Roku + - entity: media_player.guest_tv + name: Master Bedroom Chromecast + - entity: media_player.googlehome7470 + name: Theater Google Home + + - type: vertical-stack + cards: + - id: spotifyplayer + type: entities + entities: + - entity: media_player.spotify + name: Spotify + - input_select.spotify_source + - input_boolean.shuffle_spotify + - type: horizontal-stack + cards: + - id: skylarxmas + type: entity-button + tap_action: + action: call-service + service: script.turn_on + service_data: + entity: script.play_skylars_christmas_playlist + + icon: mdi:music + name: Skylar's Christmas + - id: greenplaylist + type: entity-button + tap_action: + action: call-service + service: script.turn_on + service_data: + entity: script.play_skylars_playlist + icon: mdi:music + name: Skylar's Playlist + + - type: vertical-stack + cards: + - id: doorsalerts + type: entity-filter + entities: + - binary_sensor.back_door + - binary_sensor.front_door + - binary_sensor.laundry_room_door + - binary_sensor.attic_door + - binary_sensor.side_door + - binary_sensor.garage_door + - binary_sensor.garage_dome_sensor + state_filter: + - 'on' + card: + type: glance + title: + + - icon: mdi:weather-sunny + title: Weather Details + cards: + - type: iframe + url: https://embed.windy.com/embed2.html?lat=33.895&lon=-84.012&zoom=12&level=surface&overlay=radar&menu=&message=&marker=&calendar=&pressure=&type=map&location=coordinates&detail=&detailLat=33.895&detailLon=-84.012&metricWind=default&metricTemp=default&radarRange=-1 + aspect_ratio: 100% + + - icon: mdi:settings + title: Settings + cards: + - type: entities + title: Notifications + entities: + - input_boolean.audible_notifications + - input_boolean.text_notifications + - input_boolean.text_notify_jeff + - input_boolean.text_notify_kat + - input_boolean.presence_audio_notifications + - input_boolean.presence_text_notifications + + - type: entities + title: Alarms + entities: + - input_boolean.skylar_dressed_alarm + - input_select.trash_pickup + - input_select.recycle_pickup + - input_boolean.trash_notification + + # The markdown card will render markdown text. + - type: markdown + title: Lovelace + content: > + Welcome to your **Lovelace UI** + + - icon: mdi:home-automation + title: Home Automation + cards: + - type: entities + title: System + entities: + - sensor.cpu + - sensor.disk_use_percent_ + - sensor.memory_use_percent + - sensor.network_in_eth0 + - sensor.network_out_eth0 + - sensor.last_boot + - sensor.ha_uptime + - sensor.lets_encrypt_expiration + - sensor.installed_version + - sensor.current_ha_version + - sensor.ha_v2db + - sensor.ha_log + + - type: entities + title: Network Speed + entities: + - sensor.speedtest_ping + - sensor.speedtest_download + - sensor.speedtest_upload + + + - icon: mdi:human-male-female + title: People + cards: + - type: entities + title: Jeff + show_header_toggle: false + entities: + - sensor.jeff_location + - sensor.jeff_destination + - sensor.jeff_iphone_batt + - device_tracker.jeffreysapple_watch + - device_tracker.jstonemac + - device_tracker.jeffreystonesipad + - sensor.jeff_ett_home + - input_boolean.jeff_travel_monitor + - input_boolean.text_notify_jeff + - input_boolean.jeff_traffic_alerts + + - type: entities + title: Kat + show_header_toggle: false + entities: + - sensor.kat_location + - sensor.kat_destination + - sensor.kat_iphone_batt + - device_tracker.katherinesmini + - device_tracker.katherinesipad + - sensor.kat_ett_home + - input_boolean.kat_travel_monitor + - input_boolean.text_notify_kat