irwinr avatar image

RV-C CAN Bus tank monitors

I'm trying to figure out how to take advantage of the tank monitoring capabilities in the CCGX. I know for resistive sending units I need the VE.Can resistive tank sender adapter... My only problem is I have three tanks (Fresh, grey, and black) and these adapters cost $400 each!!! I would end up spending more than twice as much on these "adapters" as I have invested in the CCGX itself.

So I started looking at options. For RV holding tank monitoring: SeeLevel II is pretty much considered the standard for high end monitoring. When i was looking at their product offerings I noticed they have sending units that support "RV-C" which is a CAN Bus based protocol. Since the VE.Can adapter simply converts the resistance it gets from the tank into CAN Bus messages... If the SeeLevel II sends CAN Bus messages to begin with then it *should* be fairly straightforward to just connect these to my existing VE Can bus (I already have a CAN bus between the CCGX and my Orion Lithum BMS system)

That's assuming that the RV-C messages sent by the SeeLevel II are compatible with whatever message format the VE.Can adapter sends. I'm hoping someone from Victron can help me out.

CCGX Color ControlVE.Cantank monitor
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Is there any progress with this integration? I have a CCGX and would like to use the Seelevel sensors. Either protocol would be welcome.

This topic seems to be the latest thing lately as I have the same question and so do a few others.

6 Answers
mvader (Victron Energy) avatar image
mvader (Victron Energy) answered ·

Yes those tank sender adapters are really expensive; also for us to buy.

RV-C seelevel: no that doesn’t work. There has been someone (an end user who is also software developer) working on making them work; but, it required some changes on our end; and we haven't had time to look at those yet.

One option you can consider is to wait several months; with a bit of luck you can get away with (only) buying a Venus GX; and hooking it up to the CCGX via canbus. See my reply to @Steve Mullins ; dd October 26th. I have no exact date; or any other info:

UPDATE 2020-01-28: we have the various Garnet Seelevel tank monitors in our R&D lab (N2K version, RV-C version, and one more), and we'll in the near future look to see what is needed to make the N2K one work out of the box. Currently it has an issue, that it shows only one tank monitor that constantly overwritten, ie it cycles from Fresh water to Gray water to Black water and back again to Fresh water, instead of showing each of them separately. Thats also the issue for which Ben has, elsewhere in these threads, explained how he himself made a workaround for that.

To follow progress on our fix, see this issue:

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

(Reposting from another thread as requested):

Thanks for the reply.

I would certainly consider waiting and buying the Venus GX if that was my only option. But that would require me to stick with "resistive" type tank monitors. (Which will require me to actually cut holes in my tanks to add them).

I understand if RV-C isn't working today but it is just CAN Bus and the CCGX already speaks CAN Bus. So implementing RV-C should be a simple software update to program the CCGX to decipher the specific CAN messages being sent by the SeeLevel. In general that seems like a much more obvious long term solution. RV-C is a pretty standard protocol in RVs and Victron equipment is used a lot in RVs so it seems like something Victron should at least consider supporting, especially since you already support CAN Bus. Or at least offer a way to add support for custom CAN bus messages in CCGX so we can DIY.

Yes; indeed. Adding RVC support can definitively be done; and requires only software work (most probably).

And it might be simple; or not simple; but regardless we have lots of ideas and whishes and only so many good software developers available; so have to prioritise.

I like that seelevel very much; remember seeing years ago already in the USA in Ibex and also RVIA show.

You said that we should offer a way to DYI; we do offer that: if you’d want to go and implement RV-C protocol yourself; by all means to ahead; start reading here:

irwinr avatar image irwinr mvader (Victron Energy) ♦♦ ·

Understood. But you clearly have customers who would like to see integration between SeeLevel tank monitors and the Victron Venus/CCGX equipment. I think I'll go ahead and order the SeeLevel and then maybe in the near future Victron will add support, or maybe I'll free up enough time to add the driver as described above.

My only thought is whether I should go the RV-C route or ask Garnet about the N2K version. It sounds like they both require a custom driver to be built as of right now?

Yes. Not sure which one to advise. I’m sure one of them will be supported natively by us; but I can’t promise which one it will be

Todd Wackford avatar image Todd Wackford mvader (Victron Energy) ♦♦ ·

It's been a few months since the last update on this thread. @mvader (Victron Energy Staff), has there been work on a solution? Please provide us an update if possible.


more info on how to start developing a driver that reads rv-c style tank level data (seelevel II) was posted later here

An update:

on the Victron side; there has unfortunately been zero progress:
1) we're not busy implementing read-out of RV-C style tank senders; and are not (yet) planning to do that soon either.
2) we've not been testing or modifying our code to make it work with the N2K version of the Garnet / Seelevel.

And lastly in case anyone stumbles upon this comment: note that @ben has written code to run on a GX device that does read the RV-C style tank senders. More info further back up in this thread/question.

Kevin Windrem avatar image Kevin Windrem mvader (Victron Energy) ♦♦ ·

I also have developed code (based on Ben's) that works with the Garnet SeeLevel N2K sensor. I have my SeeLevel sensor displayed on the CCGX.

I have made several enhancements to Ben's code and would be glad to share it with anyone who wishes to get their SeeLevel sensor data displayed on a Venus OS device.


One application handles all SeeLevel sensors rather than Ben's code which requires a separate app running for each sensor.

Reformatted the Tanks column on the display to handle up to 6 sensors so SeeLevel sensors can be combined with those from other sources.

No response from sensors is displayed in Tanks column

Lots of under-the-hood stuff too.

Interest from multiple Class-B RV owners implementing Multiplus / MPPT, LifePO4, BMV 712, Venus GX systems. Our small tanks can only support the side mounted stick on sensors as mentioned in this thread and we are looking to a single UI / Ecosystem to consolidate and display our data so this is the last missing piece.

I would be very interested if you could share.

me too @Kevin Windrem! Is it on github somewhere? Depending on how its done and state its in we could discuss adding that driver into Venus OS in case you're open to that?

And for the gui changes: welcome to send a patch on that/those qml file(s) to the developers mailinglist.

Kevin Windrem avatar image Kevin Windrem mvader (Victron Energy) ♦♦ ·

I'm happy to share.

I'll need to set up to use GitHub as I've never used it before if that is the best way. Is there a place in the Victron area or should I create my own?

My code includes a new Python program that breaks up the SeeLevel tank dBus object into 3 new ones (for each sensor). The patches to the OverviewMobile.qml and Tanks.qml GUI files hide the original SeeLevel sensor information and clean up the Tanks column.

What I've done isn't exactly perfect but it does work fairly well. The N2K tank driver in Venus OS prevents error tank levels from reaching dBus so some of my modified GUI doesn't display errors. Also, the original SeeLevel dBus object still shows up in the devices list with changing values.

It would obviously it would be better to fix the issue at a lower level before the dBus object is created but I can't get to that code.

Note that this code is for the SeeLevel NEMA2000 version of their tank sensor system, NOT the RV-C version. This version is currently an OEM only version that isn't generally available to the public.

Also note, the SeeLevel N2K sensor uses a proprietary connector for the CAN bus connection but the mate is available through DigiKey and it's easy to make up a cable with an RJ-45 on the other end if that's the only non-Victron CAN device in the system.

> Note that this code is for the SeeLevel NEMA2000 version of their tank sensor system, NOT the RV-C version. This version is currently an OEM only version that isn't generally available to the public.

Ah ok; thanks. I thought we were talking about RV-C.

In that case.. let me try and get one of such senders here in The Netherlands so we can see whats going wrong and try and fix that. There should be no reason to make special code to make a NMEA2000 tank sender work.

Show more comments

I am also interested

nice to hear there is a lot of interest! I briefly checked out the work as done by Kevin, and then there is also the work done by Ben.

Before on our side doing anything with that we'll see to it that we can support the Seelevel N2K version properly in our own existing software. See here for progress:

All that doesnt make support for the Garnet, or any other brands - are there any popular ones? - RV-C type senders, which remains on the wish list.

Kevin Windrem avatar image Kevin Windrem mvader (Victron Energy) ♦♦ ·

Any progress towards SeeLevel N2K support?

My repeater app (based on Ben's work) is working -- mostly. The SeeLevel dBus object sometimes switches to a different tank rapidly and my repeater app misses one of tanks. I've upped the polling rate to every 200 mS but that takes additional CPU time away from other Venus tasks. I might need to rewrite to use dBus signals but don't want to invest the time if a native implementation is forthcoming.

Update: I have streamlined the code that scans the SeeLevel dBus object. Currently at 50 mS polling rate with a 10 second timeout! Still missing one tank occasionally.

It's looking more like we will need a native implementation to provide a stable display.

I can try signals but am a bit lost as to how to get values passed to the signal handler. Any help would be appreciated.

I've gotten several email notifications over the past few weeks of replies to this thread, but when I click on the notifications they aren't showing up on the actual thread. Were they deleted?

Hi, I didnt delete anything. Perhaps you need to press a “Show” link somewhere?

ben avatar image
ben answered ·

There is now an NMEA2000 SeeLevel sender that can be hooked up to the Victron N2K adapter. This will expose the tanks without needing to buy three senders, and you get to use the best side-of-tank sensor.

However, there are limitations in Venus today around handling multiple tanks coming from a single N2K sender. There is a workaround if you are comfortable working in linux and modifying the Venus/CCGX environment. Reach out to me directly if you choose to go that route and I can show you what I've done.

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Can you post what you've done? I'm sure there are a ton of folks who have searched this topic before (As I've done) and would benefit from seeing what you've done.

I am a bit confused by the NMEA2000/N2K references. When you say "There is now an NMEA2000 SeeLevel sender" I assume you mean the 709-RVC which is the one I'm referring to in my OP:

NMEA2000 and RV-C are both basically the same thing (SAE J1939 based CAN Bus) but SeeLevel doesn't specifically mention NMEA2000 anywhere that I can see, only RV-C. Likewise with the N2K adapter: It's just CAN Bus so you shouldn't need any adapter aside from the plug ends? You just splice CAN high, low, power and ground wires accordingly.

I'm quite comfortable with Linux so if it's possible to make this work I'm all ears. I'm sure I'm not the only one either.

I don't have the time to write it up cleanly at this point, but I can walk you through it and you can do that as a gift to the community. :-)

The N2K sender is brand new and not on the web site, but you can call Garnet and see if they'll send you one. They were developed for a large OEM RV manufacturer.

I don't believe RVC and N2K use the same PGNs, and maybe more, but I haven't delved into the protocol differences because I haven't needed to. (And I am not eager to go spelunking in proprietary N2K land, either.)

Once you get your N2K SeeLevel -> Victron NMEA -> Venus pipeline set up, you will find that the sender transmits n tanks but they appear as only 1 tank in Venus OS/D-Bus. That tank gets "overwritten" constantly by each new value as it streams in.



What I did is write a little demultiplexer that watches those tank values and writes them out to n discrete D-Bus tanks. Then I modified the QML to filter out the source tank from the UI.

I have recently moved to Grafana for dashboarding, so there's no need to fool with QML (or any of the Venus Qt-over-VNC) if you're willing to do even more with MQTT, but that's a separate topic.

If you want to discuss it more, come on over to the dev-venus google group and I can explain more.

For clarity, the “Victron N2K adapter to which @ben refers is just a plug converter goes from micro-c n2k style to RJ-45 Victron VE.Can style.

No electrical components or software in there.

ben avatar image
ben answered ·

Just in the last few days, someone has reported good results with BEP TS1 on Venus. If you have room to install ultrasonic senders on the tops of your tanks, these are relatively affordable and now known to work.

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Nice. Do you have a link to the post where they reported it working? I believe I do have sufficient space above the tanks to install sensors.

It's in a private forum. Reach me at the contact info I shared earlier, and I can get you to it.

Nevermind: i just took a look at the user manual for the BEP TS1 and it says it can only be used on tanks deeper than 200mm (About 8 inches) and my tanks are only 6 inches tall.

That's too bad. SeeLevel with JS senders might be your best bet.

Kevin Windrem avatar image
Kevin Windrem answered ·

Any progress on getting SeeLevel and CCGX interfaced? I am working with Garnet to see if I can get a NMEA2000 version of their SeeLevel II units (p/n 709-N2K_NLP, not yet available to the public) for integration work.

Ben, you indicated that you had done some work (a "demultiplexer" and a QML filter). Can these be made public or via private message in case you don't want to share with the whole community right now?

Matthijs, has there been any progress on SeeLevel integration into the native CCGX code either via RV-C or NEMA2000?

1 comment
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

I can give you the code, sure. It’s duct tape and bailing wire, but stable for a year now. :)

natebert avatar image
natebert answered ·

Along the same discussion, though this might be a little off topic, but does anybody know anything about these iSense sensors from Tech-Edge Manufacturing:
They appear to be 'MODA' sensors, not sure if they are proprietary.

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Kevin Windrem avatar image
Kevin Windrem answered ·

I have updated my SeeLevel NEMA2000 tank repeater system to use signal handlers for both /FluidType and /Level. After three days of testing, I have not had a single "no response" condition which previously occurred when SeeLevel sends messages to the CCGX close together.

The package can be found on GitHub:

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.