Customising the BOM Weather and lovelace - now in HACS

Seems not.
I looked up Murwillumbah http://www.bom.gov.au/nsw/forecasts/murwillumbah.shtml on BOM and it’s a hybrid of Product derived from IDN11060 and IDN11024 and I searched the XML files (which is what the BOM FTP component uses) and Murwillumbah doesn’t even appear in them. You could try Byron Bay but I think it may also end up with data missing. Try also Tamworth, Tweed Heads, Armidale, Coffs Harbour or Lismore as well as they DO seem to have data. Good choices. Those should work.

David
thanks - I’ll have a go soon. I know that i can get the standard weather card to pull data and display. I probably just need to concentrae more.
Patrick

Hi David. Would you be able to tell me what I might be doing wrong? Everything is work well with exception of the icons. Every days forecast icon is always the same as the current days icon. When I hover my mouse over the days the tool tip will have the correct forecast text.

card

Love ace card

          - current_data_top_margin: 5em
            current_text_alignment: left
            current_text_font_size: 1.5em
            current_text_left_pos: 6em
            current_text_top_margin: 0em
            current_text_width: 100%
            entity_apparent_temp: sensor.bom_bunbury_feels_like_c
            entity_current_conditions: sensor.bom_bunbury_icon_0
            entity_current_text: sensor.bom_current_text
            entity_daily_summary: sensor.bom_bunbury_detailed_summary_0
            entity_daytime_high: sensor.bom_today_max
            entity_daytime_low: sensor.bom_today_min
            entity_fire_danger: sensor.bom_fire_danger
            entity_fire_danger_summary: sensor.bom_fire_danger_summary
            entity_forecast_high_temp_1: sensor.bom_bunbury_max_temp_c_1
            entity_forecast_high_temp_2: sensor.bom_bunbury_max_temp_c_2
            entity_forecast_high_temp_3: sensor.bom_bunbury_max_temp_c_3
            entity_forecast_high_temp_4: sensor.bom_bunbury_max_temp_c_4
            entity_forecast_high_temp_5: sensor.bom_bunbury_max_temp_c_5
            entity_forecast_icon_1: sensor.bom_bunbury_icon_1
            entity_forecast_icon_2: sensor.bom_bunbury_icon_2
            entity_forecast_icon_3: sensor.bom_bunbury_icon_3
            entity_forecast_icon_4: sensor.bom_bunbury_icon_4
            entity_forecast_icon_5: sensor.bom_bunbury_icon_5
            entity_forecast_low_temp_1: sensor.bom_bunbury_min_temp_c_1
            entity_forecast_low_temp_2: sensor.bom_bunbury_min_temp_c_2
            entity_forecast_low_temp_3: sensor.bom_bunbury_min_temp_c_3
            entity_forecast_low_temp_4: sensor.bom_bunbury_min_temp_c_4
            entity_forecast_low_temp_5: sensor.bom_bunbury_min_temp_c_5
            entity_gust_kmh: sensor.bom_bunbury_wind_gust_kmh
            entity_humidity: sensor.bom_bunbury_relative_humidity
            entity_pop: sensor.bom_bunbury_chance_of_rain_0
            entity_pop_1: sensor.bom_bunbury_chance_of_rain_1
            entity_pop_2: sensor.bom_bunbury_chance_of_rain_2
            entity_pop_3: sensor.bom_bunbury_chance_of_rain_3
            entity_pop_4: sensor.bom_bunbury_chance_of_rain_4
            entity_pop_5: sensor.bom_bunbury_chance_of_rain_5
            entity_pop_intensity: sensor.bom_bunbury_rain_today
            entity_pos_1: sensor.bom_bunbury_possible_rainfall_1
            entity_pos_2: sensor.bom_bunbury_possible_rainfall_2
            entity_pos_3: sensor.bom_bunbury_possible_rainfall_3
            entity_pos_4: sensor.bom_bunbury_possible_rainfall_4
            entity_pos_5: sensor.bom_bunbury_possible_rainfall_5
            entity_possible_today: sensor.bom_bunbury_possible_rainfall_0
            entity_press: sensor.bom_bunbury_pressure_mb
            entity_pressure: sensor.bom_bunbury_pressure_mb
            entity_summary_1: sensor.bom_bunbury_summary_1
            entity_summary_2: sensor.bom_bunbury_summary_2
            entity_summary_3: sensor.bom_bunbury_summary_3
            entity_summary_4: sensor.bom_bunbury_summary_4
            entity_summary_5: sensor.bom_bunbury_summary_5
            entity_sun: sun.sun
            entity_temperature: sensor.bom_bunbury_air_temp_c
            entity_uv_alert: sensor.bom_uv_alert
            entity_uv_alert_summary: sensor.bom_uv_alert_summary
            entity_wind_bearing: sensor.bom_bunbury_wind_direction
            entity_wind_speed: sensor.bom_bunbury_wind_speed_kmh
            slot_l1: daytime_high
            slot_l2: daytime_low
            slot_l3: wind
            slot_l4: pressure
            slot_l5: sun_next
            slot_r1: pop
            slot_r2: humidity
            slot_r3: uv_alert
            slot_r4: fire_danger
            slot_r5: sun_following
            title: BOM Weather
            tooltip_bg_color: 'rgb( 75,155,239)'
            tooltip_border_color: 'rgb(255,161,0)'
            tooltip_border_width: 1
            tooltip_caret_size: 5
            tooltip_fg_color: '#fff'
            tooltip_left_offset: -12
            tooltip_width: 110
            tooltips: true
            type: 'custom:bom-weather-card'

Thanks,
Simon

Can you check dev-tools and see what the state is for all these: sensor.bom_bunbury_icon_1
sensor.bom_bunbury_icon_2
sensor.bom_bunbury_icon_3
sensor.bom_bunbury_icon_4
sensor.bom_bunbury_icon_5

Sorry I can’t find that in the chrome dev condole.

I have these errors though

bom-weather-card.js:836 Uncaught (in promise) ReferenceError: popunit is not defined
    at bom-weather-card.js:836
    at Array.forEach (<anonymous>)
    at HTMLElement.updateValues (bom-weather-card.js:830)
    at HTMLElement.set hass [as hass] (bom-weather-card.js:812)
  

In Home Assistant all of the entities show the same forecast icon

I’m using you weather.yaml package.

# Download the BOM icons from https://github.com/DavidFW1960/bom_forecast/blob/3d5c5dce220a302e719f497c0ee755bacda0f04b/bom_icons.zip
# and save them under <config-dir>/www/icons/bom_icons/ (Note this is for the example in the ftp component. This is different to the animated card.)
# For the animated card follow the instructions and put the icons in <config-dir>/www/icons/weather_icons. This is a DIFFERENT icon file to the above.
# Show BOM Satellite and Radar

sensor:

  - platform: bom
    station: !secret bom_station_id
    name: !secret bom_name
    monitored_conditions:
      - apparent_t
      - delta_t
      - gust_kmh
      - gust_kt
      - air_temp
      - dewpt
      - rain_trace
      - rel_hum
      - wind_dir
      - wind_spd_kmh
      - wind_spd_kt
      - press

  - platform: bom_forecast
    product_id: !secret bom_product_id
    name: !secret bom_name
    forecast_days: 6
    rest_of_today: true
    friendly: false
    friendly_state_format: '{max}, {summary}'
    monitored_conditions:
      - 'max'
      - 'min'
      - 'chance_of_rain'
      - 'possible_rainfall'
      - 'summary'
      - 'detailed_summary'
      - 'icon'
      - 'uv_alert'
      - 'fire_danger'
      
  - platform: template
    sensors:

      bom_current_text:
        value_template: >
            {% set val = states('sensor.bom_bunbury_summary_0').split('.')[0] %} 
            {{ val | title }}

      bom_uv_alert:
        value_template: >
            {%- if states('sensor.bom_bunbury_uv_alert_0') == '##' -%}
            UV Today: No Data
            {%- elif states('sensor.bom_bunbury_uv_alert_0') != 'n/a' -%} 
            UV Today: {{ states('sensor.bom_bunbury_uv_alert_0') }}
            {%- elif states('sensor.bom_bunbury_uv_alert_1') == '##' -%}
            UV Tomorrow: No Data
            {%- else -%}
            UV Tomorrow: {{ states('sensor.bom_bunbury_uv_alert_1') }}
            {%- endif -%}

      bom_uv_alert_summary:
        value_template: >
            {%- if states('sensor.bom_bunbury_uv_alert_0') == '##' -%} 
            {% set val = 'No Data' %}
            {%- elif states('sensor.bom_bunbury_uv_alert_0') != 'n/a' -%} 
            {% set val = states('sensor.bom_bunbury_uv_alert_0').split('[')[1].split(']')[0] %}
            {%- elif states('sensor.bom_bunbury_uv_alert_1') == '##' -%} 
            {% set val = 'No Data' %}
            {%- elif states('sensor.bom_bunbury_uv_alert_1') != 'n/a' -%} 
            {% set val = states('sensor.bom_bunbury_uv_alert_1').split('[')[1].split(']')[0] %}
            {%- else -%}
            {%- set val = 'No Data' -%}
            {%- endif -%}
            {{ val | title }} 
          
      bom_fire_danger:
        value_template: >
            {%- if states('sensor.bom_bunbury_fire_danger_0') == '##' -%}
            Fire Danger Today: No Data
            {%- elif states('sensor.bom_bunbury_fire_danger_0') != 'n/a' -%} 
            Fire Danger Today: {{ states('sensor.bom_bunbury_fire_danger_0') }}
            {%- elif states('sensor.bom_bunbury_fire_danger_1') == '##' -%}
            Fire Danger Tomorrow: No Data
            {%- else -%}
            Fire Danger Tomorrow: {{ states('sensor.bom_bunbury_fire_danger_1') }}
            {%- endif -%}

      bom_fire_danger_summary:
        value_template: >
            {%- if states('sensor.bom_bunbury_fire_danger_0') == '##' -%}
            No Data
            {%- elif states('sensor.bom_bunbury_fire_danger_0') != 'n/a' -%} 
            {{ states('sensor.bom_bunbury_fire_danger_0') }}
            {%- elif states('sensor.bom_bunbury_fire_danger_1') == '##' -%}
            No Data
            {%- else -%}
            {{ states('sensor.bom_bunbury_fire_danger_1') }}
            {%- endif -%}

      bom_forecast_0:
        entity_id:
          - sensor.bom_today_max
          - sensor.bom_today_min
          - sensor.bom_bunbury_chance_of_rain_0
          - sensor.bom_bunbury_icon_0
        friendly_name: "Today"
        value_template: >
          {{states('sensor.bom_today_max')|round(0)}}°/{{states('sensor.bom_today_min')|round(0)}}°/{{states('sensor.bom_bunbury_chance_of_rain_0')|round(0)}}%
        entity_picture_template: >-
          {%- if states('sun.sun') == 'below_horizon' and (states('sensor.bom_bunbury_icon_0') == 'fog' or states('sensor.bom_bunbury_icon_0') == 'haze' or states('sensor.bom_bunbury_icon_0') == 'light-showers' or states('sensor.bom_bunbury_icon_0') == 'partly-cloudy' or states('sensor.bom_bunbury_icon_0') == 'showers') -%}
          {{ '/local/icons/bom_icons/' ~ states('sensor.bom_bunbury_icon_0') ~ '-night.png' }}
          {%- else -%}
          {{ '/local/icons/bom_icons/' ~ states('sensor.bom_bunbury_icon_0') ~ '.png' }}
          {%- endif -%}

      bom_forecast_1:
        entity_id:
          - sensor.bom_bunbury_max_temp_c_1
          - sensor.bom_bunbury_min_temp_c_1
          - sensor.bom_bunbury_chance_of_rain_1
          - sensor.bom_bunbury_icon_1
        friendly_name_template: >
          {%- set date = as_timestamp(now()) + (1 * 86400 ) -%}
          {{ date | timestamp_custom('Tomorrow (%-d/%-m)') }}
        value_template: >
          {{states('sensor.bom_bunbury_max_temp_c_1')|round(0)}}°/{{states('sensor.bom_bunbury_min_temp_c_1')|round(0)}}°/{{states('sensor.bom_bunbury_chance_of_rain_1')|round(0)}}%
        entity_picture_template: >-
          {{ '/local/icons/bom_icons/' ~ states('sensor.bom_bunbury_icon_1') ~ '.png' }}

      bom_forecast_2:
        entity_id:
          - sensor.bom_bunbury_max_temp_c_2
          - sensor.bom_bunbury_min_temp_c_2
          - sensor.bom_bunbury_chance_of_rain_2
          - sensor.bom_bunbury_icon_2
        friendly_name_template: >
          {%- set date = as_timestamp(now()) + (2 * 86400 ) -%}
          {{ date | timestamp_custom('%A (%-d/%-m)') }}
        value_template: >
          {{states('sensor.bom_bunbury_max_temp_c_2')|round(0)}}°/{{states('sensor.bom_bunbury_min_temp_c_2')|round(0)}}°/{{states('sensor.bom_bunbury_chance_of_rain_2')|round(0)}}%
        entity_picture_template: >-
          {{ '/local/icons/bom_icons/' ~ states('sensor.bom_bunbury_icon_2') ~ '.png' }}

      bom_forecast_3:
        entity_id:
          - sensor.bom_bunbury_max_temp_c_3
          - sensor.bom_bunbury_min_temp_c_3
          - sensor.bom_bunbury_chance_of_rain_3
          - sensor.bom_bunbury_icon_3
        friendly_name_template: >
          {%- set date = as_timestamp(now()) + (3 * 86400 ) -%}
          {{ date | timestamp_custom('%A (%-d/%-m)') }}
        value_template: >
          {{states('sensor.bom_bunbury_max_temp_c_3')|round(0)}}°/{{states('sensor.bom_bunbury_min_temp_c_3')|round(0)}}°/{{states('sensor.bom_bunbury_chance_of_rain_3')|round(0)}}%
        entity_picture_template: >-
          {{ '/local/icons/bom_icons/' ~ states('sensor.bom_bunbury_icon_3') ~ '.png' }}

      bom_forecast_4:
        entity_id:
          - sensor.bom_bunbury_max_temp_c_4
          - sensor.bom_bunbury_min_temp_c_4
          - sensor.bom_bunbury_chance_of_rain_4
          - sensor.bom_bunbury_icon_4
        friendly_name_template: >
          {%- set date = as_timestamp(now()) + (4 * 86400 ) -%}
          {{ date | timestamp_custom('%A (%-d/%-m)') }}
        value_template: >
          {{states('sensor.bom_bunbury_max_temp_c_4')|round(0)}}°/{{states('sensor.bom_bunbury_min_temp_c_4')|round(0)}}°/{{states('sensor.bom_bunbury_chance_of_rain_4')|round(0)}}%
        entity_picture_template: >-
          {{ '/local/icons/bom_icons/' ~ states('sensor.bom_bunbury_icon_4') ~ '.png' }}

      bom_forecast_5:
        entity_id:
          - sensor.bom_bunbury_max_temp_c_5
          - sensor.bom_bunbury_min_temp_c_5
          - sensor.bom_bunbury_chance_of_rain_5
          - sensor.bom_bunbury_icon_5
        friendly_name_template: >
          {%- set date = as_timestamp(now()) + (5 * 86400 ) -%}
          {{ date | timestamp_custom('%A (%-d/%-m)') }}
        value_template: >
          {{states('sensor.bom_bunbury_max_temp_c_5')|round(0)}}°/{{states('sensor.bom_bunbury_min_temp_c_5')|round(0)}}°/{{states('sensor.bom_bunbury_chance_of_rain_5')|round(0)}}%
        entity_picture_template: >-
          {{ '/local/icons/bom_icons/' ~ states('sensor.bom_bunbury_icon_5') ~ '.png' }}

      bom_forecast_6:
        entity_id:
          - sensor.bom_bunbury_max_temp_c_6
          - sensor.bom_bunbury_min_temp_c_6
          - sensor.bom_bunbury_chance_of_rain_6
          - sensor.bom_bunbury_icon_6
        friendly_name_template: >
          {%- set date = as_timestamp(now()) + (6 * 86400 ) -%}
          {{ date | timestamp_custom('%A (%-d/%-m)') }}
        value_template: >
          {{states('sensor.bom_bunbury_max_temp_c_6')|round(0)}}°/{{states('sensor.bom_bunbury_min_temp_c_6')|round(0)}}°/{{states('sensor.bom_bunbury_chance_of_rain_6')|round(0)}}%
        entity_picture_template: >-
          {{ '/local/icons/bom_icons/' ~ states('sensor.bom_bunbury_icon_6') ~ '.png' }}

      bom_today_max:
        entity_id:
          - sensor.bom_bunbury_max_temp_c_0
          - sensor.today_temp_bom
        value_template: >
          {%- if states('sensor.bom_bunbury_max_temp_c_0') == 'n/a' -%} 
            {{ state_attr('sensor.today_temp_bom', 'max_value') }}
          {% else %}
            {{ states('sensor.bom_bunbury_max_temp_c_0') }}
          {% endif %}

      bom_today_min:
        entity_id:
          - sensor.bom_bunbury_min_temp_c_0
          - sensor.today_temp_bom
        value_template: >
          {%- if states('sensor.bom_bunbury_min_temp_c_0') == 'n/a' -%} 
            {{ state_attr('sensor.today_temp_bom', 'min_value') }}
          {% else %}
            {{ states('sensor.bom_bunbury_min_temp_c_0') }}
          {% endif %}

  - platform: statistics
    name: today_temp_bom
    sampling_size: 150
    entity_id: sensor.bom_bunbury_air_temp_c
    max_age:
      hours: 24

automation:
- alias: 'Update BOM Icons'
  trigger:
    - event: start
      platform: homeassistant
    - entity_id: sun.sun
      platform: state
      to: 'above_horizon'
    - entity_id: sun.sun
      platform: state
      to: 'below_horizon'
  action:
    - service: homeassistant.update_entity
      entity_id: sensor.bom_forecast_0, sensor.bom_forecast_1, sensor.bom_forecast_2, sensor.bom_forecast_3, sensor.bom_forecast_4, sensor.bom_forecast_5, sensor.bom_forecast_6

Not in chrome… in Home Assistant - Developer side panel and states…
What is the state of al those entities?

Sorry I’m new to HASS.

So the state is the same for all entities hence the icon displayed is the same as well.

I see that partly cloudy and mostly sunny is the same icon.

Yes it is but the FTP component is reporting the state for all of them as Partly Cloudy… The card is displaying as I would expect.

Hi David, is there any way to make 5 day forecast have day icons all the time as i believe that this is the next days forecast not night?
weather card
Kind Regards,
Simon

It would be a huge undertaking to do that. It currently determines if it’s day or night and then sets all the icons for that if they have a night version. There’s little gain in the major rewrite for that. If you want you could copy the day version of the icon over the night one and then it would always use the day icons.

I thought as much. Thanks.

Pushed a new release that will do hybrid icons (a mix of old and new ones). Uses the old icons for everything except fog, haze, dust and windy where it will use the new ones.
If the old_icon flag isn’t specified it will default to true.
I have been testing this on a new dashboard for a few weeks.

I am having the same errors as above, but the downside is i am not running pihole. I am assuming you didn’t keep running without it. What port did you have to open up? i will have to see what i have that is blocking it.

Cheers,
Ben

Hi David, have you noticed that ios13.4 seems to have stopped svg files from animating?

Same issue with Bram’s card.

Yeah I have. I thought HA might have changed something a few versions back.
Also 0.109 needs some css modifications… I’ll post about that tomorrow.

1 Like

It is caused by iOS 13.4 My wife’s iPhone 6 is stuck back on iOS 12 and it is working fine with the icons. Damn!

Here are my changes to config for 0.109.x

            temp_top_margin: 0px            #default 0px px or em Note: pre-0.109.x default was -0.3em
            temp_uom_top_margin: -12px      #default -12px px or em Note: pre-0.109.x default was -9px
            large_icon_top_margin: -3.2em   #default -3.2em px or em Note: pre-0.109.x default was -3.5em

I will be updating the lovelace.yaml example in my repo AND also the card defaults so if you are using pre 0.109 make sure you have configured those settings otherwise the defaults from the card will apply.

NOTE: OLD SETTINGS look like this:


NEW Settings look like this:

2 Likes

also this… from v 0.65
image

OK WTF… my icons in the iOS app have started animating again!!! (New iOS beta today iOS 13.5)