Signal K Open Wind Plugin

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
cd ~/.signalk
npm install https://github.com/vepkenez/signalk-open-wind-plugin.git
npm run install
Manual Install (Advanced)
If you prefer manual installation:
-
Copy plugin to Signal K directory:
cd ~/.signalk
npm install /path/to/signalk-open-wind-plugin
-
Create startup script:
-
Modify Signal K server startup script:
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):
pip3 install numpy bleak
pip3 install --break-system-packages numpy bleak
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:
-
Check the startup script:
~/.signalk/startup-plugins.sh
-
Verify plugin installation:
ls -la ~/.signalk/node_modules/open-wind
-
Check Signal K logs:
tail -f ~/.signalk/skserver-raw_*.log
Debug Data Not Appearing
- Verify plugin is enabled in Signal K admin interface
- Check plugin configuration settings
- Monitor debug output in Signal K logs
Python Process Issues
-
Verify Python environment:
/home/damon/penv/bin/python --version
-
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:
rm ~/.signalk/node_modules/open-wind
~/.signalk/signalk-server
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
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- 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