Mini Media Player - Radio

Witam serdecznie.
Szukam od jakiegoś czasu w necie jak zrobić radio w Mini Media Player takie jak na screenach, tzn. z taką rozwijaną listą stacji (strzałka obok przycisku power) i nie mogę znaleść żadnego tropu, może ma ktoś jakiś pomysł?

Ekspertem nie jestem, ale wydaje mi się, że zależne to będzie od tego na czym chcesz grać (platformy).
Moje głośniczki oparte są na Linkplay i wygląda to tak.

media2

media

Aby była rozwijana lista konfiguracja musi zawierać “sources:”

media_player:
  - platform: linkplay
    host: 192.168.xxx.xxx
    name: Sound Salon
    icecast_metadata: 'StationNameSongTitle'
#    multiroom_wifidirect: False
    sources: 
      { 'http://stream.radioagora.pl/tuba10-1.mp3.m3u' : 'TOKFM',
        'http://stream.rcs.revma.com/ypqt40u0x1zuv' : 'MANN',
        'http://31.192.216.4/rmf_classic_nt' : 'RMFClassic',
        'http://stream10.radioagora.pl/tuba139-1.mp3.m3u' : 'Pogoda',
        'http://stream.radioagora.pl/tuba9006-1.mp3.m3u' : 'RockRadio',
        'http://ant-waw-01.cdn.eurozet.pl:8602/': 'AntyRadio',
        'optical': 'TV sound', 
        'line-in': 'Radio tuner', 
        'bluetooth': 'Bluetooth',
        'udisk': 'USB stick'
       } 

Tyle mogę pomóc, może Cię naprowadzi.

Też się nie znam, ale gdybyś podał linka źródłowego (a nie gołego screenshota) może to by było do znalezienia w tym co autor filmiku udostępnia.

Moim zdaniem musisz sobie zbudować odpowiednią encję media playera mającą listę stacji jako atrybut source_list: w postaci listy.

Dobrze :slightly_smiling_face:
Ja skleciłem to z tych dwóch linków:

:smiley: prośba była do OPa tematu, ale @RobinI30 dzięki, niestety to rozwiązanie bezpośrednio nie zadziała ze sprzętem innym niż zgodnym z LinkPlay.

Właśnie sam się zorientowałem :face_with_hand_over_mouth: … no cóż nie zaszkodzi.

Znam gościa z zrzutu
13 minuta

No to już wiemy, że mówi o łatwym dostępie do playlist, a sprzęt to Sonos (jakby co, to Ikea sprzedaje graty w ich technologii - seria Symfonisk bodajże).

Przepraszam nie dałem linka, ponieważ w filmie nie było żadnych informacji jak to zrobił. Oglądałem inne jego filmy i w żadnym nie ma nic na ten temat. Ja mam głośniczki google home mini. Spróbuję poszukać tropami jakie podaliście.

Również szukałem fajnego rozwiązania z radiem i znalazłem coś takiego. Jestem początkujący, więc opiszę łopatologicznie rozwiązanie jakie zastosowałem u siebie. Niestety, nie mam pojęcia jak to wstawić, żeby były zachowanie wcięcia itp., dlatego załączam plik.

Obsługuje 3 głośniki, w tym 2 google mini. Do tego w NR automatyzacja, która włącza radio w kuchni w chwili kiedy dzwoni budzi w telefonie (znalezione na tu na forum).

W katalogu “config” utworzyłem podkatalog “packages” w nim plik: chromecast_radio.yaml

input_select:
  radio_station:
    name: 'Wybór stacji:'
    options:
      - Radio Plus
      - Radio Zet
      - Radio RMF FM
      - Radio Olsztyn
      - Radio Gdańsk
      - Melo Radio
      - Anty Radio
      - Radio Pik
      - Program 1
      - Program 2
      - Program 3
    initial: Radio Plus
    icon: mdi:radio

    

  chromecast_radio:
    name: 'Wybór głośnika:'
    options:
      - Kuchnia
      - Sypialnia
      - Salon
    initial: Kuchnia
    icon: mdi:speaker-wireless

input_number: 
  volume_radio:
    name: 'Głośność'
    icon: mdi:volume-high
    initial: 0.3
    min: 0
    max: 1
    step: 0.05
  
automation:
  - alias: 'Wybierz stację'
    trigger:
      - platform: state
        entity_id: input_select.radio_station
    action: 
      - service: script.radio

  - alias: 'Ustaw głośność'
    trigger:
      platform: state
      entity_id: input_number.volume_radio
    action:
      service: media_player.volume_set
      data_template:
        entity_id: >
          {% if is_state("input_select.chromecast_radio", "Kuchnia") %} media_player.googlehome6593
          {% elif is_state("input_select.chromecast_radio", "Sypialnia") %} media_player.glosnik_w_sypialni
          {% elif is_state("input_select.chromecast_radio", "Salon") %} media_player.play_fi_device_27d0b6
          {% endif %}
        volume_level: '{{  states.input_number.volume_radio.state  }}'


script:

  radio_play:
    alias: ''
    sequence:
    - service: media_player.volume_set
      data_template:
        entity_id: >
          {% if is_state("input_select.chromecast_radio", "Kuchnia") %} media_player.googlehome6593
          {% elif is_state("input_select.chromecast_radio", "Sypialnia") %} media_player.glosnik_w_sypialni
          {% elif is_state("input_select.chromecast_radio", "Salon") %} media_player.play_fi_device_27d0b6
          {% endif %}
        volume_level: '{{  states.input_number.volume_radio.state  }}' 
    - service: media_player.play_media
      data_template:
        entity_id: >
          {% if is_state("input_select.chromecast_radio", "Kuchnia") %} media_player.googlehome6593
          {% elif is_state("input_select.chromecast_radio", "Sypialnia") %} media_player.glosnik_w_sypialni
          {% elif is_state("input_select.chromecast_radio", "Salon") %} media_player.play_fi_device_27d0b6
          {% endif %}
        media_content_id: >
          {% if is_state("input_select.radio_station", "Radio Plus") %} https://ext03.ic.smcdn.pl/4130-1.mp3
          {% elif is_state("input_select.radio_station", "Radio Zet") %} https://zt.cdn.eurozet.pl/zet-net.mp3
          {% elif is_state("input_select.radio_station", "Radio RMF FM") %} https://rs101-krk-cyfronet.rmfstream.pl/rmf_fm
          {% elif is_state("input_select.radio_station", "Radio Olsztyn") %} http://rostr1.radioolsztyn.pl:8010/RO.mp3
          {% elif is_state("input_select.radio_station", "Radio Gdańsk") %} http://stream.task.gda.pl:8000/rg1
          {% elif is_state("input_select.radio_station", "Melo Radio") %} http://ml.cdn.eurozet.pl/mel-ols.mp3
          {% elif is_state("input_select.radio_station", "Anty Radio") %} http://an01.cdn.eurozet.pl/ant-waw.mp3
          {% elif is_state("input_select.radio_station", "Radio Pik") %} http://stream.radiopik.pl:9004/
          {% elif is_state("input_select.radio_station", "Program 1") %} http://stream3.polskieradio.pl:8900/
          {% elif is_state("input_select.radio_station", "Program 2") %} http://stream3.polskieradio.pl:8902/
          {% elif is_state("input_select.radio_station", "Program 3") %} http://stream3.polskieradio.pl:8904/
          {% endif %}
        media_content_type: 'audio/mp4'
  radio_stop:
    alias: ''
    sequence:
    - service: media_player.turn_off
      data_template:
        entity_id: >
          {% if is_state("input_select.chromecast_radio", "Kuchnia") %} media_player.googlehome6593
          {% elif is_state("input_select.chromecast_radio", "Sypialnia") %} media_player.glosnik_w_sypialni
          {% elif is_state("input_select.chromecast_radio", "Salon") %} media_player.play_fi_device_27d0b6
          {% endif %}

Następnie w configuration.yaml dodaj

  packages: !include_dir_named packages

Konfiguracja karty encje

entities:
  - entity: input_select.radio_station
  - entity: input_select.chromecast_radio
  - entity: input_number.volume_radio
  - entity: script.radio_play
    icon: mdi:play
  - entity: script.radio_stop
    icon: mdi:stop
header:
  image: /local/images/radio.jpeg
  type: picture
show_header_toggle: false
type: entities

chromecast_radio.yaml (4,2 KB)

3 polubienia

Sprawdź czy dobrze poprawiłem Twojego posta.
Przed kodem (i po) dodatkowa linia z trzema odwrotnymi apostrofami (to ten znaczek spod klawisza tyldy, swoją drogą to takie samo formatowanie jak na githubie) ```

1 polubienie

Poległem na tym i przy sprawdzaniu konfiguracji przed restartem serwera wyskakuje mi: Integration error: packages - Integration ‘packages’ not found.

To nie może być byle gdzie

Umieść wpis we właściwym miejscu

Przeczytaj dokladny opis na forum Package w Home Assistant.

@Tomis, ciekawe rozwiązanie, widzę potencjał w innych zastosowaniach - wybór urządzenia + funkcja.
Zawsze nie wiedziałem jak rozwiązać integrację wielu urządzeń z podobnymi funkcjami, aby nie powielać wszystkiego wielokrotnie. Szczelnie w multimediach i głowicach termostatycznych się to przyda. :+1: