My Maui at-a-glance ocean dashboard: West Maui beach cams, weather, and the daily snorkel report

Living on Maui, the questions every morning are the same: how's the surf, is it windy, and is it a good day to get in the water? So I built a single dashboard that answers all three at a glance.

What's on it:

  • West Maui beach cams — live looks at the actual conditions, because nothing beats seeing the water.
  • Weather via the Windy integration — wind, conditions, the stuff that actually decides whether you're swimming or watching.
  • The daily Maui snorkel report — a local shop posts a conditions/visibility report every morning, and I pull it straight into HA (more on that below, it was the fun part).

The fun bit: getting the daily snorkel report into HA

The report is a JPG posted daily, but the site is behind Cloudflare so you can't just scrape the page. The image host itself is open, though, and the filename is date-based, so I probe it directly for the most recent published day:

command_line:
  - sensor:
      name: Maui Snorkel Report URL
      unique_id: maui_snorkel_report_url
      scan_interval: 10800   # every 3 hours, be kind to the host
      command: >-
        for url in {% for i in range(10) %}"https://<image-host>/.../{{ (now() - timedelta(days=i)).strftime('%B-%-d-%Y') | lower }}-email.jpg" {% endfor %}; do if wget -q --spider "$url" 2>/dev/null; then echo "$url"; break; fi; done

Then a Generic Camera points at {{ states('sensor.maui_snorkel_report_url') }} and it shows the current report on the dashboard. It walks back up to 10 days, so it handles the daily publish lag and any skipped days automatically. (Uses wget because the HA Core container ships BusyBox wget, not curl.)

Happy to share the full dashboard YAML if anyone wants it. Anyone else doing location/condition dashboards like this? Always looking for sources to add — tides and surf height are next on my list.