├── .gitignore ├── automations.yaml ├── configuration.yaml ├── custom_components └── hacs │ ├── iconset.js │ └── services.yaml ├── customize.yaml ├── includes ├── binary_sensor.yaml ├── camera.yaml ├── cover.yaml ├── device_tracker.yaml ├── google.yaml ├── google_assistant.yaml ├── group.yaml ├── input_number.yaml ├── input_select.yaml ├── joaoapps_join.yaml ├── media_player.yaml ├── mqtt.yaml ├── notify.yaml ├── panel_iframe.yaml.disabled ├── recorder.yaml ├── remote.yaml ├── rest_command.yaml ├── sensor │ ├── binary_sensor.yaml │ ├── calendar.yaml │ ├── cert.yaml │ ├── clock.yaml │ ├── command_line.yaml │ ├── denon_volume.yaml │ ├── harmony_current_activity.yaml │ ├── plex_recently_added.yaml │ ├── radarr_upcoming_media.yaml │ ├── shellyht.yaml │ ├── sonarr_upcoming_media.yaml │ └── trash.yaml ├── shell_command.yaml ├── switch.yaml ├── themes.yaml ├── themes.yaml.bak ├── timer.yaml ├── weather.yaml └── zone.yaml ├── scripts.yaml ├── themes ├── clear-dark │ └── clear-dark.yaml ├── material_dark_pink │ └── material_dark_pink.yaml └── slate │ └── slate.yaml └── www ├── bg.jpg ├── bg2.jpg ├── community ├── swipe-card │ └── swipe-card.js └── upcoming-media-card │ └── upcoming-media-card.js ├── custom-lovelace └── upcoming-media-card │ └── images │ └── plex │ ├── f14120.jpg │ ├── f14121.jpg │ ├── f14122.jpg │ ├── f14130.jpg │ ├── f14131.jpg │ ├── p14120.jpg │ ├── p14121.jpg │ ├── p14122.jpg │ ├── p14130.jpg │ └── p14131.jpg ├── custom_ui ├── beer-card.js ├── column-card.js ├── content-card-example.js ├── custom-weather-card.html ├── shopping-card.js ├── vertical-stack-in-card.js ├── weather-card.css └── weather-card.js ├── icons ├── media_icons │ ├── LHarmonyBG-Dark.jpg │ ├── LHarmonyBG-Dark.png │ ├── LHarmonyBG.jpg │ ├── LHarmonyBG2.jpg │ ├── LHarmonyBG_Dark.jpg │ ├── LHarmonyBG_Dark.png │ ├── arrow-down.png │ ├── arrow-left.png │ ├── arrow-right.png │ ├── arrow-up.png │ ├── arrow_bg.png │ ├── arrow_dn.png │ ├── arrow_lf.png │ ├── arrow_rt.png │ ├── arrow_up.png │ ├── bg-blank.png │ ├── horizontalRule.png │ ├── horizontal_Rule.png │ ├── kodi-logo.png │ ├── nintendo_switch_logo.png │ ├── playstation_logo.png │ ├── plex-logo.png │ ├── plex-logo_active.png │ ├── power-logo.png │ ├── power-logo_active.png │ ├── power_off_red.png │ ├── rxv677_transparent.png │ ├── sony_logo.png │ ├── switch-logo.png │ ├── switch-logo_active.png │ ├── volBorder.png │ ├── vol_+.png │ ├── vol_+_active.png │ ├── vol_-.png │ ├── vol_-_active.png │ ├── vol_btn_border.png │ ├── wiiu_logo.png │ ├── windows_logo.png │ ├── xbox-logo-active.png │ ├── xbox-logo.png │ └── xbox_one_logo.png └── weather_icons │ ├── animated │ ├── cloudy-day-1.svg │ ├── cloudy-day-2.svg │ ├── cloudy-day-3.svg │ ├── cloudy-night-1.svg │ ├── cloudy-night-2.svg │ ├── cloudy-night-3.svg │ ├── cloudy.svg │ ├── day.svg │ ├── night.svg │ ├── rainy-1.svg │ ├── rainy-2.svg │ ├── rainy-3.svg │ ├── rainy-4.svg │ ├── rainy-5.svg │ ├── rainy-6.svg │ ├── rainy-7.svg │ ├── snowy-1.svg │ ├── snowy-2.svg │ ├── snowy-3.svg │ ├── snowy-4.svg │ ├── snowy-5.svg │ ├── snowy-6.svg │ ├── thunder.svg │ ├── weather-sprite.svg │ ├── weather.svg │ ├── weather_sagittarius.svg │ └── weather_sunset.svg │ └── static │ ├── cloudy-day-1.svg │ ├── cloudy-day-2.svg │ ├── cloudy-day-3.svg │ ├── cloudy-night-1.svg │ ├── cloudy-night-2.svg │ ├── cloudy-night-3.svg │ ├── cloudy.svg │ ├── day.svg │ ├── night.svg │ ├── rainy-1.svg │ ├── rainy-2.svg │ ├── rainy-3.svg │ ├── rainy-4.svg │ ├── rainy-5.svg │ ├── rainy-6.svg │ ├── rainy-7.svg │ ├── snowy-1.svg │ ├── snowy-2.svg │ ├── snowy-3.svg │ ├── snowy-4.svg │ ├── snowy-5.svg │ ├── snowy-6.svg │ ├── thunder.svg │ ├── weather-sprite.svg │ ├── weather.svg │ ├── weather_sagittarius.svg │ └── weather_sunset.svg └── weather_icons └── animated ├── cloudy-day-1.svg ├── cloudy-day-2.svg ├── cloudy-day-3.svg ├── cloudy-fog.svg ├── cloudy-night-1.svg ├── cloudy-night-2.svg ├── cloudy-night-3.svg ├── cloudy.svg ├── day.svg ├── foggy-1.svg ├── foggy-2.svg ├── night.svg ├── rainy-1.svg ├── rainy-2.svg ├── rainy-3.svg ├── rainy-4.svg ├── rainy-5.svg ├── rainy-6.svg ├── rainy-7.svg ├── snowy-1.svg ├── snowy-2.svg ├── snowy-3.svg ├── snowy-4.svg ├── snowy-5.svg ├── snowy-6.svg ├── thunder-rainy.svg ├── thunder-rainy1.svg ├── thunder.svg ├── weather-sprite.svg ├── weather.svg ├── weather_sagittarius.svg ├── weather_sunset.svg ├── windy-1.svg ├── windy-2.svg ├── windy-3.svg └── windy-4.svg /.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !*/ 3 | !*.yaml 4 | !*.jpg 5 | !*.png 6 | !*.js 7 | !*.svg 8 | !*.css 9 | !*.html 10 | !.gitignore 11 | /custom_components/** 12 | secrets.yaml 13 | known_devices.yaml 14 | google_calendars.yaml 15 | google3864d8aceb1965f0.html 16 | home-assistant_v2.db 17 | matt.jpg 18 | sheila.jpg 19 | lexi.jpg 20 | !/includes/** 21 | !/includes/sensor/** 22 | !/includes/www/custom_ui/** 23 | !/includes/www/icons/** 24 | !/includes/www/weather_icons/** 25 | -------------------------------------------------------------------------------- /configuration.yaml: -------------------------------------------------------------------------------- 1 | homeassistant: 2 | customize: !include customize.yaml 3 | 4 | 5 | #removing default_config and enebling only what i want 6 | #default_config: 7 | automation: !include automations.yaml 8 | cloud: 9 | config: 10 | frontend: 11 | extra_html_url: 12 | - /local/custom_ui/custom-weather-card.html 13 | extra_html_url_es5: 14 | - /local/custom_ui/custom-weather-card.html 15 | themes: !include includes/themes.yaml 16 | javascript_version: latest 17 | history: 18 | logbook: 19 | #map: 20 | mobile_app: 21 | person: 22 | script: !include scripts.yaml 23 | ssdp: 24 | sun: 25 | system_health: 26 | updater: 27 | zeroconf: 28 | #zone: !include includes/zone.yaml 29 | #end default_config 30 | 31 | google_assistant: !include includes/google_assistant.yaml 32 | http: 33 | ssl_certificate: /ssl/fullchain.pem 34 | ssl_key: /ssl/privkey.pem 35 | ip_ban_enabled: False 36 | login_attempts_threshold: 5 37 | discovery: 38 | conversation: 39 | shopping_list: 40 | timer: !include includes/timer.yaml 41 | sensor: !include_dir_merge_list includes/sensor/ 42 | binary_sensor: !include includes/binary_sensor.yaml 43 | weather: !include includes/weather.yaml 44 | camera: !include includes/camera.yaml 45 | remote: !include includes/remote.yaml 46 | device_tracker: !include includes/device_tracker.yaml 47 | notify: !include includes/notify.yaml 48 | google: !include includes/google.yaml 49 | input_number: !include includes/input_number.yaml 50 | rest_command: !include includes/rest_command.yaml 51 | cover: !include includes/cover.yaml 52 | media_player: !include includes/media_player.yaml 53 | joaoapps_join: !include includes/joaoapps_join.yaml 54 | recorder: !include includes/recorder.yaml 55 | shell_command: !include includes/shell_command.yaml 56 | switch: !include includes/switch.yaml 57 | group: !include includes/group.yaml 58 | 59 | -------------------------------------------------------------------------------- /custom_components/hacs/iconset.js: -------------------------------------------------------------------------------- 1 | const iconset = document.createElement("ha-iconset-svg"); 2 | iconset.name = "hacs"; 3 | iconset.size = "1024"; 4 | iconset.innerHTML = ` 5 | 33 | ` 34 | document.body.appendChild(iconset); -------------------------------------------------------------------------------- /custom_components/hacs/services.yaml: -------------------------------------------------------------------------------- 1 | install: 2 | description: This is NOT intended to be used here, this is intended for developers! 3 | fields: 4 | repository: 5 | description: The repository ID 6 | example: '"123456789"' 7 | register: 8 | description: This is NOT intended to be used here, this is intended for developers! 9 | fields: 10 | repository: 11 | description: The full name of the repository 12 | example: 'developer/repo' 13 | repository_type: 14 | description: The repository type 15 | example: 'plugin' -------------------------------------------------------------------------------- /customize.yaml: -------------------------------------------------------------------------------- 1 | sensor.trash_pickup_day: 2 | friendly_name: Trash Pickup 3 | icon: mdi:delete 4 | sensor.recycling_pickup_day: 5 | friendly_name: Recycling Pickup 6 | icon: mdi:recycle 7 | sensor.matt_event_title: 8 | icon: mdi:calendar 9 | sensor.matt_event_end: 10 | icon: none 11 | sensor.matt_event_start: 12 | icon: none 13 | script.volume_down: 14 | icon: mdi:volume-low 15 | script.volume_up: 16 | icon: mdi:volume-high 17 | cover.double: 18 | device_class: garage 19 | homebridge_cover_type: garage_door 20 | google_assistant: true 21 | google_assistant_type: switch 22 | automation.server_status_dns: 23 | icon: mdi:server-network 24 | automation.server_status_freenas: 25 | icon: mdi:server-network 26 | automation.server_status_lidarr: 27 | icon: mdi:server-network 28 | automation.server_status_organizr: 29 | icon: mdi:server-network 30 | automation.server_status_plex: 31 | icon: mdi:server-network 32 | automation.server_status_radarr: 33 | icon: mdi:server-network 34 | automation.server_status_sabnzbd: 35 | icon: mdi:server-network 36 | automation.server_status_sonarr: 37 | icon: mdi:server-network 38 | person.sheila: 39 | entity_picture: /local/sheila.jpg 40 | picture_entity: /local/sheila.jpg 41 | person.alexis: 42 | entity_picture: /local/lexi.jpg 43 | person.matt: 44 | entity_picture: /local/matt.jpg 45 | device_tracker.galaxy_j3_v: 46 | entity_picture: /local/lexi.jpg 47 | device_tracker.sm_j337v: 48 | entity_picture: /local/lexi.jpg 49 | -------------------------------------------------------------------------------- /includes/binary_sensor.yaml: -------------------------------------------------------------------------------- 1 | - platform: workday 2 | country: US 3 | workdays: [mon, tue, wed, thu, fri] 4 | excludes: [sat, sun, holiday] -------------------------------------------------------------------------------- /includes/camera.yaml: -------------------------------------------------------------------------------- 1 | - platform: generic 2 | still_image_url: https://radblast.wunderground.com/cgi-bin/radar/WUNIDS_map?station=LSX&brand=wui&num=8&delay=15&type=N0R&frame=0&scale=1.000&noclutter=0&showstorms=0&mapx=400&mapy=240¢erx=400¢ery=240&transx=0&transy=0&showlabels=1&severe=0&rainsnow=1&lightning=1&smooth=0&rand=25328223&lat=0&lon=0&label=you 3 | name: Radar -------------------------------------------------------------------------------- /includes/cover.yaml: -------------------------------------------------------------------------------- 1 | - platform: mqtt 2 | name: "double" 3 | state_topic: "sensor/garage/state1" 4 | command_topic: "sensor/garage/action1" 5 | payload_open: "OPEN" 6 | payload_close: "OPEN" 7 | payload_stop: "OPEN" 8 | state_open: "open" 9 | state_closed: "closed" 10 | #optomistic: false 11 | retain: false 12 | -------------------------------------------------------------------------------- /includes/device_tracker.yaml: -------------------------------------------------------------------------------- 1 | # - platform: tplink 2 | # host: 192.168.1.254 3 | # username: !secret routerUser 4 | # password: !secret routerPW 5 | - platform: nmap_tracker 6 | hosts: 192.168.1.100-253 7 | consider_home: 600 8 | 9 | - platform: bluetooth_tracker 10 | # - platform: owntracks 11 | 12 | 13 | # - platform: google_maps 14 | # username: !secret google_maps_user 15 | # password: !secret google_maps_user_pw 16 | -------------------------------------------------------------------------------- /includes/google.yaml: -------------------------------------------------------------------------------- 1 | client_id: !secret google_client_id 2 | client_secret: !secret google_client_secret -------------------------------------------------------------------------------- /includes/google_assistant.yaml: -------------------------------------------------------------------------------- 1 | project_id: !secret google_assistant_projectID 2 | secure_devices_pin: !secret google_home_pin 3 | exposed_domains: 4 | - cover 5 | - media_player 6 | -------------------------------------------------------------------------------- /includes/group.yaml: -------------------------------------------------------------------------------- 1 | family: 2 | name: Family 3 | entities: 4 | - person.matt 5 | - person.sheila 6 | - person.alexis 7 | -------------------------------------------------------------------------------- /includes/input_number.yaml: -------------------------------------------------------------------------------- 1 | denon_volume: 2 | name: Media Volume 3 | icon: mdi:volume-medium 4 | initial: 0 5 | min: 0 6 | max: 85 7 | step: 0.5 8 | unit_of_measurement: "%" -------------------------------------------------------------------------------- /includes/input_select.yaml: -------------------------------------------------------------------------------- 1 | # remote: 2 | # name: Media Center Remote 3 | # options: 4 | # - PowerOff 5 | # - ShieldTV 6 | # - XBoxOne 7 | # - Switch 8 | # icon: mdi:remote 9 | -------------------------------------------------------------------------------- /includes/joaoapps_join.yaml: -------------------------------------------------------------------------------- 1 | - name: mattgs9 2 | device_id: !secret joinDeviceIdMattPhone 3 | api_key: !secret joinAPI -------------------------------------------------------------------------------- /includes/media_player.yaml: -------------------------------------------------------------------------------- 1 | # - platform: plex 2 | # entity_namespace: 'plex' 3 | # include_non_clients: true 4 | # scan_interval: 5 5 | # show_all_controls: false 6 | # use_custom_entity_ids: true 7 | # use_episode_art: true 8 | # remove_unavailable_clients: true 9 | # client_remove_interval: 600 10 | 11 | 12 | - platform: denonavr 13 | host: 192.168.1.90 14 | name: Denon AVR-X1000 15 | show_all_sources: false 16 | timeout: 2 -------------------------------------------------------------------------------- /includes/mqtt.yaml: -------------------------------------------------------------------------------- 1 | discovery: true 2 | discovery_prefix: homeassistant 3 | #broker: !secret mqtt_ip 4 | #username: !secret mqtt_user 5 | #password: !secret mqtt_pw 6 | -------------------------------------------------------------------------------- /includes/notify.yaml: -------------------------------------------------------------------------------- 1 | - name: Pushover 2 | platform: pushover 3 | api_key: !secret pushover_api_key 4 | user_key: !secret pushover_user_key 5 | 6 | #- platform: joaoapps_join 7 | # device_id: group.all 8 | # name: all 9 | # api_key: !secret joinAPI 10 | 11 | #- platform: joaoapps_join 12 | # device_id: !secret joinDeviceIdMattPhone 13 | # name: mattGS9 14 | # api_key: !secret joinAPI 15 | 16 | - platform: html5 17 | name: google_cloud_messaging 18 | vapid_pub_key: !secret vapid_pub_key 19 | vapid_prv_key: !secret vapid_pvt_key 20 | vapid_email: !secret matt_email 21 | #gcm_api_key: !secret google_cloud_messaging_aip_key 22 | #gcm_sender_id: !secret google_cloud_messaging_sender_id 23 | -------------------------------------------------------------------------------- /includes/panel_iframe.yaml.disabled: -------------------------------------------------------------------------------- 1 | configurator: 2 | title: Configurator 3 | icon: mdi:wrench 4 | url: !secret configurator_url 5 | -------------------------------------------------------------------------------- /includes/recorder.yaml: -------------------------------------------------------------------------------- 1 | purge_keep_days: 2 2 | purge_interval: 2 -------------------------------------------------------------------------------- /includes/remote.yaml: -------------------------------------------------------------------------------- 1 | - platform: harmony 2 | name: Living Room 3 | host: !secret harmony_ip 4 | activity: SHIELD TV 5 | 6 | -------------------------------------------------------------------------------- /includes/rest_command.yaml: -------------------------------------------------------------------------------- 1 | set_volume: 2 | url: 'http://192.168.1.90/goform/formiPhoneAppDirect.xml?MV{{ states("input_number.denon_volume").replace(".", "") }}' 3 | volume_up: 4 | url: 'http://192.168.1.90/goform/formiPhoneAppDirect.xml?MVUP' 5 | volume_down: 6 | url: 'http://192.168.1.90/goform/formiPhoneAppDirect.xml?MVDOWN' 7 | volume_correct: 8 | url: 'http://192.168.1.90/goform/formiPhoneAppDirect.xml?MV35' -------------------------------------------------------------------------------- /includes/sensor/binary_sensor.yaml: -------------------------------------------------------------------------------- 1 | - platform: command_line 2 | name: 'sabnzbd' 3 | command: curl -m 3 -s http://192.168.1.21:8080/ > /dev/null && echo ON || echo OFF 4 | scan_interval: 33 5 | 6 | - platform: command_line 7 | name: 'plex' 8 | command: curl -m 3 -s http://media_server.local/web/index.html/ > /dev/null && echo ON || echo OFF 9 | scan_interval: 33 10 | 11 | - platform: command_line 12 | name: 'radarr' 13 | command: curl -m 3 -s http://192.168.1.30:7878/ > /dev/null && echo ON || echo OFF 14 | scan_interval: 33 15 | 16 | - platform: command_line 17 | name: 'sonarr' 18 | command: curl -m 3 -s http://192.168.1.21:8080/ > /dev/null && echo ON || echo OFF 19 | scan_interval: 33 20 | 21 | - platform: command_line 22 | name: 'lidarr' 23 | command: curl -m 3 -s http://192.168.1.27:8686/ > /dev/null && echo ON || echo OFF 24 | scan_interval: 33 25 | 26 | - platform: command_line 27 | name: 'organizr' 28 | command: curl -m 3 -s http://192.168.1.25:80/ > /dev/null && echo ON || echo OFF 29 | scan_interval: 33 30 | 31 | - platform: command_line 32 | name: 'freenas' 33 | command: curl -m 3 -s http://192.168.1.10:80/ > /dev/null && echo ON || echo OFF 34 | scan_interval: 33 35 | 36 | - platform: command_line 37 | name: 'dns' 38 | command: curl -m 3 -s http://192.168.1.42:80/ > /dev/null && echo ON || echo OFF 39 | scan_interval: 33 40 | 41 | - platform: template 42 | sensors: 43 | recycling_pickup_tomorrow: 44 | friendly_name: "Recycling Pick-up is Tomorrow" 45 | value_template: >- 46 | {%- set pickupday = strptime(states.calendar.recycling_pick_up.attributes.start_time, "%Y-%m-%d %H:%M:%S").strftime("%Y-%m-%d") -%} 47 | {%- if pickupday.split("-")[2] | int -1 == states.sensor.date.state.split("-")[2] | int -%} 48 | true 49 | {% else %} 50 | false 51 | {%- endif -%} 52 | 53 | - platform: template 54 | sensors: 55 | trash_pickup_tomorrow: 56 | friendly_name: "Trash Pick-up is Tomorrow" 57 | value_template: >- 58 | {%- set pickupday = strptime(states.calendar.trash_pick_up.attributes.start_time, "%Y-%m-%d %H:%M:%S").strftime("%Y-%m-%d") -%} 59 | {%- if pickupday.split("-")[2] | int -1 == states.sensor.date.state.split("-")[2] | int -%} 60 | true 61 | {% else %} 62 | false 63 | {%- endif -%} 64 | 65 | -------------------------------------------------------------------------------- /includes/sensor/calendar.yaml: -------------------------------------------------------------------------------- 1 | # Calendar Tempalate Sensor 2 | - platform: template 3 | sensors: 4 | matt_event_title: 5 | friendly_name: Event 6 | value_template: "{{ states.calendar.mattlclairgmailcom.attributes.message }}" 7 | - platform: template 8 | sensors: 9 | matt_event_start: 10 | friendly_name: Start Time 11 | value_template: "{{ states.calendar.mattlclairgmailcom.attributes.start_time }}" 12 | - platform: template 13 | sensors: 14 | matt_event_end: 15 | friendly_name: End Time 16 | value_template: "{{ states.calendar.mattlclairgmailcom.attributes.end_time }}" -------------------------------------------------------------------------------- /includes/sensor/cert.yaml: -------------------------------------------------------------------------------- 1 | - platform: cert_expiry 2 | host: cfautomation.duckdns.org 3 | -------------------------------------------------------------------------------- /includes/sensor/clock.yaml: -------------------------------------------------------------------------------- 1 | - platform: yr 2 | - platform: time_date 3 | display_options: 4 | - 'time' 5 | - 'date' 6 | - 'date_time' 7 | - 'time_date' 8 | - 'time_utc' 9 | - 'beat' 10 | -------------------------------------------------------------------------------- /includes/sensor/command_line.yaml: -------------------------------------------------------------------------------- 1 | - platform: command_line 2 | name: shopping_list 3 | command: python3 /config/shopping_list.py 4 | scan_interval: 20 5 | -------------------------------------------------------------------------------- /includes/sensor/denon_volume.yaml: -------------------------------------------------------------------------------- 1 | # Denon Receiver Volume Template Sensor 2 | - platform: template 3 | sensors: 4 | denon_volume: 5 | value_template: > 6 | {% if is_state('media_player.denon_avr_x1000', 'on') %} 7 | {% set n = states.media_player.denon_avr_x1000.attributes.volume_level | float %} 8 | {{ '%.1f'%( n*100.0|round(0.0) ) }} 9 | {% else %} 10 | "0" 11 | {% endif %} 12 | friendly_name: Reciever Volume Level 13 | unit_of_measurement: "%" 14 | icon_template: mdi:volume-medium 15 | -------------------------------------------------------------------------------- /includes/sensor/harmony_current_activity.yaml: -------------------------------------------------------------------------------- 1 | # Harmony Remote Status Tempalate Sensor 2 | - platform: template 3 | sensors: 4 | harmony_remote_activity: 5 | value_template: > 6 | {% if is_state("remote.living_room", 'on') %} 7 | {{ states.remote.living_room.attributes.current_activity }} 8 | {% else %} 9 | PowerOff 10 | {% endif %} 11 | -------------------------------------------------------------------------------- /includes/sensor/plex_recently_added.yaml: -------------------------------------------------------------------------------- 1 | - platform: plex_recently_added 2 | token: !secret plex_token 3 | host: !secret plex_ip 4 | port: !secret plex_port -------------------------------------------------------------------------------- /includes/sensor/radarr_upcoming_media.yaml: -------------------------------------------------------------------------------- 1 | - platform: radarr_upcoming_media 2 | api_key: !secret radarr_api 3 | host: !secret radarr_ip 4 | port: 7878 5 | days: 120 6 | theaters: false -------------------------------------------------------------------------------- /includes/sensor/shellyht.yaml: -------------------------------------------------------------------------------- 1 | #Shelly HT Running on Static IP 192.168.1.99 2 | - platform: mqtt 3 | name: "Shelly_HT_Temp" 4 | state_topic: "shellies/shellyht-22C4B6/sensor/temperature" 5 | unit_of_measurement: '°F' 6 | 7 | - platform: mqtt 8 | name: "Shelly_HT_Humidity" 9 | state_topic: "shellies/shellyht-22C4B6/sensor/humidity" 10 | unit_of_measurement: '%' 11 | 12 | - platform: mqtt 13 | name: "Shelly_HT_Battery" 14 | state_topic: "shellies/shellyht-22C4B6/sensor/battery" 15 | unit_of_measurement: '%' 16 | -------------------------------------------------------------------------------- /includes/sensor/sonarr_upcoming_media.yaml: -------------------------------------------------------------------------------- 1 | - platform: sonarr_upcoming_media 2 | api_key: !secret sonarr_api 3 | host: !secret sonarr_ip 4 | port: 8989 5 | days: 5 -------------------------------------------------------------------------------- /includes/sensor/trash.yaml: -------------------------------------------------------------------------------- 1 | # Trash Tempalate Sensor 2 | - platform: template 3 | sensors: 4 | trash_pickup_day: 5 | friendly_name: Trash Pick-Up 6 | value_template: >- 7 | {%- set pickupday = strptime(states.calendar.trash_pick_up.attributes.start_time, "%Y-%m-%d %H:%M:%S").strftime("%Y-%m-%d") -%} 8 | {%- if pickupday == states.sensor.date.state -%} 9 | Today 10 | {%- elif pickupday.split("-")[2] | int -1 == states.sensor.date.state.split("-")[2] | int -%} 11 | Tomorrow 12 | {% else %} 13 | {{as_timestamp(states.calendar.trash_pick_up.attributes.start_time) | timestamp_custom("%A %B %d",true)}} 14 | {% endif %} 15 | 16 | # Recycling Tempalate Sensor 17 | - platform: template 18 | sensors: 19 | recycling_pickup_day: 20 | friendly_name: Recycleing Pick-Up 21 | value_template: >- 22 | {%- set pickupday = strptime(states.calendar.recycling_pick_up.attributes.start_time, "%Y-%m-%d %H:%M:%S").strftime("%Y-%m-%d") -%} 23 | {%- if pickupday == states.sensor.date.state -%} 24 | Today 25 | {%- elif pickupday.split("-")[2] | int -1 == states.sensor.date.state.split("-")[2] | int -%} 26 | Tomorrow 27 | {% else %} 28 | {{as_timestamp(states.calendar.recycling_pick_up.attributes.start_time) | timestamp_custom("%A %B %d",true)}} 29 | {% endif %} -------------------------------------------------------------------------------- /includes/shell_command.yaml: -------------------------------------------------------------------------------- 1 | renew_ssl: ~/certbot/certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges http-01 -------------------------------------------------------------------------------- /includes/switch.yaml: -------------------------------------------------------------------------------- 1 | - platform: template 2 | switches: 3 | # ZONE 1 MEDIA SWITCH 4 | zone_1: 5 | value_template: "{{ is_state('media_player.denon_avr_x1000', 'on') }}" 6 | turn_on: 7 | service: media_player.turn_on 8 | entity_id: media_player.denon_avr_x1000 9 | turn_off: 10 | service: media_player.turn_off 11 | entity_id: media_player.denon_avr_x1000 12 | 13 | 14 | # XBOX HARMONY ACTIVITY 15 | xbox_one: 16 | value_template: "{{ is_state_attr('remote.living_room', 'current_activity', 'Play XBox One') }}" 17 | turn_on: 18 | service: remote.turn_on 19 | data: 20 | entity_id: remote.living_room 21 | activity: 'Play XBox One' 22 | turn_off: 23 | service: remote.turn_on 24 | data: 25 | entity_id: remote.living_room 26 | activity: 'PowerOff' 27 | 28 | 29 | 30 | # SWITCH HARMONY ACTIVITY 31 | switch: 32 | value_template: "{{ is_state_attr('remote.living_room', 'current_activity', 'Play Nintendo Switch') }}" 33 | turn_on: 34 | service: remote.turn_on 35 | data: 36 | entity_id: remote.living_room 37 | activity: 'Play Nintendo Switch' 38 | turn_off: 39 | service: remote.turn_on 40 | data: 41 | entity_id: remote.living_room 42 | activity: 'PowerOff' 43 | 44 | # SHIELD TV HARMONY ACTIVITY 45 | shield_tv: 46 | value_template: "{{ is_state_attr('remote.living_room', 'current_activity', 'SHIELD TV') }}" 47 | turn_on: 48 | service: remote.turn_on 49 | data: 50 | entity_id: remote.living_room 51 | activity: 'SHIELD TV' 52 | turn_off: 53 | service: remote.turn_on 54 | data: 55 | entity_id: remote.living_room 56 | activity: 'PowerOff' 57 | 58 | # AUDIO 1, USED FOR ECHO AND MUSIC ZONE 1 59 | #audio_1: 60 | #value_template: "{{ is_state_attr('media_player.yamaha_receiver', 'source', 'Echo') and is_state('switch.floating_outlet_switch', 'on') }}" 61 | #turn_on: 62 | #- service: switch.turn_on 63 | #entity_id: switch.floating_outlet_switch 64 | #- service: media_player.turn_on 65 | #entity_id: media_player.yamaha_receiver 66 | #- service: media_player.select_source 67 | #data: 68 | #entity_id: media_player.yamaha_receiver 69 | #source: Echo 70 | #- service: media_player.volume_set 71 | #data: 72 | #entity_id: media_player.yamaha_receiver 73 | #volume_level: 0.7 74 | #turn_off: 75 | #- service: switch.turn_off 76 | #entity_id: switch.floating_outlet_switch 77 | #- service: media_player.turn_off 78 | #entity_id: media_player.yamaha_receiver 79 | -------------------------------------------------------------------------------- /includes/themes.yaml: -------------------------------------------------------------------------------- 1 | slate: 2 | # Main colors 3 | primary-color: '#2980b9' 4 | accent-color: '#b58e31' 5 | dark-primary-color: '#2980b9' 6 | light-primary-color: '#2980b9' 7 | # Text colors 8 | primary-text-color: '#FFFFFF' 9 | text-primary-color: 'var(--primary-text-color)' 10 | secondary-text-color: '#b58e31' 11 | disabled-text-color: '#777777' 12 | label-badge-border-color: 'green' 13 | # Sidebar 14 | sidebar-icon-color: '#777777' 15 | # Background colors 16 | primary-background-color: '#222222' 17 | secondary-background-color: '#222222' 18 | divider-color: 'rgba(0, 0, 0, .12)' 19 | table-row-background-color: '#292929' 20 | table-row-alternative-background-color: '#292929' 21 | # Nav Menu 22 | paper-listbox-color: '#777777' 23 | paper-listbox-background-color: '#141414' 24 | paper-grey-50: 'var(--primary-text-color)' 25 | paper-grey-200: '#222222' 26 | # Paper card 27 | paper-card-header-color: '#2980b9' 28 | paper-card-background-color: '#292929' 29 | paper-dialog-background-color: '#292929' 30 | paper-item-icon-color: 'var(--primary-text-color)' 31 | paper-item-icon-active-color: '#b58e31' 32 | paper-item-icon_-_color: 'green' 33 | paper-item-selected_-_background-color: '#292929' 34 | paper-tabs-selection-bar-color: 'green' 35 | # Labels 36 | label-badge-red: 'var(--primary-color)' 37 | label-badge-text-color: 'var(--primary-text-color)' 38 | label-badge-background-color: '#222222' 39 | # Switches 40 | paper-toggle-button-checked-button-color: '#2980b9' 41 | paper-toggle-button-checked-bar-color: '#2980b9' 42 | paper-toggle-button-checked-ink-color: '#2980b9' 43 | paper-toggle-button-unchecked-button-color: 'var(--disabled-text-color)' 44 | paper-toggle-button-unchecked-bar-color: 'var(--disabled-text-color)' 45 | paper-toggle-button-unchecked-ink-color: 'var(--disabled-text-color)' 46 | # Sliders 47 | paper-slider-knob-color: '#2980b9' 48 | paper-slider-knob-start-color: '#2980b9' 49 | paper-slider-pin-color: '#2980b9' 50 | paper-slider-active-color: '#2980b9' 51 | paper-slider-container-color: 'linear-gradient(var(--primary-background-color), var(--secondary-background-color)) no-repeat' 52 | paper-slider-secondary-color: 'var(--secondary-background-color)' 53 | paper-slider-disabled-active-color: 'var(--disabled-text-color)' 54 | paper-slider-disabled-secondary-color: 'var(--disabled-text-color)' 55 | # Google colors 56 | google-red-500: '#b93829' 57 | google-green-500: '#2980b9' 58 | # Changes to fix history/logbook menus 59 | lumo-primary-text-color: '#2980b9' 60 | lumo-secondary-text-color: '#2980b9' 61 | lumo-primary-color: '#2980b9' 62 | # Calendar day numbers 63 | lumo-body-text-color: '#b58e31' 64 | # Calendar/Date-Picker Background 65 | lumo-base-color: '#222222' 66 | # Month/Year header 67 | lumo-header-text-color: 'var(--lumo-body-text-color)' 68 | # DayOfWeek Header 69 | lumo-tertiary-text-color: 'var(--lumo-body-text-color)' 70 | lumo-shade: '#222222' 71 | lumo-shade-90pct: 'rgba(34, 34, 34, .9)' 72 | lumo-shade-80pct: 'rgba(34, 34, 34, .8)' 73 | lumo-shade-70pct: 'rgba(34, 34, 34, .7)' 74 | lumo-shade-60pct: 'rgba(34, 34, 34, .6)' 75 | lumo-shade-50pct: 'rgba(34, 34, 34, .5)' 76 | lumo-shade-40pct: 'rgba(34, 34, 34, .4)' 77 | lumo-shade-30pct: 'rgba(34, 34, 34, .3)' 78 | lumo-shade-20pct: 'rgba(34, 34, 34, .2)' 79 | lumo-shade-10pct: 'rgba(34, 34, 34, .1)' 80 | lumo-shade-5pct: 'rgba(34, 34, 34, .05)' 81 | lumo-tint-5pct: '#222222' 82 | # fix for device configuration screen 83 | card-background-color: "var(--paper-card-background-color)" -------------------------------------------------------------------------------- /includes/themes.yaml.bak: -------------------------------------------------------------------------------- 1 | transparent_pannel: 2 | paper-card-background-color: 'rgba(255, 255, 255, 0.8)' 3 | background: center / cover no-repeat url("/local/bg.jpg") fixed 4 | 5 | slate: 6 | # Main colors 7 | primary-color: '#2980b9' 8 | accent-color: '#b58e31' 9 | dark-primary-color: '#2980b9' 10 | light-primary-color: '#2980b9' 11 | # Text colors 12 | primary-text-color: '#FFFFFF' 13 | text-primary-color: 'var(--primary-text-color)' 14 | secondary-text-color: '#b58e31' 15 | disabled-text-color: '#777777' 16 | label-badge-border-color: 'green' 17 | # Sidebar 18 | sidebar-icon-color: '#777777' 19 | # Background colors 20 | primary-background-color: '#222222' 21 | secondary-background-color: '#222222' 22 | divider-color: 'rgba(0, 0, 0, .12)' 23 | table-row-background-color: '#292929' 24 | table-row-alternative-background-color: '#292929' 25 | # Nav Menu 26 | paper-listbox-color: '#777777' 27 | paper-listbox-background-color: '#141414' 28 | paper-grey-50: 'var(--primary-text-color)' 29 | paper-grey-200: '#222222' 30 | # Paper card 31 | paper-card-header-color: '#2980b9' 32 | paper-card-background-color: '#292929' 33 | paper-dialog-background-color: '#292929' 34 | paper-item-icon-color: 'var(--primary-text-color)' 35 | paper-item-icon-active-color: '#b58e31' 36 | paper-item-icon_-_color: 'green' 37 | paper-item-selected_-_background-color: '#292929' 38 | paper-tabs-selection-bar-color: 'green' 39 | # Labels 40 | label-badge-red: 'var(--primary-color)' 41 | label-badge-text-color: 'var(--primary-text-color)' 42 | label-badge-background-color: '#222222' 43 | # Switches 44 | paper-toggle-button-checked-button-color: '#2980b9' 45 | paper-toggle-button-checked-bar-color: '#2980b9' 46 | paper-toggle-button-checked-ink-color: '#2980b9' 47 | paper-toggle-button-unchecked-button-color: 'var(--disabled-text-color)' 48 | paper-toggle-button-unchecked-bar-color: 'var(--disabled-text-color)' 49 | paper-toggle-button-unchecked-ink-color: 'var(--disabled-text-color)' 50 | # Sliders 51 | paper-slider-knob-color: '#2980b9' 52 | paper-slider-knob-start-color: '#2980b9' 53 | paper-slider-pin-color: '#2980b9' 54 | paper-slider-active-color: '#2980b9' 55 | paper-slider-container-color: 'linear-gradient(var(--primary-background-color), var(--secondary-background-color)) no-repeat' 56 | paper-slider-secondary-color: 'var(--secondary-background-color)' 57 | paper-slider-disabled-active-color: 'var(--disabled-text-color)' 58 | paper-slider-disabled-secondary-color: 'var(--disabled-text-color)' 59 | # Google colors 60 | google-red-500: '#b58e31' 61 | google-green-500: '#2980b9' 62 | #Changes to fix history/logbook menus 63 | lumo-primary-text-color: '#2980b9' 64 | lumo-secondary-text-color: '#2980b9' 65 | lumo-primary-color: '#2980b9' 66 | #Calendar day numbers 67 | lumo-body-text-color: '#b58e31' 68 | #Calendar/Date-Picker Background 69 | lumo-base-color: '#222222' 70 | #Month/Year header 71 | lumo-header-text-color: 'var(--lumo-body-text-color)' 72 | #DayOfWeek Header 73 | lumo-tertiary-text-color: 'var(--lumo-body-text-color)' 74 | lumo-shade: '#222222' 75 | lumo-shade-90pct: 'rgba(34, 34, 34, .9)' 76 | lumo-shade-80pct: 'rgba(34, 34, 34, .8)' 77 | lumo-shade-70pct: 'rgba(34, 34, 34, .7)' 78 | lumo-shade-60pct: 'rgba(34, 34, 34, .6)' 79 | lumo-shade-50pct: 'rgba(34, 34, 34, .5)' 80 | lumo-shade-40pct: 'rgba(34, 34, 34, .4)' 81 | lumo-shade-30pct: 'rgba(34, 34, 34, .3)' 82 | lumo-shade-20pct: 'rgba(34, 34, 34, .2)' 83 | lumo-shade-10pct: 'rgba(34, 34, 34, .1)' 84 | lumo-shade-5pct: 'rgba(34, 34, 34, .05)' 85 | lumo-tint-5pct: '#222222' 86 | -------------------------------------------------------------------------------- /includes/timer.yaml: -------------------------------------------------------------------------------- 1 | garage_door: 2 | duration: '00:15:00' 3 | name: 'Garage Door' -------------------------------------------------------------------------------- /includes/weather.yaml: -------------------------------------------------------------------------------- 1 | - platform: darksky 2 | api_key: !secret darkSkyAPI 3 | -------------------------------------------------------------------------------- /includes/zone.yaml: -------------------------------------------------------------------------------- 1 | #- name: Matt Work 2 | #latitude: !secret workLat 3 | #longitude: !secret workLong 4 | #radius: 400 5 | #icon: mdi:briefcase 6 | 7 | #- name: Sheila Work 8 | #latitude: !secret sworkLat 9 | #longitude: !secret sworkLong 10 | #radius: 200 11 | #icon: mdi:briefcase 12 | 13 | #- name: Alexis School 14 | #latitude: !secret aschoolLat 15 | #longitude: !secret aschoolLong 16 | #radius: 250 17 | #icon: mdi:bus-school -------------------------------------------------------------------------------- /scripts.yaml: -------------------------------------------------------------------------------- 1 | volume_up: 2 | alias: Volume Up 3 | sequence: 4 | - service: rest_command.volume_up 5 | volume_down: 6 | alias: Volume Down 7 | sequence: 8 | - service: rest_command.volume_down 9 | turn_on_plex: 10 | alias: Start Plex Activity 11 | sequence: 12 | - data: 13 | activity: 40847892 14 | entity_id: remote.living_room 15 | service: remote.turn_on 16 | turn_on_xbox: 17 | alias: Start XBox One Activity 18 | sequence: 19 | service: remote.turn_on 20 | data: 21 | entity_id: remote.living_room 22 | activity: 11870230 23 | turn_on_switch: 24 | alias: Start Nintendo Switch Activity 25 | sequence: 26 | service: remote.turn_on 27 | data: 28 | entity_id: remote.living_room 29 | activity: 35293083 30 | turn_off_tv: 31 | alias: Power Off TV 32 | sequence: 33 | service: remote.turn_on 34 | data: 35 | entity_id: remote.living_room 36 | activity: -1 37 | input_select_harmony: 38 | alias: Start Remote activity from input select 39 | sequence: 40 | service: remote.turn_on 41 | data_template: 42 | entity_id: remote.living_room 43 | activity: "{% if is_state(\"input_select.remote\", \"PowerOff\") %}\n -1\n\ 44 | {% elif is_state(\"input_select.remote\", \"SHIELD TV\") %}\n 40847892\n\ 45 | {% elif is_state(\"input_select.remote\", \"Play Xbox One\") %}\n 11870230\n\ 46 | {% elif is_state(\"input_select.remote\", \"Play Nintendo Switch\") %}\n \ 47 | \ 35293083\n{% endif %}\n" 48 | send_shopping_list_via_sms: 49 | alias: Text Shopping List to Sheila 50 | sequence: 51 | - service: joaoapps_join.mattgs9_send_sms 52 | data_template: 53 | number: 6189788691 54 | message: 'Shopping List: 55 | 56 | {{ states(''sensor.shopping_list'') }}' 57 | -------------------------------------------------------------------------------- /themes/material_dark_pink/material_dark_pink.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # 3 | # Material Dark Pink Theme 4 | # 5 | material_dark_pink: 6 | accent: "#FF4081" 7 | accent-color: "var(--accent)" 8 | card-background-color: "#1D1D1D" 9 | dark-primary-color: "var(--accent)" 10 | disabled-text-color: "#FFFFFF61" 11 | divider-color: "#2D2D2D" 12 | ha-label-badge-color: "var(--accent)" 13 | label-badge-background-color: "#121212" 14 | label-badge-text-color: "var(--secondary-text-color)" 15 | light-primary-color: "var(--accent)" 16 | lumo-base-color: "#2D2D2D" 17 | lumo-body-text-color: "var(--primary-text-color)" 18 | lumo-box-shadow-m: "none" 19 | lumo-header-text-color: "var(--primary-text-color)" 20 | lumo-primary-color: "var(--accent)" 21 | lumo-primary-color-10pct: "#2D2D2D" 22 | lumo-primary-color-50pct: "none" 23 | lumo-primary-contrast-color: "var(--primary-text-color)" 24 | lumo-shade-5pct: "#272727" 25 | lumo-tertiary-text-color: "var(--secondary-text-color)" 26 | lumo-tint-5pct: "none" 27 | mdc-theme-primary: "var(--accent)" 28 | paper-card-background-color: "#1D1D1D" 29 | paper-checkbox-checked-color: "var(--accent)" 30 | paper-checkbox-checked-ink-color: "var(--accent)" 31 | paper-dropdown-menu-focus-color: "var(--accent)" 32 | paper-grey-200: "#272727" 33 | paper-input-container-focus-color: "var(--accent)" 34 | paper-radio-button-checked-color: "var(--accent)" 35 | paper-tab-ink: "var(--accent)" 36 | paper-toggle-button-checked-bar-color: "var(--accent)" 37 | paper-toggle-button-checked-button-color: "var(--accent)" 38 | paper-toggle-button-checked-ink-color: "var(--accent)" 39 | paper-toggle-button-unchecked-bar-color: "#787878" 40 | paper-toggle-button-unchecked-button-color: "#A5A5A5" 41 | primary-background-color: "#121212" 42 | primary-color: "#1D1D1D" 43 | primary-text-color: "#FFFFFFDE" 44 | secondary-background-color: "#1D1D1D" 45 | secondary-text-color: "#FFFFFF99" 46 | sidebar-icon-color: "#A0A0A0" 47 | sidebar-selected-icon-color: "var(--accent)" 48 | sidebar-selected-text-color: "var(--accent)" 49 | slider-color: "var(--accent)" 50 | state-icon-active-color: "var(--accent)" 51 | state-icon-color: "#A0A0A0" 52 | toggle-button-color: "var(--accent)" 53 | -------------------------------------------------------------------------------- /themes/slate/slate.yaml: -------------------------------------------------------------------------------- 1 | slate: 2 | # Main colors 3 | primary-color: '#2980b9' 4 | accent-color: '#b58e31' 5 | dark-primary-color: '#2980b9' 6 | light-primary-color: '#2980b9' 7 | # Text colors 8 | primary-text-color: '#FFFFFF' 9 | text-primary-color: 'var(--primary-text-color)' 10 | secondary-text-color: '#b58e31' 11 | disabled-text-color: '#777777' 12 | label-badge-border-color: 'green' 13 | # Sidebar 14 | sidebar-icon-color: '#777777' 15 | # Background colors 16 | primary-background-color: '#222222' 17 | secondary-background-color: '#222222' 18 | divider-color: 'rgba(0, 0, 0, .12)' 19 | table-row-background-color: '#292929' 20 | table-row-alternative-background-color: '#292929' 21 | # Nav Menu 22 | paper-listbox-color: '#777777' 23 | paper-listbox-background-color: '#141414' 24 | paper-grey-50: 'var(--primary-text-color)' 25 | paper-grey-200: '#222222' 26 | # Paper card 27 | paper-card-header-color: '#2980b9' 28 | paper-card-background-color: '#292929' 29 | paper-dialog-background-color: '#292929' 30 | paper-item-icon-color: 'var(--primary-text-color)' 31 | paper-item-icon-active-color: '#b58e31' 32 | paper-item-icon_-_color: 'green' 33 | paper-item-selected_-_background-color: '#292929' 34 | paper-tabs-selection-bar-color: 'green' 35 | # Labels 36 | label-badge-red: 'var(--primary-color)' 37 | label-badge-text-color: 'var(--primary-text-color)' 38 | label-badge-background-color: '#222222' 39 | # Switches 40 | paper-toggle-button-checked-button-color: '#2980b9' 41 | paper-toggle-button-checked-bar-color: '#2980b9' 42 | paper-toggle-button-checked-ink-color: '#2980b9' 43 | paper-toggle-button-unchecked-button-color: 'var(--disabled-text-color)' 44 | paper-toggle-button-unchecked-bar-color: 'var(--disabled-text-color)' 45 | paper-toggle-button-unchecked-ink-color: 'var(--disabled-text-color)' 46 | switch-checked-color: 'var(--paper-toggle-button-checked-button-color)' 47 | switch-unchecked-color: 'var(--disabled-text-color)' 48 | switch-unchecked-button-color: 'var(--disabled-text-color)' 49 | switch-unchecked-track-color: 'var(--disabled-text-color)' 50 | # Sliders 51 | paper-slider-knob-color: '#2980b9' 52 | paper-slider-knob-start-color: '#2980b9' 53 | paper-slider-pin-color: '#2980b9' 54 | paper-slider-active-color: '#2980b9' 55 | paper-slider-container-color: 'linear-gradient(var(--primary-background-color), var(--secondary-background-color)) no-repeat' 56 | paper-slider-secondary-color: 'var(--secondary-background-color)' 57 | paper-slider-disabled-active-color: 'var(--disabled-text-color)' 58 | paper-slider-disabled-secondary-color: 'var(--disabled-text-color)' 59 | # Google colors 60 | google-red-500: '#b93829' 61 | google-green-500: '#2980b9' 62 | # Changes to fix history/logbook menus 63 | lumo-primary-text-color: '#2980b9' 64 | lumo-secondary-text-color: '#2980b9' 65 | lumo-primary-color: '#2980b9' 66 | # Calendar day numbers 67 | lumo-body-text-color: '#b58e31' 68 | # Calendar/Date-Picker Background 69 | lumo-base-color: '#222222' 70 | # Month/Year header 71 | lumo-header-text-color: 'var(--lumo-body-text-color)' 72 | # DayOfWeek Header 73 | lumo-tertiary-text-color: 'var(--lumo-body-text-color)' 74 | lumo-shade: '#222222' 75 | lumo-shade-90pct: 'rgba(34, 34, 34, .9)' 76 | lumo-shade-80pct: 'rgba(34, 34, 34, .8)' 77 | lumo-shade-70pct: 'rgba(34, 34, 34, .7)' 78 | lumo-shade-60pct: 'rgba(34, 34, 34, .6)' 79 | lumo-shade-50pct: 'rgba(34, 34, 34, .5)' 80 | lumo-shade-40pct: 'rgba(34, 34, 34, .4)' 81 | lumo-shade-30pct: 'rgba(34, 34, 34, .3)' 82 | lumo-shade-20pct: 'rgba(34, 34, 34, .2)' 83 | lumo-shade-10pct: 'rgba(34, 34, 34, .1)' 84 | lumo-shade-5pct: 'rgba(34, 34, 34, .05)' 85 | lumo-tint-5pct: '#222222' 86 | # fix for device configuration screen 87 | card-background-color: "var(--paper-card-background-color)" 88 | # Fix for Person Device Chooser - thanks to vajonam! 89 | material-background-color: "var(--paper-listbox-background-color)" 90 | material-secondary-background-color: '#222222' 91 | material-body-text-color: '#FFFFFF' 92 | -------------------------------------------------------------------------------- /www/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattclair/Home-AssistantConfig/b0481ebf27c5d9b33faaeaa26375e1fa9fa42406/www/bg.jpg -------------------------------------------------------------------------------- /www/bg2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattclair/Home-AssistantConfig/b0481ebf27c5d9b33faaeaa26375e1fa9fa42406/www/bg2.jpg -------------------------------------------------------------------------------- /www/custom-lovelace/upcoming-media-card/images/plex/f14120.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattclair/Home-AssistantConfig/b0481ebf27c5d9b33faaeaa26375e1fa9fa42406/www/custom-lovelace/upcoming-media-card/images/plex/f14120.jpg -------------------------------------------------------------------------------- /www/custom-lovelace/upcoming-media-card/images/plex/f14121.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattclair/Home-AssistantConfig/b0481ebf27c5d9b33faaeaa26375e1fa9fa42406/www/custom-lovelace/upcoming-media-card/images/plex/f14121.jpg -------------------------------------------------------------------------------- /www/custom-lovelace/upcoming-media-card/images/plex/f14122.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattclair/Home-AssistantConfig/b0481ebf27c5d9b33faaeaa26375e1fa9fa42406/www/custom-lovelace/upcoming-media-card/images/plex/f14122.jpg -------------------------------------------------------------------------------- /www/custom-lovelace/upcoming-media-card/images/plex/f14130.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattclair/Home-AssistantConfig/b0481ebf27c5d9b33faaeaa26375e1fa9fa42406/www/custom-lovelace/upcoming-media-card/images/plex/f14130.jpg -------------------------------------------------------------------------------- /www/custom-lovelace/upcoming-media-card/images/plex/f14131.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattclair/Home-AssistantConfig/b0481ebf27c5d9b33faaeaa26375e1fa9fa42406/www/custom-lovelace/upcoming-media-card/images/plex/f14131.jpg -------------------------------------------------------------------------------- /www/custom-lovelace/upcoming-media-card/images/plex/p14120.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattclair/Home-AssistantConfig/b0481ebf27c5d9b33faaeaa26375e1fa9fa42406/www/custom-lovelace/upcoming-media-card/images/plex/p14120.jpg -------------------------------------------------------------------------------- /www/custom-lovelace/upcoming-media-card/images/plex/p14121.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattclair/Home-AssistantConfig/b0481ebf27c5d9b33faaeaa26375e1fa9fa42406/www/custom-lovelace/upcoming-media-card/images/plex/p14121.jpg -------------------------------------------------------------------------------- /www/custom-lovelace/upcoming-media-card/images/plex/p14122.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattclair/Home-AssistantConfig/b0481ebf27c5d9b33faaeaa26375e1fa9fa42406/www/custom-lovelace/upcoming-media-card/images/plex/p14122.jpg -------------------------------------------------------------------------------- /www/custom-lovelace/upcoming-media-card/images/plex/p14130.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattclair/Home-AssistantConfig/b0481ebf27c5d9b33faaeaa26375e1fa9fa42406/www/custom-lovelace/upcoming-media-card/images/plex/p14130.jpg -------------------------------------------------------------------------------- /www/custom-lovelace/upcoming-media-card/images/plex/p14131.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattclair/Home-AssistantConfig/b0481ebf27c5d9b33faaeaa26375e1fa9fa42406/www/custom-lovelace/upcoming-media-card/images/plex/p14131.jpg -------------------------------------------------------------------------------- /www/custom_ui/beer-card.js: -------------------------------------------------------------------------------- 1 | class BeerCard extends HTMLElement { 2 | 3 | constructor() { 4 | super(); 5 | this.attachShadow({ mode: 'open' }); 6 | } 7 | 8 | setConfig(config) { 9 | if (!config.entity) { 10 | throw new Error('Please define an entity'); 11 | } 12 | 13 | const root = this.shadowRoot; 14 | if (root.lastChild) root.removeChild(root.lastChild); 15 | 16 | const cardConfig = Object.assign({}, config); 17 | if (!cardConfig.icon) cardConfig.icon = 'mdi:beer'; 18 | if (!cardConfig.attribute) cardConfig.attribute = 'list'; 19 | if (!cardConfig.list_type) cardConfig.list_type = 'none'; 20 | 21 | const card = document.createElement('ha-card'); 22 | const content = document.createElement('div'); 23 | const style = document.createElement('style'); 24 | const icon = document.createElement('ha-icon'); 25 | const [prefix, type] = cardConfig.icon.split('.', 2); 26 | ['png', 'jpg', 'svg', 'gif'].includes(type)?icon.src = cardConfig.icon:icon.icon = cardConfig.icon; 27 | style.textContent = ` 28 | ha-card { 29 | position: relative; 30 | ${cardConfig.style} 31 | } 32 | ha-icon { 33 | float: left; 34 | margin-left: 30px; 35 | margin-top: 30px; 36 | } 37 | #container { 38 | padding: 30px; 39 | margin-left: 50px; 40 | } 41 | `; 42 | content.id = 'container'; 43 | card.appendChild(icon); 44 | card.header = cardConfig.title; 45 | card.appendChild(content); 46 | card.appendChild(style); 47 | root.appendChild(card); 48 | this._config = cardConfig; 49 | } 50 | 51 | set hass(hass) { 52 | const config = this._config; 53 | const root = this.shadowRoot; 54 | if (hass.states[config.entity]) { 55 | const list = `${hass.states[config.entity].attributes[config.attribute]}`; 56 | this.style.display = 'block'; 57 | if (list !== 'undefined' && list.length > 0) { 58 | root.getElementById('container').innerHTML = '