-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathSwitchMultiLevelDriver.ts
37 lines (33 loc) · 1.05 KB
/
SwitchMultiLevelDriver.ts
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
import multiLevelBinaryTransformer from '../../Values/Transformers/multiLevelBinaryTransformer'
import multiLevelTransformer from '../../Values/Transformers/multiLevelTransformer'
import BoundValueStream from '../../Streams/BoundValueStream'
import ManagedDriver from './ManagedDriver'
import { Value } from 'openzwave-shared'
export default class SwitchMultiLevelDriver extends ManagedDriver {
addValue(index: number, value: Value) {
if (index !== 0) {
return
}
const { Service, Characteristic } = this.hap
const service = this.accessory.getService(Service.Lightbulb)
const valueStream = new BoundValueStream(value, this.valueObservables, this.log)
// On/Off
this.registerCharacteristic(index, value, {
service,
valueStream,
characteristic: Characteristic.On,
options: {
transformer: multiLevelBinaryTransformer(),
},
})
// Brightness
this.registerCharacteristic(index, value, {
service,
valueStream,
characteristic: Characteristic.Brightness,
options: {
transformer: multiLevelTransformer(),
},
})
}
}