{"id":47719791,"url":"https://github.com/dawg-io/noaa_it_all","last_synced_at":"2026-04-02T19:17:17.548Z","repository":{"id":343667681,"uuid":"1178437697","full_name":"dawg-io/noaa_it_all","owner":"dawg-io","description":"NOAA (it all) HACS Integration ","archived":false,"fork":false,"pushed_at":"2026-03-31T00:46:54.000Z","size":1752,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-31T04:21:22.055Z","etag":null,"topics":["custom-integration","hacs","hacs-integration","home-assistant","home-assistant-integration","homeassistant","noaa-data","noaa-satellite","noaa-solar-report","noaa-weather"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dawg-io.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-11T02:48:03.000Z","updated_at":"2026-03-12T20:38:58.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dawg-io/noaa_it_all","commit_stats":null,"previous_names":["dawg-io/noaa_it_all"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/dawg-io/noaa_it_all","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dawg-io%2Fnoaa_it_all","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dawg-io%2Fnoaa_it_all/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dawg-io%2Fnoaa_it_all/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dawg-io%2Fnoaa_it_all/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dawg-io","download_url":"https://codeload.github.com/dawg-io/noaa_it_all/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dawg-io%2Fnoaa_it_all/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31314284,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["custom-integration","hacs","hacs-integration","home-assistant","home-assistant-integration","homeassistant","noaa-data","noaa-satellite","noaa-solar-report","noaa-weather"],"created_at":"2026-04-02T19:17:16.826Z","updated_at":"2026-04-02T19:17:17.523Z","avatar_url":"https://github.com/dawg-io.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NOAA IT ALL HACS Integration for Solar Data, Hurricane Tracking, and Location-Specific Rip Current Forecasts\n\n[![hacs_badge](https://img.shields.io/badge/HACS-Custom-orange.svg)](https://github.com/hacs/integration)\n[![GitHub Release](https://img.shields.io/github/release/dawg-io/noaa_it_all.svg)](https://github.com/dawg-io/noaa_it_all/releases)\n[![License](https://img.shields.io/github/license/dawg-io/noaa_it_all.svg)](LICENSE)\n\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"/custom_components/noaa_it_all/brand/icon.png\" width=\"120\"\u003e\u003cbr\u003e\n\u003c/p\u003e\n\nThis Home Assistant integration provides comprehensive NOAA data through sensors and images, with the latest addition of location-specific rip current and surf zone forecasts.\n\n## Installation \u0026 Configuration\n\n### HACS Installation (Recommended)\n\n#### Option 1: HACS Default Store (after acceptance)\n1. Open HACS in Home Assistant\n2. Click **Integrations**\n3. Search for \"NOAA Integration\"\n4. Click **Download**\n5. Restart Home Assistant\n\n#### Option 2: HACS Custom Repository\n1. Open HACS in Home Assistant\n2. Click the three-dot menu (⋮) → **Custom repositories**\n3. Add `https://github.com/dawg-io/noaa_it_all` with category **Integration**\n4. Click **Download** on the NOAA Integration card\n5. Restart Home Assistant\n\n### Manual Installation\n1. Download the latest release from [GitHub Releases](https://github.com/dawg-io/noaa_it_all/releases)\n2. Copy the `custom_components/noaa_it_all` folder to your Home Assistant `custom_components` directory\n3. Restart Home Assistant\n\n### Configuration\n\n#### Config Flow (Recommended - New!)\nFor location-specific rip current, surf zone, and weather data:\n1. Go to **Settings** → **Integrations** → **Add Integration**\n2. Search for \"NOAA Integration\"\n3. Select your **NWS Forecast Office** from the dropdown (e.g., SGX for San Diego, LOX for Los Angeles)\n4. **Enter your Latitude and Longitude** (required) - Weather observations will be fetched from the nearest station to this location\n5. Complete the setup\n\n**Important:** Starting with version 1.0.20, latitude and longitude are required fields for proper weather entity setup. Weather data is now fetched from the nearest observation station to your specified coordinates using the weather.gov API, rather than defaulting to the Home Assistant location or using a predefined office-to-station mapping.\n\n#### Legacy YAML Configuration\nFor basic sensors without location-specific data:\n```yaml\nnoaa_it_all:\n```\n\n## Device Grouping and Organization\n\nThe NOAA Integration organizes entities into logical device groups for better organization in Home Assistant. All entities are automatically grouped under one of the following devices:\n\n### Device Groups Overview\n\n#### 🌌 NOAA Space\nGlobal space weather monitoring - aurora visibility, geomagnetic storms, and solar radiation alerts\n- **Device ID**: `noaa_space`\n- **Location**: Independent (global data)\n- **Update Frequency**: 5 minutes\n\n#### 🌤️ NOAA Weather\nGlobal hurricane tracking, forecasts, and general weather observations\n- **Device ID**: `noaa_weather`\n- **Location**: Independent for hurricanes, location-specific for weather observations\n- **Update Frequency**: 5 minutes\n\n#### 🌊 NOAA Surf\nLocation-specific surf conditions, rip currents, and water temperature\n- **Device ID**: `noaa_surf`\n- **Location**: Specific to configured NWS office\n- **Update Frequency**: 5 minutes\n\n#### 📍 NOAA Weather [OFFICE]\nLocation-specific severe weather alerts and warnings (e.g., \"NOAA Weather SGX\" for San Diego)\n- **Device ID**: `noaa_weather_{office_code}`\n- **Location**: Specific to configured NWS office and coordinates\n- **Update Frequency**: 5 minutes\n\n\u003e **Tip**: In Home Assistant's device view (Settings → Devices \u0026 Services), click on any NOAA device to see all related entities grouped together. This makes it easy to create dashboard cards and automations for specific categories of data.\n\n## Available Entities\n\n### Global Sensors (Available with all configurations)\n- **Kp Index**: Planetary average of geomagnetic activity, updated every 3 hours *(NOAA Space)*\n- **Geomagnetic Storm Measurements**: Long-term measure of geomagnetic storm intensity *(NOAA Space)*\n- **Hurricane Alerts**: Number of active hurricane/tropical storm warnings and watches *(NOAA Weather)*\n- **Hurricane Activity**: Overall hurricane activity status (Quiet, Low, Moderate, High) *(NOAA Weather)*\n\n### Location-Specific Sensors (Config Flow Only)\n- **Rip Current Risk**: Current risk level (Low, Moderate, High) from your NWS office's surf zone forecast *(NOAA Surf)*\n- **Surf Height**: Wave height estimates in feet from local surf zone forecasts *(NOAA Surf)*\n- **Water Temperature**: Local water temperature from surf zone forecasts *(NOAA Surf)*\n- **Unsafe to Swim**: Binary sensor indicating dangerous rip current conditions *(NOAA Surf)*\n\n### NWS Active Weather Alerts (Config Flow Only)\nReal-time monitoring of National Weather Service alerts for your location *(NOAA Weather [OFFICE])*:\n\n**Binary Sensors (True/False):**\n- **Severe Weather Alert**: Active tornado, thunderstorm, hurricane, or extreme wind warnings/watches *(binary_sensor.noaa_{office}_severe_weather_alert)*\n- **Flood/Winter Alert**: Active flood, winter storm, snow, ice, or freezing rain warnings/watches *(binary_sensor.noaa_{office}_flood_winter_alert)*\n- **Heat/Air Quality Alert**: Active heat, air quality, fire weather, or environmental advisories *(binary_sensor.noaa_{office}_heat_air_quality_alert)*\n- **Active Alerts**: General indicator for any active NWS alerts *(binary_sensor.noaa_{office}_active_alerts)*\n\n**Comprehensive Sensor:**\n- **Active NWS Alerts**: Detailed alert information including *(NOAA Weather)*:\n  - Total alert count\n  - Summary by severity (Extreme, Severe, Moderate, Minor)\n  - Summary by urgency (Immediate, Expected, Future)\n  - Breakdown by alert type (warnings, watches, advisories, statements)\n  - Full alert details with headlines, descriptions, and instructions\n  - Location-specific filtering based on configured coordinates\n\n\u003e **Note**: Alert sensors update every 5 minutes and only include actual alerts (excludes test messages and drafts). All alerts are filtered to your specific location using latitude/longitude coordinates from config flow setup. Binary sensors are grouped under NOAA Weather [OFFICE] while the comprehensive sensor is under NOAA Weather.\n\n### Current Weather Conditions (Config Flow Only)\nReal-time weather observations from your local NWS observation station *(NOAA Weather)*:\n- **Temperature**: Current temperature in °F *(sensor.noaa_{office}_temperature)*\n- **Humidity**: Relative humidity percentage *(sensor.noaa_{office}_humidity)*\n- **Wind Speed**: Wind speed in mph *(sensor.noaa_{office}_wind_speed)*\n- **Wind Direction**: Wind direction in degrees with cardinal direction *(sensor.noaa_{office}_wind_direction)*\n- **Barometric Pressure**: Barometric pressure in inHg *(sensor.noaa_{office}_barometric_pressure)*\n- **Dewpoint**: Dewpoint temperature in °F *(sensor.noaa_{office}_dewpoint)*\n- **Visibility**: Visibility distance in miles *(sensor.noaa_{office}_visibility)*\n- **Sky Conditions**: Current sky conditions description (Clear, Cloudy, Fog, etc.) *(sensor.noaa_{office}_sky_conditions)*\n- **Feels Like**: Apparent temperature incorporating wind chill or heat index *(sensor.noaa_{office}_feels_like)*\n\n\u003e **Note**: Weather observations update every 5 minutes from the primary observation station for your configured NWS office location. Data includes automatic unit conversions to US customary units.\n\n### Aurora Visibility Alerts (Config Flow Only)\nLocation-aware aurora visibility predictions *(NOAA Space)*:\n- **Aurora Next Time**: Predicted timing when aurora activity may begin at your location *(sensor.noaa_{office}_aurora_next_time)*\n- **Aurora Duration**: Estimated length of aurora visibility in hours based on geomagnetic conditions *(sensor.noaa_{office}_aurora_duration)*\n- **Aurora Visibility Probability**: Percentage chance of aurora visibility from your specific location *(sensor.noaa_{office}_aurora_visibility_probability)*\n\n\u003e **Note**: Aurora predictions are based on real-time Kp index data and your location's magnetic latitude. Northern locations (like Duluth, MN) have much higher visibility potential than southern locations (like Miami, FL).\n\n### Solar Radiation Storm Alerts (Config Flow Only)\nLocation-aware monitoring of solar radiation storm activity *(NOAA Space)*:\n- **Solar Radiation Storm Alerts**: Location-aware monitoring of solar radiation storm activity with S1-S5 classification *(sensor.noaa_{office}_solar_radiation_storm_alerts)*\n  - **Storm Classification**: Automatic detection and classification of solar radiation storms (S1-S5 scale)\n  - **Expected Timing**: Start and end times for radiation storm events when available\n  - **Impact Assessment**: Potential impacts including satellite interference, radio blackouts, and radiation exposure risks\n  - **Location Risk**: Risk assessment based on your magnetic latitude and current storm activity\n  - **Real-time Alerts**: Live monitoring of NOAA Space Weather Prediction Center alerts\n\n\u003e **Note**: Solar radiation storm impacts vary by location and magnetic latitude. Higher latitudes (like Alaska and northern Canada) experience more severe effects, while equatorial regions are generally less affected. The integration provides location-specific risk assessments for your configured NWS office.\n\n### Optional Secondary Sensors (Config Flow Only)\nThese sensors provide additional weather data where available from NOAA/NWS *(NOAA Weather)*:\n\n- **Cloud Cover**: Current cloud coverage percentage from NWS gridpoint data *(sensor.noaa_{office}_cloud_cover)*\n  - Returns percentage (0-100%) of sky covered by clouds\n  - Updated from forecast gridpoint data for your location\n  - Requires latitude/longitude configuration\n  - May not be available for all locations\n\n- **Radar Timestamp**: Timestamp of the latest radar image for your NWS office *(sensor.noaa_{office}_radar_timestamp)*\n  - Shows when the most recent radar image was captured\n  - Useful for automations or displaying radar freshness\n  - Based on NEXRAD radar site for your office location\n  - Available for most coastal and land-based offices\n\n- **Forecast Discussion**: Meteorologist-written forecast discussion (AFD product) *(sensor.noaa_{office}_forecast_discussion)*\n  - Detailed technical analysis from local NWS meteorologists\n  - Includes reasoning behind forecast decisions\n  - Updated when new forecast discussions are issued (typically 2-3 times daily)\n  - Full text available in sensor attributes with summary in state\n  - Provides insight into weather patterns and forecast confidence\n\n\u003e **Note**: These sensors gracefully handle missing data by returning `None` or `Unknown` when data is unavailable. The `availability` attribute indicates data source and current status. **UV Index is NOT available** through NWS APIs and cannot be provided by this integration.\n\n### Image Entities\nVisual representations of current conditions *(NOAA Space \u0026 NOAA Weather)*:\n- **Geomagnetic Field Image**: Real-time geomagnetic storm intensity visualization *(NOAA Space)*\n- **Aurora Forecast Image**: Tonight's aurora coverage forecast *(NOAA Space)*\n- **Hurricane Outlook Image**: 2-day tropical weather outlook from NHC *(NOAA Weather)*\n- **Hurricane Satellite Image**: Latest Atlantic satellite imagery *(NOAA Weather)*\n\n\u003e **Tip**: Image entities can be displayed on dashboards using the standard `picture-entity` or `picture-glance` cards. They automatically refresh every 5 minutes to show the latest data.\n\n## NWS Forecast Offices\n\nThe integration supports all NWS offices that issue Surf Zone Forecasts (SRF):\n\n**East Coast**: Norfolk (AKQ), Boston (BOX), Wilmington NC (ILM), Charleston (CHS), Jacksonville (JAX), Miami (MFL), Tampa (TBW), etc.\n\n**West Coast**: San Diego (SGX), Los Angeles (LOX), San Francisco (MTR), Portland OR (PQR), Eureka (EKA)\n\n**Gulf Coast**: Mobile (MOB), Corpus Christi (CRP), Brownsville (BRO), Tallahassee (TAE)\n\n**Great Lakes**: Chicago (LOT), Cleveland (CLE), Detroit (DTX), Milwaukee (MKX), Duluth (DLH)\n\n**Pacific**: Honolulu (HFO), Guam (GUM)\n\n## Entity Naming Conventions\n\nUnderstanding entity naming helps you quickly identify and use sensors in automations and dashboards.\n\n### Naming Pattern\nAll NOAA Integration entities follow this pattern:\n```\n{entity_type}.noaa_{office_code}_{sensor_name}\n```\n\n**Examples:**\n- `sensor.noaa_sgx_temperature` - Temperature sensor for San Diego (SGX office)\n- `binary_sensor.noaa_sgx_unsafe_to_swim` - Rip current safety for San Diego\n- `sensor.noaa_weather_kp_index` - Global K-index (no office code, space weather)\n- `binary_sensor.noaa_sgx_severe_weather_alert` - Severe weather alert for San Diego\n\n### Office Code Usage\n- **Location-specific sensors**: Include the office code (e.g., `sgx`, `lox`, `box`)\n- **Global sensors**: Omit office code or use `weather`/`space` identifier\n- **Replace office code**: If you change NWS offices, entity names will include the new code\n\n### Entity Types\n- **sensor.**: Numeric or text state (temperature, humidity, alert count, etc.)\n- **binary_sensor.**: On/Off or True/False state (unsafe conditions, active alerts)\n- **image.**: Visual data (radar, satellite, forecast images)\n\n### Best Practices\n\n1. **Use Device Views**: Access entities by device (Settings → Devices \u0026 Services → NOAA Integration) for organized browsing\n2. **Create Groups**: Use Home Assistant groups to combine related entities across device boundaries\n3. **Label Your Location**: In automations, use friendly names in messages (e.g., \"San Diego\" instead of \"SGX\")\n4. **Check Availability**: Sensors return `unknown` or `None` when data is unavailable - use conditions to verify state\n5. **Binary Sensors for Triggers**: Use binary sensors (`on`/`off`) for automation triggers instead of checking sensor values\n6. **Access Attributes**: Many sensors include detailed information in attributes (e.g., full alert text, forecast periods)\n\n### Quick Reference: Common Entity Patterns\n\n| Data Type | Entity Pattern | Example |\n|-----------|---------------|---------|\n| Weather Observation | `sensor.noaa_{office}_{metric}` | `sensor.noaa_sgx_temperature` |\n| Weather Alert Binary | `binary_sensor.noaa_{office}_{alert_type}_alert` | `binary_sensor.noaa_sgx_severe_weather_alert` |\n| Surf Conditions | `sensor.noaa_{office}_{surf_metric}` | `sensor.noaa_sgx_rip_current_risk` |\n| Space Weather | `sensor.noaa_{space/weather}_{metric}` | `sensor.noaa_space_kp_index` |\n| Aurora Predictions | `sensor.noaa_{office}_aurora_{metric}` | `sensor.noaa_dlh_aurora_next_time` |\n\n## Example Automations\n\n### Binary Sensor Triggers for Safety Alerts\n\n#### Rip Current Safety Alert\n```yaml\nautomation:\n  - alias: \"Rip Current Warning\"\n    description: \"Alert when rip current conditions become dangerous\"\n    trigger:\n      platform: state\n      entity_id: binary_sensor.noaa_sgx_unsafe_to_swim\n      to: 'on'\n    action:\n      - service: notify.mobile_app\n        data:\n          title: \"⚠️ Beach Safety Alert\"\n          message: \"High rip current risk detected - swimming not recommended!\"\n          data:\n            priority: high\n            tag: \"rip-current-alert\"\n```\n\n### Weather Alert Notifications\n\n#### Severe Weather Alert Notification\n```yaml\nautomation:\n  - alias: \"Severe Weather Alert\"\n    description: \"Immediate notification for severe weather warnings\"\n    trigger:\n      platform: state\n      entity_id: binary_sensor.noaa_sgx_severe_weather_alert\n      to: 'on'\n    action:\n      - service: notify.mobile_app\n        data:\n          title: \"⚠️ Severe Weather Alert\"\n          message: \"Tornado, thunderstorm, or hurricane warning active for your area. Check details immediately!\"\n          data:\n            priority: high\n            notification_icon: mdi:weather-lightning-rainy\n      - service: tts.google_translate_say\n        data:\n          entity_id: media_player.home_speaker\n          message: \"Warning: Severe weather alert has been issued for your location. Seek shelter immediately.\"\n```\n\n#### Winter Storm Alert with Light Flash\n```yaml\nautomation:\n  - alias: \"Winter Storm Alert\"\n    description: \"Visual and mobile notification for winter weather\"\n    trigger:\n      platform: state\n      entity_id: binary_sensor.noaa_sgx_flood_winter_alert\n      to: 'on'\n    action:\n      - service: notify.mobile_app\n        data:\n          title: \"❄️ Winter Weather Alert\"\n          message: \"Winter storm or flood warning active for your area!\"\n          data:\n            notification_icon: mdi:weather-snowy-heavy\n      - service: light.turn_on\n        target:\n          entity_id: light.living_room\n        data:\n          flash: long\n          rgb_color: [0, 100, 255]\n```\n\n#### Heat Advisory with Thermostat Adjustment\n```yaml\nautomation:\n  - alias: \"Heat Advisory - Adjust Thermostat\"\n    description: \"Auto-adjust cooling when heat advisory is active\"\n    trigger:\n      platform: state\n      entity_id: binary_sensor.noaa_sgx_heat_air_quality_alert\n      to: 'on'\n    action:\n      - service: notify.mobile_app\n        data:\n          title: \"🔥 Heat Advisory\"\n          message: \"Heat advisory or air quality alert active!\"\n      - service: climate.set_temperature\n        target:\n          entity_id: climate.home\n        data:\n          temperature: 72\n      - service: fan.turn_on\n        target:\n          entity_id: fan.bedroom\n```\n\n### Space Weather Monitoring\n\n#### Aurora Alert for Northern Locations\n```yaml\nautomation:\n  - alias: \"Aurora Alert - High Probability\"\n    description: \"Notify when aurora visibility probability is high\"\n    trigger:\n      - platform: numeric_state\n        entity_id: sensor.noaa_dlh_aurora_visibility_probability\n        above: 50\n    condition:\n      - condition: sun\n        after: sunset\n        before: sunrise\n    action:\n      - service: notify.mobile_app\n        data:\n          title: \"🌌 Aurora Alert!\"\n          message: \u003e\n            Aurora visibility probability is {{ states('sensor.noaa_dlh_aurora_visibility_probability') }}%!\n            Expected duration: {{ states('sensor.noaa_dlh_aurora_duration') }} hours.\n          data:\n            notification_icon: mdi:weather-night\n```\n\n#### Geomagnetic Storm Notification\n```yaml\nautomation:\n  - alias: \"Geomagnetic Storm Alert\"\n    description: \"Notify when Kp index indicates geomagnetic storm\"\n    trigger:\n      - platform: numeric_state\n        entity_id: sensor.noaa_space_kp_index\n        above: 5\n    action:\n      - service: notify.mobile_app\n        data:\n          title: \"⚡ Geomagnetic Storm\"\n          message: \u003e\n            Kp Index: {{ states('sensor.noaa_space_kp_index') }}\n            Geomagnetic Storm Level: {{ states('sensor.noaa_space_geomagnetic_storm') }}\n          data:\n            notification_icon: mdi:solar-power\n```\n\n### Multi-Condition Automation with Grouping Logic\n\n#### Safe Beach Day Notification\n```yaml\nautomation:\n  - alias: \"Safe Beach Day Alert\"\n    description: \"Notify when conditions are perfect for beach activities\"\n    trigger:\n      - platform: time\n        at: \"08:00:00\"\n    condition:\n      - condition: state\n        entity_id: binary_sensor.noaa_sgx_unsafe_to_swim\n        state: 'off'\n      - condition: numeric_state\n        entity_id: sensor.noaa_sgx_temperature\n        above: 75\n      - condition: numeric_state\n        entity_id: sensor.noaa_sgx_wind_speed\n        below: 15\n      - condition: state\n        entity_id: binary_sensor.noaa_sgx_active_alerts\n        state: 'off'\n    action:\n      - service: notify.mobile_app\n        data:\n          title: \"🏖️ Perfect Beach Day!\"\n          message: \u003e\n            Great conditions for beach activities:\n            Temperature: {{ states('sensor.noaa_sgx_temperature') }}°F\n            Rip Current Risk: {{ states('sensor.noaa_sgx_rip_current_risk') }}\n            Surf Height: {{ states('sensor.noaa_sgx_surf_height') }} ft\n            Water Temp: {{ states('sensor.noaa_sgx_water_temperature') }}°F\n          data:\n            actions:\n              - action: \"VIEW_SURF_CONDITIONS\"\n                title: \"View Full Conditions\"\n```\n\n#### Severe Weather Preparation\n```yaml\nautomation:\n  - alias: \"Severe Weather Preparation\"\n    description: \"Comprehensive preparation when multiple alerts are active\"\n    trigger:\n      - platform: state\n        entity_id: \n          - binary_sensor.noaa_sgx_severe_weather_alert\n          - binary_sensor.noaa_sgx_flood_winter_alert\n        to: 'on'\n    action:\n      # Close automated blinds/shades\n      - service: cover.close_cover\n        target:\n          entity_id: all\n      # Turn on weather alert lights\n      - service: light.turn_on\n        target:\n          area_id: living_room\n        data:\n          brightness: 255\n      # Send comprehensive alert\n      - service: notify.family_group\n        data:\n          title: \"🚨 Severe Weather - Take Action\"\n          message: \u003e\n            Multiple severe weather alerts are active.\n            Total Alerts: {{ state_attr('sensor.noaa_weather_active_nws_alerts', 'total_alerts') }}\n            Types: {{ state_attr('sensor.noaa_weather_active_nws_alerts', 'alert_types') | join(', ') }}\n          data:\n            priority: high\n            ttl: 0\n      # Announce on speakers\n      - service: tts.google_translate_say\n        target:\n          entity_id: media_player.all_speakers\n        data:\n          message: \"Attention: Multiple severe weather alerts are now active for your area.\"\n```\n\n### Script Examples\n\n#### Check Current Conditions Script\n```yaml\nscript:\n  check_weather_conditions:\n    alias: \"Check Current Weather Conditions\"\n    description: \"Announce current weather and space weather conditions\"\n    sequence:\n      - service: tts.google_translate_say\n        target:\n          entity_id: media_player.home_speaker\n        data:\n          message: \u003e\n            Current conditions: \n            Temperature {{ states('sensor.noaa_sgx_temperature') }} degrees, \n            feels like {{ states('sensor.noaa_sgx_feels_like') }} degrees.\n            {{ states('sensor.noaa_sgx_sky_conditions') }} skies.\n            Wind {{ states('sensor.noaa_sgx_wind_speed') }} miles per hour from the {{ states('sensor.noaa_sgx_wind_direction') }}.\n            {% if is_state('binary_sensor.noaa_sgx_active_alerts', 'on') %}\n              Alert: {{ state_attr('sensor.noaa_weather_active_nws_alerts', 'total_alerts') }} weather alerts are currently active.\n            {% endif %}\n```\n\n#### Space Weather Report\n```yaml\nscript:\n  space_weather_report:\n    alias: \"Space Weather Report\"\n    description: \"Get current space weather conditions\"\n    sequence:\n      - service: notify.mobile_app\n        data:\n          title: \"🌌 Space Weather Report\"\n          message: \u003e\n            Kp Index: {{ states('sensor.noaa_space_kp_index') }}\n            Geomagnetic Activity: {{ states('sensor.noaa_space_geomagnetic_storm') }}\n            {% if states('sensor.noaa_dlh_aurora_visibility_probability') | int \u003e 0 %}\n            Aurora Visibility: {{ states('sensor.noaa_dlh_aurora_visibility_probability') }}%\n            Expected at: {{ states('sensor.noaa_dlh_aurora_next_time') }}\n            {% endif %}\n            Solar Radiation: {{ states('sensor.noaa_sgx_solar_radiation_storm_alerts') }}\n```\n\n#### Morning Weather Briefing\n```yaml\nscript:\n  morning_weather_briefing:\n    alias: \"Morning Weather Briefing\"\n    description: \"Complete morning weather and alert briefing\"\n    sequence:\n      - service: notify.mobile_app\n        data:\n          title: \"☀️ Good Morning - Weather Briefing\"\n          message: \u003e\n            **Current Conditions:**\n            🌡️ {{ states('sensor.noaa_sgx_temperature') }}°F (feels like {{ states('sensor.noaa_sgx_feels_like') }}°F)\n            💨 Wind {{ states('sensor.noaa_sgx_wind_speed') }} mph\n            ☁️ {{ states('sensor.noaa_sgx_sky_conditions') }}\n            \n            **Beach Conditions:**\n            🌊 Surf: {{ states('sensor.noaa_sgx_surf_height') }} ft\n            🏊 Rip Current Risk: {{ states('sensor.noaa_sgx_rip_current_risk') }}\n            🌡️ Water: {{ states('sensor.noaa_sgx_water_temperature') }}°F\n            \n            **Alerts:**\n            {% if is_state('binary_sensor.noaa_sgx_active_alerts', 'on') %}\n            ⚠️ {{ state_attr('sensor.noaa_weather_active_nws_alerts', 'total_alerts') }} active weather alerts\n            {% else %}\n            ✅ No active weather alerts\n            {% endif %}\n```\n\n### Dashboard Card Examples\n\n### Dashboard Card Examples\n\nThese examples demonstrate how to create effective dashboard cards organized by device groups.\n\n#### Weather Alerts Card (NOAA Weather [OFFICE] Group)\n```yaml\ntype: entities\ntitle: \"🚨 NWS Active Alerts - San Diego\"\nshow_header_toggle: false\nstate_color: true\nentities:\n  - entity: sensor.noaa_weather_active_nws_alerts\n    name: \"Active Alerts\"\n    icon: mdi:alert-circle\n  - type: divider\n  - entity: binary_sensor.noaa_sgx_severe_weather_alert\n    name: \"Severe Weather\"\n    icon: mdi:weather-lightning\n  - entity: binary_sensor.noaa_sgx_flood_winter_alert\n    name: \"Flood/Winter\"\n    icon: mdi:weather-snowy-rainy\n  - entity: binary_sensor.noaa_sgx_heat_air_quality_alert\n    name: \"Heat/Air Quality\"\n    icon: mdi:sun-thermometer\n  - entity: binary_sensor.noaa_sgx_active_alerts\n    name: \"Any Active Alerts\"\n    icon: mdi:bell-alert\n```\n\n#### Beach Conditions Card (NOAA Surf Group)\n```yaml\ntype: entities\ntitle: \"🏖️ Beach Conditions - San Diego\"\nshow_header_toggle: false\nentities:\n  - entity: sensor.noaa_sgx_rip_current_risk\n    name: \"Rip Current Risk\"\n    icon: mdi:waves\n  - entity: binary_sensor.noaa_sgx_unsafe_to_swim\n    name: \"Safe to Swim\"\n    icon: mdi:swim\n  - entity: sensor.noaa_sgx_surf_height\n    name: \"Surf Height\"\n    icon: mdi:wave\n  - entity: sensor.noaa_sgx_water_temperature\n    name: \"Water Temperature\"\n    icon: mdi:thermometer-water\n```\n\n#### Current Weather Card (NOAA Weather Group)\n```yaml\ntype: vertical-stack\ncards:\n  - type: markdown\n    content: \u003e\n      \u003cdiv style=\"display:flex;align-items:center;gap:14px;\"\u003e \u003cimg src=\"{{\n      state_attr('sensor.noaa_weather_extended_forecast','periods')[0].icon }}\"\n      width=\"56\"\u003e \u003cdiv\u003e \u003cb\u003e{{\n      state_attr('sensor.noaa_weather_extended_forecast','periods')[0].name }} ·\n      {{\n      as_timestamp(state_attr('sensor.noaa_weather_extended_forecast','periods')[0].start_time)\n      | timestamp_custom('%a %m/%d') }}\u003c/b\u003e\u003cbr\u003e \u003cspan\n      style=\"font-size:1.4em;font-weight:700;\"\u003e {{\n      state_attr('sensor.noaa_weather_extended_forecast','periods')[0].temperature\n      }}°{{\n      state_attr('sensor.noaa_weather_extended_forecast','periods')[0].temperature_unit\n      }} \u003c/span\u003e\u003cbr\u003e {{\n      state_attr('sensor.noaa_weather_extended_forecast','periods')[0].detailed_forecast\n      }} \u003c/div\u003e\u003c/div\u003e\n  - type: markdown\n    content: \u003e\n      \u003cdiv style=\"display:flex;align-items:center;gap:14px;\"\u003e \u003cimg src=\"{{\n      state_attr('sensor.noaa_weather_extended_forecast','periods')[1].icon }}\"\n      width=\"56\"\u003e \u003cdiv\u003e \u003cb\u003e{{\n      state_attr('sensor.noaa_weather_extended_forecast','periods')[1].name }} ·\n      {{\n      as_timestamp(state_attr('sensor.noaa_weather_extended_forecast','periods')[1].start_time)\n      | timestamp_custom('%a %m/%d') }}\u003c/b\u003e\u003cbr\u003e \u003cspan\n      style=\"font-size:1.4em;font-weight:700;\"\u003e {{\n      state_attr('sensor.noaa_weather_extended_forecast','periods')[1].temperature\n      }}°{{\n      state_attr('sensor.noaa_weather_extended_forecast','periods')[1].temperature_unit\n      }} \u003c/span\u003e\u003cbr\u003e {{\n      state_attr('sensor.noaa_weather_extended_forecast','periods')[1].detailed_forecast\n      }} \u003c/div\u003e\u003c/div\u003e\n  - type: markdown\n    content: \u003e\n      \u003cdiv style=\"display:flex;align-items:center;gap:14px;\"\u003e \u003cimg src=\"{{\n      state_attr('sensor.noaa_weather_extended_forecast','periods')[2].icon }}\"\n      width=\"56\"\u003e \u003cdiv\u003e \u003cb\u003e{{\n      state_attr('sensor.noaa_weather_extended_forecast','periods')[2].name }} ·\n      {{\n      as_timestamp(state_attr('sensor.noaa_weather_extended_forecast','periods')[2].start_time)\n      | timestamp_custom('%a %m/%d') }}\u003c/b\u003e\u003cbr\u003e \u003cspan\n      style=\"font-size:1.4em;font-weight:700;\"\u003e {{\n      state_attr('sensor.noaa_weather_extended_forecast','periods')[2].temperature\n      }}°{{\n      state_attr('sensor.noaa_weather_extended_forecast','periods')[2].temperature_unit\n      }} \u003c/span\u003e\u003cbr\u003e {{\n      state_attr('sensor.noaa_weather_extended_forecast','periods')[2].detailed_forecast\n      }} \u003c/div\u003e\u003c/div\u003e\n\n```\n\n#### Space Weather Card (NOAA Space Group)\n```yaml\ntype: entities\ntitle: 🌌 Space Weather\nshow_header_toggle: false\nentities:\n  - entity: sensor.noaa_space_planetary_k_index\n    name: Kp Index\n    icon: mdi:chart-line\n  - entity: sensor.noaa_space_geomagnetic_storm\n    name: Geomagnetic Storm\n    icon: mdi:earth\n  - type: divider\n  - entity: sensor.aurora_visibility_probability_ilm\n    name: Aurora Probability\n    icon: mdi:star-shooting\n  - entity: sensor.aurora_next_time_ilm\n    name: Next Aurora\n    icon: mdi:clock-outline\n  - entity: sensor.aurora_duration_ilm\n    name: Duration\n    icon: mdi:timer-outline\n  - type: divider\n  - entity: sensor.noaa_weather_active_nws_alerts\n    name: Solar Radiation\n    icon: mdi:radioactive\n\n```\n\n#### Hurricane Tracking Card (NOAA Weather Group)\n```yaml\ntype: entities\ntitle: \"🌀 Hurricane Activity\"\nshow_header_toggle: false\nentities:\n  - entity: sensor.noaa_weather_hurricane_alerts\n    name: \"Active Alerts\"\n    icon: mdi:alert-octagon\n  - entity: sensor.noaa_weather_hurricane_activity\n    name: \"Activity Level\"\n    icon: mdi:weather-hurricane\n```\n\n#### Comprehensive Weather Dashboard View\n```yaml\ntype: vertical-stack\ncards:\n  # Top row - Alerts and Safety\n  - type: horizontal-stack\n    cards:\n      - type: conditional\n        conditions:\n          - entity: binary_sensor.noaa_sgx_active_alerts\n            state: 'on'\n        card:\n          type: markdown\n          content: |\n            ## ⚠️ ACTIVE WEATHER ALERTS\n            **{{ state_attr('sensor.noaa_weather_active_nws_alerts', 'total_alerts') }} Alert(s)**\n            {{ state_attr('sensor.noaa_weather_active_nws_alerts', 'summary') }}\n          card_mod:\n            style: |\n              ha-card {\n                background-color: rgba(255, 0, 0, 0.2);\n                border: 2px solid red;\n              }\n      \n      - type: conditional\n        conditions:\n          - entity: binary_sensor.noaa_sgx_unsafe_to_swim\n            state: 'on'\n        card:\n          type: markdown\n          content: |\n            ## 🌊 BEACH SAFETY ALERT\n            **High Rip Current Risk**\n            Swimming Not Recommended\n          card_mod:\n            style: |\n              ha-card {\n                background-color: rgba(255, 165, 0, 0.2);\n                border: 2px solid orange;\n              }\n  \n  # Second row - Current conditions\n  - type: horizontal-stack\n    cards:\n      - type: gauge\n        entity: sensor.noaa_sgx_temperature\n        name: \"Temperature\"\n        min: 0\n        max: 120\n        severity:\n          green: 60\n          yellow: 85\n          red: 95\n      \n      - type: gauge\n        entity: sensor.noaa_sgx_humidity\n        name: \"Humidity\"\n        min: 0\n        max: 100\n        severity:\n          green: 30\n          yellow: 60\n          red: 80\n      \n      - type: gauge\n        entity: sensor.noaa_space_kp_index\n        name: \"Kp Index\"\n        min: 0\n        max: 9\n        severity:\n          green: 0\n          yellow: 5\n          red: 7\n  \n  # Third row - Detailed entities\n  - type: entities\n    title: \"Weather Details\"\n    entities:\n      - sensor.noaa_sgx_feels_like\n      - sensor.noaa_sgx_wind_speed\n      - sensor.noaa_sgx_barometric_pressure\n      - sensor.noaa_sgx_sky_conditions\n  \n  # Fourth row - Space weather images\n  - type: horizontal-stack\n    cards:\n      - type: picture-entity\n        entity: image.noaa_geomagnetic_field\n        name: \"Geomagnetic Field\"\n        show_state: false\n      \n      - type: picture-entity\n        entity: image.noaa_aurora_forecast\n        name: \"Aurora Forecast\"\n        show_state: false\n```\n\n#### Glance Card for Quick Overview\n```yaml\ntype: glance\ntitle: \"NOAA Quick View\"\nshow_name: true\nshow_state: true\ncolumns: 4\nentities:\n  - entity: sensor.noaa_sgx_temperature\n    name: \"Temp\"\n  - entity: sensor.noaa_sgx_wind_speed\n    name: \"Wind\"\n  - entity: sensor.noaa_sgx_surf_height\n    name: \"Surf\"\n  - entity: binary_sensor.noaa_sgx_unsafe_to_swim\n    name: \"Safe Swim\"\n  - entity: sensor.noaa_space_kp_index\n    name: \"Kp Index\"\n  - entity: binary_sensor.noaa_sgx_active_alerts\n    name: \"Alerts\"\n  - entity: sensor.noaa_weather_hurricane_activity\n    name: \"Hurricanes\"\n  - entity: sensor.noaa_sgx_rip_current_risk\n    name: \"Rip Risk\"\n```\n\n#### Mobile-Optimized Card\n```yaml\ntype: vertical-stack\ncards:\n  - type: markdown\n    content: |\n      # 📍 San Diego Weather\n      Updated: {{ as_timestamp(states.sensor.noaa_sgx_temperature.last_changed) | timestamp_custom('%I:%M %p') }}\n  \n  - type: entities\n    entities:\n      - entity: sensor.noaa_sgx_temperature\n        name: \"🌡️ Temperature\"\n      - entity: sensor.noaa_sgx_feels_like\n        name: \"🤒 Feels Like\"\n      - entity: sensor.noaa_sgx_sky_conditions\n        name: \"☁️ Conditions\"\n  \n  - type: conditional\n    conditions:\n      - entity: binary_sensor.noaa_sgx_active_alerts\n        state: 'on'\n    card:\n      type: button\n      name: \"View Active Alerts\"\n      icon: mdi:alert-circle\n      tap_action:\n        action: more-info\n        entity: sensor.noaa_weather_active_nws_alerts\n      hold_action:\n        action: none\n```\n\n#### Forecast Discussion Card\n```yaml\ntype: markdown\ntitle: \"📝 Forecast Discussion\"\ncontent: |\n  **{{ state_attr('sensor.noaa_sgx_forecast_discussion', 'office') }}** - Updated {{ state_attr('sensor.noaa_sgx_forecast_discussion', 'issued_time') }}\n  \n  {{ states('sensor.noaa_sgx_forecast_discussion') }}\n  \n  [Read Full Discussion]({{ state_attr('sensor.noaa_sgx_forecast_discussion', 'product_link') }})\n```\n\n## Troubleshooting \u0026 FAQ\n\n### Entities Not Appearing\n- Ensure you completed Config Flow setup with valid latitude and longitude\n- Verify your NWS office code is listed in the [supported offices](#nws-forecast-offices) table\n- Restart Home Assistant after adding or reconfiguring the integration\n- Check **Settings** → **System** → **Logs** for any error messages from `noaa_it_all`\n\n### Data Not Updating\n- Check sensor attributes for error messages\n- Verify internet connectivity from your Home Assistant instance\n- NOAA APIs occasionally experience temporary outages; sensors will recover automatically\n- Confirm scan interval is running: entities should show a `last_changed` time within the last 10 minutes\n\n### Incorrect or Missing Weather Data\n- Weather observations are pulled from the nearest NWS station to your configured coordinates\n- Confirm your latitude and longitude are accurate (you can reconfigure via **Settings** → **Integrations** → **NOAA Integration** → **Configure**)\n- Some NWS offices may not have nearby observation stations; in that case observations will show `unknown`\n\n### Binary Sensors Always Off\n- Binary sensors require Config Flow setup with a valid office code and coordinates\n- Legacy YAML configuration does not support location-specific binary sensors\n\n### Integration Fails to Load\n- Confirm Home Assistant version is **2024.9.1 or newer**\n- Check that required Python packages (`requests`, `aiohttp`) are available (they are bundled with HACS installations)\n- Review Home Assistant logs for specific import or configuration errors\n\n### FAQ\n\n**Q: Can I use this integration without configuring latitude/longitude?**\nA: Yes. Adding `noaa_it_all:` to `configuration.yaml` provides global sensors (Kp Index, Geomagnetic Storm, Hurricane data) without location-specific features.\n\n**Q: How do I find my NWS forecast office code?**\nA: Visit [weather.gov](https://www.weather.gov/) and search for your location. The three-letter office code appears in the URL of your local forecast page (e.g., `forecast.weather.gov/MapClick.php?CityName=San+Diego\u0026state=CA\u0026site=SGX`).\n\n**Q: Why don't I see aurora predictions?**\nA: Aurora predictions are location-specific and require Config Flow setup. Also, aurora is only visible at high Kp levels for southern latitudes — check the Kp Index value and your office's magnetic latitude.\n\n**Q: How often does data update?**\nA: All sensors update every 5 minutes.\n\n**Q: Are UV Index readings available?**\nA: No. UV Index is not provided through NWS/NOAA APIs and cannot be included in this integration.\n\n**Q: Where can I report bugs or request features?**\nA: Please open an issue on [GitHub](https://github.com/dawg-io/noaa_it_all/issues).\n\n## Data Sources\n\n- **Space Weather**: NOAA Space Weather Prediction Center\n  - Aurora visibility forecasts and geomagnetic storm data\n  - Solar radiation storm alerts and classification (S1-S5 scale)\n  - Real-time space weather alert monitoring\n- **Hurricane Data**: National Hurricane Center (NHC) and National Weather Service (NWS)\n- **NWS Active Alerts**: National Weather Service weather.gov API\n  - Location-specific severe weather warnings and watches\n  - Flood, winter storm, and environmental alerts\n  - Real-time alert monitoring with automatic filtering\n- **Rip Current/Surf Data**: Location-specific NWS Surf Zone Forecasts (SRF products)\n- **Weather Observations**: National Weather Service observation stations (weather.gov API)\n  - Real-time temperature, humidity, wind, pressure, and sky conditions\n  - Automatic unit conversions to US customary units\n\n## Update Frequency\nAll sensors update every 5 minutes to provide current conditions while respecting API rate limits.\n\n**Note:** Legacy YAML configurations without lat/lon will continue to work but will use the fallback office-to-station mapping for weather data. Config Flow setups require the new fields.\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for a full history of changes and releases.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdawg-io%2Fnoaa_it_all","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdawg-io%2Fnoaa_it_all","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdawg-io%2Fnoaa_it_all/lists"}