-
Notifications
You must be signed in to change notification settings - Fork 1
/
device_tools.js
132 lines (129 loc) · 4.97 KB
/
device_tools.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
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
131
132
/**
* @fileoverview Collection of functions that deal with connecting to devices
* @author Donald Elrod
* @version 1.0.0
*/
var file_tools = require('./file_tools.js');
/**
* Collection of functions that deal with connecting to devices
* @exports device_tools
*/
module.exports = {
/**
* Converts the devices object to a .json friendly format
* @param {Object} devices devices from server.js
* @returns {Object} the writable version of the devices object
*/
getWritableDevices: function(devices) {
var writableDevices = devices.map((d) => {
if (d.deviceProto === 'tplink') {
return {
name: d.name,
deviceProto: d.deviceProto,
deviceKind: d.deviceKind,
deviceType: d.deviceType,
ip: d.ip,
groups: d.groups
};
} else if (d.deviceProto === 'tuyapi') {
return {
name: d.name,
deviceProto: d.deviceProto,
deviceKind: d.deviceKind,
deviceType: d.deviceType,
ip: d.ip,
id: d.id,
key: d.key,
groups: d.groups
};
} else if (d.deviceProto === 'harmony') {
return {
name: d.name,
deviceProto: d.deviceProto,
deviceKind: d.deviceKind,
deviceType: d.type,
ip: d.ip,
belongsToHub: d.belongsToHub,
hubInd: d.hubInd,
groups: d.groups,
controlPort: d.ControlPort,
manufacturer: d.manufacturer,
harmonyProfile: d.deviceProfileUri,
deviceModel: d.model,
isManualPower: d.isManualPower,
controlGroups: d.controlGroups
};
}
});
return writableDevices;
},
/**
* Converts the modules object to a .json friendly format
* @param {Object} modules modules object from server.js
* @returns {Object} the writable version of the modules object
*/
getWritableModules: function(modules) {
//console.log(modules);
return modules; //this is definitely not right, might have to edit modules only when changes are made to the config
},
/**
* Converts the profiles object to a .json friendly format
* @param {Object} profiles profiles object from server.js
* @returns {Object} the writable version of the profiles object
*/
getWritableProfiles: function(profiles) {
//console.log(profiles);
return profiles;
},
/**
* Converts the activities object to a .json friendly format
* @param {Object} activities activities object from server.js
* @returns {Object} the writable version of the activities object
*/
getWritableActivities: function(activities) {
//console.log(activities);
return activities;
},
/**
* Creates an example json file for users to fill out with
* Device data
*/
createExampleDeviceConfig: function() {
var sampleDevices = [
{
note: "So far the only devices that should be manually added currently are tplink and tuyapi devices. This object in the array should also be deleted"
},
{
name: "tplink Bedroom Lamp - Replace this with device name",
deviceID: 0,
deviceProto: "tplink",
deviceKind: "tplink-plug - this can actually be whatever but it can't be changed from the front end",
deviceType: "Wifi Plug -> Light - this can be changed from the front end",
ip: "Put IP of device here",
pollable: true,
groups: [
"bedroom",
"lights",
"plugs"
]
},
{
name: "Tuyapi Wifi Switch - Replace this with device name",
deviceID: 1,
deviceProto: "tuyapi",
deviceKind: "tuyapi-switch - this can actually be whatever but it can't be changed from the front end",
deviceType: "Wifi Switch -> Light - this can be changed from the front end",
ip: "Put IP Here",
id: "Tuyapi devices have a specific id and key - search online on how to find them (I used my iPhone)",
key: "Same as above, I will post instructions on how to do this later",
pollable: true,
groups: [
"bedroom",
"lights",
"switches"
]
}
];
file_tools.writeJSONFile('devices.json', sampleDevices, function() {console.log("Sample device file successfully created")});
}
};