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 🙏

© 2025 – Pkg Stats / Ryan Hefner

signalk-open-wind-plugin

v1.0.4

Published

Signal K plugin for integrating OpenWind sensor data

Readme

Signal K Open Wind Plugin

License: MIT Node.js Version Signal K Plugin GitHub Issues GitHub Stars

A robust Signal K plugin for integrating OpenWind sensor data with automatic reinstallation capabilities.

Table of Contents

Features

  • Wind Data Integration: Processes apparent wind speed and angle from OpenWind sensor
  • Mast Rotation Compensation: Determines mast rotation via OpenWind Yaw data
  • Subtracts mast yaw from available NMEA2000 boat heading to output mast rotation compensated wind data
  • use existing SignalK facilities to send wind data to N2K network.
  • Debug Data: Comprehensive debug information for monitoring and troubleshooting
  • Auto-Reinstallation: Survives Signal K server updates automatically

Requires

  • OpenWind Sensor
  • RaspberryPi with NMEA2000/CANBUS communication capability
  • NMEA2000 heading data from some external source

Installation

Quick Install

git clone https://github.com/vepkenez/signalk-open-wind-plugin.git
cd signalk-open-wind-plugin
npm run install

Alternative: Direct Installation

# Install directly from GitHub
cd ~/.signalk
npm install https://github.com/vepkenez/signalk-open-wind-plugin.git
npm run install

Manual Install (Advanced)

If you prefer manual installation:

  1. Copy plugin to Signal K directory:

    cd ~/.signalk
    npm install /path/to/signalk-open-wind-plugin
  2. Create startup script:

    # Create startup-plugins.sh in ~/.signalk/
    # (See install.sh for the script content)
  3. Modify Signal K server startup script:

    # Modify ~/.signalk/signalk-server to call startup-plugins.sh

Configuration

The plugin provides the following Signal K data paths:

Wind Data

  • environment.wind.speedApparent - Apparent wind speed (m/s)
  • environment.wind.angleApparent - Apparent wind angle (rad)

Sensor Data

  • sensors.mast.yaw - Raw sensor yaw value (rad)
  • sensors.mast.windAngle - Raw wind angle from sensor (rad)

Debug Data

  • debug-awa-degrees - Apparent wind angle in degrees
  • debug-wind-speed-knots - Wind speed in knots
  • debug-mast-rotation-degrees - Mast rotation in degrees
  • debug-sensor-yaw-degrees - Raw sensor yaw in degrees

Plugin Settings

Configure the plugin through the Signal K admin interface:

  • Max Wind Speed (m/s): Maximum simulated wind speed (default: 10)
  • Update Interval (ms): Data update frequency (default: 1000)
  • Yaw Sensor Offset (degrees): Offset to calibrate sensor yaw (default: 0)

UDP Data Format

The plugin listens for NMEA sentences on UDP port 2000:

  • $WIMWV,angle,R,speed,N,A*checksum - Wind data
  • $WIHDM,heading,M*checksum - Heading data

Python Dependencies

The plugin requires Python with the following packages:

  • numpy
  • bleak (for Bluetooth communication)

These are automatically installed when you run npm run install. The installer will try multiple methods to handle different Python environments.

Manual Installation (if automatic fails)

If the automatic installation fails (common on newer Ubuntu/Debian systems with externally managed Python environments):

# Try normal installation first
pip3 install numpy bleak

# If that fails, try with --break-system-packages
pip3 install --break-system-packages numpy bleak

# Or install for user only
pip3 install --user numpy bleak

Troubleshooting Python Installation

Error: "externally-managed-environment"

  • This is a security feature in newer Python systems
  • Use --break-system-packages flag (as shown above)
  • Or use --user flag for user-only installation

Troubleshooting

Plugin Not Loading After Server Update

The automatic reinstallation system should handle this, but if issues persist:

  1. Check the startup script:

    ~/.signalk/startup-plugins.sh
  2. Verify plugin installation:

    ls -la ~/.signalk/node_modules/open-wind
  3. Check Signal K logs:

    tail -f ~/.signalk/skserver-raw_*.log

Debug Data Not Appearing

  1. Verify plugin is enabled in Signal K admin interface
  2. Check plugin configuration settings
  3. Monitor debug output in Signal K logs

Python Process Issues

  1. Verify Python environment:

    /home/damon/penv/bin/python --version
  2. Check Python dependencies:

    /home/damon/penv/bin/python -c "import numpy, bleak"

Development

File Structure

signalk-open-wind-plugin/
├── plugin/
│   ├── index.js          # Main plugin code
│   └── OpenWind.py       # Python data processor
├── public/
│   └── index.html        # Web interface
├── package.json          # Plugin metadata
├── install.sh           # Installation script
└── README.md            # This file

Testing

Test the plugin installation:

# Remove plugin to simulate server update
rm ~/.signalk/node_modules/open-wind

# Start server (should auto-reinstall)
~/.signalk/signalk-server

# Verify plugin is working
curl http://localhost:3000/signalk/v1/api/vessels/self | grep open-wind

License

MIT License - see LICENSE file for details.

Disclaimer

IMPORTANT SAFETY NOTICE: This software is provided for educational and experimental purposes. The authors and contributors are not responsible for any damage, injury, or loss that may result from the use of this software in marine environments. Always verify wind data with multiple sources and never rely solely on this plugin for navigation or safety-critical decisions. Use at your own risk.

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

Support

For issues and questions:

  • Check the troubleshooting section above
  • Review Signal K server logs
  • Verify plugin configuration in Signal K admin interface