Go Down

Topic: Help with decoding 433 mhz RF XC-0331 Wireless Ultrasonic Tank Level Meter (Read 17754 times) previous topic - next topic


Hi - did you make any further progress on this ? I am trying to do the exact same thing. I actually have a Maxbotix sensor I was going to use but then started thinking about decoding the signal from a device already built for the purpose of sensing water tank levels.

Any help would be appreciated.


I'm not sure if this thread is still alive, but I've figured out how to read the temperature from the data you've provided.

Using the last data row as an example (010111110001110010001000010000001011000010000000111001000000000001101111    - 22.5 Celsius , 0.69m water level

Reading bytes 6 and 7 gives 10000000 and 11100100, reverse these bitwise giving 00000001 and 00100111 in other words nibbles 10, 11,12 and 13 are 0000, 0001, 0010 and 0111 or in hex 0, 1, 2, 7.

Unfortunately there does seem to be an error in the datasheet spreadsheet that was attached earlier - it seems it should be Temp_L = nibble 11, Temp_M = nibble 13, and Temp_H = nibble 12. Therefore temperature is 271 hex (not 127 hex)

Finishing off, 271 hex, = 625 decimal. Subtract the 400 offset gives 225 and divide by 10 gives the temperature of 22.5 degrees.

Let me know if this thread is still alive and I'll have a go at the depth calculation.


Any chance anyone could post some more bitstream data for tank depths other than 100% - I don't actually have this hardware, but trying to work backwards from the data posted.

I suspect the unit is sending back the distance between the sensor and the top of the water. The sensor wouldn't know how much water is in the tank (only the receiver knows this). Ideally, 3 or 4 sets different data - bitstream, reported depth, temperature along with the gap height and tank depth setting used in the receiver.


Anybody still interested in this topic?
I've started work on it for a different reason, I've now got two natty display units and two dead sensors! The ultrasonic sensor appears to corrode after a year or two and stop working, so after fruitlessly searching for a replacement sensor, I decided to construct my own using a waterproof ultrasonic module (typically used for car reversing sensors), thermistor using a nano and a 433MHz transmitter.
So far, using the data from this thread (thanks Kinotech for the decoding!) I have successfully been able to transmit any temperature I like, but I have not been able to decode the depth sensor data, such that I can have the display show the value I want.

I think the sensor is sending the tank depth in metres * 100, but I have not been able to figure out the 8 nibbles used to send this data.

Here is some data I've extracted from the thread - If i send it exactly as-is the display reports the correct values.

Common data:  Tank Depth  (TD):1.2m, Airgap:0.51m
The sensor should be sending raw distance (D), so when the tank is full it will be sending 0.51m, when the tank is empty 1.2m  The display unit shows water depth (WD), so it will be showing WD=TD-D = 0.69m when full and 0m when empty.

Data from Senor (extracted from previous posts and .wav files, this will need bitswapping etc per earlier posts)

T=21.8 WD=0.69 (D=.51)

T=21.9 WD=0.69 (D=.51)

T=22.5 WD=0.69 (D=.51)

T=23.8 WD=0.46 (D=.74)

T=23.6 WD=0.0 (D=1.2)


Hi, it has been quite a while this thread was alive. I am starting building a RF to WiFi bridge to transmit this data to the cloud. I see that there has been already some success on the decoding. But has there been some progress since then?

Cheers, Theo


If there is sombody still interested in the full decoding and a working implementation for an arduino or ESP32 just check out on tGitHub
Would be happy if somebody could validate the solution.


Good Day,

Could anybody please help me in decoding this hex value for this device?

be db 11 41 e3 20 28 00 de

Thank you

Go Up