GithubHelp home page GithubHelp logo

my-ha-setup's Introduction

Home Assistant setup

This layout was designed mobile-first.

hero_shot

Background

Home Assistant Core installation on Raspberry Pi 4, with MySQL.

More details here.


Skip to lovelace layout

Custom implementations

These are some of my custom implementations using Home Assistant:

Alexa devices control

With custom component Alexa Media Player, Home Assistant is able to control any thing that you're able to speak to Alexa.

This requires the use of input_boolean helpers to control the state of the entity.

E.g. to control a plug...

# configuration.yaml
switch:
  platform: template
  switches: 
    6a_plug:
      value_template: "{{ is_state('input_boolean.6a_plug_state', 'on') }}"
      turn_on:
        - service: input_boolean.turn_on
          entity_id: input_boolean.16a_plug_state
        - service: media_player.play_media
          entity_id: media_player.new_room_echo
          # Preferably set an Echo device that is rarely used as the echo device actually carries out the command in the foreground
          data:
            media_content_id: 'turn on 6a plug'
            media_content_type: custom
      turn_off:
        - service: input_boolean.turn_off
          entity_id: input_boolean.6a_plug_state
        - service: media_player.play_media
          entity_id: media_player.new_room_echo
          data:
            media_content_id: 'turn off 6a plug'
            media_content_type: custom

Internet health

Shows internet packet loss in %, if any. Useful for real-time applications like gaming or VoIP calls.

# configuration.yaml
binary_sensor:
  - platform: ping
    name: Cloudflare DNS ping
    host: 1.1.1.1
    count: 1
    scan_interval: 2
sensor:
  - platform: history_stats
    name: int_internet_health
    entity_id: binary_sensor.cloudflare_dns_ping
    state: "on"
    type: ratio
    end: "{{ now() }}"
    duration: 00:05:00
  - platform: template
    sensors: 
      internet_health:
        friendly_name: Internet Health
        value_template: "{{ states('sensor.int_internet_health') | round }}"
        icon_template: mdi:ethernet-cable
        unit_of_measurement: '%'

Lo-fi beats

Plays Lo-fi beats live stream from YouTube.

This requires screen, mpv and youtube-dl/youtube-dlc to be installed.

# configuration.yaml
switch:
  platform: command_line
  switches:
    lofi_beats:
      command_on: echo "lofi_on" | netcat localhost 7900
      command_off: echo "lofi_off" | netcat localhost 7900

socat runs in the background (systemd service file) and listens for commands.

Once a switch is turned on, this script is called that starts the playback...

hass_socket_script.sh:

#!/bin/bash
read MESSAGE

if [[ $MESSAGE == 'lofi_on' ]]; then 
  screen -S lofi -dm /usr/bin/mpv --no-video $(/path/to/youtube-dlc -g -f 95 5qap5aO4i9A); fi
if [[ $MESSAGE == 'lofi_off' ]]; then screen -S lofi -X quit; fi
# Truncated. Full in ./hass_socket_script.sh

Soundbar control

Controls the volume of ALSA - 3.5mm port on the Raspberry Pi. Requires alsamixer to be installed.

This involves a input_number helper, an automation and a series of shell commands.

# configuration.yaml
input_number:
  pi_volume:
    min: 0
    max: 100
    step: 5
automation: 
  - alias: Set soundbar volume
    trigger:
    - platform: state
      entity_id: input_number.pi_volume
    action:
    - service_template: shell_command.pi_volume_{{ trigger.to_state.state | int }}
shell_command:
  pi_volume_0: echo amixer_0 | netcat localhost 7900
  pi_volume_5: echo amixer_5 | netcat localhost 7900
# Truncated. Full in ./config

Similar to above, the script calls the command amixer to increase or decrease the volume...

hass_socket_script.sh:

#!/bin/bash

if [[ $MESSAGE == 'amixer_0' ]]; then amixer -q cset numid=1 -- -10239; fi
if [[ $MESSAGE == 'amixer_5' ]]; then amixer -q cset numid=1 -- -7399; fi
# Truncated. Full in ./hass_socket_script.sh

Lovelace layout

Dashboard

Jump to lovelace code

home_view

All cards in this view are in a single vertical stack.

Badges

  • CPU use
  • System load
  • Network in
  • Network out
  • HACS updates

This is the only view that contain badges.

Vertical stack 1

State row

  • /drive mount
  • ASUS laptop
  • always-on server
  • Front gate camera
  • Mesh router satellite

Lights card

  • Desk light
    • ... Color temp card
  • TV lamp
    • ... RGB card
  • Soundbar volume

Custom implementation that controls alsa volume, using input_boolean, shell_command and an automation.

Switch row I

  • Night light
  • TV lamp - Color flow
  • Lo-Fi beats
  • Lo-Fi beats 2
  • Jazz radio

Switch row II

  • AdGuard Home
  • Bedroom AC
  • Refresh Plex
  • qBittorrent alt. speed mode
  • 16A plug

Vertical stack 2

Graph row I

  • Bedroom temperature
  • Bedroom humidity

Indicates if there's any packet loss within the last hour.

Now Playing card

  • Automatically lists all active media players

Controls view

Jump to lovelace code

controls_view

Vertical stack 1

  • Front gate camera
  • Adaptive Lighting switches

Vertical stack 2

  • Bedroom AC
    • ... addl. controls

Info view

Jump to lovelace code

info_view

Vertical stack 1

TV state row

Tracks states of specific TVs.

Graph row I

  • CPU temp.
  • Internet health

Graph row II

  • Download speed (Speedtest.net)
  • Upload speed (Speedtest.net)

Custom-made sensor that uses the official Speedtest.net CLI instead of the rather inaccurate speedtest-cli.

Graph row III

  • Current network in/out
  • Today total traffic in/out

A combined card that graphs network usage within the last hour.

Custom-made sensor that gets network traffic from vnstat.

Vertical stack 2

Info row I

  • qBittorrent active torrents
  • qBittorrent upload/download speed

Info row II

  • SSD free %
  • /knox free %
  • /knox free space

Tile view

Jump to lovelace code

tile_view

Vertical stack 1

Internet graphs

  • Node ping
  • Internet ping

Graphs pings to local ISP node and Cloudflare DNS. This card is very helpful in isolating network issues.

Radarr/Sonarr cards

  • Radarr/Sonarr ongoing commands
  • Radarr/Sonarr queue

Vertical stack 2

Devices card

  • Network devices list

Using the Netgear integration, this card shows all network-connected devices. Dynamically sorted such that the last updated device is always on top.


Remote control view

Jump to lovelace code

rc_view

Spotify player

  • Spotify media player
    • Playlist shortcuts
    • Soundbar source
    • Bedroom Echo source

Alexa players

  • Household Echo media players
  • ... switches
    • Do Not Disturb
    • Repeat
    • Shuffle
  • Alexa Everywhere media player

Plex/TV view

Jump to lovelace code

plex_view

Vertical stack 1

Graph row I

  • Plex currently watching
  • Tautulli current bandwidth

Graph row II

  • Network in
  • Network out

The four graph cards provide an overview of Plex/network activity in one place and indicates potential network issues.

Vertical stack 2

Plex/TV players

  • Conditional cards...
    • Header cards
    • TV player cards
    • Plex media players

Custom plugins used

Integrations

Lovelace


Notes

  • Screenshots may not be up-to-date.
  • int are "internal" entities that are used inside templates.
  • Shutting down/Rebooting X200M involves a program named Assistant Computer Control that runs on the laptop.
    • A cURL request calls a IFTTT webhook which writes a specific phrase in a file inside OneDrive that the software is able to recognize and perform actions accordingly.
  • The header that is used for separating cards is from soft-ui.

Special thanks

  • to all authors above,
  • and all the very helpful folks over at the Discord.

my-ha-setup's People

Contributors

agneevx avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.