BLE TPMS sensors compatible with Home Assistant?

@sparkydave Your link appears to be broken: it did not return useful information.

@vreihen This was one of my concerns when picking a “third party” sensor. However, I can’t imagine modern ones needing this rolling requirement, though. I know that if my car sits there for a few days and the tire goes low in the driveway, it alerts me immediately when the engine starts and not when the car starts to roll.

@brooksben11 All other “Tesla compatible” TPMS sensors mention Bluetooth usage, so I am generally assuming that if the TPMS sensor works with a Tesla, it uses Bluetooth. But I am not 100% sure, hence my question in this forum. If the cap-style sensors work, those would be much easier to set up (no need to have them internally professionally installed).

My original idea was to use a Bluetooth proxy near where my cars are parked to check the tire pressure periodically (daily-ish), report the value to Home Assistant, maybe graph the pressure progress, and then have Home Assistant alert me when the pressure falls below a threshold. I just need to know when the pressure gets low sometime that day rather than in real-time while driving.

However, all of this starts with installing a TPMS sensor that Home Assistant can somehow read the values. It would be nice if the sensor returned the pressure value rather than just a binary “good/bad” value. I’ll start there.

The integration referenced in the other thread hasn’t been updated in more than 4 years. Are there other (better) devices and/or integrations?

Thanks again for your help!

The integration was last updated a month ago.

That’s exactly what the sensors mentioned in that post do: Pressure and Temperature.

1 Like

@brooksben11 Looks good! I’ll get those and let you know how it goes. Thanks for being awesome!!

1 Like

I also forgot to mention, but I ended up making template sensors for each of them as well because the actual ones go unavailable frequently since they don’t transmit super-often outside of situations where the pressure actually changes.

Interesting! What do your templates look like? I’ll set mine up similarly when my sensors arrive on Thursday. Thanks again!!

Bummer, it was supposed to be search results. My point was to use the search function…

@brooksben11 I got the sensors in and they worked!

…for a while. The signal strength dropped so I moved a Bluetooth proxy module closer to them (about 12 feet now).

How often do the sensors check in? Hourly? Daily? Varies?

Hopefully I’ll get fresh readings soon.

Thanks again and have a great day!

Here’s a snippet of my template sensors:

      - name: "Truck Rear Right TPMS Pressure"
        unique_id: truck_rear_right_tpms_pressure
        state: >
           {% if states('sensor.tpms_91f8_pressure') not in ['unavailable', 'unknown'] %}
             {{ states('sensor.tpms_91f8_pressure') | float | round(1) }}
           {% else %}
             {{ this.state }}
           {% endif %}
        unit_of_measurement: "psi"
        device_class: pressure
        state_class: measurement

      - name: "Truck Rear Right TPMS Temperature"
        unique_id: truck_rear_right_tpms_temperature
        state: >
           {% if states('sensor.tpms_91f8_temperature') not in ['unavailable', 'unknown'] %}
             {{ states('sensor.tpms_91f8_temperature') | float | round(1) }}
           {% else %}
             {{ this.state }}
           {% endif %}
        unit_of_measurement: "°F"
        device_class: temperature
        state_class: measurement

      - name: "Truck Rear Right TPMS Battery"
        unique_id: truck_rear_right_tpms_battery
        state: >
           {% if states('sensor.tpms_91f8_battery') not in ['unavailable', 'unknown'] %}
             {{ states('sensor.tpms_91f8_battery') | float | round(0) }}
           {% else %}
             {{ this.state }}
           {% endif %}
        unit_of_measurement: "%"
        device_class: battery
        state_class: measurement

I’m sure there’s a cleaner/more elegant way to do it, but it works.

I want to say it’s every 15 minutes maybe (outside of if the pressure changes, like when you remove or attach them). Additionally, even if I put a BT Proxy inside the vehicle, it doesn’t reliably pick up all their broadcasts all the time. Luckily, I already had several BT Proxies right along the side of the house where our vehicles are, so they tend to get picked up at least once a day or so (with the exception of a tire or 2, which I think is both due to where they are and also the orientation of the rim) which is good enough for my needs. As a side note, on my dashboard I specifically have it show when it was last updated, that way I know how stale the readings are.

1 Like

@brooksben11 Awesome! Thank you!!

Mine checks in periodically, but the value is a mostly “unavailable”.

Is there a way to always show the last known value and time since then instead of “unavailable”?

Thanks again for all your help!!

That’s the purpose of the template sensor, to avoid the unavailable states. I’m sure the integration could be modified to handle the large periods of time with no updates differently, but that’s beyond my ability (or interest ha).

Hi,
I am super interested to integrate BLE TPMS sensors …
Is there a littele bit more howto - so that I know what to to in HA to see the infos ?
thx

Hey Marc,

Welcome to the community! I’ll be glad to help you.

Project Background:

My car’s spare tire is a full-sized spare tire rather than the “donut” tire that most cars have. Unlike the donut, my spare tire will very slowly leak air like regular tires since this spare is essentially a regular tire. My four regular tires are topped off with air every time the tires are rotated, which is about every 5,000 miles (every 3-4 months or so).

However, the spare tire is not topped off regularly since most spare tires are “donuts”, the spare is hard to reach (in the trunk), and it is not part of standard tire shop maintenance procedures. As a result, low spare tire pressure can make the spare unusable if not maintained regularly.

Unfortunately, most cars are only set up to monitor the four tires touching the ground and not a fifth tire sitting in the trunk. As a result, I needed another way to know if the spare needed air.

Goal:

I wanted to monitor the tire pressure in my spare tire with Home Assistant so that I can receive alerts to refill the tire whenever it is needed.

Parts needed:

  • TPMS sensors
  • Home Assistant
  • Bluetooth module

When I started this project, I only knew of TPMS (tire pressure monitoring sensors) devices that are internal to the tire attached to the air stem. After some research and posting questions, I discovered some devices that attach externally to the existing valve stem by replacing the existing cap and then communicate using BLE (Bluetooth Low Energy). I ended up purchasing these sensors since someone else has used them successfully.

Home Assistant has thousands of native integrations, but reading TPMS sensors is so niche that there is not yet native support for these devices. Luckily, several people in the Home Assistant community have written ways to read the values of these devices. I went with this integration since it was successfully used by someone else and it was the one most recently updated by the integration creator.

Because the devices communicate using Bluetooth, you will need a Bluetooth receiver close to the TPMS sensors. Initially, I used a standard ESP32 module to run a Bluetooth proxy. This worked, but just barely. Since the sensors are using low-energy signals and the spare tire is now inside a metal box (the trunk of my car), I was getting very little signal to read the values even though my Bluetooth proxy is about twelve linear feet from the spare tire. I have a separate thread that will hopefully overcome this issue.

Installation:

Once you have all the parts, set up the Bluetooth proxy as shown in the linked instructions and place the proxy as close as you can to where you park your car. Install the integration software using HACS (Home Assistant Community Store) according to the linked instructions.

Once you are ready to install the TPMS sensors onto your tire, do so while being near the Bluetooth proxy module and then complete the Home Assistant configuration with the tire outside of your car. The TPMS sensor should transmit its readings every 5-15 minutes, and if all goes well, Home Assistant should automatically detect the TPMS device within a few minutes of installation onto the tire.

image

The sensor should show up as a device within Home Assistant and the integration should recognize it as a TPMS data source. You can now put your tire away. From there, name the device as something useful to you and you’re now off and rolling (spare tire pun intended).

Post-Installation Refinement:

The resulting values graph of the tire pressure may have gaps in it depending on the actual integration you used or if the integration hasn’t been updated since I installed it on my setup. With my values for example, the purple line in the graph below is the raw values I received from the TPMS device with lots of holes in the line, while the blue line is a smoothed version of that data (the two holes in the blue line are two times when I rebooted Home Assistant for unrelated reasons). To get this smoother line, use the sensor code provided earlier in this thread as an example for your use.

After that, set up an automation to send you an alert notification when the tire pressure is below a certain threshold for your tire. For mine, I want the spare to be above 32 psi at all times. Once I am alerted the pressure dipped below 32 psi, I will refill the tire to 37 psi.

IMPORTANT NOTE: Follow the manufacturer’s recommended tire pressure range for your specific vehicle.

Hopefully this helps you get started. Good luck and have fun!!

Phade.

2 Likes

Fantastic - I will test this in the next days and beend back.
Is ist not working direktly wit RP4 with Bluetooth, do I need the ESP32 proxy ?

The process could technically work with just the Pi4 Bluetooth as long as it is within range of the device. You can try it without a Bluetooth proxy in place and see if it works. If it does not work, you can add the proxy afterward.

Theengs Gateway supports these TPMS sensors with auto-discovery:

OpenMQTTGateway on an ESP32 also

Theengs App on a mobile

The solutions above do not require any YAML template.

image

Yes they are sending even if the vehicle is parked

1 Like

Hey Everyone,

Here are the results from using an improved Bluetooth proxy antenna.

I’ve installed the new Bluetooth proxy with the better antenna in the same spot as the previous proxy and removed all other proxies from the area. Here are the results:

As you can see, there is a significant visible improvement in the signal strength by using a better antenna. The signal goes from a -90 to -100 range to a -80 to -90 range with some readings being better than -80.

I hope this information helps other folks here in case you have similar issues.

Good luck and have fun!!

I came across this article that you mention my TPMS_BLE integration and it seems that you need it to be always available, so I’ve updated it to keep the latest value.
I’ve also included a Last Update sensor to check when the last transmission occurred.

It’s possible to keep the values after restarting Home Assistant, but unfortunately it’s a bit complicated so I couldn’t make it work.

1 Like

That’s fantastic!! I’ll update my setup later on in the week and let you know how it goes. Thank you for being awesome!!

1 Like

Until an update is released for this Integration, the details on how to fix it for HA 2024.6 are here.

1 Like