@camstack/addon-model-studio 1.1.303 → 1.1.305
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/{MotionZonesSettings-DyZoYI0U.mjs → MotionZonesSettings-nwsYJ4LM.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-B37uji0h.mjs → PrivacyMaskSettings-D44t-3Il.mjs} +4 -4
- package/dist/{SceneMonitorEditor-adwuwWhh.mjs → SceneMonitorEditor-B7GPFInk.mjs} +3 -3
- package/dist/_stub.js +37372 -16236
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-BA1vPAiL.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-Dm-CsmsB.mjs} +3 -3
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B5mcgboO.mjs +26 -0
- package/dist/{hostInit-C9Zvf9iV.mjs → hostInit-BCkvpKIY.mjs} +2 -2
- package/dist/model-studio.addon.js +273 -28
- package/dist/model-studio.addon.mjs +273 -28
- package/dist/{player-overlays-NWrAt23J.mjs → player-overlays-BmekT-lx.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-D0VqJmUb.mjs → responsive-DEe2tyvb.mjs} +1 -1
- package/dist/{scene-monitor-copy-CFRppIGJ.mjs → scene-monitor-copy-0SI6bJjg.mjs} +1 -1
- package/dist/{square-0_tIf9AN.mjs → square-_3D14YQf.mjs} +1 -1
- package/dist/{trash-2-BLOVJO98.mjs → trash-2-CBnastSw.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-VzapIpwy.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-BVMDXJrt.mjs} +1 -1
- package/package.json +1 -1
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CrWbJfbZ.mjs +0 -26
|
@@ -5811,7 +5811,7 @@ var ZodIssueCode = {
|
|
|
5811
5811
|
var ZodFirstPartyTypeKind;
|
|
5812
5812
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5813
5813
|
//#endregion
|
|
5814
|
-
//#region ../types/dist/sleep-
|
|
5814
|
+
//#region ../types/dist/sleep-0sD_LHLI.mjs
|
|
5815
5815
|
/**
|
|
5816
5816
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5817
5817
|
* window to float samples (D455).
|
|
@@ -9036,6 +9036,7 @@ var CAP_NAMES = Object.freeze([
|
|
|
9036
9036
|
"login-method",
|
|
9037
9037
|
"media-player",
|
|
9038
9038
|
"mesh-network",
|
|
9039
|
+
"meter",
|
|
9039
9040
|
"metrics-provider",
|
|
9040
9041
|
"model-convert",
|
|
9041
9042
|
"model-distributor",
|
|
@@ -10093,6 +10094,10 @@ Object.freeze({
|
|
|
10093
10094
|
]
|
|
10094
10095
|
}
|
|
10095
10096
|
],
|
|
10097
|
+
"meter": [{
|
|
10098
|
+
"path": "value",
|
|
10099
|
+
"valueType": "number"
|
|
10100
|
+
}],
|
|
10096
10101
|
"motion": [
|
|
10097
10102
|
{
|
|
10098
10103
|
"path": "detected",
|
|
@@ -10836,7 +10841,7 @@ object({
|
|
|
10836
10841
|
params: record(string(), union([string(), number()])).optional()
|
|
10837
10842
|
});
|
|
10838
10843
|
//#endregion
|
|
10839
|
-
//#region ../types/dist/err-msg-
|
|
10844
|
+
//#region ../types/dist/err-msg-DIorGYeC.mjs
|
|
10840
10845
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
10841
10846
|
DeviceType["Camera"] = "camera";
|
|
10842
10847
|
DeviceType["Hub"] = "hub";
|
|
@@ -10930,8 +10935,14 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
|
10930
10935
|
DeviceType["PetFeeder"] = "pet-feeder";
|
|
10931
10936
|
/** Built-in dishwasher — program lifecycle, door / remote-start gates,
|
|
10932
10937
|
* salt and rinse-aid levels. Installed with the `dishwasher` cap.
|
|
10933
|
-
* Sources: native Bosch Home Connect, reusable by similar integrations.
|
|
10938
|
+
* Sources: native Bosch Home Connect, reusable by similar integrations.
|
|
10939
|
+
* A plug-built dishwasher carries running-state and power instead. */
|
|
10934
10940
|
DeviceType["Dishwasher"] = "dishwasher";
|
|
10941
|
+
/** Washing machine. A plug-built one is running while its power stays
|
|
10942
|
+
* above a threshold. No program cap — that surface is the dishwasher's. */
|
|
10943
|
+
DeviceType["Washer"] = "washer";
|
|
10944
|
+
/** Tumble dryer. Same plug-built running surface as {@link Washer}. */
|
|
10945
|
+
DeviceType["Dryer"] = "dryer";
|
|
10935
10946
|
return DeviceType;
|
|
10936
10947
|
}({});
|
|
10937
10948
|
var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
|
|
@@ -11179,7 +11190,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
11179
11190
|
return DeviceRole;
|
|
11180
11191
|
}({});
|
|
11181
11192
|
//#endregion
|
|
11182
|
-
//#region ../types/dist/composition-
|
|
11193
|
+
//#region ../types/dist/composition-CpETZ4HL.mjs
|
|
11183
11194
|
/**
|
|
11184
11195
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
11185
11196
|
*
|
|
@@ -11935,6 +11946,97 @@ function validateExpressionSource(src) {
|
|
|
11935
11946
|
return null;
|
|
11936
11947
|
}
|
|
11937
11948
|
/**
|
|
11949
|
+
* One power reading becomes a washer, dryer or dishwasher (D944 helper).
|
|
11950
|
+
*
|
|
11951
|
+
* Standby of the control board is under 5 W; a motor or a heater is far
|
|
11952
|
+
* above that, so 5 W is the line. A door lock or a short pump spike is not
|
|
11953
|
+
* a cycle, so running starts only after 30 s above the line.
|
|
11954
|
+
*
|
|
11955
|
+
* A wash, dry or dishwasher pause (soak, heat-wait, heater off between
|
|
11956
|
+
* bursts) lasts several minutes. Ending the cycle on the first dip would
|
|
11957
|
+
* report "finished" in the middle of the program, so the stop dwell is
|
|
11958
|
+
* 10 minutes on every type. The number is stored per type so one machine
|
|
11959
|
+
* can move later without moving the others.
|
|
11960
|
+
*/
|
|
11961
|
+
var APPLIANCE_TEMPLATE_ID = "appliance";
|
|
11962
|
+
var APPLIANCE_KINDS = [
|
|
11963
|
+
"washer",
|
|
11964
|
+
"dryer",
|
|
11965
|
+
"dishwasher"
|
|
11966
|
+
];
|
|
11967
|
+
DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher;
|
|
11968
|
+
/**
|
|
11969
|
+
* Statistics and integrals over a history read (D944).
|
|
11970
|
+
*
|
|
11971
|
+
* Pure: the same points always give the same answer, so a restart recomputes
|
|
11972
|
+
* rather than trusting a buffer. A gauge mean is time-weighted (value × ms),
|
|
11973
|
+
* never the mean of the samples. A hole with no held value is not integrated
|
|
11974
|
+
* as zero. A truncated read is not published.
|
|
11975
|
+
*/
|
|
11976
|
+
var STATISTIC_STATS = [
|
|
11977
|
+
"min",
|
|
11978
|
+
"max",
|
|
11979
|
+
"mean",
|
|
11980
|
+
"sum",
|
|
11981
|
+
"count",
|
|
11982
|
+
"change"
|
|
11983
|
+
];
|
|
11984
|
+
/**
|
|
11985
|
+
* The range a statistics or integral helper asks history for (D944).
|
|
11986
|
+
*
|
|
11987
|
+
* Calendar edges are the hub's timezone, never UTC midnight: a day is 23, 24
|
|
11988
|
+
* or 25 hours across a DST change. A tier is eligible only when its retention
|
|
11989
|
+
* is strictly longer than the longest that range can be. Forever qualifies.
|
|
11990
|
+
* Equal to a tier's retention is a refusal, not a short answer.
|
|
11991
|
+
*/
|
|
11992
|
+
var MINUTE_MS = 6e4;
|
|
11993
|
+
var HOUR_MS = 60 * MINUTE_MS;
|
|
11994
|
+
var DAY_MS = 24 * HOUR_MS;
|
|
11995
|
+
var ROLLING_SPANS = [
|
|
11996
|
+
"1h",
|
|
11997
|
+
"24h",
|
|
11998
|
+
"2d",
|
|
11999
|
+
"7d",
|
|
12000
|
+
"30d",
|
|
12001
|
+
"custom"
|
|
12002
|
+
];
|
|
12003
|
+
var CALENDAR_PERIODS = [
|
|
12004
|
+
"today",
|
|
12005
|
+
"yesterday",
|
|
12006
|
+
"this-week",
|
|
12007
|
+
"this-month"
|
|
12008
|
+
];
|
|
12009
|
+
var RESET_PERIODS = [
|
|
12010
|
+
"never",
|
|
12011
|
+
"daily",
|
|
12012
|
+
"weekly",
|
|
12013
|
+
"monthly"
|
|
12014
|
+
];
|
|
12015
|
+
5 * MINUTE_MS;
|
|
12016
|
+
24 * HOUR_MS, 2 * DAY_MS, 7 * DAY_MS, 30 * DAY_MS;
|
|
12017
|
+
7 * DAY_MS, 30 * DAY_MS, 365 * DAY_MS;
|
|
12018
|
+
var StatisticWindowSchema = discriminatedUnion("kind", [object({
|
|
12019
|
+
kind: literal("rolling"),
|
|
12020
|
+
span: _enum(ROLLING_SPANS),
|
|
12021
|
+
customMinutes: number().int().min(5).optional()
|
|
12022
|
+
}).check((payload) => {
|
|
12023
|
+
if (payload.value.span === "custom" && payload.value.customMinutes === void 0) payload.issues.push({
|
|
12024
|
+
code: "custom",
|
|
12025
|
+
message: "a custom range needs a duration in minutes",
|
|
12026
|
+
path: ["customMinutes"],
|
|
12027
|
+
input: payload.value
|
|
12028
|
+
});
|
|
12029
|
+
if (payload.value.span !== "custom" && payload.value.customMinutes !== void 0) payload.issues.push({
|
|
12030
|
+
code: "custom",
|
|
12031
|
+
message: "only a custom range carries a duration",
|
|
12032
|
+
path: ["customMinutes"],
|
|
12033
|
+
input: payload.value
|
|
12034
|
+
});
|
|
12035
|
+
}), object({
|
|
12036
|
+
kind: literal("calendar"),
|
|
12037
|
+
period: _enum(CALENDAR_PERIODS)
|
|
12038
|
+
})]);
|
|
12039
|
+
/**
|
|
11938
12040
|
* A composition source identity: `(addonId, stableId)`, never a numeric device
|
|
11939
12041
|
* id. Split out so helper schemas can name it without a cycle through
|
|
11940
12042
|
* `composition.ts` (D659).
|
|
@@ -11990,14 +12092,37 @@ var HelperMemberSchema = object({
|
|
|
11990
12092
|
cap: string().min(1),
|
|
11991
12093
|
fieldPath: string().min(1)
|
|
11992
12094
|
});
|
|
11993
|
-
var HelperSpecSchema = discriminatedUnion("kind", [
|
|
11994
|
-
|
|
11995
|
-
|
|
11996
|
-
|
|
11997
|
-
|
|
11998
|
-
|
|
11999
|
-
|
|
12000
|
-
|
|
12095
|
+
var HelperSpecSchema = discriminatedUnion("kind", [
|
|
12096
|
+
object({
|
|
12097
|
+
kind: literal("group"),
|
|
12098
|
+
templateId: GroupTemplateIdSchema,
|
|
12099
|
+
aggregate: AggregateReducerSchema,
|
|
12100
|
+
members: array(HelperMemberSchema).min(1).max(64),
|
|
12101
|
+
/** Actuator groups only. Readings leave this unset. */
|
|
12102
|
+
active: ActiveCriterionSchema.optional()
|
|
12103
|
+
}),
|
|
12104
|
+
object({
|
|
12105
|
+
kind: literal("appliance"),
|
|
12106
|
+
templateId: literal(APPLIANCE_TEMPLATE_ID),
|
|
12107
|
+
appliance: _enum(APPLIANCE_KINDS),
|
|
12108
|
+
thresholdWatts: number().positive(),
|
|
12109
|
+
startDwellMs: number().int().nonnegative(),
|
|
12110
|
+
stopDwellMs: number().int().nonnegative(),
|
|
12111
|
+
member: HelperMemberSchema
|
|
12112
|
+
}),
|
|
12113
|
+
object({
|
|
12114
|
+
kind: literal("statistic"),
|
|
12115
|
+
stat: _enum(STATISTIC_STATS),
|
|
12116
|
+
window: StatisticWindowSchema,
|
|
12117
|
+
source: HelperMemberSchema
|
|
12118
|
+
}),
|
|
12119
|
+
object({
|
|
12120
|
+
kind: literal("integral"),
|
|
12121
|
+
reset: _enum(RESET_PERIODS),
|
|
12122
|
+
output: _enum(["energy", "meter"]),
|
|
12123
|
+
source: HelperMemberSchema
|
|
12124
|
+
})
|
|
12125
|
+
]);
|
|
12001
12126
|
/** A composed device's stableId is this prefix plus the block id. */
|
|
12002
12127
|
var COMPOSED_DEVICE_STABLE_ID_PREFIX = "composed-";
|
|
12003
12128
|
/** Longest snippet a `code` source may carry (slice 4). */
|
|
@@ -12071,6 +12196,26 @@ var CompositionFieldSourceSchema = discriminatedUnion("kind", [
|
|
|
12071
12196
|
"omit",
|
|
12072
12197
|
"offline"
|
|
12073
12198
|
])
|
|
12199
|
+
}),
|
|
12200
|
+
object({
|
|
12201
|
+
kind: literal("series"),
|
|
12202
|
+
read: CompositionFieldReadSchema,
|
|
12203
|
+
/** `value` is the statistic or the integral. The others are the gap counts. */
|
|
12204
|
+
publish: _enum([
|
|
12205
|
+
"value",
|
|
12206
|
+
"included",
|
|
12207
|
+
"excluded",
|
|
12208
|
+
"total"
|
|
12209
|
+
]),
|
|
12210
|
+
/**
|
|
12211
|
+
* What an unanswered `value` does. Counts ignore this. `offline` leaves the
|
|
12212
|
+
* device unseeded until history answers, so a restart cannot publish 0.
|
|
12213
|
+
*/
|
|
12214
|
+
empty: _enum([
|
|
12215
|
+
"null",
|
|
12216
|
+
"omit",
|
|
12217
|
+
"offline"
|
|
12218
|
+
])
|
|
12074
12219
|
})
|
|
12075
12220
|
]);
|
|
12076
12221
|
var CompositionCommandTargetSchema = discriminatedUnion("kind", [object({
|
|
@@ -18385,7 +18530,8 @@ var CompositionProblemSchema = object({
|
|
|
18385
18530
|
"native-capability-replace",
|
|
18386
18531
|
"mixed-quantity",
|
|
18387
18532
|
"helper-mismatch",
|
|
18388
|
-
"member-constraint"
|
|
18533
|
+
"member-constraint",
|
|
18534
|
+
"retention"
|
|
18389
18535
|
]),
|
|
18390
18536
|
path: string(),
|
|
18391
18537
|
message: string()
|
|
@@ -18625,7 +18771,7 @@ Object.freeze({
|
|
|
18625
18771
|
* One catalog row per base reading a group helper can build (D944 §3).
|
|
18626
18772
|
* Data, not a form default written into the block.
|
|
18627
18773
|
*/
|
|
18628
|
-
var NOW = {
|
|
18774
|
+
var NOW$1 = {
|
|
18629
18775
|
fieldPath: "lastFetchedAt",
|
|
18630
18776
|
expr: "now"
|
|
18631
18777
|
};
|
|
@@ -18671,7 +18817,7 @@ var GROUP_TEMPLATES = [
|
|
|
18671
18817
|
quantity: "temperature",
|
|
18672
18818
|
defaultAggregate: "mean",
|
|
18673
18819
|
empty: "null",
|
|
18674
|
-
companions: [NOW]
|
|
18820
|
+
companions: [NOW$1]
|
|
18675
18821
|
}),
|
|
18676
18822
|
numeric({
|
|
18677
18823
|
id: "humidity",
|
|
@@ -18682,7 +18828,7 @@ var GROUP_TEMPLATES = [
|
|
|
18682
18828
|
quantity: "humidity",
|
|
18683
18829
|
defaultAggregate: "mean",
|
|
18684
18830
|
empty: "null",
|
|
18685
|
-
companions: [NOW]
|
|
18831
|
+
companions: [NOW$1]
|
|
18686
18832
|
}),
|
|
18687
18833
|
numeric({
|
|
18688
18834
|
id: "pressure",
|
|
@@ -18693,7 +18839,7 @@ var GROUP_TEMPLATES = [
|
|
|
18693
18839
|
quantity: "pressure",
|
|
18694
18840
|
defaultAggregate: "mean",
|
|
18695
18841
|
empty: "null",
|
|
18696
|
-
companions: [NOW]
|
|
18842
|
+
companions: [NOW$1]
|
|
18697
18843
|
}),
|
|
18698
18844
|
numeric({
|
|
18699
18845
|
id: "illuminance",
|
|
@@ -18704,7 +18850,7 @@ var GROUP_TEMPLATES = [
|
|
|
18704
18850
|
quantity: "illuminance",
|
|
18705
18851
|
defaultAggregate: "mean",
|
|
18706
18852
|
empty: "null",
|
|
18707
|
-
companions: [NOW]
|
|
18853
|
+
companions: [NOW$1]
|
|
18708
18854
|
}),
|
|
18709
18855
|
numeric({
|
|
18710
18856
|
id: "power",
|
|
@@ -18715,7 +18861,7 @@ var GROUP_TEMPLATES = [
|
|
|
18715
18861
|
quantity: "power",
|
|
18716
18862
|
defaultAggregate: "sum",
|
|
18717
18863
|
empty: "omit",
|
|
18718
|
-
companions: [NOW]
|
|
18864
|
+
companions: [NOW$1]
|
|
18719
18865
|
}),
|
|
18720
18866
|
numeric({
|
|
18721
18867
|
id: "energy",
|
|
@@ -18726,7 +18872,7 @@ var GROUP_TEMPLATES = [
|
|
|
18726
18872
|
quantity: "energy",
|
|
18727
18873
|
defaultAggregate: "sum",
|
|
18728
18874
|
empty: "omit",
|
|
18729
|
-
companions: [NOW]
|
|
18875
|
+
companions: [NOW$1]
|
|
18730
18876
|
}),
|
|
18731
18877
|
numeric({
|
|
18732
18878
|
id: "battery",
|
|
@@ -18761,7 +18907,7 @@ var GROUP_TEMPLATES = [
|
|
|
18761
18907
|
quantity: "device",
|
|
18762
18908
|
defaultAggregate: "mean",
|
|
18763
18909
|
empty: "null",
|
|
18764
|
-
companions: [NOW]
|
|
18910
|
+
companions: [NOW$1]
|
|
18765
18911
|
}),
|
|
18766
18912
|
binary({
|
|
18767
18913
|
id: "motion",
|
|
@@ -18890,6 +19036,7 @@ function actuator(input) {
|
|
|
18890
19036
|
}
|
|
18891
19037
|
new Map(GROUP_TEMPLATES.map((template) => [template.id, template]));
|
|
18892
19038
|
DeviceFeature.LightColorRgb, DeviceFeature.LightColorHsv, DeviceFeature.LightColorMired;
|
|
19039
|
+
DeviceType.Camera;
|
|
18893
19040
|
`${COMPOSED_DEVICE_STABLE_ID_PREFIX}`;
|
|
18894
19041
|
/**
|
|
18895
19042
|
* What a composition may BUILD on a device type (G2, D676): the caps a new
|
|
@@ -59715,6 +59862,11 @@ DeviceType.Lock, method(object({
|
|
|
59715
59862
|
kind: "mutation",
|
|
59716
59863
|
auth: "protected"
|
|
59717
59864
|
});
|
|
59865
|
+
object({
|
|
59866
|
+
value: number().nullable().meta(readingMeta("device", { label: "Total" })),
|
|
59867
|
+
lastFetchedAt: number()
|
|
59868
|
+
});
|
|
59869
|
+
DeviceType.Sensor;
|
|
59718
59870
|
/**
|
|
59719
59871
|
* Media-player cap. Models HA `media_player.*` (Sonos, Chromecast,
|
|
59720
59872
|
* Apple TV, Spotify, Roku, generic OTT receivers, …) on
|
|
@@ -61632,7 +61784,7 @@ object({
|
|
|
61632
61784
|
/** Ms epoch when the slice was last updated. */
|
|
61633
61785
|
lastFetchedAt: number()
|
|
61634
61786
|
});
|
|
61635
|
-
DeviceType.Sensor;
|
|
61787
|
+
DeviceType.Sensor, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher;
|
|
61636
61788
|
/**
|
|
61637
61789
|
* Presence cap. Models HA `person.*` and `device_tracker.*` entities
|
|
61638
61790
|
* on `DeviceType.Presence`. Read-only — no setters: presence is
|
|
@@ -62079,7 +62231,7 @@ object({
|
|
|
62079
62231
|
phase: string().nullable()
|
|
62080
62232
|
});
|
|
62081
62233
|
Object.values(DeviceType);
|
|
62082
|
-
DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
62234
|
+
DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
62083
62235
|
DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, method(object({ deviceId: number().int().nonnegative() }), object({ success: literal(true) }), {
|
|
62084
62236
|
kind: "mutation",
|
|
62085
62237
|
auth: "admin"
|
|
@@ -65811,7 +65963,7 @@ method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" })
|
|
|
65811
65963
|
auth: "admin"
|
|
65812
65964
|
});
|
|
65813
65965
|
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
65814
|
-
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;
|
|
65966
|
+
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;
|
|
65815
65967
|
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
65816
65968
|
DeviceRole.BinarySensor, DeviceRole.MotionSensor;
|
|
65817
65969
|
new Set(CAP_NAMES);
|
|
@@ -65962,7 +66114,7 @@ var AccessoryKind = {
|
|
|
65962
66114
|
PrivacyMask: DeviceRole.PrivacyMask
|
|
65963
66115
|
};
|
|
65964
66116
|
AccessoryKind.Siren, AccessoryKind.Floodlight, AccessoryKind.Spotlight, AccessoryKind.PirSensor, AccessoryKind.Chime, AccessoryKind.Autotrack, AccessoryKind.Nightvision, AccessoryKind.PrivacyMask;
|
|
65965
|
-
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;
|
|
66117
|
+
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;
|
|
65966
66118
|
new Set(Object.values(DeviceType));
|
|
65967
66119
|
Object.freeze({
|
|
65968
66120
|
"accessories.getStatus": {
|
|
@@ -70151,6 +70303,13 @@ Object.freeze({
|
|
|
70151
70303
|
access: "create",
|
|
70152
70304
|
role: "admin"
|
|
70153
70305
|
},
|
|
70306
|
+
"meter.getStatus": {
|
|
70307
|
+
capName: "meter",
|
|
70308
|
+
capScope: "device",
|
|
70309
|
+
addonId: null,
|
|
70310
|
+
access: "view",
|
|
70311
|
+
role: "viewer"
|
|
70312
|
+
},
|
|
70154
70313
|
"metricsProvider.collectSnapshot": {
|
|
70155
70314
|
capName: "metrics-provider",
|
|
70156
70315
|
capScope: "system",
|
|
@@ -78249,7 +78408,39 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
78249
78408
|
phrase: t("When {device} finishes", "Quando {device} finisce"),
|
|
78250
78409
|
icon: "square"
|
|
78251
78410
|
}
|
|
78252
|
-
}
|
|
78411
|
+
},
|
|
78412
|
+
overrides: { byType: {
|
|
78413
|
+
[DeviceType.Washer]: {
|
|
78414
|
+
state: { running: {
|
|
78415
|
+
whenTrue: t("When the washing machine starts", "Quando la lavatrice inizia"),
|
|
78416
|
+
whenFalse: t("When the washing machine has finished", "Quando la lavatrice ha finito")
|
|
78417
|
+
} },
|
|
78418
|
+
events: {
|
|
78419
|
+
onStarted: { phrase: t("When the washing machine starts", "Quando la lavatrice inizia") },
|
|
78420
|
+
onFinished: { phrase: t("When the washing machine has finished", "Quando la lavatrice ha finito") }
|
|
78421
|
+
}
|
|
78422
|
+
},
|
|
78423
|
+
[DeviceType.Dryer]: {
|
|
78424
|
+
state: { running: {
|
|
78425
|
+
whenTrue: t("When the dryer starts", "Quando l'asciugatrice inizia"),
|
|
78426
|
+
whenFalse: t("When the dryer has finished", "Quando l'asciugatrice ha finito")
|
|
78427
|
+
} },
|
|
78428
|
+
events: {
|
|
78429
|
+
onStarted: { phrase: t("When the dryer starts", "Quando l'asciugatrice inizia") },
|
|
78430
|
+
onFinished: { phrase: t("When the dryer has finished", "Quando l'asciugatrice ha finito") }
|
|
78431
|
+
}
|
|
78432
|
+
},
|
|
78433
|
+
[DeviceType.Dishwasher]: {
|
|
78434
|
+
state: { running: {
|
|
78435
|
+
whenTrue: t("When the dishwasher starts", "Quando la lavastoviglie inizia"),
|
|
78436
|
+
whenFalse: t("When the dishwasher has finished", "Quando la lavastoviglie ha finito")
|
|
78437
|
+
} },
|
|
78438
|
+
events: {
|
|
78439
|
+
onStarted: { phrase: t("When the dishwasher starts", "Quando la lavastoviglie inizia") },
|
|
78440
|
+
onFinished: { phrase: t("When the dishwasher has finished", "Quando la lavastoviglie ha finito") }
|
|
78441
|
+
}
|
|
78442
|
+
}
|
|
78443
|
+
} }
|
|
78253
78444
|
},
|
|
78254
78445
|
update: {
|
|
78255
78446
|
scope: "device",
|
|
@@ -79077,6 +79268,17 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79077
79268
|
}],
|
|
79078
79269
|
events: { onMotionChanged: { notOperatorFacing: "the `detected` state trigger phrases both edges, from the mirror that survives a dropped event (D49)" } }
|
|
79079
79270
|
},
|
|
79271
|
+
meter: {
|
|
79272
|
+
scope: "device",
|
|
79273
|
+
noun: t("Meter", "Contatore"),
|
|
79274
|
+
state: [{
|
|
79275
|
+
kind: "numeric",
|
|
79276
|
+
field: "value",
|
|
79277
|
+
quantity: t("the total", "il totale"),
|
|
79278
|
+
label: t("Total", "Totale"),
|
|
79279
|
+
icon: "gauge"
|
|
79280
|
+
}]
|
|
79281
|
+
},
|
|
79080
79282
|
"numeric-sensor": {
|
|
79081
79283
|
scope: "device",
|
|
79082
79284
|
noun: t("Sensor", "Sensore"),
|
|
@@ -79549,8 +79751,47 @@ function projectAction(cap, action) {
|
|
|
79549
79751
|
};
|
|
79550
79752
|
}
|
|
79551
79753
|
Object.entries(CAP_VOCABULARY_BY_NAME).flatMap(([cap, entry]) => entry.scope === "device" ? (entry.actions ?? []).map((a) => projectAction(cap, a)) : []);
|
|
79552
|
-
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;
|
|
79754
|
+
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;
|
|
79553
79755
|
DeviceFeature.BatteryOperated;
|
|
79756
|
+
DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher;
|
|
79757
|
+
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.";
|
|
79758
|
+
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.";
|
|
79759
|
+
var ALEXA_REASON = "Alexa has no laundry category in this export, and neither power nor running has an Alexa interface.";
|
|
79760
|
+
var GOOGLE_REASON = "Google WASHER, DRYER and DISHWASHER require RunCycle. A power threshold is not that trait, and this export does not publish RunCycle.";
|
|
79761
|
+
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.";
|
|
79762
|
+
function withheld(reason) {
|
|
79763
|
+
return {
|
|
79764
|
+
[DeviceType.Washer]: {
|
|
79765
|
+
exported: false,
|
|
79766
|
+
reason
|
|
79767
|
+
},
|
|
79768
|
+
[DeviceType.Dryer]: {
|
|
79769
|
+
exported: false,
|
|
79770
|
+
reason
|
|
79771
|
+
},
|
|
79772
|
+
[DeviceType.Dishwasher]: {
|
|
79773
|
+
exported: false,
|
|
79774
|
+
reason
|
|
79775
|
+
}
|
|
79776
|
+
};
|
|
79777
|
+
}
|
|
79778
|
+
function offered(received) {
|
|
79779
|
+
return {
|
|
79780
|
+
[DeviceType.Washer]: {
|
|
79781
|
+
exported: true,
|
|
79782
|
+
as: received
|
|
79783
|
+
},
|
|
79784
|
+
[DeviceType.Dryer]: {
|
|
79785
|
+
exported: true,
|
|
79786
|
+
as: received
|
|
79787
|
+
},
|
|
79788
|
+
[DeviceType.Dishwasher]: {
|
|
79789
|
+
exported: true,
|
|
79790
|
+
as: received
|
|
79791
|
+
}
|
|
79792
|
+
};
|
|
79793
|
+
}
|
|
79794
|
+
offered(HA_AS), withheld(HOMEKIT_REASON), withheld(ALEXA_REASON), withheld(GOOGLE_REASON), withheld(MATTER_REASON);
|
|
79554
79795
|
Object.freeze({
|
|
79555
79796
|
"accessories.getStatus": [{
|
|
79556
79797
|
name: "deviceId",
|
|
@@ -80727,6 +80968,11 @@ Object.freeze({
|
|
|
80727
80968
|
form: "single",
|
|
80728
80969
|
optional: false
|
|
80729
80970
|
}],
|
|
80971
|
+
"meter.getStatus": [{
|
|
80972
|
+
name: "deviceId",
|
|
80973
|
+
form: "single",
|
|
80974
|
+
optional: false
|
|
80975
|
+
}],
|
|
80730
80976
|
"motion.getStatus": [{
|
|
80731
80977
|
name: "deviceId",
|
|
80732
80978
|
form: "single",
|
|
@@ -82334,7 +82580,6 @@ Object.freeze({
|
|
|
82334
82580
|
"network-access": "ingress",
|
|
82335
82581
|
"smtp-provider": "email"
|
|
82336
82582
|
});
|
|
82337
|
-
DeviceType.Camera;
|
|
82338
82583
|
/**
|
|
82339
82584
|
* A saved Customize assignment (D936). The schema is the type: callers use
|
|
82340
82585
|
* `z.infer`, they do not restate the shape.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { S as e, d as t, u as n, v as r } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.mjs";
|
|
2
2
|
import { n as i, r as a, t as o } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
|
|
3
|
-
import { _ as s, g as c } from "./responsive-
|
|
3
|
+
import { _ as s, g as c } from "./responsive-DEe2tyvb.mjs";
|
|
4
4
|
var l = s("chevron-down", [["path", {
|
|
5
5
|
d: "m6 9 6 6 6-6",
|
|
6
6
|
key: "qrunsl"
|
package/dist/remoteEntry.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-
|
|
1
|
+
import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-BVMDXJrt.mjs";
|
|
2
2
|
export { t as get, e as init };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { S as e, d as t, g as n, i as r, l as i, n as a, r as o, u as s, v as c, y as l } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.mjs";
|
|
2
2
|
import "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
|
|
3
|
-
import {
|
|
3
|
+
import { C as u } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B5mcgboO.mjs";
|
|
4
4
|
//#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
|
|
5
5
|
e();
|
|
6
6
|
var d = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), f = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), p = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), m = (e) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { S as e, g as t, l as n, v as r } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.mjs";
|
|
2
2
|
import { n as i } from "./ui-text-BqZa5BNK.mjs";
|
|
3
|
-
import { _ as a } from "./responsive-
|
|
3
|
+
import { _ as a } from "./responsive-DEe2tyvb.mjs";
|
|
4
4
|
var o = a("camera", [["path", {
|
|
5
5
|
d: "M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",
|
|
6
6
|
key: "18u6gg"
|
|
@@ -2753,7 +2753,7 @@ async function rr(e) {
|
|
|
2753
2753
|
}
|
|
2754
2754
|
}
|
|
2755
2755
|
async function ir() {
|
|
2756
|
-
return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-
|
|
2756
|
+
return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-Dm-CsmsB.mjs")).catch((e) => {
|
|
2757
2757
|
throw tr = void 0, e;
|
|
2758
2758
|
}), tr;
|
|
2759
2759
|
}
|