//Create a class for music player package MusicPlayer import SmartThing.SmartThing public class MusicPlayer extends SmartThing { // id, label, and display name of the device String id String label String displayName // Maps from features to values HashMap deviceValuesMap = new HashMap() HashMap deviceIntValuesMap = new HashMap() // Possible values for eventsSince method List possibleValues = new ArrayList(); MusicPlayer(Closure sendEvent, String id, String label, String displayName, Integer currentLevel, String currentMute, String currentStatus, String currentTrackData, String currentTrackDescription) { deviceValueSmartThing = deviceValuesMap deviceIntValueSmartThing = deviceIntValuesMap idSmartThing = id labelSmartThing = label displayNameSmartThing = displayName sendEventSmartThings = sendEvent possibleValuesSmartThings = possibleValues // Initialization this.id = id this.label = label possibleValues.add("on") possibleValues.add("off") deviceValuesMap.put("status", currentStatus) deviceValuesMap.put("trackDescription", currentTrackDescription) deviceValuesMap.put("mute", currentMute) deviceValuesMap.put("trackData", currentTrackData) deviceIntValuesMap.put("level", currentLevel) } // Methods to set values def on(LinkedHashMap metaData) { on() } def on() { action("on", "status") } def off(LinkedHashMap metaData) { off() } def off() { action("off", "status") } def mute(LinkedHashMap metaData) { mute() } def mute() { action("muted", "mute") } def unmute(LinkedHashMap metaData) { unmute() } def unmute() { action("unmuted", "mute") } def nextTrack(LinkedHashMap metaData) { nextTrack() } def nextTrack() { play() musicChangeEvents() } def pause(LinkedHashMap metaData) { pause() } def pause() { action("pause", "status") } def play(LinkedHashMap metaData) { play() } def play() { action("play", "status") } def playTrack(LinkedHashMap metaData) { playTrack() } def playTrack(String trackToPlay) { play() musicChangeEvents() } def previousTrack(LinkedHashMap metaData) { previousTrack() } def previousTrack() { play() musicChangeEvents() } def resumeTrack(LinkedHashMap metaData) { resumeTrack() } def resumeTrack(String trackToResume) { play() } def restoreTrack(LinkedHashMap metaData) { restoreTrack() } def restoreTrack(String trackToRestore) { play() musicChangeEvents() } def setLevel(LinkedHashMap metaData) { setLevel() } def setLevel(int level) { action(level, "level") } def setTrack(LinkedHashMap metaData) { setTrack() } def setTrack(String trackToSet) { play() } def stop(LinkedHashMap metaData) { stop() } def stop() { action("stop", "status") } def musicChangeEvents() { setValue([name: "trackDescription", value: "someDescriptions", deviceId: id.toString(), descriptionText: "", displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) setValue([name: "trackData", value: "someTrack", deviceId: id.toString(), descriptionText: "", displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) } }