npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

signalk-sailsense

v1.3.0

Published

Connects to a SailSense Hub, and publishes raw data to SignalK. Additionally exposes a web application for viewing the data and manipulating circuit breakers.

Readme

signalk-sailsense

A Signal K plugin that connects to a SailSense Hub over MQTT and publishes all sensor data as raw Signal K values.

What it does

The SailSense Hub exposes boat data — batteries, tanks, breakers, actions, GPS, wind, depth, and power rail telemetry — over a local MQTT broker. This plugin subscribes to all of those topics and forwards every value into Signal K under a sailsense.* path namespace, making the data available to any Signal K instrument, logger, or automation.

Installation

Install from the Signal K AppStore inside the Signal K server UI, or via npm:

npm install signalk-sailsense

Then restart your Signal K server and enable the plugin under Server → Plugin Config → SailSense Hub.

Configuration

| Field | Default | Description | |---|---|---| | MQTT Broker Host | 192.168.50.231 | IP address or hostname of the SailSense Hub on your local network | | MQTT Broker Port | 1883 | MQTT port (standard; change only if you've customised the Hub) |

Topic groups

Each topic group can be toggled independently in the plugin config UI to reduce noise:

| Group | Default | Covers | |---|---|---| | Batteries | enabled | Voltage, current, charge level, alerts | | Tanks | enabled | Fuel, fresh water, blackwater levels and alerts | | Actions | enabled | Lights, pumps, and switch states | | Breakers | enabled | Circuit breaker on/off states | | Hub | enabled | GPS, wind, depth, IMU, Wi-Fi, Zigbee | | Powernet | enabled | Power rail voltmeters, analog inputs, output states | | UI Config | disabled | Hub interface configuration blobs (high-volume, low-value) |

Signal K paths

MQTT topics are mapped to Signal K paths by:

  1. Stripping structural children segments
  2. Replacing / with .
  3. Prefixing with sailsense.

Some examples:

| MQTT topic | Signal K path | |---|---| | batteries/children/Main/children/Bank1/voltage | sailsense.batteries.Main.Bank1.voltage | | tanks/children/water_tanks/children/water_tank_portside/levels/pct | sailsense.tanks.water_tanks.water_tank_portside.levels.pct | | Hub/telematic/signalprocessed/rx | sailsense.Hub.telematic.signalprocessed.rx | | breakers/children/HIFI/state | sailsense.breakers.HIFI.state | | powernet/device/powerail/1/voltmeters/1/value | sailsense.powernet.device.powerail.1.voltmeters.1.value |

Note on breaker paths: the hub also publishes a deeper path breakers/children/HIFI/children/HIFI/state, but that is a retained MQTT message that does not update with live state. Always read from sailsense.breakers.{Name}.state.

String payloads are coerced to native types: "True"/"False" become booleans, numeric strings become numbers, and JSON blobs are parsed into objects.

Subscribed topics

  • batteries/# — battery voltage, current, percentage, remaining capacity, alerts
  • tanks/# — tank levels (%, L, US gal) and alerts
  • actions/# — switch/light states and dimmer steps
  • breakers/# — breaker on/off states
  • Hub/# — GPS, wind, depth, IMU, Wi-Fi, Zigbee, and telematic data
  • powernet/# — power rail voltmeters, analog inputs, and output states
  • ui_config/# — Hub UI configuration blobs

Dashboard

This package includes a built-in web dashboard, served by Signal K at:

http://<signalk-host>/signalk-sailsense/

The dashboard has four tabs:

| Tab | Shows | |---|---| | Power | Battery bank voltage, current, and state of charge (dynamically discovered) | | Tanks | PORT/STBD fill gauges for fresh water, fuel, and blackwater with litre readouts | | Breakers | All 15 circuit breakers with live on/off indicators | | Lights & Pumps | Nacelle, exterior, and cabin light states; bilge and water pump states |

Data updates in real time via WebSocket with a 3-second REST polling fallback. No installation or build step required — it is a single HTML file bundled with the plugin.

Tabs can be deep-linked via URL hash: #power, #tanks, #breakers, #lights.

Browser compatibility

The dashboard is compatible with Chrome 70+, including the embedded Chromium browser on B&G Zeus 3 and similar Navico MFDs. No polyfills are required — the code avoids all JS and CSS features introduced after Chrome 70.

Authentication on MFDs

MFDs have no Signal K session cookie, so if Signal K has authentication enabled and Allow Read-Only Access is disabled, the dashboard will display an error rather than silently showing empty panels.

Two ways to fix this:

  • Simplest: in Signal K admin go to Security and enable Allow Read-Only Access. This allows unauthenticated reads on a private boat LAN.
  • Token-based: configure a JWT token in the signalk-navico-embedder plugin. The embedder injects the token into every proxied request and into the page as window.SK_TOKEN, which the dashboard picks up automatically.

Hardware reference

See DEVICES.md for a full map of breakers, lights, pumps, tanks, and Powerail outputs specific to the SailSense system.

License

MIT

Luke's development cheatsheet

npm link /Users/lukeescude/Code/signalk-navico-embedder && npm link /Users/lukeescude/Code/signalk-sailsense && signalk-server