@boozilla/homebridge-shome 1.1.3 → 1.2.1
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/README.md +3 -4
- package/dist/accessories/doorbellAccessory.d.ts +1 -0
- package/dist/accessories/doorbellAccessory.js +4 -0
- package/dist/accessories/doorbellAccessory.js.map +1 -1
- package/dist/accessories/maintenanceFeeAccessory.d.ts +10 -0
- package/dist/accessories/maintenanceFeeAccessory.js +27 -0
- package/dist/accessories/maintenanceFeeAccessory.js.map +1 -0
- package/dist/accessories/parkingAccessory.d.ts +10 -0
- package/dist/accessories/parkingAccessory.js +23 -0
- package/dist/accessories/parkingAccessory.js.map +1 -0
- package/dist/platform.d.ts +4 -0
- package/dist/platform.js +132 -1
- package/dist/platform.js.map +1 -1
- package/dist/shomeClient.d.ts +26 -0
- package/dist/shomeClient.js +35 -0
- package/dist/shomeClient.js.map +1 -1
- package/package.json +1 -1
- package/src/accessories/doorbellAccessory.ts +5 -0
- package/src/accessories/maintenanceFeeAccessory.ts +34 -0
- package/src/accessories/parkingAccessory.ts +29 -0
- package/src/platform.ts +155 -3
- package/src/shomeClient.ts +70 -0
package/README.md
CHANGED
|
@@ -11,13 +11,12 @@ door locks, using the Home app and Siri on your Apple devices.
|
|
|
11
11
|
## Key Features
|
|
12
12
|
|
|
13
13
|
* **Light Control**: Turn individual lights in each room on or off.
|
|
14
|
-
* **Heating Control**: Control thermostats in each room individually. Monitor the current temperature and set your
|
|
15
|
-
desired target temperature.
|
|
14
|
+
* **Heating Control**: Control thermostats in each room individually. Monitor the current temperature and set your desired target temperature.
|
|
16
15
|
* **Ventilation System Control**: Turn the ventilation system on or off and adjust its fan speed.
|
|
17
16
|
* **Digital Door Lock**: Check the current state of your door lock (locked/unlocked) and unlock it remotely.
|
|
18
|
-
* **Individual Accessory Support**: Each sub-device registered in your system, such as 'Living Room Light' or 'Master
|
|
19
|
-
Bedroom Thermostat', is added as an independent HomeKit accessory for granular control.
|
|
20
17
|
* **Visitor Notifications**: Automatically creates a "Visitor Alert" motion sensor in HomeKit. When a new visitor is detected, this sensor is triggered, sending a notification to your Apple devices (if you have notifications enabled for the sensor in the Home app).
|
|
18
|
+
* **Parking Notifications**: Triggers a "Parking Activity" motion sensor when a vehicle enters or exits the parking lot, allowing you to receive notifications and create automations based on arrivals and departures.
|
|
19
|
+
* **Maintenance Fee Alerts**: Get notified via a "Maintenance Fee Update" motion sensor as soon as your new monthly maintenance fee statement is available. The plugin features an optimized polling logic to check for updates efficiently.
|
|
21
20
|
|
|
22
21
|
## Installation
|
|
23
22
|
|
|
@@ -31,6 +31,10 @@ export class DoorbellAccessory {
|
|
|
31
31
|
this.motionService.getCharacteristic(this.platform.Characteristic.MotionDetected).updateValue(false);
|
|
32
32
|
}, 1000);
|
|
33
33
|
}
|
|
34
|
+
initializeLatestVisitor(visitor) {
|
|
35
|
+
this.platform.log.info(`Initializing doorbell with the most recent visitor from ${visitor.recodDt}.`);
|
|
36
|
+
this.cameraController.updateVisitor(visitor);
|
|
37
|
+
}
|
|
34
38
|
shutdown() {
|
|
35
39
|
this.cameraController.shutdown();
|
|
36
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doorbellAccessory.js","sourceRoot":"","sources":["../../src/accessories/doorbellAccessory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAG1E,MAAM,OAAO,iBAAiB;IAML;IACA;IANf,eAAe,CAAU;IACzB,aAAa,CAAU;IACvB,gBAAgB,CAAwB;IAEhD,YACuB,QAAuB,EACvB,SAA4B;QAD5B,aAAQ,GAAR,QAAQ,CAAe;QACvB,cAAS,GAAT,SAAS,CAAmB;QAE7C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAE;aACnE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC;aACrE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC;aACjE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;QAElF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;eACzE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;QAE7F,IAAI,CAAC,gBAAgB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACjF,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAErE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;eAC3E,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;QAExF,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAChE,CAAC;IAEM,UAAU,CAAC,OAAgB;QAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,OAAO,CAAC,WAAW,iDAAiD,CAAC,CAAC;QAEtH,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAE7C,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC;aACzF,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;QAElF,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpG,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACvG,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"doorbellAccessory.js","sourceRoot":"","sources":["../../src/accessories/doorbellAccessory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAG1E,MAAM,OAAO,iBAAiB;IAML;IACA;IANf,eAAe,CAAU;IACzB,aAAa,CAAU;IACvB,gBAAgB,CAAwB;IAEhD,YACuB,QAAuB,EACvB,SAA4B;QAD5B,aAAQ,GAAR,QAAQ,CAAe;QACvB,cAAS,GAAT,SAAS,CAAmB;QAE7C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAE;aACnE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC;aACrE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC;aACjE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;QAElF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;eACzE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;QAE7F,IAAI,CAAC,gBAAgB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACjF,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAErE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;eAC3E,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;QAExF,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAChE,CAAC;IAEM,UAAU,CAAC,OAAgB;QAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,OAAO,CAAC,WAAW,iDAAiD,CAAC,CAAC;QAEtH,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAE7C,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC;aACzF,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;QAElF,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpG,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACvG,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAEM,uBAAuB,CAAC,OAAgB;QAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,2DAA2D,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;QACtG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PlatformAccessory } from 'homebridge';
|
|
2
|
+
import { ShomePlatform } from '../platform.js';
|
|
3
|
+
import { MaintenanceFeeData } from '../shomeClient.js';
|
|
4
|
+
export declare class MaintenanceFeeAccessory {
|
|
5
|
+
private readonly platform;
|
|
6
|
+
private readonly accessory;
|
|
7
|
+
private motionService;
|
|
8
|
+
constructor(platform: ShomePlatform, accessory: PlatformAccessory);
|
|
9
|
+
triggerNotification(feeData: MaintenanceFeeData): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export class MaintenanceFeeAccessory {
|
|
2
|
+
platform;
|
|
3
|
+
accessory;
|
|
4
|
+
motionService;
|
|
5
|
+
constructor(platform, accessory) {
|
|
6
|
+
this.platform = platform;
|
|
7
|
+
this.accessory = accessory;
|
|
8
|
+
this.accessory.getService(this.platform.Service.AccessoryInformation)
|
|
9
|
+
.setCharacteristic(this.platform.Characteristic.Manufacturer, 'sHome')
|
|
10
|
+
.setCharacteristic(this.platform.Characteristic.Model, 'Maintenance Fee Notifier')
|
|
11
|
+
.setCharacteristic(this.platform.Characteristic.SerialNumber, 'shome-maintenance-fee');
|
|
12
|
+
// 알림을 위한 모션 센서 서비스
|
|
13
|
+
this.motionService = this.accessory.getService(this.platform.Service.MotionSensor)
|
|
14
|
+
|| this.accessory.addService(this.platform.Service.MotionSensor, 'Maintenance Fee Update');
|
|
15
|
+
}
|
|
16
|
+
triggerNotification(feeData) {
|
|
17
|
+
const totalAmount = feeData.expense_total[0]?.money ?? 0;
|
|
18
|
+
const displayName = `${feeData.search_year}년 ${feeData.search_month}월 관리비`;
|
|
19
|
+
this.platform.log.info(`New maintenance fee available: ${displayName} - ${totalAmount.toLocaleString()}원`);
|
|
20
|
+
// 업데이트 알림을 위해 모션 센서 트리거
|
|
21
|
+
this.motionService.getCharacteristic(this.platform.Characteristic.MotionDetected).updateValue(true);
|
|
22
|
+
setTimeout(() => {
|
|
23
|
+
this.motionService.getCharacteristic(this.platform.Characteristic.MotionDetected).updateValue(false);
|
|
24
|
+
}, 2000);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=maintenanceFeeAccessory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maintenanceFeeAccessory.js","sourceRoot":"","sources":["../../src/accessories/maintenanceFeeAccessory.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,uBAAuB;IAIX;IACA;IAJf,aAAa,CAAU;IAE/B,YACuB,QAAuB,EACvB,SAA4B;QAD5B,aAAQ,GAAR,QAAQ,CAAe;QACvB,cAAS,GAAT,SAAS,CAAmB;QAE7C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAE;aACnE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC;aACrE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,0BAA0B,CAAC;aACjF,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC;QAEzF,mBAAmB;QACnB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;eAC3E,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;IACrG,CAAC;IAEM,mBAAmB,CAAC,OAA2B;QACpD,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,GAAG,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC,YAAY,OAAO,CAAC;QAE3E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,kCAAkC,WAAW,MAAM,WAAW,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAE3G,wBAAwB;QACxB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpG,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACvG,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PlatformAccessory } from 'homebridge';
|
|
2
|
+
import { ShomePlatform } from '../platform.js';
|
|
3
|
+
import { ParkingEvent } from '../shomeClient.js';
|
|
4
|
+
export declare class ParkingAccessory {
|
|
5
|
+
private readonly platform;
|
|
6
|
+
private readonly accessory;
|
|
7
|
+
private motionService;
|
|
8
|
+
constructor(platform: ShomePlatform, accessory: PlatformAccessory);
|
|
9
|
+
newParkingEvent(event: ParkingEvent): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export class ParkingAccessory {
|
|
2
|
+
platform;
|
|
3
|
+
accessory;
|
|
4
|
+
motionService;
|
|
5
|
+
constructor(platform, accessory) {
|
|
6
|
+
this.platform = platform;
|
|
7
|
+
this.accessory = accessory;
|
|
8
|
+
this.accessory.getService(this.platform.Service.AccessoryInformation)
|
|
9
|
+
.setCharacteristic(this.platform.Characteristic.Manufacturer, 'sHome')
|
|
10
|
+
.setCharacteristic(this.platform.Characteristic.Model, 'Parking Sensor')
|
|
11
|
+
.setCharacteristic(this.platform.Characteristic.SerialNumber, 'shome-parking-sensor');
|
|
12
|
+
this.motionService = this.accessory.getService(this.platform.Service.MotionSensor)
|
|
13
|
+
|| this.accessory.addService(this.platform.Service.MotionSensor, 'Parking Activity');
|
|
14
|
+
}
|
|
15
|
+
newParkingEvent(event) {
|
|
16
|
+
this.platform.log.info(`New parking event for car ${event.car_no}: ${event.unit} at ${event.park_date}`);
|
|
17
|
+
this.motionService.getCharacteristic(this.platform.Characteristic.MotionDetected).updateValue(true);
|
|
18
|
+
setTimeout(() => {
|
|
19
|
+
this.motionService.getCharacteristic(this.platform.Characteristic.MotionDetected).updateValue(false);
|
|
20
|
+
}, 5000);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=parkingAccessory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parkingAccessory.js","sourceRoot":"","sources":["../../src/accessories/parkingAccessory.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,gBAAgB;IAIJ;IACA;IAJf,aAAa,CAAU;IAE/B,YACuB,QAAuB,EACvB,SAA4B;QAD5B,aAAQ,GAAR,QAAQ,CAAe;QACvB,cAAS,GAAT,SAAS,CAAmB;QAE7C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAE;aACnE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC;aACrE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC;aACvE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;QAExF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;eAC3E,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IAC/F,CAAC;IAEM,eAAe,CAAC,KAAmB;QACxC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAEzG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpG,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACvG,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;CACF"}
|
package/dist/platform.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export declare class ShomePlatform implements DynamicPlatformPlugin {
|
|
|
12
12
|
private pollingInterval;
|
|
13
13
|
private pollingTimer?;
|
|
14
14
|
private lastCheckedTimestamp;
|
|
15
|
+
private lastCheckedParkingTimestamp;
|
|
16
|
+
private lastCheckedMaintenanceFeeMonth;
|
|
15
17
|
constructor(log: Logger, config: PlatformConfig, api: API);
|
|
16
18
|
configureAccessory(accessory: PlatformAccessory): void;
|
|
17
19
|
discoverDevices(): Promise<void>;
|
|
@@ -20,5 +22,7 @@ export declare class ShomePlatform implements DynamicPlatformPlugin {
|
|
|
20
22
|
startPolling(): void;
|
|
21
23
|
pollDeviceUpdates(): Promise<void>;
|
|
22
24
|
checkForNewVisitors(): Promise<void>;
|
|
25
|
+
checkForNewParkingEvents(): Promise<void>;
|
|
26
|
+
checkForNewMaintenanceFee(): Promise<void>;
|
|
23
27
|
private parseRecordDt;
|
|
24
28
|
}
|
package/dist/platform.js
CHANGED
|
@@ -5,6 +5,8 @@ import { VentilatorAccessory } from './accessories/ventilatorAccessory.js';
|
|
|
5
5
|
import { HeaterAccessory } from './accessories/heaterAccessory.js';
|
|
6
6
|
import { DoorlockAccessory } from './accessories/doorlockAccessory.js';
|
|
7
7
|
import { DoorbellAccessory } from './accessories/doorbellAccessory.js';
|
|
8
|
+
import { ParkingAccessory } from './accessories/parkingAccessory.js';
|
|
9
|
+
import { MaintenanceFeeAccessory } from './accessories/maintenanceFeeAccessory.js';
|
|
8
10
|
const CONTROLLABLE_MULTI_DEVICE_TYPES = ['LIGHT', 'HEATER', 'VENTILATOR'];
|
|
9
11
|
const SPECIAL_CONTROLLABLE_TYPES = ['DOORLOCK'];
|
|
10
12
|
export class ShomePlatform {
|
|
@@ -19,6 +21,8 @@ export class ShomePlatform {
|
|
|
19
21
|
pollingInterval;
|
|
20
22
|
pollingTimer;
|
|
21
23
|
lastCheckedTimestamp = new Date();
|
|
24
|
+
lastCheckedParkingTimestamp = new Date();
|
|
25
|
+
lastCheckedMaintenanceFeeMonth = null;
|
|
22
26
|
constructor(log, config, api) {
|
|
23
27
|
this.log = log;
|
|
24
28
|
this.config = config;
|
|
@@ -44,7 +48,6 @@ export class ShomePlatform {
|
|
|
44
48
|
if (this.pollingTimer) {
|
|
45
49
|
clearInterval(this.pollingTimer);
|
|
46
50
|
}
|
|
47
|
-
// Add this loop to properly shut down handlers
|
|
48
51
|
for (const handler of this.accessoryHandlers.values()) {
|
|
49
52
|
if (handler instanceof DoorbellAccessory) {
|
|
50
53
|
handler.shutdown();
|
|
@@ -84,6 +87,27 @@ export class ShomePlatform {
|
|
|
84
87
|
const doorbellDevice = { thngModelTypeName: 'DOORBELL', nickname: 'Doorbell', thngId: 'shome-doorbell' };
|
|
85
88
|
const doorbellAccessory = this.setupAccessory(doorbellDevice, null, doorbellUUID);
|
|
86
89
|
foundAccessories.push(doorbellAccessory);
|
|
90
|
+
const doorbellHandler = this.accessoryHandlers.get(doorbellUUID);
|
|
91
|
+
if (doorbellHandler) {
|
|
92
|
+
this.log.info('Initializing latest visitor for doorbell...');
|
|
93
|
+
const visitorList = await this.shomeClient.getVisitorHistory();
|
|
94
|
+
if (visitorList && visitorList.length > 0) {
|
|
95
|
+
visitorList.sort((a, b) => b.recodDt.localeCompare(a.recodDt));
|
|
96
|
+
const latestVisitor = visitorList[0];
|
|
97
|
+
doorbellHandler.initializeLatestVisitor(latestVisitor);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
this.log.info('No visitor history found, skipping initialization.');
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const parkingUUID = this.api.hap.uuid.generate('shome-parking');
|
|
104
|
+
const parkingDevice = { thngModelTypeName: 'PARKING', nickname: 'Parking Sensor', thngId: 'shome-parking' };
|
|
105
|
+
const parkingAccessory = this.setupAccessory(parkingDevice, null, parkingUUID);
|
|
106
|
+
foundAccessories.push(parkingAccessory);
|
|
107
|
+
const feeUUID = this.api.hap.uuid.generate('shome-maintenance-fee');
|
|
108
|
+
const feeDevice = { thngModelTypeName: 'MAINTENANCE_FEE', nickname: 'Maintenance Fee', thngId: 'shome-maintenance-fee' };
|
|
109
|
+
const feeAccessory = this.setupAccessory(feeDevice, null, feeUUID);
|
|
110
|
+
foundAccessories.push(feeAccessory);
|
|
87
111
|
const accessoriesToRemove = this.accessories.filter(cachedAccessory => !foundAccessories.some(foundAccessory => foundAccessory.UUID === cachedAccessory.UUID));
|
|
88
112
|
if (accessoriesToRemove.length > 0) {
|
|
89
113
|
this.log.info('Removing stale accessories:', accessoriesToRemove.map(a => a.displayName));
|
|
@@ -139,6 +163,12 @@ export class ShomePlatform {
|
|
|
139
163
|
case 'DOORBELL':
|
|
140
164
|
this.accessoryHandlers.set(accessory.UUID, new DoorbellAccessory(this, accessory));
|
|
141
165
|
break;
|
|
166
|
+
case 'PARKING':
|
|
167
|
+
this.accessoryHandlers.set(accessory.UUID, new ParkingAccessory(this, accessory));
|
|
168
|
+
break;
|
|
169
|
+
case 'MAINTENANCE_FEE':
|
|
170
|
+
this.accessoryHandlers.set(accessory.UUID, new MaintenanceFeeAccessory(this, accessory));
|
|
171
|
+
break;
|
|
142
172
|
}
|
|
143
173
|
}
|
|
144
174
|
startPolling() {
|
|
@@ -148,6 +178,8 @@ export class ShomePlatform {
|
|
|
148
178
|
try {
|
|
149
179
|
await this.pollDeviceUpdates();
|
|
150
180
|
await this.checkForNewVisitors();
|
|
181
|
+
await this.checkForNewParkingEvents();
|
|
182
|
+
await this.checkForNewMaintenanceFee();
|
|
151
183
|
}
|
|
152
184
|
catch (error) {
|
|
153
185
|
this.log.error('An error occurred during polling:', error);
|
|
@@ -216,6 +248,105 @@ export class ShomePlatform {
|
|
|
216
248
|
this.log.debug(`Updated last checked timestamp to: ${this.lastCheckedTimestamp.toISOString()}`);
|
|
217
249
|
}
|
|
218
250
|
}
|
|
251
|
+
async checkForNewParkingEvents() {
|
|
252
|
+
this.log.debug('Checking for new parking events...');
|
|
253
|
+
const parkingEventList = await this.shomeClient.getParkingHistory();
|
|
254
|
+
const newParkingEvents = [];
|
|
255
|
+
for (const event of parkingEventList) {
|
|
256
|
+
const eventTime = new Date(event.park_date);
|
|
257
|
+
if (eventTime > this.lastCheckedParkingTimestamp) {
|
|
258
|
+
newParkingEvents.push(event);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
if (newParkingEvents.length > 0) {
|
|
262
|
+
this.log.info(`Found ${newParkingEvents.length} new parking event(s).`);
|
|
263
|
+
newParkingEvents.sort((a, b) => a.park_date.localeCompare(b.park_date));
|
|
264
|
+
const parkingUUID = this.api.hap.uuid.generate('shome-parking');
|
|
265
|
+
const parkingHandler = this.accessoryHandlers.get(parkingUUID);
|
|
266
|
+
if (parkingHandler) {
|
|
267
|
+
for (const event of newParkingEvents) {
|
|
268
|
+
parkingHandler.newParkingEvent(event);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
this.log.warn('Parking accessory handler not found.');
|
|
273
|
+
}
|
|
274
|
+
const latestEvent = newParkingEvents[newParkingEvents.length - 1];
|
|
275
|
+
this.lastCheckedParkingTimestamp = new Date(latestEvent.park_date);
|
|
276
|
+
this.log.debug(`Updated last checked parking timestamp to: ${this.lastCheckedParkingTimestamp.toISOString()}`);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
async checkForNewMaintenanceFee() {
|
|
280
|
+
this.log.debug('Checking for new maintenance fee...');
|
|
281
|
+
if (!this.lastCheckedMaintenanceFeeMonth) {
|
|
282
|
+
this.log.debug('First run for maintenance fee check. Finding the latest available data...');
|
|
283
|
+
const now = new Date();
|
|
284
|
+
let initialFeeData = null;
|
|
285
|
+
let initialYear = now.getFullYear();
|
|
286
|
+
let initialMonth = now.getMonth() + 1;
|
|
287
|
+
for (let i = 0; i < 3; i++) {
|
|
288
|
+
const feeData = await this.shomeClient.getMaintenanceFee(initialYear, initialMonth);
|
|
289
|
+
if (feeData && feeData.expense_total && feeData.expense_total.length > 0 && feeData.expense_total[0].money > 0) {
|
|
290
|
+
initialFeeData = feeData;
|
|
291
|
+
break;
|
|
292
|
+
}
|
|
293
|
+
initialMonth--;
|
|
294
|
+
if (initialMonth === 0) {
|
|
295
|
+
initialMonth = 12;
|
|
296
|
+
initialYear--;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
if (initialFeeData) {
|
|
300
|
+
const monthStr = `${initialFeeData.search_year}-${initialFeeData.search_month}`;
|
|
301
|
+
this.log.info(`Found initial latest maintenance fee data for ${monthStr}.`);
|
|
302
|
+
this.lastCheckedMaintenanceFeeMonth = monthStr;
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
this.log.debug('Could not find any maintenance fee data for the last 3 months on first run.');
|
|
306
|
+
const twoMonthsAgo = new Date();
|
|
307
|
+
twoMonthsAgo.setMonth(twoMonthsAgo.getMonth() - 2);
|
|
308
|
+
this.lastCheckedMaintenanceFeeMonth = `${twoMonthsAgo.getFullYear()}-${String(twoMonthsAgo.getMonth() + 1).padStart(2, '0')}`;
|
|
309
|
+
this.log.debug(`Setting baseline check month to ${this.lastCheckedMaintenanceFeeMonth}.`);
|
|
310
|
+
}
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
let [lastYear, lastMonth] = this.lastCheckedMaintenanceFeeMonth.split('-').map(Number);
|
|
314
|
+
for (let i = 0; i < 3; i++) {
|
|
315
|
+
let nextMonth = lastMonth + 1;
|
|
316
|
+
let nextYear = lastYear;
|
|
317
|
+
if (nextMonth > 12) {
|
|
318
|
+
nextMonth = 1;
|
|
319
|
+
nextYear++;
|
|
320
|
+
}
|
|
321
|
+
const now = new Date();
|
|
322
|
+
if (nextYear > now.getFullYear() || (nextYear === now.getFullYear() && nextMonth > now.getMonth() + 1)) {
|
|
323
|
+
break;
|
|
324
|
+
}
|
|
325
|
+
const nextMonthStr = `${nextYear}-${String(nextMonth).padStart(2, '0')}`;
|
|
326
|
+
this.log.debug(`Proactively checking for maintenance fee for ${nextMonthStr}...`);
|
|
327
|
+
const feeData = await this.shomeClient.getMaintenanceFee(nextYear, nextMonth);
|
|
328
|
+
if (feeData && feeData.expense_total && feeData.expense_total.length > 0 && feeData.expense_total[0].money > 0) {
|
|
329
|
+
this.log.info(`Found new maintenance fee data for ${nextMonthStr}.`);
|
|
330
|
+
const feeUUID = this.api.hap.uuid.generate('shome-maintenance-fee');
|
|
331
|
+
const feeHandler = this.accessoryHandlers.get(feeUUID);
|
|
332
|
+
if (feeHandler) {
|
|
333
|
+
feeHandler.triggerNotification(feeData);
|
|
334
|
+
this.lastCheckedMaintenanceFeeMonth = nextMonthStr;
|
|
335
|
+
this.log.debug(`Last checked maintenance fee month updated to: ${nextMonthStr}`);
|
|
336
|
+
lastYear = nextYear;
|
|
337
|
+
lastMonth = nextMonth;
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
this.log.warn('Maintenance fee accessory handler not found.');
|
|
341
|
+
break;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
this.log.debug(`No maintenance fee data found for ${nextMonthStr}. Stopping check for this cycle.`);
|
|
346
|
+
break;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
219
350
|
parseRecordDt(recordDt) {
|
|
220
351
|
const year = parseInt(recordDt.substring(0, 4), 10);
|
|
221
352
|
const month = parseInt(recordDt.substring(4, 6), 10) - 1;
|
package/dist/platform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|
package/dist/shomeClient.d.ts
CHANGED
|
@@ -16,6 +16,30 @@ export interface Visitor {
|
|
|
16
16
|
recodDt: string;
|
|
17
17
|
deviceLabel: string;
|
|
18
18
|
}
|
|
19
|
+
export interface ParkingEvent {
|
|
20
|
+
car_no: string;
|
|
21
|
+
park_date: string;
|
|
22
|
+
unit: 'in' | 'out';
|
|
23
|
+
}
|
|
24
|
+
export interface ExpenseItem {
|
|
25
|
+
money: number;
|
|
26
|
+
name: string;
|
|
27
|
+
}
|
|
28
|
+
export interface ExpenseBundle {
|
|
29
|
+
money: number;
|
|
30
|
+
name: string;
|
|
31
|
+
}
|
|
32
|
+
export interface ExpenseTotal {
|
|
33
|
+
money: number;
|
|
34
|
+
name: string;
|
|
35
|
+
}
|
|
36
|
+
export interface MaintenanceFeeData {
|
|
37
|
+
search_year: string;
|
|
38
|
+
search_month: string;
|
|
39
|
+
expense_item: ExpenseItem[];
|
|
40
|
+
expense_bundle: ExpenseBundle[];
|
|
41
|
+
expense_total: ExpenseTotal[];
|
|
42
|
+
}
|
|
19
43
|
export declare class ShomeClient {
|
|
20
44
|
private readonly log;
|
|
21
45
|
private readonly username;
|
|
@@ -41,6 +65,8 @@ export declare class ShomeClient {
|
|
|
41
65
|
setDevice(thingId: string, subDeviceId: string, type: string, controlType: string, state: string, nickname?: string): Promise<boolean>;
|
|
42
66
|
unlockDoorlock(thingId: string, nickname?: string): Promise<boolean>;
|
|
43
67
|
getVisitorHistory(): Promise<Visitor[]>;
|
|
68
|
+
getParkingHistory(): Promise<ParkingEvent[]>;
|
|
69
|
+
getMaintenanceFee(year: number, month: number): Promise<MaintenanceFeeData | null>;
|
|
44
70
|
getThumbnailImage(visitor: Visitor): Promise<Buffer | null>;
|
|
45
71
|
private sha512;
|
|
46
72
|
private isTokenExpired;
|
package/dist/shomeClient.js
CHANGED
|
@@ -249,6 +249,41 @@ export class ShomeClient {
|
|
|
249
249
|
return response.data.videoList || [];
|
|
250
250
|
});
|
|
251
251
|
}
|
|
252
|
+
async getParkingHistory() {
|
|
253
|
+
return this.executeWithRetries(async () => {
|
|
254
|
+
const token = this.cachedAccessToken;
|
|
255
|
+
if (!token || !this.homeId) {
|
|
256
|
+
this.log.error('Cannot fetch parking history: Not logged in or homeId is missing.');
|
|
257
|
+
return [];
|
|
258
|
+
}
|
|
259
|
+
const createDate = this.getDateTime();
|
|
260
|
+
const hashData = this.sha512(`IHRESTAPI${this.homeId}${createDate}`);
|
|
261
|
+
const response = await axios.get(`${BASE_URL}/v18/complex/${this.homeId}/parking/inout-histories`, {
|
|
262
|
+
params: { createDate, hashData },
|
|
263
|
+
headers: { 'Authorization': `Bearer ${token}` },
|
|
264
|
+
});
|
|
265
|
+
return response.data.data || [];
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
async getMaintenanceFee(year, month) {
|
|
269
|
+
return this.executeWithRetries(async () => {
|
|
270
|
+
const token = this.cachedAccessToken;
|
|
271
|
+
if (!token || !this.homeId) {
|
|
272
|
+
this.log.error('Cannot fetch maintenance fee: Not logged in or homeId is missing.');
|
|
273
|
+
return null;
|
|
274
|
+
}
|
|
275
|
+
const createDate = this.getDateTime();
|
|
276
|
+
const hashData = this.sha512(`IHRESTAPI${this.homeId}${year}${month}${createDate}`);
|
|
277
|
+
const response = await axios.get(`${BASE_URL}/v18/complex/${this.homeId}/maintenance-fee/${year}/${month}`, {
|
|
278
|
+
params: { createDate, hashData },
|
|
279
|
+
headers: { 'Authorization': `Bearer ${token}` },
|
|
280
|
+
});
|
|
281
|
+
if (response.data && response.data.data && response.data.data.length > 0) {
|
|
282
|
+
return response.data.data[0];
|
|
283
|
+
}
|
|
284
|
+
return null;
|
|
285
|
+
});
|
|
286
|
+
}
|
|
252
287
|
async getThumbnailImage(visitor) {
|
|
253
288
|
const request = async () => {
|
|
254
289
|
const token = this.cachedAccessToken;
|
package/dist/shomeClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shomeClient.js","sourceRoot":"","sources":["../src/shomeClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shomeClient.js","sourceRoot":"","sources":["../src/shomeClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,WAAW,CAAC;AAGjC,MAAM,QAAQ,GAAG,mCAAmC,CAAC;AACrD,MAAM,YAAY,GAAG,kEAAkE,CAAC;AACxF,MAAM,kBAAkB,GAAG,yEAAyE,CAAC;AACrG,MAAM,QAAQ,GAAG,KAAK,CAAC;AACvB,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,gBAAgB,GAAG,GAAG,CAAC,CAAC,wBAAwB;AA2DtD,MAAM,OAAO,WAAW;IAYC;IACA;IACA;IACA;IAdf,iBAAiB,GAAkB,IAAI,CAAC;IACxC,KAAK,GAAkB,IAAI,CAAC;IAC5B,MAAM,GAAkB,IAAI,CAAC;IAC7B,WAAW,GAAW,CAAC,CAAC;IAChC,8DAA8D;IACtD,QAAQ,GAAqB,EAAE,CAAC;IAChC,eAAe,GAAG,KAAK,CAAC;IACxB,YAAY,GAAkC,IAAI,CAAC;IACnD,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/C,YACuB,GAAW,EACX,QAAgB,EAChB,QAAgB,EAChB,QAAgB;QAHhB,QAAG,GAAH,GAAG,CAAQ;QACX,aAAQ,GAAR,QAAQ,CAAQ;QAChB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,aAAQ,GAAR,QAAQ,CAAQ;IAEvC,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAClD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACpB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE;gBAClC,OAAO;gBACP,MAAM;aACP,CAAC,CAAC;YACH,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,yCAAyC;QACzC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE;YAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAChC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,QAAQ,GAAG,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE;gBAC/E,GAAG,YAAY,GAAG,kBAAkB,GAAG,QAAQ,GAAG,UAAU,EAAE,CAAC,CAAC;YAE1E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,kBAAkB,EAAE,IAAI,EAAE;gBACpE,MAAM,EAAE;oBACN,UAAU,EAAE,YAAY;oBACxB,eAAe,EAAE,kBAAkB;oBACnC,UAAU,EAAE,UAAU;oBACtB,QAAQ,EAAE,QAAQ;oBAClB,QAAQ,EAAE,QAAQ;oBAClB,gBAAgB,EAAE,IAAI,CAAC,QAAQ;oBAC/B,QAAQ,EAAE,cAAc;oBACxB,MAAM,EAAE,IAAI,CAAC,QAAQ;iBACtB;aACF,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC/C,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;gBACnD,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;gBACjC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;gBAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACpG,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;gBAEtC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;gBACtD,OAAO,IAAI,CAAC,iBAAiB,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;gBAClE,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;YACxC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,UAAU,CAAI,OAAyB,EAAE,QAAiB;QAChE,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC3D,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAG,CAAC;YACpC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACjE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;oBAAS,CAAC;gBACT,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAI,OAAyB,EAAE,QAAQ,GAAG,KAAK;QAC7E,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;gBACrB,CAAC;gBACD,OAAO,MAAM,OAAO,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,CAAC;gBAEhF,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;oBACtE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAC9B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;gBACvB,CAAC;gBAED,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC;oBAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,WAAW,sBAAsB,EAAE,KAAK,CAAC,CAAC;oBACjF,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,OAAO,EAAE,CAAC;gBACV,MAAM,WAAW,GAAG,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;gBAClE,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+BAA+B,WAAW,kBAAkB,OAAO,IAAI,WAAW,GAAG,CAAC,CAAC;gBACvG,CAAC;gBACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;gBAE/D,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAEM,YAAY,CAAC,QAAgB;QAClC,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACrC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC1B,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,KAAK,GAAG,UAAU,EAAE,CAAC,CAAC;YAEpE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,iBAAiB,IAAI,CAAC,KAAK,WAAW,EAAE;gBAClF,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE;gBAChC,OAAO,EAAE,EAAE,eAAe,EAAE,UAAU,KAAK,EAAE,EAAE;aAChD,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,IAAY;QAC/C,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACrC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,OAAO,GAAG,UAAU,EAAE,CAAC,CAAC;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAEtD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,iBAAiB,QAAQ,IAAI,OAAO,EAAE,EAAE;gBAClF,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE;gBAChC,OAAO,EAAE,EAAE,eAAe,EAAE,UAAU,KAAK,EAAE,EAAE;aAChD,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAe,EAAE,WAAmB,EAAE,IAAY,EAAE,WAAmB,EAAE,KAAa,EAAE,QAAiB;QACvH,MAAM,QAAQ,GAAG,GAAG,OAAO,IAAI,WAAW,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACrC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,OAAO,GAAG,WAAW,GAAG,KAAK,GAAG,UAAU,EAAE,CAAC,CAAC;YACvF,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACtD,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAEjE,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,iBAAiB,QAAQ,IAAI,OAAO,IAAI,WAAW,IAAI,WAAW,EAAE,EAAE,IAAI,EAAE;gBACrG,MAAM,EAAE;oBACN,UAAU;oBACV,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK;oBACvD,QAAQ;iBACT;gBACD,OAAO,EAAE,EAAE,eAAe,EAAE,UAAU,KAAK,EAAE,EAAE;aAChD,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,QAAQ,IAAI,QAAQ,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,kBAAkB,KAAK,GAAG,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAe,EAAE,QAAiB;QACrD,MAAM,QAAQ,GAAG,OAAO,CAAC;QACzB,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACrC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,OAAO,GAAG,UAAU,EAAE,CAAC,CAAC;YAEjE,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,2BAA2B,OAAO,YAAY,EAAE,IAAI,EAAE;gBAC/E,MAAM,EAAE;oBACN,UAAU;oBACV,GAAG,EAAE,EAAE;oBACP,QAAQ;iBACT;gBACD,OAAO,EAAE,EAAE,eAAe,EAAE,UAAU,KAAK,EAAE,EAAE;aAChD,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,QAAQ,IAAI,OAAO,CAAC;YACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,WAAW,IAAI,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QACF,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACrC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;gBACpF,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,CAAC,CAAC;YACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,UAAU,EAAE,CAAC,CAAC;YAC9E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,kBAAkB,IAAI,CAAC,MAAM,kBAAkB,EAAE;gBAC3F,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE;gBACxC,OAAO,EAAE,EAAE,eAAe,EAAE,UAAU,KAAK,EAAE,EAAE;aAChD,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACrC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;gBACpF,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC,CAAC;YACrE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,gBAAgB,IAAI,CAAC,MAAM,0BAA0B,EAAE;gBACjG,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE;gBAChC,OAAO,EAAE,EAAE,eAAe,EAAE,UAAU,KAAK,EAAE,EAAE;aAChD,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAAY,EAAE,KAAa;QACjD,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACrC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;gBACpF,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,UAAU,EAAE,CAAC,CAAC;YACpF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,gBAAgB,IAAI,CAAC,MAAM,oBAAoB,IAAI,IAAI,KAAK,EAAE,EAAE;gBAC1G,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE;gBAChC,OAAO,EAAE,EAAE,eAAe,EAAE,UAAU,KAAK,EAAE,EAAE;aAChD,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzE,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAgB;QACtC,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACrC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBACzD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;gBAChF,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,OAAO,CAAC,KAAK,GAAG,UAAU,EAAE,CAAC,CAAC;YACvE,MAAM,YAAY,GAAG,GAAG,QAAQ,kBAAkB,OAAO,CAAC,KAAK,kBAAkB,CAAC;YAClF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE;gBAC7C,MAAM,EAAE;oBACN,UAAU;oBACV,QAAQ;iBACT;gBACD,OAAO,EAAE,EAAE,eAAe,EAAE,UAAU,KAAK,EAAE,EAAE;gBAC/C,YAAY,EAAE,aAAa;aAC5B,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEF,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEO,MAAM,CAAC,KAAa;QAC1B,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAEO,cAAc;QACpB,OAAO,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC;IACnE,CAAC;IAEO,WAAW;QACjB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7D,OAAO,GAAG,GAAG,CAAC,cAAc,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE;YAC7E,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC;IAC5F,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -44,6 +44,11 @@ export class DoorbellAccessory {
|
|
|
44
44
|
}, 1000);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
public initializeLatestVisitor(visitor: Visitor) {
|
|
48
|
+
this.platform.log.info(`Initializing doorbell with the most recent visitor from ${visitor.recodDt}.`);
|
|
49
|
+
this.cameraController.updateVisitor(visitor);
|
|
50
|
+
}
|
|
51
|
+
|
|
47
52
|
public shutdown() {
|
|
48
53
|
this.cameraController.shutdown();
|
|
49
54
|
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { PlatformAccessory, Service } from 'homebridge';
|
|
2
|
+
import { ShomePlatform } from '../platform.js';
|
|
3
|
+
import { MaintenanceFeeData } from '../shomeClient.js';
|
|
4
|
+
|
|
5
|
+
export class MaintenanceFeeAccessory {
|
|
6
|
+
private motionService: Service;
|
|
7
|
+
|
|
8
|
+
constructor(
|
|
9
|
+
private readonly platform: ShomePlatform,
|
|
10
|
+
private readonly accessory: PlatformAccessory,
|
|
11
|
+
) {
|
|
12
|
+
this.accessory.getService(this.platform.Service.AccessoryInformation)!
|
|
13
|
+
.setCharacteristic(this.platform.Characteristic.Manufacturer, 'sHome')
|
|
14
|
+
.setCharacteristic(this.platform.Characteristic.Model, 'Maintenance Fee Notifier')
|
|
15
|
+
.setCharacteristic(this.platform.Characteristic.SerialNumber, 'shome-maintenance-fee');
|
|
16
|
+
|
|
17
|
+
// 알림을 위한 모션 센서 서비스
|
|
18
|
+
this.motionService = this.accessory.getService(this.platform.Service.MotionSensor)
|
|
19
|
+
|| this.accessory.addService(this.platform.Service.MotionSensor, 'Maintenance Fee Update');
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
public triggerNotification(feeData: MaintenanceFeeData) {
|
|
23
|
+
const totalAmount = feeData.expense_total[0]?.money ?? 0;
|
|
24
|
+
const displayName = `${feeData.search_year}년 ${feeData.search_month}월 관리비`;
|
|
25
|
+
|
|
26
|
+
this.platform.log.info(`New maintenance fee available: ${displayName} - ${totalAmount.toLocaleString()}원`);
|
|
27
|
+
|
|
28
|
+
// 업데이트 알림을 위해 모션 센서 트리거
|
|
29
|
+
this.motionService.getCharacteristic(this.platform.Characteristic.MotionDetected).updateValue(true);
|
|
30
|
+
setTimeout(() => {
|
|
31
|
+
this.motionService.getCharacteristic(this.platform.Characteristic.MotionDetected).updateValue(false);
|
|
32
|
+
}, 2000);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { PlatformAccessory, Service } from 'homebridge';
|
|
2
|
+
import { ShomePlatform } from '../platform.js';
|
|
3
|
+
import { ParkingEvent } from '../shomeClient.js';
|
|
4
|
+
|
|
5
|
+
export class ParkingAccessory {
|
|
6
|
+
private motionService: Service;
|
|
7
|
+
|
|
8
|
+
constructor(
|
|
9
|
+
private readonly platform: ShomePlatform,
|
|
10
|
+
private readonly accessory: PlatformAccessory,
|
|
11
|
+
) {
|
|
12
|
+
this.accessory.getService(this.platform.Service.AccessoryInformation)!
|
|
13
|
+
.setCharacteristic(this.platform.Characteristic.Manufacturer, 'sHome')
|
|
14
|
+
.setCharacteristic(this.platform.Characteristic.Model, 'Parking Sensor')
|
|
15
|
+
.setCharacteristic(this.platform.Characteristic.SerialNumber, 'shome-parking-sensor');
|
|
16
|
+
|
|
17
|
+
this.motionService = this.accessory.getService(this.platform.Service.MotionSensor)
|
|
18
|
+
|| this.accessory.addService(this.platform.Service.MotionSensor, 'Parking Activity');
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public newParkingEvent(event: ParkingEvent) {
|
|
22
|
+
this.platform.log.info(`New parking event for car ${event.car_no}: ${event.unit} at ${event.park_date}`);
|
|
23
|
+
|
|
24
|
+
this.motionService.getCharacteristic(this.platform.Characteristic.MotionDetected).updateValue(true);
|
|
25
|
+
setTimeout(() => {
|
|
26
|
+
this.motionService.getCharacteristic(this.platform.Characteristic.MotionDetected).updateValue(false);
|
|
27
|
+
}, 5000);
|
|
28
|
+
}
|
|
29
|
+
}
|
package/src/platform.ts
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { API, Characteristic, DynamicPlatformPlugin, Logger, PlatformAccessory, PlatformConfig, Service } from 'homebridge';
|
|
2
2
|
import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js';
|
|
3
|
-
import { ShomeClient, MainDevice, SubDevice, Visitor } from './shomeClient.js';
|
|
3
|
+
import { ShomeClient, MainDevice, SubDevice, Visitor, ParkingEvent, MaintenanceFeeData } from './shomeClient.js';
|
|
4
4
|
import { LightAccessory } from './accessories/lightAccessory.js';
|
|
5
5
|
import { VentilatorAccessory } from './accessories/ventilatorAccessory.js';
|
|
6
6
|
import { HeaterAccessory } from './accessories/heaterAccessory.js';
|
|
7
7
|
import { DoorlockAccessory } from './accessories/doorlockAccessory.js';
|
|
8
8
|
import { DoorbellAccessory } from './accessories/doorbellAccessory.js';
|
|
9
|
+
import { ParkingAccessory } from './accessories/parkingAccessory.js';
|
|
10
|
+
import { MaintenanceFeeAccessory } from './accessories/maintenanceFeeAccessory.js';
|
|
9
11
|
|
|
10
12
|
const CONTROLLABLE_MULTI_DEVICE_TYPES = ['LIGHT', 'HEATER', 'VENTILATOR'];
|
|
11
13
|
const SPECIAL_CONTROLLABLE_TYPES = ['DOORLOCK'];
|
|
12
14
|
|
|
13
|
-
type AccessoryHandler = LightAccessory | VentilatorAccessory | HeaterAccessory |
|
|
15
|
+
type AccessoryHandler = LightAccessory | VentilatorAccessory | HeaterAccessory |
|
|
16
|
+
DoorlockAccessory | DoorbellAccessory | ParkingAccessory | MaintenanceFeeAccessory;
|
|
14
17
|
|
|
15
18
|
export class ShomePlatform implements DynamicPlatformPlugin {
|
|
16
19
|
public readonly Service: typeof Service;
|
|
@@ -22,6 +25,8 @@ export class ShomePlatform implements DynamicPlatformPlugin {
|
|
|
22
25
|
private pollingTimer?: NodeJS.Timeout;
|
|
23
26
|
|
|
24
27
|
private lastCheckedTimestamp: Date = new Date();
|
|
28
|
+
private lastCheckedParkingTimestamp: Date = new Date();
|
|
29
|
+
private lastCheckedMaintenanceFeeMonth: string | null = null;
|
|
25
30
|
|
|
26
31
|
constructor(
|
|
27
32
|
public readonly log: Logger,
|
|
@@ -59,7 +64,7 @@ export class ShomePlatform implements DynamicPlatformPlugin {
|
|
|
59
64
|
if (this.pollingTimer) {
|
|
60
65
|
clearInterval(this.pollingTimer);
|
|
61
66
|
}
|
|
62
|
-
|
|
67
|
+
|
|
63
68
|
for (const handler of this.accessoryHandlers.values()) {
|
|
64
69
|
if (handler instanceof DoorbellAccessory) {
|
|
65
70
|
handler.shutdown();
|
|
@@ -104,6 +109,29 @@ export class ShomePlatform implements DynamicPlatformPlugin {
|
|
|
104
109
|
const doorbellAccessory = this.setupAccessory(doorbellDevice, null, doorbellUUID);
|
|
105
110
|
foundAccessories.push(doorbellAccessory);
|
|
106
111
|
|
|
112
|
+
const doorbellHandler = this.accessoryHandlers.get(doorbellUUID) as DoorbellAccessory | undefined;
|
|
113
|
+
if (doorbellHandler) {
|
|
114
|
+
this.log.info('Initializing latest visitor for doorbell...');
|
|
115
|
+
const visitorList = await this.shomeClient.getVisitorHistory();
|
|
116
|
+
if (visitorList && visitorList.length > 0) {
|
|
117
|
+
visitorList.sort((a, b) => b.recodDt.localeCompare(a.recodDt));
|
|
118
|
+
const latestVisitor = visitorList[0];
|
|
119
|
+
doorbellHandler.initializeLatestVisitor(latestVisitor);
|
|
120
|
+
} else {
|
|
121
|
+
this.log.info('No visitor history found, skipping initialization.');
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const parkingUUID = this.api.hap.uuid.generate('shome-parking');
|
|
126
|
+
const parkingDevice = { thngModelTypeName: 'PARKING', nickname: 'Parking Sensor', thngId: 'shome-parking' } as MainDevice;
|
|
127
|
+
const parkingAccessory = this.setupAccessory(parkingDevice, null, parkingUUID);
|
|
128
|
+
foundAccessories.push(parkingAccessory);
|
|
129
|
+
|
|
130
|
+
const feeUUID = this.api.hap.uuid.generate('shome-maintenance-fee');
|
|
131
|
+
const feeDevice = { thngModelTypeName: 'MAINTENANCE_FEE', nickname: 'Maintenance Fee', thngId: 'shome-maintenance-fee' } as MainDevice;
|
|
132
|
+
const feeAccessory = this.setupAccessory(feeDevice, null, feeUUID);
|
|
133
|
+
foundAccessories.push(feeAccessory);
|
|
134
|
+
|
|
107
135
|
const accessoriesToRemove = this.accessories.filter(cachedAccessory =>
|
|
108
136
|
!foundAccessories.some(foundAccessory => foundAccessory.UUID === cachedAccessory.UUID),
|
|
109
137
|
);
|
|
@@ -168,6 +196,12 @@ export class ShomePlatform implements DynamicPlatformPlugin {
|
|
|
168
196
|
case 'DOORBELL':
|
|
169
197
|
this.accessoryHandlers.set(accessory.UUID, new DoorbellAccessory(this, accessory));
|
|
170
198
|
break;
|
|
199
|
+
case 'PARKING':
|
|
200
|
+
this.accessoryHandlers.set(accessory.UUID, new ParkingAccessory(this, accessory));
|
|
201
|
+
break;
|
|
202
|
+
case 'MAINTENANCE_FEE':
|
|
203
|
+
this.accessoryHandlers.set(accessory.UUID, new MaintenanceFeeAccessory(this, accessory));
|
|
204
|
+
break;
|
|
171
205
|
}
|
|
172
206
|
}
|
|
173
207
|
|
|
@@ -178,6 +212,8 @@ export class ShomePlatform implements DynamicPlatformPlugin {
|
|
|
178
212
|
try {
|
|
179
213
|
await this.pollDeviceUpdates();
|
|
180
214
|
await this.checkForNewVisitors();
|
|
215
|
+
await this.checkForNewParkingEvents();
|
|
216
|
+
await this.checkForNewMaintenanceFee();
|
|
181
217
|
} catch (error) {
|
|
182
218
|
this.log.error('An error occurred during polling:', error);
|
|
183
219
|
}
|
|
@@ -252,6 +288,122 @@ export class ShomePlatform implements DynamicPlatformPlugin {
|
|
|
252
288
|
}
|
|
253
289
|
}
|
|
254
290
|
|
|
291
|
+
async checkForNewParkingEvents() {
|
|
292
|
+
this.log.debug('Checking for new parking events...');
|
|
293
|
+
const parkingEventList = await this.shomeClient.getParkingHistory();
|
|
294
|
+
const newParkingEvents: ParkingEvent[] = [];
|
|
295
|
+
|
|
296
|
+
for (const event of parkingEventList) {
|
|
297
|
+
const eventTime = new Date(event.park_date);
|
|
298
|
+
|
|
299
|
+
if (eventTime > this.lastCheckedParkingTimestamp) {
|
|
300
|
+
newParkingEvents.push(event);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
if (newParkingEvents.length > 0) {
|
|
305
|
+
this.log.info(`Found ${newParkingEvents.length} new parking event(s).`);
|
|
306
|
+
newParkingEvents.sort((a, b) => a.park_date.localeCompare(b.park_date));
|
|
307
|
+
|
|
308
|
+
const parkingUUID = this.api.hap.uuid.generate('shome-parking');
|
|
309
|
+
const parkingHandler = this.accessoryHandlers.get(parkingUUID) as ParkingAccessory | undefined;
|
|
310
|
+
|
|
311
|
+
if (parkingHandler) {
|
|
312
|
+
for (const event of newParkingEvents) {
|
|
313
|
+
parkingHandler.newParkingEvent(event);
|
|
314
|
+
}
|
|
315
|
+
} else {
|
|
316
|
+
this.log.warn('Parking accessory handler not found.');
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
const latestEvent = newParkingEvents[newParkingEvents.length - 1];
|
|
320
|
+
this.lastCheckedParkingTimestamp = new Date(latestEvent.park_date);
|
|
321
|
+
this.log.debug(`Updated last checked parking timestamp to: ${this.lastCheckedParkingTimestamp.toISOString()}`);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
async checkForNewMaintenanceFee() {
|
|
326
|
+
this.log.debug('Checking for new maintenance fee...');
|
|
327
|
+
|
|
328
|
+
if (!this.lastCheckedMaintenanceFeeMonth) {
|
|
329
|
+
this.log.debug('First run for maintenance fee check. Finding the latest available data...');
|
|
330
|
+
const now = new Date();
|
|
331
|
+
let initialFeeData: MaintenanceFeeData | null = null;
|
|
332
|
+
let initialYear = now.getFullYear();
|
|
333
|
+
let initialMonth = now.getMonth() + 1;
|
|
334
|
+
|
|
335
|
+
for (let i = 0; i < 3; i++) {
|
|
336
|
+
const feeData = await this.shomeClient.getMaintenanceFee(initialYear, initialMonth);
|
|
337
|
+
if (feeData && feeData.expense_total && feeData.expense_total.length > 0 && feeData.expense_total[0].money > 0) {
|
|
338
|
+
initialFeeData = feeData;
|
|
339
|
+
break;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
initialMonth--;
|
|
343
|
+
if (initialMonth === 0) {
|
|
344
|
+
initialMonth = 12;
|
|
345
|
+
initialYear--;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
if (initialFeeData) {
|
|
350
|
+
const monthStr = `${initialFeeData.search_year}-${initialFeeData.search_month}`;
|
|
351
|
+
this.log.info(`Found initial latest maintenance fee data for ${monthStr}.`);
|
|
352
|
+
this.lastCheckedMaintenanceFeeMonth = monthStr;
|
|
353
|
+
} else {
|
|
354
|
+
this.log.debug('Could not find any maintenance fee data for the last 3 months on first run.');
|
|
355
|
+
|
|
356
|
+
const twoMonthsAgo = new Date();
|
|
357
|
+
twoMonthsAgo.setMonth(twoMonthsAgo.getMonth() - 2);
|
|
358
|
+
this.lastCheckedMaintenanceFeeMonth = `${twoMonthsAgo.getFullYear()}-${String(twoMonthsAgo.getMonth() + 1).padStart(2, '0')}`;
|
|
359
|
+
this.log.debug(`Setting baseline check month to ${this.lastCheckedMaintenanceFeeMonth}.`);
|
|
360
|
+
}
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
let [lastYear, lastMonth] = this.lastCheckedMaintenanceFeeMonth.split('-').map(Number);
|
|
365
|
+
|
|
366
|
+
for (let i = 0; i < 3; i++) {
|
|
367
|
+
let nextMonth = lastMonth + 1;
|
|
368
|
+
let nextYear = lastYear;
|
|
369
|
+
if (nextMonth > 12) {
|
|
370
|
+
nextMonth = 1;
|
|
371
|
+
nextYear++;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
const now = new Date();
|
|
375
|
+
|
|
376
|
+
if (nextYear > now.getFullYear() || (nextYear === now.getFullYear() && nextMonth > now.getMonth() + 1)) {
|
|
377
|
+
break;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
const nextMonthStr = `${nextYear}-${String(nextMonth).padStart(2, '0')}`;
|
|
381
|
+
this.log.debug(`Proactively checking for maintenance fee for ${nextMonthStr}...`);
|
|
382
|
+
const feeData = await this.shomeClient.getMaintenanceFee(nextYear, nextMonth);
|
|
383
|
+
|
|
384
|
+
if (feeData && feeData.expense_total && feeData.expense_total.length > 0 && feeData.expense_total[0].money > 0) {
|
|
385
|
+
this.log.info(`Found new maintenance fee data for ${nextMonthStr}.`);
|
|
386
|
+
|
|
387
|
+
const feeUUID = this.api.hap.uuid.generate('shome-maintenance-fee');
|
|
388
|
+
const feeHandler = this.accessoryHandlers.get(feeUUID) as MaintenanceFeeAccessory | undefined;
|
|
389
|
+
if (feeHandler) {
|
|
390
|
+
feeHandler.triggerNotification(feeData);
|
|
391
|
+
this.lastCheckedMaintenanceFeeMonth = nextMonthStr;
|
|
392
|
+
this.log.debug(`Last checked maintenance fee month updated to: ${nextMonthStr}`);
|
|
393
|
+
|
|
394
|
+
lastYear = nextYear;
|
|
395
|
+
lastMonth = nextMonth;
|
|
396
|
+
} else {
|
|
397
|
+
this.log.warn('Maintenance fee accessory handler not found.');
|
|
398
|
+
break;
|
|
399
|
+
}
|
|
400
|
+
} else {
|
|
401
|
+
this.log.debug(`No maintenance fee data found for ${nextMonthStr}. Stopping check for this cycle.`);
|
|
402
|
+
break;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
|
|
255
407
|
private parseRecordDt(recordDt: string): Date {
|
|
256
408
|
const year = parseInt(recordDt.substring(0, 4), 10);
|
|
257
409
|
const month = parseInt(recordDt.substring(4, 6), 10) - 1;
|
package/src/shomeClient.ts
CHANGED
|
@@ -31,6 +31,35 @@ export interface Visitor {
|
|
|
31
31
|
deviceLabel: string;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
export interface ParkingEvent {
|
|
35
|
+
car_no: string;
|
|
36
|
+
park_date: string;
|
|
37
|
+
unit: 'in' | 'out';
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface ExpenseItem {
|
|
41
|
+
money: number;
|
|
42
|
+
name: string;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface ExpenseBundle {
|
|
46
|
+
money: number;
|
|
47
|
+
name: string;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface ExpenseTotal {
|
|
51
|
+
money: number;
|
|
52
|
+
name: string;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface MaintenanceFeeData {
|
|
56
|
+
search_year: string;
|
|
57
|
+
search_month: string;
|
|
58
|
+
expense_item: ExpenseItem[];
|
|
59
|
+
expense_bundle: ExpenseBundle[];
|
|
60
|
+
expense_total: ExpenseTotal[];
|
|
61
|
+
}
|
|
62
|
+
|
|
34
63
|
type QueueTask<T = unknown> = {
|
|
35
64
|
request: () => Promise<T>;
|
|
36
65
|
resolve: (value: T | PromiseLike<T>) => void;
|
|
@@ -315,6 +344,47 @@ export class ShomeClient {
|
|
|
315
344
|
});
|
|
316
345
|
}
|
|
317
346
|
|
|
347
|
+
async getParkingHistory(): Promise<ParkingEvent[]> {
|
|
348
|
+
return this.executeWithRetries(async () => {
|
|
349
|
+
const token = this.cachedAccessToken;
|
|
350
|
+
if (!token || !this.homeId) {
|
|
351
|
+
this.log.error('Cannot fetch parking history: Not logged in or homeId is missing.');
|
|
352
|
+
return [];
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
const createDate = this.getDateTime();
|
|
356
|
+
const hashData = this.sha512(`IHRESTAPI${this.homeId}${createDate}`);
|
|
357
|
+
const response = await axios.get(`${BASE_URL}/v18/complex/${this.homeId}/parking/inout-histories`, {
|
|
358
|
+
params: { createDate, hashData },
|
|
359
|
+
headers: { 'Authorization': `Bearer ${token}` },
|
|
360
|
+
});
|
|
361
|
+
|
|
362
|
+
return response.data.data || [];
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
async getMaintenanceFee(year: number, month: number): Promise<MaintenanceFeeData | null> {
|
|
367
|
+
return this.executeWithRetries(async () => {
|
|
368
|
+
const token = this.cachedAccessToken;
|
|
369
|
+
if (!token || !this.homeId) {
|
|
370
|
+
this.log.error('Cannot fetch maintenance fee: Not logged in or homeId is missing.');
|
|
371
|
+
return null;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
const createDate = this.getDateTime();
|
|
375
|
+
const hashData = this.sha512(`IHRESTAPI${this.homeId}${year}${month}${createDate}`);
|
|
376
|
+
const response = await axios.get(`${BASE_URL}/v18/complex/${this.homeId}/maintenance-fee/${year}/${month}`, {
|
|
377
|
+
params: { createDate, hashData },
|
|
378
|
+
headers: { 'Authorization': `Bearer ${token}` },
|
|
379
|
+
});
|
|
380
|
+
|
|
381
|
+
if (response.data && response.data.data && response.data.data.length > 0) {
|
|
382
|
+
return response.data.data[0];
|
|
383
|
+
}
|
|
384
|
+
return null;
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
|
|
318
388
|
async getThumbnailImage(visitor: Visitor): Promise<Buffer | null> {
|
|
319
389
|
const request = async () => {
|
|
320
390
|
const token = this.cachedAccessToken;
|