@camstack/addon-provider-amcrest 0.2.137 → 0.2.139
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/addon.js +367 -9
- package/dist/addon.mjs +367 -9
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -5441,7 +5441,7 @@ var ZodIssueCode = {
|
|
|
5441
5441
|
var ZodFirstPartyTypeKind;
|
|
5442
5442
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5443
5443
|
//#endregion
|
|
5444
|
-
//#region ../types/dist/sleep-
|
|
5444
|
+
//#region ../types/dist/sleep-BegKjwUu.mjs
|
|
5445
5445
|
/**
|
|
5446
5446
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5447
5447
|
* window to float samples (D455).
|
|
@@ -8474,7 +8474,7 @@ function userError(code, params, englishFallback) {
|
|
|
8474
8474
|
return new CamstackError(code, params, englishFallback);
|
|
8475
8475
|
}
|
|
8476
8476
|
//#endregion
|
|
8477
|
-
//#region ../types/dist/err-msg
|
|
8477
|
+
//#region ../types/dist/err-msg-BXKzRBwg.mjs
|
|
8478
8478
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
8479
8479
|
DeviceType["Camera"] = "camera";
|
|
8480
8480
|
DeviceType["Hub"] = "hub";
|
|
@@ -8566,6 +8566,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
|
8566
8566
|
* native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
|
|
8567
8567
|
* integrations sharing the same food/desiccant/hopper surface. */
|
|
8568
8568
|
DeviceType["PetFeeder"] = "pet-feeder";
|
|
8569
|
+
/** Built-in dishwasher — program lifecycle, door / remote-start gates,
|
|
8570
|
+
* salt and rinse-aid levels. Installed with the `dishwasher` cap.
|
|
8571
|
+
* Sources: native Bosch Home Connect, reusable by similar integrations. */
|
|
8572
|
+
DeviceType["Dishwasher"] = "dishwasher";
|
|
8569
8573
|
return DeviceType;
|
|
8570
8574
|
}({});
|
|
8571
8575
|
var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
|
|
@@ -8813,7 +8817,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
8813
8817
|
return DeviceRole;
|
|
8814
8818
|
}({});
|
|
8815
8819
|
//#endregion
|
|
8816
|
-
//#region ../types/dist/composition-
|
|
8820
|
+
//#region ../types/dist/composition-CB6PMT9p.mjs
|
|
8817
8821
|
/**
|
|
8818
8822
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
8819
8823
|
*
|
|
@@ -13219,8 +13223,13 @@ var AlertSeveritySchema = _enum([
|
|
|
13219
13223
|
"info",
|
|
13220
13224
|
"success",
|
|
13221
13225
|
"warning",
|
|
13222
|
-
"error"
|
|
13226
|
+
"error",
|
|
13227
|
+
"critical"
|
|
13223
13228
|
]);
|
|
13229
|
+
var AlertActionSchema = object({
|
|
13230
|
+
label: string(),
|
|
13231
|
+
href: string().optional()
|
|
13232
|
+
});
|
|
13224
13233
|
var AlertStatusSchema = _enum([
|
|
13225
13234
|
"active",
|
|
13226
13235
|
"in-progress",
|
|
@@ -13238,6 +13247,7 @@ var AlertSchema = object({
|
|
|
13238
13247
|
severity: AlertSeveritySchema,
|
|
13239
13248
|
title: string(),
|
|
13240
13249
|
message: string(),
|
|
13250
|
+
action: AlertActionSchema.optional(),
|
|
13241
13251
|
status: AlertStatusSchema,
|
|
13242
13252
|
progress: number().optional(),
|
|
13243
13253
|
read: boolean(),
|
|
@@ -17712,7 +17722,11 @@ var deviceDiscoveryCapability = {
|
|
|
17712
17722
|
};
|
|
17713
17723
|
/**
|
|
17714
17724
|
* `device-adoption` — generic discovery + adoption surface,
|
|
17715
|
-
* system-scoped
|
|
17725
|
+
* system-scoped collection (one provider per integration addon), routed
|
|
17726
|
+
* by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
|
|
17727
|
+
* pin model as `connection-test`. The admin UI keeps using
|
|
17728
|
+
* `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
|
|
17729
|
+
* successor to `ha-discovery`:
|
|
17716
17730
|
* keyed by `integrationId` (the addon resolves integrationId → broker
|
|
17717
17731
|
* internally) rather than a connection-specific `brokerId`, and it
|
|
17718
17732
|
* REUSES the shared `DiscoveredChildDevice` candidate type from
|
|
@@ -54405,7 +54419,8 @@ var batteryCapability = {
|
|
|
54405
54419
|
DeviceType.Button,
|
|
54406
54420
|
DeviceType.Switch,
|
|
54407
54421
|
DeviceType.PetFeeder,
|
|
54408
|
-
DeviceType.Container
|
|
54422
|
+
DeviceType.Container,
|
|
54423
|
+
DeviceType.Thermostat
|
|
54409
54424
|
],
|
|
54410
54425
|
methods: {
|
|
54411
54426
|
/**
|
|
@@ -55878,6 +55893,161 @@ onStatusChanged: { data: object({
|
|
|
55878
55893
|
* whether persisting is worth a SQLite commit. */
|
|
55879
55894
|
volatileStateFields: ["lastChangedAt"]
|
|
55880
55895
|
};
|
|
55896
|
+
/**
|
|
55897
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates,
|
|
55898
|
+
* consumable levels (salt, rinse aid) and common program options.
|
|
55899
|
+
*
|
|
55900
|
+
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
55901
|
+
* by any integration that exposes the same program / option surface.
|
|
55902
|
+
*
|
|
55903
|
+
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
55904
|
+
* provider refreshes the slice on an interval and eagerly after commands.
|
|
55905
|
+
*/
|
|
55906
|
+
var DishwasherStateSchema = _enum([
|
|
55907
|
+
"idle",
|
|
55908
|
+
"running",
|
|
55909
|
+
"paused",
|
|
55910
|
+
"finished",
|
|
55911
|
+
"error",
|
|
55912
|
+
"unavailable"
|
|
55913
|
+
]);
|
|
55914
|
+
var DishwasherConsumableLevelSchema = _enum([
|
|
55915
|
+
"ok",
|
|
55916
|
+
"low",
|
|
55917
|
+
"empty"
|
|
55918
|
+
]);
|
|
55919
|
+
var DishwasherStatusSchema = object({
|
|
55920
|
+
state: DishwasherStateSchema,
|
|
55921
|
+
/** Active program id/name, or null when none selected / unknown. */
|
|
55922
|
+
program: string().nullable(),
|
|
55923
|
+
/** Program tokens the hardware accepts — drives the UI selector. */
|
|
55924
|
+
availablePrograms: array(string()),
|
|
55925
|
+
/** Minutes remaining on the active cycle, or null when not running. */
|
|
55926
|
+
remainingMinutes: number().int().nonnegative().nullable(),
|
|
55927
|
+
/** Cycle completion 0..100, or null when not applicable. */
|
|
55928
|
+
progressPercent: number().min(0).max(100).nullable(),
|
|
55929
|
+
/** True when the door is reported open. */
|
|
55930
|
+
doorOpen: boolean(),
|
|
55931
|
+
/** True when remote start is allowed (door closed, power on, etc.). */
|
|
55932
|
+
remoteStartAllowed: boolean(),
|
|
55933
|
+
/** Main power / switched-on state. */
|
|
55934
|
+
powerOn: boolean(),
|
|
55935
|
+
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55936
|
+
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55937
|
+
halfLoad: boolean(),
|
|
55938
|
+
hygienePlus: boolean(),
|
|
55939
|
+
/** Extra dry option when the appliance exposes it. */
|
|
55940
|
+
extraDry: boolean(),
|
|
55941
|
+
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
55942
|
+
intensiveZone: boolean(),
|
|
55943
|
+
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
55944
|
+
varioSpeedPlus: boolean(),
|
|
55945
|
+
/** Child lock (controls disabled on the appliance). */
|
|
55946
|
+
childLock: boolean(),
|
|
55947
|
+
errorCode: number().nullable(),
|
|
55948
|
+
errorLabel: string().nullable(),
|
|
55949
|
+
lastFetchedAt: number()
|
|
55950
|
+
});
|
|
55951
|
+
var dishwasherCapability = {
|
|
55952
|
+
name: "dishwasher",
|
|
55953
|
+
scope: "device",
|
|
55954
|
+
deviceNative: true,
|
|
55955
|
+
mode: "singleton",
|
|
55956
|
+
deviceTypes: [DeviceType.Dishwasher],
|
|
55957
|
+
methods: {
|
|
55958
|
+
start: method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
55959
|
+
kind: "mutation",
|
|
55960
|
+
auth: "protected"
|
|
55961
|
+
}),
|
|
55962
|
+
pause: method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
55963
|
+
kind: "mutation",
|
|
55964
|
+
auth: "protected"
|
|
55965
|
+
}),
|
|
55966
|
+
stop: method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
55967
|
+
kind: "mutation",
|
|
55968
|
+
auth: "protected"
|
|
55969
|
+
}),
|
|
55970
|
+
setProgram: method(object({
|
|
55971
|
+
deviceId: number().int().nonnegative(),
|
|
55972
|
+
program: string().min(1)
|
|
55973
|
+
}), _void(), {
|
|
55974
|
+
kind: "mutation",
|
|
55975
|
+
auth: "protected"
|
|
55976
|
+
}),
|
|
55977
|
+
setPower: method(object({
|
|
55978
|
+
deviceId: number().int().nonnegative(),
|
|
55979
|
+
on: boolean()
|
|
55980
|
+
}), _void(), {
|
|
55981
|
+
kind: "mutation",
|
|
55982
|
+
auth: "protected"
|
|
55983
|
+
}),
|
|
55984
|
+
setHalfLoad: method(object({
|
|
55985
|
+
deviceId: number().int().nonnegative(),
|
|
55986
|
+
on: boolean()
|
|
55987
|
+
}), _void(), {
|
|
55988
|
+
kind: "mutation",
|
|
55989
|
+
auth: "protected"
|
|
55990
|
+
}),
|
|
55991
|
+
setHygienePlus: method(object({
|
|
55992
|
+
deviceId: number().int().nonnegative(),
|
|
55993
|
+
on: boolean()
|
|
55994
|
+
}), _void(), {
|
|
55995
|
+
kind: "mutation",
|
|
55996
|
+
auth: "protected"
|
|
55997
|
+
}),
|
|
55998
|
+
setExtraDry: method(object({
|
|
55999
|
+
deviceId: number().int().nonnegative(),
|
|
56000
|
+
on: boolean()
|
|
56001
|
+
}), _void(), {
|
|
56002
|
+
kind: "mutation",
|
|
56003
|
+
auth: "protected"
|
|
56004
|
+
}),
|
|
56005
|
+
setIntensiveZone: method(object({
|
|
56006
|
+
deviceId: number().int().nonnegative(),
|
|
56007
|
+
on: boolean()
|
|
56008
|
+
}), _void(), {
|
|
56009
|
+
kind: "mutation",
|
|
56010
|
+
auth: "protected"
|
|
56011
|
+
}),
|
|
56012
|
+
setVarioSpeedPlus: method(object({
|
|
56013
|
+
deviceId: number().int().nonnegative(),
|
|
56014
|
+
on: boolean()
|
|
56015
|
+
}), _void(), {
|
|
56016
|
+
kind: "mutation",
|
|
56017
|
+
auth: "protected"
|
|
56018
|
+
}),
|
|
56019
|
+
setChildLock: method(object({
|
|
56020
|
+
deviceId: number().int().nonnegative(),
|
|
56021
|
+
on: boolean()
|
|
56022
|
+
}), _void(), {
|
|
56023
|
+
kind: "mutation",
|
|
56024
|
+
auth: "protected"
|
|
56025
|
+
}),
|
|
56026
|
+
setOption: method(object({
|
|
56027
|
+
deviceId: number().int().nonnegative(),
|
|
56028
|
+
key: string().min(1),
|
|
56029
|
+
value: union([
|
|
56030
|
+
boolean(),
|
|
56031
|
+
string(),
|
|
56032
|
+
number()
|
|
56033
|
+
])
|
|
56034
|
+
}), _void(), {
|
|
56035
|
+
kind: "mutation",
|
|
56036
|
+
auth: "protected"
|
|
56037
|
+
})
|
|
56038
|
+
},
|
|
56039
|
+
status: {
|
|
56040
|
+
schema: DishwasherStatusSchema,
|
|
56041
|
+
kind: "poll"
|
|
56042
|
+
},
|
|
56043
|
+
runtimeState: DishwasherStatusSchema,
|
|
56044
|
+
durability: "session",
|
|
56045
|
+
history: { fields: { progressPercent: {
|
|
56046
|
+
kind: "gauge",
|
|
56047
|
+
unit: "%",
|
|
56048
|
+
deadband: 2
|
|
56049
|
+
} } }
|
|
56050
|
+
};
|
|
55881
56051
|
var DoorbellStatusSchema = object({
|
|
55882
56052
|
/** Ms epoch of the last press. null = never observed since this provider started. */
|
|
55883
56053
|
lastPressedAt: number().nullable(),
|
|
@@ -56680,6 +56850,32 @@ var gasCapability = {
|
|
|
56680
56850
|
* whether persisting is worth a SQLite commit. */
|
|
56681
56851
|
volatileStateFields: ["lastChangedAt"]
|
|
56682
56852
|
};
|
|
56853
|
+
var HeatingValveStatusSchema = object({
|
|
56854
|
+
/** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
|
|
56855
|
+
position: number().min(0).max(100).nullable(),
|
|
56856
|
+
/** Ms epoch when the slice was last updated (push or poll). */
|
|
56857
|
+
lastFetchedAt: number()
|
|
56858
|
+
});
|
|
56859
|
+
var heatingValveCapability = {
|
|
56860
|
+
name: "heating-valve",
|
|
56861
|
+
scope: "device",
|
|
56862
|
+
deviceNative: true,
|
|
56863
|
+
mode: "singleton",
|
|
56864
|
+
deviceTypes: [DeviceType.Thermostat],
|
|
56865
|
+
methods: {},
|
|
56866
|
+
status: {
|
|
56867
|
+
schema: HeatingValveStatusSchema,
|
|
56868
|
+
kind: "push"
|
|
56869
|
+
},
|
|
56870
|
+
runtimeState: HeatingValveStatusSchema,
|
|
56871
|
+
durability: "session",
|
|
56872
|
+
history: { fields: { position: {
|
|
56873
|
+
kind: "gauge",
|
|
56874
|
+
unit: "%",
|
|
56875
|
+
deadband: 1
|
|
56876
|
+
} } },
|
|
56877
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
56878
|
+
};
|
|
56683
56879
|
/**
|
|
56684
56880
|
* Humidifier / dehumidifier cap. Models HA `humidifier.*` entities —
|
|
56685
56881
|
* an on/off actuator with an optional target-humidity setpoint and an
|
|
@@ -66562,6 +66758,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
66562
66758
|
dayNight: dayNightCapability,
|
|
66563
66759
|
deviceDiscovery: deviceDiscoveryCapability,
|
|
66564
66760
|
deviceStatus: deviceStatusCapability,
|
|
66761
|
+
dishwasher: dishwasherCapability,
|
|
66565
66762
|
doorbell: doorbellCapability,
|
|
66566
66763
|
enumSensor: enumSensorCapability,
|
|
66567
66764
|
eventEmitter: eventEmitterCapability,
|
|
@@ -66569,6 +66766,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
66569
66766
|
featureProbe: featureProbeCapability,
|
|
66570
66767
|
flood: floodCapability,
|
|
66571
66768
|
gas: gasCapability,
|
|
66769
|
+
heatingValve: heatingValveCapability,
|
|
66572
66770
|
humidifier: humidifierCapability,
|
|
66573
66771
|
humiditySensor: humiditySensorCapability,
|
|
66574
66772
|
image: imageCapability,
|
|
@@ -67294,6 +67492,12 @@ var BaseDeviceProvider = class extends BaseAddon {
|
|
|
67294
67492
|
provider: this
|
|
67295
67493
|
}];
|
|
67296
67494
|
}
|
|
67495
|
+
/** Flatten `super.onInitialize()` whether it returned an array or an envelope. */
|
|
67496
|
+
providerRegistrationsFromSuper(result) {
|
|
67497
|
+
if (Array.isArray(result)) return result;
|
|
67498
|
+
if (result !== void 0 && result.providers !== void 0) return [...result.providers];
|
|
67499
|
+
return [];
|
|
67500
|
+
}
|
|
67297
67501
|
async onShutdown() {
|
|
67298
67502
|
this._restoreShuttingDown = true;
|
|
67299
67503
|
this.cancelRestoreRetries();
|
|
@@ -67824,7 +68028,7 @@ var BaseDeviceProvider = class extends BaseAddon {
|
|
|
67824
68028
|
function widenDeviceConstructor(ctor) {
|
|
67825
68029
|
return ctor;
|
|
67826
68030
|
}
|
|
67827
|
-
DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
|
|
68031
|
+
DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher;
|
|
67828
68032
|
new Set(Object.values(DeviceType));
|
|
67829
68033
|
Object.freeze({
|
|
67830
68034
|
"accessories.getStatus": {
|
|
@@ -70245,6 +70449,84 @@ Object.freeze({
|
|
|
70245
70449
|
addonId: null,
|
|
70246
70450
|
access: "view"
|
|
70247
70451
|
},
|
|
70452
|
+
"dishwasher.getStatus": {
|
|
70453
|
+
capName: "dishwasher",
|
|
70454
|
+
capScope: "device",
|
|
70455
|
+
addonId: null,
|
|
70456
|
+
access: "view"
|
|
70457
|
+
},
|
|
70458
|
+
"dishwasher.pause": {
|
|
70459
|
+
capName: "dishwasher",
|
|
70460
|
+
capScope: "device",
|
|
70461
|
+
addonId: null,
|
|
70462
|
+
access: "create"
|
|
70463
|
+
},
|
|
70464
|
+
"dishwasher.setChildLock": {
|
|
70465
|
+
capName: "dishwasher",
|
|
70466
|
+
capScope: "device",
|
|
70467
|
+
addonId: null,
|
|
70468
|
+
access: "create"
|
|
70469
|
+
},
|
|
70470
|
+
"dishwasher.setExtraDry": {
|
|
70471
|
+
capName: "dishwasher",
|
|
70472
|
+
capScope: "device",
|
|
70473
|
+
addonId: null,
|
|
70474
|
+
access: "create"
|
|
70475
|
+
},
|
|
70476
|
+
"dishwasher.setHalfLoad": {
|
|
70477
|
+
capName: "dishwasher",
|
|
70478
|
+
capScope: "device",
|
|
70479
|
+
addonId: null,
|
|
70480
|
+
access: "create"
|
|
70481
|
+
},
|
|
70482
|
+
"dishwasher.setHygienePlus": {
|
|
70483
|
+
capName: "dishwasher",
|
|
70484
|
+
capScope: "device",
|
|
70485
|
+
addonId: null,
|
|
70486
|
+
access: "create"
|
|
70487
|
+
},
|
|
70488
|
+
"dishwasher.setIntensiveZone": {
|
|
70489
|
+
capName: "dishwasher",
|
|
70490
|
+
capScope: "device",
|
|
70491
|
+
addonId: null,
|
|
70492
|
+
access: "create"
|
|
70493
|
+
},
|
|
70494
|
+
"dishwasher.setOption": {
|
|
70495
|
+
capName: "dishwasher",
|
|
70496
|
+
capScope: "device",
|
|
70497
|
+
addonId: null,
|
|
70498
|
+
access: "create"
|
|
70499
|
+
},
|
|
70500
|
+
"dishwasher.setPower": {
|
|
70501
|
+
capName: "dishwasher",
|
|
70502
|
+
capScope: "device",
|
|
70503
|
+
addonId: null,
|
|
70504
|
+
access: "create"
|
|
70505
|
+
},
|
|
70506
|
+
"dishwasher.setProgram": {
|
|
70507
|
+
capName: "dishwasher",
|
|
70508
|
+
capScope: "device",
|
|
70509
|
+
addonId: null,
|
|
70510
|
+
access: "create"
|
|
70511
|
+
},
|
|
70512
|
+
"dishwasher.setVarioSpeedPlus": {
|
|
70513
|
+
capName: "dishwasher",
|
|
70514
|
+
capScope: "device",
|
|
70515
|
+
addonId: null,
|
|
70516
|
+
access: "create"
|
|
70517
|
+
},
|
|
70518
|
+
"dishwasher.start": {
|
|
70519
|
+
capName: "dishwasher",
|
|
70520
|
+
capScope: "device",
|
|
70521
|
+
addonId: null,
|
|
70522
|
+
access: "create"
|
|
70523
|
+
},
|
|
70524
|
+
"dishwasher.stop": {
|
|
70525
|
+
capName: "dishwasher",
|
|
70526
|
+
capScope: "device",
|
|
70527
|
+
addonId: null,
|
|
70528
|
+
access: "create"
|
|
70529
|
+
},
|
|
70248
70530
|
"doorbell.getStatus": {
|
|
70249
70531
|
capName: "doorbell",
|
|
70250
70532
|
capScope: "device",
|
|
@@ -70455,6 +70737,12 @@ Object.freeze({
|
|
|
70455
70737
|
addonId: null,
|
|
70456
70738
|
access: "view"
|
|
70457
70739
|
},
|
|
70740
|
+
"heatingValve.getStatus": {
|
|
70741
|
+
capName: "heating-valve",
|
|
70742
|
+
capScope: "device",
|
|
70743
|
+
addonId: null,
|
|
70744
|
+
access: "view"
|
|
70745
|
+
},
|
|
70458
70746
|
"humidifier.getStatus": {
|
|
70459
70747
|
capName: "humidifier",
|
|
70460
70748
|
capScope: "device",
|
|
@@ -76042,7 +76330,7 @@ Object.freeze({
|
|
|
76042
76330
|
access: "create"
|
|
76043
76331
|
}
|
|
76044
76332
|
});
|
|
76045
|
-
DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
|
|
76333
|
+
DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher;
|
|
76046
76334
|
DeviceFeature.BatteryOperated;
|
|
76047
76335
|
/** Reject after `ms`; always clears its own timer. */
|
|
76048
76336
|
async function withTimeout$1(promise, ms, label) {
|
|
@@ -77072,6 +77360,71 @@ Object.freeze({
|
|
|
77072
77360
|
form: "single",
|
|
77073
77361
|
optional: false
|
|
77074
77362
|
}],
|
|
77363
|
+
"dishwasher.getStatus": [{
|
|
77364
|
+
name: "deviceId",
|
|
77365
|
+
form: "single",
|
|
77366
|
+
optional: false
|
|
77367
|
+
}],
|
|
77368
|
+
"dishwasher.pause": [{
|
|
77369
|
+
name: "deviceId",
|
|
77370
|
+
form: "single",
|
|
77371
|
+
optional: false
|
|
77372
|
+
}],
|
|
77373
|
+
"dishwasher.setChildLock": [{
|
|
77374
|
+
name: "deviceId",
|
|
77375
|
+
form: "single",
|
|
77376
|
+
optional: false
|
|
77377
|
+
}],
|
|
77378
|
+
"dishwasher.setExtraDry": [{
|
|
77379
|
+
name: "deviceId",
|
|
77380
|
+
form: "single",
|
|
77381
|
+
optional: false
|
|
77382
|
+
}],
|
|
77383
|
+
"dishwasher.setHalfLoad": [{
|
|
77384
|
+
name: "deviceId",
|
|
77385
|
+
form: "single",
|
|
77386
|
+
optional: false
|
|
77387
|
+
}],
|
|
77388
|
+
"dishwasher.setHygienePlus": [{
|
|
77389
|
+
name: "deviceId",
|
|
77390
|
+
form: "single",
|
|
77391
|
+
optional: false
|
|
77392
|
+
}],
|
|
77393
|
+
"dishwasher.setIntensiveZone": [{
|
|
77394
|
+
name: "deviceId",
|
|
77395
|
+
form: "single",
|
|
77396
|
+
optional: false
|
|
77397
|
+
}],
|
|
77398
|
+
"dishwasher.setOption": [{
|
|
77399
|
+
name: "deviceId",
|
|
77400
|
+
form: "single",
|
|
77401
|
+
optional: false
|
|
77402
|
+
}],
|
|
77403
|
+
"dishwasher.setPower": [{
|
|
77404
|
+
name: "deviceId",
|
|
77405
|
+
form: "single",
|
|
77406
|
+
optional: false
|
|
77407
|
+
}],
|
|
77408
|
+
"dishwasher.setProgram": [{
|
|
77409
|
+
name: "deviceId",
|
|
77410
|
+
form: "single",
|
|
77411
|
+
optional: false
|
|
77412
|
+
}],
|
|
77413
|
+
"dishwasher.setVarioSpeedPlus": [{
|
|
77414
|
+
name: "deviceId",
|
|
77415
|
+
form: "single",
|
|
77416
|
+
optional: false
|
|
77417
|
+
}],
|
|
77418
|
+
"dishwasher.start": [{
|
|
77419
|
+
name: "deviceId",
|
|
77420
|
+
form: "single",
|
|
77421
|
+
optional: false
|
|
77422
|
+
}],
|
|
77423
|
+
"dishwasher.stop": [{
|
|
77424
|
+
name: "deviceId",
|
|
77425
|
+
form: "single",
|
|
77426
|
+
optional: false
|
|
77427
|
+
}],
|
|
77075
77428
|
"doorbell.getStatus": [{
|
|
77076
77429
|
name: "deviceId",
|
|
77077
77430
|
form: "single",
|
|
@@ -77141,6 +77494,11 @@ Object.freeze({
|
|
|
77141
77494
|
form: "single",
|
|
77142
77495
|
optional: false
|
|
77143
77496
|
}],
|
|
77497
|
+
"heatingValve.getStatus": [{
|
|
77498
|
+
name: "deviceId",
|
|
77499
|
+
form: "single",
|
|
77500
|
+
optional: false
|
|
77501
|
+
}],
|
|
77144
77502
|
"humidifier.getStatus": [{
|
|
77145
77503
|
name: "deviceId",
|
|
77146
77504
|
form: "single",
|
|
@@ -96944,7 +97302,7 @@ var AmcrestProviderAddon = class extends BaseDeviceProvider {
|
|
|
96944
97302
|
throw new Error(`Amcrest: probe on ${host || "(unknown host)"} resolved neither mac nor host address — cannot persist a stable row key. Verify network reachability + credentials, then retry.`);
|
|
96945
97303
|
}
|
|
96946
97304
|
async onInitialize() {
|
|
96947
|
-
const regs = await super.onInitialize();
|
|
97305
|
+
const regs = this.providerRegistrationsFromSuper(await super.onInitialize());
|
|
96948
97306
|
this.clipService = createClipService({
|
|
96949
97307
|
dataDir: this.ctx.dataDir,
|
|
96950
97308
|
logger: this.ctx.logger,
|
package/dist/addon.mjs
CHANGED
|
@@ -5420,7 +5420,7 @@ var ZodIssueCode = {
|
|
|
5420
5420
|
var ZodFirstPartyTypeKind;
|
|
5421
5421
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5422
5422
|
//#endregion
|
|
5423
|
-
//#region ../types/dist/sleep-
|
|
5423
|
+
//#region ../types/dist/sleep-BegKjwUu.mjs
|
|
5424
5424
|
/**
|
|
5425
5425
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5426
5426
|
* window to float samples (D455).
|
|
@@ -8453,7 +8453,7 @@ function userError(code, params, englishFallback) {
|
|
|
8453
8453
|
return new CamstackError(code, params, englishFallback);
|
|
8454
8454
|
}
|
|
8455
8455
|
//#endregion
|
|
8456
|
-
//#region ../types/dist/err-msg
|
|
8456
|
+
//#region ../types/dist/err-msg-BXKzRBwg.mjs
|
|
8457
8457
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
8458
8458
|
DeviceType["Camera"] = "camera";
|
|
8459
8459
|
DeviceType["Hub"] = "hub";
|
|
@@ -8545,6 +8545,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
|
8545
8545
|
* native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
|
|
8546
8546
|
* integrations sharing the same food/desiccant/hopper surface. */
|
|
8547
8547
|
DeviceType["PetFeeder"] = "pet-feeder";
|
|
8548
|
+
/** Built-in dishwasher — program lifecycle, door / remote-start gates,
|
|
8549
|
+
* salt and rinse-aid levels. Installed with the `dishwasher` cap.
|
|
8550
|
+
* Sources: native Bosch Home Connect, reusable by similar integrations. */
|
|
8551
|
+
DeviceType["Dishwasher"] = "dishwasher";
|
|
8548
8552
|
return DeviceType;
|
|
8549
8553
|
}({});
|
|
8550
8554
|
var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
|
|
@@ -8792,7 +8796,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
8792
8796
|
return DeviceRole;
|
|
8793
8797
|
}({});
|
|
8794
8798
|
//#endregion
|
|
8795
|
-
//#region ../types/dist/composition-
|
|
8799
|
+
//#region ../types/dist/composition-CB6PMT9p.mjs
|
|
8796
8800
|
/**
|
|
8797
8801
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
8798
8802
|
*
|
|
@@ -13198,8 +13202,13 @@ var AlertSeveritySchema = _enum([
|
|
|
13198
13202
|
"info",
|
|
13199
13203
|
"success",
|
|
13200
13204
|
"warning",
|
|
13201
|
-
"error"
|
|
13205
|
+
"error",
|
|
13206
|
+
"critical"
|
|
13202
13207
|
]);
|
|
13208
|
+
var AlertActionSchema = object({
|
|
13209
|
+
label: string(),
|
|
13210
|
+
href: string().optional()
|
|
13211
|
+
});
|
|
13203
13212
|
var AlertStatusSchema = _enum([
|
|
13204
13213
|
"active",
|
|
13205
13214
|
"in-progress",
|
|
@@ -13217,6 +13226,7 @@ var AlertSchema = object({
|
|
|
13217
13226
|
severity: AlertSeveritySchema,
|
|
13218
13227
|
title: string(),
|
|
13219
13228
|
message: string(),
|
|
13229
|
+
action: AlertActionSchema.optional(),
|
|
13220
13230
|
status: AlertStatusSchema,
|
|
13221
13231
|
progress: number().optional(),
|
|
13222
13232
|
read: boolean(),
|
|
@@ -17691,7 +17701,11 @@ var deviceDiscoveryCapability = {
|
|
|
17691
17701
|
};
|
|
17692
17702
|
/**
|
|
17693
17703
|
* `device-adoption` — generic discovery + adoption surface,
|
|
17694
|
-
* system-scoped
|
|
17704
|
+
* system-scoped collection (one provider per integration addon), routed
|
|
17705
|
+
* by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
|
|
17706
|
+
* pin model as `connection-test`. The admin UI keeps using
|
|
17707
|
+
* `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
|
|
17708
|
+
* successor to `ha-discovery`:
|
|
17695
17709
|
* keyed by `integrationId` (the addon resolves integrationId → broker
|
|
17696
17710
|
* internally) rather than a connection-specific `brokerId`, and it
|
|
17697
17711
|
* REUSES the shared `DiscoveredChildDevice` candidate type from
|
|
@@ -54384,7 +54398,8 @@ var batteryCapability = {
|
|
|
54384
54398
|
DeviceType.Button,
|
|
54385
54399
|
DeviceType.Switch,
|
|
54386
54400
|
DeviceType.PetFeeder,
|
|
54387
|
-
DeviceType.Container
|
|
54401
|
+
DeviceType.Container,
|
|
54402
|
+
DeviceType.Thermostat
|
|
54388
54403
|
],
|
|
54389
54404
|
methods: {
|
|
54390
54405
|
/**
|
|
@@ -55857,6 +55872,161 @@ onStatusChanged: { data: object({
|
|
|
55857
55872
|
* whether persisting is worth a SQLite commit. */
|
|
55858
55873
|
volatileStateFields: ["lastChangedAt"]
|
|
55859
55874
|
};
|
|
55875
|
+
/**
|
|
55876
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates,
|
|
55877
|
+
* consumable levels (salt, rinse aid) and common program options.
|
|
55878
|
+
*
|
|
55879
|
+
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
55880
|
+
* by any integration that exposes the same program / option surface.
|
|
55881
|
+
*
|
|
55882
|
+
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
55883
|
+
* provider refreshes the slice on an interval and eagerly after commands.
|
|
55884
|
+
*/
|
|
55885
|
+
var DishwasherStateSchema = _enum([
|
|
55886
|
+
"idle",
|
|
55887
|
+
"running",
|
|
55888
|
+
"paused",
|
|
55889
|
+
"finished",
|
|
55890
|
+
"error",
|
|
55891
|
+
"unavailable"
|
|
55892
|
+
]);
|
|
55893
|
+
var DishwasherConsumableLevelSchema = _enum([
|
|
55894
|
+
"ok",
|
|
55895
|
+
"low",
|
|
55896
|
+
"empty"
|
|
55897
|
+
]);
|
|
55898
|
+
var DishwasherStatusSchema = object({
|
|
55899
|
+
state: DishwasherStateSchema,
|
|
55900
|
+
/** Active program id/name, or null when none selected / unknown. */
|
|
55901
|
+
program: string().nullable(),
|
|
55902
|
+
/** Program tokens the hardware accepts — drives the UI selector. */
|
|
55903
|
+
availablePrograms: array(string()),
|
|
55904
|
+
/** Minutes remaining on the active cycle, or null when not running. */
|
|
55905
|
+
remainingMinutes: number().int().nonnegative().nullable(),
|
|
55906
|
+
/** Cycle completion 0..100, or null when not applicable. */
|
|
55907
|
+
progressPercent: number().min(0).max(100).nullable(),
|
|
55908
|
+
/** True when the door is reported open. */
|
|
55909
|
+
doorOpen: boolean(),
|
|
55910
|
+
/** True when remote start is allowed (door closed, power on, etc.). */
|
|
55911
|
+
remoteStartAllowed: boolean(),
|
|
55912
|
+
/** Main power / switched-on state. */
|
|
55913
|
+
powerOn: boolean(),
|
|
55914
|
+
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55915
|
+
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55916
|
+
halfLoad: boolean(),
|
|
55917
|
+
hygienePlus: boolean(),
|
|
55918
|
+
/** Extra dry option when the appliance exposes it. */
|
|
55919
|
+
extraDry: boolean(),
|
|
55920
|
+
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
55921
|
+
intensiveZone: boolean(),
|
|
55922
|
+
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
55923
|
+
varioSpeedPlus: boolean(),
|
|
55924
|
+
/** Child lock (controls disabled on the appliance). */
|
|
55925
|
+
childLock: boolean(),
|
|
55926
|
+
errorCode: number().nullable(),
|
|
55927
|
+
errorLabel: string().nullable(),
|
|
55928
|
+
lastFetchedAt: number()
|
|
55929
|
+
});
|
|
55930
|
+
var dishwasherCapability = {
|
|
55931
|
+
name: "dishwasher",
|
|
55932
|
+
scope: "device",
|
|
55933
|
+
deviceNative: true,
|
|
55934
|
+
mode: "singleton",
|
|
55935
|
+
deviceTypes: [DeviceType.Dishwasher],
|
|
55936
|
+
methods: {
|
|
55937
|
+
start: method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
55938
|
+
kind: "mutation",
|
|
55939
|
+
auth: "protected"
|
|
55940
|
+
}),
|
|
55941
|
+
pause: method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
55942
|
+
kind: "mutation",
|
|
55943
|
+
auth: "protected"
|
|
55944
|
+
}),
|
|
55945
|
+
stop: method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
55946
|
+
kind: "mutation",
|
|
55947
|
+
auth: "protected"
|
|
55948
|
+
}),
|
|
55949
|
+
setProgram: method(object({
|
|
55950
|
+
deviceId: number().int().nonnegative(),
|
|
55951
|
+
program: string().min(1)
|
|
55952
|
+
}), _void(), {
|
|
55953
|
+
kind: "mutation",
|
|
55954
|
+
auth: "protected"
|
|
55955
|
+
}),
|
|
55956
|
+
setPower: method(object({
|
|
55957
|
+
deviceId: number().int().nonnegative(),
|
|
55958
|
+
on: boolean()
|
|
55959
|
+
}), _void(), {
|
|
55960
|
+
kind: "mutation",
|
|
55961
|
+
auth: "protected"
|
|
55962
|
+
}),
|
|
55963
|
+
setHalfLoad: method(object({
|
|
55964
|
+
deviceId: number().int().nonnegative(),
|
|
55965
|
+
on: boolean()
|
|
55966
|
+
}), _void(), {
|
|
55967
|
+
kind: "mutation",
|
|
55968
|
+
auth: "protected"
|
|
55969
|
+
}),
|
|
55970
|
+
setHygienePlus: method(object({
|
|
55971
|
+
deviceId: number().int().nonnegative(),
|
|
55972
|
+
on: boolean()
|
|
55973
|
+
}), _void(), {
|
|
55974
|
+
kind: "mutation",
|
|
55975
|
+
auth: "protected"
|
|
55976
|
+
}),
|
|
55977
|
+
setExtraDry: method(object({
|
|
55978
|
+
deviceId: number().int().nonnegative(),
|
|
55979
|
+
on: boolean()
|
|
55980
|
+
}), _void(), {
|
|
55981
|
+
kind: "mutation",
|
|
55982
|
+
auth: "protected"
|
|
55983
|
+
}),
|
|
55984
|
+
setIntensiveZone: method(object({
|
|
55985
|
+
deviceId: number().int().nonnegative(),
|
|
55986
|
+
on: boolean()
|
|
55987
|
+
}), _void(), {
|
|
55988
|
+
kind: "mutation",
|
|
55989
|
+
auth: "protected"
|
|
55990
|
+
}),
|
|
55991
|
+
setVarioSpeedPlus: method(object({
|
|
55992
|
+
deviceId: number().int().nonnegative(),
|
|
55993
|
+
on: boolean()
|
|
55994
|
+
}), _void(), {
|
|
55995
|
+
kind: "mutation",
|
|
55996
|
+
auth: "protected"
|
|
55997
|
+
}),
|
|
55998
|
+
setChildLock: method(object({
|
|
55999
|
+
deviceId: number().int().nonnegative(),
|
|
56000
|
+
on: boolean()
|
|
56001
|
+
}), _void(), {
|
|
56002
|
+
kind: "mutation",
|
|
56003
|
+
auth: "protected"
|
|
56004
|
+
}),
|
|
56005
|
+
setOption: method(object({
|
|
56006
|
+
deviceId: number().int().nonnegative(),
|
|
56007
|
+
key: string().min(1),
|
|
56008
|
+
value: union([
|
|
56009
|
+
boolean(),
|
|
56010
|
+
string(),
|
|
56011
|
+
number()
|
|
56012
|
+
])
|
|
56013
|
+
}), _void(), {
|
|
56014
|
+
kind: "mutation",
|
|
56015
|
+
auth: "protected"
|
|
56016
|
+
})
|
|
56017
|
+
},
|
|
56018
|
+
status: {
|
|
56019
|
+
schema: DishwasherStatusSchema,
|
|
56020
|
+
kind: "poll"
|
|
56021
|
+
},
|
|
56022
|
+
runtimeState: DishwasherStatusSchema,
|
|
56023
|
+
durability: "session",
|
|
56024
|
+
history: { fields: { progressPercent: {
|
|
56025
|
+
kind: "gauge",
|
|
56026
|
+
unit: "%",
|
|
56027
|
+
deadband: 2
|
|
56028
|
+
} } }
|
|
56029
|
+
};
|
|
55860
56030
|
var DoorbellStatusSchema = object({
|
|
55861
56031
|
/** Ms epoch of the last press. null = never observed since this provider started. */
|
|
55862
56032
|
lastPressedAt: number().nullable(),
|
|
@@ -56659,6 +56829,32 @@ var gasCapability = {
|
|
|
56659
56829
|
* whether persisting is worth a SQLite commit. */
|
|
56660
56830
|
volatileStateFields: ["lastChangedAt"]
|
|
56661
56831
|
};
|
|
56832
|
+
var HeatingValveStatusSchema = object({
|
|
56833
|
+
/** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
|
|
56834
|
+
position: number().min(0).max(100).nullable(),
|
|
56835
|
+
/** Ms epoch when the slice was last updated (push or poll). */
|
|
56836
|
+
lastFetchedAt: number()
|
|
56837
|
+
});
|
|
56838
|
+
var heatingValveCapability = {
|
|
56839
|
+
name: "heating-valve",
|
|
56840
|
+
scope: "device",
|
|
56841
|
+
deviceNative: true,
|
|
56842
|
+
mode: "singleton",
|
|
56843
|
+
deviceTypes: [DeviceType.Thermostat],
|
|
56844
|
+
methods: {},
|
|
56845
|
+
status: {
|
|
56846
|
+
schema: HeatingValveStatusSchema,
|
|
56847
|
+
kind: "push"
|
|
56848
|
+
},
|
|
56849
|
+
runtimeState: HeatingValveStatusSchema,
|
|
56850
|
+
durability: "session",
|
|
56851
|
+
history: { fields: { position: {
|
|
56852
|
+
kind: "gauge",
|
|
56853
|
+
unit: "%",
|
|
56854
|
+
deadband: 1
|
|
56855
|
+
} } },
|
|
56856
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
56857
|
+
};
|
|
56662
56858
|
/**
|
|
56663
56859
|
* Humidifier / dehumidifier cap. Models HA `humidifier.*` entities —
|
|
56664
56860
|
* an on/off actuator with an optional target-humidity setpoint and an
|
|
@@ -66541,6 +66737,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
66541
66737
|
dayNight: dayNightCapability,
|
|
66542
66738
|
deviceDiscovery: deviceDiscoveryCapability,
|
|
66543
66739
|
deviceStatus: deviceStatusCapability,
|
|
66740
|
+
dishwasher: dishwasherCapability,
|
|
66544
66741
|
doorbell: doorbellCapability,
|
|
66545
66742
|
enumSensor: enumSensorCapability,
|
|
66546
66743
|
eventEmitter: eventEmitterCapability,
|
|
@@ -66548,6 +66745,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
66548
66745
|
featureProbe: featureProbeCapability,
|
|
66549
66746
|
flood: floodCapability,
|
|
66550
66747
|
gas: gasCapability,
|
|
66748
|
+
heatingValve: heatingValveCapability,
|
|
66551
66749
|
humidifier: humidifierCapability,
|
|
66552
66750
|
humiditySensor: humiditySensorCapability,
|
|
66553
66751
|
image: imageCapability,
|
|
@@ -67273,6 +67471,12 @@ var BaseDeviceProvider = class extends BaseAddon {
|
|
|
67273
67471
|
provider: this
|
|
67274
67472
|
}];
|
|
67275
67473
|
}
|
|
67474
|
+
/** Flatten `super.onInitialize()` whether it returned an array or an envelope. */
|
|
67475
|
+
providerRegistrationsFromSuper(result) {
|
|
67476
|
+
if (Array.isArray(result)) return result;
|
|
67477
|
+
if (result !== void 0 && result.providers !== void 0) return [...result.providers];
|
|
67478
|
+
return [];
|
|
67479
|
+
}
|
|
67276
67480
|
async onShutdown() {
|
|
67277
67481
|
this._restoreShuttingDown = true;
|
|
67278
67482
|
this.cancelRestoreRetries();
|
|
@@ -67803,7 +68007,7 @@ var BaseDeviceProvider = class extends BaseAddon {
|
|
|
67803
68007
|
function widenDeviceConstructor(ctor) {
|
|
67804
68008
|
return ctor;
|
|
67805
68009
|
}
|
|
67806
|
-
DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
|
|
68010
|
+
DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher;
|
|
67807
68011
|
new Set(Object.values(DeviceType));
|
|
67808
68012
|
Object.freeze({
|
|
67809
68013
|
"accessories.getStatus": {
|
|
@@ -70224,6 +70428,84 @@ Object.freeze({
|
|
|
70224
70428
|
addonId: null,
|
|
70225
70429
|
access: "view"
|
|
70226
70430
|
},
|
|
70431
|
+
"dishwasher.getStatus": {
|
|
70432
|
+
capName: "dishwasher",
|
|
70433
|
+
capScope: "device",
|
|
70434
|
+
addonId: null,
|
|
70435
|
+
access: "view"
|
|
70436
|
+
},
|
|
70437
|
+
"dishwasher.pause": {
|
|
70438
|
+
capName: "dishwasher",
|
|
70439
|
+
capScope: "device",
|
|
70440
|
+
addonId: null,
|
|
70441
|
+
access: "create"
|
|
70442
|
+
},
|
|
70443
|
+
"dishwasher.setChildLock": {
|
|
70444
|
+
capName: "dishwasher",
|
|
70445
|
+
capScope: "device",
|
|
70446
|
+
addonId: null,
|
|
70447
|
+
access: "create"
|
|
70448
|
+
},
|
|
70449
|
+
"dishwasher.setExtraDry": {
|
|
70450
|
+
capName: "dishwasher",
|
|
70451
|
+
capScope: "device",
|
|
70452
|
+
addonId: null,
|
|
70453
|
+
access: "create"
|
|
70454
|
+
},
|
|
70455
|
+
"dishwasher.setHalfLoad": {
|
|
70456
|
+
capName: "dishwasher",
|
|
70457
|
+
capScope: "device",
|
|
70458
|
+
addonId: null,
|
|
70459
|
+
access: "create"
|
|
70460
|
+
},
|
|
70461
|
+
"dishwasher.setHygienePlus": {
|
|
70462
|
+
capName: "dishwasher",
|
|
70463
|
+
capScope: "device",
|
|
70464
|
+
addonId: null,
|
|
70465
|
+
access: "create"
|
|
70466
|
+
},
|
|
70467
|
+
"dishwasher.setIntensiveZone": {
|
|
70468
|
+
capName: "dishwasher",
|
|
70469
|
+
capScope: "device",
|
|
70470
|
+
addonId: null,
|
|
70471
|
+
access: "create"
|
|
70472
|
+
},
|
|
70473
|
+
"dishwasher.setOption": {
|
|
70474
|
+
capName: "dishwasher",
|
|
70475
|
+
capScope: "device",
|
|
70476
|
+
addonId: null,
|
|
70477
|
+
access: "create"
|
|
70478
|
+
},
|
|
70479
|
+
"dishwasher.setPower": {
|
|
70480
|
+
capName: "dishwasher",
|
|
70481
|
+
capScope: "device",
|
|
70482
|
+
addonId: null,
|
|
70483
|
+
access: "create"
|
|
70484
|
+
},
|
|
70485
|
+
"dishwasher.setProgram": {
|
|
70486
|
+
capName: "dishwasher",
|
|
70487
|
+
capScope: "device",
|
|
70488
|
+
addonId: null,
|
|
70489
|
+
access: "create"
|
|
70490
|
+
},
|
|
70491
|
+
"dishwasher.setVarioSpeedPlus": {
|
|
70492
|
+
capName: "dishwasher",
|
|
70493
|
+
capScope: "device",
|
|
70494
|
+
addonId: null,
|
|
70495
|
+
access: "create"
|
|
70496
|
+
},
|
|
70497
|
+
"dishwasher.start": {
|
|
70498
|
+
capName: "dishwasher",
|
|
70499
|
+
capScope: "device",
|
|
70500
|
+
addonId: null,
|
|
70501
|
+
access: "create"
|
|
70502
|
+
},
|
|
70503
|
+
"dishwasher.stop": {
|
|
70504
|
+
capName: "dishwasher",
|
|
70505
|
+
capScope: "device",
|
|
70506
|
+
addonId: null,
|
|
70507
|
+
access: "create"
|
|
70508
|
+
},
|
|
70227
70509
|
"doorbell.getStatus": {
|
|
70228
70510
|
capName: "doorbell",
|
|
70229
70511
|
capScope: "device",
|
|
@@ -70434,6 +70716,12 @@ Object.freeze({
|
|
|
70434
70716
|
addonId: null,
|
|
70435
70717
|
access: "view"
|
|
70436
70718
|
},
|
|
70719
|
+
"heatingValve.getStatus": {
|
|
70720
|
+
capName: "heating-valve",
|
|
70721
|
+
capScope: "device",
|
|
70722
|
+
addonId: null,
|
|
70723
|
+
access: "view"
|
|
70724
|
+
},
|
|
70437
70725
|
"humidifier.getStatus": {
|
|
70438
70726
|
capName: "humidifier",
|
|
70439
70727
|
capScope: "device",
|
|
@@ -76021,7 +76309,7 @@ Object.freeze({
|
|
|
76021
76309
|
access: "create"
|
|
76022
76310
|
}
|
|
76023
76311
|
});
|
|
76024
|
-
DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
|
|
76312
|
+
DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher;
|
|
76025
76313
|
DeviceFeature.BatteryOperated;
|
|
76026
76314
|
/** Reject after `ms`; always clears its own timer. */
|
|
76027
76315
|
async function withTimeout$1(promise, ms, label) {
|
|
@@ -77051,6 +77339,71 @@ Object.freeze({
|
|
|
77051
77339
|
form: "single",
|
|
77052
77340
|
optional: false
|
|
77053
77341
|
}],
|
|
77342
|
+
"dishwasher.getStatus": [{
|
|
77343
|
+
name: "deviceId",
|
|
77344
|
+
form: "single",
|
|
77345
|
+
optional: false
|
|
77346
|
+
}],
|
|
77347
|
+
"dishwasher.pause": [{
|
|
77348
|
+
name: "deviceId",
|
|
77349
|
+
form: "single",
|
|
77350
|
+
optional: false
|
|
77351
|
+
}],
|
|
77352
|
+
"dishwasher.setChildLock": [{
|
|
77353
|
+
name: "deviceId",
|
|
77354
|
+
form: "single",
|
|
77355
|
+
optional: false
|
|
77356
|
+
}],
|
|
77357
|
+
"dishwasher.setExtraDry": [{
|
|
77358
|
+
name: "deviceId",
|
|
77359
|
+
form: "single",
|
|
77360
|
+
optional: false
|
|
77361
|
+
}],
|
|
77362
|
+
"dishwasher.setHalfLoad": [{
|
|
77363
|
+
name: "deviceId",
|
|
77364
|
+
form: "single",
|
|
77365
|
+
optional: false
|
|
77366
|
+
}],
|
|
77367
|
+
"dishwasher.setHygienePlus": [{
|
|
77368
|
+
name: "deviceId",
|
|
77369
|
+
form: "single",
|
|
77370
|
+
optional: false
|
|
77371
|
+
}],
|
|
77372
|
+
"dishwasher.setIntensiveZone": [{
|
|
77373
|
+
name: "deviceId",
|
|
77374
|
+
form: "single",
|
|
77375
|
+
optional: false
|
|
77376
|
+
}],
|
|
77377
|
+
"dishwasher.setOption": [{
|
|
77378
|
+
name: "deviceId",
|
|
77379
|
+
form: "single",
|
|
77380
|
+
optional: false
|
|
77381
|
+
}],
|
|
77382
|
+
"dishwasher.setPower": [{
|
|
77383
|
+
name: "deviceId",
|
|
77384
|
+
form: "single",
|
|
77385
|
+
optional: false
|
|
77386
|
+
}],
|
|
77387
|
+
"dishwasher.setProgram": [{
|
|
77388
|
+
name: "deviceId",
|
|
77389
|
+
form: "single",
|
|
77390
|
+
optional: false
|
|
77391
|
+
}],
|
|
77392
|
+
"dishwasher.setVarioSpeedPlus": [{
|
|
77393
|
+
name: "deviceId",
|
|
77394
|
+
form: "single",
|
|
77395
|
+
optional: false
|
|
77396
|
+
}],
|
|
77397
|
+
"dishwasher.start": [{
|
|
77398
|
+
name: "deviceId",
|
|
77399
|
+
form: "single",
|
|
77400
|
+
optional: false
|
|
77401
|
+
}],
|
|
77402
|
+
"dishwasher.stop": [{
|
|
77403
|
+
name: "deviceId",
|
|
77404
|
+
form: "single",
|
|
77405
|
+
optional: false
|
|
77406
|
+
}],
|
|
77054
77407
|
"doorbell.getStatus": [{
|
|
77055
77408
|
name: "deviceId",
|
|
77056
77409
|
form: "single",
|
|
@@ -77120,6 +77473,11 @@ Object.freeze({
|
|
|
77120
77473
|
form: "single",
|
|
77121
77474
|
optional: false
|
|
77122
77475
|
}],
|
|
77476
|
+
"heatingValve.getStatus": [{
|
|
77477
|
+
name: "deviceId",
|
|
77478
|
+
form: "single",
|
|
77479
|
+
optional: false
|
|
77480
|
+
}],
|
|
77123
77481
|
"humidifier.getStatus": [{
|
|
77124
77482
|
name: "deviceId",
|
|
77125
77483
|
form: "single",
|
|
@@ -96923,7 +97281,7 @@ var AmcrestProviderAddon = class extends BaseDeviceProvider {
|
|
|
96923
97281
|
throw new Error(`Amcrest: probe on ${host || "(unknown host)"} resolved neither mac nor host address — cannot persist a stable row key. Verify network reachability + credentials, then retry.`);
|
|
96924
97282
|
}
|
|
96925
97283
|
async onInitialize() {
|
|
96926
|
-
const regs = await super.onInitialize();
|
|
97284
|
+
const regs = this.providerRegistrationsFromSuper(await super.onInitialize());
|
|
96927
97285
|
this.clipService = createClipService({
|
|
96928
97286
|
dataDir: this.ctx.dataDir,
|
|
96929
97287
|
logger: this.ctx.logger,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-amcrest",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.139",
|
|
4
4
|
"description": "Amcrest/Dahua camera device provider addon for CamStack — Dahua CGI over HTTP(S) with digest auth (snapshot, RTSP catalog, PTZ, image/day-night config)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|