[APP][Pro] Tank Level Meter TF-FT002

For my apps I receive occasional donations. I thought I would give it a good use. Well, according to my wife it is an absolutely senseless investment. But hey, it was only 30 euro, and I had never created a 433MHz app before. So here we go.

I bought this device to be able to see how full my rain barrel is.

Since Homey’s 433 range is terrible, I do hope that Homey can receive the signal. The barrel is only 8m outside the wall where my Homey is placed. Edit: I just installed it on the rain barrel outside, and yes Homey receives the data :tada:.

After receiveing the device I started to record the signal. It appears to be sent exactly every 3 minutes. I used GTKWave to visualize the signal:

I know it has temperature, distance and maybe battery state in there. Googling for TF-FT002 I discovered that the protocol was already figured out by others. Unfortunately I also found out that there are multiple ‘flavors’ of this protocol, and my flavor had not been deciphered by anyone yet. So a time consuming reverse engineering effort was started by me.

First step was to figure out the type of signal. It looked like ones and zero’s were encoded as different pulse-timings. Also I saw that the signal always had the same starting bits. I used that info to set up a Homey app that would trigger reception on the starting sequence, and to decode the pulse-timings into a string of bits.

Secondly I slowly increased the temperature of the sensor by 0.1 degrees, and kept everything else unchanged. I figured that a 0.1 change in temp would shift one bit somewhere.
Actually multiple bits changed, and I figured that also a checksum (CRC) was in the signal, probably in the end of the string.

Thirdly, after manually (via excel) breaking up the string of bits in numerous ways I eventually found what parts of the string were forming ‘nibbles’, which are half bytes. But the temperature change only made sense if I inverted the ones and zero’s, and then secondly I needed to reverse 4 bits per nibble, and thirdly I needed to combine 3 nibbles spread randomly across the bit stream, and lastly I had to substract 400 degrees. Wow, I still don’t know how I figured that out. But I did :slight_smile:

After figuring out how to decode the temperature, I started to find the distance measurement. The distance is used to know how deep the water level is in my rain barrel. Knowing the crazy thinking of the device developers by now, I soon figured out also how to decode the distance. It appears to be measured in cm (as I was able to confirm with a tape measure).

This weekend I hope to find a battery state or battery alarm. I put some batteries in the device that were empty (or so I thought), but the sensor has been able to run on them already for 2 days without a battery alarm :crazy_face:. I will try putting it in my fridge and see if the batteries start dying then.

So stay tuned for more progress. EDIT: The app is finished :beers:



Impressive :smiley:

Well I did find some hints on the internet.

And I just (finally !) figured out how the CRC checksum works. It seems this device is not transmitting the first bit. And Homey appears to remove the trigger part (‘start of frame’) from the data payload. But after reconstructing all that, I could correctly calculate the CRC.

And guess what… What I have now matches the info I found on the internet very well. Apart from the battery state, for which there seems to be discrepancies between different versions of the sensor, most of my reverse engineering has resulted in what others already found out before me…:rofl:

Sounds great! Interested in this app!!!

1 Like

So I just ‘permanently’ installed the sensor on my rain barrel, about 8 meters away from Homey. Reception in Homey is 90% good, meaning I sometimes miss a message, but 3 minutes later that is usually corrected.

The sensor is supposed to be used for very large tanks, up to 15 meters high! The downside is that the gap between the sensor and the top water level must be at least 30-40cm. My water barrel is only 1,2m high, and the top water level is 10cm below the sensor. I just have to see how close the sensor can detect the level after a bunch of rain.

Here some installation pics (I really hate this kind of stuff, I’m not really a handy man :wink:)


The app is starting to get to its final shape…

How can I get the app?

You have to pay me :joy:

Or wait untill I have finished it enough to upload it to the app store :wink:

Do you already have the sensor?

No don‘t have. Will order them. But first the app should be in the App Store…

The app is ready and uploaded to Athom :partying_face: :love_you_gesture:

It will be available in the store after Athom approves it. That usually takes a few days.

And if you want to install it now, it is already available in the community store:


And Athom already approved it.


Last night we had a bit of rain. Very pleased to see this morning my setup actually works!

1 Like

Really good job. Will test and donate when I have the Sensor.

1 Like

Great work!

Q: I have a salt barrel for my water softener and I always wanted to get a notification when the the barrel gets nearly empty. Do you think this device can measure salt levels as well? Looking at the discription it might work with ultrasound. They are large salt crystals (0,5-1cm).

As long as the surface is almost horizontal, 1cm crystals should be ok. If the salt is at an angle though, the sound will not correctly be reflected back to the sensor I think. But hey, it is 30 euro. Just give it a try :slight_smile:

Thx. Will do and post results :+1:

1 Like

Beware that the minimum distance between the sensor and the surface is around 30-40cm. Any closer than that and the sensor will not report it!

I was just going thru the specs indeed. My container is 0-90cm, but I am fine if I cannot read the first 50%. I will just create some logic that says at least 50% full for the first 45cm, and then it becomes important that it will start sending notifications from 45-90cm down. At least is a fun little project to mount it into the cap.

Update 15/3: It appears that the sensor cannot read the salt level. It does need a flat (water) surface to reflect properly, so I am returning the device. The App is brilliant though. I was able to pair easily and the data it took from the device seemed accurate.

1 Like

I already have that logic built into the app.

And you can set an alarm when the level goes below e.g. 20%.

1 Like