Media w Home Assistant

Jak wiadomo, HA można wykorzystać jako lokalne źródło plików, które mogą być później wykorzystywane w procesach powiadamiania np. odtworzenie pliku dzwonka po naciśnieciu przycisku dzwonkowego. Na początku należy taki plik (bell_dingdong.mp3) umieścić w lokalizacji /config/www/, np. za pomocą Samby:
image

odtworzenie takiego pliku (np. na głośniku Google Nest Mini - kitchen_speaker) wygląda wtedy tak:

service: media_player.play_media
entity_id: media_player.kitchen_speaker  
data:
  media_content_id: 'http://192.168.22.12:8123/local/bell_dingdong.mp3'
  media_content_type: music

Jak widać następuje mapowanie fizycznego katalog /config/www/ na local w ścieżce URL do naszego HA - http://192.168.22.12:8123/local. Przy poprawnej konfiguracji HA, można korzystać z nazw domenowych - http://homeassistant.local:8123/local/bell_dingdong.mp3, http://moj-ha.duckdns.org/local/bell_dingdong.mp3.

Największą wadą takiego rozwiązania (ciekawe ilu z Was zdawało sobie z tego sprawę) jest ogólny dostęp do tak wgranych plików, tzn. każdy może z takiego pliku skorzystać nie będąc zalogowanych w HA czyli mogę odtworzyć/pobrać taki plik https://xxxxxxx.duckdns.org/local/audio/Doorbell.mp3 (celowo faktyczna domena została zastąpiona “iksami”).

8 Likes

W wersji 0.115 pojawił się Odtwarzacz mediów (Media browser)

dzięki któremu dostęp do plików HA wymaga autentykacji (Media Source - Home Assistant):
Files served from media are protected by Home Assistant authentication unlike those served from www .
Pojawił się nowy sposób odwoływania się do plików w katalogu /media, w którym odtwarzacz mediów domyślnie szuka multimediów:


Pliki do katalogu /media również można skopiować za pomocą Samby.

Aby odtworzyć multimedia należy schematu uri media-source://media_source/<media_dir>/<path>, domyślna wartość media_dir to local:

service: media_player.play_media
entity_id: media_player.kitchen_speaker
data:
  media_content_id: 'media-source://media_source/local/doberman.mp3'
  media_content_type: music

Tym razem następuje mapowanie fizycznego katalogu /media na media/local w ścieżce URL do naszego HA ale uwaga!: początek URL jest brany ze zmiennej “Publiczny adres URL”:

image

Widać to dokładnie w encji głośnika:

Dodatkowo pojawia się autentyfikacja - ?authSig= - przy dostępie do zasobu, której nie ma przy dostępie do www.

Dla:
image
wywołanie:

service: media_player.play_media
entity_id: media_player.kitchen_speaker
data:
  media_content_id: 'media-source://media_source/local/doberman.mp3'
  media_content_type: music

spowoduje odtworzenie z URLa:

media_content_id: >-
  https://moj-ha.duckdns.org/media/localdoberman.mp3?authSig=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1

Nie ukrywam, że jest to trochę zagmatwane, można się pogubić co oznaczają i na co wskazują terminy: media i local.

3 Likes

Oprócz odczytu z katalogu /media, można także zapisywać pliki do tego katalogu, np. snapshoty z kamery IP. Jako kamerę wykorzystałem telefon komórkowy Android z zainstalowaną aplikacją IP Webcam, dzięki czemu integracja z HA (https://www.home-assistant.io/integrations/android_ip_webcam/) jest bardzo prosta i sprowadza się do dodania wpisu:

# Example configuration.yaml entry
android_ip_webcam:
  - host: 192.168.1.10 # adres IP telefonu z uruchomioną aplikacją IP Webcam)

Do testowania wszelkich usług (service) w HA korzystam z fukcjonalności zakładki Usługi w menu Narzędzia deweloperskie w menu HA, poniżej omawiany przykład:

Możesz dodać do nazwy pliku z kamery czas wykonania zdjęcia, w tym celu trzeba przejść do trybu YAML, przykład konfiguracji poniżej:

service: camera.snapshot
target:
  entity_id: camera.ip_webcam
data:
  filename: '/media/snapshot/ip_webcam_{{ now().strftime("%Y%m%d-%H%M%S")}}.jpg'

Po wywołaniu usługi w Odtwarzacz mediów pojawi się folder snaphot a w nim zdjęcia z kamery, do których mamy prosty i łatwy dostęp:

4 Likes

Cześć
Czy może mi ktoś pomóc jak wpisać do configuration.yaml jak HA ma się dostać do folderu z muzyką która znajduje się na sieciowym dysku qnap pod adresem (z windowsa) x://muzyka/ lub jak kto woli: 192.168.0.6//muzyka/
mam utworzone konto w qts dla homeassistanta z przydzielonymi prawami dostępu do folderu muzyka…
Będę wdzięczny za pomoc…

Jak chcesz bezpiecznie to instalujesz apache2 + php

Tutorial : https://github.com/FaserF/hassio-addons/tree/master/apache2

Sorry ale to nie dla mnie :slight_smile: potrzebuję czegoś prostego.

Prościej się nie da:

Play media files from your NAS using Home Assistant

1 Like

OK. Temat dostępu do plików na NASie ogarnięty (dzięki wielkie za filmik!).
Mam teraz pytanie jak odtwarzać w media playerze całe listy plików muzycznych? aktualnie mogę odtworzyć poszczególne pliki w folderach ale nie mogę zaznaczyć np. całego folderu lub kilkunastu plików…

Media w Home Assistant od wersji 2022.2 zaczęły wyglądać jak przystało na “media” - Ulepszenia mediów:

1 Like

Przez Plex ładnie się dodaje do biblioteki :grinning:
Szkoda, że nie można dodać z zewnętrznego źródła

Podpowiedz bo się z tym morduje. Snapshot w nodered zapisuje mi w {"filename":'/media/snapshot/ulica.jpg'} no i działa
Jaka teraz będzie ścieżka dostępu w nodzie call service aby wysłać to na andka . Teraz mam tak i nie działa …Proszę pomóż :stuck_out_tongue:

{  
       "message": "Ktoś dzwoni do drzwi",
       "title": "Uwaga !",
       "data": {
           "priority": "high",
           "ttl": 0,
           "color": "red",
           "message": "command_screen_on",
           "timeout": 60,
           "filename":"media-source://media_source/local/snapshot/snapshot_camera.jpg"
            
              }
} 

Opisalem to w tym poście Obraz z kamery - wysyłanie w e-mailu - #7 przez macek. Każdy service korzystajacy z katalogu media ma inny format użycia.

A możesz mi że tak powiem dać to na tacy bo ten temat i wiele innych i nie tylko na tym forum studiowałem i ni chu chu nie mogę znaleźć rozwiązania. Generalnie marzy mi się aby to działało też poza swoją siecią ale niewiem czy to nie jest zbyt skomplikowane… Mi działało jakiś czas temu w swojej sieci ale od czasu jak weszła któraś tam aktualizacja to przestało . Może powodem jest nginx albo coś już sam niewiem …Mam zew adres ip, duckdns do łączenia się zdalnie, nginx też ze względu na integracje kamer reolinka i wszystko ładnie hula na proxmoxie razem ze stronką www tylko nie to…

Edit… Ok działa tak jak było w tym temacie co dałeś przykład. Próbowałem setki razy jednak błędem było formatowanie…

Możesz coś więcej napisać? Rozumiem, że w apache2 można udostępnić jako adres http folder udostępniony z serwera NAS? Może jakiś przykład konfiguracji? Jak byłoby najbardziej optymalnie apache zainstalowany w HA, zainstalowany z boku na linux (gdy HA jest w dokerze lub na Proxmox), czy zainstalowany w NAS (na którym są udostępnione pliki mp3). Czy przy takim udostępnieniu będzie działało prawidłowo ruchomienie Playlisty?