1 //Create a class for music player
3 import SmartThing.SmartThing
5 public class MusicPlayer extends SmartThing {
6 // id, label, and display name of the device
10 // Maps from features to values
11 HashMap<String, String> deviceValuesMap = new HashMap<String, String>()
12 HashMap<String, Integer> deviceIntValuesMap = new HashMap<String, Integer>()
13 // Possible values for eventsSince method
14 List<String> possibleValues = new ArrayList<String>();
16 MusicPlayer(Closure sendEvent, String id, String label, String displayName, Integer currentLevel,
17 String currentMute, String currentStatus, String currentTrackData, String currentTrackDescription) {
18 deviceValueSmartThing = deviceValuesMap
19 deviceIntValueSmartThing = deviceIntValuesMap
21 labelSmartThing = label
22 displayNameSmartThing = displayName
23 sendEventSmartThings = sendEvent
24 possibleValuesSmartThings = possibleValues
29 possibleValues.add("on")
30 possibleValues.add("off")
32 deviceValuesMap.put("status", currentStatus)
33 deviceValuesMap.put("trackDescription", currentTrackDescription)
34 deviceValuesMap.put("mute", currentMute)
35 deviceValuesMap.put("trackData", currentTrackData)
36 deviceIntValuesMap.put("level", currentLevel)
39 // Methods to set values
40 def on(LinkedHashMap metaData) {
45 action("on", "status")
48 def off(LinkedHashMap metaData) {
53 action("off", "status")
56 def mute(LinkedHashMap metaData) {
61 action("muted", "mute")
64 def unmute(LinkedHashMap metaData) {
69 action("unmuted", "mute")
72 def nextTrack(LinkedHashMap metaData) {
81 def pause(LinkedHashMap metaData) {
86 action("pause", "status")
89 def play(LinkedHashMap metaData) {
94 action("play", "status")
97 def playTrack(LinkedHashMap metaData) {
101 def playTrack(String trackToPlay) {
106 def previousTrack(LinkedHashMap metaData) {
110 def previousTrack() {
115 def resumeTrack(LinkedHashMap metaData) {
119 def resumeTrack(String trackToResume) {
123 def restoreTrack(LinkedHashMap metaData) {
127 def restoreTrack(String trackToRestore) {
132 def setLevel(LinkedHashMap metaData) {
136 def setLevel(int level) {
137 action(level, "level")
140 def setTrack(LinkedHashMap metaData) {
144 def setTrack(String trackToSet) {
149 def stop(LinkedHashMap metaData) {
154 action("stop", "status")
157 def musicChangeEvents() {
158 setValue([name: "trackDescription", value: "someDescriptions", deviceId: id.toString(), descriptionText: "",
159 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
160 setValue([name: "trackData", value: "someTrack", deviceId: id.toString(), descriptionText: "",
161 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])