During a recent AliExpress dig, I came across a very interesting Zigbee water quality sensor. This device measures total dissolved solids (TDS), electrical conductivity (EC), specific gravity (SG), and salinity in water, plus water temperature at the probe tip. The main body sitting outside the water also tracks room temperature and humidity.

This device is white-labeled as model ZG-109TDS and comes from the Tuya ecosystem. It’s available in three variants, and this review covers the 7-in-1 version with the widest measurement range and the only one that includes specific gravity.
At the moment, you can get in only on AliExpress, as I wasn’t able to find any US/EU retailers. Here are some sellers: AliExpress 1, AliExpress 2, AliExpress 3, AliExpress 4, AliExpress 5.
What Is the Tuya ZG-109TDS
The Tuya ZG-109TDS is a Zigbee water quality sensor with a 1-meter cable probe. It is designed to measure temperature, salinity, total dissolved solids (TDS), electrical conductivity (EC), and specific gravity (SG). It also measures room temperature and humidity and runs off two AAA batteries.
The sensor is sold under different model and store names on AliExpress, including Gleco and Excellux. Inside Zigbee2MQTT it identifies as vendor Excellux, model ZG-109TDS, running on a Telink Semiconductor Zigbee radio. Under the hood, it’s just a Tuya Zigbee device, which works with Home Assistant fully locally.
The stores I found on AliExpress sell this sensor in three variants. Type 1 is a 3-in-1 environment sensor with a simple probe that reads room temperature, humidity, and probe temperature only. This is not a water quality testing sensor.
Type 2 is a 6-in-1 water sensor that adds TDS, EC, salinity, and water temperature, but doesn’t do specific gravity. Type 3, the unit in this review, is the 7-in-1 version and adds specific gravity on top of everything Type 2 offers. If your interest is saltwater or any application where specific gravity matters, Type 3 is the one to buy.
Teardown and Package Contents
The Tuya ZG-109TDS ships in a generic box containing the device itself, the probe on its 1m cable, an adhesive mounting sticker, a plastic tee for push-fit water lines, a paperclip reset tool, and a printed user manual. There is also a nice rubber mounting bracket, for attaching the device on glass aquariums or water tanks.

The probe end has two pin metal contacts housed inside a small sealed plastic sleeve. It looks like a generic TDS probe, and I was unable to identify who manufactures it. This sleeve is the only part of the assembly meant to sit in water, while the cable and the main body stay dry and exposed the entire time.

Opening the main body is straightforward, it splits into a front and back shell held together without adhesive. Inside sits a simple compartment for two AAA batteries, wired directly to a small PCB that carries the whole board’s electronics. The probe is soldered directly onto the board.


With everything laid out separately, the device is about as minimal as this kind of sensor gets. A battery holder, one small PCB, the probe cable soldered directly to it, and two plastic shell halves. The board itself is marked ZSSF-NTDS-10 V1.1, which appears to be an internal reference used by the manufacturer.

A closer look at the board shows the main MCU on one side and a separate onboard temperature and humidity sensor on the other, next to the status LED. This sensor is a Sensirion SHTC3 [Datasheet], and it is what feeds the ambient temperature and humidity readings, physically separate from the probe tip that reports water temperature.
Zooming in on the main chip confirms it as a Telink Semiconductor TLSR8251 [Datasheet], part of the TLSR825x family that combines a Zigbee and Bluetooth LE radio with a small MCU core on one die. Overall, the device is well made, with the exception of the probe solder, which feels like a sloppy job that could have been done better.


Home Assistant Integration
The ZG-109TDS currently works with Home Assistant through Zigbee2MQTT only. If you run Home Assistant with ZHA as your integration, this sensor will not work out of the box. You will need to make a custom quirk and add support.
Zigbee2MQTT Pairing and Setup
I paired the sensor using a SMLight SLZB-06MG24 coordinator, which is based on the EFR32MG24 chip and runs over PoE. The device showed up in Zigbee2MQTT immediately and completed its interview automatically, no external converter needed.

One setting worth checking right after pairing is the sampling interval. It defaults to 600 seconds, but can be adjusted anywhere between 5 and 1200 seconds from the Exposes tab. This means the sampling rate can be adjusted at firmware level, not just as a software offset in Zigbee2MQTT. Increasing the interval saves battery and prolongs the lifespan of the device.
What the Sensor Exposes in Zigbee2MQTT
Once you pair the sensor, Zigbee2MQTT unlocks a full set of readable and configurable entities for the ZG-109TDS. These cover the seven measured parameters, warning states for each threshold, calibration offsets, and the mode select, giving you everything needed to build automations or dashboards around water quality. Here’s what each does:
- Mode: Switch between freshwater and seawater
- Probe temperature: Water temperature at the probe tip
- Room temperature: Ambient room temperature from the main body
- Humidity: Ambient relative humidity from the main body
- TDS: Total dissolved solids in ppm
- EC: Electrical conductivity in µS/cm
- SG: Specific gravity on a scale from 1.000~1.050
- Salinity: Water salt levels on a scale from 0.1‰~50‰
- Sampling interval: Adjustable between 5 and 1200 seconds
- Calibration offsets for probe temperature, temperature, and humidity
- Threshold warnings for probe temperature, air temperature, humidity, TDS, and EC that trigger based on configured range
- Adjustable high and low threshold settings (v0 and v1) for probe temperature, temperature, humidity, and EC, plus a single high threshold for TDS
- Battery percentage
- Linkquality




How Each Sensor Works
Water quality monitoring was not an area I had any background in before this review, so most of what follows came from research rather than previous hands-on experience. I have done my best to get the definitions and ranges right, but if you spot something I got wrong, do not take it as gospel, and please verify anything critical against your own sources before relying on it for a real aquarium or hydroponic setup.
Freshwater vs Seawater Differences
The mode entity can be used to switch between freshwater and seawater and must be set manually, it does not detect the water type on its own. The manufacturer states that freshwater mode is used for aquariums, hydroponics, and drinking water systems, and seawater mode for marine tanks and reef aquariums. Changing the mode just makes sure the measured values are more accurate according to your environment.
Room Temperature vs Probe Temperature
As I mentioned earlier, the ZG-109TDS reports two separate temperature values. Air temperature comes from a sensor inside the plastic body itself, sitting in open air, along with the humidity reading. Probe temperature comes from the tip of the 1m cable, the part that actually goes into the water. These are two physically separate sensors reporting independently, not the same value shown twice.
Total Dissolved Solids (TDS)
Total dissolved solids (TDS) is a measure of everything dissolved in water that is not water itself. This includes minerals, salts, and small amounts of organic matter. It is expressed in ppm and gives you a general sense of how pure or how loaded a water source is. In drinking water it is used as a rough purity indicator. In hydroponics it tracks how much nutrient concentration is present in the reservoir, while in aquariums it can alert you when a water change is due.
The ZG-109TDS rates this entity 0 to 13000 ppm at ±2% full scale.
Water Salinity (S‰)
Salinity is the concentration of dissolved salt in water, expressed in per mille, parts per thousand rather than parts per million. It matters most in marine and reef aquariums, where fish and corals need the water held within a fairly narrow salinity band to stay healthy. Freshwater tanks and drinking water sources sit near zero on this scale, so the number only becomes meaningful once actual salt is involved.
The ZG-109TDS rates this entity 0.1‰ to 50‰ at ±2% full scale.
Electrical Conductivity (EC)
Electrical conductivity (EC) measures how well a sample of water conducts electric current, which rises as more dissolved ions are present in the water. It is closely related to TDS, but EC is the raw electrical measurement while TDS is a calculated estimate derived from it. Hydroponic growers rely on EC heavily to judge nutrient strength in a reservoir, since it responds immediately as nutrients are added or diluted.
The ZG-109TDS rates this entity 0 to 20000 µS/cm at ±2% full scale.
Specific Gravity (SG)
Specific gravity (SG) compares the density of a water sample to the density of pure water, which is fixed at exactly 1.000. Dissolving salt into water makes it denser, so the more salt a solution holds, the higher its specific gravity climbs above that baseline. Reef and marine aquarium keepers have long used this as a stand-in for salinity, originally with a swing arm or floating hydrometer, and now with digital probes like this one. A reading close to 1.000 means the water is essentially fresh, while a reading well above it confirms a genuinely salty solution.
The ZG-109TDS rates specific gravity on a scale from 1.000 to 1.050 ±0.001.
Testing the ZG-109TDS

I filled four 200ml glasses with distilled, bottled, tap and saltwater to run this test. Distilled water is marked by the manufacturer at under 5.3 µS/cm at room temperature, which gives me a known near-zero reading. The bottled water I used has an official conductivity of roughly 80 µS/cm and a dry residue of 53.0 mg/L, my only true external reference points.Â
Tap water at my place has no known values, so it serves purely as a comparison sample. For the fourth saltwater glass, I dissolved 5g of kitchen salt into 200ml of distilled water, to keep the salinity attributable to the salt alone rather than whatever tap water already contains. In theory, this works out to roughly 25-30‰ salinity. I rinsed the probe between each sample and let every reading settle before recording it.
Distilled Water Test
Distilled water gave me values of 10 to 11 ppm for TDS and 19 to 21 µS/cm EC for all continuous measurements. The bottle’s own label states conductivity under 5.3 µS/cm at room temperature, so the device overshot that by roughly 4 times. Salinity and SG stayed at 0‰ and 1.000, exactly as I expected for water with almost nothing dissolved in it.

The EC number was higher than the bottle’s ceiling, but it stayed low and repeatable every time I dipped the probe. That is enough to tell you when a reservoir is truly close to pure, useful for checking a batch of distilled or filtered water before you use it.
Tap Water Test
Tap water read 94 to 97 ppm TDS and 189 to 194 µS/cm conductivity. I have no printed reference for my tap water, so this result only confirms the sensor responds correctly to variable amounts of dissolved solids. These are clearly above distilled water and clearly below anything approaching salt water. Salinity held at 0.1‰ and SG stayed flat at 1.000 throughout the test. It’s also worth noting that my tap water is drinkable.

However, without a certified reference to check this against, this result mainly shows the sensor gives reasonable readings for tap water. That is still useful, a stable baseline reading gives you something to compare future readings against, so you can tell if your water changes or a filter needs attention.
Bottled Water Test
The bottled water, which is natural still water, has two separate reference points. Its label says it holds a dry residue at 180°C of 53.0 mg/L, which appears to be the standard laboratory method for measuring total dissolved solids. This is directly comparable to the ppm the sensor reports, as 1 ppm = 1 mg/L. The device floated around 48 to 51 ppm TDS, almost an exact match, impressive for a probe rated with a ±2% accuracy on a 13000 ppm scale.

Furthermore, the same bottle has an official conductivity rating of roughly 80 µS/cm. The device read 97 to 102 µS/cm EC consistently, about 20% above the printed figure. This offset is around 20%, which sounds much but it really isn’t, considering the scale goes up to 20000 µS/cm. Salinity read 0‰ and SG stayed at 1.000.
This is the closest the sensor came to a real lab comparison, and the TDS reading held up well. Between the close TDS match and a reasonably close EC reading, the sensor can clearly tell the difference between two water sources, filtered against unfiltered, or one bottled brand against another.
Saltwater Test
The saltwater sample pushed all sensors to their top limits. TDS went to 13000 ppm and EC to 20000 µS/cm immediately, the maximum of each entity’s rated range. It stayed there regardless of the operating mode I chose in Zigbee2MQTT.

In this test, salinity and SG moved significantly for the first time. Salinity climbed to the entity’s stated maximum of 50‰ within about two minutes and never gave a lower, steady value. SG behaved the same way, drifting upward the entire time I logged it, starting at 1.035 and continuing to climb rather than settling on a fixed number. Based on my own calculations, salinity should have sat around 25 to 30‰ for my saltwater mix. I only got it down into that range after diluting the mixture with about a kilo of distilled water.
This is not a failure so much as useful information on its own. If your tank ever pushes this sensor to its max on TDS, EC, or salinity, that tells you something is off, a dosing mistake, evaporation, or a genuinely concentrated solution, and it is a clear sign to dilute and retest or check with a dedicated refractometer.
Summary
The Tuya ZG-109TDS is a very interesting water quality sensor that does what it says on the box. It pairs cleanly with Zigbee2MQTT, exposes a useful set of entities, and gives you real numbers for TDS, EC, salinity, SG, water temperature, room temperature, and humidity, all from one small probe.
I’m no expert in water conditions or aquarium water needs, so don’t take my findings as facts, always do your own research. Accuracy is not lab grade, but I don’t think it needs to be for most use cases. For everyday use, like tracking a water reservoir, keeping an eye on an aquarium, or just knowing when your water needs changing, this level of accuracy is more than enough. Just don’t expect it to replace proper aquarium equipment or a dedicated refractometer for serious fish tank upkeep. Especially not for saltwater, where salinity has to stay within a tight range for the animals to survive.
If you already run Zigbee2MQTT and want an easy way to keep tabs on water quality, this sensor is a reasonable pick. Just know going in that ZHA is not supported yet, and you will have to create your own custom quirk. Here’s where you can get it:
Alternative: AliExpress 3, AliExpress 4, AliExpress 5.










