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-ble-sensors-plugin

v0.1.4

Published

Passive BLE sensor listening for SignalK (SwitchBot, RuuviTag, and others) via the SignalK BLE Manager API — no GATT connection required.

Readme

signalk-ble-sensors-plugin

BETA - This is built for one person's boat, so has limited sensor support, and intended as stop-gap until bt-sensors-plugin-sk has BLE Manager support.

Passive BLE sensor listening for SignalK — reads temperature, humidity and battery data broadcast by cheap, popular BLE sensors and republishes it to SignalK paths, without ever opening a Bluetooth connection to the device. Relies only on BLE Manager, so requires SignalK v2.31 or above.

For boats that have IP68 RuuviTag Pro outside and RuuviTag inside, it can be handy to republish the inside pressure value as if it were outside, for example when using the Barometer Trend plugin, so there's an option now to pick a device to publish the pressure also to environment.outside.pressure.

How it works

Sensors like these broadcast their readings in plain BLE advertisement packets a few times a second. This plugin listens to that broadcast stream through the SignalK server's BLE Manager API and decodes it — there's no pairing, no GATT connection, and no battery drain on the sensor from being connected to.

Devices the plugin doesn't recognise (anything not in the supported list below — a phone, a fitness tracker, or a sensor type not yet supported) are ignored entirely; only useful advertisements from a recognised sensor type are ever surfaced, so there's noise from unknown devices reporting their Bluetooth signal strength.

Requirements

  • SignalK server >= 2.31.0 with the BLE Manager enabled (Server → Bluetooth in the admin UI) and at least one BLE provider available — the server's own local Bluetooth adapter support is enough, or a BLE proxy.
  • No other dependencies. This plugin never talks to Bluetooth hardware directly.

Supported sensors

| Sensor | Notes | | ------------------------------------------------ | ------------------------------------------------------ | | SwitchBot Meter (WoSensorTH) | Actively used, well tested | | SwitchBot Meter Plus | Actively used, well tested | | RuuviTag (data format 5) | Actively used, well tested | | Xiaomi LYWSD03MMC (pvvx/atc1441 custom firmware) | Best-effort — not actively used, contributions welcome | | Govee H5074 / H5075 | Best-effort — not actively used, contributions welcome |

Stock Xiaomi firmware (encrypted, not the ATC/pvvx custom firmware above) isn't supported. Sensors that need a GATT connection to read (Victron, Renogy, most BMS chips, etc.) are out of scope for this plugin. Many of these already have plugins, such as signalk-bluetti-plugin or signalk-victron-ble.

Configuring a sensor

  1. Install and enable the plugin, then restart (or just start) the SignalK server.
  2. Make sure the sensor is powered on and within Bluetooth range for a minute or two.
  3. Open the plugin's configuration page and click + Add Item under "Registered sensors".
  4. Pick the sensor from the Device dropdown — it lists every recognised sensor the plugin has seen, labelled with its advertised name, sensor type, and MAC address. If it's not there yet, close the page, wait a bit longer, and reopen it.
  5. Fill in a Zone / location (e.g. cabin, fridge, engine) — this becomes part of the SignalK path (environment.<zone>.temperature, etc.); dots nest into sub-paths, e.g. inside.mainCabin becomes environment.inside.mainCabin.temperature — and optionally a Name override.
  6. Save. Readings should start appearing within a few seconds.

If a sensor measures pressure (currently RuuviTag only), it can optionally also be picked as the Outside pressure source (a plugin-level setting, above "Registered sensors") to additionally publish its reading to environment.outside.pressure — the SignalK-standard path other plugins (e.g. barometer trend) expect — alongside its own environment.<zone>.pressure. The sensor still needs to be added under "Registered sensors" as usual; picking it here doesn't register it on its own.

Published paths

| Value | Path | Unit | | ---------------- | --------------------------------- | ----------------------------------- | | Temperature | environment.<zone>.temperature | K | | Humidity | environment.<zone>.humidity | ratio (0-1) | | Pressure | environment.<zone>.pressure | Pa | | Battery strength | sensors.<name>.battery.strength | ratio (0-1), with low-battery zones | | Battery voltage | sensors.<name>.battery.voltage | V | | Signal strength | sensors.<name>.RSSI | dB | | Reachable | sensors.<name>.reachable | boolean | | Motion counter | sensors.<name>.motionCounter | count |

<name> is the sensor's name, lowercased and sanitized — give each registered sensor a distinct name, since two sensors with the same name will collide on these paths. Not every sensor publishes every path above — only the values its decoder actually supports (e.g. only RuuviTag currently reports pressure and a motion counter).

These path and unit conventions are reused from bt-sensors-plugin-sk so this plugin's output lines up with dashboards or alarms already built against that plugin's paths.

Relationship to bt-sensors-plugin-sk

bt-sensors-plugin-sk is the more complete, actively maintained BLE sensor plugin for SignalK, supporting many more sensors including ones that need a GATT connection. It doesn't yet have support for the BLE Manager, so can suffer the same issues as other dedicated Bluetooth plugins. This plugin exists to cover the gap in the meantime for a narrower set of passive, advertisement-only sensors, and is expected to be retired once that support lands upstream.