stockholm/makefu/2configs/home/ham/multi/the_playlist.nix
2021-03-09 22:14:51 +01:00

87 lines
2.2 KiB
Nix

# Inputs:
# binary_sensor.playlist_button_good
# binary_sensor.playlist_button_bad
# outputs
# rest_command
# automation
# sensor
{
services.home-assistant.config =
{
rest_command = {
good_song = {
url = "http://prism.r:8001/good";
method = "POST";
};
bad_song = {
url = "http://prism.r:8001/skip";
method = "POST";
};
};
automation = [
{
alias = "playlist song publish";
trigger = {
#platform = "event";
#event_data.entity_id = "sensor.the_playlist_song";
platform = "state";
entity_id = "sensor.the_playlist_song";
};
action = {
service = "mqtt.publish";
data = {
topic = "/ham/the_playlist/song";
payload_template = "{{ states.sensor.the_playlist_song.state }}";
};
};
}
{
alias = "playlist upvote on button";
trigger = {
platform = "state";
entity_id = "binary_sensor.playlist_button_good";
from = "off";
to = "on";
};
action.service = "rest_command.good_song";
}
{
alias = "playlist downvote on button";
trigger = {
platform = "state";
entity_id = "binary_sensor.playlist_button_bad";
from = "off";
to = "on";
};
action.service = "rest_command.bad_song";
}
];
sensor = [
{ platform = "rest";
name = "pl";
resource = "http://prism.r:8001/current";
scan_interval = 30;
value_template = "1";
json_attributes = [ "name" "filename" "youtube" ];
}
{ platform = "template";
sensors = {
the_playlist_song = {
friendly_name = "Current Song";
value_template = ''{{ states.sensor.pl.attributes['name'] }}'';
};
the_playlist_url = {
friendly_name = "Song Youtube URL";
value_template = ''{{ states.sensor.pl.attributes['youtube'] }}'';
};
the_playlist_filename = {
friendly_name = "Song Filename";
value_template = ''{{ states.sensor.pl.attributes['filename'] }}'';
};
};
}
];
};
}