@homebridge-plugins/homebridge-smarthq 0.4.0-beta.1 → 0.4.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/README.md +11 -1
  2. package/config.schema.json +17 -0
  3. package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.d.ts +14 -0
  4. package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.d.ts.map +1 -0
  5. package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.js +35 -0
  6. package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.js.map +1 -0
  7. package/dist/devices/OpalIceMaker/Managers/OpalMetadataSvcManager.d.ts +9 -0
  8. package/dist/devices/OpalIceMaker/Managers/OpalMetadataSvcManager.d.ts.map +1 -0
  9. package/dist/devices/OpalIceMaker/Managers/OpalMetadataSvcManager.js +36 -0
  10. package/dist/devices/OpalIceMaker/Managers/OpalMetadataSvcManager.js.map +1 -0
  11. package/dist/devices/OpalIceMaker/Managers/OpalMonitorManager.d.ts +20 -0
  12. package/dist/devices/OpalIceMaker/Managers/OpalMonitorManager.d.ts.map +1 -0
  13. package/dist/devices/OpalIceMaker/Managers/OpalMonitorManager.js +65 -0
  14. package/dist/devices/OpalIceMaker/Managers/OpalMonitorManager.js.map +1 -0
  15. package/dist/devices/OpalIceMaker/Managers/OpalNightlightSvcManager.d.ts +10 -0
  16. package/dist/devices/OpalIceMaker/Managers/OpalNightlightSvcManager.d.ts.map +1 -0
  17. package/dist/devices/OpalIceMaker/Managers/OpalNightlightSvcManager.js +69 -0
  18. package/dist/devices/OpalIceMaker/Managers/OpalNightlightSvcManager.js.map +1 -0
  19. package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.d.ts +11 -0
  20. package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.d.ts.map +1 -0
  21. package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.js +22 -0
  22. package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.js.map +1 -0
  23. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.d.ts +20 -0
  24. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.d.ts.map +1 -0
  25. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.js +121 -0
  26. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.js.map +1 -0
  27. package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalAddWaterStatusSvcManager.d.ts +17 -0
  28. package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalAddWaterStatusSvcManager.d.ts.map +1 -0
  29. package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalAddWaterStatusSvcManager.js +35 -0
  30. package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalAddWaterStatusSvcManager.js.map +1 -0
  31. package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalIceBucketStatusSvcManager.d.ts +17 -0
  32. package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalIceBucketStatusSvcManager.d.ts.map +1 -0
  33. package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalIceBucketStatusSvcManager.js +35 -0
  34. package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalIceBucketStatusSvcManager.js.map +1 -0
  35. package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.d.ts +27 -0
  36. package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.d.ts.map +1 -0
  37. package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.js +40 -0
  38. package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.js.map +1 -0
  39. package/dist/devices/OpalIceMaker/Managers/StatusManagers/index.d.ts +13 -0
  40. package/dist/devices/OpalIceMaker/Managers/StatusManagers/index.d.ts.map +1 -0
  41. package/dist/devices/OpalIceMaker/Managers/StatusManagers/index.js +33 -0
  42. package/dist/devices/OpalIceMaker/Managers/StatusManagers/index.js.map +1 -0
  43. package/dist/devices/OpalIceMaker/Managers/index.d.ts +7 -0
  44. package/dist/devices/OpalIceMaker/Managers/index.d.ts.map +1 -0
  45. package/dist/devices/OpalIceMaker/Managers/index.js +7 -0
  46. package/dist/devices/OpalIceMaker/Managers/index.js.map +1 -0
  47. package/dist/devices/OpalIceMaker/OpalDeviceBase.d.ts +13 -0
  48. package/dist/devices/OpalIceMaker/OpalDeviceBase.d.ts.map +1 -0
  49. package/dist/devices/OpalIceMaker/OpalDeviceBase.js +42 -0
  50. package/dist/devices/OpalIceMaker/OpalDeviceBase.js.map +1 -0
  51. package/dist/devices/OpalIceMaker/index.d.ts +17 -0
  52. package/dist/devices/OpalIceMaker/index.d.ts.map +1 -0
  53. package/dist/devices/OpalIceMaker/index.js +33 -0
  54. package/dist/devices/OpalIceMaker/index.js.map +1 -0
  55. package/dist/homebridge-ui/public/index.html +33 -25
  56. package/dist/index.d.ts +2 -0
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +2 -0
  59. package/dist/index.js.map +1 -1
  60. package/dist/platform.d.ts.map +1 -1
  61. package/dist/platform.js +2 -1
  62. package/dist/platform.js.map +1 -1
  63. package/dist/settings.d.ts +13 -1
  64. package/dist/settings.d.ts.map +1 -1
  65. package/dist/settings.js +7 -7
  66. package/dist/settings.js.map +1 -1
  67. package/docs/assets/dmt/dmt-component-data.js +1 -1
  68. package/docs/assets/dmt/dmt-search.cmp +0 -0
  69. package/docs/classes/SmartHQPlatform.html +66 -0
  70. package/docs/functions/default.html +1 -1
  71. package/docs/index.html +10 -2
  72. package/docs/interfaces/DeviceOptions.html +3 -0
  73. package/docs/interfaces/SmartHQPlatformConfig.html +17 -0
  74. package/docs/interfaces/SmartHqContext.html +4 -0
  75. package/docs/interfaces/credentials.html +4 -0
  76. package/docs/interfaces/devicesConfig.html +8 -0
  77. package/docs/interfaces/options.html +8 -0
  78. package/docs/modules.html +1 -1
  79. package/docs/variables/API_URL.html +2 -0
  80. package/docs/variables/ERD_CODES.html +2 -0
  81. package/docs/variables/ERD_TYPES.html +2 -0
  82. package/docs/variables/KEEPALIVE_TIMEOUT.html +2 -0
  83. package/docs/variables/LOGIN_URL.html +3 -0
  84. package/docs/variables/OAUTH2_CLIENT_ID.html +2 -0
  85. package/docs/variables/OAUTH2_CLIENT_SECRET.html +2 -0
  86. package/docs/variables/OAUTH2_REDIRECT_URI.html +2 -0
  87. package/docs/variables/PLATFORM_NAME.html +3 -0
  88. package/docs/variables/PLUGIN_NAME.html +3 -0
  89. package/docs/variables/SECURE_URL.html +3 -0
  90. package/package.json +3 -2
  91. package/vitest.config.ts +9 -0
  92. package/dist/devices/icemaker.d.ts +0 -17
  93. package/dist/devices/icemaker.d.ts.map +0 -1
  94. package/dist/devices/icemaker.js +0 -159
  95. package/dist/devices/icemaker.js.map +0 -1
@@ -1,159 +0,0 @@
1
- import { Buffer } from 'node:buffer';
2
- import axios from 'axios';
3
- import { interval, skipWhile } from 'rxjs';
4
- import { ERD_TYPES } from '../settings.js';
5
- import { deviceBase } from './device.js';
6
- export class SmartHQIceMaker extends deviceBase {
7
- platform;
8
- device;
9
- opalProductionLimit = Infinity;
10
- oimPowerSvcName = 'Opal Power';
11
- oimProgressSvcName = 'Opal Progress';
12
- oimNightlightSvcName = 'Opal Nightlight';
13
- constructor(platform, accessory, device) {
14
- super(platform, accessory, device);
15
- this.platform = platform;
16
- this.device = device;
17
- if (this.platform.config.options?.OPL) {
18
- this.opalProductionLimit = this.platform.config.options.OPL;
19
- }
20
- this.debugLog(`Opal IceMaker Features: ${JSON.stringify(accessory.context.device.features)}`);
21
- const opalIceMakerPowerService = this.accessory.getService(this.oimPowerSvcName) ?? this.accessory.addService(this.platform.Service.Switch, this.oimPowerSvcName, 'opal-power');
22
- opalIceMakerPowerService
23
- .getCharacteristic(this.platform.Characteristic.On)
24
- .onGet(() => this.readErd(ERD_TYPES.OIM_POWER).then(r => Number.parseInt(r) !== 0))
25
- .onSet(value => this.writeErd(ERD_TYPES.OIM_POWER, value));
26
- const lightbulb = this.accessory.getService(this.oimNightlightSvcName)
27
- || this.accessory.addService(this.platform.Service.Lightbulb, this.oimNightlightSvcName);
28
- lightbulb.getCharacteristic(this.platform.Characteristic.On)
29
- .onGet(async () => {
30
- const currentLevel = await this.readErd(ERD_TYPES.OIM_LIGHT_LEVEL);
31
- return currentLevel !== '00'; // If the level is not OFF (00), return true (ON)
32
- })
33
- .onSet(async (value) => {
34
- let newState;
35
- const currentLevel = await this.readErd(ERD_TYPES.OIM_LIGHT_LEVEL);
36
- if (value) {
37
- // If turning the light ON, cycle through states
38
- if (currentLevel === '00') {
39
- newState = '02'; // LOW
40
- }
41
- else if (currentLevel === '02') {
42
- newState = '01'; // HIGH
43
- }
44
- }
45
- else {
46
- newState = '00'; // OFF
47
- }
48
- await this.writeErd(ERD_TYPES.OIM_LIGHT_LEVEL, newState);
49
- this.debugLog(`Light state changed to: ${newState}`);
50
- });
51
- lightbulb.getCharacteristic(this.platform.Characteristic.Brightness)
52
- .setProps({
53
- minValue: 0, // Minimum value for brightness (OFF)
54
- maxValue: 100, // Maximum value for brightness (HIGH)
55
- minStep: 50, // Step value (only allow OFF, LOW, and HIGH)
56
- })
57
- .onGet(async () => {
58
- const currentLevel = await this.readErd(ERD_TYPES.OIM_LIGHT_LEVEL);
59
- // Map the light level to brightness values
60
- if (currentLevel === '02') { // HIGH
61
- return 50; // Dim Brightness
62
- }
63
- else if (currentLevel === '01') { // LOW
64
- return 100; // Full Brightness
65
- }
66
- else {
67
- return 0; // OFF
68
- }
69
- })
70
- .onSet(async (value) => {
71
- let newState;
72
- if (value === 50) {
73
- newState = '02'; // LOW (for dim brightness)
74
- }
75
- else if (value === 100) {
76
- newState = '01'; // HIGH (for full brightness)
77
- }
78
- else {
79
- newState = '00'; // OFF
80
- }
81
- await this.writeErd(ERD_TYPES.OIM_LIGHT_LEVEL, newState);
82
- this.debugLog(`Light brightness changed to: ${newState}`);
83
- });
84
- // Opal Progress service
85
- const opalProgressSvc = this.accessory.getService(this.oimProgressSvcName)
86
- || this.accessory.addService(this.platform.Service.Fanv2, this.oimProgressSvcName);
87
- opalProgressSvc.getCharacteristic(this.platform.Characteristic.Active)
88
- .setProps({
89
- // Omit PAIRED_WRITE to prevent user from setting Active to False, is read only.
90
- perms: ["ev" /* Perms.EVENTS */, "pr" /* Perms.PAIRED_READ */],
91
- });
92
- opalProgressSvc.getCharacteristic(this.platform.Characteristic.RotationSpeed)
93
- .setProps({
94
- format: "int" /* Formats.INT */,
95
- unit: "percentage" /* Units.PERCENTAGE */,
96
- minStep: 1,
97
- minValue: 0,
98
- maxValue: 100,
99
- perms: ["ev" /* Perms.EVENTS */, "pr" /* Perms.PAIRED_READ */],
100
- })
101
- .removeOnGet()
102
- .removeOnSet();
103
- // Get default accessory information service
104
- const opalIceMakerMetadataService = this.accessory.getService('');
105
- // Metadata for Device Form, Opal Production Limit
106
- opalIceMakerMetadataService
107
- ?.getCharacteristic(this.platform.Characteristic.ProductData)
108
- .onGet(() => 'l=Production_Limit&i=OPL&t=number&d=0&p=1-100,_0_to_unset');
109
- // Start an update interval
110
- interval(this.deviceRefreshRate * 1000)
111
- .pipe(skipWhile(() => !this.accessory.services.find(svc => svc.displayName === this.oimProgressSvcName)))
112
- .subscribe(async () => {
113
- const currentProductionValue = await this.getProductionValue();
114
- const oimPowerSvc = this.accessory.services.find(accSvc => accSvc.displayName === this.oimPowerSvcName);
115
- const oimProgressSvc = this.accessory.services.find(accSvc => accSvc.displayName === this.oimProgressSvcName);
116
- // Math.min: If opalProductionLimit is Infinity (default/unset value), set to 100. Otherwise use the opalProductionLimit that is less than 100
117
- const progressBarProductionValue = Math.floor((100 / Math.min(this.opalProductionLimit, 100)) * currentProductionValue);
118
- oimProgressSvc?.updateCharacteristic(this.platform.Characteristic.RotationSpeed, Math.min(progressBarProductionValue, 100));
119
- oimProgressSvc?.updateCharacteristic(this.platform.Characteristic.Active, currentProductionValue > 0 ? 1 : 0);
120
- // If opalProductLimit is Infinity (default/unset value), the machine will turn off by itself
121
- if (currentProductionValue > this.opalProductionLimit) {
122
- oimPowerSvc?.setCharacteristic(this.platform.Characteristic.On, false);
123
- }
124
- });
125
- }
126
- async getProductionValue() {
127
- try {
128
- const erdVal = await this.readErd(ERD_TYPES.OIM_PRODUCTION);
129
- const hexToIntVal = Buffer.from(erdVal, 'hex').readUInt8(0);
130
- const productionValue = Math.min(hexToIntVal, 100);
131
- const completionistMsg = hexToIntVal > 100 ? `, Completion: ${hexToIntVal}` : '';
132
- this.debugSuccessLog(`Progress Svc: Value: ${productionValue}, Limit: ${this.opalProductionLimit}${completionistMsg}`);
133
- return productionValue;
134
- }
135
- catch (error) {
136
- const typedErr = error;
137
- this.errorLog(`Failed to read production value: ${typedErr.message}`);
138
- // Default to 0 if there's an error
139
- return 0;
140
- }
141
- }
142
- async readErd(erd) {
143
- const d = await axios
144
- .get(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`);
145
- return String(d.data.value);
146
- }
147
- async writeErd(erd, value) {
148
- await axios
149
- .post(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`, {
150
- kind: 'appliance#erdListEntry',
151
- userId: this.accessory.context.userId,
152
- applianceId: this.accessory.context.device.applianceId,
153
- erd,
154
- value: typeof value === 'boolean' ? (value ? '01' : '00') : value,
155
- });
156
- return undefined;
157
- }
158
- }
159
- //# sourceMappingURL=icemaker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"icemaker.js","sourceRoot":"","sources":["../../src/devices/icemaker.ts"],"names":[],"mappings":"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"}