OpenMarine

Full Version: General help wanted on multiplexing
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
Hi all,

first I am new to openplotter so apologies if this is covered elsewhere but I did not find any general information.

I want to have my openplotter set up to be used in two ways:

1. headless in the wheelhouse with AIS+NMEA from legacy equipment over USB

2. on a TV in the saloon for monitoring while at anchor and for general planning, in this case AIS+NMEA from legacy equipment over wifi.

My question is a general one. With multiple inputs/outputs of NMEA data is there a way to ensure you do not get data loops, where sentences go out and come back via different routes? Left unchecked this could very quickly flood the system. I say this as on my Raymarine autopilot it says any input on the NMEA input will go out over the sea talk bus "unless that data is already on the bus". I assume it keeps a table of what source/sentences it sees on the bus and matches any input with that prior to output. Does anything like this happen in openplotter?
This is the data routing, if you follow it you should not have problems. Be careful with outputs, do not send them to any kplex/signal k input.

[Image: assets%2F-L9g5MoJ9GSCaNGq_yjb%2F-LMX8_h7...b0ccf36fdf]
(09-16-2018, 07:07 AM)Newt2u Wrote: [ -> ]Hi all,

first I am new to openplotter so apologies if this is covered elsewhere but I did not find any general information.

I want to have my openplotter set up to be used in two ways:

1. headless in the wheelhouse with AIS+NMEA from legacy equipment over USB

2. on a TV in the saloon for monitoring while at anchor and for general planning, in this case AIS+NMEA from legacy equipment over wifi.

My question is a general one. With multiple inputs/outputs of NMEA data is there a way to ensure you do not get data loops, where sentences go out and come back via different routes? Left unchecked this could very quickly flood the system. I say this as on my Raymarine autopilot it says any input on the NMEA input will go out over the sea talk bus "unless that data is already on the bus". I assume it keeps a table of what source/sentences it sees on the bus and matches any input with that prior to output. Does anything like this happen in openplotter?

you should only need either 1 or 2 not both if it gets data usb serial there is no need for wireless.. it can be hdmi in saloon and still be accessed as if headless vnc or send data to opencpn on android device.
Kplex can manage this when it is setup correctly.
On kplex page you can select any device. A click on diagnostic will show which sentence get in and which get out.
You can directly reduce traffic if you filter (block) input sentences.( typical when there are more than one GPS).
The output diagnostic does show how much bandwidth your data needs. You can reduce this with filter settings.
New in openplotter 1.2 is that you can filter system and signalk.
For low speed communication (4800) use "Accept only sentences:" otherwise you will flood your device.

You typically create loops when you have systems as opencpn which get all available sentences!
If opencpn (or any other chartplotter with nmea0183) creates a RMB sentence for the autopilot and sends it to kplex this sentence is available for all. And that means it will be send back to opencpn. It is part of the input stream to opencpn.
That's the loop. You can block it if you create another output device which has the filter Ignore sentences RMB.
Another typical loop is if you create nmea0183 sentences from Signal K or and they went from kplex into signalk to nmea0183->signalk converter. You can easilly add an ignore filter for these sentences.

In other words: Every device which uses input and output invites you to create loops.
(09-16-2018, 07:55 AM)jim321 Wrote: [ -> ]you should only need either 1 or 2 not both if it gets data usb serial there is no need for wireless.

The two options are to avoid a very long usb cable from wheelhouse to saloon where the monitor is located.

(09-16-2018, 08:12 AM)e-sailing Wrote: [ -> ]In other words: Every device which uses input and output invites you to create loops.

Thanks that was useful, the plan I have is as follows, there may not be problems but with what you say I can probably avoid them.

Ooops, I am having problems uploading images to the forum but the image is uploaded here:

https://www.dropbox.com/s/ls15xxxjlrrpvl...p.png?dl=0
I still have a problem in trying to set up openplotter to avoid loops and would like some more advice.

If I understand correctly, from the data routing diagram, kplex provides a number of inputs and outputs which is the only place where filters can be applied.

I will be getting ship's legacy NMEA: depth, speed, wind, position, etc + AIS data from a Digital Yacht iAIS over a TCP connection (if I can resolve a problem) or from USB. No problem here, I do not want to filter this as I want to access all of this via TCP for navigation using an iPad/iSailor combination. I understand that this comes from the the signalk server.

I want to send just RMB sentences to the autopilot, which has an NMEA input. I have a USB to RS422 adaptor, which I have found in the serial tab. I assume I just assign this to "NMEA 0183 output", which is the serial link from the signalk server. However, there is no ability to filter in the serial out, so everything that goes to signalk goes out over the serial port, including AIS data, which may cause bandwidth problems as the input is 4800 baud. Also the autopilot will put RMB and AIS sentences out over the sea talk bus and these will come back via the iAIS link.

The only way I can see around this is to create an output from kplex for the iPad/iSailor combo and filter out everything except RMB to signalk but then I lose the ability to use all this data in OpenCPN or various web apps.

Can you tell me if my understanding is correct and if there is another way around this problem.
(10-05-2018, 09:09 AM)Newt2u Wrote: [ -> ]I still have a problem in trying to set up openplotter to avoid loops and would like some more advice.

If I understand correctly, from the data routing diagram,  kplex provides a number of inputs and outputs which is the only place where filters can be applied.

I will be getting ship's legacy NMEA: depth, speed, wind, position, etc + AIS data from a Digital Yacht iAIS over a TCP connection (if I can resolve a problem) or from USB. No problem here, I do not want to filter this as I want to access all of this via TCP for navigation using an iPad/iSailor combination. I understand that this comes from the the signalk server.

I want to send just RMB sentences to the autopilot, which has an NMEA input. I have a USB to RS422 adaptor, which I have found in the serial tab. I assume I just assign this to "NMEA 0183 output", which is the serial link from the signalk server. However, there is no ability to filter in the serial out, so everything that goes to signalk goes out over the serial port, including AIS data, which may cause bandwidth problems as the input is 4800 baud. Also the autopilot will put  RMB and AIS sentences out over the sea talk bus and these will come back via the iAIS link.

The only way I can see around this  is to create an output from kplex for the iPad/iSailor combo and filter out everything except RMB to signalk but then I lose the ability to use all this data in OpenCPN or various web apps.

Can you tell me if my understanding is correct and if there is another way around this problem.

I'm not up on autopilot sentences, but you could try sending just the NMEA sentences the autopilot needs straight from Opencpn and not bother with kplex, set up a serial connection output with filters.
That would certainly seem to work, from reading stuff on this blog I have had a block against trying to do anything in OpenCPN and leaving it all to openplotter.

Thanks... now I have to wait a few weeks before I am back on the boat to check it all out.

Thanks for your help Smile
One more query in relation to the wiring diagram above and in the docs. Is the TCP connection from signalk on 10110 bidirectional. E.g. will NMEA sentences generated on one of the devices connected to this link be received in signalk and made available on serial or other 10110 connections? My use case is generating autopilot sentences in isailor connected via port 10110 which I will need to be available to the 10110 connection to opencpn? If not, should they be directed to port 30330, isailor does have the facility for setting multiple network connections?

I notice the standard link in opencpn is input only, how to autopilot sentences generated there sent to the rest of the system?
(10-06-2018, 05:15 AM)Newt2u Wrote: [ -> ]One more query in relation to the wiring diagram above and in the docs. Is the TCP connection from signalk on 10110 bidirectional. E.g. will NMEA sentences generated on one of the devices connected to this link be received in signalk and made available on serial or other 10110 connections? My use case is generating autopilot sentences in isailor connected via port 10110 which I will need to be available to the 10110 connection to opencpn? If not, should they be directed to port 30330, isailor does have the facility for setting multiple network connections?

I notice the standard link in opencpn is input only, how to autopilot sentences generated there sent to the rest of the system?

The Signal K Server's TCP 10110 is currently output only. In fact there is no way today to use SK server as a TCP server accepting NMEA0183 data. Adding this capability is not much work - let us know if you or somebody else needs that, preferable in Github: https://github.com/SignalK/signalk-serve...issues/637

As for filtering the general idea in SK server is that each input, like NMEA0183 from a TCP server/serial line or NMEA2000 data from an adapter,  emits messages as named events. Then you can make an output like a serial connection listen for that particular event and output the event's data.

Then we have a plugin, aptly named nmea0183-to-nmea0183, that listens for a specified event and outputs filtered events under another name. https://www.npmjs.com/package/nmea0183-to-nmea0183

Another option is to use Node-RED for filtering and altering the flow of data, in much the same way as nmea0183-to-nmea0183 works, mapping data from one named event stream to another.
Pages: 1 2