diff --git a/.gitignore b/.gitignore index 5c8a599..3564e4f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,38 +1,41 @@ -# Ignore everything explicitly -* +# ignore my git update script +update_git.py -# Whitelist files/folders with !, these will not be ignored. -!*.yaml -!.gitignore -!*.md -!templates/ -!binary_sensors/ -!sensors/ -!packages/ -!switches/ -!lights/ -!python_scripts/ -!alerts/ -!scripts/ +# ignore hidden folders +/config/.storage +/config/.cloud +/config/.google.token + +# ignore some directories. +/config/icloud/ +/config/www/ +/config/tts/ +/config/deps/ +/config/hadashboards/ +/config/intents/ +/config/themes/ +/config/custom_components -# Then because I'm paranoid... -# Ignore folders. -.storage -.cloud -.google.token -.homekit.state -icloud/ -www/ -tts/ -deps/ -hadashboards/ -intents/ -secrets.yaml -ip_bans.yaml -._* -google_calendars.yaml -known_devices* -zones.yaml -scripts/test.yaml +# ignore any of these filesno matter where they are +**.DS_Store +**._* +**.HA_VERSION +**.pyc +**.conf +**.uuid +**.txt +**.log +**.db +**.sqlite +**.xml +**secrets* +**known_devices.yaml +**google_calendars.yaml +**ip_bans.yaml +**.spotify-token-cache +**zones.yaml +**test.yaml +**.homekit* +**.vscode \ No newline at end of file diff --git a/README.md b/README.md index 76e08b8..9d72a3d 100755 --- a/README.md +++ b/README.md @@ -1,77 +1,121 @@

- Anchorage House HA + Anchorage House HA
Anchorage House - Home Assistant Configuration

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 V4 of my config. +Be sure to follow me on twitter [@thejeffreystone](https://twitter.com/thejeffreystone) and on [YouTube](https://www.youtube.com/channel/UCipZJ6748kd8TbelSxcvcVg) where I am starting to post videos of my Home Automation. -#### 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 +You can also follow Anchorage House on Twitter [@anchoragehouse2](https://twitter.com/anchoragehouse2) where it will tweets about the cool automations it does throughout the day. + +#### Anchorage House's Three Laws of Home Automation + +When designing Anchorage House's automations I have made every effort to prioritize the solution based on the following three laws. + +**Law 1: Every automation or action should be the result of a passive sensor or indirect action**. + +**Law 2: An automation can be triggered by voice command only when Law 1 cannot be achieved**. + +**Law 3: An automation or action can be trigger by a physical switch or as the result of a direct iteraction only when Law 1 and Law 2 cannot be achieved.** + +
+ +This is V5 of my config. + +##### Major Changes in v5: +* Migrated from Hassbian to Hassio +* Migrated off Smartthings, which had been used a device hub. My zwave and zigbee devices are now using zwave2mqtt and zigbee2mqtt. +* Swapped the Honeywell Wifi Thermostat out for an Ecobee. This actually happened over the summer, and I am just now updating the readme... #### 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 used as a dumb hub handling most of the zwave and zigbee devices. +Hassio is the flavor of Home Assistant powering Anchorage House these days. 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 from varios temperature sensors, and Splunk for Home Assistant data analytics. 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 reach out if you have questions. I love this stuff. +Read about the continuing work to automate **everything** over on my [blog](https://www.thejeffreystone.net). But be warned, it really hasn't been updated in a while, altrhough I hope to change that soon. Feel free to reach out if you have questions. I love this stuff. -One last thing. Everything in this configuration is a combination of the things I want out of a home automation system flavored with the inspiration from other using Home Assistant. In some cases I took someone else's idea and made it my own, or I just completely stole it. So I would be remiss if I didn't acknowledge those that inpired this journey. If you like what you see here, please checkout their configs as well. I owe them thanks for sharing their work. +One last thing. Everything in this configuration is a combination of the things I want out of a home automation system flavored with the inspiration from others using Home Assistant. In some cases I took someone else's idea and made it my own, and in some I just completely stole it. So I would be remiss if I didn't acknowledge those that inpired this journey. If you like what you see here, please checkout their configs as well. I owe them thanks for sharing their work. * [CCOSTAN](https://github.com/CCOSTAN/Home-AssistantConfig#logo) / [https://www.vCloudInfo.com](https://www.vCloudInfo.com) * [Isabella Gross Alström](https://isabellaalstrom.github.io/) * [Mahasri Kalavala](https://github.com/skalavala/mysmarthome) #### Devices: +* Various Apple Devices (Macbooks, Mac Mini, iPhones, iPads) -None of the following links are affiliate links, and are included merely as reference. +##### Networking +* [Eero Mesh Network Routers](https://amzn.to/2Nty6fE) +* [Aeotec Z-Stick Gen 5](https://amzn.to/2K4BqMf) -* 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 Switches](http://a.co/7aKBkst) -* [First Alert Z-Wave Smoke/CO2](http://a.co/iTuEjU8) -* [GoControl Z-Wave Bulbs](http://a.co/ajfXdIS) -* [Cree Connect Bulbs](http://a.co/91ddysL) -* [Foscam FI8918W](http://a.co/cExSWZ7) -* [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) -* [Dome Motion Sensor](http://a.co/aFlzEmf) -* [Dome Door Window Sensor](http://a.co/eo4DsIk) +##### Media * AppleTv -* ChromeCast -* Roku Streaming Stick -* [NeoTec USB SDR](http://a.co/giwQvX1) For getting data from Accurite temperture and humidty sensors -* [Accurite Temp and Humidty Sensors](http://a.co/hcppyvF) -* [Sonoff Wifi Switches](http://a.co/dh5hCZu) +* Google Home Hub / Home Mini +* [Amazon Echo Dot](https://amzn.to/32vt6vr) +* [Amazon Echo](https://amzn.to/34LSajw) +* [ChromeCast](https://amzn.to/34HIjuL) +* [Roku Premiere](https://amzn.to/2CmOBnF) +* [Roku Streaming Stick](https://amzn.to/34At7zI) + +##### Cameras +* [Arlo Pro 2 Cameras](https://amzn.to/32ulDNl) +* [Foscam FI8918W](https://amzn.to/33wKdOL) + +##### Switches +* [MyQ Garage Door Opener](https://amzn.to/2NXQSea) +* [GE Z-Wave Switches](https://amzn.to/33vh8mS) +* [Sonoff WiFi Smart Switch ](https://amzn.to/2K0mPla) +* [Levitron Plug in ZWave Dimmer](https://amzn.to/2NW9kno) +* [Levitron Z-Wave Switch](https://amzn.to/2JXyDob) +* [Wemo Wifi SmartPlug](https://amzn.to/2K4bikB) +* [TP-Link HS103 Wifi Switch](https://amzn.to/32wV7Tg) +* [Honeywell Z-Wave Plug](https://amzn.to/2NtRE3L) +* [Sylvania Smart Zigbee Plug](https://amzn.to/32zoJzH) + +##### Lights +* [Sengled LED Color Plus (Zigbee)](https://amzn.to/32nEjy8) +* [Cree Connect Bulbs (Zigbee)](https://amzn.to/2NrYOWa) + +##### Sensors +* [Z-Wave Door Sensor](https://amzn.to/34MM1n7) +* [Z-Wave Garage Door Tilt Sensor](https://amzn.to/2WUHc8s) +* [Dome Motion Z-Wave Sensor](https://amzn.to/32nD5Ty) + +##### Climate +* [Ecobee Thermostat](https://www.amazon.com/gp/product/B07K2GTKQ5/ref=as_li_tl?ie=UTF8&tag=thejefferysto-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=B07K2GTKQ5&linkId=af62c6bb747234ded5bc4161a651d47a) +* [Ecobee Temp and Motion Sensors](https://amzn.to/2NSdNYz) +* [USB SDR](https://amzn.to/2Nv3f2l) For getting data from Accurite temperture and humidty sensors +* [Accurite Temp and Humidty Sensors](https://amzn.to/36LUatA) + +##### Security +* [First Alert Z-Wave Smoke/CO2](https://amzn.to/34M6wQT) #### Integrations: -* Amazon Echo -* IFTTT -* 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) -* Cloudflare for SSL and DNS -* Splunk +* Amazon Echo - Voice Control and Music +* IFTTT - Automations +* Life360 - Presence Detection +* Spotify - Music +* Google (Calendar API, GMail for sensors, and Google Home) - Voice Control, Automations based on Calendar, USPS Informed Delivery +* Waze API - Transit time and Automations +* Dropbox b- Config ackup +* MQTT - For Zwave, Zigbee, various sensors running on a different host. +* Eero - Networked Devices +* [RTL_433](https://github.com/merbanan/rtl_433) - Indoor and Outdoor Temperature Sensors +* Cloudflare - 15 year SSL Cert +* Splunk - Data Analytics * Various other services and APIs + +#### Want to support this project? + +

+Buy me a coffeeBuy me a coffee +
+Find your next Home Automation device on Amazon using my affiliate link +
+ +Affiliate Disclosure + +

diff --git a/binary_sensors/doors.yaml b/binary_sensors/doors.yaml deleted file mode 100755 index b1f0725..0000000 --- a/binary_sensors/doors.yaml +++ /dev/null @@ -1,42 +0,0 @@ -- platform: mqtt - name: "Back Door" - state_topic: "smartthings/Back Door/contact" - payload_on: "open" - payload_off: "closed" - device_class: door -- platform: mqtt - name: "Garage Door" - state_topic: "smartthings/Garage Door/contact" - payload_on: "open" - payload_off: "closed" - device_class: garage_door -- platform: mqtt - name: "Front Door" - state_topic: "smartthings/Front Door/contact" - payload_on: "open" - payload_off: "closed" - device_class: door -- platform: mqtt - name: "Laundry Room Door" - state_topic: "smartthings/Laundry Room Door/contact" - payload_on: "open" - payload_off: "closed" - device_class: door -- platform: mqtt - name: "Attic Door" # Dome Door Sensor - state_topic: "smartthings/Attic Door/contact" - payload_on: "open" - payload_off: "closed" - device_class: door -- platform: mqtt - name: "Side Door" # Dome Door Sensor - state_topic: "smartthings/Side Door/contact" - payload_on: "open" - payload_off: "closed" - device_class: door -- platform: mqtt - name: "Washer Door" - state_topic: "smartthings/Washer Door/contact" - payload_on: "open" - payload_off: "closed" - device_class: door \ No newline at end of file diff --git a/binary_sensors/motion.yaml b/binary_sensors/motion.yaml deleted file mode 100755 index 387b22a..0000000 --- a/binary_sensors/motion.yaml +++ /dev/null @@ -1,13 +0,0 @@ -- platform: mqtt - name: "Garage Motion" # Dome Motion Sensor - state_topic: "smartthings/Garage Motion/contact" - payload_on: "active" - payload_off: "inactive" - device_class: motion - -- platform: command_line - name: vlc player - command: 'pidof vlc | wc -l' - payload_on: 1 - payload_off: 0 - scan_interval: 10 \ No newline at end of file diff --git a/alerts/garage_after_dark.yaml b/config/alerts/garage_after_dark.yaml similarity index 100% rename from alerts/garage_after_dark.yaml rename to config/alerts/garage_after_dark.yaml diff --git a/alerts/jeff_bad_traffic_home.yaml b/config/alerts/jeff_bad_traffic_home.yaml similarity index 100% rename from alerts/jeff_bad_traffic_home.yaml rename to config/alerts/jeff_bad_traffic_home.yaml diff --git a/alerts/jeff_heading_home.yaml b/config/alerts/jeff_heading_home.yaml similarity index 100% rename from alerts/jeff_heading_home.yaml rename to config/alerts/jeff_heading_home.yaml diff --git a/alerts/kat_heading_home.yaml b/config/alerts/kat_heading_home.yaml similarity index 100% rename from alerts/kat_heading_home.yaml rename to config/alerts/kat_heading_home.yaml diff --git a/alerts/lockdown_issue.yaml b/config/alerts/lockdown_issue.yaml similarity index 100% rename from alerts/lockdown_issue.yaml rename to config/alerts/lockdown_issue.yaml diff --git a/alerts/unauthorized_access.yaml b/config/alerts/unauthorized_access.yaml similarity index 100% rename from alerts/unauthorized_access.yaml rename to config/alerts/unauthorized_access.yaml diff --git a/automations.yaml b/config/automations.yaml old mode 100755 new mode 100644 similarity index 97% rename from automations.yaml rename to config/automations.yaml index dd6ed11..151d103 --- a/automations.yaml +++ b/config/automations.yaml @@ -2,7 +2,7 @@ alias: Washer Running trigger: - above: 5 - entity_id: sensor.washer + entity_id: sensor.washer_power platform: numeric_state action: - service: script.washer_running @@ -11,7 +11,7 @@ alias: Washer Complete trigger: - below: 3 - entity_id: sensor.washer + entity_id: sensor.washer_power platform: numeric_state condition: - condition: state @@ -25,7 +25,7 @@ alias: Washer Emptied trigger: - platform: state - entity_id: binary_sensor.washer_door_contact + entity_id: binary_sensor.washer_door from: 'off' to: 'on' action: @@ -111,7 +111,9 @@ - service: scene.turn_on entity_id: scene.normal_kitchen_lighting - service: switch.turn_off - entity_id: switch.rainbow_light_3 + entity_id: switch.0xf0d1b80000052281_switch # Rainbow Light + - service: light.turn_on + entity_id: light.0xe20db9fffe003637_light # Skylar's Lamp - service: scene.turn_on entity_id: scene.jeff_light_on - service: script.twitter_notify @@ -133,9 +135,9 @@ state: 'off' action: - service: switch.turn_on - entity_id: switch.rainbow_light_3 + entity_id: switch.0xf0d1b80000052281_switch # Rainbow Light - service: light.turn_on - entity_id: light.table_lamp_2 + entity_id: light.0xe20db9fffe003637_light - service: alarm_control_panel.alarm_arm_away entity_id: alarm_control_panel.ah_base_station - id: jeff_lights_out @@ -238,7 +240,7 @@ - service: switch.turn_off entity_id: switch.incense - service: switch.turn_off - entity_id: switch.artemis_2 + entity_id: switch.artemis - service: light.turn_off data: entity_id: light.kitchen_cabinet_lights @@ -456,7 +458,7 @@ data_template: time: > {% if states.binary_sensor.workday_sensor.state == 'on' %} - 05:15 + 04:30 {% else %} 07:15 {% endif %} diff --git a/binary_sensors/calendar.yaml b/config/binary_sensors/calendar.yaml similarity index 100% rename from binary_sensors/calendar.yaml rename to config/binary_sensors/calendar.yaml diff --git a/config/binary_sensors/doors.yaml b/config/binary_sensors/doors.yaml new file mode 100755 index 0000000..238bb6a --- /dev/null +++ b/config/binary_sensors/doors.yaml @@ -0,0 +1,42 @@ +- platform: mqtt + name: "Back Door" + state_topic: "zwave2mqtt/nodeID_28/48/1/0" + payload_on: "open" + payload_off: "closed" + device_class: door +- platform: mqtt + name: "Garage Door" + state_topic: "zwave2mqtt/nodeID_16/48/1/0" + payload_on: "true" + payload_off: "false" + device_class: garage_door +- platform: mqtt + name: "Front Door" + state_topic: "zwave2mqtt/nodeID_27/48/1/0" + payload_on: "open" + payload_off: "closed" + device_class: door +- platform: mqtt + name: "Laundry Room Door" + state_topic: "zwave2mqtt/nodeID_26/48/1/0" + payload_on: "true" + payload_off: "false" + device_class: door +- platform: mqtt + name: "Attic Door" # Dome Door Sensor + state_topic: "zwave2mqtt/nodeID_18/48/1/0" + payload_on: "true" + payload_off: "false" + device_class: door +- platform: mqtt + name: "Side Door" # Dome Door Sensor + state_topic: "zwave2mqtt/side_door/48/1/0" + payload_on: "true" + payload_off: "false" + device_class: door +- platform: mqtt + name: "Washer Door" + state_topic: "zwave2mqtt/washer_door/48/1/0" + payload_on: "true" + payload_off: "false" + device_class: door \ No newline at end of file diff --git a/config/binary_sensors/motion.yaml b/config/binary_sensors/motion.yaml new file mode 100755 index 0000000..65b1712 --- /dev/null +++ b/config/binary_sensors/motion.yaml @@ -0,0 +1,13 @@ +- platform: mqtt + name: "Garage Motion" # Dome Motion Sensor + state_topic: "zwave2mqtt/garage_motion/48/1/0" + payload_on: "true" + payload_off: "false" + device_class: motion + +# - platform: command_line +# name: vlc player +# command: 'pidof vlc | wc -l' +# payload_on: 1 +# payload_off: 0 +# scan_interval: 10 \ No newline at end of file diff --git a/config/configuration.yaml b/config/configuration.yaml new file mode 100644 index 0000000..c31124a --- /dev/null +++ b/config/configuration.yaml @@ -0,0 +1,187 @@ +homeassistant: + name: Home + latitude: !secret MY_LATITUDE + longitude: !secret MY_LONGITUDE + elevation: 315 + unit_system: imperial + time_zone: America/New_York + customize: !include customize.yaml + auth_providers: + - type: homeassistant + packages: !include_dir_named packages + +# Configure a default setup of Home Assistant (frontend, api, etc) +default_config: + +# Uncomment this if you are using SSL/TLS, running in Docker container, etc. +http: + base_url: !secret ahsl_base_url + ssl_certificate: !secret ahsl_ssl_cert + ssl_key: !secret ahsl_ssl_key + +ssdp: + +zeroconf: + +system_health: + +mobile_app: + +person: + +frontend: + themes: !include_dir_merge_named themes + +# Text to speech +# tts: +# - platform: google_translate + +cloud: + +wemo: + discovery: true + +weather: + - platform: darksky + api_key: !secret darksky_api + name: Grayson + +conversation: + +device_tracker: + # - platform: icloud + # username: !secret ICLOUD_USER + # password: !secret ICLOUD_PASS + # track_new_devices: yes + # - platform: owntracks + # + # - platform: eero_tracker + # consider_home: 300 + # interval_seconds: 60 + # track_new_devices: yes + # only_macs: "d0:c5:f3:80:50:5e, f4:31:c3:84:1d:d1, 08:74:02:CC:C4:97, 5C:F5:DA:9B:5A:A2, 34:7C:25:CC:9D:0F, 64:52:99:93:F1:B3" + + +google: + client_id: !secret google_client_id + client_secret: !secret google_client_secret + +arlo: + username: !secret arlo_user + password: !secret arlo_pass + +alarm_control_panel: + - platform: arlo + home_mode_name: home + away_mode_name: armed + +discovery: + ignore: + - igd + +updater: + include_used_components: true + +sun: + +recorder: + #db_url: sqlite:///data/home-assistant_v2.db + purge_keep_days: 2 + exclude: + domains: + - automation + - weblink + - updater + entities: + - sun.sun # Don't record sun data + - sensor.last_boot # Comes from 'systemmonitor' sensor platform + - sensor.date + + +logbook: + include: + domains: + - media_player + - automation + - script + +logger: + default: warning + #logs: + + # homeassistant.components.sensor.alpha_vantage: debug + + +history: + include: + domains: + - sensor + - switch + - media_player + - light + +camera: + - platform: mjpeg + name: Garage Door Cam + mjpeg_url: !secret garage_cam + - platform: arlo + ffmpeg_arguments: '-pred 1 -q:v 2' + +ffmpeg: + ffmpeg_bin: /usr/bin/ffmpeg + +life360: + accounts: + - username: !secret life360_username + password: !secret life360_password + +python_script: + +ecobee: + api_key: !secret ecobee_api + +map: + +wwlln: + radius: 75 + latitude: !secret MY_LATITUDE + longitude: !secret MY_LONGITUDE + +tplink: + discovery: false + switch: + - host: 192.168.7.105 + - host: 192.168.7.107 + +ifttt: + key: !secret IFTTT_API_KEY + +media_player: + - platform: spotify + client_id: !secret spotify_client + client_secret: !secret spotify_secret + +group: !include groups.yaml +# automation: !include automations.yaml +# script: !include scripts.yaml + + +### Includes ### +alert: !include_dir_merge_named alerts/ +automation: !include automations.yaml +script: !include_dir_merge_named scripts +#group: !include groups.yaml +#automation: !include automations.yaml +sensor: !include_dir_merge_list sensors +binary_sensor: !include_dir_merge_list binary_sensors +#light: !include_dir_merge_list lights +light: !include lights.yaml +#switch: !include_dir_merge_list switches +switch: !include switches.yaml +#script: !include_dir_merge_named scripts +#intent_script: !include intents/intents.yaml +scene: !include scenes.yaml +input_select: !include input_select.yaml +input_boolean: !include input_boolean.yaml +input_datetime: !include input_datetime.yaml +zone: !include zones.yaml diff --git a/config/custom_components/amazon_polly/_inti_.py b/config/custom_components/amazon_polly/_inti_.py new file mode 100755 index 0000000..1843c13 --- /dev/null +++ b/config/custom_components/amazon_polly/_inti_.py @@ -0,0 +1 @@ +"""Support for Amazon Polly integration.""" \ No newline at end of file diff --git a/config/custom_components/amazon_polly/tts.py b/config/custom_components/amazon_polly/tts.py new file mode 100755 index 0000000..b3f59a3 --- /dev/null +++ b/config/custom_components/amazon_polly/tts.py @@ -0,0 +1,243 @@ +"""Support for the Amazon Polly text to speech service.""" +import logging +import boto3 + +import voluptuous as vol + +from homeassistant.components.tts import PLATFORM_SCHEMA, Provider +import homeassistant.helpers.config_validation as cv + +_LOGGER = logging.getLogger(__name__) + +CONF_REGION = "region_name" +CONF_ACCESS_KEY_ID = "aws_access_key_id" +CONF_SECRET_ACCESS_KEY = "aws_secret_access_key" +CONF_PROFILE_NAME = "profile_name" +ATTR_CREDENTIALS = "credentials" + +DEFAULT_REGION = "us-east-1" +SUPPORTED_REGIONS = [ + "us-east-1", + "us-east-2", + "us-west-1", + "us-west-2", + "ca-central-1", + "eu-west-1", + "eu-central-1", + "eu-west-2", + "eu-west-3", + "ap-southeast-1", + "ap-southeast-2", + "ap-northeast-2", + "ap-northeast-1", + "ap-south-1", + "sa-east-1", +] + +CONF_ENGINE = "engine" +CONF_VOICE = "voice" +CONF_OUTPUT_FORMAT = "output_format" +CONF_SAMPLE_RATE = "sample_rate" +CONF_TEXT_TYPE = "text_type" + +SUPPORTED_VOICES = [ + "Zhiyu", # Chinese + "Mads", + "Naja", # Danish + "Ruben", + "Lotte", # Dutch + "Russell", + "Nicole", # English Australian + "Brian", + "Amy", + "Emma", # English + "Aditi", + "Raveena", # English, Indian + "Joey", + "Justin", + "Matthew", + "Ivy", + "Joanna", + "Kendra", + "Kimberly", + "Salli", # English + "Geraint", # English Welsh + "Mathieu", + "Celine", + "Lea", # French + "Chantal", # French Canadian + "Hans", + "Marlene", + "Vicki", # German + "Aditi", # Hindi + "Karl", + "Dora", # Icelandic + "Giorgio", + "Carla", + "Bianca", # Italian + "Takumi", + "Mizuki", # Japanese + "Seoyeon", # Korean + "Liv", # Norwegian + "Jacek", + "Jan", + "Ewa", + "Maja", # Polish + "Ricardo", + "Vitoria", # Portuguese, Brazilian + "Cristiano", + "Ines", # Portuguese, European + "Carmen", # Romanian + "Maxim", + "Tatyana", # Russian + "Enrique", + "Conchita", + "Lucia", # Spanish European + "Mia", # Spanish Mexican + "Miguel", + "Penelope", # Spanish US + "Astrid", # Swedish + "Filiz", # Turkish + "Gwyneth", # Welsh +] + +SUPPORTED_OUTPUT_FORMATS = ["mp3", "ogg_vorbis", "pcm"] + +SUPPORTED_ENGINES = ["neural", "standard"] + +SUPPORTED_SAMPLE_RATES = ["8000", "16000", "22050", "24000"] + +SUPPORTED_SAMPLE_RATES_MAP = { + "mp3": ["8000", "16000", "22050", "24000"], + "ogg_vorbis": ["8000", "16000", "22050"], + "pcm": ["8000", "16000"], +} + +SUPPORTED_TEXT_TYPES = ["text", "ssml"] + +CONTENT_TYPE_EXTENSIONS = {"audio/mpeg": "mp3", "audio/ogg": "ogg", "audio/pcm": "pcm"} + +DEFAULT_ENGINE = "standard" +DEFAULT_VOICE = "Joanna" +DEFAULT_OUTPUT_FORMAT = "mp3" +DEFAULT_TEXT_TYPE = "text" + +DEFAULT_SAMPLE_RATES = {"mp3": "22050", "ogg_vorbis": "22050", "pcm": "16000"} + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( + { + vol.Optional(CONF_REGION, default=DEFAULT_REGION): vol.In(SUPPORTED_REGIONS), + vol.Inclusive(CONF_ACCESS_KEY_ID, ATTR_CREDENTIALS): cv.string, + vol.Inclusive(CONF_SECRET_ACCESS_KEY, ATTR_CREDENTIALS): cv.string, + vol.Exclusive(CONF_PROFILE_NAME, ATTR_CREDENTIALS): cv.string, + vol.Optional(CONF_VOICE, default=DEFAULT_VOICE): vol.In(SUPPORTED_VOICES), + vol.Optional(CONF_ENGINE, default=DEFAULT_ENGINE): vol.In(SUPPORTED_ENGINES), + vol.Optional(CONF_OUTPUT_FORMAT, default=DEFAULT_OUTPUT_FORMAT): vol.In( + SUPPORTED_OUTPUT_FORMATS + ), + vol.Optional(CONF_SAMPLE_RATE): vol.All( + cv.string, vol.In(SUPPORTED_SAMPLE_RATES) + ), + vol.Optional(CONF_TEXT_TYPE, default=DEFAULT_TEXT_TYPE): vol.In( + SUPPORTED_TEXT_TYPES + ), + } +) + + +def get_engine(hass, config): + """Set up Amazon Polly speech component.""" + output_format = config.get(CONF_OUTPUT_FORMAT) + sample_rate = config.get(CONF_SAMPLE_RATE, DEFAULT_SAMPLE_RATES[output_format]) + if sample_rate not in SUPPORTED_SAMPLE_RATES_MAP.get(output_format): + _LOGGER.error( + "%s is not a valid sample rate for %s", sample_rate, output_format + ) + return None + + config[CONF_SAMPLE_RATE] = sample_rate + + profile = config.get(CONF_PROFILE_NAME) + + if profile is not None: + boto3.setup_default_session(profile_name=profile) + + aws_config = { + CONF_REGION: config.get(CONF_REGION), + CONF_ACCESS_KEY_ID: config.get(CONF_ACCESS_KEY_ID), + CONF_SECRET_ACCESS_KEY: config.get(CONF_SECRET_ACCESS_KEY), + } + + del config[CONF_REGION] + del config[CONF_ACCESS_KEY_ID] + del config[CONF_SECRET_ACCESS_KEY] + + polly_client = boto3.client("polly", **aws_config) + + supported_languages = [] + + all_voices = {} + + all_voices_req = polly_client.describe_voices() + + for voice in all_voices_req.get("Voices"): + all_voices[voice.get("Id")] = voice + if voice.get("LanguageCode") not in supported_languages: + supported_languages.append(voice.get("LanguageCode")) + + return AmazonPollyProvider(polly_client, config, supported_languages, all_voices) + + +class AmazonPollyProvider(Provider): + """Amazon Polly speech api provider.""" + + def __init__(self, polly_client, config, supported_languages, all_voices): + """Initialize Amazon Polly provider for TTS.""" + self.client = polly_client + self.config = config + self.supported_langs = supported_languages + self.all_voices = all_voices + self.default_voice = self.config.get(CONF_VOICE) + self.name = "Amazon Polly" + + @property + def supported_languages(self): + """Return a list of supported languages.""" + return self.supported_langs + + @property + def default_language(self): + """Return the default language.""" + return self.all_voices.get(self.default_voice).get("LanguageCode") + + @property + def default_options(self): + """Return dict include default options.""" + return {CONF_VOICE: self.default_voice} + + @property + def supported_options(self): + """Return a list of supported options.""" + return [CONF_VOICE] + + def get_tts_audio(self, message, language=None, options=None): + """Request TTS file from Polly.""" + voice_id = options.get(CONF_VOICE, self.default_voice) + voice_in_dict = self.all_voices.get(voice_id) + if language != voice_in_dict.get("LanguageCode"): + _LOGGER.error("%s does not support the %s language", voice_id, language) + return None, None + + resp = self.client.synthesize_speech( + Engine=self.config[CONF_ENGINE], + OutputFormat=self.config[CONF_OUTPUT_FORMAT], + SampleRate=self.config[CONF_SAMPLE_RATE], + Text=message, + TextType=self.config[CONF_TEXT_TYPE], + VoiceId=voice_id, + ) + + return ( + CONTENT_TYPE_EXTENSIONS[resp.get("ContentType")], + resp.get("AudioStream").read(), + ) \ No newline at end of file diff --git a/config/custom_components/nws_alerts/__init__.py b/config/custom_components/nws_alerts/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/config/custom_components/nws_alerts/sensor.py b/config/custom_components/nws_alerts/sensor.py new file mode 100755 index 0000000..de94c57 --- /dev/null +++ b/config/custom_components/nws_alerts/sensor.py @@ -0,0 +1,187 @@ +''' +--------------------------------------------------------- +NWS Alerts +--------------------------------------------------------- +VERSION: 0.0.2 +Forum: https://community.home-assistant.io/t/severe-weather-alerts-from-the-us-national-weather-service/71853 + +API Documentation +--------------------------------------------------------- +https://www.weather.gov/documentation/services-web-api +https://forecast-v3.weather.gov/documentation +--------------------------------------------------------- +''' + +import requests +import logging +import voluptuous as vol +from datetime import timedelta +from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.const import CONF_NAME, ATTR_ATTRIBUTION +from homeassistant.helpers import config_validation as cv +from homeassistant.helpers.entity import Entity +from homeassistant.util import Throttle + + +API_ENDPOINT = 'https://api.weather.gov' +USER_AGENT = 'Home Assistant' +DEFAULT_ICON = 'mdi:alert' +MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=1) +_LOGGER = logging.getLogger(__name__) +DEFAULT_NAME = 'NWS Alerts' +CONF_ZONE_ID = 'zone_id' +ZONE_ID = '' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_ZONE_ID): cv.string, + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, +}) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the sensor platform.""" + name = config.get(CONF_NAME, DEFAULT_NAME) + zone_id = config.get(CONF_ZONE_ID) + add_devices([NWSAlertSensor(name, zone_id)]) + + +class NWSAlertSensor(Entity): + """Representation of a Sensor.""" + + def __init__(self, name, zone_id): + """Initialize the sensor.""" + self._name = name + self._icon = DEFAULT_ICON + self._state = 0 + self._event = None + self._display_desc = None + self._spoken_desc = None + self._zone_id = zone_id.replace(' ', '') + self.update() + + @property + def name(self): + """Return the name of the sensor.""" + return self._name + + @property + def icon(self): + """Return the icon to use in the frontend, if any.""" + return self._icon + + @property + def state(self): + """Return the state of the sensor.""" + return self._state + + @property + def device_state_attributes(self): + """Return the state message.""" + attributes = {"title": self._event, + "display_desc": self._display_desc, + "spoken_desc": self._spoken_desc + } + + return attributes + + @Throttle(MIN_TIME_BETWEEN_UPDATES) + def update(self): + """Fetch new state data for the sensor. + This is the only method that should fetch new data for Home Assistant. + """ + values = self.get_state() + self._state = values['state'] + self._event = values['event'] + self._display_desc = values['display_desc'] + self._spoken_desc = values['spoken_desc'] + + def get_state(self): + values = {'state': 0, + 'event': None, + 'display_desc': None, + 'spoken_desc': None + } + + headers = {'User-Agent': USER_AGENT, + 'Accept': 'application/ld+json' + } + + url = '%s/alerts/active/count' % API_ENDPOINT + r = requests.get(url, headers=headers) + _LOGGER.debug("getting state, %s", url) + if r.status_code == 200: + if 'zones' in r.json(): + for zone in self._zone_id.split(','): + if zone in r.json()['zones']: + values = self.get_alerts() + break + + return values + + def get_alerts(self): + values = {'state': 0, + 'event': None, + 'display_desc': None, + 'spoken_desc': None + } + + headers = {'User-Agent': USER_AGENT, + 'Accept': 'application/geo+json' + } + url = '%s/alerts/active?zone=%s' % (API_ENDPOINT, self._zone_id) + r = requests.get(url, headers=headers) + _LOGGER.debug("getting alert, %s", url) + if r.status_code == 200: + events = [] + headlines = [] + display_desc = '' + spoken_desc = '' + features = r.json()['features'] + for alert in features: + event = alert['properties']['event'] + if 'NWSheadline' in alert['properties']['parameters']: + headline = alert['properties']['parameters']['NWSheadline'][0] + else: + headline = event + + description = alert['properties']['description'] + instruction = alert['properties']['instruction'] + + if event in events: + continue + + events.append(event) + headlines.append(headline) + + if display_desc != '': + display_desc += '\n\n' + + display_desc += '%s\n%s\n%s\n%s' % (event, headline, description, instruction) + + if headlines: + num_headlines = len(headlines) + i = 0 + for headline in headlines: + i += 1 + if spoken_desc != '': + if i == num_headlines: + spoken_desc += ' and a ' + else: + spoken_desc += ', a ' + + spoken_desc += headline + + if len(events) > 0: + event_str = '' + for item in events: + if event_str != '': + event_str += ' - ' + event_str += item + + values['state'] = len(events) + values['event'] = event_str + values['display_desc'] = display_desc + values['spoken_desc'] = spoken_desc + + return values + diff --git a/customize.yaml b/config/customize.yaml similarity index 100% rename from customize.yaml rename to config/customize.yaml diff --git a/groups.yaml b/config/groups.yaml similarity index 92% rename from groups.yaml rename to config/groups.yaml index 116833f..3eec8ca 100755 --- a/groups.yaml +++ b/config/groups.yaml @@ -58,6 +58,6 @@ Disney Audio: - input_boolean.happy_ever_after rgb_lr: - - light.tower_lamp_2 - - light.front_door_lamp - - light.living_room_lamp + - light.0xb0ce18140003608a_light_2 + - light.0xb0ce181400051b4c_light_2 + - light.0xb0ce181400051072_light_2 diff --git a/input_boolean.yaml b/config/input_boolean.yaml similarity index 99% rename from input_boolean.yaml rename to config/input_boolean.yaml index 754ce8c..521f8ae 100755 --- a/input_boolean.yaml +++ b/config/input_boolean.yaml @@ -146,5 +146,3 @@ clean_fish_tank: heartworm: name: Heartworm icon: mdi:dog-side - - diff --git a/input_datetime.yaml b/config/input_datetime.yaml similarity index 100% rename from input_datetime.yaml rename to config/input_datetime.yaml diff --git a/input_select.yaml b/config/input_select.yaml similarity index 100% rename from input_select.yaml rename to config/input_select.yaml diff --git a/config/lights.yaml b/config/lights.yaml new file mode 100644 index 0000000..25a568e --- /dev/null +++ b/config/lights.yaml @@ -0,0 +1,82 @@ +# Living Room +# Sengled LED Lights +- platform: mqtt + name: "Tower Lamp" + state_topic: "smartthings/Tower Lamp/switch" + command_topic: "smartthings/Tower Lamp/switch" + brightness_state_topic: "smartthings/Tower Lamp/level" + brightness_command_topic: "smartthings/Tower Lamp/level" + color_temp_command_topic: "smartthings/Tower Lamp/colorTemperature" + color_temp_state_topic: "smartthings/Tower Lamp/colorTemperature" + brightness_scale: 101 + payload_on: "on" + payload_off: "off" + retain: true + +- platform: mqtt + name: "Front Lamp" + state_topic: "smartthings/Front Lamp/switch" + command_topic: "smartthings/Front Lamp/switch" + brightness_state_topic: "smartthings/Front Lamp/level" + brightness_command_topic: "smartthings/Front Lamp/level" + brightness_scale: 101 + payload_on: "on" + payload_off: "off" + retain: true + +- platform: mqtt + name: "Front Door Lamp" + state_topic: "smartthings/Front Door Lamp/switch" + command_topic: "smartthings/Front Door Lamp/switch" + brightness_state_topic: "smartthings/Front Door Lamp/level" + brightness_command_topic: "smartthings/Front Door Lamp/level" + brightness_scale: 101 + payload_on: "on" + payload_off: "off" + retain: true + + +# Bedroom + +- platform: mqtt + name: "Skylars Lamp" + state_topic: "smartthings/Skylars Lamp/switch" + command_topic: "smartthings/Skylars Lamp/switch" + brightness_state_topic: "smartthings/Skylars Lamp/level" + brightness_command_topic: "smartthings/Skylars Lamp/level" + brightness_scale: 101 + payload_on: "on" + payload_off: "off" + retain: true + +# Outside +- platform: mqtt + name: "Side Door Light" + command_topic: "zwave2mqtt/nodeID_29/38/1/0/set" + brightness_command_topic: "zwave2mqtt/nodeID_29/38/1/0/set" + brightness_scale: 99 + brightness_state_topic: "zwave2mqtt/nodeID_29/38/1/0" + on_command_type: "brightness" + payload_off: 0 + +# Kitchen + +- platform: mqtt + name: "Kitchen Cabinets" + command_topic: "zwave2mqtt/kitchen_cabinets/38/1/0/set" + brightness_command_topic: "zwave2mqtt/kitchen_cabinets/38/1/0/set" + brightness_scale: 99 + brightness_state_topic: "zwave2mqtt/kitchen_cabinets/38/1/0" + on_command_type: "brightness" + payload_off: 0 + retain: true + +- platform: mqtt + name: "Kitchen Cabinet Lights" + command_topic: "zwave2mqtt/kitchen_strip/38/1/0/set" + brightness_command_topic: "zwave2mqtt/kitchen_strip/38/1/0/set" + brightness_scale: 99 + brightness_state_topic: "zwave2mqtt/kitchen_strip/38/1/0" + on_command_type: "brightness" + payload_off: 0 + retain: true \ No newline at end of file diff --git a/packages/announcements.yaml b/config/packages/announcements.yaml similarity index 100% rename from packages/announcements.yaml rename to config/packages/announcements.yaml diff --git a/packages/disney.yaml b/config/packages/disney.yaml similarity index 82% rename from packages/disney.yaml rename to config/packages/disney.yaml index dc6a5e8..c6f30aa 100755 --- a/packages/disney.yaml +++ b/config/packages/disney.yaml @@ -67,7 +67,7 @@ automation: to: 'off' action: - service: media_player.media_stop - entity_id: media_player.ha_speaker + entity_id: media_player.theater - service: script.turn_on entity_id: script.kill_this_ride - id: illuminations_on @@ -123,7 +123,7 @@ automation: - service: script.turn_on entity_id: script.kill_this_ride - service: media_player.media_stop - entity_id: media_player.ha_speaker + entity_id: media_player.theater - id: happy_ever_after_on alias: Happy Ever After On initial_state: true @@ -145,7 +145,7 @@ automation: - service: script.turn_on entity_id: script.kill_this_ride - service: media_player.media_stop - entity_id: media_player.ha_speaker + entity_id: media_player.theater # ####################################### @@ -171,7 +171,7 @@ automation: # action: # - service: script.kill_this_ride # - service: media_player.media_stop - # entity_id: media_player.ha_speaker + # entity_id: media_player.theater # ####################################### @@ -196,7 +196,7 @@ automation: - service: script.turn_on entity_id: script.kill_this_ride - service: media_player.media_stop - entity_id: media_player.ha_speaker + entity_id: media_player.theater - id: boo_to_you_show_on alias: Boo To You Show On initial_state: true @@ -218,7 +218,7 @@ automation: - service: script.turn_on entity_id: script.kill_this_ride - service: media_player.media_stop - entity_id: media_player.ha_speaker + entity_id: media_player.theater - id: boo_to_you_on alias: Boo To You On initial_state: true @@ -240,7 +240,7 @@ automation: - service: script.turn_on entity_id: script.kill_this_ride - service: media_player.media_stop - entity_id: media_player.ha_speaker + entity_id: media_player.theater - id: holiday_wishes_on alias: Holiday Wishes On @@ -263,7 +263,7 @@ automation: - service: script.turn_on entity_id: script.kill_this_ride - service: media_player.media_stop - entity_id: media_player.ha_speaker + entity_id: media_player.theater - id: welcome_show_on alias: Welcome Show On @@ -286,7 +286,7 @@ automation: - service: script.turn_on entity_id: script.kill_this_ride - service: media_player.media_stop - entity_id: media_player.ha_speaker + entity_id: media_player.theater - id: american_adventure_on alias: American Adventure On @@ -309,7 +309,7 @@ automation: - service: script.turn_on entity_id: script.kill_this_ride - service: media_player.media_stop - entity_id: media_player.ha_speaker + entity_id: media_player.theater - id: springs_christmas_on alias: Disney Springs XMas On @@ -332,7 +332,7 @@ automation: - service: script.turn_on entity_id: script.kill_this_ride - service: media_player.media_stop - entity_id: media_player.ha_speaker + entity_id: media_player.theater - id: sleepy_hollow_readalong_on alias: Sleepy Hollow Readalong On @@ -355,7 +355,7 @@ automation: - service: script.turn_on entity_id: script.kill_this_ride - service: media_player.media_stop - entity_id: media_player.ha_speaker + entity_id: media_player.theater - id: move_dance_on alias: Move It Shake It On @@ -378,7 +378,7 @@ automation: - service: script.turn_on entity_id: script.kill_this_ride - service: media_player.media_stop - entity_id: media_player.ha_speaker + entity_id: media_player.theater - id: kill_show @@ -406,7 +406,7 @@ automation: to: 'off' action: - service: media_player.media_stop - entity_id: media_player.ha_speaker + entity_id: media_player.theater - service: scene.turn_on entity_id: scene.normal_livingroom_lighting - service: script.reset_show_inputs @@ -559,7 +559,7 @@ script: kill_this_ride: sequence: - service: media_player.media_stop - entity_id: media_player.ha_speaker + entity_id: media_player.theater - service: shell_command.alarm_off - service: shell_command.vlc_off - service: script.turn_off @@ -668,18 +668,18 @@ script: - condition: state entity_id: sensor.family_status state: Home - - service: shell_command.dance_it - # - service: media_player.turn_on - # entity_id: media_player.ha_speaker - # - service: media_player.volume_set - # data_template: - # entity_id: media_player.ha_speaker - # volume_level: .5 - # - service: media_player.play_media - # entity_id: media_player.ha_speaker - # data: - # media_content_id: http://192.168.7.40/audio/move_it_shake_dance_audio.mp3 - # media_content_type: "music" + # - service: shell_command.dance_it + - service: media_player.turn_on + entity_id: media_player.theater + - service: media_player.volume_set + data_template: + entity_id: media_player.theater + volume_level: .5 + - service: media_player.play_media + entity_id: media_player.theater + data: + media_content_id: http://192.168.7.40/audio/move_it_shake_dance_audio.mp3 + media_content_type: "music" american_adventure: sequence: - condition: state @@ -697,21 +697,21 @@ script: - condition: state entity_id: sensor.family_status state: Home - - service: shell_command.disney_springs_xmas + # - service: shell_command.disney_springs_xmas # - service: switch.turn_on # entity_id: switch.ha_speaker - # - service: media_player.turn_on - # entity_id: media_player.theater - # - service: media_player.volume_set - # data_template: - # entity_id: media_player.theater - # volume_level: > - # .5 - # - service: media_player.play_media - # entity_id: media_player.theater - # data: - # media_content_id: http://192.168.7.40/audio/Disney_Springs_Xmas_Loop.mp3.mp3 - # media_content_type: "music" + - service: media_player.turn_on + entity_id: media_player.theater + - service: media_player.volume_set + data_template: + entity_id: media_player.theater + volume_level: > + .5 + - service: media_player.play_media + entity_id: media_player.theater + data: + media_content_id: http://192.168.7.40/audio/Disney_Springs_Xmas_Loop.mp3.mp3 + media_content_type: "music" sleepy_hollow_readalong: sequence: - condition: state @@ -729,18 +729,18 @@ script: - condition: state entity_id: sensor.family_status state: Home - - service: shell_command.spaceship_earth_ride - # - service: media_player.turn_on - # entity_id: media_player.ha_speaker - # - service: media_player.volume_set - # data_template: - # entity_id: media_player.ha_speaker - # volume_level: .5 - # - service: media_player.play_media - # entity_id: media_player.ha_speaker - # data: - # media_content_id: http://192.168.7.40/audio/spaceship_earth_ride.mp3 - # media_content_type: "music" + # - service: shell_command.spaceship_earth_ride + - service: media_player.turn_on + entity_id: media_player.theater + - service: media_player.volume_set + data_template: + entity_id: media_player.theater + volume_level: .5 + - service: media_player.play_media + entity_id: media_player.theater + data: + media_content_id: http://192.168.7.40/audio/spaceship_earth_ride.mp3 + media_content_type: "music" welcome_to_magic_kingdom: sequence: - condition: state @@ -785,18 +785,18 @@ script: - condition: state entity_id: sensor.family_status state: Home - - service: shell_command.welcome_show - # - service: media_player.turn_on - # entity_id: media_player.ha_speaker - # - service: media_player.volume_set - # data_template: - # entity_id: media_player.ha_speaker - # volume_level: .5 - # - service: media_player.play_media - # entity_id: media_player.ha_speaker - # data: - # media_content_id: http://192.168.7.40/audio/welcome_show_crowd.mp3 - # media_content_type: "music" + # - service: shell_command.welcome_show + - service: media_player.turn_on + entity_id: media_player.theater + - service: media_player.volume_set + data_template: + entity_id: media_player.theater + volume_level: .5 + - service: media_player.play_media + entity_id: media_player.theater + data: + media_content_id: http://192.168.7.40/audio/welcome_show_crowd.mp3 + media_content_type: "music" holiday_wishes_preshow: sequence: - condition: state @@ -817,14 +817,14 @@ script: - condition: state entity_id: sensor.family_status state: Home - - service: shell_command.holiday_wishes - # - service: media_player.turn_on - # entity_id: media_player.ha_speaker - # - service: media_player.play_media - # entity_id: media_player.ha_speaker - # data: - # media_content_id: http://192.168.7.40/audio/wishes_5_min.mp3 - # media_content_type: "music" + # - service: shell_command.holiday_wishes + - service: media_player.turn_on + entity_id: media_player.theater + - service: media_player.play_media + entity_id: media_player.theater + data: + media_content_id: http://192.168.7.40/audio/wishes_5_min.mp3 + media_content_type: "music" boo_to_you_show: sequence: - condition: state @@ -833,14 +833,14 @@ script: - condition: state entity_id: sensor.family_status state: Home - - service: shell_command.boo_to_you - # - service: media_player.turn_on - # entity_id: media_player.ha_speaker - # - service: media_player.play_media - # entity_id: media_player.ha_speaker - # data: - # media_content_id: http://192.168.7.40/audio/boo_to_you_audio.mp3 - # media_content_type: "music" + # - service: shell_command.boo_to_you + - service: media_player.turn_on + entity_id: media_player.theater + - service: media_player.play_media + entity_id: media_player.theater + data: + media_content_id: http://192.168.7.40/audio/boo_to_you_audio.mp3 + media_content_type: "music" happy_ever_after_show: sequence: - condition: state @@ -849,14 +849,14 @@ script: - condition: state entity_id: sensor.family_status state: Home - - service: shell_command.happily_ever_after - # - service: media_player.turn_on - # entity_id: media_player.hass_speaker - # - service: media_player.play_media - # entity_id: media_player.hass_speaker - # data: - # media_content_id: http://192.168.7.40/audio/Happily_Ever_After_Audio.mp3 - # media_content_type: "music" + # - service: shell_command.happily_ever_after + - service: media_player.turn_on + entity_id: media_player.theater + - service: media_player.play_media + entity_id: media_player.theater + data: + media_content_id: http://192.168.7.40/audio/Happily_Ever_After_Audio.mp3 + media_content_type: "music" # boo_to_you: # sequence: # - condition: state @@ -867,9 +867,9 @@ script: # state: Home # #- service: shell_command.boo_to_you # - service: media_player.turn_on - # entity_id: media_player.ha_speaker + # entity_id: media_player.theater # - service: media_player.play_media - # entity_id: media_player.ha_speaker + # entity_id: media_player.theater # data: # media_content_id: http://192.168.7.40/audio/boo_to_you_audio.mp3 # media_content_type: "music" @@ -881,21 +881,21 @@ script: - condition: state entity_id: sensor.family_status state: Home - - service: shell_command.tiki_vol - - service: shell_command.tiki_room_audio - # - service: media_player.turn_on - # entity_id: media_player.ha_speaker - # - service: media_player.turn_on - # entity_id: media_player.ha_speaker - # - service: media_player.volume_set - # data_template: - # entity_id: media_player.ha_speaker - # volume_level: .5 - # - service: media_player.play_media - # entity_id: media_player.ha_speaker - # data: - # media_content_id: http://192.168.7.40/audio/tiki_room_audio.mp3 - # media_content_type: "music" + # - service: shell_command.tiki_vol + # - service: shell_command.tiki_room_audio + - service: media_player.turn_on + entity_id: media_player.theater + - service: media_player.turn_on + entity_id: media_player.theater + - service: media_player.volume_set + data_template: + entity_id: media_player.theater + volume_level: .5 + - service: media_player.play_media + entity_id: media_player.theater + data: + media_content_id: http://192.168.7.40/audio/tiki_room_audio.mp3 + media_content_type: "music" # happy_ever_after: # sequence: # - condition: state @@ -906,13 +906,13 @@ script: # state: Home # #- service: shell_command.happily_ever_after # - service: media_player.turn_on - # entity_id: media_player.ha_speaker + # entity_id: media_player.theater # - service: media_player.volume_set # data_template: - # entity_id: media_player.ha_speaker + # entity_id: media_player.theater # volume_level: .5 # - service: media_player.play_media - # entity_id: media_player.ha_speaker + # entity_id: media_player.theater # data: # media_content_id: http://192.168.7.40/audio/Happily_Ever_After_Audio.mp3 # media_content_type: "music" @@ -959,18 +959,18 @@ script: - condition: state entity_id: sensor.family_status state: Home - - service: shell_command.illuminations_audio - # - service: media_player.turn_on - # entity_id: media_player.ha_speaker - # - service: media_player.volume_set - # data_template: - # entity_id: media_player.ha_speaker - # volume_level: .5 - # - service: media_player.play_media - # entity_id: media_player.ha_speaker - # data: - # media_content_id: http://192.168.7.40/audio/illuminations.mp3 - # media_content_type: "music" + # - service: shell_command.illuminations_audio + - service: media_player.turn_on + entity_id: media_player.theater + - service: media_player.volume_set + data_template: + entity_id: media_player.theater + volume_level: .5 + - service: media_player.play_media + entity_id: media_player.theater + data: + media_content_id: http://192.168.7.40/audio/illuminations.mp3 + media_content_type: "music" - service: script.turn_on entity_id: script.illuminations_preshow - service: script.turn_on @@ -992,18 +992,18 @@ script: - condition: state entity_id: sensor.family_status state: Home - - service: shell_command.this_is_halloween + # - service: shell_command.this_is_halloween # - service: switch.turn_on # entity_id: switch.ha_speaker - # - service: media_player.turn_on - # entity_id: media_player.theater - # - service: media_player.volume_set - # data_template: - # entity_id: media_player.theater - # volume_level: > - # .5 - # - service: media_player.play_media - # entity_id: media_player.theater - # data: - # media_content_id: http://192.168.7.40/audio/This_is_Halloween.mp3 - # media_content_type: "music" \ No newline at end of file + - service: media_player.turn_on + entity_id: media_player.theater + - service: media_player.volume_set + data_template: + entity_id: media_player.theater + volume_level: > + .5 + - service: media_player.play_media + entity_id: media_player.theater + data: + media_content_id: http://192.168.7.40/audio/This_is_Halloween.mp3 + media_content_type: "music" \ No newline at end of file diff --git a/packages/events.yaml b/config/packages/events.yaml similarity index 100% rename from packages/events.yaml rename to config/packages/events.yaml diff --git a/packages/haunted_mansion_show.yaml b/config/packages/haunted_mansion_show.yaml old mode 100644 new mode 100755 similarity index 100% rename from packages/haunted_mansion_show.yaml rename to config/packages/haunted_mansion_show.yaml diff --git a/packages/holidays.yaml b/config/packages/holidays.yaml old mode 100644 new mode 100755 similarity index 93% rename from packages/holidays.yaml rename to config/packages/holidays.yaml index 7bc6a41..53cfd76 --- a/packages/holidays.yaml +++ b/config/packages/holidays.yaml @@ -195,4 +195,17 @@ script: - \ No newline at end of file +sensor: + - platform: rest + name: Halloween Countdown + resource: !secret WA_HALLOWEEN + value_template: "{{ (value|replace(' days', '')) | int }}" + unit_of_measurement: Days + scan_interval: 43200 + + - platform: rest + name: Christmas Countdown + resource: !secret WA_XMAS + value_template: "{{ (value|replace(' days', '')) | int }}" + unit_of_measurement: Days + scan_interval: 43200 diff --git a/packages/jarvis.yaml b/config/packages/jarvis.yaml similarity index 100% rename from packages/jarvis.yaml rename to config/packages/jarvis.yaml diff --git a/packages/notify.yaml b/config/packages/notify.yaml similarity index 98% rename from packages/notify.yaml rename to config/packages/notify.yaml index 4c35a4d..06e8db6 100755 --- a/packages/notify.yaml +++ b/config/packages/notify.yaml @@ -47,18 +47,6 @@ notify: platform: group services: - service: ios_katherinestonesiphone - - 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 @@ -231,17 +219,17 @@ script: retain: true - condition: template value_template: '{{ states.binary_sensor.quiet_time.state == "off" }}' - - condition: state - entity_id: binary_sensor.vlc_player - state: 'off' + # - condition: state + # entity_id: binary_sensor.vlc_player + # state: 'off' - condition: state entity_id: sensor.family_status state: 'Home' - condition: state entity_id: input_boolean.vacation_mode state: 'off' - - service: switch.turn_on - entity_id: switch.ha_speaker + # - service: switch.turn_on + # entity_id: switch.ha_speaker - service: media_player.turn_on entity_id: media_player.theater - service: media_player.volume_set diff --git a/packages/presence.yaml b/config/packages/presence.yaml similarity index 98% rename from packages/presence.yaml rename to config/packages/presence.yaml index a71ace7..d25066f 100755 --- a/packages/presence.yaml +++ b/config/packages/presence.yaml @@ -125,7 +125,7 @@ sensor: sensors: kat_home: value_template: >- - {{ is_state('device_tracker.katherinestonesiphone', 'home') + {{ is_state('device_tracker.iphone', 'home') or is_state('device_tracker.life360_kat_stone', 'home') }} - platform: template sensors: @@ -134,7 +134,7 @@ sensor: {{ is_state('device_tracker.jeffreystonesiphone', 'home') or is_state('device_tracker.hass_jeffsiphone', 'home') or is_state('device_tracker.life360_jeffrey_stone', 'home') - or is_state('device_tracker.katherinestonesiphone', 'home') + or is_state('device_tracker.iphone', 'home') or is_state('device_tracker.life360_kat_stone', 'home') or is_state('sensor.family_status', 'Home') }} @@ -370,8 +370,8 @@ automation: trigger: - platform: state entity_id: - - device_tracker.jeffreystonesiphone - - device_tracker.katherinestonesiphone + - person.jeffrey + - person.katherine from: 'not_home' to: 'home' condition: diff --git a/packages/reminders.yaml b/config/packages/reminders.yaml similarity index 100% rename from packages/reminders.yaml rename to config/packages/reminders.yaml diff --git a/packages/security.yaml b/config/packages/security.yaml similarity index 95% rename from packages/security.yaml rename to config/packages/security.yaml index c6850f5..32a2d1e 100755 --- a/packages/security.yaml +++ b/config/packages/security.yaml @@ -79,10 +79,10 @@ automation: at: '23:00:00' condition: - condition: state - entity_id: device_tracker.jeffreystonesiphone + entity_id: person.jeffrey state: home - condition: state - entity_id: device_tracker.katherinestonesiphone + entity_id: person.katherine state: home - condition: state entity_id: input_boolean.guest_mode @@ -145,10 +145,10 @@ automation: trigger: - platform: state entity_id: - - binary_sensor.front_door_contact_2 - - binary_sensor.laundry_room_door_contact_2 - - binary_sensor.attic_door_contact_2 - - binary_sensor.back_door_contact_2 + - binary_sensor.front_door + - binary_sensor.laundry_room_door + - binary_sensor.attic_door + - binary_sensor.back_door from: 'off' to: 'on' for: '00:01:00' @@ -194,11 +194,11 @@ automation: trigger: - platform: state entity_id: - - binary_sensor.front_door_contact_2 - - binary_sensor.laundry_room_door_contact_2 - - binary_sensor.back_door_contact_2 - - binary_sensor.side_door_contact_2 - - binary_sensor.garage_door_contact_2 + - binary_sensor.front_door + - binary_sensor.laundry_room_door + - binary_sensor.back_door + - binary_sensor.side_door + - binary_sensor.garage_door from: 'off' condition: - condition: state diff --git a/packages/space.yaml b/config/packages/space.yaml similarity index 100% rename from packages/space.yaml rename to config/packages/space.yaml diff --git a/packages/sysmon.yaml b/config/packages/sysmon.yaml similarity index 92% rename from packages/sysmon.yaml rename to config/packages/sysmon.yaml index 885d3f1..7046ce2 100755 --- a/packages/sysmon.yaml +++ b/config/packages/sysmon.yaml @@ -64,10 +64,16 @@ sensor: #command: "head -5 /home/homeassistant/.homeassistant/.HA_VERSION" - platform: version name: Released Version - source: pypi + source: pypi + - platform: version + name: Released Hassio Ver + source: hassio - 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 + command: "ls -sh /home/homeassistant/.homeassistant/home-assistant.log | cut -f1 -d ' '" + - platform: uptime + name: Time Online + unit_of_measurement: days diff --git a/packages/twitter.yaml b/config/packages/twitter.yaml similarity index 100% rename from packages/twitter.yaml rename to config/packages/twitter.yaml diff --git a/packages/usps.yaml b/config/packages/usps.yaml similarity index 100% rename from packages/usps.yaml rename to config/packages/usps.yaml diff --git a/packages/weather_alerts_nws.yaml b/config/packages/weather_alerts_nws.yaml similarity index 100% rename from packages/weather_alerts_nws.yaml rename to config/packages/weather_alerts_nws.yaml diff --git a/packages/weekday.yaml b/config/packages/weekday.yaml similarity index 100% rename from packages/weekday.yaml rename to config/packages/weekday.yaml diff --git a/config/packages/zigbee2mqtt.yaml b/config/packages/zigbee2mqtt.yaml new file mode 100755 index 0000000..adf77cd --- /dev/null +++ b/config/packages/zigbee2mqtt.yaml @@ -0,0 +1,65 @@ + +input_boolean: + zigbee_permit_join: + name: Allow devices to join + initial: off + icon: mdi:cellphone-wireless + +timer: + zigbee_permit_join: + name: Time remaining + duration: 600 # Updated this to the number of seconds you wish + +sensor: + - platform: mqtt + name: Bridge state + state_topic: "homeassistant/bridge/state" + icon: mdi:router-wireless + +automation: + - id: enable_zigbee_join + alias: Enable Zigbee joining + hide_entity: true + trigger: + platform: state + entity_id: input_boolean.zigbee_permit_join + to: 'on' + action: + - service: mqtt.publish + data: + topic: homeassistant/bridge/config/permit_join + payload: 'true' + - service: timer.start + data: + entity_id: timer.zigbee_permit_join + - id: disable_zigbee_join + alias: Disable Zigbee joining + trigger: + - entity_id: input_boolean.zigbee_permit_join + platform: state + to: 'off' + action: + - data: + payload: 'false' + topic: homeassistant/bridge/config/permit_join + service: mqtt.publish + - data: + entity_id: timer.zigbee_permit_join + service: timer.cancel + hide_entity: true + - id: disable_zigbee_join_timer + alias: Disable Zigbee joining by timer + hide_entity: true + trigger: + - platform: event + event_type: timer.finished + event_data: + entity_id: timer.zigbee_permit_join + action: + - service: mqtt.publish + data: + topic: homeassistant/bridge/config/permit_join + payload: 'false' + - service: input_boolean.turn_off + data: + entity_id: input_boolean.zigbee_permit_join \ No newline at end of file diff --git a/config/python_scripts/light_transistion.py b/config/python_scripts/light_transistion.py new file mode 100755 index 0000000..3cde481 --- /dev/null +++ b/config/python_scripts/light_transistion.py @@ -0,0 +1,66 @@ +# +# Script to fade lights in slowly +# Takes the following inputs +# entity_id = The light you want to fade in +# transition: = # Seconds to go from current to end brightness +# brightness: = # Brightness to end at +# brightness_pct: = # Brightness to end at as a percentage +# +entity_id = data.get('entity_id') +brightness = data.get('brightness', None) +brightness_pct = data.get('brightness_pct', None) + +if entity_id is not None and (brightness is not None or brightness_pct is not None): + light = hass.states.get(entity_id) + + start_level = light.attributes.get('brightness', 0) + transition = int(data.get('transition', 0)) + + """ Use brightness or convert brightness_pct """ + end_level = int(brightness) if brightness is not None else math.ceil( + float(brightness_pct) * 2.55) + + """ Calculate number of steps """ + steps = int(math.fabs((start_level - end_level))) + fadeout = True if start_level > end_level else False + + """ Calculate the delay time """ + delay = round(transition / steps, 3) + + """ Disable delay and increase stepping if delay < 3/4 second """ + if (delay < .750): + delay = 0 + steps = int(steps / 5) + step_by = 5 + else: + step_by = 1 + + logger.info('Setting brightness of ' + str(entity_id) + + ' from ' + str(start_level) + ' to ' + str(end_level) + + ' steps ' + str(steps) + ' delay ' + str(delay)) + + new_level = start_level + for x in range(steps): + current_level = light.attributes.get('brightness', 0) + if (fadeout and current_level < new_level): + break + elif (not fadeout and current_level > new_level): + break + else: + data = {"entity_id": entity_id, "brightness": new_level} + hass.services.call('light', 'turn_on', data) + if (fadeout): + new_level = new_level - step_by + else: + new_level = new_level + step_by + """ Do not sleep for 0 delay """ + if (delay > 0): + time.sleep(delay) + +""" Ensure light ends at the final state """ +if (end_level > 0): + data = {"entity_id": entity_id, "brightness": end_level} + hass.services.call('light', 'turn_on', data) +else: + data = {"entity_id": entity_id} + hass.services.call('light', 'turn_off', data) \ No newline at end of file diff --git a/python_scripts/special_events.py b/config/python_scripts/special_events.py old mode 100644 new mode 100755 similarity index 100% rename from python_scripts/special_events.py rename to config/python_scripts/special_events.py diff --git a/scenes.yaml b/config/scenes.yaml similarity index 89% rename from scenes.yaml rename to config/scenes.yaml index a03b9df..6dead1f 100755 --- a/scenes.yaml +++ b/config/scenes.yaml @@ -55,13 +55,13 @@ - name: dimished livingroom lighting entities: - light.tower_lamp_2: + light.0xb0ce18140003608a_light_2: state: on brightness: 40 color_temp: 369 - light.front_ldoor_amp: + light.0xb0ce181400051072_light_2: state: off - light.living_room_lamp: + light.0xb0ce181400051b4c_light_2: state: off switch.fireplace_lights: state: off @@ -97,15 +97,19 @@ switch.fireplace_lights: state: off +# light.0xb0ce18140003608a_light_2 = Tower Lamp +# light.0xb0ce181400051072_light_2 = Front Door Lamp +# light0xb0ce181400051b4c_light_2 = Table Lampo + - name: night time livingroom lighting entities: - light.tower_lamp_2: + light.0xb0ce18140003608a_light_2: state: on brightness: 10 color_temp: 369 - light.front_door_lamp: + light.0xb0ce181400051072_light_2: state: off - light.living_room_lamp: + light.0xb0ce181400051b4c_light_2: state: off switch.fireplace_lights: state: off @@ -165,31 +169,31 @@ - name: jeff light on entities: - light.jeff_lamp: + light.0xe20db9fffe004207_light: state: on brightness: 100 - name: jeff light off entities: - light.jeff_lamp: + light.0xe20db9fffe004207_light: state: off - name: jeff wake up entities: - light.jeff_lamp: + light.0xe20db9fffe004207_light: state: on brightness: 20 - name: jeff bedtime entities: - light.jeff_lamp: + light.0xe20db9fffe004207_light: state: on brightness: 40 - name: jeff night light entities: - light.jeff_lamp: + light.0xe20db9fffe004207_light: state: on brightness: 10 diff --git a/config/scripts.yaml b/config/scripts.yaml new file mode 100644 index 0000000..e69de29 diff --git a/scripts/appliances.yaml b/config/scripts/appliances.yaml old mode 100644 new mode 100755 similarity index 100% rename from scripts/appliances.yaml rename to config/scripts/appliances.yaml diff --git a/scripts/general.yaml b/config/scripts/general.yaml old mode 100644 new mode 100755 similarity index 97% rename from scripts/general.yaml rename to config/scripts/general.yaml index 756619e..83c7e05 --- a/scripts/general.yaml +++ b/config/scripts/general.yaml @@ -107,7 +107,7 @@ driveway_on: entity_id: switch.driveway_light service: switch.turn_on - data: - entity_id: light.side_door_light_3 + entity_id: light.side_door_light service: light.turn_on driveway_off: sequence: @@ -122,7 +122,7 @@ driveway_off: - service: switch.turn_off entity_id: switch.driveway_light - service: light.turn_off - entity_id: light.side_door_light_3 + entity_id: light.side_door_light chromecast_media_stop: sequence: - service: media_player.media_stop diff --git a/scripts/lights.yaml b/config/scripts/lights.yaml old mode 100644 new mode 100755 similarity index 100% rename from scripts/lights.yaml rename to config/scripts/lights.yaml diff --git a/scripts/spotify.yaml b/config/scripts/spotify.yaml old mode 100644 new mode 100755 similarity index 100% rename from scripts/spotify.yaml rename to config/scripts/spotify.yaml diff --git a/sensors/batteries.yaml b/config/sensors/batteries.yaml similarity index 76% rename from sensors/batteries.yaml rename to config/sensors/batteries.yaml index 107ab2e..d5cea1b 100755 --- a/sensors/batteries.yaml +++ b/config/sensors/batteries.yaml @@ -20,19 +20,31 @@ icon_template: '{%- if is_state("sensor.kat_iphone_batt", "unknown") %}mdi:battery-unknown{%- elif is_state_attr("device_tracker.katherinestonesiphone", "battery_status", "Charging") %}mdi:battery-charging{%- elif states.device_tracker.katherinestonesiphone.attributes.battery <= 5 %}mdi:battery-outline{%- elif states.device_tracker.katherinestonesiphone.attributes.battery >= 95 %}mdi:battery{% else %}mdi:battery-{{(states.device_tracker.katherinestonesiphone.attributes.battery|float / 10)|round*10}}{%- endif %}' - platform: mqtt name: "Front Door Battery" - state_topic: "smartthings/Front Door/battery" + state_topic: "zwave2mqtt/nodeID_27/128/1/0" - platform: mqtt name: "Laundry Door Battery" - state_topic: "smartthings/Laundry Room Door/battery" + state_topic: "zwave2mqtt/nodeID_26/128/1/0" - platform: mqtt name: "Kitchen Smoke Battery" - state_topic: "smartthings/Kitchen Smoke/battery" + state_topic: "zwave2mqtt/nodeID_19/128/1/0" - platform: mqtt name: "Attic Door Battery" - state_topic: "smartthings/Attic Door/battery" + state_topic: "zwave2mqtt/nodeID_18/128/1/0" - platform: mqtt name: "Washer Door Battery" - state_topic: "smartthings/Washer Door/battery" + state_topic: "zwave2mqtt/washer_door/128/1/0" - platform: mqtt name: "Back Door Battery" - state_topic: "smartthings/Back Door/battery" \ No newline at end of file + state_topic: "zwave2mqtt/nodeID_28/128/1/0" +- platform: mqtt + name: "Side Door Battery" + state_topic: "zwave2mqtt/side_door/128/1/0" +- platform: mqtt + name: "Garage Door Battery" + state_topic: "zwave2mqtt/nodeID_16/128/1/0" +- platform: mqtt + name: "Garage Motion Battery" + state_topic: "zwave2mqtt/garage_motion/128/1/0" +- platform: mqtt + name: "Dome Alarm" + state_topic: "zwave2mqtt/nodeID_21/128/1/0" \ No newline at end of file diff --git a/sensors/finance.yaml b/config/sensors/finance.yaml similarity index 100% rename from sensors/finance.yaml rename to config/sensors/finance.yaml diff --git a/sensors/github.yaml b/config/sensors/github.yaml similarity index 100% rename from sensors/github.yaml rename to config/sensors/github.yaml diff --git a/sensors/google_travel_time.yaml b/config/sensors/google_travel_time.yaml similarity index 100% rename from sensors/google_travel_time.yaml rename to config/sensors/google_travel_time.yaml diff --git a/sensors/house.yaml b/config/sensors/house.yaml similarity index 99% rename from sensors/house.yaml rename to config/sensors/house.yaml index c8ff8cc..89ac016 100755 --- a/sensors/house.yaml +++ b/config/sensors/house.yaml @@ -109,3 +109,4 @@ entity_id: [] value_template: >- {{ states.camera | list | count }} + diff --git a/config/sensors/power.yaml b/config/sensors/power.yaml new file mode 100755 index 0000000..ed2890a --- /dev/null +++ b/config/sensors/power.yaml @@ -0,0 +1,29 @@ +- platform: mqtt + name: "Washer" + state_topic: "zwave2mqtt/washer/50/1/0" + device_class: "power" + unit_of_measurement: "kWh" + +- platform: mqtt + name: "Washer Power 1" + state_topic: "zwave2mqtt/washer/49/1/4" + device_class: "power" + unit_of_measurement: "W" + +- platform: mqtt + name: "Washer_Power" + state_topic: "zwave2mqtt/washer/50/1/8" + device_class: "power" + unit_of_measurement: "W" + +- platform: mqtt + name: "Washer Power 3" + state_topic: "zwave2mqtt/washer/50/1/9" + device_class: "power" + unit_of_measurement: "W" + +- platform: mqtt + name: "Washer Power kwh" + state_topic: "zwave2mqtt/washer/50/1/1" + device_class: "power" + unit_of_measurement: "kWh" diff --git a/sensors/users.yaml b/config/sensors/users.yaml similarity index 100% rename from sensors/users.yaml rename to config/sensors/users.yaml diff --git a/sensors/weather.yaml b/config/sensors/weather.yaml similarity index 100% rename from sensors/weather.yaml rename to config/sensors/weather.yaml diff --git a/config/switches.yaml b/config/switches.yaml new file mode 100644 index 0000000..5a7def4 --- /dev/null +++ b/config/switches.yaml @@ -0,0 +1,138 @@ +# Living Room + +- platform: mqtt + name: "Incense" + state_topic: "zwave2mqtt/incense/37/1/0" + command_topic: "zwave2mqtt/incense/37/1/0/set" + payload_on: "true" + payload_off: "false" + +- platform: mqtt + name: "Living Room Fan" + state_topic: "zwave2mqtt/livingroom_fan/37/1/0" + command_topic: "zwave2mqtt/livingroom_fan/37/1/0/set" + payload_on: "true" + payload_off: "false" + +- platform: mqtt + name: "Fireplace Lights" + state_topic: "zwave2mqtt/fireplace_lights/37/1/0" + command_topic: "zwave2mqtt/fireplace_lights/37/1/0/set" + payload_on: "true" + payload_off: "false" + +# Notifications + +- platform: mqtt + name: "Text Notify Kat" + command_topic: "kat/notify/text" + state_topic: "kat/notify/text" + qos: 1 + payload_on: "on" + payload_off: "off" + retain: true + +- platform: mqtt + name: "Audibly Notify Kat" + command_topic: "kat/notify/audio" + state_topic: "kat/notify/audio" + qos: 1 + payload_on: "on" + payload_off: "off" + retain: true + +- platform: mqtt + name: "Text Notify Jeff" + command_topic: "jeff/notify/text" + state_topic: "jeff/notify/text" + qos: 1 + payload_on: "on" + payload_off: "off" + retain: true + +- platform: mqtt + name: "Audibly Notify Jeff" + command_topic: "jeff/notify/audio" + state_topic: "jeff/notify/audio" + qos: 1 + payload_on: "on" + payload_off: "off" + retain: true + +- platform: mqtt + name: "Text Notify House" + command_topic: "house/notify/text" + state_topic: "house/notify/text" + qos: 1 + payload_on: "on" + payload_off: "off" + retain: true + +- platform: mqtt + name: "Audibly Notify House" + command_topic: "house/notify/audio" + state_topic: "house/notify/audio" + qos: 1 + payload_on: "on" + payload_off: "off" + retain: true + + +# Outside + +- platform: mqtt + name: "Driveway Light" + state_topic: "zwave2mqtt/driveway_light/37/1/0" + command_topic: "zwave2mqtt/driveway_light/37/1/0/set" + payload_on: "true" + payload_off: "false" + +- platform: mqtt + name: "Front Porch" + state_topic: "zwave2mqtt/front_porch/37/1/0" + command_topic: "zwave2mqtt/front_porch/37/1/0/set" + payload_on: "true" + payload_off: "false" + +# Sonoff + +- platform: mqtt + name: "Rail Lights" + command_topic: "cmnd/sonoff/power" + state_topic: "stat/sonoff/POWER" + qos: 1 + payload_on: "ON" + payload_off: "OFF" + retain: true + +# Upstairs + +- platform: mqtt + name: "Upstairs Fan" + state_topic: "zwave2mqtt/upstairs_fan/37/1/0" + command_topic: "zwave2mqtt/upstairs_fan/37/1/0/set" + payload_on: "true" + payload_off: "false" + +- platform: mqtt + name: "Theater Power" + state_topic: "zwave2mqtt/theater_power/37/1/0" + command_topic: "zwave2mqtt/theater_power/37/1/0/set" + payload_on: "true" + payload_off: "false" + +- platform: mqtt + name: "Upstairs" + state_topic: "zwave2mqtt/upstairs_light/37/1/0" + command_topic: "zwave2mqtt/upstairs_light/37/1/0/set" + payload_on: "true" + payload_off: "false" + +# Appliance + +- platform: mqtt + name: "Washer" + state_topic: "zwave2mqtt/washer/37/1/0" + command_topic: "zwave2mqtt/washer/37/1/0/set" + payload_on: "true" + payload_off: "false" \ No newline at end of file diff --git a/templates/twitter_new_ha.yaml b/config/templates/twitter_new_ha.yaml similarity index 100% rename from templates/twitter_new_ha.yaml rename to config/templates/twitter_new_ha.yaml diff --git a/templates/twitter_snark.yaml b/config/templates/twitter_snark.yaml similarity index 100% rename from templates/twitter_snark.yaml rename to config/templates/twitter_snark.yaml diff --git a/templates/twitter_stats.yaml b/config/templates/twitter_stats.yaml similarity index 85% rename from templates/twitter_stats.yaml rename to config/templates/twitter_stats.yaml index be02ef1..51e4d15 100755 --- a/templates/twitter_stats.yaml +++ b/config/templates/twitter_stats.yaml @@ -3,14 +3,14 @@ {%- macro getRandomStat() -%} {{- [ "Thanks to Home Assistant and Amazon Polly and #AWS I have spoken for {{ states.sensor.speech_time.attributes.value }} in the last 7 days.", - "I am constantly monitoring Anmchorage House. For instance I know that the washer has ran for {{ states.sensor.washer_time.attributes.value }} in the last 7 days.", + "I am constantly monitoring Anchorage House. For instance I know that the washer has ran for {{ states.sensor.washer_time.attributes.value }} in the last 7 days.", "I am using {{ states.sensor.sensor_count.state }} sensors to power {{ states.sensor.automation_count.state}} automations and {{ states.sensor.script_count.state}} scripts to automate Anchorage House thanks to Home Assistant.", "My config on Github (https://github.com/thejeffreystone/home-assistant-configuration) has {{ states.sensor.home_assistant_configuration.attributes.stargazers}} stars and counting. Currently with {{ states.sensor.github_stats.attributes.open_issues }} open #Todo items.", "I am running Home Assistant version {{ states.sensor.installed_version.state }} (https://github.com/thejeffreystone/home-assistant-configuration)" "My configuration is at https://github.com/thejeffreystone/home-assistant-configuration and currently has {{ states.sensor.home_assistant_configuration.attributes.stargazers}} stargazers. You could be one too.", "My configuration is at https://github.com/thejeffreystone/home-assistant-configuration .The last commit was {{ states.sensor.home_assistant_configuration.attributes.latest_commit_message}}.", - "You can read about how I came to be and all the cool things I'm learning to do over at http://jeffreystone.net " + "You can watch videos about how I came to be and all the cool things I'm learning to do at https://www.youtube.com/channel/UCipZJ6748kd8TbelSxcvcVg " ] | random -}} {%- endmacro -%} {%- macro getTags() -%} diff --git a/www/ahlogo_bw.png b/config/www/ahlogo_bw.png old mode 100644 new mode 100755 similarity index 100% rename from www/ahlogo_bw.png rename to config/www/ahlogo_bw.png diff --git a/configuration.yaml b/configuration.yaml deleted file mode 100755 index fdc48df..0000000 --- a/configuration.yaml +++ /dev/null @@ -1,301 +0,0 @@ -homeassistant: - name: Home - latitude: !secret MY_LATITUDE - longitude: !secret MY_LONGITUDE - elevation: 315 - unit_system: imperial - time_zone: America/New_York - customize: !include customize.yaml - auth_providers: - - type: homeassistant - packages: !include_dir_named packages - -default_config: - -ssdp: - -zeroconf: - -system_health: - -mobile_app: - -person: - -frontend: - 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 - 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 - ip_ban_enabled: True - login_attempts_threshold: 3 - -config: - -cloud: - - -wemo: - discovery: true - - - -weather: - - platform: darksky - api_key: !secret darksky_api - name: Grayson - -conversation: - -device_tracker: - # - platform: icloud - # username: !secret ICLOUD_USER - # password: !secret ICLOUD_PASS - # track_new_devices: yes - # - platform: owntracks - # - # - platform: eero_tracker - # consider_home: 300 - # interval_seconds: 60 - # track_new_devices: yes - # only_macs: "d0:c5:f3:80:50:5e, f4:31:c3:84:1d:d1, 08:74:02:CC:C4:97, 5C:F5:DA:9B:5A:A2, 34:7C:25:CC:9D:0F, 64:52:99:93:F1:B3" - - -google: - client_id: !secret google_client_id - client_secret: !secret google_client_secret - -arlo: - username: !secret arlo_user - password: !secret arlo_pass - -alarm_control_panel: - - platform: arlo - home_mode_name: home - away_mode_name: armed - -discovery: - ignore: - - igd - -updater: - include_used_components: true - -sun: - -recorder: - #db_url: sqlite:///data/home-assistant_v2.db - purge_keep_days: 2 - exclude: - domains: - - automation - - weblink - - updater - entities: - - sun.sun # Don't record sun data - - sensor.last_boot # Comes from 'systemmonitor' sensor platform - - sensor.date - - -logbook: - include: - domains: - - media_player - - automation - - script - -logger: - default: warning - #logs: - - # homeassistant.components.sensor.alpha_vantage: debug - - -history: - include: - domains: - - sensor - - switch - - media_player - - light - -cast: - -# speedtestdotnet: - -mqtt: - broker: 192.168.7.67 - port: 1883 - username: !secret MQTT_USER - password: !secret MQTT_PASS - discovery: true - birth_message: - topic: 'hass/status' - payload: 'online' - will_message: - topic: 'hass/status' - payload: 'offline' - -camera: - - platform: mjpeg - name: Garage Door Cam - mjpeg_url: !secret garage_cam - - platform: arlo - ffmpeg_arguments: '-pred 1 -q:v 2' - -media_player: - - platform: vlc - name: hass_speaker - arguments: '--alsa-audio-device=hw:1,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 - -life360: - accounts: - - username: !secret life360_username - password: !secret life360_password - -media_extractor: - -### Includes ### -alert: !include_dir_merge_named alerts/ -group: !include groups.yaml -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 -intent_script: !include intents/intents.yaml -scene: !include scenes.yaml -input_select: !include input_select.yaml -input_boolean: !include input_boolean.yaml -input_datetime: !include input_datetime.yaml -zone: !include zones.yaml - -python_script: - -#duckdns: -# domain: !secret duckdns_domain -# access_token: !secret duckdns_token - -### Services - -# 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 - -ecobee: - api_key: !secret ecobee_api - -map: - -wwlln: - radius: 75 - latitude: !secret MY_LATITUDE - longitude: !secret MY_LONGITUDE - -tplink: - discovery: false - switch: - - host: 192.168.7.105 - - host: 192.168.7.107 - -# zwave: -# usb_path: /dev/ttyACM0 -# network_key: !secret zwave_key - -#googlehome: -# devices: -# - host: 192.168.7.97 - -ifttt: - key: !secret IFTTT_API_KEY - -### Custom Commands -shell_command: - alarm_off: pkill mpg123 - vlc_off: pkill vlc - 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: cvlc --play-and-exit /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: cvlc --play-and-exit /media/audio/Happily_Ever_After_Audio.mp3 - boo_to_you: cvlc --play-and-exit /media/audio/boo_to_you_audio.mp3 - haunted_mansion_ride: cvlc --play-and-exit /media/audio/haunted_mansion_ride.mp3 - holiday_wishes_preshow: mpg123 /media/audio/wishes_5_min.mp3 - holiday_wishes: cvlc --play-and-exit /media/audio/holidaywishes.mp3 - disney_springs_xmas: cvlc --play-and-exit /media/audio/disney_springs_xmas.mp3 - american_adventure: cvlc --play-and-exit /media/audio/The_American_Adventure.mp3 - welcome_show: cvlc --play-and-exit /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: cvlc --play-and-exit /media/audio/welcome_magic_kingdom.mp3 - welcome_show_crowd: cvlc --play-and-exit /media/audio/welcome_show_crowd.mp3 - spaceship_earth_ride: cvlc --play-and-exit /media/audio/spaceship_earth_ride.mp3 - this_is_halloween: cvlc --play-and-exit /media/audio/This_is_Halloween.mp3 - sleepy_hollow_audiobook: cvlc --play-and-exit /media/audio/the_legend_of_sleepy_hollow_read_along.mp3 - dance_it: cvlc --play-and-exit /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]% - normal_vol: amixer -c 0 set PCM 93% - tiki_vol: amixer -c 0 set PCM 95% - full_vol: amixer -c 0 set PCM 100% - reset_alexa_cookie: /home/homeassistant/bin/resetalexacookie - tiki_room_audio: cvlc --play-and-exit /media/audio/tiki_room_audio.mp3 - illuminations_audio: cvlc --play-and-exit /media/audio/illuminations.mp3 - mk_audio: cvlc --play-and-exit /media/audio/magic_kingdom.mp3 - usps: python /home/homeassistant/bin/usps.py - backup: python /home/homeassistant/bin/dropbox.py - - # haunted noises - - haunted_scream: mpg123 /media/audio/haunted/Scream.mp3 - haunted_raven: mpg123 /media/audio/haunted/RavenSound.mp3 - haunted_door: mpg123 /media/audio/haunted/OldDoorCreaking.mp3 - haunted_howling: mpg123 /media/audio/haunted/Howling.mp3 - haunted_seance_horn: mpg123 /media/audio/haunted/Haunted_Mansion_Seance_Horn.mp3 - haunted_piano: mpg123 /media/audio/haunted/Haunted_Mansion_Piano.mp3 - haunted_leotta: mpg123 /media/audio/haunted/Haunted_Mansion_Leotta.mp3 - haunted_harp: mpg123 /media/audio/haunted/Haunted_Mansion_Harp.mp3 - haunted_clock: mpg123 /media/audio/haunted/Haunted_Mansion_Clock.mp3 - haunted_ballroom: mpg123 /media/audio/haunted/Haunted_Mansion_Ballroom.mp3 - haunted_bells: mpg123 /media/audio/haunted/Jaunted_Bells-Chimming.mp3 - haunted_laugh: mpg123 /media/audio/haunted/Evil_Laugh.mp3 - haunted_door2: mpg123 /media/audio/haunted/CreakingDoorSpooky.mp3 - haunted_chains: mpg123 /media/audio/haunted/ChainsRattling.mp3 - haunted_laugh2: mpg123 /media/audio/haunted/BigLaugh.mp3 \ No newline at end of file diff --git a/lights/living_room.yaml b/lights/living_room.yaml deleted file mode 100755 index 7c52a51..0000000 --- a/lights/living_room.yaml +++ /dev/null @@ -1,42 +0,0 @@ -- platform: mqtt - name: "Tower Lamp" - state_topic: "smartthings/Tower Lamp/switch" - command_topic: "smartthings/Tower Lamp/switch" - brightness_state_topic: "smartthings/Tower Lamp/level" - brightness_command_topic: "smartthings/Tower Lamp/level" - color_temp_command_topic: "smartthings/Tower Lamp/colorTemperature" - color_temp_state_topic: "smartthings/Tower Lamp/colorTemperature" - brightness_scale: 101 - payload_on: "on" - payload_off: "off" - retain: true -- platform: mqtt - name: "Front Lamp" - state_topic: "smartthings/Front Lamp/switch" - command_topic: "smartthings/Front Lamp/switch" - brightness_state_topic: "smartthings/Front Lamp/level" - brightness_command_topic: "smartthings/Front Lamp/level" - brightness_scale: 101 - payload_on: "on" - payload_off: "off" - retain: true -- platform: mqtt - name: "Master Bedroom Lamp" - state_topic: "smartthings/Jeff Lamp/switch" - command_topic: "smartthings/Jeff Lamp/switch" - brightness_state_topic: "smartthings/Jeff Lamp/level" - brightness_command_topic: "smartthings/Jeff Lamp/level" - brightness_scale: 101 - payload_on: "on" - payload_off: "off" - retain: true -- platform: mqtt - name: "Side Door Light" - state_topic: "smartthings/Side Door Light/switch" - command_topic: "smartthings/Side Door Light/switch" - brightness_state_topic: "smartthings/Side Door Light/level" - brightness_command_topic: "smartthings/Side Door Light/level" - brightness_scale: 101 - payload_on: "on" - payload_off: "off" - retain: true \ No newline at end of file diff --git a/lights/skylars_room.yaml b/lights/skylars_room.yaml deleted file mode 100644 index 9a597fd..0000000 --- a/lights/skylars_room.yaml +++ /dev/null @@ -1,10 +0,0 @@ -- platform: mqtt - name: "Skylars Lamp" - state_topic: "smartthings/Skylars Lamp/switch" - command_topic: "smartthings/Skylars Lamp/switch" - brightness_state_topic: "smartthings/Skylars Lamp/level" - brightness_command_topic: "smartthings/Skylars Lamp/level" - brightness_scale: 101 - payload_on: "on" - payload_off: "off" - retain: true \ No newline at end of file diff --git a/sensors/power.yaml b/sensors/power.yaml deleted file mode 100755 index 0f1df1e..0000000 --- a/sensors/power.yaml +++ /dev/null @@ -1,3 +0,0 @@ -- platform: mqtt - name: "Washer" - state_topic: "smartthings/Washer/power" \ No newline at end of file diff --git a/sensors/speedtest.yaml b/sensors/speedtest.yaml deleted file mode 100755 index 949b5e9..0000000 --- a/sensors/speedtest.yaml +++ /dev/null @@ -1,23 +0,0 @@ -#- platform: speedtest -# scan_interval: -# hours: 6 -# 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" -- platform: statistics - name: Internet Test Down - entity_id: sensor.network_down - max_age: - days: 7 -- platform: statistics - name: Internet Test Up - entity_id: sensor.network_up - max_age: - days: 7 diff --git a/switches/bedroom.yaml b/switches/bedroom.yaml deleted file mode 100755 index eee27ee..0000000 --- a/switches/bedroom.yaml +++ /dev/null @@ -1,8 +0,0 @@ -# - 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 deleted file mode 100755 index 7498181..0000000 --- a/switches/living_room.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# - platform: mqtt -# name: "Incense" -# state_topic: "smartthings/Incense/switch" -# command_topic: "smartthings/Incense/switch" -# payload_on: "on" -# payload_off: "off" -# retain: true -# - platform: mqtt -# name: "Living Room Fan" -# state_topic: "smartthings/Living Room Fan/switch" -# command_topic: "smartthings/Living Room Fan/switch" -# payload_on: "on" -# payload_off: "off" -# retain: true \ No newline at end of file diff --git a/switches/notifications.yaml b/switches/notifications.yaml deleted file mode 100755 index 9d09838..0000000 --- a/switches/notifications.yaml +++ /dev/null @@ -1,54 +0,0 @@ -- platform: mqtt - name: "Text Notify Kat" - command_topic: "kat/notify/text" - state_topic: "kat/notify/text" - qos: 1 - payload_on: "on" - payload_off: "off" - retain: true - -- platform: mqtt - name: "Audibly Notify Kat" - command_topic: "kat/notify/audio" - state_topic: "kat/notify/audio" - qos: 1 - payload_on: "on" - payload_off: "off" - retain: true - -- platform: mqtt - name: "Text Notify Jeff" - command_topic: "jeff/notify/text" - state_topic: "jeff/notify/text" - qos: 1 - payload_on: "on" - payload_off: "off" - retain: true - -- platform: mqtt - name: "Audibly Notify Jeff" - command_topic: "jeff/notify/audio" - state_topic: "jeff/notify/audio" - qos: 1 - payload_on: "on" - payload_off: "off" - retain: true - -- platform: mqtt - name: "Text Notify House" - command_topic: "house/notify/text" - state_topic: "house/notify/text" - qos: 1 - payload_on: "on" - payload_off: "off" - retain: true - -- platform: mqtt - name: "Audibly Notify House" - command_topic: "house/notify/audio" - state_topic: "house/notify/audio" - qos: 1 - payload_on: "on" - payload_off: "off" - retain: true - diff --git a/switches/sonoff.yaml b/switches/sonoff.yaml deleted file mode 100755 index 872cad7..0000000 --- a/switches/sonoff.yaml +++ /dev/null @@ -1,8 +0,0 @@ -- platform: mqtt - name: "Rail Lights" - command_topic: "cmnd/sonoff/power" - state_topic: "stat/sonoff/POWER" - qos: 1 - payload_on: "ON" - payload_off: "OFF" - retain: true diff --git a/switches/upstairs.yaml b/switches/upstairs.yaml deleted file mode 100755 index 3030e23..0000000 --- a/switches/upstairs.yaml +++ /dev/null @@ -1,7 +0,0 @@ -- platform: mqtt - name: "Upstairs Fan" - state_topic: "smartthings/Upstairs Fan/switch" - command_topic: "smartthings/Upstairs Fan/switch" - payload_on: "on" - payload_off: "off" - retain: true \ No newline at end of file diff --git a/ui-lovelace.yaml b/ui-lovelace.yaml deleted file mode 100644 index 9de0915..0000000 --- a/ui-lovelace.yaml +++ /dev/null @@ -1,241 +0,0 @@ -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