@homebridge-plugins/homebridge-tuya 2.7.1-beta.2 → 2.7.1-beta.3
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.
|
@@ -6,12 +6,14 @@ exports.integerToPercentageProperty = integerToPercentageProperty;
|
|
|
6
6
|
exports.enumToPercentageProperty = enumToPercentageProperty;
|
|
7
7
|
const TuyaDevice_1 = require("../../device/TuyaDevice");
|
|
8
8
|
const util_1 = require("../../util/util");
|
|
9
|
+
// Used to determine whether a STOPPED status code is included.
|
|
10
|
+
const StopCodes = ['stop', '0', 'closed', 'level_0'];
|
|
9
11
|
function configureRotationSpeed(accessory, service, schema) {
|
|
10
12
|
if (!schema) {
|
|
11
13
|
return;
|
|
12
14
|
}
|
|
13
15
|
if (schema.type === TuyaDevice_1.TuyaDeviceSchemaType.Enum) {
|
|
14
|
-
configureRotationSpeedEnum(accessory, service, schema, ['auto']);
|
|
16
|
+
configureRotationSpeedEnum(accessory, service, schema, ['auto', 'smart']);
|
|
15
17
|
}
|
|
16
18
|
else if (schema.type === TuyaDevice_1.TuyaDeviceSchemaType.Integer) {
|
|
17
19
|
configureRotationSpeedInteger(accessory, service, schema);
|
|
@@ -67,11 +69,12 @@ function configureRotationSpeedEnum(accessory, service, schema, ignoreValues) {
|
|
|
67
69
|
range.push(value);
|
|
68
70
|
}
|
|
69
71
|
cloneProperty.range = range;
|
|
70
|
-
const
|
|
72
|
+
const includesStopCode = StopCodes.some(value => range.includes(value));
|
|
73
|
+
const rotationSpeedProperty = enumToPercentageProperty(cloneProperty, includesStopCode);
|
|
71
74
|
const onGetHandler = () => {
|
|
72
75
|
const status = accessory.getStatus(schema.code);
|
|
73
76
|
const index = range.indexOf(status.value);
|
|
74
|
-
const level = index + 1;
|
|
77
|
+
const level = includesStopCode ? index : index + 1;
|
|
75
78
|
const hapValue = level * rotationSpeedProperty.minStep;
|
|
76
79
|
accessory.log.debug(`(get) value from device: ${status.value} (${typeof status.value})`);
|
|
77
80
|
accessory.log.debug(`to home app: ${hapValue} (${typeof hapValue})`);
|
|
@@ -85,7 +88,9 @@ function configureRotationSpeedEnum(accessory, service, schema, ignoreValues) {
|
|
|
85
88
|
if (!Number.isFinite(percent) || percent <= 0) {
|
|
86
89
|
return;
|
|
87
90
|
}
|
|
88
|
-
const
|
|
91
|
+
const level = Math.floor(percent / rotationSpeedProperty.minStep);
|
|
92
|
+
const index = includesStopCode ? level : level - 1;
|
|
93
|
+
const speed = cloneProperty.range[index];
|
|
89
94
|
accessory.log.debug(`(set) value from Home app: ${value} (${typeof value})`);
|
|
90
95
|
accessory.log.debug(`to device: ${speed} (${typeof speed})`);
|
|
91
96
|
await accessory.sendCommands([{ code: schema.code, value: speed }], true);
|
|
@@ -152,9 +157,9 @@ function integerToPercentageProperty(property) {
|
|
|
152
157
|
}
|
|
153
158
|
return { minValue: 0, maxValue: 100, minStep: Math.floor(100 / stepCount), unit: '%' };
|
|
154
159
|
}
|
|
155
|
-
function enumToPercentageProperty(property) {
|
|
160
|
+
function enumToPercentageProperty(property, includesStopCode) {
|
|
156
161
|
const min = 0;
|
|
157
|
-
const max = property.range.length;
|
|
162
|
+
const max = includesStopCode ? property.range.length - 1 : property.range.length;
|
|
158
163
|
const step = 1;
|
|
159
164
|
return integerToPercentageProperty({ min: min, max: max, step: step, scale: 0, unit: '%' });
|
|
160
165
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RotationSpeed.js","sourceRoot":"","sources":["../../../src/accessory/characteristic/RotationSpeed.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"RotationSpeed.js","sourceRoot":"","sources":["../../../src/accessory/characteristic/RotationSpeed.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@homebridge-plugins/homebridge-tuya",
|
|
3
3
|
"displayName": "Homebridge Tuya",
|
|
4
|
-
"version": "2.7.1-beta.
|
|
4
|
+
"version": "2.7.1-beta.3",
|
|
5
5
|
"description": "Forked from 0x5e/homebridge-tuya-platform, with a focus on fixing bugs and adding new device support.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -77,7 +77,12 @@ describe('convert property', () => {
|
|
|
77
77
|
|
|
78
78
|
test('enumToPercentageProperty returns 25% steps for 4 enum values', () => {
|
|
79
79
|
const property = { range: ['low', 'medium', 'high', 'auto'] } as unknown as TuyaDeviceSchemaEnumProperty;
|
|
80
|
-
expect(enumToPercentageProperty(property)).toEqual({ minValue: 0, maxValue: 100, minStep: 25, unit: '%' });
|
|
80
|
+
expect(enumToPercentageProperty(property, false)).toEqual({ minValue: 0, maxValue: 100, minStep: 25, unit: '%' });
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
test('enumToPercentageProperty returns 25% steps for 5 enum values(including stop code)', () => {
|
|
84
|
+
const property = { range: ['stop', 'low', 'medium', 'high', 'auto'] } as unknown as TuyaDeviceSchemaEnumProperty;
|
|
85
|
+
expect(enumToPercentageProperty(property, true)).toEqual({ minValue: 0, maxValue: 100, minStep: 25, unit: '%' });
|
|
81
86
|
});
|
|
82
87
|
|
|
83
88
|
});
|