philseeley / boatinstrument

Boat Instrument
GNU General Public License v3.0
12 stars 1 forks source link

RFE: support other (other than SignalK websockets) streaming sources #1

Closed mgrouch closed 2 months ago

mgrouch commented 3 months ago

They could be:

Thanks, It looks like an awesome project!

philseeley commented 3 months ago

Hi Mikhail, many thanks for the feedback.

Supporting other data feeds was something I weighed up when I started the project, but I quickly realised that there's a lot required over and above just parsing the data streams, for example dealing with multiple sources and prioritising them on a per-PGN/Sentence basis.

At the moment the fundamental framework of the app tries to keep the implementation of the "Boxes" as separate as possible. You should be able to build a new Box using any available Flutter widgets and just have it declare the signalk paths it's interested in.

I did look into the possibility of taking some existing parsing coded (e.g. from signalk) and translating it into Dart, but that didn't get very far. Even if some existing code could be translated, that would only cover NMEA or other standard streams and would not cater for custom sources that people implement.

What seems to be the defacto standard is to plug everything into signalk, so that seemed the obvious choice for my data source of truth. FYI historically I've not been a big fan of web services due to the huge overheads they introduce, but json over websockets seems a good compromise.

As Flutter/Dart requires at least a minimal OS like Linux, if I wanted to produce a standalone instrument with just an N2K connector, I can run signalk on it as well as my app.

I definitely like the idea of having a reusable set of parsers and this might become more relevant if Flutter gets a port to a more embedded platform like the esp32, but I don't think that's very likely due to the Dart requirements.

Something I'll keep my eye on though.

Cheers Phil