number:
  - platform: template
    name: "Speaker Number"
    id: my_number
    optimistic: true
    min_value: 0
    max_value: 100
    step: 1

esphome:
  on_boot:
    then:
      - speaker.mute_on:
          id: speaker_id
      - speaker.mute_off:
          id: speaker_id
      - if:
          condition:
            speaker.is_stopped:
              id: speaker_id
          then:
            - speaker.play:
                id: speaker_id
                data: [0, 1, 2, 3]
      - speaker.volume_set:
          id: speaker_id
          volume: 0.9
      - if:
          condition:
            speaker.is_playing:
              id: speaker_id
          then:
            - speaker.finish:
                id: speaker_id
      - speaker.stop:
          id: speaker_id

button:
  - platform: template
    name: "Speaker Button"
    on_press:
      then:
        - speaker.play:
            id: speaker_id
            data: [0x10, 0x20, 0x30, 0x40]
        - speaker.play:
            id: speaker_id
            data: !lambda |-
              return {0x01, 0x02, (uint8_t)id(my_number).state};

i2s_audio:
  i2s_lrclk_pin: ${i2s_bclk_pin}
  i2s_bclk_pin: ${i2s_lrclk_pin}
  i2s_mclk_pin: ${i2s_mclk_pin}

speaker:
  - platform: i2s_audio
    id: speaker_id
    dac_type: external
    i2s_dout_pin: ${i2s_dout_pin}
