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 this.currentLevel = currentLevel
30 possibleValues.add("on")
31 possibleValues.add("off")
33 deviceValuesMap.put("status", currentStatus)
34 deviceValuesMap.put("trackDescription", currentTrackDescription)
35 deviceValuesMap.put("mute", currentMute)
36 deviceValuesMap.put("trackData", currentTrackData)
37 deviceIntValuesMap.put("level", currentLevel)
40 // Methods to set values
41 def on(LinkedHashMap metaData) {
46 action("on", "status")
49 def off(LinkedHashMap metaData) {
54 action("off", "status")
57 def mute(LinkedHashMap metaData) {
62 action("muted", "mute")
65 def unmute(LinkedHashMap metaData) {
70 action("unmuted", "mute")
73 def nextTrack(LinkedHashMap metaData) {
82 def pause(LinkedHashMap metaData) {
87 action("pause", "status")
90 def play(LinkedHashMap metaData) {
95 action("play", "status")
98 def playTrack(LinkedHashMap metaData) {
102 def playTrack(String trackToPlay) {
107 def previousTrack(LinkedHashMap metaData) {
111 def previousTrack() {
116 def resumeTrack(LinkedHashMap metaData) {
120 def resumeTrack(String trackToResume) {
124 def restoreTrack(LinkedHashMap metaData) {
128 def restoreTrack(String trackToRestore) {
133 def setLevel(LinkedHashMap metaData) {
137 def setLevel(int level) {
138 action(level, "level")
141 def setTrack(LinkedHashMap metaData) {
145 def setTrack(String trackToSet) {
150 def stop(LinkedHashMap metaData) {
155 action("stop", "status")
158 def musicChangeEvents() {
159 setValue([name: "trackDescription", value: "someDescriptions", deviceId: id.toString(), descriptionText: "",
160 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
161 setValue([name: "trackData", value: "someTrack", deviceId: id.toString(), descriptionText: "",
162 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])