Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for wireless freezer refrigerator thermometer model "WA150KM" #3136

Open
janiwe opened this issue Jan 5, 2025 · 5 comments
Open

Comments

@janiwe
Copy link

janiwe commented Jan 5, 2025

Hello everyone,

I recently got a 433MHz freezer/refrigerator thermometer from Amazon branded as "ORIA" with model name "WA150KM" and tried to read it with rtl_433. Unfortunately it's an unknown device still.
The transmitter is labeled with FCC ID "2AZUG-WA144" which has some FCC data, but nothing regarding the encoding.
I captured samples and tabled the temperature readings on the headunit, but I'm struggling with the analysis.
I analyzed the samples with rtl_433 -A sample.cu8 and it came up with a rather consistent flex decoder config
-X 'n=name,m=OOK_PWM,s=488,l=976,r=3948,g=0,t=0,y=304', which I modified to
-X 'n=WA144,m=OOK_PWM,s=488,l=976,r=8000,g=0,t=0,y=304' to keep the preamble in the message payload, but I'm unable to read anything out of the codes. I'm not even sure if the flex decoder config is right - still a newbie regarding this stuff unfortunately.

Capture log (HW: Nooelec RTL-SDR v5 SDR without antenna, receiver about 5cm away):

> rtl_433 -S unknown                                               
rtl_433 version 24.10 (2024-10-30) inputs file rtl_tcp RTL-SDR with TLS
Found Rafael Micro R820T tuner
[SDR] Using device 0: Realtek, RTL2838UHIDIR, SN: 00000001, "Generic RTL2832U OEM"
Exact sample rate is: 250000.000414 Hz
[R82XX] PLL not locked!
*** Saving signal to file g001_433.92M_250k.cu8 (128385 samples, 262144 bytes)
*** Saving signal to file g002_433.92M_250k.cu8 (128385 samples, 262144 bytes)
*** Saving signal to file g003_433.92M_250k.cu8 (128400 samples, 262144 bytes)
[...]

WA144_Samples.zip
Sample_Values.csv

Can anyone give me a hint on how to proceed here?

Thanks a lot!

Jan Niklaas

@zuckschwerdt
Copy link
Collaborator

Samples look great, it's OOK, a warmup of ~10x 490 µs pulse / 2932 µs gap, then three packets with a 2980 µs packet gap of 24x preamble 490 / 490 µs, then 490 µs Manchester code. I.e.
-X 'n=name,m=OOK_PCM,s=490,l=490,g=1500,r=4000' for raw data and
-X 'n=name,m=OOK_MC_ZEROBIT,s=490,l=490,g=1500,r=4000' for Manchester decoded data.
But that won't work well, -X 'n=name,m=OOK_MC_ZEROBIT,s=490,l=490,r=1500' is somewhat better.

Use this collected PCM data
{227}aaaaaaaaaaaa66aa5665a655595a59966565559555665599a5a699690[g001]
{227}aaaaaaaaaaaa66aa6665a655595a5996656555955566659999a699690
{227}aaaaaaaaaaaa66aa6665a655595a5996656555955566659999a69969
{227}aaaaaaaaaaaa66aa5565a655595a59966565559555665659a66699690[g002]
{227}aaaaaaaaaaaa66aa6565a655595a599665655595556666599a6699690
{227}aaaaaaaaaaaa66aa6565a655595a599665655595556666599a669969
{227}aaaaaaaaaaaa66aa5665a655595a5955a565559555665659555699690[g003]
{227}aaaaaaaaaaaa66aa6665a655595a5955a565559555666659695699690
{227}aaaaaaaaaaaa66aa6665a655595a5955a56555955566665969569969
{227}aaaaaaaaaaaa66aa5565a655595a5965a56555955566655956aa99690[g004]
{227}aaaaaaaaaaaa66aa6565a655595a5965a5655595556659596aaa99690
{227}aaaaaaaaaaaa66aa6565a655595a5965a5655595556659596aaa9969
{227}aaaaaaaaaaaa66aa5665a655595a5999a565559555669a5955a999690[g005]
{227}aaaaaaaaaaaa66aa6665a655595a5999a56555955566aa5969a999690
{227}aaaaaaaaaaaa66aa6665a655595a5999a56555955566aa5969a99969
{227}aaaaaaaaaaaa66aa5565a655595a59555965559555669559959599690[g006]
{227}aaaaaaaaaaaa66aa6565a655595a5955596555955566a559a99599690
{227}aaaaaaaaaaaa66aa6565a655595a5955596555955566a559a9959969
{227}aaaaaaaaaaaa66aa5665a655595a59595965559555669a59965a99690[g007]
{227}aaaaaaaaaaaa66aa6665a655595a5959596555955566aa59aa5a99690
{227}aaaaaaaaaaaa66aa6665a655595a5959596555955566aa59aa5a9969
{227}aaaaaaaaaaaa66aa5565a655595a59965965559555666659956699690[g008]
{227}aaaaaaaaaaaa66aa6565a655595a59965965559555665a59a96699690
{227}aaaaaaaaaaaa66aa6565a655595a59965965559555665a59a9669969
{227}aaaaaaaaaaaa66aa5665a655595a59a59965559555669a59669a99690[g009]
{227}aaaaaaaaaaaa66aa6665a655595a59a5996555955566aa595a9a99690
{227}aaaaaaaaaaaa66aa6665a655595a59a5996555955566aa595a9a9969
{227}aaaaaaaaaaaa66aa5565a655595a59a99965559555669659655599690[g010]
{227}aaaaaaaaaaaa66aa6565a655595a59a9996555955566a659595599690
{227}aaaaaaaaaaaa66aa6565a655595a59a9996555955566a65959559969
{227}aaaaaaaaaaaa66aa5665a655595a5955696555955566a659aa5599690[g011]
{227}aaaaaaaaaaaa66aa6665a655595a59556965559555669a59965599690
{227}aaaaaaaaaaaa66aa6665a655595a59556965559555669a5996559969
{227}aaaaaaaaaaaa66aa5565a655595a59a56965559555666959a95999690[g012]
{227}aaaaaaaaaaaa66aa6565a655595a59a56965559555665659955999690
{227}aaaaaaaaaaaa66aa6565a655595a59a5696555955566565995599969
{227}aaaaaaaaaaaa66aa5665a655595a59696965559555669599aa6699690[g013]
{227}aaaaaaaaaaaa66aa6665a655595a5969696555955566a599966699690
{227}aaaaaaaaaaaa66aa6665a655595a5969696555955566a59996669969
{227}aaaaaaaaaaaa66aa5565a655595a5956696555955566a659a99699690[g014]
{227}aaaaaaaaaaaa66aa6565a655595a59566965559555669a59959699690
{227}aaaaaaaaaaaa66aa6565a655595a59566965559555669a5995969969
{227}aaaaaaaaaaaa66aa5665a655595a5995a965559555669a595aa699690[g015]
{227}aaaaaaaaaaaa66aa6665a655595a5995a96555955566aa5966a699690
{227}aaaaaaaaaaaa66aa6665a655595a5995a96555955566aa5966a69969
{227}aaaaaaaaaaaa66aa5565a655595a59a5a96555955566a959595a99690[g016]
{227}aaaaaaaaaaaa66aa6565a655595a59a5a965559555669659655a99690
{227}aaaaaaaaaaaa66aa6565a655595a59a5a965559555669659655a9969
{227}aaaaaaaaaaaa66aa5665a655595a5999a9655595556695995aa999690[g017]
{227}aaaaaaaaaaaa66aa6665a655595a5999a96555955566a59966a999690
{227}aaaaaaaaaaaa66aa6665a655595a5999a96555955566a59966a99969
{227}aaaaaaaaaaaa66aa5565a655595a59a9a96555955566a659595599690[g018]
{227}aaaaaaaaaaaa66aa6565a655595a59a9a965559555669a59655599690
{227}aaaaaaaaaaaa66aa6565a655595a59a9a965559555669a5965559969
{227}aaaaaaaaaaaa66aa5665a655595a5996a9655595556699995aa599690[g019]
{227}aaaaaaaaaaaa66aa6665a655595a5996a96555955566a99966a599690
{227}aaaaaaaaaaaa66aa6665a655595a5996a96555955566a99966a59969
{227}aaaaaaaaaaaa66aa5565a655595a5995566555955566695999a599690[g020]
{227}aaaaaaaaaaaa66aa6565a655595a59955665559555665659a5a599690
{227}aaaaaaaaaaaa66aa6565a655595a59955665559555665659a5a59969
{227}aaaaaaaaaaaa66aa5665a655595a59a556655595556655999a5999690[g021]
{227}aaaaaaaaaaaa66aa6665a655595a59a55665559555666599a65999690
{227}aaaaaaaaaaaa66aa6665a655595a59a55665559555666599a6599969
{227}aaaaaaaaaaaa66aa5565a655595a59a55665559555665659999999690[g022]
{227}aaaaaaaaaaaa66aa6565a655595a59a55665559555666659a59999690
{227}aaaaaaaaaaaa66aa6565a655595a59a55665559555666659a5999969
{227}aaaaaaaaaaaa66aa5665a655595a5965566555955566aa599aa999690[g023]
{227}aaaaaaaaaaaa66aa6665a655595a59655665559555669599a6a999690
{227}aaaaaaaaaaaa66aa6665a655595a59655665559555669599a6a99969
{227}aaaaaaaaaaaa66aa5565a655595a5965566555955566a959996999690[g024]
{227}aaaaaaaaaaaa66aa6565a655595a59655665559555669659a56999690
{227}aaaaaaaaaaaa66aa6565a655595a59655665559555669659a5699969
{227}aaaaaaaaaaaa66aa5665a655595a59955665559555666a599a6599690[g025]
{227}aaaaaaaaaaaa66aa6665a655595a59955665559555665599a66599690
{227}aaaaaaaaaaaa66aa6665a655595a59955665559555665599a6659969
{227}aaaaaaaaaaaa66aa5565a655595a5996a965559555669a59596599690[g026]
{227}aaaaaaaaaaaa66aa6565a655595a5996a96555955566aa59656599690
{227}aaaaaaaaaaaa66aa6565a655595a5996a96555955566aa5965659969
{227}aaaaaaaaaaaa66aa5665a655595a59a9a96555955566a5995a9599690[g027]
{227}aaaaaaaaaaaa66aa6665a655595a59a9a965559555669999669599690
{227}aaaaaaaaaaaa66aa6665a655595a59a9a96555955566999966959969
{227}aaaaaaaaaaaa66aa5565a655595a5999a965559555669659596999690[g028]
{227}aaaaaaaaaaaa66aa6565a655595a5999a96555955566a659656999690
{227}aaaaaaaaaaaa66aa6565a655595a5999a96555955566a65965699969
{227}aaaaaaaaaaaa66aa5665a655595a5959a9655595556655995a5999690[g029]
{227}aaaaaaaaaaaa66aa6665a655595a5959a965559555666599665999690
{227}aaaaaaaaaaaa66aa6665a655595a5959a96555955566659966599969
{227}aaaaaaaaaaaa66aa5565a655595a59a5a96555955566a959595a99690[g030]
{227}aaaaaaaaaaaa66aa6565a655595a59a5a965559555669659655a99690
{227}aaaaaaaaaaaa66aa6565a655595a59a5a965559555669659655a9969
{227}aaaaaaaaaaaa66aa9665a655595a59a5a965559555665599aa9999690[g031]
{227}aaaaaaaaaaaa66aaa665a655595a59a5a965559555666599969999690
{227}aaaaaaaaaaaa66aaa665a655595a59a5a96555955566659996999969
{227}aaaaaaaaaaaa66aa5565a655595a5995a965559555669959596699690[g032]
{227}aaaaaaaaaaaa66aa6565a655595a5995a96555955566a959656699690
{227}aaaaaaaaaaaa66aa6565a655595a5995a96555955566a95965669969
{227}aaaaaaaaaaaa66aa9665a655595a5995a965559555666a59aaa599690[g033]
{227}aaaaaaaaaaaa66aaa665a655595a5995a96555955566559996a599690
{227}aaaaaaaaaaaa66aaa665a655595a5995a96555955566559996a59969
{227}aaaaaaaaaaaa66aa5565a655595a59966965559555665a59a96699690[g034]
{227}aaaaaaaaaaaa66aa6565a655595a59966965559555666a59956699690
{227}aaaaaaaaaaaa66aa6565a655595a59966965559555666a5995669969
{227}aaaaaaaaaaaa66aa9665a655595a599669655595556699995aa599690[g035]
{227}aaaaaaaaaaaa66aaa665a655595a5996696555955566a99966a599690
{227}aaaaaaaaaaaa66aaa665a655595a5996696555955566a99966a59969
{227}aaaaaaaaaaaa66aa5565a655595a5956696555955566a659a99699690[g036]
{227}aaaaaaaaaaaa66aa6565a655595a59566965559555669a59959699690
{227}aaaaaaaaaaaa66aa6565a655595a59566965559555669a5995969969

And paste it in a BitBench with decoding set to Manchester.

@zuckschwerdt
Copy link
Collaborator

There is a nibble sum, then another checksum byte and a fixe 0xa6 value at the end.
The temperature is a field in the middle, values are bit-reflected. See this BitBench.

@janiwe
Copy link
Author

janiwe commented Jan 5, 2025

Wow, you literally decoded this in half an hour!
I'll try to understand that and capture some more samples to come up with explanations for the rest of the data.

Thanks so much!
Jan Niklaas

@klohner
Copy link
Contributor

klohner commented Jan 9, 2025

@janiwe I took a stab at a flex decoder in case this helps you gather data. There's no direct flex support for the LSB BCD values in this signal, but I put in a brief lookup table to get a few integer values.

# WA150KM Thermometer
# https://github.com/merbanan/rtl_433/issues/3136
decoder {
  name         = 2AZUG-WA144_Thermometer,
  modulation   = OOK_PCM,
  short        = 488,
  long         = 488,
  reset        = 1500,
  preamble     = {32}aaaa66aa,
  symbol_zero  = {2}4,
  symbol_one   = {2}8,
  get          = unknown:@0:{8}:%02x,
  get          = temp_bcd_lsb:@24:{16}:%04x,
  get          = temp_c:@32:{8}:[68:22 196:23 36:24 164:25 100:26 228:27 20:28],
  get          = sum:@56:{8}:%02x,
  get          = chk:@64:{8}:%02x,
}

@janiwe
Copy link
Author

janiwe commented Jan 11, 2025

Hi, I was able to collect some more samples and identified a few more fields in the data:
Bitbench

Some observations:

  • In normal operation, the MSG_TYPE toggles between fa20 and fa28 with every send (interval is ~34 seconds)
  • Forced transmissions with the TX button have a MSG_TYPE=fa21
  • DEVICE_IDs stay consistent over powercycles
  • The devices transmit a "battery low" signal encoded in the byte after the temperature
  • Negative temperatures have another single bit set

Best
Jan Niklaas

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants