@mp-consulting/homebridge-daikin-cloud 1.3.5 → 1.3.7
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 +39 -1
- package/README.md +5 -3
- package/dist/src/accessories/air-conditioning-accessory.d.ts +2 -2
- package/dist/src/accessories/air-conditioning-accessory.d.ts.map +1 -1
- package/dist/src/accessories/air-conditioning-accessory.js.map +1 -1
- package/dist/src/accessories/altherma-accessory.d.ts +2 -2
- package/dist/src/accessories/altherma-accessory.d.ts.map +1 -1
- package/dist/src/accessories/altherma-accessory.js.map +1 -1
- package/dist/src/accessories/base-accessory.d.ts +6 -6
- package/dist/src/accessories/base-accessory.d.ts.map +1 -1
- package/dist/src/accessories/base-accessory.js +15 -15
- package/dist/src/accessories/base-accessory.js.map +1 -1
- package/dist/src/api/daikin-api.d.ts +26 -26
- package/dist/src/api/daikin-api.d.ts.map +1 -1
- package/dist/src/api/daikin-api.js +68 -42
- package/dist/src/api/daikin-api.js.map +1 -1
- package/dist/src/api/daikin-cloud.repository.d.ts.map +1 -1
- package/dist/src/api/daikin-cloud.repository.js +22 -14
- package/dist/src/api/daikin-cloud.repository.js.map +1 -1
- package/dist/src/api/daikin-controller.d.ts +41 -47
- package/dist/src/api/daikin-controller.d.ts.map +1 -1
- package/dist/src/api/daikin-controller.js +40 -64
- package/dist/src/api/daikin-controller.js.map +1 -1
- package/dist/src/api/daikin-device.d.ts +36 -31
- package/dist/src/api/daikin-device.d.ts.map +1 -1
- package/dist/src/api/daikin-device.js +45 -31
- package/dist/src/api/daikin-device.js.map +1 -1
- package/dist/src/api/daikin-mobile-oauth.d.ts +20 -20
- package/dist/src/api/daikin-mobile-oauth.d.ts.map +1 -1
- package/dist/src/api/daikin-mobile-oauth.js +49 -44
- package/dist/src/api/daikin-mobile-oauth.js.map +1 -1
- package/dist/src/api/daikin-oauth.d.ts +32 -32
- package/dist/src/api/daikin-oauth.d.ts.map +1 -1
- package/dist/src/api/daikin-oauth.js +64 -56
- package/dist/src/api/daikin-oauth.js.map +1 -1
- package/dist/src/api/daikin-schemas.d.ts +476 -351
- package/dist/src/api/daikin-schemas.d.ts.map +1 -1
- package/dist/src/api/daikin-schemas.js +11 -42
- package/dist/src/api/daikin-schemas.js.map +1 -1
- package/dist/src/api/daikin-types.d.ts +5 -1
- package/dist/src/api/daikin-types.d.ts.map +1 -1
- package/dist/src/api/daikin-types.js.map +1 -1
- package/dist/src/api/daikin-websocket.d.ts +31 -32
- package/dist/src/api/daikin-websocket.d.ts.map +1 -1
- package/dist/src/api/daikin-websocket.js +55 -35
- package/dist/src/api/daikin-websocket.js.map +1 -1
- package/dist/src/api/index.d.ts +2 -1
- package/dist/src/api/index.d.ts.map +1 -1
- package/dist/src/api/index.js +3 -1
- package/dist/src/api/index.js.map +1 -1
- package/dist/src/api/token-storage.d.ts +21 -0
- package/dist/src/api/token-storage.d.ts.map +1 -0
- package/dist/src/api/token-storage.js +90 -0
- package/dist/src/api/token-storage.js.map +1 -0
- package/dist/src/config/config-manager.d.ts +33 -33
- package/dist/src/config/config-manager.d.ts.map +1 -1
- package/dist/src/config/config-manager.js +33 -33
- package/dist/src/config/config-manager.js.map +1 -1
- package/dist/src/constants/api.constants.d.ts +4 -0
- package/dist/src/constants/api.constants.d.ts.map +1 -1
- package/dist/src/constants/api.constants.js +5 -1
- package/dist/src/constants/api.constants.js.map +1 -1
- package/dist/src/constants/device.constants.d.ts +4 -0
- package/dist/src/constants/device.constants.d.ts.map +1 -1
- package/dist/src/constants/device.constants.js +5 -1
- package/dist/src/constants/device.constants.js.map +1 -1
- package/dist/src/device/accessory-factory.d.ts +10 -10
- package/dist/src/device/accessory-factory.d.ts.map +1 -1
- package/dist/src/device/accessory-factory.js +7 -7
- package/dist/src/device/accessory-factory.js.map +1 -1
- package/dist/src/device/capability-detector.d.ts +8 -8
- package/dist/src/device/capability-detector.d.ts.map +1 -1
- package/dist/src/device/capability-detector.js +6 -6
- package/dist/src/device/capability-detector.js.map +1 -1
- package/dist/src/device/capability-docs.d.ts +1 -9
- package/dist/src/device/capability-docs.d.ts.map +1 -1
- package/dist/src/device/capability-docs.js +19 -73
- package/dist/src/device/capability-docs.js.map +1 -1
- package/dist/src/device/profiles/device-profile.d.ts +1 -1
- package/dist/src/device/profiles/device-profile.d.ts.map +1 -1
- package/dist/src/device/profiles/device-profile.js +4 -4
- package/dist/src/device/profiles/device-profile.js.map +1 -1
- package/dist/src/features/base-feature.d.ts +2 -2
- package/dist/src/features/base-feature.d.ts.map +1 -1
- package/dist/src/features/base-feature.js +2 -3
- package/dist/src/features/base-feature.js.map +1 -1
- package/dist/src/features/feature-manager.d.ts +8 -16
- package/dist/src/features/feature-manager.d.ts.map +1 -1
- package/dist/src/features/feature-manager.js +5 -17
- package/dist/src/features/feature-manager.js.map +1 -1
- package/dist/src/features/modes/dry-operation-mode.feature.d.ts +1 -1
- package/dist/src/features/modes/dry-operation-mode.feature.d.ts.map +1 -1
- package/dist/src/features/modes/dry-operation-mode.feature.js.map +1 -1
- package/dist/src/features/modes/econo-mode.feature.d.ts +1 -1
- package/dist/src/features/modes/econo-mode.feature.d.ts.map +1 -1
- package/dist/src/features/modes/econo-mode.feature.js.map +1 -1
- package/dist/src/features/modes/fan-only-operation-mode.feature.d.ts +1 -1
- package/dist/src/features/modes/fan-only-operation-mode.feature.d.ts.map +1 -1
- package/dist/src/features/modes/fan-only-operation-mode.feature.js.map +1 -1
- package/dist/src/features/modes/indoor-silent-mode.feature.d.ts +1 -1
- package/dist/src/features/modes/indoor-silent-mode.feature.d.ts.map +1 -1
- package/dist/src/features/modes/indoor-silent-mode.feature.js.map +1 -1
- package/dist/src/features/modes/outdoor-silent-mode.feature.d.ts +1 -1
- package/dist/src/features/modes/outdoor-silent-mode.feature.d.ts.map +1 -1
- package/dist/src/features/modes/outdoor-silent-mode.feature.js.map +1 -1
- package/dist/src/features/modes/powerful-mode.feature.d.ts +1 -1
- package/dist/src/features/modes/powerful-mode.feature.d.ts.map +1 -1
- package/dist/src/features/modes/powerful-mode.feature.js.map +1 -1
- package/dist/src/features/modes/streamer-mode.feature.d.ts +1 -1
- package/dist/src/features/modes/streamer-mode.feature.d.ts.map +1 -1
- package/dist/src/features/modes/streamer-mode.feature.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/platform.d.ts +11 -8
- package/dist/src/platform.d.ts.map +1 -1
- package/dist/src/platform.js +64 -15
- package/dist/src/platform.js.map +1 -1
- package/dist/src/services/climate-control.service.d.ts +8 -2
- package/dist/src/services/climate-control.service.d.ts.map +1 -1
- package/dist/src/services/climate-control.service.js +59 -58
- package/dist/src/services/climate-control.service.js.map +1 -1
- package/dist/src/services/hot-water-tank.service.d.ts +6 -2
- package/dist/src/services/hot-water-tank.service.d.ts.map +1 -1
- package/dist/src/services/hot-water-tank.service.js +33 -31
- package/dist/src/services/hot-water-tank.service.js.map +1 -1
- package/dist/src/types/daikin-enums.js +12 -12
- package/dist/src/types/daikin-enums.js.map +1 -1
- package/dist/src/types/device-capabilities.d.ts +1 -1
- package/dist/src/types/device-capabilities.d.ts.map +1 -1
- package/dist/src/utils/log-context.d.ts +23 -23
- package/dist/src/utils/log-context.d.ts.map +1 -1
- package/dist/src/utils/log-context.js +28 -28
- package/dist/src/utils/log-context.js.map +1 -1
- package/dist/src/utils/strings.d.ts.map +1 -1
- package/dist/src/utils/strings.js.map +1 -1
- package/dist/src/utils/update-mapper.d.ts +16 -16
- package/dist/src/utils/update-mapper.d.ts.map +1 -1
- package/dist/src/utils/update-mapper.js +14 -14
- package/dist/src/utils/update-mapper.js.map +1 -1
- package/homebridge-ui/public/index.html +2 -2
- package/homebridge-ui/public/script.js +957 -898
- package/homebridge-ui/server.js +746 -678
- package/package.json +29 -27
- package/.claude/settings.json +0 -3
- package/.claude/settings.local.json +0 -29
- package/CHANGELOG.md +0 -103
- package/CLAUDE.md +0 -269
- package/config.md +0 -2
- package/dist/src/api/daikin-device-tracker.d.ts +0 -97
- package/dist/src/api/daikin-device-tracker.d.ts.map +0 -1
- package/dist/src/api/daikin-device-tracker.js +0 -136
- package/dist/src/api/daikin-device-tracker.js.map +0 -1
- package/dist/src/api/http-interceptor.d.ts +0 -99
- package/dist/src/api/http-interceptor.d.ts.map +0 -1
- package/dist/src/api/http-interceptor.js +0 -177
- package/dist/src/api/http-interceptor.js.map +0 -1
- package/dist/src/di/service-container.d.ts +0 -92
- package/dist/src/di/service-container.d.ts.map +0 -1
- package/dist/src/di/service-container.js +0 -156
- package/dist/src/di/service-container.js.map +0 -1
- package/dist/src/features/feature-registry.d.ts +0 -100
- package/dist/src/features/feature-registry.d.ts.map +0 -1
- package/dist/src/features/feature-registry.js +0 -142
- package/dist/src/features/feature-registry.js.map +0 -1
- package/dist/src/services/service-factory.d.ts +0 -46
- package/dist/src/services/service-factory.d.ts.map +0 -1
- package/dist/src/services/service-factory.js +0 -72
- package/dist/src/services/service-factory.js.map +0 -1
- package/dist/src/utils/error-handler.d.ts +0 -101
- package/dist/src/utils/error-handler.d.ts.map +0 -1
- package/dist/src/utils/error-handler.js +0 -251
- package/dist/src/utils/error-handler.js.map +0 -1
- package/dist/src/utils/retry.d.ts +0 -42
- package/dist/src/utils/retry.d.ts.map +0 -1
- package/dist/src/utils/retry.js +0 -70
- package/dist/src/utils/retry.js.map +0 -1
- package/docs/ARCHITECTURE.md +0 -645
- package/docs/IMPLEMENTATION_GUIDE.md +0 -899
- package/docs/IMPROVEMENTS_SUMMARY.md +0 -415
- package/docs/NEXT_STEPS.md +0 -368
- package/docs/Screenshot 2024-07-04 at 18.41.28.png +0 -0
- package/docs/TROUBLESHOOTING.md +0 -475
- package/docs/api-response-for-BRP069A8x.json +0 -520
- package/docs/api-response-for-BRP069C4x-2.json +0 -881
- package/docs/api-response-for-BRP069C4x.json +0 -916
- package/docs/api-response-for-altherma.json +0 -759
- package/docs/api-response-for-altherma2.json +0 -2735
- package/docs/api-response-with-multiple-devices-incl-heatpump.json +0 -2544
- package/docs/cr-insance-altherma-id-0.json +0 -834
- package/docs/mock-air-to-air-dx23.json +0 -759
- package/docs/mock-air-to-air-dx4.json +0 -1134
- package/docs/mock-airpurifier-with-humidifier.json +0 -732
- package/docs/mock-airpurifier.json +0 -450
- package/docs/mock-altherma-air-to-water-lan.json +0 -845
- package/docs/mock-altherma-air-to-water-wlan.json +0 -845
- package/docs/mock-d2cnd-gas-boiler.json +0 -649
- package/docs/setpointmode-vs-controlmode-vs-setpoints-vs-sensorydata.txt +0 -6
- package/images/fan-speed.jpeg +0 -0
- package/images/homekit-controls.jpeg +0 -0
- package/images/homekit-settings.jpeg +0 -0
- package/images/swing-mode.png +0 -0
- package/jest.config.ts +0 -13
- package/test/fixtures/altherma-crSense-2.ts +0 -834
- package/test/fixtures/altherma-fraction.ts +0 -718
- package/test/fixtures/altherma-heat-pump-2.ts +0 -479
- package/test/fixtures/altherma-heat-pump.ts +0 -757
- package/test/fixtures/altherma-miladcerkic-off.ts +0 -524
- package/test/fixtures/altherma-miladcerkic.ts +0 -524
- package/test/fixtures/altherma-v1ckoeln.ts +0 -644
- package/test/fixtures/altherma-with-embedded-id-zero.ts +0 -834
- package/test/fixtures/dx23-airco-2.ts +0 -343
- package/test/fixtures/dx23-airco.ts +0 -518
- package/test/fixtures/dx4-airco.ts +0 -914
- package/test/fixtures/unknown-jan.ts +0 -488
- package/test/fixtures/unknown-kitchen-guests.ts +0 -488
- package/test/helpers/test-isolation.ts +0 -228
- package/test/integration/air-conditioning.test.ts +0 -410
- package/test/integration/altherma.test.ts +0 -289
- package/test/integration/platform.test.ts +0 -118
- package/test/mocks/index.ts +0 -27
- package/test/test-gigya-auth.js +0 -443
- package/test/test-mobile-oauth.js +0 -175
- package/test/test-websocket-mobile.js +0 -123
- package/test/test-websocket.js +0 -116
- package/test/unit/api/__snapshots__/daikinCloud.test.ts.snap +0 -1320
- package/test/unit/api/daikin-api.test.ts +0 -384
- package/test/unit/api/daikin-oauth.test.ts +0 -214
- package/test/unit/api/daikinCloud.test.ts +0 -12
- package/test/unit/config/config-manager.test.ts +0 -271
- package/test/unit/device/daikin-device.test.ts +0 -79
- package/test/unit/services/hot-water-tank.service.test.ts +0 -123
- package/test/unit/utils/error-handler.test.ts +0 -274
- package/test/unit/utils/log-context.test.ts +0 -271
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-storage.d.ts","sourceRoot":"","sources":["../../../src/api/token-storage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM/C;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAgBnE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAM1E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQtD"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Token Storage Utility
|
|
4
|
+
*
|
|
5
|
+
* Provides shared token file operations for OAuth clients.
|
|
6
|
+
* Ensures consistent file permissions and error handling.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.loadTokenFromFile = loadTokenFromFile;
|
|
43
|
+
exports.saveTokenToFile = saveTokenToFile;
|
|
44
|
+
exports.deleteTokenFile = deleteTokenFile;
|
|
45
|
+
const fs = __importStar(require("node:fs"));
|
|
46
|
+
const daikin_schemas_1 = require("./daikin-schemas");
|
|
47
|
+
/** File permissions: owner read/write only */
|
|
48
|
+
const TOKEN_FILE_MODE = 0o600;
|
|
49
|
+
/**
|
|
50
|
+
* Load a token set from a file.
|
|
51
|
+
* Validates the loaded data against the TokenSetSchema.
|
|
52
|
+
*/
|
|
53
|
+
function loadTokenFromFile(filePath) {
|
|
54
|
+
try {
|
|
55
|
+
if (fs.existsSync(filePath)) {
|
|
56
|
+
const data = fs.readFileSync(filePath, 'utf8');
|
|
57
|
+
const parsed = JSON.parse(data);
|
|
58
|
+
const result = daikin_schemas_1.TokenSetSchema.safeParse(parsed);
|
|
59
|
+
if (result.success) {
|
|
60
|
+
return result.data;
|
|
61
|
+
}
|
|
62
|
+
// Token file has invalid structure - treat as missing
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Return null on any read/parse error
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Save a token set to a file with restricted permissions.
|
|
73
|
+
*/
|
|
74
|
+
function saveTokenToFile(filePath, tokenSet) {
|
|
75
|
+
fs.writeFileSync(filePath, JSON.stringify(tokenSet, null, 2), { encoding: 'utf8', mode: TOKEN_FILE_MODE });
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Delete a token file if it exists.
|
|
79
|
+
*/
|
|
80
|
+
function deleteTokenFile(filePath) {
|
|
81
|
+
try {
|
|
82
|
+
if (fs.existsSync(filePath)) {
|
|
83
|
+
fs.unlinkSync(filePath);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Ignore delete errors
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=token-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-storage.js","sourceRoot":"","sources":["../../../src/api/token-storage.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaH,8CAgBC;AAKD,0CAMC;AAKD,0CAQC;AAnDD,4CAA8B;AAE9B,qDAAkD;AAElD,8CAA8C;AAC9C,MAAM,eAAe,GAAG,KAAK,CAAC;AAE9B;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,QAAgB;IAChD,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,+BAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,MAAM,CAAC,IAAgB,CAAC;YACjC,CAAC;YACD,sDAAsD;YACtD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,QAAgB,EAAE,QAAkB;IAClE,EAAE,CAAC,aAAa,CACd,QAAQ,EACR,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EACjC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,CAC5C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uBAAuB;IACzB,CAAC;AACH,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Centralizes configuration management with validation,
|
|
5
5
|
* defaults, and type-safe access to config values.
|
|
6
6
|
*/
|
|
7
|
-
import { AuthMode } from '../api/daikin-types';
|
|
7
|
+
import type { AuthMode } from '../api/daikin-types';
|
|
8
8
|
export interface PluginConfig {
|
|
9
9
|
platform: string;
|
|
10
10
|
name?: string;
|
|
@@ -50,24 +50,24 @@ export declare class ConfigManager {
|
|
|
50
50
|
private normalized;
|
|
51
51
|
constructor(config: PluginConfig);
|
|
52
52
|
/**
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
* Get the normalized configuration with defaults applied
|
|
54
|
+
*/
|
|
55
55
|
getNormalized(): NormalizedConfig;
|
|
56
56
|
/**
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
* Get authentication mode
|
|
58
|
+
*/
|
|
59
59
|
getAuthMode(): AuthMode;
|
|
60
60
|
/**
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
* Check if mobile app mode is enabled
|
|
62
|
+
*/
|
|
63
63
|
isMobileAppMode(): boolean;
|
|
64
64
|
/**
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
* Check if developer portal mode is enabled
|
|
66
|
+
*/
|
|
67
67
|
isDeveloperPortalMode(): boolean;
|
|
68
68
|
/**
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
* Get developer portal credentials
|
|
70
|
+
*/
|
|
71
71
|
getDeveloperCredentials(): {
|
|
72
72
|
clientId: string;
|
|
73
73
|
clientSecret: string;
|
|
@@ -76,58 +76,58 @@ export declare class ConfigManager {
|
|
|
76
76
|
oidcCallbackServerBindAddr?: string;
|
|
77
77
|
} | null;
|
|
78
78
|
/**
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
* Get mobile app credentials
|
|
80
|
+
*/
|
|
81
81
|
getMobileCredentials(): {
|
|
82
82
|
email: string;
|
|
83
83
|
password: string;
|
|
84
84
|
} | null;
|
|
85
85
|
/**
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
* Get update interval in milliseconds
|
|
87
|
+
*/
|
|
88
88
|
getUpdateIntervalMs(): number;
|
|
89
89
|
/**
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
* Get force update delay in milliseconds
|
|
91
|
+
*/
|
|
92
92
|
getForceUpdateDelayMs(): number;
|
|
93
93
|
/**
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
* Get excluded device IDs as a Set
|
|
95
|
+
*/
|
|
96
96
|
getExcludedDeviceIds(): Set<string>;
|
|
97
97
|
/**
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
* Check if a device is excluded
|
|
99
|
+
*/
|
|
100
100
|
isDeviceExcluded(deviceId: string): boolean;
|
|
101
101
|
/**
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
* Get feature configuration
|
|
103
|
+
*/
|
|
104
104
|
getFeatures(): NormalizedConfig['features'];
|
|
105
105
|
/**
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
* Check if WebSocket is enabled
|
|
107
|
+
*/
|
|
108
108
|
isWebSocketEnabled(): boolean;
|
|
109
109
|
/**
|
|
110
|
-
|
|
111
|
-
|
|
110
|
+
* Validate configuration using Zod schemas
|
|
111
|
+
*/
|
|
112
112
|
validateWithZod(): {
|
|
113
113
|
valid: boolean;
|
|
114
114
|
errors: string[];
|
|
115
115
|
};
|
|
116
116
|
/**
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
* Validate configuration
|
|
118
|
+
*/
|
|
119
119
|
validate(): {
|
|
120
120
|
valid: boolean;
|
|
121
121
|
errors: string[];
|
|
122
122
|
warnings: string[];
|
|
123
123
|
};
|
|
124
124
|
/**
|
|
125
|
-
|
|
126
|
-
|
|
125
|
+
* Normalize the configuration with all defaults applied
|
|
126
|
+
*/
|
|
127
127
|
private normalize;
|
|
128
128
|
/**
|
|
129
|
-
|
|
130
|
-
|
|
129
|
+
* Get raw config value (escape hatch for migration)
|
|
130
|
+
*/
|
|
131
131
|
getRawConfig(): PluginConfig;
|
|
132
132
|
}
|
|
133
133
|
//# sourceMappingURL=config-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../../src/config/config-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../../src/config/config-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,8 +16,8 @@ class ConfigManager {
|
|
|
16
16
|
this.config = config;
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
* Get the normalized configuration with defaults applied
|
|
20
|
+
*/
|
|
21
21
|
getNormalized() {
|
|
22
22
|
if (!this.normalized) {
|
|
23
23
|
this.normalized = this.normalize();
|
|
@@ -25,26 +25,26 @@ class ConfigManager {
|
|
|
25
25
|
return this.normalized;
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
* Get authentication mode
|
|
29
|
+
*/
|
|
30
30
|
getAuthMode() {
|
|
31
31
|
return this.config.authMode === 'mobile_app' ? 'mobile_app' : 'developer_portal';
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
* Check if mobile app mode is enabled
|
|
35
|
+
*/
|
|
36
36
|
isMobileAppMode() {
|
|
37
37
|
return this.getAuthMode() === 'mobile_app';
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
* Check if developer portal mode is enabled
|
|
41
|
+
*/
|
|
42
42
|
isDeveloperPortalMode() {
|
|
43
43
|
return this.getAuthMode() === 'developer_portal';
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
* Get developer portal credentials
|
|
47
|
+
*/
|
|
48
48
|
getDeveloperCredentials() {
|
|
49
49
|
const { clientId, clientSecret, callbackServerExternalAddress, callbackServerPort } = this.config;
|
|
50
50
|
if (!clientId || !clientSecret || !callbackServerExternalAddress) {
|
|
@@ -59,8 +59,8 @@ class ConfigManager {
|
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
* Get mobile app credentials
|
|
63
|
+
*/
|
|
64
64
|
getMobileCredentials() {
|
|
65
65
|
const { daikinEmail, daikinPassword } = this.config;
|
|
66
66
|
if (!daikinEmail || !daikinPassword) {
|
|
@@ -72,33 +72,33 @@ class ConfigManager {
|
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
74
|
/**
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
* Get update interval in milliseconds
|
|
76
|
+
*/
|
|
77
77
|
getUpdateIntervalMs() {
|
|
78
78
|
const minutes = this.config.updateIntervalInMinutes || constants_1.DEFAULT_UPDATE_INTERVAL_MINUTES;
|
|
79
79
|
return constants_1.ONE_MINUTE_MS * minutes;
|
|
80
80
|
}
|
|
81
81
|
/**
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
* Get force update delay in milliseconds
|
|
83
|
+
*/
|
|
84
84
|
getForceUpdateDelayMs() {
|
|
85
85
|
return this.config.forceUpdateDelay ?? constants_1.DEFAULT_FORCE_UPDATE_DELAY_MS;
|
|
86
86
|
}
|
|
87
87
|
/**
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
* Get excluded device IDs as a Set
|
|
89
|
+
*/
|
|
90
90
|
getExcludedDeviceIds() {
|
|
91
91
|
return new Set(this.config.excludedDevicesByDeviceId || []);
|
|
92
92
|
}
|
|
93
93
|
/**
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
* Check if a device is excluded
|
|
95
|
+
*/
|
|
96
96
|
isDeviceExcluded(deviceId) {
|
|
97
97
|
return this.getExcludedDeviceIds().has(deviceId);
|
|
98
98
|
}
|
|
99
99
|
/**
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
* Get feature configuration
|
|
101
|
+
*/
|
|
102
102
|
getFeatures() {
|
|
103
103
|
const legacy = this.config.showExtraFeatures === true;
|
|
104
104
|
return {
|
|
@@ -112,18 +112,18 @@ class ConfigManager {
|
|
|
112
112
|
};
|
|
113
113
|
}
|
|
114
114
|
/**
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
* Check if WebSocket is enabled
|
|
116
|
+
*/
|
|
117
117
|
isWebSocketEnabled() {
|
|
118
118
|
return this.config.enableWebSocket !== false;
|
|
119
119
|
}
|
|
120
120
|
/**
|
|
121
|
-
|
|
122
|
-
|
|
121
|
+
* Validate configuration using Zod schemas
|
|
122
|
+
*/
|
|
123
123
|
validateWithZod() {
|
|
124
124
|
const configData = {
|
|
125
125
|
authMode: this.getAuthMode(),
|
|
126
|
-
tokenFilePath: '',
|
|
126
|
+
tokenFilePath: '', // This will be set by the controller
|
|
127
127
|
clientId: this.config.clientId,
|
|
128
128
|
clientSecret: this.config.clientSecret,
|
|
129
129
|
callbackServerExternalAddress: this.config.callbackServerExternalAddress,
|
|
@@ -142,8 +142,8 @@ class ConfigManager {
|
|
|
142
142
|
return { valid: true, errors: [] };
|
|
143
143
|
}
|
|
144
144
|
/**
|
|
145
|
-
|
|
146
|
-
|
|
145
|
+
* Validate configuration
|
|
146
|
+
*/
|
|
147
147
|
validate() {
|
|
148
148
|
const errors = [];
|
|
149
149
|
const warnings = [];
|
|
@@ -210,8 +210,8 @@ class ConfigManager {
|
|
|
210
210
|
};
|
|
211
211
|
}
|
|
212
212
|
/**
|
|
213
|
-
|
|
214
|
-
|
|
213
|
+
* Normalize the configuration with all defaults applied
|
|
214
|
+
*/
|
|
215
215
|
normalize() {
|
|
216
216
|
return {
|
|
217
217
|
authMode: this.getAuthMode(),
|
|
@@ -223,8 +223,8 @@ class ConfigManager {
|
|
|
223
223
|
};
|
|
224
224
|
}
|
|
225
225
|
/**
|
|
226
|
-
|
|
227
|
-
|
|
226
|
+
* Get raw config value (escape hatch for migration)
|
|
227
|
+
*/
|
|
228
228
|
getRawConfig() {
|
|
229
229
|
return this.config;
|
|
230
230
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../../src/config/config-manager.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,
|
|
1
|
+
{"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../../src/config/config-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,4 +29,8 @@ export declare const MAX_RETRY_ATTEMPTS = 3;
|
|
|
29
29
|
export declare const RETRY_BASE_DELAY_MS = 1000;
|
|
30
30
|
/** Maximum delay for exponential backoff (milliseconds) */
|
|
31
31
|
export declare const RETRY_MAX_DELAY_MS = 10000;
|
|
32
|
+
/** HTTP request timeout (milliseconds) */
|
|
33
|
+
export declare const HTTP_REQUEST_TIMEOUT_MS = 30000;
|
|
34
|
+
/** Daikin WebSocket URL for real-time updates */
|
|
35
|
+
export declare const DAIKIN_WEBSOCKET_URL = "wss://wsapi.onecta.daikineurope.com";
|
|
32
36
|
//# sourceMappingURL=api.constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.constants.d.ts","sourceRoot":"","sources":["../../../src/constants/api.constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAwB;AACxB,eAAO,MAAM,WAAW;;;;;;;;;;;;CAYd,CAAC;AAEX,4DAA4D;AAC5D,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,8DAA8D;AAC9D,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAElD,kFAAkF;AAClF,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,2DAA2D;AAC3D,eAAO,MAAM,kBAAkB,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"api.constants.d.ts","sourceRoot":"","sources":["../../../src/constants/api.constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAwB;AACxB,eAAO,MAAM,WAAW;;;;;;;;;;;;CAYd,CAAC;AAEX,4DAA4D;AAC5D,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,8DAA8D;AAC9D,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAElD,kFAAkF;AAClF,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,2DAA2D;AAC3D,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AAExC,0CAA0C;AAC1C,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAE7C,iDAAiD;AACjD,eAAO,MAAM,oBAAoB,wCAAwC,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Constants related to API communication, rate limiting, and retries.
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.RETRY_MAX_DELAY_MS = exports.RETRY_BASE_DELAY_MS = exports.MAX_RETRY_ATTEMPTS = exports.RATE_LIMIT_WARNING_THRESHOLD = exports.MAX_RATE_LIMIT_BLOCK_SECONDS = exports.DEFAULT_RETRY_AFTER_SECONDS = exports.HTTP_STATUS = void 0;
|
|
8
|
+
exports.DAIKIN_WEBSOCKET_URL = exports.HTTP_REQUEST_TIMEOUT_MS = exports.RETRY_MAX_DELAY_MS = exports.RETRY_BASE_DELAY_MS = exports.MAX_RETRY_ATTEMPTS = exports.RATE_LIMIT_WARNING_THRESHOLD = exports.MAX_RATE_LIMIT_BLOCK_SECONDS = exports.DEFAULT_RETRY_AFTER_SECONDS = exports.HTTP_STATUS = void 0;
|
|
9
9
|
/** HTTP Status Codes */
|
|
10
10
|
exports.HTTP_STATUS = {
|
|
11
11
|
OK: 200,
|
|
@@ -32,4 +32,8 @@ exports.MAX_RETRY_ATTEMPTS = 3;
|
|
|
32
32
|
exports.RETRY_BASE_DELAY_MS = 1000;
|
|
33
33
|
/** Maximum delay for exponential backoff (milliseconds) */
|
|
34
34
|
exports.RETRY_MAX_DELAY_MS = 10000;
|
|
35
|
+
/** HTTP request timeout (milliseconds) */
|
|
36
|
+
exports.HTTP_REQUEST_TIMEOUT_MS = 30000;
|
|
37
|
+
/** Daikin WebSocket URL for real-time updates */
|
|
38
|
+
exports.DAIKIN_WEBSOCKET_URL = 'wss://wsapi.onecta.daikineurope.com';
|
|
35
39
|
//# sourceMappingURL=api.constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.constants.js","sourceRoot":"","sources":["../../../src/constants/api.constants.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,wBAAwB;AACX,QAAA,WAAW,GAAG;
|
|
1
|
+
{"version":3,"file":"api.constants.js","sourceRoot":"","sources":["../../../src/constants/api.constants.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,wBAAwB;AACX,QAAA,WAAW,GAAG;IACzB,EAAE,EAAE,GAAG;IACP,UAAU,EAAE,GAAG;IACf,WAAW,EAAE,GAAG;IAChB,YAAY,EAAE,GAAG;IACjB,SAAS,EAAE,GAAG;IACd,QAAQ,EAAE,GAAG;IACb,oBAAoB,EAAE,GAAG;IACzB,iBAAiB,EAAE,GAAG;IACtB,WAAW,EAAE,GAAG;IAChB,mBAAmB,EAAE,GAAG;IACxB,eAAe,EAAE,GAAG;CACZ,CAAC;AAEX,4DAA4D;AAC/C,QAAA,2BAA2B,GAAG,EAAE,CAAC;AAE9C,8DAA8D;AACjD,QAAA,4BAA4B,GAAG,KAAK,CAAC;AAElD,kFAAkF;AACrE,QAAA,4BAA4B,GAAG,EAAE,CAAC;AAE/C,wDAAwD;AAC3C,QAAA,kBAAkB,GAAG,CAAC,CAAC;AAEpC,wDAAwD;AAC3C,QAAA,mBAAmB,GAAG,IAAI,CAAC;AAExC,2DAA2D;AAC9C,QAAA,kBAAkB,GAAG,KAAK,CAAC;AAExC,0CAA0C;AAC7B,QAAA,uBAAuB,GAAG,KAAK,CAAC;AAE7C,iDAAiD;AACpC,QAAA,oBAAoB,GAAG,qCAAqC,CAAC"}
|
|
@@ -15,6 +15,10 @@ export declare const HOMEKIT_TEMP_MIN = 10;
|
|
|
15
15
|
export declare const HOMEKIT_TEMP_MAX = 38;
|
|
16
16
|
/** Cooling temperature clamp maximum (°C) */
|
|
17
17
|
export declare const COOLING_TEMP_CLAMP_MAX = 35;
|
|
18
|
+
/** Heating temperature clamp minimum (°C) */
|
|
19
|
+
export declare const HEATING_TEMP_CLAMP_MIN = 0;
|
|
20
|
+
/** Heating temperature clamp maximum (°C) */
|
|
21
|
+
export declare const HEATING_TEMP_CLAMP_MAX = 25;
|
|
18
22
|
/** Fan speed levels (1-5) to HomeKit percentage multiplier */
|
|
19
23
|
export declare const FAN_SPEED_TO_PERCENTAGE_MULTIPLIER = 20;
|
|
20
24
|
/** Minimum fan speed level */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.constants.d.ts","sourceRoot":"","sources":["../../../src/constants/device.constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,oEAAoE;AACpE,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,yEAAyE;AACzE,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD,iEAAiE;AACjE,eAAO,MAAM,oCAAoC,KAAK,CAAC;AAEvD,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,6CAA6C;AAC7C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAMzC,8DAA8D;AAC9D,eAAO,MAAM,kCAAkC,KAAK,CAAC;AAErD,8BAA8B;AAC9B,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,8BAA8B;AAC9B,eAAO,MAAM,aAAa,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"device.constants.d.ts","sourceRoot":"","sources":["../../../src/constants/device.constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,oEAAoE;AACpE,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,yEAAyE;AACzE,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD,iEAAiE;AACjE,eAAO,MAAM,oCAAoC,KAAK,CAAC;AAEvD,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,6CAA6C;AAC7C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,6CAA6C;AAC7C,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,6CAA6C;AAC7C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAMzC,8DAA8D;AAC9D,eAAO,MAAM,kCAAkC,KAAK,CAAC;AAErD,8BAA8B;AAC9B,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,8BAA8B;AAC9B,eAAO,MAAM,aAAa,IAAI,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Constants related to device characteristics, temperatures, and fan speeds.
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.FAN_SPEED_MAX = exports.FAN_SPEED_MIN = exports.FAN_SPEED_TO_PERCENTAGE_MULTIPLIER = exports.COOLING_TEMP_CLAMP_MAX = exports.HOMEKIT_TEMP_MAX = exports.HOMEKIT_TEMP_MIN = exports.DEFAULT_HOT_WATER_TARGET_TEMPERATURE = exports.DEFAULT_HOT_WATER_TEMPERATURE = exports.DEFAULT_ROOM_TEMPERATURE = void 0;
|
|
8
|
+
exports.FAN_SPEED_MAX = exports.FAN_SPEED_MIN = exports.FAN_SPEED_TO_PERCENTAGE_MULTIPLIER = exports.HEATING_TEMP_CLAMP_MAX = exports.HEATING_TEMP_CLAMP_MIN = exports.COOLING_TEMP_CLAMP_MAX = exports.HOMEKIT_TEMP_MAX = exports.HOMEKIT_TEMP_MIN = exports.DEFAULT_HOT_WATER_TARGET_TEMPERATURE = exports.DEFAULT_HOT_WATER_TEMPERATURE = exports.DEFAULT_ROOM_TEMPERATURE = void 0;
|
|
9
9
|
// =============================================================================
|
|
10
10
|
// Temperature Constants
|
|
11
11
|
// =============================================================================
|
|
@@ -21,6 +21,10 @@ exports.HOMEKIT_TEMP_MIN = 10;
|
|
|
21
21
|
exports.HOMEKIT_TEMP_MAX = 38;
|
|
22
22
|
/** Cooling temperature clamp maximum (°C) */
|
|
23
23
|
exports.COOLING_TEMP_CLAMP_MAX = 35;
|
|
24
|
+
/** Heating temperature clamp minimum (°C) */
|
|
25
|
+
exports.HEATING_TEMP_CLAMP_MIN = 0;
|
|
26
|
+
/** Heating temperature clamp maximum (°C) */
|
|
27
|
+
exports.HEATING_TEMP_CLAMP_MAX = 25;
|
|
24
28
|
// =============================================================================
|
|
25
29
|
// Fan Speed Constants
|
|
26
30
|
// =============================================================================
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.constants.js","sourceRoot":"","sources":["../../../src/constants/device.constants.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAEhF,oEAAoE;AACvD,QAAA,wBAAwB,GAAG,EAAE,CAAC;AAE3C,yEAAyE;AAC5D,QAAA,6BAA6B,GAAG,EAAE,CAAC;AAEhD,iEAAiE;AACpD,QAAA,oCAAoC,GAAG,EAAE,CAAC;AAEvD,sDAAsD;AACzC,QAAA,gBAAgB,GAAG,EAAE,CAAC;AAEnC,sDAAsD;AACzC,QAAA,gBAAgB,GAAG,EAAE,CAAC;AAEnC,6CAA6C;AAChC,QAAA,sBAAsB,GAAG,EAAE,CAAC;AAEzC,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,8DAA8D;AACjD,QAAA,kCAAkC,GAAG,EAAE,CAAC;AAErD,8BAA8B;AACjB,QAAA,aAAa,GAAG,CAAC,CAAC;AAE/B,8BAA8B;AACjB,QAAA,aAAa,GAAG,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"device.constants.js","sourceRoot":"","sources":["../../../src/constants/device.constants.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAEhF,oEAAoE;AACvD,QAAA,wBAAwB,GAAG,EAAE,CAAC;AAE3C,yEAAyE;AAC5D,QAAA,6BAA6B,GAAG,EAAE,CAAC;AAEhD,iEAAiE;AACpD,QAAA,oCAAoC,GAAG,EAAE,CAAC;AAEvD,sDAAsD;AACzC,QAAA,gBAAgB,GAAG,EAAE,CAAC;AAEnC,sDAAsD;AACzC,QAAA,gBAAgB,GAAG,EAAE,CAAC;AAEnC,6CAA6C;AAChC,QAAA,sBAAsB,GAAG,EAAE,CAAC;AAEzC,6CAA6C;AAChC,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAExC,6CAA6C;AAChC,QAAA,sBAAsB,GAAG,EAAE,CAAC;AAEzC,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,8DAA8D;AACjD,QAAA,kCAAkC,GAAG,EAAE,CAAC;AAErD,8BAA8B;AACjB,QAAA,aAAa,GAAG,CAAC,CAAC;AAE/B,8BAA8B;AACjB,QAAA,aAAa,GAAG,CAAC,CAAC"}
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* Factory for creating accessories based on device profiles.
|
|
5
5
|
* Replaces hard-coded device type checks in platform.ts.
|
|
6
6
|
*/
|
|
7
|
-
import { PlatformAccessory } from 'homebridge';
|
|
8
|
-
import { DaikinCloudAccessoryContext, DaikinCloudPlatform } from '../platform';
|
|
9
|
-
import { DeviceProfile } from './profiles/device-profile';
|
|
10
|
-
import { BaseAccessory } from '../accessories';
|
|
7
|
+
import type { PlatformAccessory } from 'homebridge';
|
|
8
|
+
import type { DaikinCloudAccessoryContext, DaikinCloudPlatform } from '../platform';
|
|
9
|
+
import type { DeviceProfile } from './profiles/device-profile';
|
|
10
|
+
import type { BaseAccessory } from '../accessories';
|
|
11
11
|
/**
|
|
12
12
|
* Result of accessory creation
|
|
13
13
|
*/
|
|
@@ -23,14 +23,14 @@ export declare class AccessoryFactory {
|
|
|
23
23
|
private readonly log;
|
|
24
24
|
constructor(platform: DaikinCloudPlatform);
|
|
25
25
|
/**
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
* Create an accessory for the given platform accessory.
|
|
27
|
+
* Uses the device profile to determine which accessory class to instantiate.
|
|
28
|
+
*/
|
|
29
29
|
createAccessory(platformAccessory: PlatformAccessory<DaikinCloudAccessoryContext>): AccessoryFactoryResult;
|
|
30
30
|
/**
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
* Get the profile for a device without creating an accessory.
|
|
32
|
+
* Useful for logging and diagnostics.
|
|
33
|
+
*/
|
|
34
34
|
getDeviceProfile(platformAccessory: PlatformAccessory<DaikinCloudAccessoryContext>): DeviceProfile;
|
|
35
35
|
}
|
|
36
36
|
//# sourceMappingURL=accessory-factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accessory-factory.d.ts","sourceRoot":"","sources":["../../../src/device/accessory-factory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"accessory-factory.d.ts","sourceRoot":"","sources":["../../../src/device/accessory-factory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAU,MAAM,YAAY,CAAC;AAC5D,OAAO,KAAK,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,SAAS,EAAE,aAAa,CAAC;IACzB,OAAO,EAAE,aAAa,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAEjB,QAAQ,EAAE,mBAAmB;IAKzC;;;SAGK;IACL,eAAe,CACb,iBAAiB,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,GAChE,sBAAsB;IAmCzB;;;SAGK;IACL,gBAAgB,CACd,iBAAiB,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,GAChE,aAAa;CAGjB"}
|
|
@@ -20,9 +20,9 @@ class AccessoryFactory {
|
|
|
20
20
|
this.log = platform.log;
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
* Create an accessory for the given platform accessory.
|
|
24
|
+
* Uses the device profile to determine which accessory class to instantiate.
|
|
25
|
+
*/
|
|
26
26
|
createAccessory(platformAccessory) {
|
|
27
27
|
const device = platformAccessory.context.device;
|
|
28
28
|
const profile = (0, device_profile_1.matchDeviceProfile)(device);
|
|
@@ -43,16 +43,16 @@ class AccessoryFactory {
|
|
|
43
43
|
}
|
|
44
44
|
else {
|
|
45
45
|
throw new Error(`Unsupported device type: ${device.getDescription().deviceModel}. ` +
|
|
46
|
-
|
|
46
|
+
'Device has no climate control management point.');
|
|
47
47
|
}
|
|
48
48
|
break;
|
|
49
49
|
}
|
|
50
50
|
return { accessory, profile };
|
|
51
51
|
}
|
|
52
52
|
/**
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
* Get the profile for a device without creating an accessory.
|
|
54
|
+
* Useful for logging and diagnostics.
|
|
55
|
+
*/
|
|
56
56
|
getDeviceProfile(platformAccessory) {
|
|
57
57
|
return (0, device_profile_1.matchDeviceProfile)(platformAccessory.context.device);
|
|
58
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accessory-factory.js","sourceRoot":"","sources":["../../../src/device/accessory-factory.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;
|
|
1
|
+
{"version":3,"file":"accessory-factory.js","sourceRoot":"","sources":["../../../src/device/accessory-factory.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAKH,8DAA2E;AAE3E,gDAA6E;AAU7E;;GAEG;AACH,MAAa,gBAAgB;IACV,QAAQ,CAAsB;IAC9B,GAAG,CAAS;IAE7B,YAAY,QAA6B;QACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;IAC1B,CAAC;IAED;;;SAGK;IACL,eAAe,CACb,iBAAiE;QAEjE,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC;QAChD,MAAM,OAAO,GAAG,IAAA,mCAAkB,EAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,0DAA0D,OAAO,CAAC,IAAI,IAAI;YACpE,UAAU,MAAM,CAAC,cAAc,EAAE,CAAC,WAAW,IAAI;YACjD,iBAAiB,OAAO,CAAC,WAAW,EAAE,CAC7C,CAAC;QAEF,IAAI,SAAwB,CAAC;QAE7B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,2BAAU,CAAC,QAAQ;gBACtB,SAAS,GAAG,IAAI,+BAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;gBACpE,MAAM;YAER,KAAK,2BAAU,CAAC,gBAAgB,CAAC;YACjC,KAAK,2BAAU,CAAC,OAAO,CAAC;YACxB;gBACE,kEAAkE;gBAClE,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC;oBAC5C,SAAS,GAAG,IAAI,sCAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;gBAC7E,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CACb,4BAA4B,MAAM,CAAC,cAAc,EAAE,CAAC,WAAW,IAAI;wBACvD,iDAAiD,CAC9D,CAAC;gBACJ,CAAC;gBACD,MAAM;QACV,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;IAChC,CAAC;IAED;;;SAGK;IACL,gBAAgB,CACd,iBAAiE;QAEjE,OAAO,IAAA,mCAAkB,EAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;CACF;AA3DD,4CA2DC"}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* Centralized service for detecting device capabilities once and caching the results.
|
|
5
5
|
* This replaces the scattered hasXxxFeature() methods in service classes.
|
|
6
6
|
*/
|
|
7
|
-
import { DaikinCloudDevice } from '../api';
|
|
8
|
-
import { DeviceCapabilities, DeviceTemperatureCapabilities } from '../types';
|
|
7
|
+
import type { DaikinCloudDevice } from '../api';
|
|
8
|
+
import type { DeviceCapabilities, DeviceTemperatureCapabilities } from '../types';
|
|
9
9
|
export declare class DeviceCapabilityDetector {
|
|
10
10
|
private readonly device;
|
|
11
11
|
private readonly managementPointId;
|
|
@@ -13,16 +13,16 @@ export declare class DeviceCapabilityDetector {
|
|
|
13
13
|
private cachedTemperatureCapabilities;
|
|
14
14
|
constructor(device: DaikinCloudDevice, managementPointId: string);
|
|
15
15
|
/**
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
* Get all device capabilities. Results are cached after first detection.
|
|
17
|
+
*/
|
|
18
18
|
getCapabilities(): DeviceCapabilities;
|
|
19
19
|
/**
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
* Get temperature capabilities per operation mode. Results are cached.
|
|
21
|
+
*/
|
|
22
22
|
getTemperatureCapabilities(): DeviceTemperatureCapabilities;
|
|
23
23
|
/**
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
* Clear cached capabilities (useful if device data is refreshed).
|
|
25
|
+
*/
|
|
26
26
|
clearCache(): void;
|
|
27
27
|
private detectCapabilities;
|
|
28
28
|
private hasManagementPoint;
|