Real-Time Tire Pressure and Temperature Monitoring Using Favoriot
Tires are the only part of a vehicle in constant contact with the road, and the part fleets know the least about in real time. This tutorial builds a low-cost sensor rig that streams tire pressure and temperature to Favoriot and pushes a Telegram alert the moment a reading drifts outside a safe range.
TEMP — °C
STATUS UNKNOWN
Checked by hand, if at all, before a trip. Pressure loss and heat build-up stay invisible until a blowout, a breakdown, or a fuel bill explains what already happened.
TEMP 41.6°C
STATUS NORMAL
Streamed every ten seconds to a live dashboard. The moment a reading crosses a safe threshold, the driver gets a Telegram message before the problem becomes an incident.
The real problem: tires are a blind spot on wheels
This is what we call Operational Blindness: the gap between what is physically happening to an asset and what the people responsible for it can actually see. For tires, that gap is especially dangerous because the asset is moving, load-bearing, and failing quietly.
Pressure drifts silently
A slow leak does not announce itself. By the time it is visible in handling or fuel consumption, the tire has already been running underinflated for days or weeks.
Heat is the last warning, not the first
Rising tire temperature is an early signal of underinflation, overload, or a failing component. Without a sensor reading it in real time, the first signal a driver gets is often the tire itself.
Manual checks do not scale
Walking around a vehicle with a gauge works for one car, once. It does not work for a fleet, on a schedule, across every trip a vehicle makes in a week.
Objective
Build an IoT-based tire pressure and temperature monitoring system using sensors and the Favoriot IoT platform.
- Real-time data streaming from each tire
- Visualization on a live dashboard
- Automated alerts via Telegram the moment temperature or pressure exceeds safe limits
Components needed
A small, low-cost bill of materials, most of it reusable across other Favoriot sensor projects.
Hardware
| Component | Description |
|---|---|
| ESP8266 (NodeMCU) | Wi-Fi-enabled microcontroller |
| DHT22 | Temperature sensor |
| MPX5700AP (or TPMS analog) | Tire pressure sensor |
| Breadboard, jumper wires | For circuit assembly |
| Power bank / battery | For powering the ESP8266 |
Software
| Tool | Purpose |
|---|---|
| Arduino IDE | Flash and monitor the ESP8266 |
| Favoriot platform | Ingest, store, and visualize data |
| Telegram | Delivers real-time alerts |
| Web browser | View the live dashboard |
Build it step by step
Five steps from an empty Favoriot account to a tire that reports its own condition.
Set up Favoriot
Create the device that will represent each monitored tire and collect the credentials the firmware needs.
- Sign up or log in at platform.favoriot.com
- Go to
Device Management > Devices > Add Device, name ittireMonitor01, set Device Type toGeneral, then save and copy the Device Developer ID - Navigate to
Settings > Accountand copy your API Key
Connect the sensors
Wire the temperature and pressure sensors to the NodeMCU.
DHT22 (temperature)
| Pin | NodeMCU |
|---|---|
| VCC | 3.3V |
| GND | GND |
| DATA | D4 (GPIO2) |
MPX5700AP (pressure)
| Pin | NodeMCU |
|---|---|
| VCC | 5V |
| GND | GND |
| OUT | A0 |
Upload the Arduino code
Reads both sensors every ten seconds and streams the values to Favoriot over HTTPS.
tireMonitor.ino#include <ESP8266WiFi.h>
#include <DHT.h>
#include <ESP8266HTTPClient.h>
#define DHTPIN D4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
const String apiKey = "YOUR_FAVORIOT_API_KEY";
const String deviceDeveloperId = "tireMonitor01";
void setup() {
Serial.begin(115200);
delay(100);
dht.begin();
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi...");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConnected to WiFi!");
}
void loop() {
float temperature = dht.readTemperature();
int pressureRaw = analogRead(A0);
float pressure = map(pressureRaw, 0, 1023, 0, 100); // Simulate PSI
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin("http://apiv2.favoriot.com/v2/streams");
http.addHeader("Content-Type", "application/json");
http.addHeader("apikey", apiKey);
String payload = "{";
payload += "\"device_developer_id\":\"" + deviceDeveloperId + "\",";
payload += "\"data\":{";
payload += "\"temperature\":" + String(temperature, 2) + ",";
payload += "\"pressure\":" + String(pressure, 2);
payload += "}}";
int httpCode = http.POST(payload);
Serial.print("Favoriot HTTP response code: ");
Serial.println(httpCode);
http.end();
} else {
Serial.println("WiFi not connected!");
}
delay(10000); // 10-second interval
}
Set up the Favoriot dashboard
Turn the incoming stream into something a driver or fleet manager can actually read at a glance.
| Widget | Type | Data field | Notes |
|---|---|---|---|
| Tire temp gauge | Gauge | temperature | Live temperature reading |
| Tire pressure gauge | Gauge | pressure | Live pressure reading |
| Trend chart | Line chart | temperature, pressure | Visualize history |
| Alert indicator | Text | status | Shows ALERT when out of range |
Create these from Dashboard > Add Widget: select the device, choose the data fields, and set the ranges that define normal for your tires.
Alert notification via Telegram
Close the loop so an out-of-range reading reaches a person, not just a database.
- Create a Telegram bot: search
@BotFatherin Telegram, run/newbot, give it a name and username, and note the bot token - Get your chat ID: start a chat with your new bot, then visit
https://api.telegram.org/bot<your_bot_token>/getUpdatesto find it - Set up the webhook in Favoriot under
Rules Engine > Add Rule
pressure < 30 OR pressure > 40 OR temperature > 60Action: Webhook to
https://api.telegram.org/bot<your_bot_token>/sendMessage?chat_id=<your_chat_id>&text=Tire alert: pressure or temperature out of range
From this point on, whenever tire conditions turn unsafe, the driver gets a Telegram notification, in the moment it matters rather than after the fact.
Closing the blindness gap
The same four-stage loop that underpins every Favoriot Operational Blindness fix, applied here to a tire instead of a shelf or a machine.
Sense
DHT22 and MPX5700AP read temperature and pressure at the tire itself.
›Stream
The ESP8266 posts both readings to Favoriot every ten seconds.
›Threshold
The Rules Engine watches every reading against a defined safe range.
›Alert
A crossed threshold fires a webhook, and the driver knows in seconds.
Optional enhancements
Ways to extend this build once the core loop is working.
Add location
A Neo6M GPS module attaches geolocation to every alert, so a fleet manager knows where as well as what.
Keep history
Store historical readings through Favoriot’s REST API v2 to spot slow degradation, not just sudden failures.
Go mobile
Build a companion app on Favoriot’s open APIs so drivers can check tire status without opening a dashboard.
Give your fleet its eyes back
This tutorial is one build. The same Sense, Stream, Threshold, Alert loop applies to any asset your team currently checks by hand.





Leave a Reply