Hi, I’m not advanced enough to make what I want work (if possible) so I’m asking for help
I have 2 Nest Protect in my house, I’ve setup the cards and alerts but there is one more sensor I find interesting:
* color_status:
gray,
green,
yellow, or
red . Indicates device status by color in the Nest app UI. It is an aggregate condition for battery+smoke+CO states, and reflects the actual color indicators displayed in the Nest app.
My idea would be to configure automations to change the entire card with the color the sensor (card background in themes).
Would this be possible? And if so, could anyone help me with this?
I’m not sure its possible without a Custom UI as mentioned in this thread . I’m running Hass.io so I’m not sure this UI is compatible or not.
I’ve tried several suggestions on the forum without success as I also have the Nest protects.
customize:
sensor.upstairs_nest_protect_smoke_status:
icon: mdi:fire
templates:
hs_color: >
if (state === Ok) return 'rgb(124, 252, 0)';
else return 'rgb(255, 0, 0)';
or
customize:
sensor.upstairs_nest_protect_smoke_status:
icon: mdi:fire
templates:
rgb_color: >
if (state === Ok) return 'rgb(124, 252, 0)';
else return 'rgb(255, 0, 0)';
Neither config appears to make any change to the Icon colour in either LoveLace UI or the old interface. Someone else maybe able to advise on a solution.
This is the best I could come up with using the Lovelace UI Picture Entity Card
- type: vertical-stack
cards:
- type: glance
title: Nest Protect
entities:
- entity: binary_sensor.upstairs_nest_protect_online
name: Online
- entity: sensor.upstairs_nest_protect_battery_health
name: Battery
- entity: sensor.upstairs_nest_protect_color_status
name: Status
- type: horizontal-stack
cards:
- type: picture-entity
entity: sensor.upstairs_nest_protect_smoke_status
name: Smoke
state_image:
"Ok": /local/nest-icons/nest-protect-green.png
"Warning": /local/nest-icons/nest-protect-yellow.png
"Emergency": /local/nest-icons/nest-protect-red.png
- type: picture-entity
entity: sensor.upstairs_nest_protect_co_status
name: CO
state_image:
"Ok": /local/nest-icons/nest-protect-green.png
"Warning": /local/nest-icons/nest-protect-yellow.png
"Emergency": /local/nest-icons/nest-protect-red.png
This card type will change the picture for both CO and Smoke depending on ‘state’
3 Likes
noodlemctwoodle:
type: picture-entity entity: sensor.upstairs_nest_protect_smoke_status name: Smoke state_image: “Ok”: /local/nest-icons/nest-protect-green.png “Warning”: /local/nest-icons/nest-protect-yellow.png “Emergency”: /local/nest-icons/nest-protect-red.png
Awesome! Thanks.
Based on your idea, I created the same but using the color sensor for the images.
Better than what I wanted originally, thanks again!!!
Here are the cards (if anyone interested):
- id: fe51af78f6e5485e9318cbc92e11f559 # Automatically created id
type: vertical-stack
cards:
- type: horizontal-stack
cards:
- type: picture-entity
entity: sensor.1er_etage_nest_protect_color_status
name: Nest-Protect 1er
state_image:
"green": /local/nest-protect/nestprotect-green.png
"yellow": /local/nest-protect/nestprotect-yellow.png
"red": /local/nest-protect/nestprotect-red.png
"gray": /local/nest-protect/nestprotect-gray.png
- type: picture-entity
entity: sensor.basement_nest_protect_color_status
name: Nest-Protect sous-sol
state_image:
"green": /local/nest-protect/nestprotect-green.png
"yellow": /local/nest-protect/nestprotect-yellow.png
"red": /local/nest-protect/nestprotect-red.png
"gray": /local/nest-protect/nestprotect-gray.png
- type: glance
title: Nest-Protect
columns: 4
show_header_toggle: true
entities:
- binary_sensor.1er_etage_nest_protect_online
- sensor.1er_etage_nest_protect_smoke_status
- sensor.1er_etage_nest_protect_co_status
- sensor.1er_etage_nest_protect_battery_health
- binary_sensor.basement_nest_protect_online
- sensor.basement_nest_protect_smoke_status
- sensor.basement_nest_protect_co_status
- sensor.basement_nest_protect_battery_health
and my images (manually did the circles so it pops up more than the actual photo witht the ring color):
4 Likes
Perfect glad to help.
I have uploaded the changes to me GitHub Repo with all the pictures I used.
1 Like
What exactly is the gray state in the color sensor?
I’ve personally never seen the Nest Protect light up grey.
I thought basing the picture entity off of the ‘Ok’, ‘Warning’ or ‘Emergency’ state and also having the colour state in the glance card gives me double protection any of the possible states.
On second thoughts ‘Grey’ could be the ‘Pathway’ feature if you have it enabled.
would make sense maybe… I need to find a way to trigger it to confirm…
I prefer yours on second thought…
Just need a gray one like this
hijinx
(James)
March 29, 2019, 5:23pm
10
Thanks @noodlemctwoodle and @sfnetwork for the inputs - nice work
For the grey I used an image editor to desaturate one of the coloured images.
SP410
(SP410)
November 3, 2019, 4:48am
11
@noodlemctwoodle , I just found this and it helped immensely. Thanks
@SP410 Perfect, glad to have helped!
stef1411
(Stef1411)
June 9, 2022, 12:07pm
13
@sfnetwork how did you define the color status? in the default config there is no sensor called collor status.
1 Like
Hi, for the latest custom component for Nest Protect (GitHub - iMicknl/ha-nest-protect: Nest Protect integration for Home Assistant. This will allow you to integrate your smoke, heat, co and occupancy status real-time in HA. ) I have written a lovelace view based on the icons shared in this topic.
I have set an animation to have them blink in case of heat, smoke or co detection. Code below
type: custom:auto-entities
card:
square: false
columns: 4
type: grid
card_param: cards
filter:
include:
- entity_id: '*nest_protect*'
attributes:
device_class: heat
options:
type: vertical-stack
cards:
- type: custom:button-card
show_name: false
show_icon: false
aspect_ratio: 1/1
extra_styles: |
@keyframes bgswap_red {
0% {
background-image: url("/local/images/protect/nestprotect-grey.png");
}
50% {
background-image: url("/local/images/protect/nestprotect-red.png");
}
100% {
background-image: url("/local/images/protect/nestprotect-grey.png");
}
}
@keyframes bgswap_green {
0% {
background-image: url("/local/images/protect/nestprotect-grey.png");
}
50% {
background-image: url("/local/images/protect/nestprotect-green.png");
}
100% {
background-image: url("/local/images/protect/nestprotect-grey.png");
}
}
@keyframes bgswap_grey {
0% {
background-image: url("/local/images/protect/nestprotect-grey.png");
}
100% {
background-image: url("/local/images/protect/nestprotect-grey.png");
}
}
styles:
card:
- animation: >
[[[ if
(states[entity.entity_id.replace('heat','smoke')].state ==
'off' && states[entity.entity_id.replace('heat','co')].state
== 'off') return 'bgswap_grey 2s linear infinite'; else
return 'bgswap_red 2s linear infinite';]]]
- background-size: cover
entity: this.entity_id
- show_name: true
show_icon: false
type: custom:button-card
tap_action:
action: toggle
entity: this.entity_id
styles:
name:
- font-size: 12px
sort:
method: name
numeric: false
reverse: false
Enjoy
Since I had 2 protects that were having a low battery, used the yellow color to have them light up
1 Like
sbakker
(Sander)
April 17, 2024, 8:20pm
17
Nice.
Can you please share your code?
regards,
Sander
Sure, here your go
type: custom:auto-entities
card:
square: false
columns: 5
type: grid
card_param: cards
filter:
include:
- entity_id: /binary_sensor.rookmelder_.*smoke|binary_sensor.smoke_sensor_.*/
options:
type: vertical-stack
cards:
- type: custom:button-card
show_name: false
show_icon: false
aspect_ratio: 1/1
extra_styles: |
@keyframes bgswap_red {
0% {
background-image: url("/local/images/protect/honeywell-grey.png");
}
50% {
background-image: url("/local/images/protect/honeywell-red.png");
}
100% {
background-image: url("/local/images/protect/honeywell-grey.png");
}
}
@keyframes bgswap_yellow {
0% {
background-image: url("/local/images/protect/honeywell-grey.png");
}
50% {
background-image: url("/local/images/protect/honeywell-yellow.png");
}
100% {
background-image: url("/local/images/protect/honeywell-grey.png");
}
}
@keyframes bgswap_grey {
0% {
background-image: url("/local/images/protect/honeywell-grey.png");
}
100% {
background-image: url("/local/images/protect/honeywell-grey.png");
}
}
styles:
card:
- animation: >
[[[ if (entity.state == 'on') return 'bgswap_red 2s linear
infinite'; else if
(states[entity.entity_id.replace('binary_sensor.smoke_sensor_','sensor.battery_')].state
< 15) return 'bgswap_yellow 2s linear infinite'; else
return 'bgswap_grey 2s linear infinite';]]]
- background-size: cover
entity: this.entity_id
- show_name: true
show_icon: false
type: custom:button-card
tap_action:
action: toggle
entity: this.entity_id
styles:
name:
- font-size: 12px
- entity_id: '*nest_protect*'
attributes:
device_class: smoke
options:
type: vertical-stack
cards:
- type: custom:button-card
show_name: false
show_icon: false
aspect_ratio: 1/1
extra_styles: |
@keyframes bgswap_red {
0% {
background-image: url("/local/images/protect/nestprotect-grey.png");
}
50% {
background-image: url("/local/images/protect/nestprotect-red.png");
}
100% {
background-image: url("/local/images/protect/nestprotect-grey.png");
}
}
@keyframes bgswap_green {
0% {
background-image: url("/local/images/protect/nestprotect-grey.png");
}
50% {
background-image: url("/local/images/protect/nestprotect-green.png");
}
100% {
background-image: url("/local/images/protect/nestprotect-grey.png");
}
}
@keyframes bgswap_yellow {
0% {
background-image: url("/local/images/protect/nestprotect-grey.png");
}
50% {
background-image: url("/local/images/protect/nestprotect-yellow.png");
}
100% {
background-image: url("/local/images/protect/nestprotect-grey.png");
}
}
@keyframes bgswap_grey {
0% {
background-image: url("/local/images/protect/nestprotect-grey.png");
}
100% {
background-image: url("/local/images/protect/nestprotect-grey.png");
}
}
styles:
card:
- animation: >
[[[ if
(states[entity.entity_id.replace('smoke','heat')].state ==
'off' &&
states[entity.entity_id.replace('smoke','co')].state ==
'off')
{
if (states[entity.entity_id.replace('_smoke_status','_battery_health')].state ==
'on')
return 'bgswap_yellow 2s linear infinite';
else
return 'bgswap_grey 2s linear infinite';
}
else return
'bgswap_red 2s linear infinite';]]]
- background-size: cover
entity: this.entity_id
- show_name: true
show_icon: false
type: custom:button-card
tap_action:
action: toggle
entity: this.entity_id
styles:
name:
- font-size: 12px
sort:
method: name
numeric: false
reverse: false
RichieGP
(Richard)
July 2, 2024, 5:53pm
19
Hi,
Your build is seriously cool. Thank you for sharing!
Being a bit of a noob, would you be able to explain how you have clustered the sensors? Is this using group helper and binary sensor approach? Would you possibly have time to explain the steps you took to create:
"/binary_sensor.rookmelder_.smoke|binary_sensor.smoke_sensor_. /
and
‘‘nest_protect ’’.
Humble apologies if I am being really dumb…
Hi Richie, no need to apologize, everyone needs to learn
in fact, it is a regular expression which search for the pattern that I specified.
As I have binary sensors that have an entity_id = binary_sensor.rookmelder_… and smoke_sensor_… which are Xiaomi ones
And the ones from nest_protect (which need another UI image).
So it is not a group helper, it is just filtering on the entity_id’s.
Hope this clarifies some things? This is the card I’m using with the explanation: GitHub - thomasloven/lovelace-auto-entities: 🔹Automatically populate the entities-list of lovelace cards