National Data Buoy Centre (NOAA - NDBC) Real-Time Lake/Ocean Observations Integration

With the loss of the Magicseaweed integration in Home Assistant core due to a dependency breakage, I wanted a way to get nearby wave, wind, temperature etc observations. The most reliable source I could find for public data is the NDBC (National Data Buoy Centre) run by the NOAA.

Add this integration to HACS as a custom repository and then you can add the NDBC integration for as many nearby buoys as you would like. It will create sensors for:

  • Air Temperature
  • Water Temperature
  • Dewpoint
  • Air Pressure
  • Air Pressure Tendency
  • Visibility
  • Wave Height
  • Wave Period
  • Wave Average Period
  • Wave Direction
  • Wind Speed
  • Wind Gust Speed
  • Wind Direction
  • Tide Height

When you add the integration you will have to select a buoy for data. You can get the buoy ID from the NDBC website by browsing the map and selecting the buoy you are interested in: https://www.ndbc.noaa.gov/

You’ll find the integration at: https://github.com/djtimca/handbc

Please report any issues or challenges with it there.

Thanks!

2 Likes

Nice! I’ve been using the NOAA Tides integration, but this one looks great. Now if only NOAA could make their data more reliable, but I guess that’s out of our hands.

1 Like

I am getting the following error… is this a value mismatch on the floating value being returned from the buoy?

2023-02-28 01:17:04.007 ERROR (MainThread) [custom_components.ndbcrealtime] Unexpected error fetching NDBC NORTHWESTERN HAWAII TWO - 186 NM NW of Kauai Is., HI    data: invalid literal for int() with base 10: '7.3'
Traceback (most recent call last):
  File "/config/custom_components/ndbcrealtime/__init__.py", line 117, in _async_update_data
    observation = await ndbc.get_data()
  File "/usr/local/lib/python3.10/site-packages/ndbcrealtime/__init__.py", line 114, in get_data
    observation["waves"]["average_period"] = int(data[1]["APD"])
**ValueError: invalid literal for int() with base 10: '7.3'**

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 239, in _async_refresh
    self.data = await self._async_update_data()
  File "/config/custom_components/ndbcrealtime/__init__.py", line 123, in _async_update_data
    raise ConfigEntryNotReady from error

I have two bouys locally that configured, but when I choose new ones I now get message invalid_station_id even though the station id comes from the drop down list. I am trying to get wave data that does not come from my closest bouy…any ideas on how to fix invalid station id?

Any updates on the Invalid Station ID error? I’m getting that for the station I need to use, as well as many others in the area