Bird clock automation and random mp3 question

Hi all,
I want to share a little fun project and at the same time ask for a little help improving it.

On the market you can find “bird clocks”, normally these are wall mounted analog clocks that play a bird song sound every full hour.
Now I like the idea because I like the sound of birds singing but I don’t want to have a digital clock with rather poor design in my house.

So I created a simple automation that plays a pre defined bird mp3 every full hour during the day.
At the moment I have set individual mp3s for each hour but actually I would like to just play one random mp3 instead. I have not managed to find the right syntax for that.
The mp3s are all sitting in a subfolder of Home Assistant’s media folder.

I am making use of the folder integration and in theory everything works but I cannot seem to get the random folder syntax correct.

In the developer tools I have tested this:

"{{ '/media/birds/' ~ (state_attr('sensor.birds', 'file_list') | random) }}"

and it actually produces random songs as output. However, this does not seem to work in the automation. Any idea why?

Maybe someone has got a suggestion?

Here is the code of the original automation with individual songs assigned:

alias: "Media Player: Bird clock"
description: ""
triggers:
  - trigger: time
    at: "07:00:00"
    id: "07:00"
  - trigger: time
    at: "08:00:00"
    id: "08:00"
  - trigger: time
    at: "09:00:00"
    id: "09:00"
  - trigger: time
    at: "10:00:00"
    id: "10:00"
  - trigger: time
    at: "11:00:00"
    id: "11:00"
  - trigger: time
    at: "12:00:00"
    id: "12:00"
  - trigger: time
    at: "13:00:00"
    id: "13:00"
  - trigger: time
    at: "14:00:00"
    id: "14:00"
  - trigger: time
    at: "15:00:00"
    id: "15:00"
  - trigger: time
    at: "16:00:00"
    id: "16:00"
  - trigger: time
    at: "17:00:00"
    id: "17:00"
  - trigger: time
    at: "18:00:00"
    id: "18:00"
  - trigger: time
    at: "19:00:00"
    id: "19:00"
  - trigger: time
    at: "20:00:00"
    id: "20:00"
  - trigger: time
    at: "21:00:00"
    id: "21:00"
  - trigger: time
    at: "22:00:00"
    id: "22:00"
  - trigger: time
    at: "23:00:00"
    id: "23:00"
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "12:00"
        sequence:
          - action: media_player.play_media
            target:
              entity_id: media_player.ess_und_wohn
            data:
              media_content_id: >-
                media-source://media_source/local/birds/12 -
                Gartenrotschwanz.mp3
              media_content_type: audio/mpeg
            metadata:
              title: 12 - Gartenrotschwanz.mp3
              thumbnail: null
              media_class: music
              children_media_class: null
              navigateIds:
                - {}
                - media_content_type: app
                  media_content_id: media-source://media_source
                - media_content_type: ""
                  media_content_id: media-source://media_source/local/birds
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "13:00"
        sequence:
          - action: media_player.play_media
            target:
              entity_id: media_player.ess_und_wohn
            data:
              media_content_id: media-source://media_source/local/birds/17 - Amsel.mp3
              media_content_type: audio/mpeg
            metadata:
              title: 17 - Amsel.mp3
              thumbnail: null
              media_class: music
              children_media_class: null
              navigateIds:
                - {}
                - media_content_type: app
                  media_content_id: media-source://media_source
                - media_content_type: ""
                  media_content_id: media-source://media_source/local/birds
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "14:00"
        sequence:
          - action: media_player.play_media
            target:
              entity_id: media_player.ess_und_wohn
            data:
              media_content_id: media-source://media_source/local/birds/17 - Rotkehlchen.mp3
              media_content_type: audio/mpeg
            metadata:
              title: 17 - Rotkehlchen.mp3
              thumbnail: null
              media_class: music
              children_media_class: null
              navigateIds:
                - {}
                - media_content_type: app
                  media_content_id: media-source://media_source
                - media_content_type: ""
                  media_content_id: media-source://media_source/local/birds
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "15:00"
        sequence:
          - action: media_player.play_media
            target:
              entity_id: media_player.ess_und_wohn
            data:
              media_content_id: media-source://media_source/local/birds/15 - Rauchschwalbe.mp3
              media_content_type: audio/mpeg
            metadata:
              title: 15 - Rauchschwalbe.mp3
              thumbnail: null
              media_class: music
              children_media_class: null
              navigateIds:
                - {}
                - media_content_type: app
                  media_content_id: media-source://media_source
                - media_content_type: ""
                  media_content_id: media-source://media_source/local/birds
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "16:00"
        sequence:
          - action: media_player.play_media
            target:
              entity_id: media_player.ess_und_wohn
            data:
              media_content_id: media-source://media_source/local/birds/18 - Blackcap.mp3
              media_content_type: audio/mpeg
            metadata:
              title: 18 - Blackcap.mp3
              thumbnail: null
              media_class: music
              children_media_class: null
              navigateIds:
                - {}
                - media_content_type: app
                  media_content_id: media-source://media_source
                - media_content_type: ""
                  media_content_id: media-source://media_source/local/birds
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "17:00"
        sequence:
          - action: media_player.play_media
            target:
              entity_id: media_player.ess_und_wohn
            data:
              media_content_id: media-source://media_source/local/birds/17 - Goldammer.mp3
              media_content_type: audio/mpeg
            metadata:
              title: 17 - Goldammer.mp3
              thumbnail: null
              media_class: music
              children_media_class: null
              navigateIds:
                - {}
                - media_content_type: app
                  media_content_id: media-source://media_source
                - media_content_type: ""
                  media_content_id: media-source://media_source/local/birds
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "18:00"
        sequence:
          - action: media_player.play_media
            target:
              entity_id: media_player.ess_und_wohn
            data:
              media_content_id: media-source://media_source/local/birds/18 - Zaunkönig.mp3
              media_content_type: audio/mpeg
            metadata:
              title: 18 - Zaunkönig.mp3
              thumbnail: null
              media_class: music
              children_media_class: null
              navigateIds:
                - {}
                - media_content_type: app
                  media_content_id: media-source://media_source
                - media_content_type: ""
                  media_content_id: media-source://media_source/local/birds
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "19:00"
        sequence:
          - action: media_player.play_media
            target:
              entity_id: media_player.ess_und_wohn
            data:
              media_content_id: media-source://media_source/local/birds/19 - Blaumeise.mp3
              media_content_type: audio/mpeg
            metadata:
              title: 19 - Blaumeise.mp3
              thumbnail: null
              media_class: music
              children_media_class: null
              navigateIds:
                - {}
                - media_content_type: app
                  media_content_id: media-source://media_source
                - media_content_type: ""
                  media_content_id: media-source://media_source/local/birds
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "20:00"
        sequence:
          - action: media_player.play_media
            target:
              entity_id: media_player.ess_und_wohn
            data:
              media_content_id: media-source://media_source/local/birds/20 - Fitis.mp3
              media_content_type: audio/mpeg
            metadata:
              title: 20 - Fitis.mp3
              thumbnail: null
              media_class: music
              children_media_class: null
              navigateIds:
                - {}
                - media_content_type: app
                  media_content_id: media-source://media_source
                - media_content_type: ""
                  media_content_id: media-source://media_source/local/birds
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "21:00"
        sequence:
          - action: media_player.play_media
            target:
              entity_id: media_player.ess_und_wohn
            data:
              media_content_id: media-source://media_source/local/birds/19 - Zilpzalp.mp3
              media_content_type: audio/mpeg
            metadata:
              title: 19 - Zilpzalp.mp3
              thumbnail: null
              media_class: music
              children_media_class: null
              navigateIds:
                - {}
                - media_content_type: app
                  media_content_id: media-source://media_source
                - media_content_type: ""
                  media_content_id: media-source://media_source/local/birds
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "22:00"
        sequence:
          - action: media_player.play_media
            target:
              entity_id: media_player.ess_und_wohn
            data:
              media_content_id: media-source://media_source/local/birds/20 - Fitis.mp3
              media_content_type: audio/mpeg
            metadata:
              title: 20 - Fitis.mp3
              thumbnail: null
              media_class: music
              children_media_class: null
              navigateIds:
                - {}
                - media_content_type: app
                  media_content_id: media-source://media_source
                - media_content_type: ""
                  media_content_id: media-source://media_source/local/birds
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "23:00"
        sequence:
          - action: media_player.play_media
            target:
              entity_id: media_player.ess_und_wohn
            data:
              media_content_id: media-source://media_source/local/birds/20 - Grünfink.mp3
              media_content_type: audio/mpeg
            metadata:
              title: 20 - Grünfink.mp3
              thumbnail: null
              media_class: music
              children_media_class: null
              navigateIds:
                - {}
                - media_content_type: app
                  media_content_id: media-source://media_source
                - media_content_type: ""
                  media_content_id: media-source://media_source/local/birds
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "07:00"
        sequence:
          - action: media_player.play_media
            target:
              entity_id: media_player.ess_und_wohn
            data:
              media_content_id: media-source://media_source/local/birds/20 - Kohlmeise.mp3
              media_content_type: audio/mpeg
            metadata:
              title: 20 - Kohlmeise.mp3
              thumbnail: null
              media_class: music
              children_media_class: null
              navigateIds:
                - {}
                - media_content_type: app
                  media_content_id: media-source://media_source
                - media_content_type: ""
                  media_content_id: media-source://media_source/local/birds
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "08:00"
        sequence:
          - action: media_player.play_media
            target:
              entity_id: media_player.ess_und_wohn
            data:
              media_content_id: media-source://media_source/local/birds/20 - Stieglitz.mp3
              media_content_type: audio/mpeg
            metadata:
              title: 20 - Stieglitz.mp3
              thumbnail: null
              media_class: music
              children_media_class: null
              navigateIds:
                - {}
                - media_content_type: app
                  media_content_id: media-source://media_source
                - media_content_type: ""
                  media_content_id: media-source://media_source/local/birds
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "09:00"
        sequence:
          - action: media_player.play_media
            target:
              entity_id: media_player.ess_und_wohn
            data:
              media_content_id: media-source://media_source/local/birds/21 - Buchfink.mp3
              media_content_type: audio/mpeg
            metadata:
              title: 21 - Buchfink.mp3
              thumbnail: null
              media_class: music
              children_media_class: null
              navigateIds:
                - {}
                - media_content_type: app
                  media_content_id: media-source://media_source
                - media_content_type: ""
                  media_content_id: media-source://media_source/local/birds
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "10:00"
        sequence:
          - action: media_player.play_media
            target:
              entity_id: media_player.ess_und_wohn
            data:
              media_content_id: media-source://media_source/local/birds/21 - Star.mp3
              media_content_type: audio/mpeg
            metadata:
              title: 21 - Star.mp3
              thumbnail: null
              media_class: music
              children_media_class: null
              navigateIds:
                - {}
                - media_content_type: app
                  media_content_id: media-source://media_source
                - media_content_type: ""
                  media_content_id: media-source://media_source/local/birds
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "11:00"
        sequence:
          - action: media_player.play_media
            target:
              entity_id: media_player.ess_und_wohn
            data:
              media_content_id: media-source://media_source/local/birds/17 - Amsel.mp3
              media_content_type: audio/mpeg
            metadata:
              title: 17 - Amsel.mp3
              thumbnail: null
              media_class: music
              children_media_class: null
              navigateIds:
                - {}
                - media_content_type: app
                  media_content_id: media-source://media_source
                - media_content_type: ""
                  media_content_id: media-source://media_source/local/birds
mode: single

Thanks and regards,

Merc

OK,
finally with the help of ChatGPT I managed to get it working.

With this code in the action part, it plays a random song out of the selected folder:

actions:
  - target:
      entity_id: media_player.wohnzimmer
    data:
      media_content_id: |-
        {% set files = state_attr('sensor.birds', 'file_list') %} {% if files %}
          {% set song = files | random %}
          {% set filename = song.split('/')[-1] %}
          media-source://media_source/local/birds/{{ filename }}
        {% endif %}
      media_content_type: audio/mpeg
    action: media_player.play_media

If you prefer each hour having it’s designated sound, instead of using random you could use select to search the file name string for the hour:

actions:
  - action: media_player.play_media
    target:
      entity_id: media_player.wohnzimmer
    data:
      media_content_id: |-
        {% if files %}
          {% set song = files | select('search', now().hour|string)|first %}
          {% set filename = song.split('/')[-1] %}
          media-source://media_source/local/birds/{{ filename }}
        {% endif %}
      media_content_type: audio/mpeg