You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: src/devices/steelmate.c
+22-4
Original file line number
Diff line number
Diff line change
@@ -3,6 +3,7 @@
3
3
4
4
Copyright (C) 2016 Benjamin Larsson
5
5
Copyright (C) 2016 John Jore
6
+
Copyright (C) 2025 Bruno OCTAU (ProfBoc75)
6
7
7
8
This program is free software; you can redistribute it and/or modify
8
9
it under the terms of the GNU General Public License as published by
@@ -12,7 +13,23 @@
12
13
/**
13
14
Steelmate TPMS FSK protocol.
14
15
15
-
Packet payload: 9 bytes.
16
+
Reference:
17
+
18
+
- model TP-S15
19
+
20
+
Brand:
21
+
22
+
- Steelmate
23
+
- R-Lake
24
+
25
+
S.a. issue #3200 Pressure issue :
26
+
27
+
- The originally guessed formula was : Pressure in PSI scale 2, but more the pressure is important more the value diverged between the TPMS display and rtl_433.
28
+
- New analysis : Based on data collected by \@e100 + the technical specification ( 0~7.9Bar ) + analysis by \@e100 and refined by \@ProfBoc75, the pressure is given in Bar at scale 32.
29
+
30
+
Packet payload:
31
+
32
+
- 9 bytes.
16
33
17
34
Bytes 2 to 9 are inverted Manchester with swapped MSB/LSB:
18
35
@@ -24,7 +41,7 @@ Bytes 2 to 9 are inverted Manchester with swapped MSB/LSB:
24
41
- S = sync, (0x00)
25
42
- A = preamble, (0x01)
26
43
- I = id, 0xc3f0
27
-
- P = Pressure as double the PSI, 0x14 = 10 PSI
44
+
- P = Pressure in Bar, scale 32, 0xA0 / 32 = 5 Bar, or 0xA0 * 3.125 = 500 kPA, see issue #3200
28
45
- T = Temperature in Fahrenheit, 0x4a = 74 'F
29
46
- B = Battery as half the millivolt, 0x8e = 2.84 V
30
47
- C = Checksum, adding bytes 2 to 7 modulo 256 = byte 8,(0x01+0xc3+0xf0+0x14+0x4a+0x8e) modulus 256 = 0xa0
@@ -56,7 +73,7 @@ static int steelmate_callback(r_device *decoder, bitbuffer_t *bitbuffer)
56
73
uint8_tid1= ~reverse8(b[3]);
57
74
uint8_tid2= ~reverse8(b[4]);
58
75
59
-
//Pressure is stored as twice the PSI
76
+
//Pressure is stored as 32 * the Bar
60
77
uint8_tp1= ~reverse8(b[5]);
61
78
62
79
//Temperature is stored in Fahrenheit. Note that the datasheet claims operational to -40'C, but can only express values from -17.8'C
@@ -72,7 +89,8 @@ static int steelmate_callback(r_device *decoder, bitbuffer_t *bitbuffer)
72
89
continue; // DECODE_FAIL_MIC
73
90
74
91
intsensor_id= (id1 << 8) | id2;
75
-
floatpressure_psi=p1*0.5f;
92
+
floatpressure_kpa=p1*3.125f; // as guessed in #3200
93
+
floatpressure_psi=pressure_kpa* (1.0f / 6.89475729f); // Keep the PSI value to not Break the decoder after new formula, #3200.
0 commit comments