Skip to content

Anashost/WeatherXM-Home-Assistant

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Community Forum Revolut.Me PayPal.Me ko_fi buymecoffee

WeatherXM-Home-Assistant

Extract weather data from any weatherXM station via api calls in Home Assistant.

Screenshot 2026-01-05 045623
want this card? click here
  • integrations needed from HACS: mushroom, card-mod
type: custom:mod-card
style: |
  ha-card {
    background: linear-gradient(to bottom right, #2c3e50, #4ca1af); /* Default Dark Blue/Teal Gradient */
    border-radius: 20px;
    box-shadow: 0px 10px 20px rgba(0,0,0,0.2);
    padding: 10px 0px;
    border: none;
  }
card:
  type: vertical-stack
  cards:
    - type: custom:mushroom-template-card
      entity: sensor.weatherxm_weather_condition
      primary: |
        {{ states('sensor.weatherxm_temperature_celsius') }}°
      secondary: >
        {{ states('sensor.weatherxm_weather_condition') }} • Feels like {{
        states('sensor.weatherxm_feels_like_celsius') | round(0) }}°
      icon: |
        {{ states('sensor.weatherxm_icon') }}
      icon_color: >
        {% set cond = states('sensor.weatherxm_weather_condition') %} {% if
        'Sun' in cond or 'Clear' in cond %} orange {% elif 'Rain' in cond %}
        blue {% elif 'Cloud' in cond %} light-blue {% else %} white {% endif %}
      layout: horizontal
      multiline_secondary: true
      fill_container: true
      tap_action:
        action: more-info
      card_mod:
        style: |
          ha-card {
            background: none;
            box-shadow: none;
            border: none;
          }
          :host {
            --mush-icon-size: 72px;
          }
          .primary {
            font-size: 48px !important;
            font-weight: 700 !important;
            line-height: 1.2 !important;
            color: white !important;
          }
          .secondary {
            font-size: 18px !important;
            color: rgba(255,255,255,0.8) !important;
          }
    - type: custom:mushroom-chips-card
      alignment: center
      chips:
        - type: template
          entity: sensor.weatherxm_humidity
          content: "{{ states('sensor.weatherxm_humidity') }}% Humidity"
          icon: mdi:water-percent
          icon_color: blue
          tap_action:
            action: more-info
          card_mod:
            style: |
              ha-card {
                background: rgba(255,255,255,0.1) !important;
                border: none !important;
                border-radius: 12px !important;
                --text-color: white;
              }
        - type: template
          entity: sensor.weatherxm_uv_index
          content: UV {{ states('sensor.weatherxm_uv_index') }}
          icon: mdi:sun-wireless
          icon_color: orange
          tap_action:
            action: more-info
          card_mod:
            style: |
              ha-card {
                background: rgba(255,255,255,0.1) !important;
                border: none !important;
                border-radius: 12px !important;
                --text-color: white;
              }
    - type: grid
      columns: 3
      square: false
      cards:
        - type: custom:mushroom-entity-card
          entity: sensor.weatherxm_wind_speed_kmh
          name: Wind
          icon: mdi:weather-windy
          primary_info: state
          secondary_info: name
          icon_color: green
          layout: vertical
          card_mod:
            style: |
              ha-card {
                background: none;
                box-shadow: none;
                border: none;
                color: white;
              }
              :host {
                --card-secondary-text-color: rgba(255,255,255,0.7);
                --card-primary-text-color: white;
              }
        - type: custom:mushroom-entity-card
          entity: sensor.weatherxm_daily_precipitation_mm
          name: Rain
          icon: mdi:weather-pouring
          primary_info: state
          secondary_info: name
          icon_color: light-blue
          layout: vertical
          card_mod:
            style: |
              ha-card {
                background: none;
                box-shadow: none;
                border: none;
                color: white;
              }
              :host {
                --card-secondary-text-color: rgba(255,255,255,0.7);
                --card-primary-text-color: white;
              }
        - type: custom:mushroom-entity-card
          entity: sensor.weatherxm_pressure_hpa
          name: Pressure
          icon: mdi:gauge
          primary_info: state
          secondary_info: name
          icon_color: orange
          layout: vertical
          card_mod:
            style: |
              ha-card {
                background: none;
                box-shadow: none;
                border: none;
                color: white;
              }
              :host {
                --card-secondary-text-color: rgba(255,255,255,0.7);
                --card-primary-text-color: white;
              }

This implementation will create the following sensors:

  • weather condition (sunny, cloudy, partly cloudy, rainy).
  • temperature
  • temperature real feel
  • humidity
  • wind speed
  • wind gust
  • pressure hpa
  • wind direction
  • wind direction cardinal
  • live precipitation
  • daily precipitation
  • past 7 days precipitation
  • uv_index
  • icon
  • icon color

How it works?

  • navigate to WeatheXM Explorer.
  • pick the station you want.
  • in the website url copy the highlighted text after the # (in yellow).

Alt text

  • replace the (*****) with the text you copied.

    https://api.weatherxm.com/api/v1/cells/*****/devices

    we need this url for the api call.

  • Paste the following code to your sensors.yaml and replace the url in line 3 with yours.

    (If you don't already have sensors.yaml file, then create it in the /homeassistant/ directory using your File editor.

  • paste the following code to your templates.yaml

    (If you don't already have templates.yaml file, then create it in the /homeassistant/ directory using your File editor.

  • make sure you add these lines to your configuration.yaml:

sensor: !include sensors.yaml
template: !include templates.yaml
  • if the station you want is the second one in the HEX, then change the [0] with [1] in line 6.
  • restart Home Assistant and you're done, now weather station data is available in your Home Assistant and you're free to use it.

Enjoy

Inpired by arcidodo, here's a link to his repo.

About

Extract weather data from any weatherXM station via api calls in Home Assistant

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published