//By model checker
def setValue(String value, String name) {
- if (name == "status") {
+ if ((name == "status") && (value != this.status)) {
this.status = value
println("the status of the music player with id:$id is changed to $value!")
- } else if (name == "level") {
+ } else if ((name == "level") && (value != this.level)) {
this.level = value.toInteger()
println("the level sound of the music player with id:$id is changed to $value!")
- } else if (name == "trackDescription") {
+ } else if ((name == "trackDescription") && (value != this.trackDescription)) {
this.trackDescription = value
println("the trackDescription of the music player with id:$id is changed to $value!")
- } else if (name == "trackData") {
+ } else if ((name == "trackData") && (value != this.trackData)) {
this.trackData = value
println("the trackData of the music player with id:$id is changed to $value!")
- } else if (name == "mute") {
+ } else if ((name == "mute") && (value != this.mute)) {
this.mute = value
println("the mute state of the music player with id:$id is changed to $value!")
}
//methods
def mute() {
- println("the music player with id:$id is muted!")
- this.mute = "muted"
- sendEvent([name: "mute", value: "mute", deviceId: this.id, descriptionText: "",
- displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "mute"]])
+ if (mute != "muted") {
+ println("the music player with id:$id is muted!")
+ this.mute = "muted"
+ sendEvent([name: "mute", value: "mute", deviceId: this.id, descriptionText: "",
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+ }
}
def nextTrack() {
trackNumber = trackNumber+1
def trackPlaying = trackData
println("the $trackPlaying is selected!")
- this.status = "playing"
- sendEvent([name: "status", value: "playing", deviceId: this.id, descriptionText: "",
- displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "playing"]])
+ if (status != "playing") {
+ this.status = "playing"
+ sendEvent([name: "status", value: "playing", deviceId: this.id, descriptionText: "",
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+ }
sendEvent([name: "trackDescription", value: "someDescriptions", deviceId: this.id, descriptionText: "",
- displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "someDescriptions"]])
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
sendEvent([name: "trackData", value: "someTrack", deviceId: this.id, descriptionText: "",
- displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "someTrack"]])
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
}
def pause() {
- println("the music player with id:$id is paused!")
- this.status = "paused"
- sendEvent([name: "status", value: "paused", deviceId: this.id, descriptionText: "",
- displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "paused"]])
+ if (status != "paused") {
+ println("the music player with id:$id is paused!")
+ this.status = "paused"
+ sendEvent([name: "status", value: "paused", deviceId: this.id, descriptionText: "",
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+ }
}
def play() {
- println("the music player with id:$id is starting to play!")
- this.status = "playing"
- sendEvent([name: "status", value: "playing", deviceId: this.id, descriptionText: "",
- displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "playing"]])
+ if (status != "playing") {
+ println("the music player with id:$id is starting to play!")
+ this.status = "playing"
+ sendEvent([name: "status", value: "playing", deviceId: this.id, descriptionText: "",
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+ }
}
def playTrack(String trackToPlay) {
def trackPlaying = trackData
println("the $trackPlaying is selected to play!")
- this.status = "playing"
- sendEvent([name: "status", value: "playing", deviceId: this.id, descriptionText: "",
- displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "playing"]])
+ if (status != "playing") {
+ this.status = "playing"
+ sendEvent([name: "status", value: "playing", deviceId: this.id, descriptionText: "",
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+ }
sendEvent([name: "trackDescription", value: "someDescriptions", deviceId: this.id, descriptionText: "",
- displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "someDescriptions"]])
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
sendEvent([name: "trackData", value: "someTrack", deviceId: this.id, descriptionText: "",
- displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "someTrack"]])
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
}
def previousTrack() {
if (trackNumber != 1)
trackNumber = trackNumber-1
def trackPlaying = trackData
println("the $trackPlaying is selected!")
- this.status = "playing"
- sendEvent([name: "status", value: "playing", deviceId: this.id, descriptionText: "",
- displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "playing"]])
+ if (status != "playing") {
+ this.status = "playing"
+ sendEvent([name: "status", value: "playing", deviceId: this.id, descriptionText: "",
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+ }
sendEvent([name: "trackDescription", value: "someDescriptions", deviceId: this.id, descriptionText: "",
- displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "someDescriptions"]])
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
sendEvent([name: "trackData", value: "someTrack", deviceId: this.id, descriptionText: "",
- displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "someTrack"]])
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
}
/*def restoreTrack(String trackToRestore) {
musicPlayers*.restoreTrack(trackToRestore)
def resumeTrack(String trackToResume) {
def trackPlaying = trackData
println("the $trackPlaying is resumed!")
- this.status = "playing"
- sendEvent([name: "status", value: "playing", deviceId: this.id, descriptionText: "",
- displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "playing"]])
+ if (status != "playing") {
+ this.status = "playing"
+ sendEvent([name: "status", value: "playing", deviceId: this.id, descriptionText: "",
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+ }
}
def setLevel(int level) {
- this.level = level
- println("the level of sound is changed to $level!")
- sendEvent([name: "level", value: "$level", deviceId: this.id, descriptionText: "",
- displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "$level"]])
+ if (level != this.level) {
+ this.level = level
+ println("the level of sound is changed to $level!")
+ sendEvent([name: "level", value: "$level", deviceId: this.id, descriptionText: "",
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+ }
}
def setTrack(String trackToSet) {
def trackPlaying = trackData
println("the $trackPlaying is set!")
- this.status = "playing"
- sendEvent([name: "status", value: "playing", deviceId: this.id, descriptionText: "",
- displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "playing"]])
+ if (status != "playing") {
+ this.status = "playing"
+ sendEvent([name: "status", value: "playing", deviceId: this.id, descriptionText: "",
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+ }
sendEvent([name: "trackDescription", value: "someDescriptions", deviceId: this.id, descriptionText: "",
- displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "someDescriptions"]])
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
sendEvent([name: "trackData", value: "someTrack", deviceId: this.id, descriptionText: "",
- displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "someTrack"]])
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
}
def stop() {
- println("the music player with id:$id is stopped!")
- this.status = "stopped"
- sendEvent([name: "status", value: "stopped", deviceId: this.id, descriptionText: "",
- displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "stopped"]])
+ if (status != "stopped") {
+ println("the music player with id:$id is stopped!")
+ this.status = "stopped"
+ sendEvent([name: "status", value: "stopped", deviceId: this.id, descriptionText: "",
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+ }
}
def currentValue(String deviceFeature) {