UK (and worldwide) Pollen Count using tomorrow.io API

Interesting. I’ve installed the AccuWeather integration and am just seeing 0 in the pollen numbers reported.

I tried to implement the kleenex pollen meter into this chart.
The only thing that i could not find at the moment was the p/m3 instead of ppm in the forecasts.
So if anybody knows how to get this sorted,
Please let me know!

I had to create some sensors for this (in my case in the configuration.yaml):

  - platform: template
    sensors:
      grass_pollen_forecast_1:
        friendly_name: "grass ollen Forecast 1"
        value_template: "{{ state_attr('sensor.kleenex_pollen_radar_thuis_gras', 'forecast')[0].value }}"
      grass_pollen_forecast_2:
        friendly_name: "grass pollen Forecast 2"
        value_template: "{{ state_attr('sensor.kleenex_pollen_radar_thuis_gras', 'forecast')[1].value }}"
      grass_pollen_forecast_3:
        friendly_name: "grass pollen Forecast 3"
        value_template: "{{ state_attr('sensor.kleenex_pollen_radar_thuis_gras', 'forecast')[2].value }}"
      grass_pollen_forecast_4:
        friendly_name: "grass pollen Forecast 4"
        value_template: "{{ state_attr('sensor.kleenex_pollen_radar_thuis_gras', 'forecast')[3].value }}"
      tree_pollen_forecast_1:
        friendly_name: "tree pollen Forecast 1"
        value_template: "{{ state_attr('sensor.kleenex_pollen_radar_thuis_bomen', 'forecast')[0].value }}"
      tree_pollen_forecast_2:
        friendly_name: "tree pollen Forecast 2"
        value_template: "{{ state_attr('sensor.kleenex_pollen_radar_thuis_bomen', 'forecast')[1].value }}"
      tree_pollen_forecast_3:
        friendly_name: "tree pollen Forecast 3"
        value_template: "{{ state_attr('sensor.kleenex_pollen_radar_thuis_bomen', 'forecast')[2].value }}"
      tree_pollen_forecast_4:
        friendly_name: "tree pollen Forecast 4"
        value_template: "{{ state_attr('sensor.kleenex_pollen_radar_thuis_bomen', 'forecast')[3].value }}"
      weed_pollen_forecast_1:
        friendly_name: "weed pollen Forecast 1"
        value_template: "{{ state_attr('sensor.kleenex_pollen_radar_thuis_kruiden', 'forecast')[0].value }}"
      weed_pollen_forecast_2:
        friendly_name: "weed pollen Forecast 2"
        value_template: "{{ state_attr('sensor.kleenex_pollen_radar_thuis_kruiden', 'forecast')[1].value }}"
      weed_pollen_forecast_3:
        friendly_name: "weed pollen Forecast 3"
        value_template: "{{ state_attr('sensor.kleenex_pollen_radar_thuis_kruiden', 'forecast')[2].value }}"
      weed_pollen_forecast_4:
        friendly_name: "weed pollen Forecast 4"
        value_template: "{{ state_attr('sensor.kleenex_pollen_radar_thuis_kruiden', 'forecast')[3].value }}"

And i’ve put those in the card:

type: custom:stack-in-card
cards:
  - type: custom:layout-card
    layout_type: custom:grid-layout
    layout:
      grid-template-columns: auto 33px
      margin: '-4px -4px -10px -4px;'
    cards:
      - type: grid
        columns: 3
        cards:
          - type: custom:mushroom-template-card
            primary: Grass pollen
            icon: mdi:grass
            layout: vertical
            entity: sensor.kleenex_pollen_radar_thuis_gras
            friendly_name: Grass Pollen Level (experiment)
            icon_color: |-
              {% if states(config.entity) | float(0) <= 29 %}
                green
              {% elif states(config.entity) | float(0) <= 60 %}
                orange    
              {% elif states(config.entity) | float(0) <= 341 %}
                red
              {% elif states(config.entity) | float(0) > 341 %}
                brown
              {% else %}
                grey
              {% endif %}
            secondary: >-
              Today: {{ state_attr('sensor.kleenex_pollen_radar_thuis_gras',
              'current').level }}

              Tomorrow: {{ state_attr('sensor.kleenex_pollen_radar_thuis_gras',
              'forecast')[0].level }}
            tap_action:
              action: more-info
            hold_action:
              action: none
            double_tap_action:
              action: none
            multiline_secondary: true
            card_mod:
              style: |
                ha-card {
                  background: none;
                  --ha-card-box-shadow: 0px;
                }
          - type: custom:mushroom-template-card
            primary: Tree pollen
            icon: mdi:tree
            layout: vertical
            entity: sensor.kleenex_pollen_radar_thuis_bomen
            icon_color: |-
              {% if states(config.entity) | float(0) <= 95 %}
                green
              {% elif states(config.entity) | float(0) <= 207 %}
                orange    
              {% elif states(config.entity) | float(0) <= 703 %}
                red
              {% elif states(config.entity) | float(0) > 703 %}
                brown
              {% else %}
                grey
              {% endif %}
            secondary: >-
              Today: {{ state_attr('sensor.kleenex_pollen_radar_thuis_bomen',
              'current').level }}

              Tomorrow: {{ state_attr('sensor.kleenex_pollen_radar_thuis_bomen',
              'forecast')[0].level }}
            double_tap_action:
              action: none
            tap_action:
              action: more-info
            hold_action:
              action: none
            multiline_secondary: true
            card_mod:
              style: |
                ha-card {
                  background: none;
                  --ha-card-box-shadow: 0px;
                }
          - type: custom:mushroom-template-card
            primary: Weed pollen
            icon: mdi:spa
            layout: vertical
            entity: sensor.kleenex_pollen_radar_thuis_kruiden
            icon_color: |-
              {% if states(config.entity) | float(0) <= 20 %}
                green
              {% elif states(config.entity) | float(0) <= 77 %}
                orange    
              {% elif states(config.entity) | float(0) <= 266 %}
                red
              {% elif states(config.entity) | float(0) > 266 %}
                brown
              {% else %}
                grey
              {% endif %}
            secondary: >-
              Today: {{ state_attr('sensor.kleenex_pollen_radar_thuis_kruiden',
              'current').level }}

              Tomorrow: {{
              state_attr('sensor.kleenex_pollen_radar_thuis_kruiden',
              'forecast')[0].level }}
            double_tap_action:
              action: none
            tap_action:
              action: more-info
            hold_action:
              action: none
            multiline_secondary: true
            card_mod:
              style: |
                ha-card {
                  background: none;
                  --ha-card-box-shadow: 0px;
                }
      - type: custom:mushroom-template-card
        entity: input_boolean.adaptive_dropdown
        primary: ''
        secondary: ''
        icon: >-
          {{ 'mdi:chevron-up' if is_state(entity, 'on') else 'mdi:chevron-down'
          }}
        icon_color: disabled
        hold_action:
          action: none
        card_mod:
          style: |
            ha-card {
              align-items: flex-end;
              background: none;
              --ha-card-box-shadow: 0px;
            }
            mushroom-shape-icon {
              --shape-color: none !important;
            } 
  - type: conditional
    conditions:
      - entity: input_boolean.adaptive_dropdown
        state: 'on'
    card:
      type: vertical-stack
      cards:
        - type: custom:bar-card
          title: Grass pollen forecast
          direction: up
          columns: 5
          height: 50px
          width: 100%
          min: 0
          max: 200
          positions:
            icon: 'off'
            name: outside
            value: inside
          severity:
            - color: Green
              from: 0
              to: 29
            - color: Orange
              from: 30
              to: 60
            - color: Red
              from: 61
              to: 999
          animation:
            state: 'on'
            speed: 1
          entities:
            - entity: sensor.kleenex_pollen_radar_thuis_gras
              name: Today
            - entity: sensor.grass_pollen_forecast_1
              name: Today +1
            - entity: sensor.grass_pollen_forecast_2
              name: Today +2
            - entity: sensor.grass_pollen_forecast_3
              name: Today +3
            - entity: sensor.grass_pollen_forecast_4
              name: Today +4
          card_mod:
            style: |-
              .card-header {
                --ha-card-header-font-size: 20px;
              }
              bar-card-backgroundbar {
                background-color: transparent;
              }
              bar-card-name {
                font-size: 12px;
                font-weight: bolder;
                color: #727272;
              }
        - type: custom:bar-card
          title: Tree pollen forecast
          direction: up
          columns: 5
          height: 50px
          width: 100%
          min: 0
          max: 208
          positions:
            icon: 'off'
            name: outside
            value: inside
          severity:
            - color: Green
              from: 0
              to: 95
            - color: Orange
              from: 96
              to: 207
            - color: Red
              from: 208
              to: 999
          animation:
            state: 'on'
            speed: 1
          entities:
            - entity: sensor.kleenex_pollen_radar_thuis_bomen
              name: Today
            - entity: sensor.thuis_tree_pollen_day_1
              name: Today +1
            - entity: sensor.thuis_tree_pollen_day_2
              name: Today +2
            - entity: sensor.thuis_tree_pollen_day_3
              name: Today +3
            - entity: sensor.thuis_tree_pollen_day_4
              name: Today +4
          card_mod:
            style: |-
              .card-header {
                --ha-card-header-font-size: 20px;
              }
              bar-card-backgroundbar {
                background-color: transparent;
              }
              bar-card-name {
                font-size: 12px;
                font-weight: bolder;
                color: #727272;
              }
        - type: custom:bar-card
          title: Weed pollen forecast
          direction: up
          columns: 5
          height: 50px
          width: 100%
          min: 0
          max: 200
          positions:
            icon: 'off'
            name: outside
            value: inside
          severity:
            - color: Green
              from: 0
              to: 20
            - color: Orange
              from: 21
              to: 77
            - color: Red
              from: 78
              to: 999
          animation:
            state: 'on'
            speed: 1
          entities:
            - entity: sensor.kleenex_pollen_radar_thuis_kruiden
              name: Today
            - entity: sensor.weed_pollen_forecast_1
              name: Today +1
            - entity: sensor.weed_pollen_forecast_2
              name: Today +2
            - entity: sensor.weed_pollen_forecast_3
              name: Today +3
            - entity: sensor.weed_pollen_forecast_4
              name: Today +4
          card_mod:
            style: |-
              .card-header {
                --ha-card-header-font-size: 20px;
              }
              bar-card-backgroundbar {
                background-color: transparent;
              }
              bar-card-name {
                font-size: 12px;
                font-weight: bolder;
                color: #727272;
              }

2 Likes

Is the api still working for you guys? Just noticed this a few days ago.

{"code":403003,"type":"Forbidden Action","message":"The plan is restricted and cannot perform this action. Adjust action and try again: All requested fields are not allowed"}

Just about everything was moved into the paid subscription tier. Just the plain weather info is left for free, probably due to that information can be obtained from your local weather site. They can’t make money from it

1 Like

Yep stopped working for me also via the API, also lost the pollution data, which is a shame.

Any alternatives for pollen count now?

the AccuWeather integration provides pollen sensors…no idea how reliable but they are there.
it has sensors for Grass, Mold, Ragweed and Tree pollen.

1 Like