feat(hass): hide remote if unavailable
All checks were successful
Discord / discord commits (push) Has been skipped
All checks were successful
Discord / discord commits (push) Has been skipped
This commit is contained in:
parent
e46261e140
commit
1148c8edef
1 changed files with 185 additions and 180 deletions
|
@ -2,10 +2,12 @@
|
||||||
caule-themes-src,
|
caule-themes-src,
|
||||||
dracul-ha-src,
|
dracul-ha-src,
|
||||||
material-rounded-theme-src,
|
material-rounded-theme-src,
|
||||||
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
self,
|
self,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
|
inherit (lib) singleton;
|
||||||
inherit (pkgs.writers) writeYAML;
|
inherit (pkgs.writers) writeYAML;
|
||||||
in {
|
in {
|
||||||
services.home-assistant = {
|
services.home-assistant = {
|
||||||
|
@ -109,201 +111,204 @@ in {
|
||||||
|
|
||||||
config.template = [
|
config.template = [
|
||||||
{
|
{
|
||||||
sensor = [
|
sensor = singleton {
|
||||||
{
|
name = "Material Rounded Base Color Matt";
|
||||||
name = "Material Rounded Base Color Matt";
|
unique_id = "material_rounded_base_color_matt";
|
||||||
unique_id = "material_rounded_base_color_matt";
|
state = ''{{ states("sensor.pixel_8_accent_color") }}'';
|
||||||
state = ''{{ states("sensor.pixel_8_accent_color") }}'';
|
};
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
lovelaceConfig = {
|
lovelaceConfig = {
|
||||||
title = "Our House";
|
title = "Our House";
|
||||||
views = [
|
# I don't want multiple views
|
||||||
{
|
views = singleton {
|
||||||
path = "home";
|
path = "home";
|
||||||
title = "Home";
|
title = "Home";
|
||||||
cards = [
|
cards = [
|
||||||
{
|
{
|
||||||
type = "entities";
|
type = "entities";
|
||||||
entities = [
|
entities = [
|
||||||
"switch.smartplug1"
|
"switch.smartplug1"
|
||||||
"switch.smartplug3"
|
"switch.smartplug3"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
type = "entities";
|
type = "entities";
|
||||||
entities = [
|
entities = [
|
||||||
"timer.assist_timer1"
|
"timer.assist_timer1"
|
||||||
"timer.assist_timer2"
|
"timer.assist_timer2"
|
||||||
"timer.assist_timer3"
|
"timer.assist_timer3"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
type = "custom:android-tv-card";
|
type = "custom:android-tv-card";
|
||||||
|
|
||||||
media_player_id = "media_player.living_room_speaker";
|
visibility = singleton {
|
||||||
keyboard_id = "remote.android_tv_192_168_0_106";
|
condition = "state";
|
||||||
remote_id = "remote.onn_4k_streaming_box";
|
entity = "remote.onn_4k_streaming_box";
|
||||||
|
state_not = ["unavailable" "unknown"];
|
||||||
|
};
|
||||||
|
|
||||||
rows = [
|
media_player_id = "media_player.living_room_speaker";
|
||||||
"navigation_buttons"
|
keyboard_id = "remote.android_tv_192_168_0_106";
|
||||||
[null "slider" null]
|
remote_id = "remote.onn_4k_streaming_box";
|
||||||
[null]
|
|
||||||
["jellyfin" "home" "back" "keyboard"]
|
|
||||||
[null]
|
|
||||||
];
|
|
||||||
|
|
||||||
custom_actions = [
|
rows = [
|
||||||
{
|
"navigation_buttons"
|
||||||
name = "center";
|
[null "slider" null]
|
||||||
type = "button";
|
[null]
|
||||||
icon = "mdi:checkbox-blank-circle";
|
["jellyfin" "home" "back" "keyboard"]
|
||||||
|
[null]
|
||||||
|
];
|
||||||
|
|
||||||
styles = ''
|
custom_actions = [
|
||||||
:host {
|
{
|
||||||
--icon-color: rgb(94, 94, 94);
|
name = "center";
|
||||||
--size: 200px;
|
type = "button";
|
||||||
background: rgb(31, 31, 31);
|
icon = "mdi:checkbox-blank-circle";
|
||||||
border-radius: 200px;
|
|
||||||
margin: -70px;
|
|
||||||
padding: 70px;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
|
|
||||||
tap_action = {
|
styles = ''
|
||||||
action = "key";
|
:host {
|
||||||
key = "DPAD_CENTER";
|
--icon-color: rgb(94, 94, 94);
|
||||||
|
--size: 200px;
|
||||||
|
background: rgb(31, 31, 31);
|
||||||
|
border-radius: 200px;
|
||||||
|
margin: -70px;
|
||||||
|
padding: 70px;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
tap_action = {
|
||||||
|
action = "key";
|
||||||
|
key = "DPAD_CENTER";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "up";
|
||||||
|
type = "button";
|
||||||
|
icon = "mdi:chevron-up";
|
||||||
|
|
||||||
|
styles = ''
|
||||||
|
:host {
|
||||||
|
--icon-color: rgb(197, 199, 197);
|
||||||
|
z-index: 2;
|
||||||
|
top: 25px;
|
||||||
|
height: 90px;
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
hold_action = {action = "repeat";};
|
||||||
|
tap_action = {
|
||||||
|
action = "key";
|
||||||
|
key = "DPAD_UP";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "down";
|
||||||
|
type = "button";
|
||||||
|
icon = "mdi:chevron-down";
|
||||||
|
|
||||||
|
styles = ''
|
||||||
|
:host {
|
||||||
|
--icon-color: rgb(197, 199, 197);
|
||||||
|
z-index: 2;
|
||||||
|
bottom: 25px;
|
||||||
|
height: 90px;
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
hold_action = {action = "repeat";};
|
||||||
|
tap_action = {
|
||||||
|
action = "key";
|
||||||
|
key = "DPAD_DOWN";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "left";
|
||||||
|
type = "button";
|
||||||
|
icon = "mdi:chevron-left";
|
||||||
|
|
||||||
|
styles = ''
|
||||||
|
:host {
|
||||||
|
--icon-color: rgb(197, 199, 197);
|
||||||
|
z-index: 2;
|
||||||
|
left: 30px;
|
||||||
|
height: 170px;
|
||||||
|
width: 90px;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
hold_action = {action = "repeat";};
|
||||||
|
tap_action = {
|
||||||
|
action = "key";
|
||||||
|
key = "DPAD_LEFT";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "right";
|
||||||
|
type = "button";
|
||||||
|
icon = "mdi:chevron-right";
|
||||||
|
|
||||||
|
styles = ''
|
||||||
|
:host {
|
||||||
|
--icon-color: rgb(197, 199, 197);
|
||||||
|
z-index: 2;
|
||||||
|
right: 30px;
|
||||||
|
height: 170px;
|
||||||
|
width: 90px;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
hold_action = {action = "repeat";};
|
||||||
|
tap_action = {
|
||||||
|
action = "key";
|
||||||
|
key = "DPAD_RIGHT";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "slider";
|
||||||
|
type = "slider";
|
||||||
|
icon = "mdi:volume-high";
|
||||||
|
|
||||||
|
range = [0 1];
|
||||||
|
step = 0.01;
|
||||||
|
|
||||||
|
tap_action = {
|
||||||
|
action = "perform-action";
|
||||||
|
perform_action = "media_player.volume_set";
|
||||||
|
data = {
|
||||||
|
volume_level = "{{ value | float }}";
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
|
value_attribute = "volume_level";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
{
|
styles = ''
|
||||||
name = "up";
|
#row-1 {
|
||||||
type = "button";
|
justify-content: center;
|
||||||
icon = "mdi:chevron-up";
|
}
|
||||||
|
|
||||||
styles = ''
|
#row-2 {
|
||||||
:host {
|
justify-content: center;
|
||||||
--icon-color: rgb(197, 199, 197);
|
}
|
||||||
z-index: 2;
|
|
||||||
top: 25px;
|
|
||||||
height: 90px;
|
|
||||||
width: 300px;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
|
|
||||||
hold_action = {action = "repeat";};
|
#row-3 {
|
||||||
tap_action = {
|
justify-content: center;
|
||||||
action = "key";
|
}
|
||||||
key = "DPAD_UP";
|
'';
|
||||||
};
|
}
|
||||||
}
|
];
|
||||||
|
};
|
||||||
{
|
|
||||||
name = "down";
|
|
||||||
type = "button";
|
|
||||||
icon = "mdi:chevron-down";
|
|
||||||
|
|
||||||
styles = ''
|
|
||||||
:host {
|
|
||||||
--icon-color: rgb(197, 199, 197);
|
|
||||||
z-index: 2;
|
|
||||||
bottom: 25px;
|
|
||||||
height: 90px;
|
|
||||||
width: 300px;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
|
|
||||||
hold_action = {action = "repeat";};
|
|
||||||
tap_action = {
|
|
||||||
action = "key";
|
|
||||||
key = "DPAD_DOWN";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
name = "left";
|
|
||||||
type = "button";
|
|
||||||
icon = "mdi:chevron-left";
|
|
||||||
|
|
||||||
styles = ''
|
|
||||||
:host {
|
|
||||||
--icon-color: rgb(197, 199, 197);
|
|
||||||
z-index: 2;
|
|
||||||
left: 30px;
|
|
||||||
height: 170px;
|
|
||||||
width: 90px;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
|
|
||||||
hold_action = {action = "repeat";};
|
|
||||||
tap_action = {
|
|
||||||
action = "key";
|
|
||||||
key = "DPAD_LEFT";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
name = "right";
|
|
||||||
type = "button";
|
|
||||||
icon = "mdi:chevron-right";
|
|
||||||
|
|
||||||
styles = ''
|
|
||||||
:host {
|
|
||||||
--icon-color: rgb(197, 199, 197);
|
|
||||||
z-index: 2;
|
|
||||||
right: 30px;
|
|
||||||
height: 170px;
|
|
||||||
width: 90px;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
|
|
||||||
hold_action = {action = "repeat";};
|
|
||||||
tap_action = {
|
|
||||||
action = "key";
|
|
||||||
key = "DPAD_RIGHT";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
name = "slider";
|
|
||||||
type = "slider";
|
|
||||||
icon = "mdi:volume-high";
|
|
||||||
|
|
||||||
range = [0 1];
|
|
||||||
step = 0.01;
|
|
||||||
|
|
||||||
tap_action = {
|
|
||||||
action = "perform-action";
|
|
||||||
perform_action = "media_player.volume_set";
|
|
||||||
data = {
|
|
||||||
volume_level = "{{ value | float }}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
value_attribute = "volume_level";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
styles = ''
|
|
||||||
#row-1 {
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#row-2 {
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#row-3 {
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config.lovelace.dashboards = {
|
config.lovelace.dashboards = {
|
||||||
|
|
Loading…
Reference in a new issue