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

Sailabout - Freeboard-SK: is there a possibilit...

Freeboard-SK: is there a possibility to use mbTiles charts in Freeboard-SK? I tried , even with the help of AI, without success after seeing "https://pysselilivet.blogspot.com/2021/09/signal-k-charts-offline-online.html".

Phil D - Using signal k and signalk-venus plugi...

Using signal k and signalk-venus plugin. Was working fine with cerbo gx but I added another cerbo gx for a 2nd battery bank. They are both on tje same network with different IP addresses but there is a clash between the 2. Even unplugging the new cerbo I cannot now get the 1st one to contact. Any pointers on how to resolve please?...

pwm802 - Hello, I am new to SignalK. What is t...

Hello, I am new to SignalK. What is the current state of Onehelm and SignalK? Are there any working sample projects to use as a starting point? I would like to try to setup SignalK and KIP on a RPI4 and serve the HTML5 to a Garmin TD50 MFD.

motamman - I updated npm package serveral days ...

I updated an npm package serveral days ago, but it isn't showing up in the appstore. The app update correctly when I run npm install signalk-parquet@latest but the appstore is one version behind. This https://www.npmjs.com/package/signalk-parquet indicates correctly beta.5 is the latest. The registry (https://registry.npmjs.org/signalk-parquet) is correct too. ...

Kees - I am getting errors with the new n2kais ...

I am getting errors with the new n2kais to NMEA plugin version. Since installing that update my ais does not send through anymore. The plugin keeps marked as uninstalled even when I install. In the error log it says Plugin not registered and after that it gets this: Aug 07 13:02:44 (node:53140) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 delta listeners added to [FullSignalK]. Use emitter.setMaxListeners() to increase limit (Use node --trace-warnings ... to show where the warning was created)...

Lille Ø - Ok, this was a super minor one. But s...

Ok, this was a super minor one. But since bunch of people here in the 🇨🇼 anchorage have asked me how to do combined values in Signal K (total output from all solar controllers, fresh water remaining in all tanks, etc), I published this little thing: https://github.com/meri-imperiumi/signalk-value-combiner...

rjnorris9533 - Help Please - I am trying to ins...

Help Please - I am trying to install the ewelink sonoff plugin on signal K and it is acting strange. I can do the install and it plug in will show up on the Singnal K Dashboard as signalk-sonoff-ewelink. I went to the server link listed and got my API number however when I go to the SIngnalK, server, plugin Config to set up my API number the plugin is not listed. If i go to the Signal K App Store the Ewelink app shows that it is not installed. (thought I might try deleting it then reinstalling but cant.) what is strange is that if i go back to the SignalK Dashoard and click on the signalk-sonoff-ewelink and go down to the "Source Priorities Settings" it will how the path of devices in SignalK but none of the SonOff Ewelink device (which I wasnt expecting because I ve never been able to enter the API number for the Ewelink server. Anyone have any ideas on how to resolve. The Plugin Shows to be working however in APp store I cant delete it bacuse it shows not installed. If i try to install the above cycle repeats....

jhoop - After looking at Kip v3, I perfer Kip v...

After looking at Kip v3, I perfer Kip v2. Much easier me to use on my setup. How to I go back to Kip v2?

Greg Young - MQTT text string?I have a device...

MQTT text string? I have a device (ESP32) that is sending data to signalk MQTT broker, for values (eg /vessels/self/electrical/generator/Oil/pressure ) which works fine. however Im also trying to send a text string which is the generator status (eg “Running”) ...

barnaclebill - I know it should be obvious but ...

I know it should be obvious but I cannot figure out how to add a new route in Freeboard SK. When I click on Routes I see one that I created before (no idea how) but no "+" or anything similar.

barnaclebill - If a plugin like signalk-derived...

If a plugin like signalk-derived-data doesn't have all of the source data specified in "derivedFrom", will the calculation not happen? Asking because I modified the trueWind calc to still calculate TWA even if headTrue is null, but still not getting TWA (when SK has no heading but has AWA, AWS, and STW).

Bram - I have signalk-mqtt-gw configured to con...

I have signalk-mqtt-gw configured to connect to my home assistant mqtt broker. I would like to send only a couple of path (to start with navigation.position and huawei, both on self). But it keeps sending all changes. I've set "data to send to remote" to "3 self paths in JSON format" and than configured the two paths. Is there something i am missing why it is not just limiting it to those two paths?
No description

Captain - I'm thinking of writing a simple plug...

I'm thinking of writing a simple plugin that would give the user a way to calculate synthetic paths based on a simple formula. Something like this:
electrical.dc.0.load.current = (electrical.solar.0.current + electrical.solar.1.current + electrical.alternators.0.current) - electrical.batteries.0.current
electrical.dc.0.load.current = (electrical.solar.0.current + electrical.solar.1.current + electrical.alternators.0.current) - electrical.batteries.0.current
Or maybe a spreadsheet style syntax....

Lille Ø - Still a little bit rough around the e...

Still a little bit rough around the edges, but there's now a plugin to integrate Signal K with the Meshtastic LoRa mesh network. What now works: * Updating Meshtastic node position from Signal K * Sending Signal K alerts as texts to a configured set of Meshtastic nodes * Sharing telemetry (wind, temperature, etc) to the mesh * Controlling digital switching with text messages...
No description

Scott Bender - If you are a author of a plugin ...

If you are a author of a plugin that sends NMEA 2000 data via nmea2000JsonOut or gets it via the N2KAnalyzerOut events. Please pipe in here. I would like to get input on the canboatjs 3.x changes and get you moving there.

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) ...
Next