summaryrefslogtreecommitdiffstats
path: root/makefu/2configs/ham/multi/the_playlist.nix
blob: ad090938cce3a1f868f125270f06ee88dbf435a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# Inputs:
#  binary_sensor.playlist_button_good
#  binary_sensor.playlist_button_bad

# outputs
#  rest_command
#  automation
#  sensor
{
  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'] }}'';
        };
      };
    }
  ];
}