{"id":493,"date":"2025-10-19T15:11:36","date_gmt":"2025-10-19T19:11:36","guid":{"rendered":"https:\/\/scootercam.net\/notes\/?p=493"},"modified":"2025-10-19T15:25:14","modified_gmt":"2025-10-19T19:25:14","slug":"scootercam-wave-height-visualizer-plugin","status":"publish","type":"post","link":"https:\/\/scootercam.net\/blog\/scootercam-wave-height-visualizer-plugin\/","title":{"rendered":"Scootercam Wave Height Visualizer Plugin"},"content":{"rendered":"\n<p>This plugin renders a really nice, customizable line chart from Open-Meteo.<\/p>\n\n\n\n<p><strong>Version:<\/strong> 1.0<br><strong>Author:<\/strong> Rick Xaver<br><strong>For:<\/strong> Scootercam.net<\/p>\n\n\n\n<p>A WordPress plugin that displays beautiful, interactive Lake Michigan wave height forecasts using real-time data from the Open-Meteo Marine API. Perfect for boaters, surfers, photographers, and anyone interested in Lake Michigan conditions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udf0a Features<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Real-time Wave Data<\/strong> &#8211; Hourly forecasts up to 7 days<\/li>\n\n\n\n<li><strong>Beautiful Visualization<\/strong> &#8211; Smooth gradient fills and professional styling<\/li>\n\n\n\n<li><strong>Interactive Charts<\/strong> &#8211; Hover tooltips with detailed information<\/li>\n\n\n\n<li><strong>Responsive Design<\/strong> &#8211; Looks great on all devices<\/li>\n\n\n\n<li><strong>No API Key Required<\/strong> &#8211; Uses free Open-Meteo API<\/li>\n\n\n\n<li><strong>Current Wave Marker<\/strong> &#8211; Optional annotation showing current conditions<\/li>\n\n\n\n<li><strong>Customizable<\/strong> &#8211; Multiple shortcode options for flexibility<\/li>\n\n\n\n<li><strong>Error Handling<\/strong> &#8211; Graceful fallbacks if data unavailable<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udccd Location<\/h2>\n\n\n\n<p><strong>Scootercam, Michigan<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Latitude: 42.5593<\/li>\n\n\n\n<li>Longitude: -86.2359<\/li>\n\n\n\n<li>Timezone: America\/New_York (Eastern Time)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\ude80 Installation<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Upload Plugin Files<\/h3>\n\n\n\n<p>Create the following directory structure in your WordPress installation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/wp-content\/plugins\/scootercam-wave-height-visualizer\/\n\u251c\u2500\u2500 wave-height-visualizer.php\n\u251c\u2500\u2500 js\/\n\u2502   \u2514\u2500\u2500 wave-height-chart.js\n\u2514\u2500\u2500 README.md\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. Activate Plugin<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to WordPress Admin \u2192 Plugins<\/li>\n\n\n\n<li>Find &#8220;Scootercam Wave Height Visualizer&#8221;<\/li>\n\n\n\n<li>Click &#8220;Activate&#8221;<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">3. Use Shortcode<\/h3>\n\n\n\n<p>Add to any page or post:<\/p>\n\n\n<p>[wave_height_chart]<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;wave_height_chart]\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcf1 Usage<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Basic Usage<\/h3>\n\n\n\n<p>The simplest way to display the wave chart:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;wave_height_chart]\n<\/code><\/pre>\n\n\n\n<p>This will display a 2-day forecast with all default settings.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Shortcode Options<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Attribute<\/th><th>Type<\/th><th>Default<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td><code>height<\/code><\/td><td>number<\/td><td>450<\/td><td>Chart height in pixels<\/td><\/tr><tr><td><code>title<\/code><\/td><td>string<\/td><td>&#8220;Lake Michigan Wave Height Forecast&#8221;<\/td><td>Chart title<\/td><\/tr><tr><td><code>days<\/code><\/td><td>number<\/td><td>2<\/td><td>Forecast days (1-7)<\/td><\/tr><tr><td><code>show_current<\/code><\/td><td>boolean<\/td><td>true<\/td><td>Show current wave height line<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Examples<\/h3>\n\n\n\n<p><strong>24-Hour Forecast<\/strong><\/p>\n\n\n<p>[wave_height_chart days=&#8221;1&#8243;]<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;wave_height_chart days=\"1\"]\n<\/code><\/pre>\n\n\n\n<p><strong>Shorter Chart<\/strong><\/p>\n\n\n<p>[wave_height_chart height=&#8221;350&#8243;]<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;wave_height_chart height=\"350\"]\n<\/code><\/pre>\n\n\n\n<p><strong>Week-Long Forecast<\/strong><\/p>\n\n\n<p>[wave_height_chart days=&#8221;7&#8243; title=&#8221;7-Day Wave Forecast&#8221;]<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;wave_height_chart days=\"7\" title=\"7-Day Wave Forecast\"]\n<\/code><\/pre>\n\n\n\n<p><strong>Custom Everything<\/strong><\/p>\n\n\n<p>[wave_height_chart height=&#8221;400&#8243; days=&#8221;3&#8243; title=&#8221;72-Hour Wave Outlook&#8221; show_current=&#8221;false&#8221;]<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;wave_height_chart height=\"400\" days=\"3\" title=\"72-Hour Wave Outlook\" show_current=\"false\"]\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udfa8 Display Features<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Chart Elements<\/h3>\n\n\n\n<p><strong>Wave Line<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Color: Blue (#2196F3)<\/li>\n\n\n\n<li>Gradient fill: Light blue fading to transparent<\/li>\n\n\n\n<li>Smooth curves (tension: 0.4)<\/li>\n\n\n\n<li>Interactive hover points<\/li>\n<\/ul>\n\n\n\n<p><strong>Axes<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>X-Axis:<\/strong> Time-based with 6-hour intervals\n<ul class=\"wp-block-list\">\n<li>Format: MM\/DD HH:MM<\/li>\n\n\n\n<li>Timezone: Eastern (America\/New_York)<\/li>\n\n\n\n<li>Smart label rotation on mobile<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Y-Axis:<\/strong> Wave height in feet\n<ul class=\"wp-block-list\">\n<li>Starts at zero<\/li>\n\n\n\n<li>Auto-scales to data<\/li>\n\n\n\n<li>Shows values with &#8220;ft&#8221; suffix<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p><strong>Tooltips<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Format: &#8220;Wednesday, Oct 19 at 3:00 PM&#8221;<\/li>\n\n\n\n<li>Shows: &#8220;Wave Height: 2.45 feet&#8221;<\/li>\n\n\n\n<li>Blue background with white text<\/li>\n\n\n\n<li>Rounded corners<\/li>\n<\/ul>\n\n\n\n<p><strong>Current Wave Marker<\/strong> (optional)<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Red dashed horizontal line<\/li>\n\n\n\n<li>Label: &#8220;Current: X.X ft&#8221;<\/li>\n\n\n\n<li>Positioned at current wave height<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Responsive Behavior<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Desktop (&gt;768px):<\/strong> 450px height (default)<\/li>\n\n\n\n<li><strong>Tablet (768px):<\/strong> 350px height<\/li>\n\n\n\n<li><strong>Mobile (&lt;480px):<\/strong> 300px height<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcca Data Source<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">API Information<\/h3>\n\n\n\n<p><strong>Provider:<\/strong> Open-Meteo Marine API<br><strong>Website:<\/strong> https:\/\/open-meteo.com\/<br><strong>Cost:<\/strong> Free, no API key required<br><strong>Rate Limit:<\/strong> Generous (suitable for production)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">API Parameters<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>latitude=42.5593\nlongitude=-86.2359\nhourly=wave_height\ntimezone=America\/New_York\nforecast_days=1-7\nlength_unit=imperial\nwind_speed_unit=kn\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Data Updates<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Frequency:<\/strong> Hourly forecasts<\/li>\n\n\n\n<li><strong>Range:<\/strong> Up to 7 days ahead<\/li>\n\n\n\n<li><strong>Units:<\/strong> Feet (imperial)<\/li>\n\n\n\n<li><strong>Accuracy:<\/strong> Based on NOAA wave models<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udfaf Use Cases<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Boating &amp; Sailing<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;wave_height_chart days=\"2\" title=\"Boating Conditions - 48 Hours\"]\n<\/code><\/pre>\n\n\n\n<p>Check wave heights before heading out on Lake Michigan.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Surfing<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;wave_height_chart days=\"1\" title=\"Today's Surf Forecast\"]\n<\/code><\/pre>\n\n\n\n<p>Monitor wave conditions for surfing spots.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Photography<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;wave_height_chart days=\"3\" title=\"Wave Conditions for Shore Photography\"]\n<\/code><\/pre>\n\n\n\n<p>Plan dramatic wave photography sessions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Beach Safety<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;wave_height_chart title=\"Beach Wave Forecast\" show_current=\"true\"]\n<\/code><\/pre>\n\n\n\n<p>Inform beach visitors about current and upcoming conditions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Maritime Operations<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;wave_height_chart days=\"7\" height=\"500\" title=\"Weekly Marine Forecast\"]\n<\/code><\/pre>\n\n\n\n<p>Long-range planning for commercial operations.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udee0\ufe0f Technical Details<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Dependencies<\/h3>\n\n\n\n<p><strong>Chart.js<\/strong> (v4.4.0)<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Main charting library<\/li>\n\n\n\n<li>Loaded from CDN<\/li>\n<\/ul>\n\n\n\n<p><strong>Luxon<\/strong> (v3.4.4)<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>DateTime handling<\/li>\n\n\n\n<li>Required for time-based x-axis<\/li>\n<\/ul>\n\n\n\n<p><strong>ChartJS Adapter Luxon<\/strong> (v1.3.1)<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Connects Chart.js with Luxon<\/li>\n\n\n\n<li>Enables time scale<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Browser Compatibility<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2705 Chrome\/Edge (latest)<\/li>\n\n\n\n<li>\u2705 Firefox (latest)<\/li>\n\n\n\n<li>\u2705 Safari (latest)<\/li>\n\n\n\n<li>\u2705 Mobile browsers<\/li>\n\n\n\n<li>\u26a0\ufe0f IE11 not supported<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Performance<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Load Time:<\/strong> &lt;1 second typical<\/li>\n\n\n\n<li><strong>API Response:<\/strong> 200-500ms average<\/li>\n\n\n\n<li><strong>Chart Render:<\/strong> &lt;100ms<\/li>\n\n\n\n<li><strong>Memory Usage:<\/strong> ~2-3MB per chart<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">File Structure<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>scootercam-wave-height-visualizer\/\n\u2502\n\u251c\u2500\u2500 wave-height-visualizer.php\n\u2502   \u251c\u2500\u2500 ScooterCamWaveHeightVisualizer class\n\u2502   \u251c\u2500\u2500 Shortcode handler\n\u2502   \u251c\u2500\u2500 Script enqueuing\n\u2502   \u2514\u2500\u2500 Settings page\n\u2502\n\u251c\u2500\u2500 js\/wave-height-chart.js\n\u2502   \u251c\u2500\u2500 Chart initialization\n\u2502   \u251c\u2500\u2500 API data fetching\n\u2502   \u251c\u2500\u2500 Error handling\n\u2502   \u2514\u2500\u2500 Gradient creation\n\u2502\n\u2514\u2500\u2500 README.md\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udfa8 Customization<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Styling<\/h3>\n\n\n\n<p>Override default styles in your theme:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/* Custom container styling *\/\n.scootercam-wave-chart-container {\n    background: #f0f8ff;\n    border: 2px solid #2196F3;\n    box-shadow: 0 6px 20px rgba(0,0,0,0.15);\n}\n\n\/* Custom error message *\/\n.scootercam-wave-error {\n    background: #ffe0e0;\n    color: #c00;\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">JavaScript Customization<\/h3>\n\n\n\n<p>Modify <code>js\/wave-height-chart.js<\/code> to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Change colors<\/li>\n\n\n\n<li>Adjust gradient stops<\/li>\n\n\n\n<li>Modify tooltip formats<\/li>\n\n\n\n<li>Add additional annotations<\/li>\n\n\n\n<li>Change time formats<\/li>\n<\/ul>\n\n\n\n<p>Example &#8211; Change wave line color:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>borderColor: '#00bcd4', \/\/ Cyan instead of blue\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udc1b Troubleshooting<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Chart Not Displaying<\/h3>\n\n\n\n<p><strong>Check:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Plugin is activated<\/li>\n\n\n\n<li>Shortcode spelling is correct<\/li>\n\n\n\n<li>JavaScript console for errors<\/li>\n\n\n\n<li>Internet connection (API requires network)<\/li>\n<\/ol>\n\n\n\n<p><strong>Common Issues:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ad blockers:<\/strong> May block CDN resources<\/li>\n\n\n\n<li><strong>HTTPS:<\/strong> Ensure site uses HTTPS for API calls<\/li>\n\n\n\n<li><strong>Browser console:<\/strong> Check for script errors<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">&#8220;No Wave Data Available&#8221;<\/h3>\n\n\n\n<p><strong>Possible Causes:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open-Meteo API temporarily down<\/li>\n\n\n\n<li>Network connectivity issues<\/li>\n\n\n\n<li>Invalid coordinates in code<\/li>\n<\/ol>\n\n\n\n<p><strong>Solutions:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wait 5-10 minutes and refresh<\/li>\n\n\n\n<li>Check Open-Meteo status page<\/li>\n\n\n\n<li>Verify browser can reach: <code>marine-api.open-meteo.com<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Chart Appears Compressed<\/h3>\n\n\n\n<p><strong>Fix:<\/strong> Adjust height attribute<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;wave_height_chart height=\"500\"]\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Data Seems Incorrect<\/h3>\n\n\n\n<p><strong>Verify:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Timezone is correct (Eastern)<\/li>\n\n\n\n<li>Units are imperial (feet)<\/li>\n\n\n\n<li>Time on your device is accurate<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcc8 Understanding Wave Heights<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">General Guidelines<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Height<\/th><th>Conditions<\/th><th>Activities<\/th><\/tr><\/thead><tbody><tr><td>0-1 ft<\/td><td>Calm<\/td><td>All water activities safe<\/td><\/tr><tr><td>1-2 ft<\/td><td>Light<\/td><td>Good for kayaking, paddleboarding<\/td><\/tr><tr><td>2-3 ft<\/td><td>Moderate<\/td><td>Caution for small boats<\/td><\/tr><tr><td>3-4 ft<\/td><td>Choppy<\/td><td>Experienced boaters only<\/td><\/tr><tr><td>4-6 ft<\/td><td>Rough<\/td><td>Large vessels, no swimming<\/td><\/tr><tr><td>6+ ft<\/td><td>Very Rough<\/td><td>Hazardous conditions<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Note:<\/strong> Lake Michigan can change quickly. Always check current conditions before water activities.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Seasonal Patterns<\/h3>\n\n\n\n<p><strong>Spring (March-May)<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Variable conditions<\/li>\n\n\n\n<li>Average: 1-3 feet<\/li>\n\n\n\n<li>Storms can bring 4-6+ feet<\/li>\n<\/ul>\n\n\n\n<p><strong>Summer (June-August)<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Generally calmer<\/li>\n\n\n\n<li>Average: 0.5-2 feet<\/li>\n\n\n\n<li>Occasional thunderstorm waves<\/li>\n<\/ul>\n\n\n\n<p><strong>Fall (September-November)<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Increasing wave activity<\/li>\n\n\n\n<li>Average: 2-4 feet<\/li>\n\n\n\n<li>Storm systems common<\/li>\n<\/ul>\n\n\n\n<p><strong>Winter (December-February)<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Highest waves<\/li>\n\n\n\n<li>Average: 3-5 feet<\/li>\n\n\n\n<li>Can exceed 10 feet in storms<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd2e Future Enhancements<\/h2>\n\n\n\n<p>Potential additions:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wind speed and direction overlay<\/li>\n\n\n\n<li>Wave period\/frequency data<\/li>\n\n\n\n<li>Historical comparison<\/li>\n\n\n\n<li>Swell vs wind wave breakdown<\/li>\n\n\n\n<li>Mobile app notifications<\/li>\n\n\n\n<li>Multi-location support<\/li>\n\n\n\n<li>Export data to CSV<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\udd1d Support<\/h2>\n\n\n\n<p>For issues, questions, or feature requests:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Website:<\/strong> Scootercam.net<\/li>\n\n\n\n<li><strong>Email:<\/strong> rxaver (at) att.net<\/li>\n\n\n\n<li><strong>Report Issues:<\/strong> Check browser console first<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcdc Credits<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Wave Data:<\/strong> Open-Meteo Marine API<\/li>\n\n\n\n<li><strong>Charting:<\/strong> Chart.js<\/li>\n\n\n\n<li><strong>Date Handling:<\/strong> Luxon<\/li>\n\n\n\n<li><strong>Location:<\/strong> South Haven, MI<\/li>\n\n\n\n<li><strong>Developed for:<\/strong> ScooterCam.net<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\ude4f Acknowledgments<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Open-Meteo for providing free, reliable marine data<\/li>\n\n\n\n<li>Chart.js team for the excellent charting library<\/li>\n\n\n\n<li>Lake Michigan for being awesome<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcdd Changelog<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Version 1.0 (2025)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2705 Initial release<\/li>\n\n\n\n<li>\u2705 Real-time wave height visualization<\/li>\n\n\n\n<li>\u2705 Customizable forecast range (1-7 days)<\/li>\n\n\n\n<li>\u2705 Responsive design<\/li>\n\n\n\n<li>\u2705 Interactive tooltips<\/li>\n\n\n\n<li>\u2705 Current wave marker<\/li>\n\n\n\n<li>\u2705 Error handling<\/li>\n\n\n\n<li>\u2705 No API key required<\/li>\n\n\n\n<li>\u2705 Mobile optimization<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>Made with \ud83c\udf0a for Lake Michigan enthusiasts<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This plugin renders a really nice, customizable line chart from Open-Meteo. Version: 1.0Author: Rick XaverFor: Scootercam.net A WordPress plugin that displays beautiful, interactive Lake Michigan wave height forecasts using real-time data from the Open-Meteo Marine API. Perfect for boaters, surfers, photographers, and anyone interested in Lake Michigan conditions. \ud83c\udf0a Features \ud83d\udccd Location Scootercam, Michigan \ud83d\ude80 &#8230; <a title=\"Scootercam Wave Height Visualizer Plugin\" class=\"read-more\" href=\"https:\/\/scootercam.net\/blog\/scootercam-wave-height-visualizer-plugin\/\" aria-label=\"Read more about Scootercam Wave Height Visualizer Plugin\">Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[38],"tags":[],"class_list":["post-493","post","type-post","status-publish","format-standard","hentry","category-plugins"],"_links":{"self":[{"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/posts\/493","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/comments?post=493"}],"version-history":[{"count":4,"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/posts\/493\/revisions"}],"predecessor-version":[{"id":500,"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/posts\/493\/revisions\/500"}],"wp:attachment":[{"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/media?parent=493"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/categories?post=493"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scootercam.net\/blog\/wp-json\/wp\/v2\/tags?post=493"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}