Just wanted to share this little project I put together to read these tank level sensors and feed the data into my Ekrano GX. They’re low resolution (E,1/3,2/3,F), but they’re exterior and seem pretty reliable so I didn’t see a huge value in replacing them. However I could not find much info on how they worked, so I ended up reverse engineering their protocol to build a custom PCB to read them with the ADC inputs on an ESP32.
Turns out that the GX Tank 140 could maybe have worked for these, but they’re vampiric sensors that work on 5V and communicate via current changes on their supply line, so only 2 of the inputs on the Tank would work (the other two having 24V hard-wired to the outputs).
Basically each sensor on the tank will add a parallel 2k ohm resistor to its supply when activated. So I built a little current monitor using a 47ohm 1% resistor as a shunt, and a voltage divider of a 6.8k on the input and 10k to ground to bring the 5V down below the 3.3V max of the ESP32 ADC. One ADC has the divider network with the 6.8k to 5V as a voltage reference for reliably calculating the ratios on the sensor lines with slightly different supply voltages.
In the software, the tank levels calculated from the ADCs are sent to the GX device over wifi using the dbus-mqtt-devices driver. The code for the ESP32, along with the input conditioning diagrams/BoM, are in this repo: GitHub - joshperry/dusa: ESP32-based DIGI-Level RV Tank Sensors for Victron GX
I plug this board into the Ekrano’s USB port for power only, so it’s possible that a USB-based interface with the GX device would be more reliable, however I’m new to victron but very comfortable with networks and mqtt so decided to go this route for now.
