-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
83 lines (71 loc) · 1.79 KB
/
server.js
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
'use strict'
const path = require('path')
const domapic = require('domapic-service')
const pluginConfigs = require('./lib/plugins.json')
const options = require('./lib/options')
const Sensor = require('./lib/Sensor')
const {
TEMPERATURE_NAME,
TEMPERATURE_EVENT,
TEMPERATURE_STATE,
HUMIDITY_NAME,
HUMIDITY_EVENT,
HUMIDITY_STATE,
INTERVAL_OPTION,
EVENTS_STEP_OPTION,
SENSOR_TYPE_OPTION,
GPIO_OPTION
} = require('./lib/statics')
domapic.createModule({
packagePath: path.resolve(__dirname),
customConfig: options
}).then(async dmpcModule => {
const config = await dmpcModule.config.get()
const sensor = new Sensor(
config[SENSOR_TYPE_OPTION],
config[GPIO_OPTION],
config[INTERVAL_OPTION],
config[EVENTS_STEP_OPTION],
dmpcModule.tracer
)
await dmpcModule.register({
[TEMPERATURE_NAME]: {
description: TEMPERATURE_STATE,
data: {
type: 'number'
},
state: {
description: TEMPERATURE_STATE,
handler: () => sensor.temperature
},
event: {
description: TEMPERATURE_EVENT
}
},
[HUMIDITY_NAME]: {
description: HUMIDITY_STATE,
data: {
type: 'number',
minimum: 0,
maximum: 100
},
state: {
description: HUMIDITY_STATE,
handler: () => sensor.humidity
},
event: {
description: HUMIDITY_EVENT
}
}
})
sensor.events.on(TEMPERATURE_NAME, newValue => {
dmpcModule.tracer.debug(TEMPERATURE_EVENT, newValue)
dmpcModule.events.emit(TEMPERATURE_NAME, newValue)
})
sensor.events.on(HUMIDITY_NAME, newValue => {
dmpcModule.tracer.debug(HUMIDITY_EVENT, newValue)
dmpcModule.events.emit(HUMIDITY_NAME, newValue)
})
await dmpcModule.addPluginConfig(pluginConfigs)
return dmpcModule.start()
})