UNPKG

signalk-noaa-weather-report

Version:

Sends Voluntary Ship Observations to NOAA (and Windy) Requires an official ships radio callsign

82 lines (73 loc) 2.6 kB
const { generateBbxxReport, decimalToDmStr, humanReadableReport } = require('./src/weatherReport'); console.log('Testing WX NMEA SignalK Plugin Weather Report Functions'); console.log('='.repeat(60)); // Test data const testData = { trueWindDirection: 270, trueWindSpeed: 15.5, lat: 28.144, lon: -112.742, utcTime: new Date('2024-01-15T14:30:00Z'), stationId: '9RM2K7C', waterTemp: 22.5 }; console.log('\nTest Input Data:'); console.log(`True Wind Direction: ${testData.trueWindDirection}°`); console.log(`True Wind Speed: ${testData.trueWindSpeed} knots`); console.log(`Latitude: ${testData.lat}°`); console.log(`Longitude: ${testData.lon}°`); console.log(`UTC Time: ${testData.utcTime.toISOString()}`); console.log(`Water Temperature: ${testData.waterTemp}°C`); // Test BBXX report generation console.log('\n1. Testing BBXX Report Generation:'); const bbxx = generateBbxxReport( testData.trueWindDirection, testData.trueWindSpeed, testData.lat, testData.lon, testData.utcTime, testData.stationId, testData.waterTemp ); console.log(`BBXX: ${bbxx}`); // Test coordinate conversion console.log('\n2. Testing Coordinate Conversion:'); const latDm = decimalToDmStr(testData.lat, true); const lonDm = decimalToDmStr(testData.lon, false); console.log(`Latitude: ${testData.lat}° = ${latDm}`); console.log(`Longitude: ${testData.lon}° = ${lonDm}`); // Test human readable report console.log('\n3. Testing Human Readable Report:'); const humanReport = humanReadableReport( testData.lat, testData.lon, testData.trueWindDirection, testData.trueWindSpeed, testData.utcTime ); console.log(humanReport); // Test different quadrants console.log('\n4. Testing Different Quadrants:'); const quadrantTests = [ { lat: 45.0, lon: -123.0, desc: 'North/West' }, { lat: 45.0, lon: 123.0, desc: 'North/East' }, { lat: -45.0, lon: 123.0, desc: 'South/East' }, { lat: -45.0, lon: -123.0, desc: 'South/West' } ]; for (const test of quadrantTests) { const testBbxx = generateBbxxReport( testData.trueWindDirection, testData.trueWindSpeed, test.lat, test.lon, testData.utcTime, testData.stationId ); console.log(`${test.desc} (${test.lat}, ${test.lon}): ${testBbxx.split(' ').slice(0, 5).join(' ')}...`); } console.log('\n✅ All tests completed successfully!'); console.log('\nTo run this plugin:'); console.log('1. npm run build'); console.log('2. npm install'); console.log('3. npm link (for development)'); console.log('4. Install in SignalK server');