@mp-consulting/homebridge-lg-thinq 1.0.27 → 1.0.28
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/baseDevice.d.ts +10 -0
- package/dist/baseDevice.js +30 -1
- package/dist/baseDevice.js.map +1 -1
- package/package.json +1 -1
package/dist/baseDevice.d.ts
CHANGED
|
@@ -3,6 +3,16 @@ import type { Logger, PlatformAccessory, Service, WithUUID } from 'homebridge';
|
|
|
3
3
|
import type { Device } from './models/Device.js';
|
|
4
4
|
import { EventEmitter } from 'events';
|
|
5
5
|
type ServiceConstructor = WithUUID<typeof Service>;
|
|
6
|
+
/**
|
|
7
|
+
* Recursively merge a partial snapshot into the existing snapshot.
|
|
8
|
+
*
|
|
9
|
+
* ThinQ MQTT publishes `state.reported` as a sparse delta — a once-per-minute
|
|
10
|
+
* `{ washerDryer: { remainTimeMinute: N } }` would otherwise replace the entire
|
|
11
|
+
* `washerDryer` subtree under shallow spread, dropping `doorLock`/`state`/etc.
|
|
12
|
+
* for an instant and triggering spurious HomeKit notifications when the next
|
|
13
|
+
* poll restored them. Deep merge preserves siblings; arrays are replaced.
|
|
14
|
+
*/
|
|
15
|
+
export declare function mergeSnapshot(current: Record<string, unknown> | null | undefined, incoming: Record<string, unknown>): Record<string, unknown>;
|
|
6
16
|
export interface DeviceControlPayload {
|
|
7
17
|
dataKey: string | null;
|
|
8
18
|
dataValue: unknown;
|
package/dist/baseDevice.js
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import { DeviceRegistry } from './models/DeviceRegistry.js';
|
|
3
|
+
function isPlainObject(value) {
|
|
4
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Recursively merge a partial snapshot into the existing snapshot.
|
|
8
|
+
*
|
|
9
|
+
* ThinQ MQTT publishes `state.reported` as a sparse delta — a once-per-minute
|
|
10
|
+
* `{ washerDryer: { remainTimeMinute: N } }` would otherwise replace the entire
|
|
11
|
+
* `washerDryer` subtree under shallow spread, dropping `doorLock`/`state`/etc.
|
|
12
|
+
* for an instant and triggering spurious HomeKit notifications when the next
|
|
13
|
+
* poll restored them. Deep merge preserves siblings; arrays are replaced.
|
|
14
|
+
*/
|
|
15
|
+
export function mergeSnapshot(current, incoming) {
|
|
16
|
+
if (!isPlainObject(current)) {
|
|
17
|
+
return { ...incoming };
|
|
18
|
+
}
|
|
19
|
+
const result = { ...current };
|
|
20
|
+
for (const key of Object.keys(incoming)) {
|
|
21
|
+
const next = incoming[key];
|
|
22
|
+
const prev = result[key];
|
|
23
|
+
if (isPlainObject(prev) && isPlainObject(next)) {
|
|
24
|
+
result[key] = mergeSnapshot(prev, next);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
result[key] = next;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
3
32
|
export class BaseDevice extends EventEmitter {
|
|
4
33
|
platform;
|
|
5
34
|
accessory;
|
|
@@ -31,7 +60,7 @@ export class BaseDevice extends EventEmitter {
|
|
|
31
60
|
}
|
|
32
61
|
update(snapshot) {
|
|
33
62
|
this.platform.log.debug('[' + this.accessory.context.device.name + '] Received snapshot: ', JSON.stringify(snapshot));
|
|
34
|
-
this.accessory.context.device.data.snapshot =
|
|
63
|
+
this.accessory.context.device.data.snapshot = mergeSnapshot(this.accessory.context.device.snapshot, snapshot);
|
|
35
64
|
this.updateAccessoryCharacteristic(this.accessory.context.device);
|
|
36
65
|
}
|
|
37
66
|
/**
|
package/dist/baseDevice.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseDevice.js","sourceRoot":"","sources":["../src/baseDevice.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"baseDevice.js","sourceRoot":"","sources":["../src/baseDevice.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"displayName": "LG ThinQ",
|
|
3
3
|
"name": "@mp-consulting/homebridge-lg-thinq",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.28",
|
|
5
5
|
"description": "A Homebridge plugin for controlling/monitoring LG ThinQ devices via LG ThinQ platform.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Mickael Palma",
|