1 | {EventEmitter} = require 'events'
|
2 | debug = require('debug')('meshblu-connector-hue:index')
|
3 | HueManager = require './hue-manager'
|
4 |
|
5 | class 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 |
|
44 | module.exports = Connector
|