add direct HA logic
This commit is contained in:
parent
9379df14f3
commit
7634331bc1
117
lib/home_assistant.py
Normal file
117
lib/home_assistant.py
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
from homeassistant_api import Client
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
import os
|
||||||
|
|
||||||
|
load_dotenv()
|
||||||
|
# # play track
|
||||||
|
# client.get_domain("media_player").play_media(entity_id="media_player.ytube_music_player", media_content_id="LM", media_content_type="playlist")
|
||||||
|
# # pause
|
||||||
|
# client.get_domain("media_player").media_pause(entity_id="media_player.ytube_music_player")
|
||||||
|
# # sleep(5)
|
||||||
|
# # # play
|
||||||
|
# client.get_domain("media_player").media_play(entity_id="media_player.ytube_music_player")
|
||||||
|
# # # stop
|
||||||
|
# client.get_domain("media_player").media_stop(entity_id="media_player.ytube_music_player")
|
||||||
|
# # skip
|
||||||
|
# client.get_domain("media_player").media_next_track(entity_id="media_player.ytube_music_player")
|
||||||
|
# # radio
|
||||||
|
# client.get_domain("media_player").play_media(entity_id="media_player.ytube_music_player", media_content_id="{{state_attr("media_player.ytube_music_player","videoId") }}", media_content_type="vid_channel")
|
||||||
|
# # shuffle
|
||||||
|
|
||||||
|
|
||||||
|
# {'name': 'Daft Punk Random Access Memories', 'type': 'album', 'id': 'MPREb_K8qWMWVqXGi'}
|
||||||
|
|
||||||
|
def create_client() -> Client:
|
||||||
|
url = os.environ["ha_url"] + "/api"
|
||||||
|
token = os.environ["ha_token"]
|
||||||
|
|
||||||
|
return Client(url, token)
|
||||||
|
|
||||||
|
|
||||||
|
def load_disc(disc_object):
|
||||||
|
"""
|
||||||
|
Play media on a media player.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
client (homeassistant_api.Client): Home Assistant API client.
|
||||||
|
"""
|
||||||
|
media_player = create_client().get_domain("media_player")
|
||||||
|
media_player.play_media(
|
||||||
|
entity_id="media_player.ytube_music_player",
|
||||||
|
media_content_id=disc_object['id'],
|
||||||
|
media_content_type=disc_object['type'],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def pause_media():
|
||||||
|
"""
|
||||||
|
Pause media on a media player.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
client (homeassistant_api.Client): Home Assistant API client.
|
||||||
|
"""
|
||||||
|
media_player = create_client().get_domain("media_player")
|
||||||
|
media_player.media_pause(entity_id="media_player.ytube_music_player")
|
||||||
|
|
||||||
|
|
||||||
|
def play_media_again():
|
||||||
|
"""
|
||||||
|
Play paused or stopped media on a media player.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
client (homeassistant_api.Client): Home Assistant API client.
|
||||||
|
"""
|
||||||
|
media_player = create_client().get_domain("media_player")
|
||||||
|
media_player.media_play(entity_id="media_player.ytube_music_player")
|
||||||
|
|
||||||
|
|
||||||
|
def stop_media():
|
||||||
|
"""
|
||||||
|
Stop media on a media player.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
client (homeassistant_api.Client): Home Assistant API client.
|
||||||
|
"""
|
||||||
|
media_player = create_client().get_domain("media_player")
|
||||||
|
media_player.media_stop(entity_id="media_player.ytube_music_player")
|
||||||
|
|
||||||
|
|
||||||
|
def next_track():
|
||||||
|
"""
|
||||||
|
Skip to the next track on a media player.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
client (homeassistant_api.Client): Home Assistant API client.
|
||||||
|
"""
|
||||||
|
media_player = create_client().get_domain("media_player")
|
||||||
|
media_player.media_next_track(entity_id="media_player.ytube_music_player")
|
||||||
|
|
||||||
|
|
||||||
|
def set_shuffle():
|
||||||
|
"""
|
||||||
|
Enable or disable shuffle on a media player.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
client (homeassistant_api.Client): Home Assistant API client.
|
||||||
|
"""
|
||||||
|
media_player = create_client().get_domain("media_player")
|
||||||
|
# Use toggle_set instead of just set, because get_shuffle returns None if no current setting
|
||||||
|
media_player.toggle_set(entity_id="media_player.ytube_music_player", attribute="shuffle", value=True)
|
||||||
|
|
||||||
|
|
||||||
|
def play_radio():
|
||||||
|
"""
|
||||||
|
Play radio or vid channel on a media player.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
client (homeassistant_api.Client): Home Assistant API client.
|
||||||
|
"""
|
||||||
|
media_player = create_client().get_domain("media_player")
|
||||||
|
media_player.play_media(
|
||||||
|
entity_id="media_player.ytube_music_player",
|
||||||
|
media_content_id='{{state_attr("media_player.ytube_music_player","videoId") }}',
|
||||||
|
media_content_type="vid_channel",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# load_disc("MPREb_GkjTjE1eOn4", "album")
|
Loading…
x
Reference in New Issue
Block a user