Nowa integracja - AirMusic

Stworzyłem nową integrację do radia internetowego korzystającego z aplikacji AirMusic.

https://github.com/DominikWrobel/airmusic

Przetestowane radia:
Oakcastle IR100
Majority Pembroke
Ferguson i300

Powinno działać z:
Dabman i450
Lenco DIR150BK
Majority Kings Internet DAB+ Radio
Conrad’s renkforce IR 1
Kruger&Matz KM0816
Sharp DR-I470

lub każdym innym radiem używającym apki AirMusic na android lub iOS.

Zapraszam do testowania i proszę o cierpliwość bo to moje pierwsze próby z pythonem i ogólnie kodowaniem :rofl:

Wersja 1.2!

Co działa:

  • Informacja o stanie urządzenia, wył, wł, bufforowanie itd.
  • Odczyt ulubionych stacji internetowych i ich wybór.
  • Informacja o nadawanym programie i audycji.
  • Regulacja głośności, wyciszenia
  • Zmiana stacji radiowych
  • Działa z radiami z szyfrowaną komunikacją oraz z wieloma odbiornikami
  • Podczas ustawiania integracji radio otrzyma komendę INIT
  • Loga stacji i albumy są wyświetlane w karcie
  • Unique ID dla każdego radia
  • Ustawienie integracji poprzez interfejs graficzny
  • :next_track_button: z mapowany do następna ulubiona stacja

Znane ograniczenia:

  • Działa poprawnie tylko w trybie radia internetowego.
  • Informacje o audycji oraz grafiki z logo i albumem mogą się pojawiać z opóźnieniem do 10s. Limit odpytywania radia został wprowadzony aby odbiornik radiowy się nie zawiesił.

1
album

Jeśli chcesz mnie wesprzeć kup mi kawę:

2 polubienia

Jedna uwaga - myślę, że powinieneś mieć na repo plik hacs.json a nie hacks.json
(choć być może jest to bez wpływu na działanie)

W instrukcji ręcznej instalacji nie powinno być enigma (to na 100%, bo nie daj boże ktoś ma zainstalowaną enigmę to sobie ją rozwali), czyli drzewko powinno być takie

custom_components
├── airmusic
│   ├── __init__.py
│   ├── media_player.py
│   ├── manifest.json
│   └── airmusicapi.py
1 polubienie

Dzięki wielkie, już poprawione, tak byłem zajęty kodem że te rzeczy przeoczyłem.

Edycja:
Ogólnie to mam jeden problem z tą integracją, przez który chyba osiwieję (bardziej :rofl:) mam dwa radia które korzystają z tej integracji, oba mają logo aktualnie odbieranej stacji pod adresem http://IP:8080/playlogo.jpg, ale jedno radio ma szyfrowaną transmisję, a drugie nie, no i chcę aby to logo się wyświetlało i aktualizowało przy zmianie stacji w HA, więc z takim kodem:

            if reference == '6':
                response = await self.hass.async_add_executor_job(
                    requests.get,
                    'http://' + self._host + ':' + str(self._port) + '/playlogo.jpg',
                    {'auth': HTTPBasicAuth('su3g4go6sk7', 'ji39454xu/^')}
                )
                self._image_url = response.url
            else:
                self._image_url = None

Logo się wyświetla i aktualizuje ale tylko dla radia bez auth!
A z takim kodem:


            if reference == '6':
                response = await self.hass.async_add_executor_job(
                    requests.get,
                    'http://su3g4go6sk7:ji39454xu%2F%5E@' + self._host + ':' + str(self._port) + '/playlogo.jpg'
                )
                self._image_url = response.url
            else:
                self._image_url = None

Logo się wyświetla w obu odbiornikach, ale się nie aktualizuje przy zmianie stacji Ma ktoś jakieś pomysły?

Hello :slightly_smiling_face:

Thank you for sharing the link to your new integration for internet radio using the AirMusic application! It looks like a fantastic initiative; especially since you’ve tested it with Oakcastle IR100 and Majority Pembroke radios.

I am excited to see that it should also work with several other models like Dabman i450 and Sharp DR-I470.

Thank you

2 polubienia

Wersja 0.4 już dostępna:

  • działają loga stacji radiowych!
  • trochę porządków w kodzie
  • ta integracja działa tylko jeśli radio jest trybie radia internetowego.

Wersja 0.4a dostępna:

  • radia mają unique_id w Home Assistant

Jest już wersja 0.9 :rofl:
Ogólnie dużo zmian w otrzymywanym info od radia, oprócz loga jeśli stacja nadaje będzie wyświetlane zdjęcie albumu:

album

Ogólnie całość powinna działać znacznie stabilniej, ograniczyłem liczbę zapytań do radia aby go nie zawiesić, przy czym podczas testów nie zauważyłem aby spowolniło reakcję na zmiany w HA. Do wersji 1.0 brakuje chyba tylko config_flow.

V1.0 wydana, dodawanie radia poprzez system i urządzenia i usługi!

v1.6 już jest, poprzez media_browser i radio browser można słuchać stacji z całego świata bez konieczności wyszukiwania ich w radiu lub apce!

v1.7 możliwość przesyłania lokalnych plików mp3 przez DLNA server do radia, powinno też działać z Music Assistant! Te funkcje są w fazie eksperymentalnej.

2 polubienia

Dodaj nową ulubioną stację:

Dodaj skrypt, nową linię shell_command i pomocników aby łatwo i szybko dodać nową stację radiową do listy ulubionych!

Utwórz trzy pomocniki:

  • input_select nazwane Radio IP i dodaj IP swoich odbiorników (jeśli masz jedno radio Airmusic można pominąć)
  • imput_text nazwane Station Name
  • input_text nazwane Station URL

Dodaj nowe shell_command do configuration.yaml:

shell_command:
  add_radio_station: >
    curl -H 'Authorization: Basic c3UzZzRnbzZzazc6amkzOTQ1NHh1L14=' 
    'http://{{ states("input_select.radio_ip") }}/AddRadioStation?name={{ states("input_text.station_name") | urlencode }}&url={{ states("input_text.station_url") | urlencode }}'

Jeśli masz jedno radio to zamień to {{ states(“input_select.radio_ip”) }} na IP radia.

Dodaj nowy skrypt i wklej to:

alias: Add new station
sequence:
  - service: shell_command.add_radio_station
    data: {}
  - service: persistent_notification.create
    data:
      title: Radio Station Added
      message: >
        Added station "{{ states("input_text.station_name") }}"  with URL "{{
        states("input_text.station_url") }}"  to radio at {{
        states("input_select.radio_ip") }}
description: ""
icon: mdi:radio

Restart Home Assistanta. Potem dodaj to do dashboardu. Jeśli masz jedno radio pomiń część z input_select

type: entities
entities:
  - entity: input_select.radio_ip
  - entity: input_text.station_name
  - entity: input_text.station_url
  - entity: script.add_new_station

nowa

Wypełnij wszystkie pola, naciśnij uruchom i dostaniesz powiadomienie że nowa stacja została dodana. Aby pojawiła się w polu wyboru w karcie media_player musisz załadować ponownie integracje Airmusic.