kalkih / mini-graph-card

Minimalistic graph card for Home Assistant Lovelace UI
MIT License
2.85k stars 231 forks source link

[FR] Support numerical range values for state_map #1097

Open DeFlanko opened 2 months ago

DeFlanko commented 2 months ago

Looking to utilize the State_map function for heart rates:

type: custom:mini-graph-card
labels: true
name_adaptive_color: true
lower_bound: 50
color_thresholds:
  - value: 180
    color: '#9A56A3'
    name: High Performance Zone
  - value: 155
    color: '#3B9555'
    name: Performance Zone
  - value: 135
    color: '#EA9423'
    name: Fitness Zone
  - value: 110
    color: '#FEEB3F'
    name: Health Improvement Zone
  - value: 90
    color: '#8CABD7'
    name: Inactive
state_map:
  - value: 180
    color: '#9A56A3'
    label: High Performance Zone
  - value: 155
    color: '#3B9555'
    label: Performance Zone
  - value: 135
    color: '#EA9423'
    label: Fitness Zone
  - value: 110
    color: '#FEEB3F'
    label: Health Improvement Zone
  - value: 90
    color: '#8CABD7'
    label: Inactive
height: 50
hours_to_show: 4
points_per_hour: 12
line_width: 3
animate: true
show:
  name_adaptive_color: true
  icon_adaptive_color: true
  labels: true
entities:
  - entity: sensor.google_pixel_watch_jd_heart_rate_2
name: Heart Rate

currently it wont show what heart zone the sensor is in. Would be nice to see that next to the bpm image

ildar170975 commented 2 months ago

Suggest to re-read Docs & check your code. Just a 1st glance:

type: custom:mini-graph-card
labels: true

Here the labels is misplaced.

color_thresholds:
  - value: 180
    color: '#9A56A3'
    name: High Performance Zone

The color_thresholds does not have name option.

state_map:
  - value: 180
    color: '#9A56A3'
    label: High Performance Zone

The state_map does not have color option.

Also, state_map does not work for ranges, it works for exact values.

DeFlanko commented 2 months ago

which is why i asked it to be an enhancement request, i completely understand how the state_map is only for single digit non ranged values, but i'm looking to have it look to ranged values so that anything in between the two heart ranges can named that state_mapped value.

Corrected all the code logic btw, still works - but again asking for the state_mapped value to be a range.

type: custom:mini-graph-card
name_adaptive_color: true
lower_bound: 50
color_thresholds:
  - value: 180
    color: '#9A56A3'
  - value: 155
    color: '#3B9555'
  - value: 135
    color: '#EA9423'
  - value: 110
    color: '#FEEB3F'
  - value: 90
    color: '#8CABD7'
state_map:
  - value: 180
    label: High Performance Zone
  - value: 155
    label: Performance Zone
  - value: 135
    label: Fitness Zone
  - value: 110
    label: Health Improvement Zone
  - value: 90
    label: Inactive
height: 50
hours_to_show: 4
points_per_hour: 12
line_width: 3
animate: true
show:
  name_adaptive_color: true
  icon_adaptive_color: true
  labels: true
entities:
  - entity: sensor.google_pixel_watch_jd_heart_rate_2
name: Heart Rate
ildar170975 commented 2 months ago

I see, then the issue title is currently not clear.

DeFlanko commented 2 months ago

By almeans please rename so it makes sense for a developer. My use case is heart rates in specific zones (ranges) would like to be displayed via the state_map

On Wed, May 1, 2024, 8:38 AM ildar170975 @.***> wrote:

I see, then the issue title is currently not clear.

— Reply to this email directly, view it on GitHub https://github.com/kalkih/mini-graph-card/issues/1097#issuecomment-2088648152, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABH52MNVWNX2EFQZQB3RTKDZAED6NAVCNFSM6AAAAABHARAVJCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAOBYGY2DQMJVGI . You are receiving this because you authored the thread.Message ID: @.***>

ildar170975 commented 2 months ago

As a workaround:

  1. Create a template sensor with desired values like "low", "average", "high".
  2. Add this sensor on a card as the 2nd entity with showing a state but w/o showing a graph.

Alternatively - do NOT create a sensor but simply change a card's background color accordingly to show a current status (card-mod using jinja templates).