Signal K

SK

Signal K

Signal K is an ecosystem for free and open source universal marine data exchange and software.

Join

questions

announcements

server

specification

plugins-and-webapps

sensors

nmea2000

node-red

wilhelmsk

sensesp

motamman - The system has three components: A c...

The system has three components: A command builder that creates PUT-enabled bool paths, such as commands.capturePassage or commands.captureAnchor, for example. (I use KIP to toggle these on and off.) An archive/data manager listens for regimen changes (capture commands). When true, it saves the subscribing paths’ data to disk. I use the Signalk path as a file system path. So vessels.urn:mrm:uni:mmsi:338043907.navigation.position is stored as ~/.signalk/data/vessels./urn_mrm_uni_mms_338043907/navigation/position/signalk_data_2025-07-08T1025.parquet (That data is buffered and written episodically.) Finally, a Signalk web app/plugin manages a Python-based api server. Any path that exists on the file system automatically gets an endpoint and can be filtered based on dates and values or date/value ranges. Custom queries are created using the plug-in management by assigning custom SQL to an ID, which in turn receives a unique endpoint. I'm not sure if what I've built here is helpful to anyone but me. However, I do believe this has significant advantages over InfluxDB, under certain circumstances, and it could easily integrate with the playback and history API and even with Grafana. ...

motamman - I have been experimenting with a Sig...

I have been experimenting with a Signalk web app/plugin/python API that archives paths as Parquet files based on a configurable regimen system that can be toggled on and off. For example, if the regimen's capturePassage is true, it would capture a custom list of paths, such as navigation.position and navigation.attitude, courseOverGround, speedOverGround, headingMagnetic, etc. The list could be as long as the number of paths on the server. And the number of capture regimens is nearly infinite (captureAnchor, captureThisIsAFairyTale, etc.) This idea stemmed from a desire to capture AIS data of passing vessels and correlate various parameters, such as SOG, COG, distanceToSelf, to my boat’s heave, wave height, and period. I would like to present an empirical argument to local authorities, urging them to take action regarding no-wake enforcement and potential no-wake zone extensions. I soon realized I could do much more than that, and now use it for archiving and storing Signalk data for four or five regimens.) I use Parquet/file-based system because InfluxDB is a horrible data storage system, imo. And the performance of SQL Server-type data storage, especially on small devices like RPIs, can't hold a candle to a parquet-based system.) @Teppo Kurki, @Scott Bender...

naugehyde - API question (for @Teppo Kurki ? @S...

API question (for @Teppo Kurki ? @Scott Bender ?): How does a plugin developer save the "enabled" = true key for a plugin's json? ServerAPI::savePluginOptions only saves the configuration not the plugins enabled and debug state. This becomes a problem when a plugin manages its own configuration state in a custom panel AND is enabled by default.
Under such circumstances, the configuration is never properly enabled (even though its enabled by default) and therefore every time the user restarts, the configuration the plugin gets on startup appears empty. (See interfaces/plugins.ts:576) ...

naugehyde - New Version of Bluetooth Sensors fo...

New Version of Bluetooth Sensors for Signalk (1.2.4) available in App Store Bluetooth Sensors for Signal K Version 1.2.4 ...

Lars - after updating to Server 2.14 two plugin...

after updating to Server 2.14 two plugins doesn`t work - signalk-raspberry-pi-bme280 - and signalk-ruuvitag-plugin . somebody ideas?

Copprhead - I see an error message for my plugi...

I see an error message for my plugin in Dashboard -> Connection & Plugin Status, but not the full error message. In which file can I find the full error message?

Scott Bender - @whiskey6419 please use the orig...

@whiskey6419 please use the original Thread in Discord

Bram - The signalk-to-influxdb2 plugin returns ...

The signalk-to-influxdb2 plugin returns - No organization named "MyName" found. I had it working, first i thought it needed the Org ID (i added an issue/suggestion: https://github.com/tkurki/signalk-to-influxdb2/issues/89), but i guess it is not needed. But now i also doesn't accept the ID anymore. Any clue what could be causing this? Already rebooted the server several times. Thx...

Scott Bender - I have a beta test ready for the...

I have a beta test ready for the signalk-sonoff-ewelink plugin which has been broken for some time now. Would anyone like to test it out?

Gregw - I'm trying to convert my plugin from v1...

I'm trying to convert my plugin from v1 to v2 APIs, I think I understand the server side well enough, and I can see how client side works with websocket. But I can work out how to call a v2 API with a HTTP Put? So if I have a handler registered like app.registerPutHandler('vessels.self', 'navigation.racing.startLinePort', setStartLinePort) then what URL should I put to? /signalk/v2/api with the body `{context :"", path : "vessles.self.navigation.racing.startLinePort", value :...

Scott Bender - @naugehyde I am getting an error...

@naugehyde I am getting an error with the bt plugin config. "Something went wrong" .
No description

Gregw - My [signalk-racing](https://github.com...

My signalk-racing plugin is progressing and I'd appreciate if anybody would like to test it. It current calculates: start line end points from named waypoints; start line length; start line bias; distance to start line; true heading for the next leg of a course; TWA for the next leg of the course.
No description

Gregw - I'm trying to write my first plugin and...

I'm trying to write my first plugin and I'm struggling with understanding resources from the plugin point of view. I can see the resources API that is available via HTTP GET/POST methods, but I cannot work out how to access it via the app API within the plugin. If I subscribe to context: 'vessels.' + app.selfId with path: 'resources.waypoints.*', then I see deltas when a waypoint is edited (eg in FreeboardSK) and I see it has a path like: `resources.waypoints.602ee562-c6dc-42c3-a775-512597063c...

Scott Bender - @Bucket and I are trying to figu...

@Bucket and I are trying to figure out how to make a Fusion stereo play a file on a USB drive via NMEA2000 commands.

Ed - Not sure where to ask this, but here it go...

Not sure where to ask this, but here it goes. My SignalK has a 'Data Connection' which I named "GPS". It receives NMEA0183 with "NMEA 0183 Source = TCP Server on port 10110" and my Teltonika router (RUTX50) sends its gps data to this server. Working nicely; can see all relevant data in SignalK's Data Browser. But now I would like a tablet (without gps) with navigation software to fetch this gps data from SignalK. What (plugin) do I need to configure for this to make this possible? Btw, I already have the plugin "Convert Signal K to NMEA0183" installed with GGA, RMC and VTG enabled....

Aswin - I could use some advice from one of the...

I could use some advice from one of the core developers on this one. I really, really want performance data generated by the polar performance plugin on my B&G Triton2 displays. The B&G performance plugin can generate a B&G specific PGN to send performance data back to the N2K network. However, the Triton2display will only use the B&G performance PGN when it comes from a H5000 sailing computer. Therefore the B&G performance plugin uses SimpleCan to emulate a H5000 device. SimpleCan only works on linux. I am running Windows. So there is my problem. I use the Yacht Devices Yden02 as a gateway between N2K and signalK server. This gateway has a bridging function and will pass on any received timestamped GPN unchanged. I could fork the B&G performance plugin and modify it to work for me. How does app.emit works? Can I use it in a way that I can emulate the presence of an H5000 device and send the appropriate PGN as if it was coming from this device knowing that the Yden will bridge the PGN unchanged?...

Brandon Keepers - @AdrianP Quick question for y...

@AdrianP Quick question for you. I was just looking through the source for your flags plugin to learn from it, and noticed it calls initFlagsEndpoint in start instead of in registerWithRouter. Can you help me understand why? https://github.com/panaaj/signalk-flags/blob/main/src/index.ts#L109