@homebridge-plugins/homebridge-tuya 2.3.0-beta.6 → 2.3.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.
Files changed (37) hide show
  1. package/ADVANCED_OPTIONS.md +17 -0
  2. package/CHANGELOG.md +31 -0
  3. package/README.md +2 -0
  4. package/config.schema.json +5 -85
  5. package/dist/accessory/AccessoryFactory.js +0 -1
  6. package/dist/accessory/AccessoryFactory.js.map +1 -1
  7. package/dist/accessory/BaseAccessory.js +1 -29
  8. package/dist/accessory/BaseAccessory.js.map +1 -1
  9. package/dist/accessory/GarageDoorAccessory.js +19 -2
  10. package/dist/accessory/GarageDoorAccessory.js.map +1 -1
  11. package/dist/accessory/SwitchAccessory.js +6 -3
  12. package/dist/accessory/SwitchAccessory.js.map +1 -1
  13. package/dist/accessory/characteristic/EnergyUsage.js.map +1 -1
  14. package/dist/accessory/characteristic/Name.js +10 -2
  15. package/dist/accessory/characteristic/Name.js.map +1 -1
  16. package/dist/accessory/characteristic/On.js +1 -1
  17. package/dist/accessory/characteristic/On.js.map +1 -1
  18. package/dist/config.js.map +1 -1
  19. package/dist/core/TuyaOpenAPI.js +2 -3
  20. package/dist/core/TuyaOpenAPI.js.map +1 -1
  21. package/dist/core/TuyaOpenMQ.js +2 -3
  22. package/dist/core/TuyaOpenMQ.js.map +1 -1
  23. package/dist/device/TuyaDeviceManager.js +2 -3
  24. package/dist/device/TuyaDeviceManager.js.map +1 -1
  25. package/dist/platform.js +4 -2
  26. package/dist/platform.js.map +1 -1
  27. package/dist/util/Logger.js +69 -9
  28. package/dist/util/Logger.js.map +1 -1
  29. package/dist/util/util.js +3 -32
  30. package/dist/util/util.js.map +1 -1
  31. package/package.json +5 -3
  32. package/dist/accessory/characteristic/EnumOn.js +0 -48
  33. package/dist/accessory/characteristic/EnumOn.js.map +0 -1
  34. package/dist/accessory/characteristic/ExtraCharacteristicAdapter.js +0 -197
  35. package/dist/accessory/characteristic/ExtraCharacteristicAdapter.js.map +0 -1
  36. package/dist/accessory/characteristic/RawOn.js +0 -93
  37. package/dist/accessory/characteristic/RawOn.js.map +0 -1
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.configureEnumOn = configureEnumOn;
4
- const TuyaDevice_1 = require("../../device/TuyaDevice");
5
- const Name_1 = require("./Name");
6
- function configureEnumOn(accessory, schema) {
7
- if (!schema || schema.type !== TuyaDevice_1.TuyaDeviceSchemaType.Enum) {
8
- return {};
9
- }
10
- const enumCodes = schema.property.range;
11
- const switches = {};
12
- for (const index in enumCodes) {
13
- const enumCode = enumCodes[index];
14
- const enumDP = createEnumOnDPCode(schema, enumCode);
15
- const service = accessory.accessory.getServiceById(accessory.Service.Switch, enumDP)
16
- || accessory.accessory.addService(accessory.Service.Switch, schema.code, enumDP);
17
- (0, Name_1.configureName)(accessory, service, service.subtype || enumDP);
18
- service.getCharacteristic(accessory.Characteristic.On)
19
- .onSet(async (value) => {
20
- if (value) {
21
- await accessory.sendCommands([{
22
- code: schema.code,
23
- value: enumCode,
24
- }], true);
25
- // Mutually Exclusive Selection(radio button style)
26
- Object.entries(switches).forEach(([key, service]) => {
27
- if (key !== createEnumOnDPCode(schema, enumCode)) {
28
- const characteristic = service.getCharacteristic(accessory.Characteristic.On);
29
- if (characteristic.value) {
30
- characteristic.updateValue(false);
31
- }
32
- }
33
- });
34
- }
35
- })
36
- .onGet(() => {
37
- accessory.checkOnlineStatus();
38
- const status = accessory.getStatus(schema.code);
39
- return status.value === enumCode;
40
- });
41
- switches[enumDP] = service;
42
- }
43
- return switches;
44
- }
45
- function createEnumOnDPCode(schema, enumCode) {
46
- return `${schema.code}-${enumCode}`;
47
- }
48
- //# sourceMappingURL=EnumOn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EnumOn.js","sourceRoot":"","sources":["../../../src/accessory/characteristic/EnumOn.ts"],"names":[],"mappings":";;AAKA,0CAyCC;AA7CD,wDAA+G;AAE/G,iCAAuC;AAEvC,SAAgB,eAAe,CAAC,SAAwB,EAAE,MAAwB;IAChF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,iCAAoB,CAAC,IAAI,EAAE,CAAC;QACzD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,SAAS,GAAI,MAAM,CAAC,QAAyC,CAAC,KAAK,CAAC;IAC1E,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAE5C,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;eAC/E,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAEnF,IAAA,oBAAa,EAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;QAC7D,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;aACnD,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC;wBAC5B,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,KAAK,EAAE,QAAQ;qBAChB,CAAC,EAAE,IAAI,CAAC,CAAC;gBACV,mDAAmD;gBACnD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;oBAClD,IAAI,GAAG,KAAK,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;wBACjD,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;wBAC9E,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;4BACzB,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;wBACpC,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,SAAS,CAAC,iBAAiB,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAE,CAAC;YACjD,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC;QACnC,CAAC,CAAC,CAAC;QAEL,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;IAC7B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAwB,EAAE,QAAgB;IACpE,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;AACtC,CAAC"}
@@ -1,197 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.configureExtraCharactersitcs = configureExtraCharactersitcs;
4
- // eslint-disable-next-line max-len
5
- const TuyaDevice_1 = require("../../device/TuyaDevice");
6
- const Name_1 = require("./Name");
7
- const On_1 = require("./On");
8
- const EnumOn_1 = require("./EnumOn");
9
- const util_1 = require("../../util/util");
10
- const RawOn_1 = require("./RawOn");
11
- function configureExtraCharactersitcs(accessory, schema) {
12
- const schemaConfig = accessory.platform.getDeviceConfig(accessory.device)?.schema?.find(item => {
13
- return item.code === schema.code;
14
- });
15
- if (schemaConfig && schemaConfig.hidden) {
16
- return;
17
- }
18
- if (isExtraSwitch(accessory, schema)) {
19
- createExtraSwitch(accessory, schema);
20
- }
21
- else if (isExtraEnumSwitch(accessory, schema)) {
22
- createExtraEnumSwitch(accessory, schema);
23
- }
24
- else if (isExtraSlider(accessory, schema)) {
25
- createExtraSlider(accessory, schema);
26
- }
27
- else if (isExtraRawSwitch(accessory, schema)) {
28
- createExtraRawSwitch(accessory, schema);
29
- }
30
- }
31
- function isExtraSchema(accessory, schema) {
32
- const schemaConfig = accessory.platform.getDeviceConfig(accessory.device)?.schema?.find(item => {
33
- return item.code === schema.code;
34
- });
35
- if (schemaConfig) {
36
- if (isExtraCharacteristic(accessory.device, schemaConfig)) { // generated by configureDeviceSpecificFeatures function
37
- return true;
38
- }
39
- else if (schemaConfig?.extra) { // User-defined
40
- return true;
41
- }
42
- return false;
43
- }
44
- if (accessory.supportedDPs.has(schema.code)) {
45
- return false;
46
- }
47
- return true;
48
- }
49
- function isExtraCharacteristic(device, schemaConfig) {
50
- if (schemaConfig.newCode === undefined) {
51
- return false;
52
- }
53
- const oldSchema = device.schema.find(schema => {
54
- // ignore case
55
- return schema.code.toLowerCase() === schemaConfig.code.toLowerCase();
56
- });
57
- const newSchema = device.schema.find(schema => {
58
- // ignore case
59
- return schema.code.toLowerCase() === schemaConfig.newCode.toLowerCase();
60
- });
61
- console.log('isExtraSchema oldSchema:' + JSON.stringify(oldSchema) + ', newSchema:' + JSON.stringify(newSchema));
62
- return !oldSchema && newSchema;
63
- }
64
- function isExtraRawSwitch(accessory, schema) {
65
- if (schema.mode !== 'rw') {
66
- return false;
67
- }
68
- if (schema.type !== TuyaDevice_1.TuyaDeviceSchemaType.Raw) {
69
- return false;
70
- }
71
- return isExtraSchema(accessory, schema);
72
- }
73
- function isExtraEnumSwitch(accessory, schema) {
74
- if (schema.mode !== 'rw') {
75
- return false;
76
- }
77
- if (schema.type !== TuyaDevice_1.TuyaDeviceSchemaType.Enum) {
78
- return false;
79
- }
80
- return isExtraSchema(accessory, schema);
81
- }
82
- function isExtraSlider(accessory, schema) {
83
- if (schema.mode !== 'rw') {
84
- return false;
85
- }
86
- if (schema.type !== TuyaDevice_1.TuyaDeviceSchemaType.Integer) {
87
- return false;
88
- }
89
- return isExtraSchema(accessory, schema);
90
- }
91
- function isExtraSwitch(accessory, schema) {
92
- if (schema.mode !== 'rw') {
93
- return false;
94
- }
95
- if (schema.type !== TuyaDevice_1.TuyaDeviceSchemaType.Boolean) {
96
- return false;
97
- }
98
- return isExtraSchema(accessory, schema);
99
- }
100
- function createExtraSwitch(accessory, schema) {
101
- const service = accessory.accessory.getServiceById(schema.code, schema.code)
102
- || accessory.accessory.addService(accessory.Service.Switch, schema.code, schema.code);
103
- (0, Name_1.configureName)(accessory, service, service.displayName);
104
- (0, On_1.configureOn)(accessory, service, schema);
105
- accessory.log.info('add extra switch:' + schema.code
106
- + ', index:' + accessory.accessory.services.indexOf(service));
107
- }
108
- function createExtraRawSwitch(accessory, schema) {
109
- const schemaConfig = accessory.platform.getDeviceConfig(accessory.device)?.schema?.find(item => {
110
- return item.code === schema.code;
111
- });
112
- const switches = (0, RawOn_1.configureRawOn)(accessory, schema, schemaConfig?.extraRawSwitch ?? []);
113
- Object.entries(switches).forEach(([key, value]) => {
114
- const schemaConfig = accessory.platform.getDeviceConfig(accessory.device)?.schema?.find(item => {
115
- return item.code === key;
116
- });
117
- if (schemaConfig && schemaConfig.hidden) {
118
- accessory.accessory.removeService(value);
119
- }
120
- else {
121
- accessory.log.info('add extra raw switch:' + schema.code
122
- + ', enum DP:' + key
123
- + ', index:' + accessory.accessory.services.indexOf(value));
124
- }
125
- });
126
- }
127
- function createExtraEnumSwitch(accessory, schema) {
128
- const switches = (0, EnumOn_1.configureEnumOn)(accessory, accessory.getSchema(schema.code) ?? schema);
129
- Object.entries(switches).forEach(([key, value]) => {
130
- const schemaConfig = accessory.platform.getDeviceConfig(accessory.device)?.schema?.find(item => {
131
- return item.code === key;
132
- });
133
- if (schemaConfig && schemaConfig.hidden) {
134
- accessory.accessory.removeService(value);
135
- }
136
- else {
137
- accessory.log.info('add extra enum switch:' + schema.code
138
- + ', enum DP:' + key
139
- + ', index:' + accessory.accessory.services.indexOf(value));
140
- }
141
- });
142
- }
143
- function createExtraSlider(accessory, schema) {
144
- const prop = schema.property;
145
- let service;
146
- switch (prop.unit) {
147
- case '℃':
148
- case '℉':
149
- case '°C':
150
- case '°F':
151
- service = createExtraTemperatureSlider(accessory, schema);
152
- break;
153
- default:
154
- service = createExtraBrightnessSlider(accessory, schema);
155
- }
156
- let dummyCode = schema.code + '_switch';
157
- accessory.log.info('slider switch DPCode:' + dummyCode);
158
- const schemaConfig = accessory.platform.getDeviceConfig(accessory.device)?.schema?.find(item => item.code === dummyCode);
159
- if (schemaConfig && schemaConfig.newCode) {
160
- accessory.log.info('DPCode updated. ' + dummyCode + ' -> ' + schemaConfig.newCode);
161
- dummyCode = schemaConfig.newCode;
162
- // to ignore generated dummy code
163
- schemaConfig.code = dummyCode;
164
- const dummySchema = {
165
- code: dummyCode,
166
- type: TuyaDevice_1.TuyaDeviceSchemaType.Boolean,
167
- mode: TuyaDevice_1.TuyaDeviceSchemaMode.READ_WRITE,
168
- property: {},
169
- };
170
- (0, On_1.configureOn)(accessory, service, dummySchema);
171
- }
172
- (0, Name_1.configureName)(accessory, service, schema.code);
173
- accessory.log.info('add extra slider:' + schema.code
174
- + ', index:' + accessory.accessory.services.indexOf(service));
175
- }
176
- function createExtraTemperatureSlider(accessory, schema) {
177
- // TODO: Tempurature
178
- return createExtraBrightnessSlider(accessory, schema);
179
- }
180
- function createExtraBrightnessSlider(accessory, schema) {
181
- const service = accessory.accessory.getServiceById(schema.code, 'lightbulb_' + schema.code)
182
- || accessory.accessory.addService(accessory.Service.Lightbulb, schema.code, 'lightbulb_' + schema.code);
183
- const props = (0, util_1.toHapProperty)(schema.property);
184
- service.getCharacteristic(accessory.Characteristic.Brightness)
185
- .onGet(() => {
186
- const value = Number(accessory.getStatus(schema.code)?.value) || 0;
187
- return value;
188
- })
189
- .onSet(async (value) => {
190
- const commands = [];
191
- commands.push({ code: schema.code, value: Number(value) });
192
- await accessory.sendCommands(commands, true);
193
- })
194
- .setProps(props);
195
- return service;
196
- }
197
- //# sourceMappingURL=ExtraCharacteristicAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExtraCharacteristicAdapter.js","sourceRoot":"","sources":["../../../src/accessory/characteristic/ExtraCharacteristicAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,93 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.configureRawOn = configureRawOn;
4
- const TuyaDevice_1 = require("../../device/TuyaDevice");
5
- const Name_1 = require("./Name");
6
- const util_1 = require("../../util/util");
7
- function configureRawOn(accessory, schema, rawSwitchConfigs) {
8
- if (!schema || schema.type !== TuyaDevice_1.TuyaDeviceSchemaType.Raw) {
9
- return {};
10
- }
11
- const switches = {};
12
- for (const index in rawSwitchConfigs) {
13
- const rawSwitchConfig = rawSwitchConfigs[index];
14
- const dp = createRawOnDPCode(schema, index);
15
- const service = accessory.accessory.getServiceById(accessory.Service.Switch, dp)
16
- || accessory.accessory.addService(accessory.Service.Switch, rawSwitchConfig.configuredName, dp);
17
- (0, Name_1.configureName)(accessory, service, rawSwitchConfig.configuredName);
18
- service.getCharacteristic(accessory.Characteristic.On)
19
- .onSet(async (value) => {
20
- if (value === true) {
21
- const status = accessory.getStatus(schema.code);
22
- let after;
23
- if (status.value) {
24
- accessory.log.debug(`before:${Buffer.from(status.value, 'base64').toString('hex')}`);
25
- after = createRawData(status.value, rawSwitchConfig);
26
- accessory.log.debug(`after :${Buffer.from(after, 'base64').toString('hex')}`);
27
- await accessory.sendCommands([{
28
- code: schema.code,
29
- value: after,
30
- }], true);
31
- }
32
- else {
33
- accessory.log.warn(`${rawSwitchConfig.configuredName} status is undefined.`);
34
- // create dummy bytes
35
- const dummy = Buffer.alloc(rawSwitchConfig.byteIndex + 1).toString('base64');
36
- accessory.log.debug(`before:${Buffer.from(dummy, 'base64').toString('hex')}`);
37
- after = createRawData(dummy, rawSwitchConfig);
38
- accessory.log.debug(`after :${Buffer.from(after, 'base64').toString('hex')}`);
39
- await accessory.sendCommands([{
40
- code: schema.code,
41
- value: after,
42
- }], true);
43
- }
44
- // Turn off the conflicting switch.
45
- Object.values(switches).forEach((service, i) => {
46
- const conf = rawSwitchConfigs[i];
47
- const tempAfter = createRawData(after, conf);
48
- if (tempAfter !== after) {
49
- const characteristic = service.getCharacteristic(accessory.Characteristic.On);
50
- if (characteristic.value) {
51
- characteristic.updateValue(false);
52
- }
53
- }
54
- });
55
- }
56
- else {
57
- // RawOn switch can only be turned on.
58
- service.updateCharacteristic(accessory.Characteristic.On, true);
59
- }
60
- })
61
- .onGet(() => {
62
- accessory.checkOnlineStatus();
63
- const status = accessory.getStatus(schema.code);
64
- if (status.value) {
65
- const after = createRawData(status.value, rawSwitchConfig);
66
- return status.value === after;
67
- }
68
- else {
69
- return false;
70
- }
71
- });
72
- switches[dp] = service;
73
- }
74
- return switches;
75
- }
76
- function createRawOnDPCode(schema, index) {
77
- return `${schema.code}-${index}`;
78
- }
79
- function createRawData(src, rawSwitchConfig) {
80
- let dst;
81
- switch (rawSwitchConfig.notation) {
82
- case 'base64':
83
- dst = (0, util_1.updateBase64)(src, rawSwitchConfig.byteIndex, Buffer.from(rawSwitchConfig.value.replace(/^0x/, ''), 'hex'));
84
- break;
85
- case 'hex':
86
- dst = (0, util_1.updateHex)(src, rawSwitchConfig.byteIndex, Buffer.from(rawSwitchConfig.value.replace(/^0x/, ''), 'hex'));
87
- break;
88
- default:
89
- throw new Error(`unsupported notation:${rawSwitchConfig.notation}`);
90
- }
91
- return dst;
92
- }
93
- //# sourceMappingURL=RawOn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RawOn.js","sourceRoot":"","sources":["../../../src/accessory/characteristic/RawOn.ts"],"names":[],"mappings":"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"}