UNPKG

1.17 kBtext/coffeescriptView Raw
1{EventEmitter} = require 'events'
2debug = require('debug')('meshblu-connector-hue:index')
3HueManager = require './hue-manager'
4
5class Connector extends EventEmitter
6 constructor: ->
7 @hue = new HueManager
8 @hue.on 'change:username', @_onUsernameChange
9 @hue.on 'click', @_onClick
10 @hue.on 'error', (error) =>
11 @emit 'error', error
12
13 isOnline: (callback) =>
14 callback null, running: true
15
16 close: (callback) =>
17 debug 'on close'
18 @hue.close callback
19
20 onConfig: (@device={}, callback=->) =>
21 { @options, apikey } = @device
22 debug 'on config', @options
23 { ipAddress, apiUsername, sensorName, sensorPollInterval } = @options ? {}
24 @hue.connect { ipAddress, apiUsername, sensorName, sensorPollInterval, apikey }, (error) =>
25 return callback error if error?
26 callback()
27
28 start: (device, callback) =>
29 debug 'started'
30 @onConfig device, callback
31
32 _onUsernameChange: ({apikey}) =>
33 @emit 'update', {apikey}
34
35 _onClick: ({button, state}) =>
36 data = {
37 action: 'click'
38 button
39 state
40 @device
41 }
42 @emit 'message', {devices: ['*'], data}
43
44module.exports = Connector