agneevX / My Ha Setup
Programming Languages
Labels
Projects that are alternatives of or similar to My Ha Setup
Home Assistant setup
This layout was designed mobile-first.
- Home Assistant setup
Background
Home Assistant Core installation on Raspberry Pi 4, with MySQL.
More details here.
Custom implementations
These are some of my custom implementations using Home Assistant.
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
:
# Truncated. Full in ./config
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
Similar to above, the script calls the command amixer
to increase/decrease the volume...
hass_socket_script.sh
:
#!/bin/bash
read MESSAGE
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
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
Lovelace layout
Dashboard
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
Vertical stack 1
- Front gate camera
- Adaptive Lighting switches
Vertical stack 2
- Bedroom AC
- ... addl. controls
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
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
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
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
-
auto-entities
by thomasloven -
button-card
by RomRider -
card-mod
by thomasloven -
config-template-card
by iantrich -
custom-header
by maykar -
lovelace-swipe-navigation
by maykar -
mini-graph-card
by kalkih -
mini-media-player
by kalkih -
rgb-light-card
by bokub -
simple-thermostat
by nervetattoo -
slider-entity-row
by thomasloven -
vertical-stack-in-card
by ofekashery
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.