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-ecowitt-gw2000

v1.0.0

Published

SignalK plugin for Ecowitt GW2000B with WS90 all-in-one weather station

Downloads

535

Readme

signalk-ecowitt-gw2000

A Signal K plugin for the Ecowitt GW2000B Wi-Fi gateway paired with a WS90 all-in-one weather station.

Polls the GW2000B local HTTP API directly — no cloud account required, no push configuration needed on the gateway.

Features

  • Outdoor temperature, dew point, humidity
  • Wind speed, direction, gust, and daily max gust
  • Solar radiation and UV index
  • Piezo rain rate and rain totals (event, hourly, daily, weekly, monthly, yearly)
  • Barometric pressure (absolute and sea-level)
  • Indoor temperature and humidity (GW2000B built-in sensor)
  • WS90 solar capacitor and backup battery voltage

Requirements

  • Signal K server running on the same network as the GW2000B
  • Ecowitt GW2000B with a fixed IP address on your local network
  • WS90 all-in-one weather station connected to the GW2000B

Installation

From the Signal K AppStore

Open the Signal K admin UI → Appstore, search for signalk-ecowitt-gw2000, and click Install.

Manual (Raspberry Pi)

cd ~/.signalk/node_modules
cp -r /path/to/signalk-ecowitt-gw2000 .
cd signalk-ecowitt-gw2000
npm install

Restart the Signal K server after installation.

Installation Notes

During npm install you may see deprecation warnings about [email protected] and [email protected]:

npm warn deprecated [email protected]: Old versions of glob are not supported...
npm warn deprecated [email protected]: This module is not supported...

These warnings are safe to ignore. They come from Jest's internal dependencies (used only for development/testing) and do not affect the plugin at runtime. Running npm audit will show 0 vulnerabilities.

These warnings are common across the Node.js ecosystem and will be resolved when Jest updates its dependencies.

Configuration

Open Signal K admin → Plugin ConfigEcowitt GW2000B + WS90 Weather Station.

| Setting | Description | Default | |---------|-------------|---------| | GW2000B IP address | Fixed LAN IP of your gateway | 1.2.3.4 | | HTTP port | Gateway web port (usually 80) | 80 | | Poll interval (s) | How often to request data | 16 | | Publish wind as true wind | True = true wind paths, False = apparent | true |

Tip: You can assign a fixed IP to the GW2000B in your router's DHCP settings using its MAC address.

Signal K Paths

| Path | Description | Unit | |------|-------------|------| | environment.outside.temperature | Outdoor temperature | K | | environment.outside.dewPointTemperature | Dew point | K | | environment.outside.humidity | Outdoor relative humidity | ratio (0–1) | | environment.wind.directionTrue | Wind direction (true) | rad | | environment.wind.speedTrue | Wind speed (true) | m/s | | environment.wind.gustSpeed | Wind gust speed | m/s | | environment.wind.gustSpeedMaxDay | Max daily gust | m/s | | environment.outside.solarRadiation | Solar radiation | W/m² | | environment.outside.uvIndex | UV index | — | | environment.outside.rainRate | Rain rate | m/s | | environment.outside.rainEventTotal | Rain event total | m | | environment.outside.rainHourTotal | Hourly rain total | m | | environment.outside.rainDayTotal | Daily rain total | m | | environment.outside.rainWeekTotal | Weekly rain total | m | | environment.outside.rainMonthTotal | Monthly rain total | m | | environment.outside.rainYearTotal | Yearly rain total | m | | environment.outside.pressure | Absolute barometric pressure | Pa | | environment.outside.pressureSeaLevel | Sea-level barometric pressure | Pa | | environment.inside.temperature | Indoor temperature (gateway sensor) | K | | environment.inside.humidity | Indoor humidity (gateway sensor) | ratio (0–1) | | electrical.batteries.ws90.voltage | WS90 solar capacitor voltage | V | | electrical.batteries.ws90backup.voltage | WS90 backup battery voltage | V |

Troubleshooting

No data appearing:

Test the GW2000B API directly from the Pi:

curl http://192.168.0.35/get_livedata_info | python3 -m json.tool

If this returns JSON, the network path is working. Check the Signal K server log for plugin error messages.

Some paths missing:

Not all fields are present on every firmware version. The plugin only publishes fields that are present and valid in the response — missing fields are silently skipped.

Development & Testing

This plugin includes a comprehensive Jest test suite with 74 tests covering:

  • Unit conversion functions (Celsius/Fahrenheit, wind speeds, pressure units, rain depth)
  • Value/unit parsing edge cases and malformed input
  • Data mapping and structure handling
  • HTTP error scenarios

Running Tests

# Install dependencies
npm install

# Run all tests
npm test

# Watch mode (re-run on file changes)
npm run test:watch

# Coverage report
npm run test:coverage

For development setup and architecture details, see CLAUDE.md.

License

MIT