@homebridge-plugins/homebridge-smarthq 0.5.0-beta.3 → 0.5.0-beta.30

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 (145) hide show
  1. package/.github/ISSUE_TEMPLATE/config.yml +1 -1
  2. package/.github/copilot-instructions.md +90 -0
  3. package/.github/scripts/branch-helper.sh +41 -0
  4. package/.github/workflows/beta-release.yml +1 -1
  5. package/.github/workflows/release.yml +53 -17
  6. package/CHANGELOG.md +563 -18
  7. package/MATTER.md +304 -0
  8. package/README.md +15 -0
  9. package/config.schema.json +14 -5
  10. package/dist/devices/OpalIceMaker/Managers/OpalDescaleSvcManager.d.ts.map +1 -1
  11. package/dist/devices/OpalIceMaker/Managers/OpalDescaleSvcManager.js +3 -1
  12. package/dist/devices/OpalIceMaker/Managers/OpalDescaleSvcManager.js.map +1 -1
  13. package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.d.ts.map +1 -1
  14. package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.js +3 -1
  15. package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.js.map +1 -1
  16. package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.js +1 -1
  17. package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.js.map +1 -1
  18. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.d.ts +1 -1
  19. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.d.ts.map +1 -1
  20. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.js +12 -5
  21. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.js.map +1 -1
  22. package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.d.ts.map +1 -1
  23. package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.js +4 -2
  24. package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.js.map +1 -1
  25. package/dist/devices/OpalIceMaker/OpalDeviceBase.d.ts +3 -4
  26. package/dist/devices/OpalIceMaker/OpalDeviceBase.d.ts.map +1 -1
  27. package/dist/devices/OpalIceMaker/OpalDeviceBase.js +3 -18
  28. package/dist/devices/OpalIceMaker/OpalDeviceBase.js.map +1 -1
  29. package/dist/devices/advantium.d.ts +10 -0
  30. package/dist/devices/advantium.d.ts.map +1 -0
  31. package/dist/devices/advantium.js +75 -0
  32. package/dist/devices/advantium.js.map +1 -0
  33. package/dist/devices/airConditioner.d.ts +11 -2
  34. package/dist/devices/airConditioner.d.ts.map +1 -1
  35. package/dist/devices/airConditioner.js +108 -17
  36. package/dist/devices/airConditioner.js.map +1 -1
  37. package/dist/devices/beverageCenter.d.ts +10 -0
  38. package/dist/devices/beverageCenter.d.ts.map +1 -0
  39. package/dist/devices/beverageCenter.js +125 -0
  40. package/dist/devices/beverageCenter.js.map +1 -0
  41. package/dist/devices/clothesDryer.d.ts +21 -0
  42. package/dist/devices/clothesDryer.d.ts.map +1 -0
  43. package/dist/devices/clothesDryer.js +240 -0
  44. package/dist/devices/clothesDryer.js.map +1 -0
  45. package/dist/devices/clothesWasher.d.ts +21 -0
  46. package/dist/devices/clothesWasher.d.ts.map +1 -0
  47. package/dist/devices/clothesWasher.js +251 -0
  48. package/dist/devices/clothesWasher.js.map +1 -0
  49. package/dist/devices/coffeeMaker.d.ts +10 -0
  50. package/dist/devices/coffeeMaker.d.ts.map +1 -0
  51. package/dist/devices/coffeeMaker.js +79 -0
  52. package/dist/devices/coffeeMaker.js.map +1 -0
  53. package/dist/devices/device.d.ts +107 -13
  54. package/dist/devices/device.d.ts.map +1 -1
  55. package/dist/devices/device.js +386 -60
  56. package/dist/devices/device.js.map +1 -1
  57. package/dist/devices/dishwasher.d.ts +9 -3
  58. package/dist/devices/dishwasher.d.ts.map +1 -1
  59. package/dist/devices/dishwasher.js +142 -29
  60. package/dist/devices/dishwasher.js.map +1 -1
  61. package/dist/devices/hood.d.ts +41 -0
  62. package/dist/devices/hood.d.ts.map +1 -0
  63. package/dist/devices/hood.js +332 -0
  64. package/dist/devices/hood.js.map +1 -0
  65. package/dist/devices/microwave.d.ts +19 -0
  66. package/dist/devices/microwave.d.ts.map +1 -0
  67. package/dist/devices/microwave.js +144 -0
  68. package/dist/devices/microwave.js.map +1 -0
  69. package/dist/devices/oven.d.ts +9 -2
  70. package/dist/devices/oven.d.ts.map +1 -1
  71. package/dist/devices/oven.js +245 -43
  72. package/dist/devices/oven.js.map +1 -1
  73. package/dist/devices/refrigerator.d.ts +37 -2
  74. package/dist/devices/refrigerator.d.ts.map +1 -1
  75. package/dist/devices/refrigerator.js +548 -34
  76. package/dist/devices/refrigerator.js.map +1 -1
  77. package/dist/devices/waterFilter.d.ts +10 -0
  78. package/dist/devices/waterFilter.d.ts.map +1 -0
  79. package/dist/devices/waterFilter.js +67 -0
  80. package/dist/devices/waterFilter.js.map +1 -0
  81. package/dist/devices/waterHeater.d.ts +19 -0
  82. package/dist/devices/waterHeater.d.ts.map +1 -0
  83. package/dist/devices/waterHeater.js +158 -0
  84. package/dist/devices/waterHeater.js.map +1 -0
  85. package/dist/devices/waterSoftener.d.ts +10 -0
  86. package/dist/devices/waterSoftener.d.ts.map +1 -0
  87. package/dist/devices/waterSoftener.js +67 -0
  88. package/dist/devices/waterSoftener.js.map +1 -0
  89. package/dist/getAccessToken.d.ts.map +1 -1
  90. package/dist/getAccessToken.js +6 -0
  91. package/dist/getAccessToken.js.map +1 -1
  92. package/dist/platform.d.ts +25 -1
  93. package/dist/platform.d.ts.map +1 -1
  94. package/dist/platform.js +548 -70
  95. package/dist/platform.js.map +1 -1
  96. package/dist/platform.test.d.ts +2 -0
  97. package/dist/platform.test.d.ts.map +1 -0
  98. package/dist/platform.test.js +80 -0
  99. package/dist/platform.test.js.map +1 -0
  100. package/dist/settings.d.ts +23 -0
  101. package/dist/settings.d.ts.map +1 -1
  102. package/dist/settings.js +13 -0
  103. package/dist/settings.js.map +1 -1
  104. package/docs/assets/highlight.css +7 -0
  105. package/docs/assets/main.js +5 -5
  106. package/docs/assets/navigation.js +1 -0
  107. package/docs/assets/search.js +1 -0
  108. package/docs/assets/style.css +248 -226
  109. package/docs/classes/SmartHQPlatform.html +51 -56
  110. package/docs/hierarchy.html +1 -0
  111. package/docs/index.html +22 -12
  112. package/docs/interfaces/DeviceOptions.html +2 -3
  113. package/docs/interfaces/SmartHQPlatformConfig.html +6 -17
  114. package/docs/interfaces/SmartHqContext.html +6 -4
  115. package/docs/interfaces/SmartHqERDResponse.html +7 -8
  116. package/docs/interfaces/credentials.html +3 -4
  117. package/docs/interfaces/devicesConfig.html +8 -8
  118. package/docs/interfaces/options.html +7 -8
  119. package/docs/media/copilot-instructions.md +90 -0
  120. package/docs/modules.html +1 -2
  121. package/docs/variables/API_URL.html +1 -2
  122. package/docs/variables/ERD_CODES.html +1 -2
  123. package/docs/variables/ERD_TYPES.html +1 -2
  124. package/docs/variables/KEEPALIVE_TIMEOUT.html +1 -2
  125. package/docs/variables/LOGIN_URL.html +2 -3
  126. package/docs/variables/OAUTH2_CLIENT_ID.html +1 -2
  127. package/docs/variables/OAUTH2_CLIENT_SECRET.html +1 -2
  128. package/docs/variables/OAUTH2_REDIRECT_URI.html +1 -2
  129. package/docs/variables/PLATFORM_NAME.html +2 -3
  130. package/docs/variables/PLUGIN_NAME.html +2 -3
  131. package/docs/variables/SECURE_URL.html +2 -3
  132. package/docs/variables/default.html +1 -0
  133. package/package.json +22 -33
  134. package/typedoc.json +0 -4
  135. package/vitest.config.ts +6 -5
  136. package/.github/workflows/build.yml +0 -18
  137. package/.github/workflows/changerelease.yml +0 -11
  138. package/.github/workflows/labeler.yml +0 -9
  139. package/.github/workflows/release-drafter.yml +0 -14
  140. package/docs/assets/dmt/dmt-component-data.js +0 -1
  141. package/docs/assets/dmt/dmt-components.css +0 -20
  142. package/docs/assets/dmt/dmt-components.js +0 -67
  143. package/docs/assets/dmt/dmt-search.cmp +0 -0
  144. package/docs/assets/dmt/dmt-theme.css +0 -1
  145. package/docs/functions/default.html +0 -2
@@ -0,0 +1,144 @@
1
+ import { deviceBase } from './device.js';
2
+ export class SmartHQMicrowave extends deviceBase {
3
+ platform;
4
+ device;
5
+ // Matter support override flag
6
+ useMatterOverride = false;
7
+ constructor(platform, accessory, device) {
8
+ super(platform, accessory, device);
9
+ this.platform = platform;
10
+ this.device = device;
11
+ // Check if we should use Matter protocol
12
+ this.useMatterOverride = device.useMatter ?? false;
13
+ this.debugLog(`Microwave Features: ${JSON.stringify(accessory.context.device.features)}`);
14
+ this.debugLog(`Using protocol: ${this.useMatterOverride ? 'Matter' : 'HAP'}`);
15
+ // Initialize the appropriate protocol
16
+ if (this.useMatterOverride) {
17
+ this.initializeMatter();
18
+ }
19
+ else {
20
+ this.initializeHAP();
21
+ }
22
+ }
23
+ /**
24
+ * Initialize Matter protocol
25
+ */
26
+ initializeMatter() {
27
+ const { valid, api: matterAPI } = this.validateMatterAPI();
28
+ if (!valid) {
29
+ this.errorLog('Matter API not available or incomplete - falling back to HAP');
30
+ this.initializeHAP();
31
+ return;
32
+ }
33
+ const serialNumber = this.device.applianceId || 'unknown';
34
+ this.matterUuid = matterAPI.uuid.generate(serialNumber);
35
+ const matterAccessory = {
36
+ UUID: this.matterUuid,
37
+ displayName: this.device.nickname || 'SmartHQ Microwave',
38
+ serialNumber,
39
+ manufacturer: this.device.brand && this.device.brand !== 'Unknown' ? this.device.brand : 'GE Appliances',
40
+ model: this.device.model || 'SmartHQ',
41
+ firmwareRevision: this.deviceFirmwareVersion,
42
+ hardwareRevision: this.deviceFirmwareVersion,
43
+ deviceType: matterAPI.deviceTypes.MicrowaveOven,
44
+ clusters: {
45
+ // On/Off cluster for light
46
+ onOff: {
47
+ onOff: false,
48
+ },
49
+ // Operational State for microwave running
50
+ operationalState: {
51
+ operationalState: 0,
52
+ operationalError: { errorStateID: 0 },
53
+ },
54
+ // Timer cluster for cook time
55
+ timer: {
56
+ timerState: 0,
57
+ duration: 0,
58
+ remainingTime: 0,
59
+ },
60
+ },
61
+ handlers: {},
62
+ };
63
+ matterAPI.registerAccessory(matterAccessory);
64
+ this.infoLog('Created Matter Microwave with operational state and timer clusters');
65
+ }
66
+ /**
67
+ * Initialize HAP (HomeKit) protocol
68
+ */
69
+ initializeHAP() {
70
+ // Microwave Light
71
+ const light = this.accessory.getService('Microwave Light') ?? this.accessory.addService(this.platform.Service.Lightbulb, 'Microwave Light', 'MicrowaveLight');
72
+ light.setCharacteristic(this.platform.Characteristic.Name, 'Microwave Light');
73
+ light
74
+ .getCharacteristic(this.platform.Characteristic.On)
75
+ .onGet(async () => {
76
+ try {
77
+ // TODO: Implement light state ERD
78
+ return false;
79
+ }
80
+ catch (error) {
81
+ this.warnLog?.(`Microwave Light error: ${error?.message ?? error}`);
82
+ return false;
83
+ }
84
+ })
85
+ .onSet(async (value) => {
86
+ try {
87
+ // TODO: Implement light control ERD
88
+ this.debugLog(`Microwave Light set to: ${value}`);
89
+ }
90
+ catch (error) {
91
+ this.warnLog?.(`Microwave Light set error: ${error?.message ?? error}`);
92
+ }
93
+ });
94
+ // Microwave Running State (Switch)
95
+ const runningSwitch = this.accessory.getService('Microwave') ?? this.accessory.addService(this.platform.Service.Switch, 'Microwave', 'Microwave');
96
+ runningSwitch.setCharacteristic(this.platform.Characteristic.Name, 'Microwave');
97
+ runningSwitch
98
+ .getCharacteristic(this.platform.Characteristic.On)
99
+ .onGet(async () => {
100
+ try {
101
+ // TODO: Implement running state ERD
102
+ return false;
103
+ }
104
+ catch (error) {
105
+ this.warnLog?.(`Microwave Running error: ${error?.message ?? error}`);
106
+ return false;
107
+ }
108
+ })
109
+ .onSet(async (value) => {
110
+ try {
111
+ // TODO: Implement running control ERD
112
+ this.debugLog(`Microwave Running set to: ${value}`);
113
+ }
114
+ catch (error) {
115
+ this.warnLog?.(`Microwave Running set error: ${error?.message ?? error}`);
116
+ }
117
+ });
118
+ // Ventilation Fan (if applicable)
119
+ const fan = this.accessory.getService('Microwave Fan') ?? this.accessory.addService(this.platform.Service.Fanv2, 'Microwave Fan', 'MicrowaveFan');
120
+ fan.setCharacteristic(this.platform.Characteristic.Name, 'Microwave Fan');
121
+ fan
122
+ .getCharacteristic(this.platform.Characteristic.Active)
123
+ .onGet(async () => {
124
+ try {
125
+ // TODO: Implement fan state ERD
126
+ return this.platform.Characteristic.Active.INACTIVE;
127
+ }
128
+ catch (error) {
129
+ this.warnLog?.(`Microwave Fan error: ${error?.message ?? error}`);
130
+ return this.platform.Characteristic.Active.INACTIVE;
131
+ }
132
+ })
133
+ .onSet(async (value) => {
134
+ try {
135
+ // TODO: Implement fan control ERD
136
+ this.debugLog(`Microwave Fan set to: ${value}`);
137
+ }
138
+ catch (error) {
139
+ this.warnLog?.(`Microwave Fan set error: ${error?.message ?? error}`);
140
+ }
141
+ });
142
+ }
143
+ }
144
+ //# sourceMappingURL=microwave.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"microwave.js","sourceRoot":"","sources":["../../src/devices/microwave.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,15 @@ import { deviceBase } from './device.js';
5
5
  export declare class SmartHQOven extends deviceBase {
6
6
  readonly platform: SmartHQPlatform;
7
7
  readonly device: SmartHqContext['device'] & devicesConfig;
8
+ private useMatterOverride;
8
9
  constructor(platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: SmartHqContext['device'] & devicesConfig);
9
- readErd(erd: string): Promise<string>;
10
- writeErd(erd: string, value: string | boolean): Promise<undefined>;
10
+ /**
11
+ * Initialize Matter protocol
12
+ */
13
+ private initializeMatter;
14
+ /**
15
+ * Initialize HAP (HomeKit) protocol
16
+ */
17
+ private initializeHAP;
11
18
  }
12
19
  //# sourceMappingURL=oven.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oven.d.ts","sourceRoot":"","sources":["../../src/devices/oven.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAOnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,WAAY,SAAQ,UAAU;IAEvC,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAElC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;gBAFhD,QAAQ,EAAE,eAAe,EAClC,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACnC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAuCrD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMrC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAWpD"}
1
+ {"version":3,"file":"oven.d.ts","sourceRoot":"","sources":["../../src/devices/oven.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAKnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,WAAY,SAAQ,UAAU;IAKvC,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAElC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAL3D,OAAO,CAAC,iBAAiB,CAAiB;gBAG/B,QAAQ,EAAE,eAAe,EAClC,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACnC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAkB3D;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAyFxB;;OAEG;IACH,OAAO,CAAC,aAAa;CAkJtB"}
@@ -1,64 +1,266 @@
1
1
  import { Buffer } from 'node:buffer';
2
- import axios from 'axios';
3
2
  import { ERD_TYPES } from '../settings.js';
4
3
  import { deviceBase } from './device.js';
5
4
  export class SmartHQOven extends deviceBase {
6
5
  platform;
7
6
  device;
7
+ // Matter support override flag
8
+ useMatterOverride = false;
8
9
  constructor(platform, accessory, device) {
9
10
  super(platform, accessory, device);
10
11
  this.platform = platform;
11
12
  this.device = device;
13
+ // Check if we should use Matter protocol
14
+ this.useMatterOverride = device.useMatter ?? false;
12
15
  this.debugLog(`Oven Features: ${JSON.stringify(accessory.context.device.features)}`);
13
- accessory.context.device.features.forEach((feature) => {
14
- switch (feature) {
15
- case 'COOKING_V1_UPPER_OVEN_FOUNDATION': {
16
- const ovenLight = this.accessory.getService(accessory.displayName) ?? this.accessory.addService(this.platform.Service.Lightbulb, accessory.displayName, 'Oven');
17
- ovenLight
18
- .getCharacteristic(this.platform.Characteristic.On)
19
- .onGet(() => this.readErd(ERD_TYPES.UPPER_OVEN_LIGHT).then(r => Number.parseInt(r) !== 0))
20
- .onSet(value => this.writeErd(ERD_TYPES.UPPER_OVEN_LIGHT, value));
21
- break;
22
- }
23
- case 'COOKING_V1_EXTENDED_COOKTOP_FOUNDATION': {
24
- this.accessory.getService(accessory.displayName) ?? this.accessory.addService(this.platform.Service.StatefulProgrammableSwitch, accessory.displayName, 'Oven')
25
- .getCharacteristic(this.platform.Characteristic.TargetTemperature)
26
- .onGet(async () => {
27
- const erdVal = await this.readErd(ERD_TYPES.UPPER_OVEN_COOK_MODE);
28
- const b = Buffer.from(erdVal, 'hex');
29
- return fToC(b.readUint16BE(1));
30
- })
31
- .onSet(async (value) => {
32
- const fTarget = cToF(value);
33
- const erdVal = await this.readErd(ERD_TYPES.UPPER_OVEN_COOK_MODE);
34
- const b = Buffer.from(erdVal, 'hex');
35
- b.writeUint16BE(fTarget, 1);
36
- return this.writeErd(ERD_TYPES.UPPER_OVEN_COOK_MODE, b.toString('hex'));
37
- });
16
+ this.debugLog(`Using protocol: ${this.useMatterOverride ? 'Matter' : 'HAP'}`);
17
+ // Initialize the appropriate protocol
18
+ if (this.useMatterOverride) {
19
+ this.initializeMatter();
20
+ }
21
+ else {
22
+ this.initializeHAP();
23
+ }
24
+ }
25
+ /**
26
+ * Initialize Matter protocol
27
+ */
28
+ initializeMatter() {
29
+ const { valid, api: matterAPI } = this.validateMatterAPI();
30
+ if (!valid) {
31
+ this.errorLog('Matter API not available or incomplete - falling back to HAP');
32
+ this.initializeHAP();
33
+ return;
34
+ }
35
+ const serialNumber = this.device.applianceId || 'unknown';
36
+ this.matterUuid = matterAPI.uuid.generate(serialNumber);
37
+ // Create Matter accessory configuration with oven-specific clusters
38
+ const matterAccessory = {
39
+ UUID: this.matterUuid,
40
+ displayName: this.device.nickname || 'SmartHQ Oven',
41
+ serialNumber,
42
+ manufacturer: this.device.brand && this.device.brand !== 'Unknown' ? this.device.brand : 'GE Appliances',
43
+ model: this.device.model || 'SmartHQ',
44
+ firmwareRevision: this.deviceFirmwareVersion,
45
+ hardwareRevision: this.deviceFirmwareVersion,
46
+ deviceType: matterAPI.deviceTypes.OvenDevice,
47
+ clusters: {
48
+ // On/Off cluster for oven light
49
+ onOff: {
50
+ onOff: false,
51
+ },
52
+ // Temperature Measurement for oven cavity (maps to UPPER_OVEN_DISPLAY_TEMPERATURE)
53
+ temperatureMeasurement: {
54
+ measuredValue: 2000, // 20°C in 0.01°C units
55
+ minMeasuredValue: 0,
56
+ maxMeasuredValue: 26000, // 260°C max
57
+ },
58
+ // Thermostat cluster for temperature setpoint control
59
+ thermostat: {
60
+ localTemperature: 2000,
61
+ occupiedHeatingSetpoint: 17500, // 175°C default
62
+ systemMode: 0, // 0=Off, 4=Heat
63
+ thermostatRunningMode: 0,
64
+ controlSequenceOfOperation: 2, // Heating only
65
+ },
66
+ // Oven Mode cluster for cooking modes (maps to UPPER_OVEN_COOK_MODE)
67
+ ovenMode: {
68
+ supportedModes: [
69
+ { label: 'Off', mode: 0 },
70
+ { label: 'Bake', mode: 1 },
71
+ { label: 'Convection Bake', mode: 2 },
72
+ { label: 'Broil High', mode: 3 },
73
+ { label: 'Broil Low', mode: 4 },
74
+ { label: 'Convection Multi', mode: 5 },
75
+ ],
76
+ currentMode: 0,
77
+ },
78
+ // Timer cluster for cook time remaining (maps to UPPER_OVEN_COOK_TIME_REMAINING)
79
+ timer: {
80
+ timerState: 0,
81
+ duration: 0,
82
+ remainingTime: 0,
83
+ },
84
+ // Alarm cluster for preheat complete, cooking done
85
+ alarm: {
86
+ mask: 0,
87
+ state: 0,
88
+ supported: 3, // Bits: 0=preheat complete, 1=cook complete
89
+ },
90
+ // Door Lock cluster for oven door
91
+ doorLock: {
92
+ lockState: 0, // 0=Unlocked, 1=Locked
93
+ lockType: 0,
94
+ actuatorEnabled: true,
95
+ },
96
+ },
97
+ handlers: {
98
+ onOff: {
99
+ on: async () => {
100
+ await this.writeErd(ERD_TYPES.UPPER_OVEN_LIGHT, true);
101
+ },
102
+ off: async () => {
103
+ await this.writeErd(ERD_TYPES.UPPER_OVEN_LIGHT, false);
104
+ },
105
+ },
106
+ },
107
+ };
108
+ // Register Matter accessory
109
+ matterAPI.registerAccessory(matterAccessory);
110
+ this.infoLog('Created Matter Oven with thermostat, mode selection, timer, alarm, and door lock clusters');
111
+ }
112
+ /**
113
+ * Initialize HAP (HomeKit) protocol
114
+ */
115
+ initializeHAP() {
116
+ // Oven Light
117
+ const ovenLight = this.accessory.getService('Oven Light') ?? this.accessory.addService(this.platform.Service.Lightbulb, 'Oven Light', 'OvenLight');
118
+ ovenLight.setCharacteristic(this.platform.Characteristic.Name, 'Oven Light');
119
+ ovenLight
120
+ .getCharacteristic(this.platform.Characteristic.On)
121
+ .onGet(async () => {
122
+ try {
123
+ const r = await this.readErd(ERD_TYPES.UPPER_OVEN_LIGHT);
124
+ return r ? Number.parseInt(r) !== 0 : false;
125
+ }
126
+ catch (error) {
127
+ this.warnLog?.(`Oven Light handleGetOn error: ${error?.message ?? error}`);
128
+ return false;
129
+ }
130
+ })
131
+ .onSet(async (value) => {
132
+ try {
133
+ await this.writeErd(ERD_TYPES.UPPER_OVEN_LIGHT, value);
134
+ }
135
+ catch (error) {
136
+ this.warnLog?.(`Oven Light handleSetOn error: ${error?.message ?? error}`);
137
+ }
138
+ });
139
+ // Oven Current Temperature Sensor
140
+ const ovenTempSensor = this.accessory.getService('Oven Temperature') ?? this.accessory.addService(this.platform.Service.TemperatureSensor, 'Oven Temperature', 'OvenTemp');
141
+ ovenTempSensor.setCharacteristic(this.platform.Characteristic.Name, 'Oven Temperature');
142
+ ovenTempSensor
143
+ .getCharacteristic(this.platform.Characteristic.CurrentTemperature)
144
+ .onGet(async () => {
145
+ try {
146
+ const erdVal = await this.readErd(ERD_TYPES.UPPER_OVEN_COOK_MODE);
147
+ if (!erdVal) {
148
+ return 0;
38
149
  }
150
+ const b = Buffer.from(erdVal, 'hex');
151
+ return fToC(b.readUint16BE(1));
152
+ }
153
+ catch (error) {
154
+ this.warnLog?.(`Oven Temperature error: ${error?.message ?? error}`);
155
+ return 0;
39
156
  }
40
157
  });
41
- }
42
- async readErd(erd) {
43
- const d = await axios
44
- .get(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`);
45
- return String(d.data.value);
46
- }
47
- async writeErd(erd, value) {
48
- await axios
49
- .post(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`, {
50
- kind: 'appliance#erdListEntry',
51
- userId: this.accessory.context.userId,
52
- applianceId: this.accessory.context.device.applianceId,
53
- erd,
54
- value: typeof value === 'boolean' ? (value ? '01' : '00') : value,
158
+ (async () => {
159
+ const probePresent = await this.has_erd_code(ERD_TYPES.UPPER_OVEN_PROBE_PRESENT);
160
+ if (probePresent) {
161
+ const probeTempSensor = this.accessory.getService('Probe Temperature') ?? this.accessory.addService(this.platform.Service.TemperatureSensor, 'Probe Temperature', 'ProbeTemp');
162
+ probeTempSensor.setCharacteristic(this.platform.Characteristic.Name, 'Probe Temperature');
163
+ probeTempSensor
164
+ .getCharacteristic(this.platform.Characteristic.CurrentTemperature)
165
+ .onGet(async () => {
166
+ const r = await this.readErd(ERD_TYPES.UPPER_OVEN_PROBE_DISPLAY_TEMP);
167
+ if (!r) {
168
+ return 0;
169
+ }
170
+ const tempF = Number.parseInt(r);
171
+ return fToC(tempF);
172
+ });
173
+ }
174
+ })();
175
+ // Cook Time Remaining (using a valve to show remaining duration)
176
+ const cookTimeValve = this.accessory.getService('Cook Time') ?? this.accessory.addService(this.platform.Service.Valve, 'Cook Time', 'CookTime');
177
+ cookTimeValve.setCharacteristic(this.platform.Characteristic.Name, 'Cook Time');
178
+ cookTimeValve.setCharacteristic(this.platform.Characteristic.ValveType, this.platform.Characteristic.ValveType.GENERIC_VALVE);
179
+ cookTimeValve
180
+ .getCharacteristic(this.platform.Characteristic.Active)
181
+ .onGet(async () => {
182
+ const r = await this.readErd(ERD_TYPES.UPPER_OVEN_COOK_TIME_REMAINING);
183
+ // Active if time remaining is non-zero
184
+ return r && Number.parseInt(r, 16) > 0
185
+ ? this.platform.Characteristic.Active.ACTIVE
186
+ : this.platform.Characteristic.Active.INACTIVE;
187
+ });
188
+ cookTimeValve
189
+ .getCharacteristic(this.platform.Characteristic.InUse)
190
+ .onGet(async () => {
191
+ const r = await this.readErd(ERD_TYPES.UPPER_OVEN_COOK_TIME_REMAINING);
192
+ return r && Number.parseInt(r, 16) > 0
193
+ ? this.platform.Characteristic.InUse.IN_USE
194
+ : this.platform.Characteristic.InUse.NOT_IN_USE;
195
+ });
196
+ cookTimeValve
197
+ .getCharacteristic(this.platform.Characteristic.RemainingDuration)
198
+ .onGet(async () => {
199
+ const r = await this.readErd(ERD_TYPES.UPPER_OVEN_COOK_TIME_REMAINING);
200
+ if (!r) {
201
+ return 0;
202
+ }
203
+ // Cook time remaining is stored as minutes in hex, convert to seconds
204
+ const minutes = Number.parseInt(r, 16);
205
+ const seconds = minutes * 60;
206
+ this.debugLog(`Cook Time Remaining - Hex: ${r}, Minutes: ${minutes}, Seconds: ${seconds}`);
207
+ return seconds;
208
+ });
209
+ // Remote Enabled Status (binary sensor)
210
+ const remoteEnabledSensor = this.accessory.getService('Remote Enabled') ?? this.accessory.addService(this.platform.Service.ContactSensor, 'Remote Enabled', 'RemoteEnabled');
211
+ remoteEnabledSensor.setCharacteristic(this.platform.Characteristic.Name, 'Remote Enabled');
212
+ remoteEnabledSensor
213
+ .getCharacteristic(this.platform.Characteristic.ContactSensorState)
214
+ .onGet(async () => {
215
+ const r = await this.readErd(ERD_TYPES.UPPER_OVEN_REMOTE_ENABLED);
216
+ // 1=enabled (open/not detected), 0=disabled (closed/detected)
217
+ return r && Number.parseInt(r) === 1
218
+ ? this.platform.Characteristic.ContactSensorState.CONTACT_NOT_DETECTED
219
+ : this.platform.Characteristic.ContactSensorState.CONTACT_DETECTED;
220
+ });
221
+ // Oven Door Lock (Security System for lock state)
222
+ const ovenDoorLock = this.accessory.getService('Oven Door Lock') ?? this.accessory.addService(this.platform.Service.LockMechanism, 'Oven Door Lock', 'OvenDoorLock');
223
+ ovenDoorLock.setCharacteristic(this.platform.Characteristic.Name, 'Oven Door Lock');
224
+ ovenDoorLock
225
+ .getCharacteristic(this.platform.Characteristic.LockCurrentState)
226
+ .onGet(async () => {
227
+ try {
228
+ // TODO: Use actual ERD for door lock state when available
229
+ return this.platform.Characteristic.LockCurrentState.UNSECURED;
230
+ }
231
+ catch (error) {
232
+ this.warnLog?.(`Oven Door Lock error: ${error?.message ?? error}`);
233
+ return this.platform.Characteristic.LockCurrentState.UNSECURED;
234
+ }
235
+ });
236
+ ovenDoorLock
237
+ .getCharacteristic(this.platform.Characteristic.LockTargetState)
238
+ .onGet(async () => {
239
+ try {
240
+ // TODO: Use actual ERD for door lock state when available
241
+ return this.platform.Characteristic.LockTargetState.UNSECURED;
242
+ }
243
+ catch (error) {
244
+ this.warnLog?.(`Oven Door Lock error: ${error?.message ?? error}`);
245
+ return this.platform.Characteristic.LockTargetState.UNSECURED;
246
+ }
247
+ })
248
+ .onSet(async (value) => {
249
+ try {
250
+ // TODO: Implement door lock control when ERD is available
251
+ this.debugLog(`Oven Door Lock set to: ${value}`);
252
+ }
253
+ catch (error) {
254
+ this.warnLog?.(`Oven Door Lock set error: ${error?.message ?? error}`);
255
+ }
55
256
  });
56
- return undefined;
57
257
  }
58
258
  }
59
- function cToF(celsius) {
60
- return (celsius * 9) / 5 + 32;
259
+ /*
260
+ function cToF(celsius: number) {
261
+ return (celsius * 9) / 5 + 32
61
262
  }
263
+ */
62
264
  function fToC(fahrenheit) {
63
265
  return ((fahrenheit - 32) * 5) / 9;
64
266
  }
@@ -1 +1 @@
1
- {"version":3,"file":"oven.js","sourceRoot":"","sources":["../../src/devices/oven.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oven.js","sourceRoot":"","sources":["../../src/devices/oven.ts"],"names":[],"mappings":"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"}
@@ -2,13 +2,48 @@ import type { PlatformAccessory } from 'homebridge';
2
2
  import type { SmartHQPlatform } from '../platform.js';
3
3
  import type { devicesConfig, SmartHqContext } from '../settings.js';
4
4
  import { deviceBase } from './device.js';
5
+ /**
6
+ * SmartHQ Refrigerator - Unified HAP/Matter Implementation
7
+ * Supports both HomeKit Accessory Protocol and Matter protocol
8
+ */
5
9
  export declare class SmartHQRefrigerator extends deviceBase {
6
10
  readonly platform: SmartHQPlatform;
7
11
  readonly device: SmartHqContext['device'] & devicesConfig;
8
12
  SensorUpdateInProgress: boolean;
9
13
  deviceStatus: any;
14
+ private useMatterOverride;
10
15
  constructor(platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: SmartHqContext['device'] & devicesConfig);
11
- readErd(erd: string): Promise<string>;
12
- writeErd(erd: string, value: string | boolean): Promise<undefined>;
16
+ /**
17
+ * Initialize Matter protocol
18
+ */
19
+ private initializeMatter;
20
+ /**
21
+ * Initialize HAP (HomeKit) protocol
22
+ */
23
+ private initializeHAP;
24
+ /**
25
+ * Shared helper: Parse temperature from ERD (works for both HAP and Matter)
26
+ */
27
+ private parseTemperature;
28
+ /**
29
+ * Shared helper: Parse setpoint from ERD
30
+ */
31
+ private parseSetpoint;
32
+ /**
33
+ * Shared helper: Write setpoint to ERD
34
+ */
35
+ private writeSetpoint;
36
+ /**
37
+ * Handle Matter setpoint change
38
+ */
39
+ private handleMatterSetpointChange;
40
+ /**
41
+ * Handle Matter mode change (Normal, Rapid Cool, Rapid Freeze)
42
+ */
43
+ private handleMatterModeChange;
44
+ /**
45
+ * Refresh device status - update both HAP and Matter states
46
+ */
47
+ private refreshDeviceStatus;
13
48
  }
14
49
  //# sourceMappingURL=refrigerator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"refrigerator.d.ts","sourceRoot":"","sources":["../../src/devices/refrigerator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAMnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,mBAAoB,SAAQ,UAAU;IAM/C,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAElC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAN3D,sBAAsB,EAAG,OAAO,CAAA;IAChC,YAAY,EAAE,GAAG,CAAA;gBAGN,QAAQ,EAAE,eAAe,EAClC,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACnC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAoCrD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMrC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAWpD"}
1
+ {"version":3,"file":"refrigerator.d.ts","sourceRoot":"","sources":["../../src/devices/refrigerator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAKnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;IAS/C,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAElC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAT3D,sBAAsB,EAAG,OAAO,CAAA;IAChC,YAAY,EAAE,GAAG,CAAA;IAGjB,OAAO,CAAC,iBAAiB,CAAiB;gBAG/B,QAAQ,EAAE,eAAe,EAClC,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACnC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IA6B3D;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqHxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAyOrB;;OAEG;YACW,gBAAgB;IAsB9B;;OAEG;YACW,aAAa;IAoB3B;;OAEG;YACW,aAAa;IAW3B;;OAEG;YACW,0BAA0B;IAcxC;;OAEG;YACW,sBAAsB;IAkCpC;;OAEG;YACW,mBAAmB;CA2JlC"}