Add support for Carchet TPMS (#2677)
Co-authored-by: Karen Suhm <kesuhm@users.noreply.github.com>
This commit is contained in:
parent
55b306999f
commit
a7e5aaf283
4 changed files with 55 additions and 21 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ]
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Add table
Reference in a new issue