homey-api 1.10.20 → 3.0.0-rc.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/assets/types/homey-api.d.ts +54 -647
- package/assets/types/homey-api.private.d.ts +54 -707
- package/index.js +1 -1
- package/lib/APIErrorNotFound.js +20 -0
- package/lib/AthomCloudAPI/Homey.js +3 -1
- package/lib/EventEmitter.js +0 -6
- package/lib/HomeyAPI/HomeyAPI.js +53 -5
- package/lib/HomeyAPI/HomeyAPIErrorNotFound.js +21 -0
- package/lib/HomeyAPI/HomeyAPIV2/Manager.js +2 -575
- package/lib/HomeyAPI/HomeyAPIV2/ManagerDevices/Capability.js +20 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerDevices/Device.js +18 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerDevices.js +6 -3
- package/lib/HomeyAPI/HomeyAPIV2/ManagerDrivers/Driver.js +25 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerDrivers/PairSession.js +20 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerDrivers.js +46 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerFlow/AdvancedFlow.js +30 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerFlow/Flow.js +57 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerFlow/FlowCardAction.js +25 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerFlow/FlowCardCondition.js +25 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerFlow/FlowCardTrigger.js +25 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerFlow.js +127 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerFlowToken/FlowToken.js +24 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerFlowToken.js +29 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerInsights/Log.js +22 -0
- package/lib/HomeyAPI/HomeyAPIV2/ManagerInsights.js +46 -0
- package/lib/HomeyAPI/HomeyAPIV2.js +12 -716
- package/lib/HomeyAPI/HomeyAPIV3/Item.js +186 -2
- package/lib/HomeyAPI/HomeyAPIV3/Manager.js +513 -3
- package/lib/HomeyAPI/{HomeyAPIV2 → HomeyAPIV3/ManagerApps}/App.js +1 -1
- package/lib/HomeyAPI/{HomeyAPIV2 → HomeyAPIV3}/ManagerApps.js +4 -3
- package/lib/HomeyAPI/HomeyAPIV3/ManagerDevices/Capability.js +9 -0
- package/lib/HomeyAPI/{HomeyAPIV2 → HomeyAPIV3/ManagerDevices}/Device.js +82 -7
- package/lib/HomeyAPI/{HomeyAPIV2 → HomeyAPIV3/ManagerDevices}/DeviceCapability.js +4 -4
- package/lib/HomeyAPI/HomeyAPIV3/ManagerDevices.js +17 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerDrivers/Driver.js +9 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerDrivers/PairSession.js +9 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerDrivers.js +17 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow/AdvancedFlow.js +9 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow/Flow.js +17 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow/FlowCard.js +17 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow/FlowCardAction.js +9 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow/FlowCardCondition.js +9 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow/FlowCardTrigger.js +9 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerFlow.js +12 -23
- package/lib/HomeyAPI/HomeyAPIV3/ManagerFlowToken/FlowToken.js +19 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerFlowToken.js +15 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerInsights/Log.js +23 -0
- package/lib/HomeyAPI/HomeyAPIV3/ManagerInsights.js +15 -0
- package/lib/HomeyAPI/HomeyAPIV3.js +728 -4
- package/lib/HomeyAPI/HomeyAPIV3Cloud.js +1 -1
- package/lib/HomeyAPI/HomeyAPIV3Local.js +1 -1
- package/package.json +1 -1
- package/lib/HomeyAPI/HomeyAPIApp.js +0 -127
- package/lib/HomeyAPI/HomeyAPIV2/Item.js +0 -177
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const Manager = require('./Manager');
|
|
4
|
-
const App = require('./App');
|
|
4
|
+
const App = require('./ManagerApps/App');
|
|
5
5
|
|
|
6
6
|
class ManagerApps extends Manager {
|
|
7
7
|
|
|
8
|
-
static
|
|
9
|
-
|
|
8
|
+
static CRUD = {
|
|
9
|
+
...super.CRUD,
|
|
10
|
+
App,
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const Util = require('
|
|
4
|
-
const Item = require('
|
|
3
|
+
const Util = require('../../../Util');
|
|
4
|
+
const Item = require('../Item');
|
|
5
5
|
const DeviceCapability = require('./DeviceCapability');
|
|
6
6
|
|
|
7
7
|
class Device extends Item {
|
|
@@ -18,12 +18,12 @@ class Device extends Item {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
|
-
* Creates an {@link
|
|
21
|
+
* Creates an {@link HomeyAPIV3.DeviceCapability} for realtime capability updates.
|
|
22
22
|
* @param {string} capabilityId
|
|
23
23
|
* @param {Function} listener
|
|
24
24
|
* @param {number|boolean|string} listener.value
|
|
25
|
-
* @returns {
|
|
26
|
-
* @function
|
|
25
|
+
* @returns {HomeyAPIV3.ManagerDevices.Device.DeviceCapability}
|
|
26
|
+
* @function HomeyAPIV3.ManagerDevices.Device#makeCapabilityInstance
|
|
27
27
|
* @example
|
|
28
28
|
*
|
|
29
29
|
* const onOffInstance = device.makeCapabilityInstance('onoff', value => {
|
|
@@ -72,7 +72,7 @@ class Device extends Item {
|
|
|
72
72
|
* @param {object} [opts.opts]
|
|
73
73
|
* @param {number} [opts.opts.duration]
|
|
74
74
|
* @returns {Promise<void>}
|
|
75
|
-
* @function
|
|
75
|
+
* @function HomeyAPIV3.ManagerDevices.Device#setCapabilityValue
|
|
76
76
|
*/
|
|
77
77
|
async setCapabilityValue(options, ...args) {
|
|
78
78
|
// Legacy compatibility from node-athom-api
|
|
@@ -130,10 +130,85 @@ class Device extends Item {
|
|
|
130
130
|
});
|
|
131
131
|
})
|
|
132
132
|
// eslint-disable-next-line no-console
|
|
133
|
-
.catch(err =>
|
|
133
|
+
.catch(err => this.__debug(`Device[${this.id}].onReconnectError:`, err));
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
+
async getZone() {
|
|
138
|
+
return this.homey.zones.getZone({
|
|
139
|
+
id: this.zone,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
async getDriver() {
|
|
144
|
+
return this.homey.drivers.getDriver({
|
|
145
|
+
id: this.driverId,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
async getLogs() {
|
|
150
|
+
const logs = await this.homey.insights.getLogs();
|
|
151
|
+
return Object.values(logs)
|
|
152
|
+
.filter(log => log.ownerUri === this.uri)
|
|
153
|
+
.reduce((result, log) => ({
|
|
154
|
+
...result,
|
|
155
|
+
[log.id]: log,
|
|
156
|
+
}), {});
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
async getFlows() {
|
|
160
|
+
const flows = await this.homey.flow.getFlows();
|
|
161
|
+
return Object.values(flows)
|
|
162
|
+
.filter(flow => {
|
|
163
|
+
if (flow.trigger && flow.trigger.id.startsWith(this.uri)) return true;
|
|
164
|
+
if (Array.isArray(flow.conditions) && flow.conditions.some(card => card.id.startsWith(this.uri))) return true;
|
|
165
|
+
if (Array.isArray(flow.actions) && flow.actions.some(card => card.id.startsWith(this.uri))) return true;
|
|
166
|
+
|
|
167
|
+
// TODO: Zone cards
|
|
168
|
+
// TODO: Subzone cards
|
|
169
|
+
|
|
170
|
+
return false;
|
|
171
|
+
})
|
|
172
|
+
.reduce((result, flow) => ({
|
|
173
|
+
...result,
|
|
174
|
+
[flow.id]: flow,
|
|
175
|
+
}), {});
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
async getAdvancedFlows() {
|
|
179
|
+
const advancedFlows = await this.homey.flow.getAdvancedFlows();
|
|
180
|
+
return Object.values(advancedFlows)
|
|
181
|
+
.filter(advancedFlow => {
|
|
182
|
+
return Object.values(advancedFlow.cards)
|
|
183
|
+
.filter(card => ['trigger', 'condition', 'action'].includes(card.type))
|
|
184
|
+
.some(card => {
|
|
185
|
+
if (card.id.startsWith(this.uri)) return true;
|
|
186
|
+
|
|
187
|
+
// TODO: Zone cards
|
|
188
|
+
// TODO: Subzone cards
|
|
189
|
+
return false;
|
|
190
|
+
});
|
|
191
|
+
})
|
|
192
|
+
.reduce((result, advancedFlow) => ({
|
|
193
|
+
...result,
|
|
194
|
+
[advancedFlow.id]: advancedFlow,
|
|
195
|
+
}), {});
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
static transformGet(item) {
|
|
199
|
+
item = super.transformGet(item);
|
|
200
|
+
|
|
201
|
+
if (item.capabilitiesObj) {
|
|
202
|
+
for (const capabilityObj of Object.values(item.capabilitiesObj)) {
|
|
203
|
+
if (capabilityObj.lastUpdated) {
|
|
204
|
+
capabilityObj.lastUpdated = new Date(capabilityObj.lastUpdated);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
return item;
|
|
210
|
+
}
|
|
211
|
+
|
|
137
212
|
}
|
|
138
213
|
|
|
139
214
|
module.exports = Device;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const Util = require('
|
|
4
|
-
const EventEmitter = require('
|
|
3
|
+
const Util = require('../../../Util');
|
|
4
|
+
const EventEmitter = require('../../../EventEmitter');
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* @class
|
|
@@ -75,7 +75,7 @@ class DeviceCapability extends EventEmitter {
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
__debug(...props) {
|
|
78
|
-
this.device.__debug(`[
|
|
78
|
+
this.device.__debug(`[DeviceCapability:${this.id}]`, ...props);
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
/**
|
|
@@ -108,7 +108,7 @@ class DeviceCapability extends EventEmitter {
|
|
|
108
108
|
const capabilityReference = this.device.capabilitiesObj && this.device.capabilitiesObj[this.id];
|
|
109
109
|
if (capabilityReference) {
|
|
110
110
|
capabilityReference.value = value;
|
|
111
|
-
capabilityReference.lastUpdated = this.__lastChanged
|
|
111
|
+
capabilityReference.lastUpdated = this.__lastChanged;
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
this.__listener(value);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Manager = require('./Manager');
|
|
4
|
+
const Capability = require('./ManagerDevices/Capability');
|
|
5
|
+
const Device = require('./ManagerDevices/Device');
|
|
6
|
+
|
|
7
|
+
class ManagerDevices extends Manager {
|
|
8
|
+
|
|
9
|
+
static CRUD = {
|
|
10
|
+
...super.CRUD,
|
|
11
|
+
Capability,
|
|
12
|
+
Device,
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
module.exports = ManagerDevices;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Manager = require('./Manager');
|
|
4
|
+
const Driver = require('./ManagerDrivers/Driver');
|
|
5
|
+
const PairSession = require('./ManagerDrivers/PairSession');
|
|
6
|
+
|
|
7
|
+
class ManagerDrivers extends Manager {
|
|
8
|
+
|
|
9
|
+
static CRUD = {
|
|
10
|
+
...super.CRUD,
|
|
11
|
+
Driver,
|
|
12
|
+
PairSession,
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
module.exports = ManagerDrivers;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Item = require('../Item');
|
|
4
|
+
|
|
5
|
+
class Flow extends Item {
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Check whether this Flow misses one or more {@link FlowCard} or {@link FlowToken}.
|
|
9
|
+
* @returns Promise<Boolean>
|
|
10
|
+
*/
|
|
11
|
+
async isBroken() {
|
|
12
|
+
throw new Error('Not Implemented');
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
module.exports = Flow;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Item = require('../Item');
|
|
4
|
+
|
|
5
|
+
class FlowCard extends Item {
|
|
6
|
+
|
|
7
|
+
static transformGet(item) {
|
|
8
|
+
item = super.transformGet(item);
|
|
9
|
+
|
|
10
|
+
delete item.ownerName; // Prepare for back-end change
|
|
11
|
+
|
|
12
|
+
return item;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
module.exports = FlowCard;
|
|
@@ -1,32 +1,21 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const Manager = require('./Manager');
|
|
4
|
+
const Flow = require('./ManagerFlow/Flow');
|
|
5
|
+
const AdvancedFlow = require('./ManagerFlow/AdvancedFlow');
|
|
6
|
+
const FlowCardTrigger = require('./ManagerFlow/FlowCardTrigger');
|
|
7
|
+
const FlowCardCondition = require('./ManagerFlow/FlowCardCondition');
|
|
8
|
+
const FlowCardAction = require('./ManagerFlow/FlowCardAction');
|
|
4
9
|
|
|
5
10
|
class ManagerFlow extends Manager {
|
|
6
11
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return this.__super__getFlowCardCondition(args, ...rest);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
async runFlowCardCondition(args = {}, ...rest) {
|
|
18
|
-
args.uri = '';
|
|
19
|
-
return this.__super__runFlowCardCondition(args, ...rest);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
async getFlowCardAction(args = {}, ...rest) {
|
|
23
|
-
args.uri = '';
|
|
24
|
-
return this.__super__getFlowCardAction(args, ...rest);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
async runFlowCardAction(args = {}, ...rest) {
|
|
28
|
-
args.uri = '';
|
|
29
|
-
return this.__super__runFlowCardAction(args, ...rest);
|
|
12
|
+
static CRUD = {
|
|
13
|
+
...super.CRUD,
|
|
14
|
+
Flow,
|
|
15
|
+
AdvancedFlow,
|
|
16
|
+
FlowCardTrigger,
|
|
17
|
+
FlowCardCondition,
|
|
18
|
+
FlowCardAction,
|
|
30
19
|
}
|
|
31
20
|
|
|
32
21
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Item = require('../Item');
|
|
4
|
+
|
|
5
|
+
class FlowToken extends Item {
|
|
6
|
+
|
|
7
|
+
// TODO: Remove when back-end has removed these properties.
|
|
8
|
+
static transformGet(item) {
|
|
9
|
+
item = super.transformGet(item);
|
|
10
|
+
|
|
11
|
+
delete item.uri;
|
|
12
|
+
delete item.id;
|
|
13
|
+
delete item.uriObj;
|
|
14
|
+
delete item.ownerName; // Prepare for back-end change
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
module.exports = FlowToken;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Manager = require('./Manager');
|
|
4
|
+
const FlowToken = require('./ManagerFlowToken/FlowToken');
|
|
5
|
+
|
|
6
|
+
class ManagerFlowToken extends Manager {
|
|
7
|
+
|
|
8
|
+
static CRUD = {
|
|
9
|
+
...super.CRUD,
|
|
10
|
+
FlowToken,
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
module.exports = ManagerFlowToken;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Item = require('../Item');
|
|
4
|
+
|
|
5
|
+
class Log extends Item {
|
|
6
|
+
|
|
7
|
+
async getEntries() {
|
|
8
|
+
return this.manager.getLogEntries({
|
|
9
|
+
id: this.id,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
static transformGet(item) {
|
|
14
|
+
item = super.transformGet(item);
|
|
15
|
+
|
|
16
|
+
delete item.ownerName; // Prepare for back-end change
|
|
17
|
+
|
|
18
|
+
return item;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
module.exports = Log;
|