sinricpro 2.12.1 → 3.0.0
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/LICENSE +15 -0
- package/README.md +132 -15
- package/dist/capabilities/AirQualitySensor.js +23 -0
- package/dist/capabilities/AirQualitySensor.js.map +1 -0
- package/dist/capabilities/BrightnessController.js +76 -0
- package/dist/capabilities/BrightnessController.js.map +1 -0
- package/dist/capabilities/CameraController.js +29 -0
- package/dist/capabilities/CameraController.js.map +1 -0
- package/dist/capabilities/ChannelController.js +52 -0
- package/dist/capabilities/ChannelController.js.map +1 -0
- package/dist/capabilities/ColorController.js +53 -0
- package/dist/capabilities/ColorController.js.map +1 -0
- package/dist/capabilities/ColorTemperatureController.js +53 -0
- package/dist/capabilities/ColorTemperatureController.js.map +1 -0
- package/dist/capabilities/ContactSensor.js +23 -0
- package/dist/capabilities/ContactSensor.js.map +1 -0
- package/dist/capabilities/Doorbell.js +23 -0
- package/dist/capabilities/Doorbell.js.map +1 -0
- package/dist/capabilities/EqualizerController.js +103 -0
- package/dist/capabilities/EqualizerController.js.map +1 -0
- package/dist/capabilities/InputController.js +51 -0
- package/dist/capabilities/InputController.js.map +1 -0
- package/dist/capabilities/KeypadController.js +23 -0
- package/dist/capabilities/KeypadController.js.map +1 -0
- package/dist/capabilities/LockController.js +40 -0
- package/dist/capabilities/LockController.js.map +1 -0
- package/dist/capabilities/MediaController.js +40 -0
- package/dist/capabilities/MediaController.js.map +1 -0
- package/dist/capabilities/ModeController.js +51 -0
- package/dist/capabilities/ModeController.js.map +1 -0
- package/dist/capabilities/MotionSensor.js +23 -0
- package/dist/capabilities/MotionSensor.js.map +1 -0
- package/dist/capabilities/MuteController.js +51 -0
- package/dist/capabilities/MuteController.js.map +1 -0
- package/dist/capabilities/OpenCloseController.js +40 -0
- package/dist/capabilities/OpenCloseController.js.map +1 -0
- package/dist/capabilities/PercentageController.js +52 -0
- package/dist/capabilities/PercentageController.js.map +1 -0
- package/dist/capabilities/PowerLevelController.js +52 -0
- package/dist/capabilities/PowerLevelController.js.map +1 -0
- package/dist/capabilities/PowerSensor.js +23 -0
- package/dist/capabilities/PowerSensor.js.map +1 -0
- package/dist/capabilities/PowerStateController.js +53 -0
- package/dist/capabilities/PowerStateController.js.map +1 -0
- package/dist/capabilities/PushNotification.js +23 -0
- package/dist/capabilities/PushNotification.js.map +1 -0
- package/dist/capabilities/RangeController.js +52 -0
- package/dist/capabilities/RangeController.js.map +1 -0
- package/dist/capabilities/SettingController.js +33 -0
- package/dist/capabilities/SettingController.js.map +1 -0
- package/dist/capabilities/StartStopController.js +51 -0
- package/dist/capabilities/StartStopController.js.map +1 -0
- package/dist/capabilities/TemperatureSensor.js +29 -0
- package/dist/capabilities/TemperatureSensor.js.map +1 -0
- package/dist/capabilities/ThermostatController.js +70 -0
- package/dist/capabilities/ThermostatController.js.map +1 -0
- package/dist/capabilities/ToggleController.js +51 -0
- package/dist/capabilities/ToggleController.js.map +1 -0
- package/dist/capabilities/VolumeController.js +74 -0
- package/dist/capabilities/VolumeController.js.map +1 -0
- package/dist/capabilities/index.js +56 -0
- package/dist/capabilities/index.js.map +1 -0
- package/dist/core/EventLimiter.js +50 -0
- package/dist/core/EventLimiter.js.map +1 -0
- package/dist/core/MessageQueue.js +28 -0
- package/dist/core/MessageQueue.js.map +1 -0
- package/dist/core/Signature.js +68 -0
- package/dist/core/Signature.js.map +1 -0
- package/dist/core/SinricPro.js +332 -0
- package/dist/core/SinricPro.js.map +1 -0
- package/dist/core/SinricProDevice.js +82 -0
- package/dist/core/SinricProDevice.js.map +1 -0
- package/dist/core/WebSocketClient.js +156 -0
- package/dist/core/WebSocketClient.js.map +1 -0
- package/dist/core/types.js +30 -0
- package/dist/core/types.js.map +1 -0
- package/dist/devices/SinricProAirQualitySensor.js +29 -0
- package/dist/devices/SinricProAirQualitySensor.js.map +1 -0
- package/dist/devices/SinricProBlinds.js +29 -0
- package/dist/devices/SinricProBlinds.js.map +1 -0
- package/dist/devices/SinricProCamera.js +29 -0
- package/dist/devices/SinricProCamera.js.map +1 -0
- package/dist/devices/SinricProContactSensor.js +28 -0
- package/dist/devices/SinricProContactSensor.js.map +1 -0
- package/dist/devices/SinricProDimSwitch.js +29 -0
- package/dist/devices/SinricProDimSwitch.js.map +1 -0
- package/dist/devices/SinricProDoorbell.js +29 -0
- package/dist/devices/SinricProDoorbell.js.map +1 -0
- package/dist/devices/SinricProFan.js +29 -0
- package/dist/devices/SinricProFan.js.map +1 -0
- package/dist/devices/SinricProFanUS.js +29 -0
- package/dist/devices/SinricProFanUS.js.map +1 -0
- package/dist/devices/SinricProGarageDoor.js +28 -0
- package/dist/devices/SinricProGarageDoor.js.map +1 -0
- package/dist/devices/SinricProLight.js +30 -0
- package/dist/devices/SinricProLight.js.map +1 -0
- package/dist/devices/SinricProLock.js +28 -0
- package/dist/devices/SinricProLock.js.map +1 -0
- package/dist/devices/SinricProMotionSensor.js +28 -0
- package/dist/devices/SinricProMotionSensor.js.map +1 -0
- package/dist/devices/SinricProPowerSensor.js +28 -0
- package/dist/devices/SinricProPowerSensor.js.map +1 -0
- package/dist/devices/SinricProSpeaker.js +33 -0
- package/dist/devices/SinricProSpeaker.js.map +1 -0
- package/dist/devices/SinricProSwitch.js +24 -0
- package/dist/devices/SinricProSwitch.js.map +1 -0
- package/dist/devices/SinricProTV.js +33 -0
- package/dist/devices/SinricProTV.js.map +1 -0
- package/dist/devices/SinricProThermostat.js +30 -0
- package/dist/devices/SinricProThermostat.js.map +1 -0
- package/dist/devices/SinricProWindowAC.js +31 -0
- package/dist/devices/SinricProWindowAC.js.map +1 -0
- package/dist/devices/index.js +44 -0
- package/dist/devices/index.js.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/SinricProSdkLogger.js +42 -0
- package/dist/utils/SinricProSdkLogger.js.map +1 -0
- package/package.json +78 -38
- package/.github/workflows/npm-publish.yml +0 -32
- package/.nvmrc +0 -1
- package/.prettierrc +0 -5
- package/CHANGELOG.md +0 -45
- package/index.js +0 -1
- package/lib/cbhandler.js +0 -182
- package/lib/contorllers/brightness_controller.js +0 -40
- package/lib/contorllers/camera_stream_controller.js +0 -39
- package/lib/contorllers/color_controller.js +0 -23
- package/lib/contorllers/color_temperature.js +0 -23
- package/lib/contorllers/mode_controller.js +0 -22
- package/lib/contorllers/power_controller.js +0 -53
- package/lib/contorllers/range_value_controller.js +0 -38
- package/lib/contorllers/sensors_controller.js +0 -54
- package/lib/contorllers/speaker_controller.js +0 -51
- package/lib/contorllers/toggle_state_controller.js +0 -21
- package/lib/contorllers/tv_controller.js +0 -93
- package/lib/errors/errors.js +0 -8
- package/lib/events/event_handler.js +0 -108
- package/lib/signature.js +0 -26
- package/lib/sinrcpro.js +0 -129
- package/lib/sinricproudp.js +0 -60
- package/lib/storage.js +0 -31
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Export all device types
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
// Basic devices
|
|
21
|
+
__exportStar(require("./SinricProSwitch"), exports);
|
|
22
|
+
__exportStar(require("./SinricProDimSwitch"), exports);
|
|
23
|
+
__exportStar(require("./SinricProLight"), exports);
|
|
24
|
+
// Climate control
|
|
25
|
+
__exportStar(require("./SinricProThermostat"), exports);
|
|
26
|
+
__exportStar(require("./SinricProWindowAC"), exports);
|
|
27
|
+
__exportStar(require("./SinricProFan"), exports);
|
|
28
|
+
__exportStar(require("./SinricProFanUS"), exports);
|
|
29
|
+
// Entertainment
|
|
30
|
+
__exportStar(require("./SinricProTV"), exports);
|
|
31
|
+
__exportStar(require("./SinricProSpeaker"), exports);
|
|
32
|
+
// Security & Access
|
|
33
|
+
__exportStar(require("./SinricProLock"), exports);
|
|
34
|
+
__exportStar(require("./SinricProGarageDoor"), exports);
|
|
35
|
+
__exportStar(require("./SinricProCamera"), exports);
|
|
36
|
+
__exportStar(require("./SinricProDoorbell"), exports);
|
|
37
|
+
// Sensors
|
|
38
|
+
__exportStar(require("./SinricProMotionSensor"), exports);
|
|
39
|
+
__exportStar(require("./SinricProContactSensor"), exports);
|
|
40
|
+
__exportStar(require("./SinricProAirQualitySensor"), exports);
|
|
41
|
+
__exportStar(require("./SinricProPowerSensor"), exports);
|
|
42
|
+
// Window treatments
|
|
43
|
+
__exportStar(require("./SinricProBlinds"), exports);
|
|
44
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/devices/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,gBAAgB;AAChB,oDAAkC;AAClC,uDAAqC;AACrC,mDAAiC;AAEjC,kBAAkB;AAClB,wDAAsC;AACtC,sDAAoC;AACpC,iDAA+B;AAC/B,mDAAiC;AAEjC,gBAAgB;AAChB,gDAA8B;AAC9B,qDAAmC;AAEnC,oBAAoB;AACpB,kDAAgC;AAChC,wDAAsC;AACtC,oDAAkC;AAClC,sDAAoC;AAEpC,UAAU;AACV,0DAAwC;AACxC,2DAAyC;AACzC,8DAA4C;AAC5C,yDAAuC;AAEvC,oBAAoB;AACpB,oDAAkC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SinricPro SDK for Node.js and TypeScript
|
|
4
|
+
* Main entry point
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
18
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
19
|
+
};
|
|
20
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
21
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
22
|
+
};
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.LogLevel = exports.SinricProSdkLogger = exports.SinricProDevice = exports.default = exports.SinricPro = void 0;
|
|
25
|
+
// Export main SDK class
|
|
26
|
+
var SinricPro_1 = require("./core/SinricPro");
|
|
27
|
+
Object.defineProperty(exports, "SinricPro", { enumerable: true, get: function () { return SinricPro_1.SinricPro; } });
|
|
28
|
+
var SinricPro_2 = require("./core/SinricPro");
|
|
29
|
+
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(SinricPro_2).default; } });
|
|
30
|
+
// Export base device class
|
|
31
|
+
var SinricProDevice_1 = require("./core/SinricProDevice");
|
|
32
|
+
Object.defineProperty(exports, "SinricProDevice", { enumerable: true, get: function () { return SinricProDevice_1.SinricProDevice; } });
|
|
33
|
+
// Export types
|
|
34
|
+
__exportStar(require("./core/types"), exports);
|
|
35
|
+
// Export capabilities
|
|
36
|
+
__exportStar(require("./capabilities"), exports);
|
|
37
|
+
// Export devices
|
|
38
|
+
__exportStar(require("./devices"), exports);
|
|
39
|
+
// Export utilities
|
|
40
|
+
var SinricProSdkLogger_1 = require("./utils/SinricProSdkLogger");
|
|
41
|
+
Object.defineProperty(exports, "SinricProSdkLogger", { enumerable: true, get: function () { return SinricProSdkLogger_1.SinricProSdkLogger; } });
|
|
42
|
+
Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return SinricProSdkLogger_1.LogLevel; } });
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;AAEH,wBAAwB;AACxB,8CAA6C;AAApC,sGAAA,SAAS,OAAA;AAClB,8CAA2C;AAAlC,qHAAA,OAAO,OAAA;AAEhB,2BAA2B;AAC3B,0DAAyD;AAAhD,kHAAA,eAAe,OAAA;AAExB,eAAe;AACf,+CAA6B;AAE7B,sBAAsB;AACtB,iDAA+B;AAE/B,iBAAiB;AACjB,4CAA0B;AAE1B,mBAAmB;AACnB,iEAA0E;AAAjE,wHAAA,kBAAkB,OAAA;AAAE,8GAAA,QAAQ,OAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Simple logger utility for SinricPro SDK
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SinricProSdkLogger = exports.LogLevel = void 0;
|
|
7
|
+
var LogLevel;
|
|
8
|
+
(function (LogLevel) {
|
|
9
|
+
LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
|
|
10
|
+
LogLevel[LogLevel["INFO"] = 1] = "INFO";
|
|
11
|
+
LogLevel[LogLevel["WARN"] = 2] = "WARN";
|
|
12
|
+
LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
|
|
13
|
+
LogLevel[LogLevel["NONE"] = 4] = "NONE";
|
|
14
|
+
})(LogLevel || (exports.LogLevel = LogLevel = {}));
|
|
15
|
+
class SinricProSdkLogger {
|
|
16
|
+
static setLevel(level) {
|
|
17
|
+
SinricProSdkLogger.level = level;
|
|
18
|
+
}
|
|
19
|
+
static debug(message, ...args) {
|
|
20
|
+
if (SinricProSdkLogger.level <= LogLevel.DEBUG) {
|
|
21
|
+
console.log(`[SinricPro:DEBUG] ${message}`, ...args);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
static info(message, ...args) {
|
|
25
|
+
if (SinricProSdkLogger.level <= LogLevel.INFO) {
|
|
26
|
+
console.log(`[SinricPro:INFO] ${message}`, ...args);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
static warn(message, ...args) {
|
|
30
|
+
if (SinricProSdkLogger.level <= LogLevel.WARN) {
|
|
31
|
+
console.warn(`[SinricPro:WARN] ${message}`, ...args);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
static error(message, ...args) {
|
|
35
|
+
if (SinricProSdkLogger.level <= LogLevel.ERROR) {
|
|
36
|
+
console.error(`[SinricPro:ERROR] ${message}`, ...args);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.SinricProSdkLogger = SinricProSdkLogger;
|
|
41
|
+
SinricProSdkLogger.level = LogLevel.INFO;
|
|
42
|
+
//# sourceMappingURL=SinricProSdkLogger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SinricProSdkLogger.js","sourceRoot":"","sources":["../../src/utils/SinricProSdkLogger.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,uCAAQ,CAAA;AACV,CAAC,EANW,QAAQ,wBAAR,QAAQ,QAMnB;AAED,MAAa,kBAAkB;IAG7B,MAAM,CAAC,QAAQ,CAAC,KAAe;QAC7B,kBAAkB,CAAC,KAAK,GAAG,KAAK,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QAC9C,IAAI,kBAAkB,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QAC7C,IAAI,kBAAkB,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QAC7C,IAAI,kBAAkB,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,oBAAoB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QAC9C,IAAI,kBAAkB,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC/C,OAAO,CAAC,KAAK,CAAC,qBAAqB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;;AA7BH,gDA8BC;AA7BgB,wBAAK,GAAa,QAAQ,CAAC,IAAI,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,38 +1,78 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "sinricpro",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
5
|
-
"main": "index.js",
|
|
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
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "sinricpro",
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"description": "Official SinricPro SDK for Node.js and TypeScript - Control IoT devices with Alexa and Google Home",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": "./dist/index.js",
|
|
8
|
+
"./devices": "./dist/devices/index.js",
|
|
9
|
+
"./capabilities": "./dist/capabilities/index.js"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"build:watch": "tsc --watch",
|
|
14
|
+
"test": "jest",
|
|
15
|
+
"test:watch": "jest --watch",
|
|
16
|
+
"test:coverage": "jest --coverage",
|
|
17
|
+
"lint": "eslint src/**/*.ts",
|
|
18
|
+
"lint:fix": "eslint src/**/*.ts --fix",
|
|
19
|
+
"format": "prettier --write \"src/**/*.ts\" \"examples/**/*.ts\" \"test/**/*.ts\"",
|
|
20
|
+
"prepublishOnly": "npm run lint && npm run build && npm test",
|
|
21
|
+
"example:switch": "ts-node examples/switch/index.ts",
|
|
22
|
+
"example:light": "ts-node examples/light/index.ts",
|
|
23
|
+
"example:thermostat": "ts-node examples/thermostat/index.ts",
|
|
24
|
+
"example:tv": "ts-node examples/tv/index.ts",
|
|
25
|
+
"example:fan": "ts-node examples/fan/index.ts",
|
|
26
|
+
"example:lock": "ts-node examples/lock/index.ts",
|
|
27
|
+
"example:windowac": "ts-node examples/windowac/index.ts",
|
|
28
|
+
"example:speaker": "ts-node examples/speaker/index.ts"
|
|
29
|
+
},
|
|
30
|
+
"keywords": [
|
|
31
|
+
"sinricpro",
|
|
32
|
+
"alexa",
|
|
33
|
+
"google-home",
|
|
34
|
+
"smart-home",
|
|
35
|
+
"iot",
|
|
36
|
+
"typescript",
|
|
37
|
+
"nodejs",
|
|
38
|
+
"websocket",
|
|
39
|
+
"home-automation"
|
|
40
|
+
],
|
|
41
|
+
"author": "SinricPro",
|
|
42
|
+
"license": "CC-BY-SA-4.0",
|
|
43
|
+
"repository": {
|
|
44
|
+
"type": "git",
|
|
45
|
+
"url": "https://github.com/sinricpro/nodejs-sdk.git"
|
|
46
|
+
},
|
|
47
|
+
"bugs": {
|
|
48
|
+
"url": "https://github.com/sinricpro/nodejs-sdk/issues"
|
|
49
|
+
},
|
|
50
|
+
"homepage": "https://sinric.pro",
|
|
51
|
+
"engines": {
|
|
52
|
+
"node": ">=16.0.0"
|
|
53
|
+
},
|
|
54
|
+
"files": [
|
|
55
|
+
"dist",
|
|
56
|
+
"README.md",
|
|
57
|
+
"LICENSE"
|
|
58
|
+
],
|
|
59
|
+
"sideEffects": false,
|
|
60
|
+
"dependencies": {
|
|
61
|
+
"ws": "^8.14.2"
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"@types/jest": "^29.5.5",
|
|
65
|
+
"@types/node": "^20.8.7",
|
|
66
|
+
"@types/ws": "^8.5.8",
|
|
67
|
+
"@typescript-eslint/eslint-plugin": "^6.9.0",
|
|
68
|
+
"@typescript-eslint/parser": "^6.9.0",
|
|
69
|
+
"eslint": "^8.52.0",
|
|
70
|
+
"eslint-config-prettier": "^9.0.0",
|
|
71
|
+
"eslint-plugin-prettier": "^5.0.1",
|
|
72
|
+
"jest": "^29.7.0",
|
|
73
|
+
"prettier": "^3.0.3",
|
|
74
|
+
"ts-jest": "^29.1.1",
|
|
75
|
+
"ts-node": "^10.9.1",
|
|
76
|
+
"typescript": "^5.2.2"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
|
|
2
|
-
# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages
|
|
3
|
-
|
|
4
|
-
name: Node.js Package
|
|
5
|
-
|
|
6
|
-
on:
|
|
7
|
-
release:
|
|
8
|
-
types: [created]
|
|
9
|
-
|
|
10
|
-
jobs:
|
|
11
|
-
build:
|
|
12
|
-
runs-on: ubuntu-latest
|
|
13
|
-
steps:
|
|
14
|
-
- uses: actions/checkout@v2
|
|
15
|
-
- uses: actions/setup-node@v2
|
|
16
|
-
with:
|
|
17
|
-
node-version: 16
|
|
18
|
-
- run: npm ci
|
|
19
|
-
|
|
20
|
-
publish-npm:
|
|
21
|
-
needs: build
|
|
22
|
-
runs-on: ubuntu-latest
|
|
23
|
-
steps:
|
|
24
|
-
- uses: actions/checkout@v2
|
|
25
|
-
- uses: actions/setup-node@v2
|
|
26
|
-
with:
|
|
27
|
-
node-version: 16
|
|
28
|
-
registry-url: https://registry.npmjs.org/
|
|
29
|
-
- run: npm ci
|
|
30
|
-
- run: npm publish
|
|
31
|
-
env:
|
|
32
|
-
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
|
package/.nvmrc
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
14
|
package/.prettierrc
DELETED
package/CHANGELOG.md
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
## [2.6.1]
|
|
2
|
-
|
|
3
|
-
### Features
|
|
4
|
-
|
|
5
|
-
* **Custom device types support**
|
|
6
|
-
* **SR_DEBUG to support debug logs**
|
|
7
|
-
|
|
8
|
-
## [2.7.1]
|
|
9
|
-
|
|
10
|
-
### Features
|
|
11
|
-
* **Push notification feature added**
|
|
12
|
-
|
|
13
|
-
## [2.8.1]
|
|
14
|
-
* feat: Camera support.
|
|
15
|
-
|
|
16
|
-
## [2.9.1]
|
|
17
|
-
|
|
18
|
-
### Features
|
|
19
|
-
* fix: setThermostatMode
|
|
20
|
-
|
|
21
|
-
## [2.10.1]
|
|
22
|
-
|
|
23
|
-
### Features
|
|
24
|
-
* fix: adjustTargetTemperature
|
|
25
|
-
|
|
26
|
-
## [2.11.1]
|
|
27
|
-
|
|
28
|
-
### Features
|
|
29
|
-
* fix: targetTemperature
|
|
30
|
-
|
|
31
|
-
## [2.11.2]
|
|
32
|
-
|
|
33
|
-
### Features
|
|
34
|
-
* fix: adjustTargetTemperature response format.
|
|
35
|
-
|
|
36
|
-
## [2.11.4]
|
|
37
|
-
|
|
38
|
-
### Features
|
|
39
|
-
* fix: power on, off event
|
|
40
|
-
|
|
41
|
-
## [2.12.1]
|
|
42
|
-
|
|
43
|
-
### Features
|
|
44
|
-
* fix: error message when sending an event while connection not established yet
|
|
45
|
-
* feat: add onConnected callback
|
package/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = require('./lib/sinrcpro');
|
package/lib/cbhandler.js
DELETED
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2019 Sinric. All rights reserved.
|
|
3
|
-
* Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
|
|
4
|
-
*
|
|
5
|
-
* This file is part of the Sinric Pro (https://github.com/sinricpro/)
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
const { getSignature, verifySignature } = require('./signature');
|
|
9
|
-
const { powerState, powerLevel, powerLevelAdjust } = require('./contorllers/power_controller');
|
|
10
|
-
const { Brightness, BrightnessAdjust } = require('./contorllers/brightness_controller');
|
|
11
|
-
const { Color } = require('./contorllers/color_controller');
|
|
12
|
-
const { ColorTemperature } = require('./contorllers/color_temperature');
|
|
13
|
-
const { ThermoStatMode, ThermoStatTemperature, Lock, AdjustTargetTemperature } = require('./contorllers/sensors_controller');
|
|
14
|
-
const { RangeValue, RangeValueAdjust } = require('./contorllers/range_value_controller');
|
|
15
|
-
const { Volume, VolumeAdjust, Mute } = require('./contorllers/tv_controller');
|
|
16
|
-
const { ChangeChannel, SkipChannel, Media } = require('./contorllers/tv_controller');
|
|
17
|
-
const { Input } = require('./contorllers/tv_controller');
|
|
18
|
-
const { Bands, BandReset } = require('./contorllers/speaker_controller');
|
|
19
|
-
const { AdjustBands } = require('./contorllers/speaker_controller');
|
|
20
|
-
const { ToggleState } = require('./contorllers/toggle_state_controller');
|
|
21
|
-
const { Mode } = require('./contorllers/mode_controller');
|
|
22
|
-
const { CameraStreamController } = require('./contorllers/camera_stream_controller');
|
|
23
|
-
const { UndefinedCallbackError, InvalidResponseError } = require('./errors/errors');
|
|
24
|
-
|
|
25
|
-
const jsonResponse = (client, defaultPayload, payloadValue, instanceId) => {
|
|
26
|
-
const header = {
|
|
27
|
-
payloadVersion: 2,
|
|
28
|
-
signatureVersion: 1,
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
let payload = {
|
|
32
|
-
action: defaultPayload.action,
|
|
33
|
-
clientId: defaultPayload.clientId,
|
|
34
|
-
createdAt: Math.floor(new Date() / 1000),
|
|
35
|
-
deviceId: defaultPayload.deviceId,
|
|
36
|
-
message: 'OK',
|
|
37
|
-
replyToken: defaultPayload.replyToken,
|
|
38
|
-
success: true,
|
|
39
|
-
type: 'response',
|
|
40
|
-
value: payloadValue,
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
if (instanceId) payload.instanceId = instanceId;
|
|
44
|
-
|
|
45
|
-
const signature = {
|
|
46
|
-
HMAC: getSignature(client, JSON.stringify(payload)),
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
return { header, payload, signature };
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
const handleError = (e) => {
|
|
53
|
-
if (e instanceof UndefinedCallbackError || e instanceof InvalidResponseError) {
|
|
54
|
-
console.error(e);
|
|
55
|
-
} else if (process.env.SR_DEBUG) console.log(e.message);
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
const handlePayload = (client, payload, signature, callbacks) => verifySignature(client, payload, signature)
|
|
59
|
-
.then((action) => {
|
|
60
|
-
/* eslint no-else-return: ["error", {allowElseIf: true}] */
|
|
61
|
-
if (action === 'setPowerState') {
|
|
62
|
-
return powerState(payload, callbacks)
|
|
63
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
64
|
-
.catch(handleError);
|
|
65
|
-
} else if (action === 'setPowerLevel') {
|
|
66
|
-
return powerLevel(payload, callbacks)
|
|
67
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
68
|
-
.catch(handleError);
|
|
69
|
-
} else if (action === 'adjustPowerLevel') {
|
|
70
|
-
return powerLevelAdjust(payload, callbacks)
|
|
71
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
72
|
-
.catch(handleError);
|
|
73
|
-
} else if (action === 'setBrightness') {
|
|
74
|
-
return Brightness(payload, callbacks)
|
|
75
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
76
|
-
.catch(handleError);
|
|
77
|
-
} else if (action === 'adjustBrightness') {
|
|
78
|
-
return BrightnessAdjust(payload, callbacks)
|
|
79
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
80
|
-
.catch(handleError);
|
|
81
|
-
} else if (action === 'setColor') {
|
|
82
|
-
return Color(payload, callbacks)
|
|
83
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
84
|
-
.catch(handleError);
|
|
85
|
-
} else if (action === 'setColorTemperature') {
|
|
86
|
-
return ColorTemperature(payload, callbacks)
|
|
87
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
88
|
-
.catch(handleError);
|
|
89
|
-
} else if (action === 'setThermostatMode') {
|
|
90
|
-
return ThermoStatMode(payload, callbacks)
|
|
91
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
92
|
-
.catch(handleError);
|
|
93
|
-
} else if (action === 'targetTemperature') {
|
|
94
|
-
return ThermoStatTemperature(payload, callbacks)
|
|
95
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
96
|
-
.catch(handleError);
|
|
97
|
-
} else if (action === 'setRangeValue') {
|
|
98
|
-
return RangeValue(payload, callbacks)
|
|
99
|
-
.then(([value, instanceId]) => jsonResponse(client, payload, value, instanceId))
|
|
100
|
-
.catch(handleError);
|
|
101
|
-
} else if (action === 'adjustRangeValue') {
|
|
102
|
-
return RangeValueAdjust(payload, callbacks)
|
|
103
|
-
.then(([value, instanceId]) => jsonResponse(client, payload, value, instanceId))
|
|
104
|
-
.catch(handleError);
|
|
105
|
-
} else if (action === 'setVolume') {
|
|
106
|
-
return Volume(payload, callbacks)
|
|
107
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
108
|
-
.catch(handleError);
|
|
109
|
-
} else if (action === 'adjustVolume') {
|
|
110
|
-
return VolumeAdjust(payload, callbacks)
|
|
111
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
112
|
-
.catch(handleError);
|
|
113
|
-
} else if (action === 'selectInput') {
|
|
114
|
-
return Input(payload, callbacks)
|
|
115
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
116
|
-
.catch(handleError);
|
|
117
|
-
} else if (action === 'mediaControl') {
|
|
118
|
-
return Media(payload, callbacks)
|
|
119
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
120
|
-
.catch(handleError);
|
|
121
|
-
} else if (action === 'changeChannel') {
|
|
122
|
-
return ChangeChannel(payload, callbacks)
|
|
123
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
124
|
-
.catch(handleError);
|
|
125
|
-
} else if (action === 'skipChannels') {
|
|
126
|
-
return SkipChannel(payload, callbacks)
|
|
127
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
128
|
-
.catch(handleError);
|
|
129
|
-
} else if (action === 'setBands') {
|
|
130
|
-
return Bands(payload, callbacks)
|
|
131
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
132
|
-
.catch(handleError);
|
|
133
|
-
} else if (action === 'adjustBands') {
|
|
134
|
-
return AdjustBands(payload, callbacks)
|
|
135
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
136
|
-
.catch(handleError);
|
|
137
|
-
} else if (action === 'resetBands') {
|
|
138
|
-
return BandReset(payload, callbacks)
|
|
139
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
140
|
-
.catch(handleError);
|
|
141
|
-
} else if (action === 'setMode') {
|
|
142
|
-
return Mode(payload, callbacks)
|
|
143
|
-
.then(([value, instanceId]) => jsonResponse(client, payload, value, instanceId))
|
|
144
|
-
.catch(handleError);
|
|
145
|
-
} else if (action === 'setLockState') {
|
|
146
|
-
return Lock(payload, callbacks)
|
|
147
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
148
|
-
.catch(handleError);
|
|
149
|
-
} else if (action === 'setMute') {
|
|
150
|
-
return Mute(payload, callbacks)
|
|
151
|
-
.then((value) => jsonResponse(client, payload, value))
|
|
152
|
-
.catch(handleError);
|
|
153
|
-
} else if (action === 'setToggleState') {
|
|
154
|
-
return ToggleState(payload, callbacks)
|
|
155
|
-
.then(([value, instanceId]) => jsonResponse(client, payload, value, instanceId))
|
|
156
|
-
.catch(handleError);
|
|
157
|
-
} else if (action === 'getWebRTCAnswer') {
|
|
158
|
-
return CameraStreamController(payload, callbacks)
|
|
159
|
-
.then((answer) => jsonResponse(client, payload, { answer }))
|
|
160
|
-
.catch(handleError);
|
|
161
|
-
} else if (action === 'getCameraStreamUrl') {
|
|
162
|
-
return CameraStreamController(payload, callbacks)
|
|
163
|
-
.then((url) => jsonResponse(client, payload, { url }))
|
|
164
|
-
.catch(handleError);
|
|
165
|
-
} else if (action === 'getWebRTCOffer') {
|
|
166
|
-
return CameraStreamController(payload, callbacks)
|
|
167
|
-
.then((offer) => jsonResponse(client, payload, { offer }))
|
|
168
|
-
.catch(handleError);
|
|
169
|
-
} else if (action === 'adjustTargetTemperature') {
|
|
170
|
-
return AdjustTargetTemperature(payload, callbacks)
|
|
171
|
-
.then((resp) => {
|
|
172
|
-
const { temperature } = resp;
|
|
173
|
-
return jsonResponse(client, payload, { temperature });
|
|
174
|
-
})
|
|
175
|
-
.catch(handleError);
|
|
176
|
-
}
|
|
177
|
-
return {};
|
|
178
|
-
})
|
|
179
|
-
.catch((err) => {
|
|
180
|
-
console.error(err);
|
|
181
|
-
});
|
|
182
|
-
module.exports = handlePayload;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2019 Sinric. All rights reserved.
|
|
3
|
-
* Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
|
|
4
|
-
*
|
|
5
|
-
* This file is part of the Sinric Pro (https://github.com/sinricpro/)
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
const sinricProData = require('../storage');
|
|
9
|
-
const { UndefinedCallbackError, InvalidResponseError } = require('../errors/errors');
|
|
10
|
-
|
|
11
|
-
const Brightness = async (payload, callback) => {
|
|
12
|
-
sinricProData.brightness = payload.value.brightness;
|
|
13
|
-
|
|
14
|
-
if (callback.setBrightness) {
|
|
15
|
-
const resp = await callback.setBrightness(payload.deviceId, sinricProData.brightness);
|
|
16
|
-
if (payload.value.brightness && resp) return payload.value;
|
|
17
|
-
throw new InvalidResponseError('brightness is undefined');
|
|
18
|
-
} else {
|
|
19
|
-
throw new UndefinedCallbackError('setBrightness callback is undefined.');
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
const BrightnessAdjust = async (payload, callback) => {
|
|
24
|
-
sinricProData.brightness += payload.value.brightnessDelta;
|
|
25
|
-
if (sinricProData.brightness < 0) {
|
|
26
|
-
sinricProData.brightness = 0;
|
|
27
|
-
} else if (sinricProData.brightness > 100) {
|
|
28
|
-
sinricProData.brightness = 100;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (callback.adjustBrightness) {
|
|
32
|
-
const resp = await callback.adjustBrightness(payload.deviceId, sinricProData.brightness);
|
|
33
|
-
if (payload.value.brightness && resp) return { brightness: sinricProData.brightness };
|
|
34
|
-
throw new InvalidResponseError('brightness is undefined');
|
|
35
|
-
} else {
|
|
36
|
-
throw new UndefinedCallbackError('setBrightness callback is undefined');
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
module.exports = { Brightness, BrightnessAdjust };
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2019 Sinric. All rights reserved.
|
|
3
|
-
* Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
|
|
4
|
-
*
|
|
5
|
-
* This file is part of the Sinric Pro (https://github.com/sinricpro/)
|
|
6
|
-
*/
|
|
7
|
-
const { UndefinedCallbackError, InvalidResponseError } = require("../errors/errors");
|
|
8
|
-
|
|
9
|
-
const CameraStreamController = async (payload, callbacks) => {
|
|
10
|
-
if (payload.action === "getWebRTCAnswer" && callbacks.getWebRTCAnswer) {
|
|
11
|
-
const data = await callbacks.getWebRTCAnswer(payload.deviceId, payload.value.offer);
|
|
12
|
-
|
|
13
|
-
if (data.answer) {
|
|
14
|
-
return data.answer;
|
|
15
|
-
}
|
|
16
|
-
throw new InvalidResponseError(" error");
|
|
17
|
-
}
|
|
18
|
-
if (payload.action === "getWebRTCOffer" && callbacks.getWebRTCOffer) {
|
|
19
|
-
const data = await callbacks.getWebRTCOffer(payload.deviceId);
|
|
20
|
-
|
|
21
|
-
if (data.offer) {
|
|
22
|
-
return data.offer;
|
|
23
|
-
}
|
|
24
|
-
throw new InvalidResponseError(" error");
|
|
25
|
-
}
|
|
26
|
-
else if (payload.action === "getCameraStreamUrl" && callbacks.getCameraStreamUrl) {
|
|
27
|
-
const data = await callbacks.getCameraStreamUrl(payload.deviceId, payload.value.protocol);
|
|
28
|
-
if (data.url) {
|
|
29
|
-
return data.url;
|
|
30
|
-
}
|
|
31
|
-
throw new InvalidResponseError("getCameraStreamUrl error");
|
|
32
|
-
} else {
|
|
33
|
-
throw new UndefinedCallbackError("getCameraStreamUrl callback is undefined.");
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
module.exports = {
|
|
38
|
-
CameraStreamController,
|
|
39
|
-
};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2019 Sinric. All rights reserved.
|
|
3
|
-
* Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
|
|
4
|
-
*
|
|
5
|
-
* This file is part of the Sinric Pro (https://github.com/sinricpro/)
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
const sinricProData = require('../storage');
|
|
9
|
-
const { UndefinedCallbackError, InvalidResponseError } = require('../errors/errors');
|
|
10
|
-
|
|
11
|
-
const Color = async (payload, callbacks) => {
|
|
12
|
-
sinricProData.color = payload.value.color;
|
|
13
|
-
|
|
14
|
-
if (callbacks.setColor) {
|
|
15
|
-
const resp = await callbacks.setColor(payload.deviceId, payload.value.color);
|
|
16
|
-
if (payload.value.color && resp) return payload.value;
|
|
17
|
-
throw new InvalidResponseError('Colors undefined');
|
|
18
|
-
} else {
|
|
19
|
-
throw new UndefinedCallbackError('setColor callback is undefined');
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
module.exports = { Color };
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2019 Sinric. All rights reserved.
|
|
3
|
-
* Licensed under Creative Commons Attribution-Share Alike (CC BY-SA)
|
|
4
|
-
*
|
|
5
|
-
* This file is part of the Sinric Pro (https://github.com/sinricpro/)
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
const sinricProData = require('../storage');
|
|
9
|
-
const { UndefinedCallbackError, InvalidResponseError } = require('../errors/errors');
|
|
10
|
-
|
|
11
|
-
const ColorTemperature = async (payload, callbacks) => {
|
|
12
|
-
sinricProData.colorTemperature = payload.value.colorTemperature;
|
|
13
|
-
|
|
14
|
-
if (callbacks.setColorTemperature) {
|
|
15
|
-
const resp = await callbacks.setColorTemperature(payload.deviceId, payload.value.colorTemperature);
|
|
16
|
-
if (payload.value.colorTemperature && resp) return payload.value;
|
|
17
|
-
throw new InvalidResponseError('color temperature is undefined');
|
|
18
|
-
} else {
|
|
19
|
-
throw new UndefinedCallbackError('setColorTemperature callback is undefined!');
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
module.exports = { ColorTemperature };
|