Add support for Carchet TPMS ()

Co-authored-by: Karen Suhm <kesuhm@users.noreply.github.com>
This commit is contained in:
Christian W. Zuckschwerdt 2023-10-26 10:31:35 +02:00
parent 55b306999f
commit a7e5aaf283
4 changed files with 55 additions and 21 deletions

View file

@ -38,7 +38,7 @@ See [CONTRIBUTING.md](./docs/CONTRIBUTING.md).
```
A "rtl_433.conf" file is searched in "./", XDG_CONFIG_HOME e.g. "$HOME/.config/rtl_433/",
"/usr/local/etc/rtl_433/", "/etc/rtl_433/", then command line args will be parsed in order.
SYSCONFDIR e.g. "/usr/local/etc/rtl_433/", then command line args will be parsed in order.
= General options =
[-V] Output the version string and exit
[-v] Increase verbosity (can be used multiple times).
@ -314,7 +314,7 @@ See [CONTRIBUTING.md](./docs/CONTRIBUTING.md).
[226] Kia TPMS (-s 1000k)
[227] SRSmith Pool Light Remote Control SRS-2C-TX (-f 915M)
[228] Neptune R900 flow meters
[229]* WEC-2103 temperature/humidity sensor
[229] WEC-2103 temperature/humidity sensor
[230] Vauno EN8822C
[231] Govee Water Leak Detector H5054
[232] TFA Dostmann 14.1504.V2 Radio-controlled grill and meat thermometer
@ -326,7 +326,7 @@ See [CONTRIBUTING.md](./docs/CONTRIBUTING.md).
[238] Wireless M-Bus, Mode T, 32.768kbps (-f 868.3M -s 1000k)
[239] Revolt NC-5642 Energy Meter
[240] LaCrosse TX31U-IT, The Weather Channel WS-1910TWC-IT
[241] EezTire E618 (TPMS10ATC)
[241] EezTire E618, Carchet TPMS
[242]* Baldr / RainPoint rain gauge.
[243] Celsia CZC1 Thermostat
[244] Fine Offset Electronics WS90 weather station

View file

@ -455,7 +455,7 @@ convert si
protocol 226 # Kia TPMS (-s 1000k)
protocol 227 # SRSmith Pool Light Remote Control SRS-2C-TX (-f 915M)
protocol 228 # Neptune R900 flow meters
# protocol 229 # WEC-2103 temperature/humidity sensor
protocol 229 # WEC-2103 temperature/humidity sensor
protocol 230 # Vauno EN8822C
protocol 231 # Govee Water Leak Detector H5054
protocol 232 # TFA Dostmann 14.1504.V2 Radio-controlled grill and meat thermometer
@ -467,7 +467,7 @@ convert si
protocol 238 # Wireless M-Bus, Mode T, 32.768kbps (-f 868.3M -s 1000k)
protocol 239 # Revolt NC-5642 Energy Meter
protocol 240 # LaCrosse TX31U-IT, The Weather Channel WS-1910TWC-IT
protocol 241 # EezTire E618 (TPMS10ATC)
protocol 241 # EezTire E618, Carchet TPMS
# protocol 242 # Baldr / RainPoint rain gauge.
protocol 243 # Celsia CZC1 Thermostat
protocol 244 # Fine Offset Electronics WS90 weather station

View file

@ -40,7 +40,7 @@ Detailed information on some options follows.
A "rtl_433.conf" file is searched in "./", XDG_CONFIG_HOME e.g. "$HOME/.config/rtl_433/",
"/usr/local/etc/rtl_433/", "/etc/rtl_433/", then command line args will be parsed in order.
SYSCONFDIR e.g. "/usr/local/etc/rtl_433/", then command line args will be parsed in order.
.SS "General options"
.TP
[ \fB\-V\fI\fP ]

View file

@ -1,7 +1,7 @@
/** @file
EezTire E618 TPMS.
EezTire E618 TPMS and Carchet TPMS (same protocol).
Copyright (C) 2023 Bruno OCTAU (ProfBoc75) and Gliebig
Copyright (C) 2023 Bruno OCTAU (ProfBoc75), Gliebig, and Karen Suhm
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -12,22 +12,48 @@
#include "decoder.h"
/**
EezTire E618 TPMS.
EezTire E618 TPMS and Carchet TPMS (same protocol).
Eez RV supported TPMS sensor model E618 : https://eezrvproducts.com/shop/ols/products/tpms-system-e518-anti-theft-replacement-sensor-1-ea
Carchet TPMS: http://carchet.easyofficial.com/carchet-rv-trailer-car-solar-tpms-tire-pressure-monitoring-system-6-sensor-lcd-display-p6.html
S.a issue #2384, #2657
The device uses OOK (ASK) encoding.
The device sends a transmission every 1 second when quick deflation is detected, every 13 - 23 sec when quick inflation is detected, and every 4 min 40 s under steady state pressure.
A transmission starts with a preamble of 0x0000 and the packet is sent twice.
Data layout:
S.a issue #2384, #2657, #2063, #2677
Data collection parameters on URH software were as follows:
Sensor frequency: 433.92 MHz
Sample rate: 2.0 MSps
Bandwidth: 2.0 Hz
Gain: 125
Modulation is ASK (OOK). Packets in URH arrive in the following format:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [Pause: 897679 samples]
aaaaaaaa5956a5a5a6555aaa65959999a5aaaaaa [Pause: 6030 samples]
aaaaaaaa5956a5a5a6555aaa65959999a5aaaaaa [Pause: 11176528 samples]
Decoding is Manchester I. After decoding, the packets look like this:
00000000000000000000000000000000000000
0000de332fc0b7553000
0000de332fc0b7553000
Using rtl_433 software, packets were detected using the following command line entry:
rtl_433 -X "n=Carchet,m=OOK_MC_ZEROBIT,s=50,l=50,r=1000,invert" -s 1M
Data layout:
PRE CC IIIIII PP TT FF FF
- PRE : FFFF
- C : 8 bit CheckSum
- I: 24 bit ID
- C : 8 bit CheckSum, modulo 256 with overflow flag
- I: 24 bit little-endian ID
- P: 8 bit pressure P * 2.5 = Pressure kPa
- T: 8 bit temperature T - 50 = Temperature C
- F: 16 bit battery (not verified), deflation pressure (for sure), pressure MSB
- F: 16 bit status flags: 0x8000 = low battery, 0x1000 = quick deflation, 0x3000 = quick inflation, 0x0000 = static/steady state
Raw Data example :
@ -83,12 +109,16 @@ static int tpms_eezrv_decode(r_device *decoder, bitbuffer_t *bitbuffer)
int temperature_C = b[4] - 50;
int flags1 = b[5];
int flags2 = b[6];
int fast_leak_detected = (flags1 & 0x10);
int fast_leak_resolved = (flags1 & 0x20);
int fast_leak_detected = (flags1 & 0x10); // fast leak - reports every second
int infl_detected = (flags1 & 0x20) >> 5; // inflating - reports every 15 - 20 sec
int fast_leak = fast_leak_detected && !fast_leak_resolved;
int fast_leak = fast_leak_detected && !infl_detected;
float pressure_kPa = (((flags2 & 0x01) << 8) + b[3]) * 2.5;
// Low batt = 0x8000;
int low_batt = flags1 >> 7; // Low batt flag is MSB (activated at V < 3.15 V)(Device fails at V < 3.10 V)
// Mystery flag at (flags2 & 0x20) showed up during low batt testing
char id_str[7];
snprintf(id_str, sizeof(id_str), "%02x%02x%02x", b[0], b[1], b[2]);
@ -100,10 +130,12 @@ static int tpms_eezrv_decode(r_device *decoder, bitbuffer_t *bitbuffer)
"model", "", DATA_STRING, "EezTire-E618",
"type", "", DATA_STRING, "TPMS",
"id", "", DATA_STRING, id_str,
"battery_ok", "Battery_OK", DATA_INT, !low_batt,
"pressure_kPa", "Pressure", DATA_FORMAT, "%.0f kPa", DATA_DOUBLE, (double)pressure_kPa,
"temperature_C", "Temperature", DATA_FORMAT, "%.1f C", DATA_DOUBLE, (double)temperature_C,
"fast_leak", "Fast Leak", DATA_INT, fast_leak,
"flags", "Flags", DATA_STRING, flags_str,
"fast_leak", "Fast Leak", DATA_INT, fast_leak,
"inflate", "Inflate", DATA_INT, infl_detected,
"mic", "Integrity", DATA_STRING, "CHECKSUM",
NULL);
/* clang-format on */
@ -116,16 +148,18 @@ static char const *const output_fields[] = {
"model",
"type",
"id",
"temperature_C",
"battery_ok",
"pressure_kPa",
"fast_leak",
"temperature_C",
"flags",
"fast_leak",
"inflate",
"mic",
NULL,
};
r_device const tpms_eezrv = {
.name = "EezTire E618",
.name = "EezTire E618, Carchet TPMS",
.modulation = OOK_PULSE_MANCHESTER_ZEROBIT,
.short_width = 50,
.long_width = 50,