@homebridge-plugins/homebridge-smarthq 0.5.0-beta.7 → 0.5.0-beta.9
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/dist/devices/refrigerator.d.ts +1 -1
- package/dist/devices/refrigerator.d.ts.map +1 -1
- package/dist/devices/refrigerator.js +63 -81
- package/dist/devices/refrigerator.js.map +1 -1
- package/docs/classes/SmartHQPlatform.html +8 -8
- package/docs/interfaces/DeviceOptions.html +2 -2
- package/docs/interfaces/SmartHQPlatformConfig.html +2 -2
- package/docs/interfaces/SmartHqContext.html +2 -2
- package/docs/interfaces/SmartHqERDResponse.html +2 -2
- package/docs/interfaces/credentials.html +2 -2
- package/docs/interfaces/devicesConfig.html +2 -2
- package/docs/interfaces/options.html +2 -2
- package/docs/variables/API_URL.html +1 -1
- package/docs/variables/ERD_CODES.html +1 -1
- package/docs/variables/ERD_TYPES.html +1 -1
- package/docs/variables/KEEPALIVE_TIMEOUT.html +1 -1
- package/docs/variables/LOGIN_URL.html +1 -1
- package/docs/variables/OAUTH2_CLIENT_ID.html +1 -1
- package/docs/variables/OAUTH2_CLIENT_SECRET.html +1 -1
- package/docs/variables/OAUTH2_REDIRECT_URI.html +1 -1
- package/docs/variables/PLATFORM_NAME.html +1 -1
- package/docs/variables/PLUGIN_NAME.html +1 -1
- package/docs/variables/SECURE_URL.html +1 -1
- package/docs/variables/default.html +1 -1
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@ export declare class SmartHQRefrigerator extends deviceBase {
|
|
|
8
8
|
SensorUpdateInProgress: boolean;
|
|
9
9
|
deviceStatus: any;
|
|
10
10
|
constructor(platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: SmartHqContext['device'] & devicesConfig);
|
|
11
|
-
readErd(erd: string): Promise<string>;
|
|
11
|
+
readErd(erd: string): Promise<string | undefined>;
|
|
12
12
|
writeErd(erd: string, value: string | boolean): Promise<undefined>;
|
|
13
13
|
}
|
|
14
14
|
//# 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;
|
|
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;IAoJrD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAgBjD,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAWpD"}
|
|
@@ -19,14 +19,8 @@ export class SmartHQRefrigerator extends deviceBase {
|
|
|
19
19
|
doorSensorService
|
|
20
20
|
.getCharacteristic(this.platform.Characteristic.ContactSensorState)
|
|
21
21
|
.onGet(async () => {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return Number.parseInt(r) !== 0;
|
|
25
|
-
}
|
|
26
|
-
catch (error) {
|
|
27
|
-
this.warnLog?.(`Refrigerator Door Sensor readErd error: ${error?.message ?? error}`);
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
22
|
+
const r = await this.readErd(ERD_TYPES.DOOR_STATUS);
|
|
23
|
+
return r ? Number.parseInt(r) !== 0 : false;
|
|
30
24
|
});
|
|
31
25
|
// Fridge Temperature Sensor
|
|
32
26
|
const fridgeTempService = this.accessory.getService('Fridge Temperature') ?? this.accessory.addService(this.platform.Service.TemperatureSensor, 'Fridge Temperature', 'FridgeTemp');
|
|
@@ -34,20 +28,26 @@ export class SmartHQRefrigerator extends deviceBase {
|
|
|
34
28
|
fridgeTempService
|
|
35
29
|
.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
|
|
36
30
|
.onGet(async () => {
|
|
31
|
+
const r = await this.readErd(ERD_TYPES.CURRENT_TEMPERATURE);
|
|
32
|
+
this.debugLog(`Raw CURRENT_TEMPERATURE ERD response: ${r}`);
|
|
33
|
+
// Check if ERD is supported
|
|
34
|
+
if (!r || r === 'undefined') {
|
|
35
|
+
return 2.8; // Default to ~37°F in Celsius if ERD not supported
|
|
36
|
+
}
|
|
37
|
+
// The CURRENT_TEMPERATURE ERD returns a JSON object with fridge and freezer properties
|
|
37
38
|
try {
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
// Parse the hex string - format is typically 4 hex characters (2 bytes)
|
|
41
|
-
// First byte = fridge temp, second byte = freezer temp (both in °F)
|
|
42
|
-
const fridgeTempF = Number.parseInt(r.substring(0, 2), 16);
|
|
39
|
+
const temps = JSON.parse(r);
|
|
40
|
+
const fridgeTempF = temps.fridge || temps.Fridge;
|
|
43
41
|
this.debugLog(`Fridge temp: ${fridgeTempF}°F`);
|
|
42
|
+
if (!fridgeTempF || Number.isNaN(Number(fridgeTempF))) {
|
|
43
|
+
return 2.8; // Default if can't parse
|
|
44
|
+
}
|
|
44
45
|
// Convert Fahrenheit to Celsius for HomeKit
|
|
45
|
-
|
|
46
|
-
return fridgeTempC;
|
|
46
|
+
return (Number(fridgeTempF) - 32) * 5 / 9;
|
|
47
47
|
}
|
|
48
|
-
catch (
|
|
49
|
-
this.
|
|
50
|
-
return
|
|
48
|
+
catch (parseError) {
|
|
49
|
+
this.debugLog(`Fridge Temperature: JSON parse error, using default`);
|
|
50
|
+
return 2.8;
|
|
51
51
|
}
|
|
52
52
|
});
|
|
53
53
|
// Freezer Temperature Sensor
|
|
@@ -56,37 +56,41 @@ export class SmartHQRefrigerator extends deviceBase {
|
|
|
56
56
|
freezerTempService
|
|
57
57
|
.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
|
|
58
58
|
.onGet(async () => {
|
|
59
|
+
const r = await this.readErd(ERD_TYPES.CURRENT_TEMPERATURE);
|
|
60
|
+
this.debugLog(`Raw CURRENT_TEMPERATURE ERD response: ${r}`);
|
|
61
|
+
// Check if ERD is supported
|
|
62
|
+
if (!r || r === 'undefined') {
|
|
63
|
+
return -17.8; // Default to ~0°F in Celsius if ERD not supported
|
|
64
|
+
}
|
|
65
|
+
// The CURRENT_TEMPERATURE ERD returns a JSON object with fridge and freezer properties
|
|
59
66
|
try {
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
// Parse the hex string - second byte is freezer temp in °F
|
|
63
|
-
const freezerTempF = Number.parseInt(r.substring(2, 4), 16);
|
|
67
|
+
const temps = JSON.parse(r);
|
|
68
|
+
const freezerTempF = temps.freezer || temps.Freezer;
|
|
64
69
|
this.debugLog(`Freezer temp: ${freezerTempF}°F`);
|
|
70
|
+
if (!freezerTempF || Number.isNaN(Number(freezerTempF))) {
|
|
71
|
+
return -17.8; // Default if can't parse
|
|
72
|
+
}
|
|
65
73
|
// Convert Fahrenheit to Celsius for HomeKit
|
|
66
|
-
|
|
67
|
-
return freezerTempC;
|
|
74
|
+
return (Number(freezerTempF) - 32) * 5 / 9;
|
|
68
75
|
}
|
|
69
|
-
catch (
|
|
70
|
-
this.
|
|
71
|
-
return
|
|
76
|
+
catch (parseError) {
|
|
77
|
+
this.debugLog(`Freezer Temperature: JSON parse error, using default`);
|
|
78
|
+
return -17.8;
|
|
72
79
|
}
|
|
73
80
|
});
|
|
74
|
-
// Air Filter
|
|
81
|
+
// Air Filter Maintenance
|
|
75
82
|
const filterService = this.accessory.getService('Air Filter') ?? this.accessory.addService(this.platform.Service.FilterMaintenance, 'Air Filter', 'AirFilter');
|
|
76
83
|
filterService.setCharacteristic(this.platform.Characteristic.Name, 'Air Filter');
|
|
77
84
|
filterService
|
|
78
85
|
.getCharacteristic(this.platform.Characteristic.FilterChangeIndication)
|
|
79
86
|
.onGet(async () => {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
return Number.parseInt(r) === 1
|
|
83
|
-
? this.platform.Characteristic.FilterChangeIndication.CHANGE_FILTER
|
|
84
|
-
: this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
|
|
85
|
-
}
|
|
86
|
-
catch (error) {
|
|
87
|
-
this.warnLog?.(`Air Filter Status readErd error: ${error?.message ?? error}`);
|
|
87
|
+
const r = await this.readErd(ERD_TYPES.AIR_FILTER_STATUS);
|
|
88
|
+
if (!r) {
|
|
88
89
|
return this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
|
|
89
90
|
}
|
|
91
|
+
return Number.parseInt(r) === 1
|
|
92
|
+
? this.platform.Characteristic.FilterChangeIndication.CHANGE_FILTER
|
|
93
|
+
: this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
|
|
90
94
|
});
|
|
91
95
|
// Ice Maker Control (Switch)
|
|
92
96
|
const iceMakerService = this.accessory.getService('Ice Maker') ?? this.accessory.addService(this.platform.Service.Switch, 'Ice Maker', 'IceMaker');
|
|
@@ -94,22 +98,11 @@ export class SmartHQRefrigerator extends deviceBase {
|
|
|
94
98
|
iceMakerService
|
|
95
99
|
.getCharacteristic(this.platform.Characteristic.On)
|
|
96
100
|
.onGet(async () => {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
return Number.parseInt(r) !== 0;
|
|
100
|
-
}
|
|
101
|
-
catch (error) {
|
|
102
|
-
this.warnLog?.(`Ice Maker Control readErd error: ${error?.message ?? error}`);
|
|
103
|
-
return false;
|
|
104
|
-
}
|
|
101
|
+
const r = await this.readErd(ERD_TYPES.ICE_MAKER_CONTROL);
|
|
102
|
+
return r ? Number.parseInt(r) !== 0 : false;
|
|
105
103
|
})
|
|
106
104
|
.onSet(async (value) => {
|
|
107
|
-
|
|
108
|
-
await this.writeErd(ERD_TYPES.ICE_MAKER_CONTROL, value);
|
|
109
|
-
}
|
|
110
|
-
catch (error) {
|
|
111
|
-
this.warnLog?.(`Ice Maker Control writeErd error: ${error?.message ?? error}`);
|
|
112
|
-
}
|
|
105
|
+
await this.writeErd(ERD_TYPES.ICE_MAKER_CONTROL, value);
|
|
113
106
|
});
|
|
114
107
|
// Turbo Cool Switch
|
|
115
108
|
const turboCoolService = this.accessory.getService('Turbo Cool') ?? this.accessory.addService(this.platform.Service.Switch, 'Turbo Cool', 'TurboCool');
|
|
@@ -117,22 +110,11 @@ export class SmartHQRefrigerator extends deviceBase {
|
|
|
117
110
|
turboCoolService
|
|
118
111
|
.getCharacteristic(this.platform.Characteristic.On)
|
|
119
112
|
.onGet(async () => {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
return Number.parseInt(r) !== 0;
|
|
123
|
-
}
|
|
124
|
-
catch (error) {
|
|
125
|
-
this.warnLog?.(`Turbo Cool Status readErd error: ${error?.message ?? error}`);
|
|
126
|
-
return false;
|
|
127
|
-
}
|
|
113
|
+
const r = await this.readErd(ERD_TYPES.TURBO_COOL_STATUS);
|
|
114
|
+
return r ? Number.parseInt(r) !== 0 : false;
|
|
128
115
|
})
|
|
129
116
|
.onSet(async (value) => {
|
|
130
|
-
|
|
131
|
-
await this.writeErd(ERD_TYPES.TURBO_COOL_STATUS, value);
|
|
132
|
-
}
|
|
133
|
-
catch (error) {
|
|
134
|
-
this.warnLog?.(`Turbo Cool Status writeErd error: ${error?.message ?? error}`);
|
|
135
|
-
}
|
|
117
|
+
await this.writeErd(ERD_TYPES.TURBO_COOL_STATUS, value);
|
|
136
118
|
});
|
|
137
119
|
// Turbo Freeze Switch
|
|
138
120
|
const turboFreezeService = this.accessory.getService('Turbo Freeze') ?? this.accessory.addService(this.platform.Service.Switch, 'Turbo Freeze', 'TurboFreeze');
|
|
@@ -140,22 +122,11 @@ export class SmartHQRefrigerator extends deviceBase {
|
|
|
140
122
|
turboFreezeService
|
|
141
123
|
.getCharacteristic(this.platform.Characteristic.On)
|
|
142
124
|
.onGet(async () => {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
return Number.parseInt(r) !== 0;
|
|
146
|
-
}
|
|
147
|
-
catch (error) {
|
|
148
|
-
this.warnLog?.(`Turbo Freeze Status readErd error: ${error?.message ?? error}`);
|
|
149
|
-
return false;
|
|
150
|
-
}
|
|
125
|
+
const r = await this.readErd(ERD_TYPES.TURBO_FREEZE_STATUS);
|
|
126
|
+
return r ? Number.parseInt(r) !== 0 : false;
|
|
151
127
|
})
|
|
152
128
|
.onSet(async (value) => {
|
|
153
|
-
|
|
154
|
-
await this.writeErd(ERD_TYPES.TURBO_FREEZE_STATUS, value);
|
|
155
|
-
}
|
|
156
|
-
catch (error) {
|
|
157
|
-
this.warnLog?.(`Turbo Freeze Status writeErd error: ${error?.message ?? error}`);
|
|
158
|
-
}
|
|
129
|
+
await this.writeErd(ERD_TYPES.TURBO_FREEZE_STATUS, value);
|
|
159
130
|
});
|
|
160
131
|
// this is subject we use to track when we need to POST changes to the SmartHQ API
|
|
161
132
|
this.SensorUpdateInProgress = false;
|
|
@@ -169,9 +140,20 @@ export class SmartHQRefrigerator extends deviceBase {
|
|
|
169
140
|
});
|
|
170
141
|
}
|
|
171
142
|
async readErd(erd) {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
143
|
+
try {
|
|
144
|
+
const d = await axios
|
|
145
|
+
.get(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`);
|
|
146
|
+
return String(d.data.value);
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
// 400 means ERD not supported by this appliance model - return undefined silently
|
|
150
|
+
if (error?.response?.status === 400) {
|
|
151
|
+
return undefined;
|
|
152
|
+
}
|
|
153
|
+
// For other errors, log and return undefined
|
|
154
|
+
this.warnLog?.(`readErd ${erd} error: ${error?.message ?? error}`);
|
|
155
|
+
return undefined;
|
|
156
|
+
}
|
|
175
157
|
}
|
|
176
158
|
async writeErd(erd, value) {
|
|
177
159
|
await axios
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refrigerator.js","sourceRoot":"","sources":["../../src/devices/refrigerator.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,OAAO,mBAAoB,SAAQ,UAAU;IAMtC;IAEA;IAPX,UAAU;IACV,sBAAsB,CAAU;IAChC,YAAY,CAAK;IAEjB,YACW,QAAyB,EAClC,SAA4C,EACnC,MAAgD;QAEzD,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAJzB,aAAQ,GAAR,QAAQ,CAAiB;QAEzB,WAAM,GAAN,MAAM,CAA0C;QAIzD,IAAI,CAAC,QAAQ,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAE5F,2BAA2B;QAC3B,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAA;QACnL,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;QAC3F,iBAAiB;aACd,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;aAClE,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,
|
|
1
|
+
{"version":3,"file":"refrigerator.js","sourceRoot":"","sources":["../../src/devices/refrigerator.ts"],"names":[],"mappings":"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"}
|