theglus / Home-Assistant-Config

Home Assistant Configuration & Documentation for my Smart House. Be sure to ⭐ it. Updated FREQUENTLY!
MIT License
53 stars 4 forks source link
home-assistant home-assistant-config home-automation homeassistant

Home-Assistant-Config

Welcome to theglus's Home Assistant setup. I hope you find value in the projects and documentation I've been working on. I'll be continuting to update my documentaion in the coming weeks so stay tuned.

Table of Contents

I opted to go the Zigbee route primarily because I really like the Aqara platform. I landed on the Raspbee II over the Conbee as it just seemed like a more elegant solution. It's a little bit of a pain to initially setup, but after that it's smooth sailing.

Network

Living in a 950 sqft Loft apartment, I don't have to worry about signal strength. My setup consists of a Google WiFi puck in the Living Room. This is my primary router: one end connects to my in-wall ethernet port and the other end to a TP-Link 8-port network switch. Google Wifi TP-Link Switch MoCa Network Adapter
Google Wifi TP-Link Switch MoCa Network Adapter

But you can't have a mesh network with just one puck, so in order to eliminate the potential for any deadzones, I've placed another puck upstairs in the Loft.

I routinely stream games via Moonlight from my desktop computer (in the Office) to the TV (in the Living Room). Initially, I did this over WiFi, but had very little success. Fortunately, there is a coax outlet right under my desk, so using ethernet-over-coax, I am able to hardwire to the network switch in the Living Room.

💾 Software

Custom Components

See details - [HACS](https://github.com/hacs/integration): Allows for the installation and management of the various custom components. - [BrowserMod](https://github.com/thomasloven/hass-browser_mod): Supports various customizations within Home Assistant. - [Coway IoCare](https://github.com/RobertD502/home-assistant-iocare): Adds support for Coway Airmega to HA. - [Drivvo Integration](https://github.com/theglus/sensor.drivvo): Utilized to pull in Vespa milage + fuel economy from [Drivvo](https://github.com/theglus/sensor.drivvo). - [Dyson Local/Cloud](https://github.com/shenxn/ha-dyson): Add support for Dyson air purifiers to HA. - [Frigidaire](https://github.com/bm1549/home-assistant-frigidaire): Adds support for Frigidaire portable AC to HA. This is what originally got me interested in Home Assistant. Ironically I wasn't able to get it working until a year in. - [Google Home](https://github.com/leikoilja/ha-google-home): Creates HA sensors for alarms + timers that have been set on various Google Home devices. - [LG ThinQ Sensors](https://github.com/ollo69/ha-smartthinq-sensors): Supports integrating my LG washer + dryer into HA. - [PowerCalc](https://github.com/bramstroker/homeassistant-powercalc): Virtual power sensors for estimated tracking of energy consumption. - [TrueNAS](https://github.com/tomaae/homeassistant-truenas): Adds the ability to monitor and control my TrueNAS Scale NAS directly in HA. - [Xiaomi Cloud Map Extractor](https://github.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor): Harnesses lidar in RoboRock S4 to create a live map of my home.

Lovelace Resources

See details - [Bar Card](https://github.com/custom-cards/bar-card) - [Button Card](https://github.com/custom-cards/button-card) - [Card Mod](https://github.com/thomasloven/lovelace-card-mod) - [Declutter Card](https://github.com/custom-cards/decluttering-card) - [Home Assistant Swipe Navigation](https://github.com/zanna-37/hass-swipe-navigation) - [Home Assistant Swipe Navigation](https://github.com/zanna-37/hass-swipe-navigation) - [Hue Icon](https://github.com/arallsopp/hass-hue-icons) - [Hui Element](https://github.com/thomasloven/lovelace-hui-element) - [Layout Card](https://github.com/thomasloven/lovelace-layout-card) - [Light Popup Card](https://github.com/DBuit/light-popup-card) - [Lovelace Xiaomi Vacuum Map card](https://github.com/PiotrMachowski/lovelace-xiaomi-vacuum-map-card) - [Media Player Popup Card](https://github.com/DBuit/media_player-popup-card) - [Mini Graph Card](https://github.com/kalkih/mini-graph-card) - [RGB Light Card](https://github.com/bokub/rgb-light-card) - [Paper Button Rows](https://github.com/jcwillox/lovelace-paper-buttons-row) - [Sidebar Card](https://github.com/DBuit/sidebar-card) - [Simple Thermostat](https://github.com/nervetattoo/simple-thermostat) - [Slider Entity Row](https://github.com/thomasloven/lovelace-slider-entity-row) - [Stack in Card](https://github.com/custom-cards/stack-in-card) - [State Switch](https://github.com/thomasloven/lovelace-state-switch) - [Switch Popup Card](https://github.com/DBuit/switch-popup-card) - [Thermostat Popup Card](https://github.com/DBuit/thermostat-popup-card) - [Vertical Stack in Card](https://github.com/ofekashery/vertical-stack-in-card)

Voice Assistant

I'm currently utilizing Nabu Casa to leverage Google Assistant via the aforementioned Google Home devices to enable voice controls. I mainly use voice commands to trigger the lights, music, and theater system. I would like to setup voice commands for Winston and Kirby in the near future.

🕹 Devices

I have a Levovo Smart Tab M8 that is docked in my living room that I use to access my Lovelace Dashboards including my Home Theater controls in Home Assistant.

Multi Room Audio + Displays

I have a series of Google Home and Nest Mini's scattered throughout the apartment for the purpose of multi-room audio. The audio quality is subpar, but it gets the job done for now. I'm planning on updating to several pairs of Google Nest Audio smart speakers. Google Nest Mini Google Nest Audio Google Nest Hub Lenovo Smart Clock Lenovo M8 Smart Tablet
Google Home Mini Google Nest Audio Google Nest Hub Lenovo Smart Clock Lenovo M8 Smart Tablet

The Google Nest Hub lives in the loft and is used as a control panel, picture frame, and alarm clock. The Lenovo Smart Clock lives in the downstairs bedroom (referred to in HA as Office) for use as an alarm clock and simplified control panel.

Appliances

Dyson Pure Cool Purifying Fan TP04 Frigidaire Cool Connect Portable AC FGPC1244T1 Airmega 400S Air Purifier Roborock S4 Robot Vacuum LG Smart Washer WM3900HBA LG Smart Dryer DLEX3900B
Dyson TP04 Frigidaire Airmega 400S Air Purifier Roborock LG Smart Washer LG Smart Dryer

Climate

My climate situation is pretty simple, just a fan and portable AC. The Dyson air purifying fan (Kirby) lives in the loft and is WiFi enabled. Shortly after purchase I realized it lacked the ability to integrate with Google Assistant, this became a huge driver in me exploring Home Assistant. I was pleasantly surprised to learn it contains a temperature, humidity, aqi, and dust sesnor. I successfully integrated Kirby with Home Assistant and am utilizing the tempurature and humidity sensors in my Lovelace dashboard. The Climate Kirby automation was created to allow me to stop using the Dyson app for various scheduling functionality.

My apartment has casement windows so my AC options were fairly limited. The Frigidaire Cool Connect Portable AC (Ice Bear) was an easy decision due to it's high BTUs, small footprint, and WiFi conductivity. Unfortunately the smart functionality is incredibly limited and the Frigidaire app very slow to load, making less than ideal for controlling the unit. Thanks to bm1549 I was able to use the Fridigaire custom component to integrate Ice Bear with Home Assistant. This was a HUGE development as it means I can control the AC via Google Assistant as well.

Vacuum

The first floor of my apartment is serviced by a Roborock S4 named Winston. The Roborock S4 intrigued me due to it's lidar, smart mapping, and friendliness with Home Assistant. A lot of people report that you have to do a crazy hack switching the region in Mainland China, but I didn't have to do that, you can read more about my process/HA vacuum implimentation in the wiki under WINSTON my Roborock S4.

Lighting

I'm pretty deep into the Hue ecosystem sans my Sengled lightstrip. As a result I have my lights paired directly to the Hue app using the Hue bridge. The main reason I did this instead of utilizing my Raspbee II was so I can ensure my lights remain functional regardless of if Home Assistant is operational. This allows me a lot more flexibility to work with Home Assistant without adversely effecting the other people in my household. Hue Starter Kit BR30 White Ambiance Hue Color Sengled Light Strip
Hue Starter Kit BR30 White Ambiance Hue Color Sengled Light Strip

The only light outside the Hue ecosystem is my Sengled LED strip. I needed 6 feet of LEDs just for my stairs not to mention the other areas of the apartment, it would have been $79 for 6.5' of Hue lights where Sengled was ~$60 for 16.5'. The LED strip is hooked up directly to the Raspbee II.

Switches + Outlets

I have a series of smart plugs which I use to control various appliances. I recently migrated from Kasa HS103 outlets to Sengled plugs in order the strengthen my Zigbee network. Additionally, the Sengled plugs have engergy monitoring capabilities. Hue Smart Plug Sengled Energy Monitoring Plugs Kasa 3-plug Surge Lutron Aurora
Hue Smart Plug Sengled Energy Monitoring Plugs Kasa Surge Lutron Aurora

My old school analog marquee is controlled by the Hue plug which I opted for due to it's ability to be integrated with my other lights via the Hue ecosystem. Lastly, sometimes it's just quicker and quieter to turn on the lights with a switch, being a renter replacing my wall switches isn't appealing. Luckily I discovered Lutron Aurora dimmers which not only gives me a physical button but also a dimmer which I can map to one or many lights. I'm hoping to figure out a way to map secondary actions (double click, triple click, etc.), but the feasiblity is TBD.

Custom Icons

Inspired by matt8707, I created several custom icons which can be found in www/custom_icons.js. I leveraged material design principles and Guide to a Vector Drawing Program when designing and building the icons. I will be working on pulling in additional icons from various icon_templates over the next several weeks.

🎛 Lovelace Dashboards

Quick Access Controls

Code ``` ## Toggle Nav entities: - type: "custom:paper-buttons-row" buttons: ## General Button - entity: input_select.lighttoggle name: false icon: "mdi:home-assistant" state_styles: General: template: nav_button template: nav_styles tap_action: action: call-service service: input_select.select_option service_data: entity_id: input_select.lighttoggle option: General ## Entryway Button - entity: input_select.lighttoggle name: false icon: "mdi:coat-rack" state_styles: Entrway: template: nav_button template: nav_styles tap_action: action: call-service service: input_select.select_option service_data: entity_id: input_select.lighttoggle option: Entryway ## Expanded - type: "custom:state-switch" entity: input_select.lighttoggle default: Entryway transition: none states: ## General Controls General: type: "custom:mod-card" style: | ha-card { background: rgba(0,0,0,.3); padding: 10px; border-radius: 35px; margin-top: none; } card: type: grid columns: 3 cards: ## <--- Buttons ---> ## Entryway Controls General: type: "custom:mod-card" style: | ha-card { background: rgba(0,0,0,.3); padding: 10px; border-radius: 35px; margin-top: none; } card: type: grid columns: 3 cards: ## <--- Buttons ---> ```

Room Controls

Room Controls

Icons

Code ``` ## General Controls General: type: "custom:mod-card" style: | ha-card { background: rgba(0,0,0,.3); padding: 10px; border-radius: 35px; margin-top: none; } card: type: grid columns: 3 cards: ## Weather button - type: "custom:button-card" custom_fields: s2: | [[[ return states['sensor.aqi'].state + ' AQI' ]]] entity: weather.loft label: | [[[ return states['weather.climacell_nowcast'].attributes.temperature + '°F ' ]]] name: | [[[ return "Next hour " + states['weather.climacell_hourly'].attributes.forecast[1].temperature + '°F' ]]] template: - weather_layout - weather - icon_weather triggers_update: - sun.sun ## Entryway button - type: "custom:decluttering-card" template: declutter_room_button variables: - room: Entryway - light: light.group_hallway - sensor: binary_sensor.front_door - message_on: Door is open - message_off: Door is closed - icon_state: mdi:door-open - icon_default: custom:room-hallway ## Office button - type: "custom:decluttering-card" template: declutter_room_button variables: - room: Office - light: light.overhead - sensor: sensor.major_laser_printer - message_on: Printer on - message_off: Printer off - icon_state: mdi:printer - icon_default: custom:room-office ## Living Room button - type: "custom:decluttering-card" template: declutter_temp_button variables: - light: light.group_living_room - hvac: switch.switchbot - sensor_temp: sensor.temperature_living_room - message_on: Heat is on - message_off: Heat is off - icon_state: mdi:radiator - icon_default: custom:room-living - room: Living Room ## Kitchen button - type: "custom:decluttering-card" template: declutter_temp_button variables: - light: light.group_kitchen - hvac: fan.kitchen - sensor_temp: sensor.kitchen_temperature - message_on: Dyson is on - message_off: Dyson is off - icon_state: custom:room-kitchen - icon_default: custom:room-kitchen - room: Kitchen ## Loft button - type: "custom:decluttering-card" template: declutter_temp_button variables: - light: light.loft - hvac: fan.kirby - sensor_temp: sensor.kirby_temperature - message_on: Dyson is on - message_off: Dyson is off - icon_state: custom:room-loft - icon_default: custom:room-loft - room: Loft ```

Hallway Controls

Hallway Controls

Icons

Code ``` ## Entrway Controls Entryway: type: "custom:mod-card" style: | ha-card { background: rgba(0,0,0,.3); padding: 10px; border-radius: 35px; margin-top: none; } card: type: grid columns: 3 cards: ## Hallway Marquee - type: "custom:button-card" entity: light.hallway_marquee template: - icon_marquee ## Hallway Runner - type: "custom:button-card" entity: light.hallway_runner name: Runner template: - icon_led ## Potter Lamp - type: "custom:button-card" entity: light.potter_lamp name: Lamp template: - light_color - icon_lamp ## Stair Light - type: "custom:button-card" entity: light.stair name: Lamp template: - light - icon_spot ## Front Door Sensor - type: "custom:button-card" entity: binary_sensor.front_door template: - icon_door ## Hallway Smart Clock - type: custom:button-card entity: media_player.smart_clock name: Smart Clock template: - icon_smart_clock ```

Laundry Controls

Laundry Controls

Icons

## Guest Bathroom Controls
Laundry:
  type: "custom:mod-card"
  style: |
    ha-card { 
      background: rgba(0,0,0,.3); 
      padding: 10px; 
      border-radius: 35px; 
      margin-top: none; 
      }
  card:
    type: grid
    columns: 3
    cards:
## Washer
      - type: "custom:button-card"
        entity: sensor.washer
        name: Washer
        template:
          - icon_washer
## Dryer
      - type: "custom:button-card"
        entity: sensor.dryer
        name: Dryer
        template:
          - icon_dryer

Office Controls

Office Controls

Icons

## Office Controls
Office:
  type: "custom:mod-card"
  style: |
    ha-card { 
      background: rgba(0,0,0,.3); 
      padding: 10px; 
      border-radius: 35px; 
      margin-top: none; 
      }
  card:
    type: grid
    columns: 3
    cards:
## Office Overhead Lights
      - type: "custom:button-card"
        entity: light.overhead
        name: Ceiling
        template:
          - light
          - icon_recessed
## Printer
      - type: "custom:button-card"
        entity: switch.major_laser_printer
        name: Major Laser
        template: 
          - icon_printer
## Air Circulator
      - type: "custom:button-card"
        entity: switch.kettle
        name: Air Circulator
        template:
          - icon_circulator
## Office Google Home Mini
      - type: custom:button-card
        entity: media_player.office_speaker
        name: Home Mini
        template:
          - icon_nest_mini

Living Room Controls

Living Room Controls

Icons

## Living Room Controls
Living Room:
  type: "custom:mod-card"
  style: |
    ha-card { 
      background: rgba(0,0,0,.3); 
      padding: 10px; 
      border-radius: 35px; 
      margin-top: none; 
      }
  card:
    type: grid
    columns: 3
    cards:
## Track Light
      - type: "custom:button-card"
        entity: light.track
        name: Track
        template:
          - light_color
          - icon_spot
## Garden Light
      - type: "custom:button-card"
        entity: light.garden
        name: Garden
        template: 
          - icon_garden
## Yumi Lamp
      - type: "custom:button-card"
        entity: light.yumi_lamp
        name: Lamp
        template:
          - light_color
          - icon_lamp
## Heater
      - type: "custom:button-card"
        entity: switch.switchbot
        template:
          - icon_heater
## Living Room Air Circulator
      - type: "custom:button-card"
        entity: switch.air_circulator
        name: Air Circulator
        template:
          - icon_circulator
## Ice Bear
      - type: "custom:button-card"
        entity: climate.ice_bear
        name: Air Conditioner
        double_tap_action:
          action: more-info                  
        template:
          - icon_ac
        variables:
          circle_input: >
            [[[
              return entity === undefined ?
                null :
                entity.attributes.temperature;
            ]]]
## Shield
      - type: "custom:button-card"
        entity: media_player.shield_tv
        tap_action:
          action: toggle
        template:
          - icon_tv

Kitchen Controls

Kitchen Controls

Icons

Code ``` ## Kitchen Controls Kitchen: type: "custom:mod-card" style: | ha-card { background: rgba(0,0,0,.3); padding: 10px; border-radius: 35px; margin-top: none; } card: type: grid columns: 3 cards: ## Kitchen Track - type: "custom:button-card" entity: light.kitchen name: Track template: - light_color - icon_spot ## Nanoleaf Dino Panesl - type: "custom:button-card" entity: light.nanoleaf template: - icon_dinopanel ## Kitchen Google Home Mini - type: custom:button-card entity: media_player.living_room_speaker name: Home Mini template: - icon_nest_mini ## Kitchen Dyson - type: "custom:button-card" entity: fan.kitchen name: Dyson template: - icon_dyson ```

Loft Controls

Loft Controls

Icons

Code ``` ## Loft Controls Loft: type: "custom:mod-card" style: | ha-card { background: rgba(0,0,0,.3); padding: 10px; border-radius: 35px; margin-top: none; } card: type: grid columns: 3 cards: ## Bedside Lights - type: "custom:button-card" entity: light.bedside name: Bedside template: - icon_bedside ## His Light - type: "custom:button-card" entity: light.jeffreys_lamp name: Jeffrey's template: - icon_bed ## Her Light - type: "custom:button-card" entity: light.tiffanys_lamp name: Tiffany's template: - icon_bed ## Bed Track - type: "custom:button-card" entity: light.loft_bed_light name: Ceiling template: - light - icon_spot ## Desk Lights - type: "custom:button-card" entity: light.loft_desk_lamp name: Desk template: - light - icon_lamp ## Dyson - type: "custom:button-card" entity: fan.kirby name: Dyson template: - icon_dyson ## Loft Nest Hub - type: custom:button-card entity: media_player.loft_nest_hub name: Nest Hub template: - icon_nest_hub ```

🤖 Automations

🌡 Climate

Before Home Assistant, I had several schedules setup for my two air purifiers in the Dyson App. I was able to easily replace those with two automations in HA, eliminating my need to use the proprietary Dyston App. My air circulators which are hooked up to Kasa smart plugs, utilitze two of my favorite automations. One turns on the downstairs fan when the tempurature in the Loft is ≥72° and off when ≤71°, the other turns the office fan on/off based on the state of the lights in the room.

Automations - [Climate Kirby](includes/automations/climate_kirby.yaml): Trigger [Kirby: Daytime](includes/scenes/kirby_daymode.yaml) @ 8 am + [Kirby: Nighttime](includes/scenes/kirby_nightmode.yaml) @ 9 pm. - [Climate Loft](includes/automations/climate_loft.yaml): Turn on fan when Loft is ≥72° and off when ≤71°. - [Climate Office Off](includes/automations/climate_office_off.yaml): Turn fan OFF based off of Overhead light group. - [Climate Office On](includes/automations/climate_office_on.yaml): Turn fan ON based off of Overhead light group.

🎚 Dimmer

Lutton Aurora dimmers have been a game changer in my home automations setup. They are natively supported by Philips Hue and as a renter, they are the perfect solution as to mount onto the existing light switch. Not all my lights are in the Hue ecosystem, so I've created automations to allow the dimmers to control my Sengled LED light strip and various Kasa smart plugs.

Automations - [Dimmer Hallway](includes/automations/dimmer_hallway.yaml): Trigger runner light with Lutron Aurora switch. - [Dimmer Office](includes/automations/dimmer_office.yaml): Trigger office lights with Lutron Aurora switch.

📬 Notifications

I currently have notifications set to be delivered via one of two channels Telegram or the Smartphone Group. Telegram is used to notify about server boot up to aid with troubleshooting while the Smartphone Group leverages the companion app to surface in-app notifications.

Automations - [Notify AQI](includes/automations/notify_aqi.yaml): Notify Smartphones when AQI is >75. - [Notify Dryer](includes/automations/notify_dryer.yaml): Notify smartphones when dryer is complete. - [Notify Heat Wave](includes/automations/notify_heatwave.yaml): Notify smartphones when tomorrows high is >75 °F. - [Notify Printer](includes/automations/notification_printer.yaml): Notify Smartphones when Major Laser Printer is ready. - [Notify Washer](includes/automations/notify_washer.yaml): Notify smartphones when washer is complete. - [Peak Usage Alerts](includes/automations/peak_usage_alerts.yaml): Notify Smartphones when AC, Washer, or Dryer is on during peak usage. - [Server Boot Up](includes/automations/server_boot_up.yaml): Notify via Telegram when server has booted up. - [Server Reboot](includes/automations/server_reboot.yaml): Telegram notification that alerts of server reboot, restart, or shutdown.

🚪 Presence

I decided to take a unique approach to presence automations and forgo the use of motion sensors, in favor of manual triggers before leaving the apartment. I have an Aqara Mini Switch next to the door, which triggers automations based on the number of button clicks and status of the front door sensor.

Automations - [Leave Home](includes/automations/leave_home.yaml): Notify smartphones of door status + turn off lights accordingly. - [Leave Vacuum](includes/automations/leave_vacuum.yaml): Notify smartphones of door status + turn off lights + vacuum.

🔌 Shutoff

Vampire drain is a problem, especially when your power company charges different rates depending on the time of day. There are a lot of devices thats only need to be powered briefly to do their job. My printer + paper shredder are setup to turn-off after a set period of time, limiting their idle power usage to minutes instead of hours or days.

Automations - [Charge Toothbrushes](includes/automations/charge_toothbrushes.yaml): Start charging toothbrushes at 12 am and stop at 4 am. - [Printer Shutoff](includes/automations/shutoff_printer.yaml): Shutoff plug to printer 15-minutes after device has been switched on. - [Shutdown Shredder](includes/automations/shutoff_shredder.yaml): Shutoff plug to paper shredder 2-minutes after device has been switched on.

🧹 Vacuum

Winston my trusty robot vacuum is scheduled to clean the most trafficed areas of my apartment (hallway + kitchen) Monday - Friday, the remaining rooms (office + living room + bathroom) are cleaned on Tuesdays and Thursdays. Creating these automations allowed me to stop using the Mi Home App.

Automations - [Select Vacuum Speed](includes/automations/select_vacuum_speed.yaml): Adds vacuum.set_fan_speed service calls to Vacuum Speed Helper. - [Vacuum Clean](includes/automations/vacuum_clean.yaml): Notify Smartphones when Winston starts cleaning. - [Vacuum Docked](includes/automations/vacuum_done.yaml): Notify Smartphones when Winston has returned to dock. - [Vacuum Done](includes/automations/vacuum_done.yaml): Notify Smartphones when Winston has completed cleaning. - [Vacuum Schedule](includes/automations/vacuum_schedule.yaml): Clean hallway + kitchen @ 10:30 pm M - F & clean bathroom + office + living room @ 10:30 pm T and TH.

🎰 Various

The remaining automations are super useful, but don't fit into any specific category. This includes alerts for water leaks, scheduled volume controls for Google Home devices, and an on air light to indicate when a video call is in progress.

Automations - [Alert Leak](includes/automations/alert_leak.yaml): Alert when water is detected under the sink or dishwasher. - [Mood Television](includes/automations/mood_television.yaml): Television scene + Denon Nighttime quick select. - [Mood Theater](includes/automations/mood_theater.yaml): Theater scene + Denon Theater quick select. - [Office Available](includes/automations/office_available.yaml): Turn Potter light magenta when webcam turns off. - [Office Busy](includes/automations/office_busy.yaml): Turn Potter light red when webcam turns on. - [Set Theme](includes/automations/set_theme.yaml): Set theme at Home Assistant start. - [Volume Home](includes/automations/volume_home.yaml): Turn down volume of Google Home device at 10 pm.

📢 Shoutouts and Inspirition

If you like my Lovelace setup be sure to checkout those who influenced me:

crixle

I was racking my brain as to how I could reducing the number of clicks required to control my smart home. A Reddit post with crixle's Light Control Card inspired me to create my Quick Access Controls.

eximo84

The Room Controls buttons leverage code from eximo84's Weather and Light buttons.

matt8707

The original inspiration for overauling my Lovelace dashboard was kicked-off when I stumbled upon A different take on designing a Lovelace UI.

My approach to button templates was heavily influence by Matt's button_card_templates.yaml. His approach to custom icons also inspired me to learn how to create SVGs in Inkspace and SVGator. Matt's work gave me the push to move towards a 100% yaml approach to my Lovelace dashboard and greatly increased my all around technical knowledge.

👋

Thanks for reading, please star if your are interested in the project.