homeassistant-peloton-sensor icon indicating copy to clipboard operation
homeassistant-peloton-sensor copied to clipboard

Template not working properly

Open kylewilliams321 opened this issue 2 years ago • 13 comments

Not sure if I'm doing something wrong but I've tried copy/pasting the yaml custom lovelace template in and it doesn't appear to work correctly. I've obviously tried changing the peloton username to my own but still nothing.

The one thing I've noticed is that I'm not sure if maybe something changed in the way the sensors/attributes are grouped together in the entities. Each "Sensor" appears to be its own entity and maybe before this wasn't the case?

I've tried each of the following setups without any success: state_attr('sensor.Sir_Farts_A_Lot', "Speed Max Mph") | float | round(2) }} max state_attr('sensor.kyle_on_peloton_speed_max', "Speed Max Mph") | float | round(2) }} max state_attr('sensor.kyle_on_peloton', "Speed Max Mph") | float | round(2) }} max

My username is "Sir_Farts_A_Lot" but my sensors all show up as "kyle_on_peloton". Is my setup just wrong or is something else going on here?

Screenshot_11172022

Here's my yaml that isn't working:

type: markdown content: >+ {% if state_attr('sensor.kyle_on_peloton', "Resistance %") | float > 0 -%}

Current Metrics:

Heart Rate (bpm): {{ state_attr('sensor.kyle_on_peloton', "Heart Rate Bpm") }} Resistance (%): {{ state_attr('sensor.kyle_on_peloton', "Resistance %") }} Speed (Mph): {{ state_attr('sensor.kyle_on_peloton', "Speed Mph") }} Speed (Kph): {{ state_attr('sensor.kyle_on_peloton', "Speed Kph") }} Cadence Rpm: {{ state_attr('sensor.kyle_on_peloton', "Cadence Rpm") }} Power (W): {{ state_attr('sensor.kyle_on_peloton', "Power W") }}


{%- endif %}

Latest Workout Summary:

- Date: {{ state_attr('sensor.kyle_on_peloton', "Start Time")|float|timestamp_custom('%Y/%m/%d » %H:%M') }} - {{ state_attr('sensor.kyle_on_peloton', "End Time")|float|timestamp_custom('%H:%M') }} ({{ state_attr('sensor.kyle_on_peloton', "Duration Min") }} mins)

{% if (state_attr('sensor.kyle_on_peloton', 'Workout Image')|string != 'None') %} <img src="{{ state_attr('sensor.kyle_on_peloton', "Workout Image") }}"> {% endif %}

{{ state_attr('sensor.kyle_on_peloton', "Ride Title") }} ({{ state_attr('sensor.kyle_on_peloton', "Workout Type") }})

  • {{ state_attr('sensor.kyle_on_peloton', "Description") }}
  • Instructor: {{ state_attr('sensor.kyle_on_peloton', "Instructor") }}

Latest Workout Metrics:

- Distance (Mi): {{ state_attr('sensor.kyle_on_peloton', "Distance Mi") | float | round(2) }} - Heart Rate (bpm): {{ state_attr('sensor.kyle_on_peloton', "Heart Rate Average Bpm") | float | round(0) }} avg / {{ state_attr('sensor.kyle_on_peloton', "Heart Rate Max Bpm") | float | round(0) }} max - Resistance: {{ state_attr('sensor.kyle_on_peloton', "Resistance Average %") | float | round(0) }}% avg / {{ state_attr('sensor.kyle_on_peloton', "Resistance Max %") | float | round(0) }}% max - Speed (Mph): {{ state_attr('sensor.kyle_on_peloton', "Speed Average Mph") | float | round(2) }} avg / {{ state_attr('sensor.kyle_on_peloton', "Speed Max Mph") | float | round(2) }} max - Speed (Kph): {{ state_attr('sensor.kyle_on_peloton', "Speed Average Kph") | float | round(2) }} avg / {{ state_attr('sensor.kyle_on_peloton', "Speed Max Kph") | float | round(2) }} max - Cadence (Rpm): {{ state_attr('sensor.kyle_on_peloton', "Cadence Average Rpm") | float | round(0) }} avg / {{ state_attr('sensor.kyle_on_peloton', "Cadence Max Rpm") | float | round(0) }} max - Power (W): {{ state_attr('sensor.kyle_on_peloton', "Power Average W") | float | round(2) }} avg / {{ state_attr('sensor.kyle_on_peloton', "Power Max W") | float | round(2) }} max - Total Work: {{ state_attr('sensor.kyle_on_peloton', "Total Work") | float | round(0) }} J - Output (KJ): {{ state_attr('sensor.kyle_on_peloton', "Output Kj") | float | round(2) }} - Calories (KCal): {{ state_attr('sensor.kyle_on_peloton', "Calories KCal") }} {% if state_attr('sensor.kyle_on_peloton', "Leaderboard Rank") != "None" -%} - Leaderboard Rank: {{ state_attr('sensor.kyle_on_peloton', "Leaderboard Rank") }} / {{ state_attr('sensor.kyle_on_peloton', "Leaderboard Users") }} ({{ 100 - (100 * (state_attr('sensor.kyle_on_peloton', "Leaderboard Rank") | int ) / (state_attr('sensor.kyle_on_peloton', "Leaderboard Users") | int)) | round(0) }}%) {%- endif %} theme: solarized_light

kylewilliams321 avatar Nov 17 '22 15:11 kylewilliams321

Hello! Thanks for reporting this issue.

The problem is that a few versions ago there was a single sensor with many state attributes and now there are many sensors with those same attributes broken out into individual sensors. This is the method the core HASS project would like integrations to follow.

Anyway - this not only breaks this card which is referencing state attributes, it's further broken because certain attributes are no longer being reported.

This can all be fixed but it's just slightly more complicated than finding/replacing names. I'll rework this soon and try to add back to the main sensor list the items that are missing.

Thanks!
Ed

edwork avatar Nov 21 '22 01:11 edwork

@kylewilliams321 did you ever sort out an updated yaml/template for the new sensors?

Cassock avatar Feb 06 '23 18:02 Cassock

Hello,

@Miablo did an amazing job re-working the markdown card template - take a look at the new template in the development branch. I'll merge it into the main branch soon, I just need to adjust the instructions and generalize the usernames.

edwork avatar Feb 06 '23 20:02 edwork

Thanks, @edwork and @Miablo. That's the template that I'm using (with updated user/sensor names), but it's only showing the title with no data. The sensors appear to be working fine in ha/developer-tools/state, though 🤷 image

Cassock avatar Feb 07 '23 00:02 Cassock

@Cassock Can you add your code or a screenshot of it to the post so I can take a look?

Miablo avatar Feb 07 '23 00:02 Miablo

https://hastebin.com/share/newujivese.bash

Cassock avatar Feb 07 '23 00:02 Cassock

Can you try this to see if it renders correctly: https://hastebin.com/share/ibenupuvoh.bash - that should have your username added for the sensor

Miablo avatar Feb 07 '23 00:02 Miablo

It doesn't :( No errors on the lovelace editor, but putting it into the dev tools template editor results in this: image

Cassock avatar Feb 07 '23 02:02 Cassock

Markdown with markup tags won't render in the template dev tools, that's working as intended. The first example provided seems to have stripped out the markup tags possibly breaking the card's formatting.

Can you create a new markdown card, add the text, and force refresh (shift+refresh) the page? In my testing client side caching was causing some errors when I first began testing the card.

edwork avatar Feb 07 '23 14:02 edwork

Yeah I tried that first before going to dev tools. Here's what it looks like (even after hard refreshes): image And just to confirm, it appears I do have working sensors (I assume all of the unknown values correspond to active ride data) image

Cassock avatar Feb 07 '23 15:02 Cassock

There's something wrong with the copy-pasta that happens either in or out of GitHub, I'll work it out but for now try out this example.

edwork avatar Feb 08 '23 04:02 edwork

Spent a few more minutes on this today and it looks like something on the Latest Workout Metrics markdown is what's preventing the whole card from showing. If I delete that section, the rest of the data shows up as expected: image

Cassock avatar Mar 15 '23 00:03 Cassock

I did notice the problem occurs when for example my Cadence sensor is Home Assistant is displaying unknown. Is goes to unknown when I am not biking. During a ride is works as there is data, and the template works fine.

So I think we need a way to keep the latest sensor value for those sensor that go to unknown when not riding or when switching to a tread.

That goes for the Active Calories, Cadence, Resistance and Speed sensors, 10 total.

Or a change in the template ??

rwijbenga avatar Apr 19 '23 12:04 rwijbenga