-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathController
130 lines (109 loc) · 3.4 KB
/
Controller
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/**
* Copyright 2015 SmartThings
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
* for the specific language governing permissions and limitations under the License.
*
* The Big Switch
*
* Author: SmartThings
*
* Date: 2013-05-01
*/
definition(
name: "Volume Sonos on Zigbee dimmer",
namespace: "smartthings",
author: "Matthijs van Schendelen",
description: "Volume",
category: "Convenience",
iconUrl: "https://s3.amazonaws.com/smartapp-icons/Partner/sonos.png",
iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Partner/sonos@2x.png"
)
preferences {
section("When this switch is turned on, off or dimmed") {
input "master", "capability.switch", title: "Where?"
}
section("Turn on or off all of these switches as well") {
input "switches", "capability.switch", multiple: true, required: false
}
section("Choose Sonos player") {
input "sonos", "capability.musicPlayer", title: "On this Speaker player", required: true
log.debug "Status ophalen Sonos $sonos"
}
section("More options", hideable: true, hidden: true) {
input "volume", "number", title: "Set the volume", description: "0-100%", required: false
}
/*
section("And turn off but not on all of these switches") {
input "offSwitches", "capability.switch", multiple: true, required: false
}
section("And turn on but not off all of these switches") {
input "onSwitches", "capability.switch", multiple: true, required: false
}
*/
section("And Dim these switches") {
input "dimSwitches", "capability.switchLevel", multiple: true, required: false
}
}
def installed()
{
subscribe(master, "switch.on", onHandler)
subscribe(master, "switch.off", offHandler)
subscribe(master, "level", dimHandler)
//subscribe(sonos, "level", sonosHandler)
}
def updated()
{
unsubscribe()
subscribe(master, "switch.on", onHandler)
subscribe(master, "switch.off", offHandler)
subscribe(master, "level", dimHandler)
// subscribe(sonos, "level", sonosHandler)
}
def logHandler(evt) {
log.debug evt.value
}
def timerTask = null
def sonosHandler(evt) {
log.debug("Set level of switch to {$evt.value}")
unschedule()
runIn(3, syncSwitchWithSonos(evt.value.toInteger()))
}
def syncSwitchWithSonos(int volume) {
log.debug("Set level of sonos to ${volume}")
master.setLevel(volume)
}
def onHandler(evt) {
log.debug("Switch on")
log.debug onSwitches()
//onSwitches()?.on()
}
def offHandler(evt) {
log.debug("Switch off")
log.debug offSwitches()
//sonos.nextTrack()
//offSwitches()?.off()
}
def dimHandler(evt) {
log.debug "Dim level: $evt.value"
log.debug "Sonos level: $sonos.currentLevel"
sonos.setLevel(evt.value.toInteger())
//voor de lamp
//dimSwitches?.setLevel(evt.value)
}
private onSwitches() {
if(switches && onSwitches) { switches + onSwitches }
else if(switches) { switches }
else { onSwitches }
}
private offSwitches() {
if(switches && offSwitches) { switches + offSwitches }
else if(switches) { switches }
else { offSwitches }
}