@camstack/addon-provider-homeassistant 1.2.628 → 1.2.629
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 +3 -1
- package/dist/addon.mjs +3 -1
- package/dist/{dist-BNRaAIW1.mjs → dist-DWMNvtWN.mjs} +132 -9
- package/dist/{dist-CAyJy-Ek.js → dist-sQp4D2Eo.js} +137 -8
- package/dist/ha-export/ha-export.addon.js +41 -31
- package/dist/ha-export/ha-export.addon.mjs +41 -31
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_dist = require("./dist-
|
|
2
|
+
const require_dist = require("./dist-sQp4D2Eo.js");
|
|
3
3
|
let node_crypto = require("node:crypto");
|
|
4
4
|
let node_zlib = require("node:zlib");
|
|
5
5
|
//#region src/ha-admin-link.ts
|
|
@@ -6487,6 +6487,8 @@ var PARENT_TYPE_PRIORITY = [
|
|
|
6487
6487
|
require_dist.DeviceType.Fan,
|
|
6488
6488
|
require_dist.DeviceType.Vacuum,
|
|
6489
6489
|
require_dist.DeviceType.LawnMower,
|
|
6490
|
+
require_dist.DeviceType.Washer,
|
|
6491
|
+
require_dist.DeviceType.Dryer,
|
|
6490
6492
|
require_dist.DeviceType.Dishwasher,
|
|
6491
6493
|
require_dist.DeviceType.Light,
|
|
6492
6494
|
require_dist.DeviceType.Switch,
|
package/dist/addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as
|
|
1
|
+
import { $ as lawnMowerControlCapability, $t as union, A as buttonCapability, At as weatherCapability, B as coverCapability, Bt as defineRecordKinds, C as batteryCapability, Ct as tryConvertDelta, D as brokerCapability, Dt as valveCapability, E as brightnessCapability, Et as vacuumControlCapability, F as connectivityCapability, G as eventEmitterCapability, Gt as array, H as deviceAdoptionCapability, It as RecordSecretUnavailableError, J as gasCapability, Jt as literal, K as fanControlCapability, Kt as boolean, Lt as baseUnitOf, M as carbonMonoxideCapability, Mt as DeviceRole, N as climateControlCapability, Nt as DeviceType, O as buildAddonRouteProvider, Ot as vibrationCapability, P as colorCapability, Pt as errMsg, Q as ingestReading, Qt as string, R as contactCapability, Rt as createEvent, S as automationControlCapability, St as temperatureSensorCapability, T as binaryCapability, Tt as updateCapability, V as deviceAdminLinkCapability, Vt as entryBody, W as enumSensorCapability, Wt as _enum, X as humiditySensorCapability, Xt as object, Y as humidifierCapability, Yt as number, Z as imageCapability, Zt as record, _ as accessoriesCapability, _t as runningStateCapability, at as notifierCapability, b as alarmPanelCapability, bt as switchCapability, ct as parseAdminBase, dt as presenceCapability, en as unknown, et as lockControlCapability, ft as pressureSensorCapability, g as TargetSchema, gt as runningFromVacuumState, h as RUNNING_STATE_COLD, ht as runningFromMediaPlayer, it as notificationOutputCapability, j as calendarSourceCapability, jt as DeviceFeature, k as buildDeviceAdminUrl, kt as waterHeaterCapability, lt as powerMeterCapability, mt as runningFromLawnMower, n as BaseDevice, nn as EventCategory, nt as motionCapability, ot as numericSensorCapability, pt as quantityFromUnit, q as floodCapability, qt as discriminatedUnion, r as BaseDeviceProvider, rt as normalizeUnit, tn as url, tt as mediaPlayerCapability, u as EnumSensorDateTimeFormatSchema, ut as prepareNotification, v as addonRoutesCapability, vt as scriptRunnerCapability, w as bestLocationMatch, wt as tryConvertUnit, x as ambientLightSensorCapability, xt as tamperCapability, y as airQualitySensorCapability, yt as smokeCapability, z as controlCapability, zt as defineEntryKind } from "./dist-DWMNvtWN.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import { brotliCompressSync, deflateSync, gzipSync } from "node:zlib";
|
|
4
4
|
//#region src/ha-admin-link.ts
|
|
@@ -6486,6 +6486,8 @@ var PARENT_TYPE_PRIORITY = [
|
|
|
6486
6486
|
DeviceType.Fan,
|
|
6487
6487
|
DeviceType.Vacuum,
|
|
6488
6488
|
DeviceType.LawnMower,
|
|
6489
|
+
DeviceType.Washer,
|
|
6490
|
+
DeviceType.Dryer,
|
|
6489
6491
|
DeviceType.Dishwasher,
|
|
6490
6492
|
DeviceType.Light,
|
|
6491
6493
|
DeviceType.Switch,
|
|
@@ -10839,7 +10839,7 @@ object({
|
|
|
10839
10839
|
params: record(string(), union([string(), number()])).optional()
|
|
10840
10840
|
});
|
|
10841
10841
|
//#endregion
|
|
10842
|
-
//#region ../types/dist/err-msg-
|
|
10842
|
+
//#region ../types/dist/err-msg-DIorGYeC.mjs
|
|
10843
10843
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
10844
10844
|
DeviceType["Camera"] = "camera";
|
|
10845
10845
|
DeviceType["Hub"] = "hub";
|
|
@@ -10933,8 +10933,14 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
|
10933
10933
|
DeviceType["PetFeeder"] = "pet-feeder";
|
|
10934
10934
|
/** Built-in dishwasher — program lifecycle, door / remote-start gates,
|
|
10935
10935
|
* salt and rinse-aid levels. Installed with the `dishwasher` cap.
|
|
10936
|
-
* Sources: native Bosch Home Connect, reusable by similar integrations.
|
|
10936
|
+
* Sources: native Bosch Home Connect, reusable by similar integrations.
|
|
10937
|
+
* A plug-built dishwasher carries running-state and power instead. */
|
|
10937
10938
|
DeviceType["Dishwasher"] = "dishwasher";
|
|
10939
|
+
/** Washing machine. A plug-built one is running while its power stays
|
|
10940
|
+
* above a threshold. No program cap — that surface is the dishwasher's. */
|
|
10941
|
+
DeviceType["Washer"] = "washer";
|
|
10942
|
+
/** Tumble dryer. Same plug-built running surface as {@link Washer}. */
|
|
10943
|
+
DeviceType["Dryer"] = "dryer";
|
|
10938
10944
|
return DeviceType;
|
|
10939
10945
|
}({});
|
|
10940
10946
|
var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
|
|
@@ -11192,7 +11198,7 @@ function errMsg(err) {
|
|
|
11192
11198
|
return String(err);
|
|
11193
11199
|
}
|
|
11194
11200
|
//#endregion
|
|
11195
|
-
//#region ../types/dist/composition-
|
|
11201
|
+
//#region ../types/dist/composition-B2rw5L29.mjs
|
|
11196
11202
|
/**
|
|
11197
11203
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
11198
11204
|
*
|
|
@@ -11948,6 +11954,26 @@ function validateExpressionSource(src) {
|
|
|
11948
11954
|
return null;
|
|
11949
11955
|
}
|
|
11950
11956
|
/**
|
|
11957
|
+
* One power reading becomes a washer, dryer or dishwasher (D944 helper).
|
|
11958
|
+
*
|
|
11959
|
+
* Standby of the control board is under 5 W; a motor or a heater is far
|
|
11960
|
+
* above that, so 5 W is the line. A door lock or a short pump spike is not
|
|
11961
|
+
* a cycle, so running starts only after 30 s above the line.
|
|
11962
|
+
*
|
|
11963
|
+
* A wash, dry or dishwasher pause (soak, heat-wait, heater off between
|
|
11964
|
+
* bursts) lasts several minutes. Ending the cycle on the first dip would
|
|
11965
|
+
* report "finished" in the middle of the program, so the stop dwell is
|
|
11966
|
+
* 10 minutes on every type. The number is stored per type so one machine
|
|
11967
|
+
* can move later without moving the others.
|
|
11968
|
+
*/
|
|
11969
|
+
var APPLIANCE_TEMPLATE_ID = "appliance";
|
|
11970
|
+
var APPLIANCE_KINDS = [
|
|
11971
|
+
"washer",
|
|
11972
|
+
"dryer",
|
|
11973
|
+
"dishwasher"
|
|
11974
|
+
];
|
|
11975
|
+
DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher;
|
|
11976
|
+
/**
|
|
11951
11977
|
* A composition source identity: `(addonId, stableId)`, never a numeric device
|
|
11952
11978
|
* id. Split out so helper schemas can name it without a cycle through
|
|
11953
11979
|
* `composition.ts` (D659).
|
|
@@ -12010,6 +12036,14 @@ var HelperSpecSchema = discriminatedUnion("kind", [object({
|
|
|
12010
12036
|
members: array(HelperMemberSchema).min(1).max(64),
|
|
12011
12037
|
/** Actuator groups only. Readings leave this unset. */
|
|
12012
12038
|
active: ActiveCriterionSchema.optional()
|
|
12039
|
+
}), object({
|
|
12040
|
+
kind: literal("appliance"),
|
|
12041
|
+
templateId: literal(APPLIANCE_TEMPLATE_ID),
|
|
12042
|
+
appliance: _enum(APPLIANCE_KINDS),
|
|
12043
|
+
thresholdWatts: number().positive(),
|
|
12044
|
+
startDwellMs: number().int().nonnegative(),
|
|
12045
|
+
stopDwellMs: number().int().nonnegative(),
|
|
12046
|
+
member: HelperMemberSchema
|
|
12013
12047
|
})]);
|
|
12014
12048
|
/** A composed device's stableId is this prefix plus the block id. */
|
|
12015
12049
|
var COMPOSED_DEVICE_STABLE_ID_PREFIX = "composed-";
|
|
@@ -64846,7 +64880,12 @@ var powerMeterCapability = {
|
|
|
64846
64880
|
scope: "device",
|
|
64847
64881
|
deviceNative: true,
|
|
64848
64882
|
mode: "singleton",
|
|
64849
|
-
deviceTypes: [
|
|
64883
|
+
deviceTypes: [
|
|
64884
|
+
DeviceType.Sensor,
|
|
64885
|
+
DeviceType.Washer,
|
|
64886
|
+
DeviceType.Dryer,
|
|
64887
|
+
DeviceType.Dishwasher
|
|
64888
|
+
],
|
|
64850
64889
|
methods: {},
|
|
64851
64890
|
status: {
|
|
64852
64891
|
schema: PowerMeterStatusSchema,
|
|
@@ -65592,6 +65631,8 @@ var runningCustomize = {
|
|
|
65592
65631
|
stateField: "running"
|
|
65593
65632
|
},
|
|
65594
65633
|
deviceTypes: [
|
|
65634
|
+
DeviceType.Washer,
|
|
65635
|
+
DeviceType.Dryer,
|
|
65595
65636
|
DeviceType.Dishwasher,
|
|
65596
65637
|
DeviceType.Vacuum,
|
|
65597
65638
|
DeviceType.LawnMower,
|
|
@@ -70730,7 +70771,7 @@ function tryConvertDelta(value, from, to) {
|
|
|
70730
70771
|
return shifted - origin;
|
|
70731
70772
|
}
|
|
70732
70773
|
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
70733
|
-
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, 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, DeviceType.Camera, DeviceType.Camera, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
70774
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, 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, DeviceType.Washer, DeviceType.Dryer, DeviceType.Camera, DeviceType.Camera, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
70734
70775
|
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
70735
70776
|
DeviceRole.BinarySensor, DeviceRole.MotionSensor;
|
|
70736
70777
|
new Set(CAP_NAMES);
|
|
@@ -72329,7 +72370,7 @@ var BaseDeviceProvider = class extends BaseAddon {
|
|
|
72329
72370
|
return toDeviceSummary(device, this.addonId);
|
|
72330
72371
|
}
|
|
72331
72372
|
};
|
|
72332
|
-
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;
|
|
72373
|
+
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, DeviceType.Washer, DeviceType.Dryer;
|
|
72333
72374
|
new Set(Object.values(DeviceType));
|
|
72334
72375
|
Object.freeze({
|
|
72335
72376
|
"accessories.getStatus": {
|
|
@@ -84616,7 +84657,39 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
84616
84657
|
phrase: t("When {device} finishes", "Quando {device} finisce"),
|
|
84617
84658
|
icon: "square"
|
|
84618
84659
|
}
|
|
84619
|
-
}
|
|
84660
|
+
},
|
|
84661
|
+
overrides: { byType: {
|
|
84662
|
+
[DeviceType.Washer]: {
|
|
84663
|
+
state: { running: {
|
|
84664
|
+
whenTrue: t("When the washing machine starts", "Quando la lavatrice inizia"),
|
|
84665
|
+
whenFalse: t("When the washing machine has finished", "Quando la lavatrice ha finito")
|
|
84666
|
+
} },
|
|
84667
|
+
events: {
|
|
84668
|
+
onStarted: { phrase: t("When the washing machine starts", "Quando la lavatrice inizia") },
|
|
84669
|
+
onFinished: { phrase: t("When the washing machine has finished", "Quando la lavatrice ha finito") }
|
|
84670
|
+
}
|
|
84671
|
+
},
|
|
84672
|
+
[DeviceType.Dryer]: {
|
|
84673
|
+
state: { running: {
|
|
84674
|
+
whenTrue: t("When the dryer starts", "Quando l'asciugatrice inizia"),
|
|
84675
|
+
whenFalse: t("When the dryer has finished", "Quando l'asciugatrice ha finito")
|
|
84676
|
+
} },
|
|
84677
|
+
events: {
|
|
84678
|
+
onStarted: { phrase: t("When the dryer starts", "Quando l'asciugatrice inizia") },
|
|
84679
|
+
onFinished: { phrase: t("When the dryer has finished", "Quando l'asciugatrice ha finito") }
|
|
84680
|
+
}
|
|
84681
|
+
},
|
|
84682
|
+
[DeviceType.Dishwasher]: {
|
|
84683
|
+
state: { running: {
|
|
84684
|
+
whenTrue: t("When the dishwasher starts", "Quando la lavastoviglie inizia"),
|
|
84685
|
+
whenFalse: t("When the dishwasher has finished", "Quando la lavastoviglie ha finito")
|
|
84686
|
+
} },
|
|
84687
|
+
events: {
|
|
84688
|
+
onStarted: { phrase: t("When the dishwasher starts", "Quando la lavastoviglie inizia") },
|
|
84689
|
+
onFinished: { phrase: t("When the dishwasher has finished", "Quando la lavastoviglie ha finito") }
|
|
84690
|
+
}
|
|
84691
|
+
}
|
|
84692
|
+
} }
|
|
84620
84693
|
},
|
|
84621
84694
|
update: {
|
|
84622
84695
|
scope: "device",
|
|
@@ -85916,8 +85989,58 @@ function projectAction(cap, action) {
|
|
|
85916
85989
|
};
|
|
85917
85990
|
}
|
|
85918
85991
|
Object.entries(CAP_VOCABULARY_BY_NAME).flatMap(([cap, entry]) => entry.scope === "device" ? (entry.actions ?? []).map((a) => projectAction(cap, a)) : []);
|
|
85919
|
-
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;
|
|
85992
|
+
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, DeviceType.Washer, DeviceType.Dryer;
|
|
85920
85993
|
DeviceFeature.BatteryOperated;
|
|
85994
|
+
/**
|
|
85995
|
+
* How a washer, dryer or dishwasher leaves CamStack.
|
|
85996
|
+
*
|
|
85997
|
+
* Home Assistant has no laundry domain: the device is offered, and what
|
|
85998
|
+
* travels is its power reading. The others have a laundry type that this
|
|
85999
|
+
* export cannot honour yet, so they are named and withheld.
|
|
86000
|
+
*/
|
|
86001
|
+
var PLUG_APPLIANCE_TYPES = [
|
|
86002
|
+
DeviceType.Washer,
|
|
86003
|
+
DeviceType.Dryer,
|
|
86004
|
+
DeviceType.Dishwasher
|
|
86005
|
+
];
|
|
86006
|
+
var HA_AS = "a power sensor (device_class power). Home Assistant has no laundry domain. running-state stays unexported until a null reading can be published as unavailable.";
|
|
86007
|
+
var HOMEKIT_REASON = "HomeKit has no laundry-appliance service. The export tab would pair an accessory with nothing on it: running-state is withheld until a null reading can be unavailable, and power is not a HomeKit service this export honours.";
|
|
86008
|
+
var ALEXA_REASON = "Alexa has no laundry category in this export, and neither power nor running has an Alexa interface.";
|
|
86009
|
+
var GOOGLE_REASON = "Google WASHER, DRYER and DISHWASHER require RunCycle. A power threshold is not that trait, and this export does not publish RunCycle.";
|
|
86010
|
+
var MATTER_REASON = "No Matter export is built. The closest device types are Laundry Washer (0x0073) and Laundry Dryer (0x0074); a power threshold is not the Laundry Washer Mode cluster.";
|
|
86011
|
+
function withheld(reason) {
|
|
86012
|
+
return {
|
|
86013
|
+
[DeviceType.Washer]: {
|
|
86014
|
+
exported: false,
|
|
86015
|
+
reason
|
|
86016
|
+
},
|
|
86017
|
+
[DeviceType.Dryer]: {
|
|
86018
|
+
exported: false,
|
|
86019
|
+
reason
|
|
86020
|
+
},
|
|
86021
|
+
[DeviceType.Dishwasher]: {
|
|
86022
|
+
exported: false,
|
|
86023
|
+
reason
|
|
86024
|
+
}
|
|
86025
|
+
};
|
|
86026
|
+
}
|
|
86027
|
+
function offered(received) {
|
|
86028
|
+
return {
|
|
86029
|
+
[DeviceType.Washer]: {
|
|
86030
|
+
exported: true,
|
|
86031
|
+
as: received
|
|
86032
|
+
},
|
|
86033
|
+
[DeviceType.Dryer]: {
|
|
86034
|
+
exported: true,
|
|
86035
|
+
as: received
|
|
86036
|
+
},
|
|
86037
|
+
[DeviceType.Dishwasher]: {
|
|
86038
|
+
exported: true,
|
|
86039
|
+
as: received
|
|
86040
|
+
}
|
|
86041
|
+
};
|
|
86042
|
+
}
|
|
86043
|
+
offered(HA_AS), withheld(HOMEKIT_REASON), withheld(ALEXA_REASON), withheld(GOOGLE_REASON), withheld(MATTER_REASON);
|
|
85921
86044
|
Object.freeze({
|
|
85922
86045
|
"accessories.getStatus": [{
|
|
85923
86046
|
name: "deviceId",
|
|
@@ -90357,4 +90480,4 @@ function bestLocationMatch(externalName, existing, threshold = .8) {
|
|
|
90357
90480
|
var MB = 1024 * 1024;
|
|
90358
90481
|
1024 * MB, 3072 * MB;
|
|
90359
90482
|
//#endregion
|
|
90360
|
-
export {
|
|
90483
|
+
export { lawnMowerControlCapability as $, union as $t, buttonCapability as A, weatherCapability as At, coverCapability as B, defineRecordKinds as Bt, batteryCapability as C, tryConvertDelta as Ct, brokerCapability as D, valveCapability as Dt, brightnessCapability as E, vacuumControlCapability as Et, connectivityCapability as F, BaseAddon as Ft, eventEmitterCapability as G, array as Gt, deviceAdoptionCapability as H, isReadingQuantity as Ht, consumableFormOf as I, RecordSecretUnavailableError as It, gasCapability as J, literal as Jt, fanControlCapability as K, boolean as Kt, consumableKindOf as L, baseUnitOf as Lt, carbonMonoxideCapability as M, DeviceRole as Mt, climateControlCapability as N, DeviceType as Nt, buildAddonRouteProvider as O, vibrationCapability as Ot, colorCapability as P, errMsg as Pt, ingestReading as Q, string as Qt, contactCapability as R, createEvent as Rt, automationControlCapability as S, temperatureSensorCapability as St, binaryCapability as T, updateCapability as Tt, deviceExportCapability as U, nodePin as Ut, deviceAdminLinkCapability as V, entryBody as Vt, enumSensorCapability as W, _enum as Wt, humiditySensorCapability as X, object as Xt, humidifierCapability as Y, number as Yt, imageCapability as Z, record as Zt, accessoriesCapability as _, runningStateCapability as _t, COCO_TO_MACRO as a, notifierCapability as at, alarmPanelCapability as b, switchCapability as bt, ConsumableItemSchema as c, parseAdminBase as ct, FanDirectionSchema as d, presenceCapability as dt, unknown as en, lockControlCapability as et, HvacModeSchema as f, pressureSensorCapability as ft, TargetSchema as g, runningFromVacuumState as gt, RUNNING_STATE_COLD as h, runningFromMediaPlayer as ht, CAMERA_SWITCH_ORDER as i, notificationOutputCapability as it, calendarSourceCapability as j, DeviceFeature as jt, buildDeviceAdminUrl as k, waterHeaterCapability as kt, ConsumableStatusSchema as l, powerMeterCapability as lt, PLUG_APPLIANCE_TYPES as m, runningFromLawnMower as mt, BaseDevice as n, EventCategory as nn, motionCapability as nt, CameraSwitchIdSchema as o, numericSensorCapability as ot, MediaPlayerRepeatSchema as p, quantityFromUnit as pt, floodCapability as q, discriminatedUnion as qt, BaseDeviceProvider as r, normalizeUnit as rt, ConsumableFormSchema as s, oauthIntegrationCapability as st, AlarmArmModeSchema as t, url as tn, mediaPlayerCapability as tt, EnumSensorDateTimeFormatSchema as u, prepareNotification as ut, addonRoutesCapability as v, scriptRunnerCapability as vt, bestLocationMatch as w, tryConvertUnit as wt, ambientLightSensorCapability as x, tamperCapability as xt, airQualitySensorCapability as y, smokeCapability as yt, controlCapability as z, defineEntryKind as zt };
|
|
@@ -10840,7 +10840,7 @@ object({
|
|
|
10840
10840
|
params: record(string(), union([string(), number()])).optional()
|
|
10841
10841
|
});
|
|
10842
10842
|
//#endregion
|
|
10843
|
-
//#region ../types/dist/err-msg-
|
|
10843
|
+
//#region ../types/dist/err-msg-DIorGYeC.mjs
|
|
10844
10844
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
10845
10845
|
DeviceType["Camera"] = "camera";
|
|
10846
10846
|
DeviceType["Hub"] = "hub";
|
|
@@ -10934,8 +10934,14 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
|
10934
10934
|
DeviceType["PetFeeder"] = "pet-feeder";
|
|
10935
10935
|
/** Built-in dishwasher — program lifecycle, door / remote-start gates,
|
|
10936
10936
|
* salt and rinse-aid levels. Installed with the `dishwasher` cap.
|
|
10937
|
-
* Sources: native Bosch Home Connect, reusable by similar integrations.
|
|
10937
|
+
* Sources: native Bosch Home Connect, reusable by similar integrations.
|
|
10938
|
+
* A plug-built dishwasher carries running-state and power instead. */
|
|
10938
10939
|
DeviceType["Dishwasher"] = "dishwasher";
|
|
10940
|
+
/** Washing machine. A plug-built one is running while its power stays
|
|
10941
|
+
* above a threshold. No program cap — that surface is the dishwasher's. */
|
|
10942
|
+
DeviceType["Washer"] = "washer";
|
|
10943
|
+
/** Tumble dryer. Same plug-built running surface as {@link Washer}. */
|
|
10944
|
+
DeviceType["Dryer"] = "dryer";
|
|
10939
10945
|
return DeviceType;
|
|
10940
10946
|
}({});
|
|
10941
10947
|
var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
|
|
@@ -11193,7 +11199,7 @@ function errMsg(err) {
|
|
|
11193
11199
|
return String(err);
|
|
11194
11200
|
}
|
|
11195
11201
|
//#endregion
|
|
11196
|
-
//#region ../types/dist/composition-
|
|
11202
|
+
//#region ../types/dist/composition-B2rw5L29.mjs
|
|
11197
11203
|
/**
|
|
11198
11204
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
11199
11205
|
*
|
|
@@ -11949,6 +11955,26 @@ function validateExpressionSource(src) {
|
|
|
11949
11955
|
return null;
|
|
11950
11956
|
}
|
|
11951
11957
|
/**
|
|
11958
|
+
* One power reading becomes a washer, dryer or dishwasher (D944 helper).
|
|
11959
|
+
*
|
|
11960
|
+
* Standby of the control board is under 5 W; a motor or a heater is far
|
|
11961
|
+
* above that, so 5 W is the line. A door lock or a short pump spike is not
|
|
11962
|
+
* a cycle, so running starts only after 30 s above the line.
|
|
11963
|
+
*
|
|
11964
|
+
* A wash, dry or dishwasher pause (soak, heat-wait, heater off between
|
|
11965
|
+
* bursts) lasts several minutes. Ending the cycle on the first dip would
|
|
11966
|
+
* report "finished" in the middle of the program, so the stop dwell is
|
|
11967
|
+
* 10 minutes on every type. The number is stored per type so one machine
|
|
11968
|
+
* can move later without moving the others.
|
|
11969
|
+
*/
|
|
11970
|
+
var APPLIANCE_TEMPLATE_ID = "appliance";
|
|
11971
|
+
var APPLIANCE_KINDS = [
|
|
11972
|
+
"washer",
|
|
11973
|
+
"dryer",
|
|
11974
|
+
"dishwasher"
|
|
11975
|
+
];
|
|
11976
|
+
DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher;
|
|
11977
|
+
/**
|
|
11952
11978
|
* A composition source identity: `(addonId, stableId)`, never a numeric device
|
|
11953
11979
|
* id. Split out so helper schemas can name it without a cycle through
|
|
11954
11980
|
* `composition.ts` (D659).
|
|
@@ -12011,6 +12037,14 @@ var HelperSpecSchema = discriminatedUnion("kind", [object({
|
|
|
12011
12037
|
members: array(HelperMemberSchema).min(1).max(64),
|
|
12012
12038
|
/** Actuator groups only. Readings leave this unset. */
|
|
12013
12039
|
active: ActiveCriterionSchema.optional()
|
|
12040
|
+
}), object({
|
|
12041
|
+
kind: literal("appliance"),
|
|
12042
|
+
templateId: literal(APPLIANCE_TEMPLATE_ID),
|
|
12043
|
+
appliance: _enum(APPLIANCE_KINDS),
|
|
12044
|
+
thresholdWatts: number().positive(),
|
|
12045
|
+
startDwellMs: number().int().nonnegative(),
|
|
12046
|
+
stopDwellMs: number().int().nonnegative(),
|
|
12047
|
+
member: HelperMemberSchema
|
|
12014
12048
|
})]);
|
|
12015
12049
|
/** A composed device's stableId is this prefix plus the block id. */
|
|
12016
12050
|
var COMPOSED_DEVICE_STABLE_ID_PREFIX = "composed-";
|
|
@@ -64847,7 +64881,12 @@ var powerMeterCapability = {
|
|
|
64847
64881
|
scope: "device",
|
|
64848
64882
|
deviceNative: true,
|
|
64849
64883
|
mode: "singleton",
|
|
64850
|
-
deviceTypes: [
|
|
64884
|
+
deviceTypes: [
|
|
64885
|
+
DeviceType.Sensor,
|
|
64886
|
+
DeviceType.Washer,
|
|
64887
|
+
DeviceType.Dryer,
|
|
64888
|
+
DeviceType.Dishwasher
|
|
64889
|
+
],
|
|
64851
64890
|
methods: {},
|
|
64852
64891
|
status: {
|
|
64853
64892
|
schema: PowerMeterStatusSchema,
|
|
@@ -65593,6 +65632,8 @@ var runningCustomize = {
|
|
|
65593
65632
|
stateField: "running"
|
|
65594
65633
|
},
|
|
65595
65634
|
deviceTypes: [
|
|
65635
|
+
DeviceType.Washer,
|
|
65636
|
+
DeviceType.Dryer,
|
|
65596
65637
|
DeviceType.Dishwasher,
|
|
65597
65638
|
DeviceType.Vacuum,
|
|
65598
65639
|
DeviceType.LawnMower,
|
|
@@ -70731,7 +70772,7 @@ function tryConvertDelta(value, from, to) {
|
|
|
70731
70772
|
return shifted - origin;
|
|
70732
70773
|
}
|
|
70733
70774
|
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
70734
|
-
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, 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, DeviceType.Camera, DeviceType.Camera, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
70775
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, 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, DeviceType.Washer, DeviceType.Dryer, DeviceType.Camera, DeviceType.Camera, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
70735
70776
|
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
70736
70777
|
DeviceRole.BinarySensor, DeviceRole.MotionSensor;
|
|
70737
70778
|
new Set(CAP_NAMES);
|
|
@@ -72330,7 +72371,7 @@ var BaseDeviceProvider = class extends BaseAddon {
|
|
|
72330
72371
|
return toDeviceSummary(device, this.addonId);
|
|
72331
72372
|
}
|
|
72332
72373
|
};
|
|
72333
|
-
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;
|
|
72374
|
+
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, DeviceType.Washer, DeviceType.Dryer;
|
|
72334
72375
|
new Set(Object.values(DeviceType));
|
|
72335
72376
|
Object.freeze({
|
|
72336
72377
|
"accessories.getStatus": {
|
|
@@ -84617,7 +84658,39 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
84617
84658
|
phrase: t("When {device} finishes", "Quando {device} finisce"),
|
|
84618
84659
|
icon: "square"
|
|
84619
84660
|
}
|
|
84620
|
-
}
|
|
84661
|
+
},
|
|
84662
|
+
overrides: { byType: {
|
|
84663
|
+
[DeviceType.Washer]: {
|
|
84664
|
+
state: { running: {
|
|
84665
|
+
whenTrue: t("When the washing machine starts", "Quando la lavatrice inizia"),
|
|
84666
|
+
whenFalse: t("When the washing machine has finished", "Quando la lavatrice ha finito")
|
|
84667
|
+
} },
|
|
84668
|
+
events: {
|
|
84669
|
+
onStarted: { phrase: t("When the washing machine starts", "Quando la lavatrice inizia") },
|
|
84670
|
+
onFinished: { phrase: t("When the washing machine has finished", "Quando la lavatrice ha finito") }
|
|
84671
|
+
}
|
|
84672
|
+
},
|
|
84673
|
+
[DeviceType.Dryer]: {
|
|
84674
|
+
state: { running: {
|
|
84675
|
+
whenTrue: t("When the dryer starts", "Quando l'asciugatrice inizia"),
|
|
84676
|
+
whenFalse: t("When the dryer has finished", "Quando l'asciugatrice ha finito")
|
|
84677
|
+
} },
|
|
84678
|
+
events: {
|
|
84679
|
+
onStarted: { phrase: t("When the dryer starts", "Quando l'asciugatrice inizia") },
|
|
84680
|
+
onFinished: { phrase: t("When the dryer has finished", "Quando l'asciugatrice ha finito") }
|
|
84681
|
+
}
|
|
84682
|
+
},
|
|
84683
|
+
[DeviceType.Dishwasher]: {
|
|
84684
|
+
state: { running: {
|
|
84685
|
+
whenTrue: t("When the dishwasher starts", "Quando la lavastoviglie inizia"),
|
|
84686
|
+
whenFalse: t("When the dishwasher has finished", "Quando la lavastoviglie ha finito")
|
|
84687
|
+
} },
|
|
84688
|
+
events: {
|
|
84689
|
+
onStarted: { phrase: t("When the dishwasher starts", "Quando la lavastoviglie inizia") },
|
|
84690
|
+
onFinished: { phrase: t("When the dishwasher has finished", "Quando la lavastoviglie ha finito") }
|
|
84691
|
+
}
|
|
84692
|
+
}
|
|
84693
|
+
} }
|
|
84621
84694
|
},
|
|
84622
84695
|
update: {
|
|
84623
84696
|
scope: "device",
|
|
@@ -85917,8 +85990,58 @@ function projectAction(cap, action) {
|
|
|
85917
85990
|
};
|
|
85918
85991
|
}
|
|
85919
85992
|
Object.entries(CAP_VOCABULARY_BY_NAME).flatMap(([cap, entry]) => entry.scope === "device" ? (entry.actions ?? []).map((a) => projectAction(cap, a)) : []);
|
|
85920
|
-
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;
|
|
85993
|
+
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, DeviceType.Washer, DeviceType.Dryer;
|
|
85921
85994
|
DeviceFeature.BatteryOperated;
|
|
85995
|
+
/**
|
|
85996
|
+
* How a washer, dryer or dishwasher leaves CamStack.
|
|
85997
|
+
*
|
|
85998
|
+
* Home Assistant has no laundry domain: the device is offered, and what
|
|
85999
|
+
* travels is its power reading. The others have a laundry type that this
|
|
86000
|
+
* export cannot honour yet, so they are named and withheld.
|
|
86001
|
+
*/
|
|
86002
|
+
var PLUG_APPLIANCE_TYPES = [
|
|
86003
|
+
DeviceType.Washer,
|
|
86004
|
+
DeviceType.Dryer,
|
|
86005
|
+
DeviceType.Dishwasher
|
|
86006
|
+
];
|
|
86007
|
+
var HA_AS = "a power sensor (device_class power). Home Assistant has no laundry domain. running-state stays unexported until a null reading can be published as unavailable.";
|
|
86008
|
+
var HOMEKIT_REASON = "HomeKit has no laundry-appliance service. The export tab would pair an accessory with nothing on it: running-state is withheld until a null reading can be unavailable, and power is not a HomeKit service this export honours.";
|
|
86009
|
+
var ALEXA_REASON = "Alexa has no laundry category in this export, and neither power nor running has an Alexa interface.";
|
|
86010
|
+
var GOOGLE_REASON = "Google WASHER, DRYER and DISHWASHER require RunCycle. A power threshold is not that trait, and this export does not publish RunCycle.";
|
|
86011
|
+
var MATTER_REASON = "No Matter export is built. The closest device types are Laundry Washer (0x0073) and Laundry Dryer (0x0074); a power threshold is not the Laundry Washer Mode cluster.";
|
|
86012
|
+
function withheld(reason) {
|
|
86013
|
+
return {
|
|
86014
|
+
[DeviceType.Washer]: {
|
|
86015
|
+
exported: false,
|
|
86016
|
+
reason
|
|
86017
|
+
},
|
|
86018
|
+
[DeviceType.Dryer]: {
|
|
86019
|
+
exported: false,
|
|
86020
|
+
reason
|
|
86021
|
+
},
|
|
86022
|
+
[DeviceType.Dishwasher]: {
|
|
86023
|
+
exported: false,
|
|
86024
|
+
reason
|
|
86025
|
+
}
|
|
86026
|
+
};
|
|
86027
|
+
}
|
|
86028
|
+
function offered(received) {
|
|
86029
|
+
return {
|
|
86030
|
+
[DeviceType.Washer]: {
|
|
86031
|
+
exported: true,
|
|
86032
|
+
as: received
|
|
86033
|
+
},
|
|
86034
|
+
[DeviceType.Dryer]: {
|
|
86035
|
+
exported: true,
|
|
86036
|
+
as: received
|
|
86037
|
+
},
|
|
86038
|
+
[DeviceType.Dishwasher]: {
|
|
86039
|
+
exported: true,
|
|
86040
|
+
as: received
|
|
86041
|
+
}
|
|
86042
|
+
};
|
|
86043
|
+
}
|
|
86044
|
+
offered(HA_AS), withheld(HOMEKIT_REASON), withheld(ALEXA_REASON), withheld(GOOGLE_REASON), withheld(MATTER_REASON);
|
|
85922
86045
|
Object.freeze({
|
|
85923
86046
|
"accessories.getStatus": [{
|
|
85924
86047
|
name: "deviceId",
|
|
@@ -90466,6 +90589,12 @@ Object.defineProperty(exports, "MediaPlayerRepeatSchema", {
|
|
|
90466
90589
|
return MediaPlayerRepeatSchema;
|
|
90467
90590
|
}
|
|
90468
90591
|
});
|
|
90592
|
+
Object.defineProperty(exports, "PLUG_APPLIANCE_TYPES", {
|
|
90593
|
+
enumerable: true,
|
|
90594
|
+
get: function() {
|
|
90595
|
+
return PLUG_APPLIANCE_TYPES;
|
|
90596
|
+
}
|
|
90597
|
+
});
|
|
90469
90598
|
Object.defineProperty(exports, "RUNNING_STATE_COLD", {
|
|
90470
90599
|
enumerable: true,
|
|
90471
90600
|
get: function() {
|
|
@@ -24,7 +24,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
24
24
|
enumerable: true
|
|
25
25
|
}) : target, mod));
|
|
26
26
|
//#endregion
|
|
27
|
-
const require_dist = require("../dist-
|
|
27
|
+
const require_dist = require("../dist-sQp4D2Eo.js");
|
|
28
28
|
let node_crypto = require("node:crypto");
|
|
29
29
|
require("node:zlib");
|
|
30
30
|
let node_fs = require("node:fs");
|
|
@@ -6658,6 +6658,46 @@ function projectSynthetic(input, nowMs) {
|
|
|
6658
6658
|
return values;
|
|
6659
6659
|
}
|
|
6660
6660
|
//#endregion
|
|
6661
|
+
//#region src/ha-export/supported-device-kinds.ts
|
|
6662
|
+
/**
|
|
6663
|
+
* Device types the Home Assistant export picker offers.
|
|
6664
|
+
*
|
|
6665
|
+
* A UI filter. What actually travels is still the entity catalog: a washer,
|
|
6666
|
+
* dryer or dishwasher is offered because its power reading exports as a
|
|
6667
|
+
* sensor. running-state stays unmapped.
|
|
6668
|
+
*/
|
|
6669
|
+
var SUPPORTED_DEVICE_KINDS = [
|
|
6670
|
+
"camera",
|
|
6671
|
+
"light",
|
|
6672
|
+
"siren",
|
|
6673
|
+
"switch",
|
|
6674
|
+
"sensor",
|
|
6675
|
+
"thermostat",
|
|
6676
|
+
"climate",
|
|
6677
|
+
"button",
|
|
6678
|
+
"event-emitter",
|
|
6679
|
+
"update",
|
|
6680
|
+
"generic",
|
|
6681
|
+
"lock",
|
|
6682
|
+
"cover",
|
|
6683
|
+
"valve",
|
|
6684
|
+
"humidifier",
|
|
6685
|
+
"water-heater",
|
|
6686
|
+
"fan",
|
|
6687
|
+
"media-player",
|
|
6688
|
+
"alarm-panel",
|
|
6689
|
+
"control",
|
|
6690
|
+
"presence",
|
|
6691
|
+
"weather",
|
|
6692
|
+
"vacuum",
|
|
6693
|
+
"lawn-mower",
|
|
6694
|
+
"container",
|
|
6695
|
+
"image",
|
|
6696
|
+
"pet-feeder",
|
|
6697
|
+
"hub",
|
|
6698
|
+
...require_dist.PLUG_APPLIANCE_TYPES
|
|
6699
|
+
];
|
|
6700
|
+
//#endregion
|
|
6661
6701
|
//#region src/ha-export/ha-export.addon.ts
|
|
6662
6702
|
/**
|
|
6663
6703
|
* Native Home Assistant export — a custom component fed by HTTP push.
|
|
@@ -9050,36 +9090,6 @@ var HaExportAddon = class extends require_dist.BaseAddon {
|
|
|
9050
9090
|
* CAPABILITIES, not its type, and restricting the picker by type is what
|
|
9051
9091
|
* confined the previous exporter to cameras.
|
|
9052
9092
|
*/
|
|
9053
|
-
var SUPPORTED_DEVICE_KINDS = [
|
|
9054
|
-
"camera",
|
|
9055
|
-
"light",
|
|
9056
|
-
"siren",
|
|
9057
|
-
"switch",
|
|
9058
|
-
"sensor",
|
|
9059
|
-
"thermostat",
|
|
9060
|
-
"climate",
|
|
9061
|
-
"button",
|
|
9062
|
-
"event-emitter",
|
|
9063
|
-
"update",
|
|
9064
|
-
"generic",
|
|
9065
|
-
"lock",
|
|
9066
|
-
"cover",
|
|
9067
|
-
"valve",
|
|
9068
|
-
"humidifier",
|
|
9069
|
-
"water-heater",
|
|
9070
|
-
"fan",
|
|
9071
|
-
"media-player",
|
|
9072
|
-
"alarm-panel",
|
|
9073
|
-
"control",
|
|
9074
|
-
"presence",
|
|
9075
|
-
"weather",
|
|
9076
|
-
"vacuum",
|
|
9077
|
-
"lawn-mower",
|
|
9078
|
-
"container",
|
|
9079
|
-
"image",
|
|
9080
|
-
"pet-feeder",
|
|
9081
|
-
"hub"
|
|
9082
|
-
];
|
|
9083
9093
|
/**
|
|
9084
9094
|
* POST one message to Home Assistant's push view.
|
|
9085
9095
|
*
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Ft as BaseAddon, Gt as array, Ht as isReadingQuantity, I as consumableFormOf, L as consumableKindOf, Lt as baseUnitOf, O as buildAddonRouteProvider, Qt as string, U as deviceExportCapability, Ut as nodePin, Xt as object, a as COCO_TO_MACRO, c as ConsumableItemSchema, d as FanDirectionSchema, en as unknown, f as HvacModeSchema, i as CAMERA_SWITCH_ORDER, l as ConsumableStatusSchema, m as PLUG_APPLIANCE_TYPES, nn as EventCategory, o as CameraSwitchIdSchema, p as MediaPlayerRepeatSchema, s as ConsumableFormSchema, st as oauthIntegrationCapability, t as AlarmArmModeSchema, v as addonRoutesCapability } from "../dist-DWMNvtWN.mjs";
|
|
2
2
|
import { createHmac, timingSafeEqual } from "node:crypto";
|
|
3
3
|
import "node:zlib";
|
|
4
4
|
import "node:fs";
|
|
@@ -6623,6 +6623,46 @@ function projectSynthetic(input, nowMs) {
|
|
|
6623
6623
|
return values;
|
|
6624
6624
|
}
|
|
6625
6625
|
//#endregion
|
|
6626
|
+
//#region src/ha-export/supported-device-kinds.ts
|
|
6627
|
+
/**
|
|
6628
|
+
* Device types the Home Assistant export picker offers.
|
|
6629
|
+
*
|
|
6630
|
+
* A UI filter. What actually travels is still the entity catalog: a washer,
|
|
6631
|
+
* dryer or dishwasher is offered because its power reading exports as a
|
|
6632
|
+
* sensor. running-state stays unmapped.
|
|
6633
|
+
*/
|
|
6634
|
+
var SUPPORTED_DEVICE_KINDS = [
|
|
6635
|
+
"camera",
|
|
6636
|
+
"light",
|
|
6637
|
+
"siren",
|
|
6638
|
+
"switch",
|
|
6639
|
+
"sensor",
|
|
6640
|
+
"thermostat",
|
|
6641
|
+
"climate",
|
|
6642
|
+
"button",
|
|
6643
|
+
"event-emitter",
|
|
6644
|
+
"update",
|
|
6645
|
+
"generic",
|
|
6646
|
+
"lock",
|
|
6647
|
+
"cover",
|
|
6648
|
+
"valve",
|
|
6649
|
+
"humidifier",
|
|
6650
|
+
"water-heater",
|
|
6651
|
+
"fan",
|
|
6652
|
+
"media-player",
|
|
6653
|
+
"alarm-panel",
|
|
6654
|
+
"control",
|
|
6655
|
+
"presence",
|
|
6656
|
+
"weather",
|
|
6657
|
+
"vacuum",
|
|
6658
|
+
"lawn-mower",
|
|
6659
|
+
"container",
|
|
6660
|
+
"image",
|
|
6661
|
+
"pet-feeder",
|
|
6662
|
+
"hub",
|
|
6663
|
+
...PLUG_APPLIANCE_TYPES
|
|
6664
|
+
];
|
|
6665
|
+
//#endregion
|
|
6626
6666
|
//#region src/ha-export/ha-export.addon.ts
|
|
6627
6667
|
/**
|
|
6628
6668
|
* Native Home Assistant export — a custom component fed by HTTP push.
|
|
@@ -9015,36 +9055,6 @@ var HaExportAddon = class extends BaseAddon {
|
|
|
9015
9055
|
* CAPABILITIES, not its type, and restricting the picker by type is what
|
|
9016
9056
|
* confined the previous exporter to cameras.
|
|
9017
9057
|
*/
|
|
9018
|
-
var SUPPORTED_DEVICE_KINDS = [
|
|
9019
|
-
"camera",
|
|
9020
|
-
"light",
|
|
9021
|
-
"siren",
|
|
9022
|
-
"switch",
|
|
9023
|
-
"sensor",
|
|
9024
|
-
"thermostat",
|
|
9025
|
-
"climate",
|
|
9026
|
-
"button",
|
|
9027
|
-
"event-emitter",
|
|
9028
|
-
"update",
|
|
9029
|
-
"generic",
|
|
9030
|
-
"lock",
|
|
9031
|
-
"cover",
|
|
9032
|
-
"valve",
|
|
9033
|
-
"humidifier",
|
|
9034
|
-
"water-heater",
|
|
9035
|
-
"fan",
|
|
9036
|
-
"media-player",
|
|
9037
|
-
"alarm-panel",
|
|
9038
|
-
"control",
|
|
9039
|
-
"presence",
|
|
9040
|
-
"weather",
|
|
9041
|
-
"vacuum",
|
|
9042
|
-
"lawn-mower",
|
|
9043
|
-
"container",
|
|
9044
|
-
"image",
|
|
9045
|
-
"pet-feeder",
|
|
9046
|
-
"hub"
|
|
9047
|
-
];
|
|
9048
9058
|
/**
|
|
9049
9059
|
* POST one message to Home Assistant's push view.
|
|
9050
9060
|
*
|