@camstack/addon-model-studio 1.1.297 → 1.1.298
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-D_HfgGVx.mjs → MotionZonesSettings-B9K4WWi1.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-lrZujhrs.mjs → PrivacyMaskSettings-onRhNbik.mjs} +4 -4
- package/dist/{SceneMonitorEditor-D_k9w6y8.mjs → SceneMonitorEditor-DKUa9q8G.mjs} +3 -3
- package/dist/_stub.js +13 -13
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-U1Dq0t4d.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-DeNyK8AH.mjs} +3 -3
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Bkw5bZBe.mjs +26 -0
- package/dist/{hostInit-lgxajgO5.mjs → hostInit-ChdJLKG2.mjs} +2 -2
- package/dist/model-studio.addon.js +446 -10
- package/dist/model-studio.addon.mjs +446 -10
- package/dist/{player-overlays-BErbmrZZ.mjs → player-overlays-DAdFiwTN.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-BaiZrRiv.mjs → responsive-D_nfEXa_.mjs} +1 -1
- package/dist/{scene-monitor-copy-DSS-RbWQ.mjs → scene-monitor-copy-CnNe3kRP.mjs} +1 -1
- package/dist/{square-CjAc_uJa.mjs → square-DqNJ_s4z.mjs} +1 -1
- package/dist/{trash-2--He_-Iao.mjs → trash-2-GWwk-1z0.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-ZIEWPFwu.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-TjjXHsNj.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-DX4Jz8LK.mjs +0 -26
|
@@ -5803,7 +5803,7 @@ var ZodIssueCode = {
|
|
|
5803
5803
|
var ZodFirstPartyTypeKind;
|
|
5804
5804
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5805
5805
|
//#endregion
|
|
5806
|
-
//#region ../types/dist/sleep-
|
|
5806
|
+
//#region ../types/dist/sleep-B81gwQuR.mjs
|
|
5807
5807
|
/**
|
|
5808
5808
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5809
5809
|
* window to float samples (D455).
|
|
@@ -8329,6 +8329,53 @@ var READING_QUANTITIES = [
|
|
|
8329
8329
|
];
|
|
8330
8330
|
var ReadingQuantitySchema = _enum(READING_QUANTITIES);
|
|
8331
8331
|
new Set(READING_QUANTITIES);
|
|
8332
|
+
/**
|
|
8333
|
+
* Stored unit symbol for a quantity. `none` means the number is dimensionless
|
|
8334
|
+
* (or an index / ratio / count). `device` means the cap has no single unit.
|
|
8335
|
+
*/
|
|
8336
|
+
var QUANTITY_BASE = {
|
|
8337
|
+
temperature: "°C",
|
|
8338
|
+
pressure: "hPa",
|
|
8339
|
+
speed: "m/s",
|
|
8340
|
+
precipitation: "mm",
|
|
8341
|
+
"precipitation-rate": "mm/h",
|
|
8342
|
+
length: "m",
|
|
8343
|
+
area: "m²",
|
|
8344
|
+
illuminance: "lx",
|
|
8345
|
+
irradiance: "W/m²",
|
|
8346
|
+
power: "W",
|
|
8347
|
+
energy: "kWh",
|
|
8348
|
+
voltage: "V",
|
|
8349
|
+
current: "A",
|
|
8350
|
+
"apparent-power": "VA",
|
|
8351
|
+
humidity: "%",
|
|
8352
|
+
percentage: "%",
|
|
8353
|
+
"concentration-volume": "ppm",
|
|
8354
|
+
"concentration-mass": "µg/m³",
|
|
8355
|
+
"concentration-ppb": "ppb",
|
|
8356
|
+
volume: "L",
|
|
8357
|
+
duration: "s",
|
|
8358
|
+
"duration-ms": "ms",
|
|
8359
|
+
information: "B",
|
|
8360
|
+
"sound-level": "dBFS",
|
|
8361
|
+
"signal-level": "dBm",
|
|
8362
|
+
"colour-temperature": "mired",
|
|
8363
|
+
angle: "°",
|
|
8364
|
+
bitrate: "kbps",
|
|
8365
|
+
rate: "fps",
|
|
8366
|
+
mass: "kg",
|
|
8367
|
+
index: "none",
|
|
8368
|
+
ratio: "none",
|
|
8369
|
+
count: "none",
|
|
8370
|
+
none: "none",
|
|
8371
|
+
device: "device"
|
|
8372
|
+
};
|
|
8373
|
+
/** The stored unit, or `undefined` when the quantity has no unit symbol. */
|
|
8374
|
+
function baseUnitOf(quantity) {
|
|
8375
|
+
const symbol = QUANTITY_BASE[quantity];
|
|
8376
|
+
if (symbol === "none" || symbol === "device") return void 0;
|
|
8377
|
+
return symbol;
|
|
8378
|
+
}
|
|
8332
8379
|
function readingMeta(quantity, extras) {
|
|
8333
8380
|
return {
|
|
8334
8381
|
quantity,
|
|
@@ -8959,6 +9006,7 @@ var CAP_NAMES = Object.freeze([
|
|
|
8959
9006
|
"filesystem-browse",
|
|
8960
9007
|
"flood",
|
|
8961
9008
|
"gas",
|
|
9009
|
+
"group-status",
|
|
8962
9010
|
"heating-valve",
|
|
8963
9011
|
"humidifier",
|
|
8964
9012
|
"humidity-sensor",
|
|
@@ -9777,6 +9825,20 @@ Object.freeze({
|
|
|
9777
9825
|
"path": "detected",
|
|
9778
9826
|
"valueType": "boolean"
|
|
9779
9827
|
}],
|
|
9828
|
+
"group-status": [
|
|
9829
|
+
{
|
|
9830
|
+
"path": "included",
|
|
9831
|
+
"valueType": "number"
|
|
9832
|
+
},
|
|
9833
|
+
{
|
|
9834
|
+
"path": "excluded",
|
|
9835
|
+
"valueType": "number"
|
|
9836
|
+
},
|
|
9837
|
+
{
|
|
9838
|
+
"path": "total",
|
|
9839
|
+
"valueType": "number"
|
|
9840
|
+
}
|
|
9841
|
+
],
|
|
9780
9842
|
"heating-valve": [{
|
|
9781
9843
|
"path": "position",
|
|
9782
9844
|
"valueType": "number"
|
|
@@ -11108,7 +11170,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
11108
11170
|
return DeviceRole;
|
|
11109
11171
|
}({});
|
|
11110
11172
|
//#endregion
|
|
11111
|
-
//#region ../types/dist/composition-
|
|
11173
|
+
//#region ../types/dist/composition-B85l9j1M.mjs
|
|
11112
11174
|
/**
|
|
11113
11175
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
11114
11176
|
*
|
|
@@ -11863,15 +11925,67 @@ function validateExpressionSource(src) {
|
|
|
11863
11925
|
}
|
|
11864
11926
|
return null;
|
|
11865
11927
|
}
|
|
11866
|
-
/**
|
|
11867
|
-
|
|
11868
|
-
|
|
11869
|
-
|
|
11928
|
+
/**
|
|
11929
|
+
* A composition source identity: `(addonId, stableId)`, never a numeric device
|
|
11930
|
+
* id. Split out so helper schemas can name it without a cycle through
|
|
11931
|
+
* `composition.ts` (D659).
|
|
11932
|
+
*/
|
|
11870
11933
|
var CompositionSourceRefSchema = object({
|
|
11871
11934
|
/** The owning addon; `stableId` is unique only within it. */
|
|
11872
11935
|
addonId: string().min(1),
|
|
11873
11936
|
stableId: string().min(1)
|
|
11874
11937
|
});
|
|
11938
|
+
var GROUP_TEMPLATE_IDS = [
|
|
11939
|
+
"temperature",
|
|
11940
|
+
"humidity",
|
|
11941
|
+
"pressure",
|
|
11942
|
+
"illuminance",
|
|
11943
|
+
"power",
|
|
11944
|
+
"energy",
|
|
11945
|
+
"battery",
|
|
11946
|
+
"numeric",
|
|
11947
|
+
"motion",
|
|
11948
|
+
"contact",
|
|
11949
|
+
"leak",
|
|
11950
|
+
"smoke",
|
|
11951
|
+
"occupancy",
|
|
11952
|
+
"binary"
|
|
11953
|
+
];
|
|
11954
|
+
var NUMERIC_AGGREGATES = [
|
|
11955
|
+
"mean",
|
|
11956
|
+
"median",
|
|
11957
|
+
"min",
|
|
11958
|
+
"max",
|
|
11959
|
+
"sum"
|
|
11960
|
+
];
|
|
11961
|
+
var BINARY_AGGREGATES = ["any", "all"];
|
|
11962
|
+
var AGGREGATE_REDUCERS = [
|
|
11963
|
+
"mean",
|
|
11964
|
+
"median",
|
|
11965
|
+
"min",
|
|
11966
|
+
"max",
|
|
11967
|
+
"sum",
|
|
11968
|
+
"any",
|
|
11969
|
+
"all"
|
|
11970
|
+
];
|
|
11971
|
+
var GroupTemplateIdSchema = _enum(GROUP_TEMPLATE_IDS);
|
|
11972
|
+
var AggregateReducerSchema = _enum(AGGREGATE_REDUCERS);
|
|
11973
|
+
/** One member. The field is stored so occupancy can name motion or binary. */
|
|
11974
|
+
var HelperMemberSchema = object({
|
|
11975
|
+
source: CompositionSourceRefSchema,
|
|
11976
|
+
cap: string().min(1),
|
|
11977
|
+
fieldPath: string().min(1)
|
|
11978
|
+
});
|
|
11979
|
+
var HelperSpecSchema = discriminatedUnion("kind", [object({
|
|
11980
|
+
kind: literal("group"),
|
|
11981
|
+
templateId: GroupTemplateIdSchema,
|
|
11982
|
+
aggregate: AggregateReducerSchema,
|
|
11983
|
+
members: array(HelperMemberSchema).min(1).max(64)
|
|
11984
|
+
})]);
|
|
11985
|
+
/** A composed device's stableId is this prefix plus the block id. */
|
|
11986
|
+
var COMPOSED_DEVICE_STABLE_ID_PREFIX = "composed-";
|
|
11987
|
+
/** Longest snippet a `code` source may carry (slice 4). */
|
|
11988
|
+
var MAX_COMPOSITION_CODE_LENGTH = 2e4;
|
|
11875
11989
|
/** One field of one capability of one source device. */
|
|
11876
11990
|
var CompositionFieldReadSchema = object({
|
|
11877
11991
|
source: CompositionSourceRefSchema,
|
|
@@ -11915,7 +12029,33 @@ var CompositionCodeSourceSchema = object({
|
|
|
11915
12029
|
var CompositionFieldSourceSchema = discriminatedUnion("kind", [
|
|
11916
12030
|
CompositionFromSourceSchema,
|
|
11917
12031
|
CompositionExpressionSourceSchema,
|
|
11918
|
-
CompositionCodeSourceSchema
|
|
12032
|
+
CompositionCodeSourceSchema,
|
|
12033
|
+
object({
|
|
12034
|
+
kind: literal("aggregate"),
|
|
12035
|
+
reducer: _enum([
|
|
12036
|
+
"mean",
|
|
12037
|
+
"median",
|
|
12038
|
+
"min",
|
|
12039
|
+
"max",
|
|
12040
|
+
"sum",
|
|
12041
|
+
"any",
|
|
12042
|
+
"all"
|
|
12043
|
+
]),
|
|
12044
|
+
reads: array(CompositionFieldReadSchema).min(1).max(64),
|
|
12045
|
+
/** `value` is the reading; the others are the member counts. */
|
|
12046
|
+
publish: _enum([
|
|
12047
|
+
"value",
|
|
12048
|
+
"included",
|
|
12049
|
+
"excluded",
|
|
12050
|
+
"total"
|
|
12051
|
+
]),
|
|
12052
|
+
/** What a `value` publish does when nobody is included. Counts ignore this. */
|
|
12053
|
+
empty: _enum([
|
|
12054
|
+
"null",
|
|
12055
|
+
"omit",
|
|
12056
|
+
"offline"
|
|
12057
|
+
])
|
|
12058
|
+
})
|
|
11919
12059
|
]);
|
|
11920
12060
|
var CompositionCommandTargetSchema = discriminatedUnion("kind", [object({
|
|
11921
12061
|
kind: literal("forward"),
|
|
@@ -11961,7 +12101,13 @@ var CompositionSchema = object({
|
|
|
11961
12101
|
kind: literal("existing"),
|
|
11962
12102
|
device: CompositionSourceRefSchema
|
|
11963
12103
|
})]),
|
|
11964
|
-
features: array(CompositionFeatureSchema).min(1).max(16)
|
|
12104
|
+
features: array(CompositionFeatureSchema).min(1).max(16),
|
|
12105
|
+
/**
|
|
12106
|
+
* Present when the block is a helper template. Absent on a free
|
|
12107
|
+
* composition (the room example, device 4603). The editor reads this,
|
|
12108
|
+
* never the compiled features.
|
|
12109
|
+
*/
|
|
12110
|
+
helper: HelperSpecSchema.optional()
|
|
11965
12111
|
}).superRefine((composition, ctx) => {
|
|
11966
12112
|
const seen = /* @__PURE__ */ new Set();
|
|
11967
12113
|
composition.features.forEach((feature, index) => {
|
|
@@ -18220,7 +18366,10 @@ var CompositionProblemSchema = object({
|
|
|
18220
18366
|
"target-missing",
|
|
18221
18367
|
"target-unreadable",
|
|
18222
18368
|
"not-replaceable",
|
|
18223
|
-
"native-capability-replace"
|
|
18369
|
+
"native-capability-replace",
|
|
18370
|
+
"mixed-quantity",
|
|
18371
|
+
"helper-mismatch",
|
|
18372
|
+
"member-constraint"
|
|
18224
18373
|
]),
|
|
18225
18374
|
path: string(),
|
|
18226
18375
|
message: string()
|
|
@@ -18241,7 +18390,8 @@ var CompositionUnavailableModeSchema = _enum([
|
|
|
18241
18390
|
"null",
|
|
18242
18391
|
"offline",
|
|
18243
18392
|
"unknown",
|
|
18244
|
-
"release"
|
|
18393
|
+
"release",
|
|
18394
|
+
"omit"
|
|
18245
18395
|
]);
|
|
18246
18396
|
/**
|
|
18247
18397
|
* `derived` reads a source · `clock` reads only `now`, recomputed when a sibling
|
|
@@ -18455,6 +18605,235 @@ Object.freeze({
|
|
|
18455
18605
|
result: ["number", "null"]
|
|
18456
18606
|
}
|
|
18457
18607
|
});
|
|
18608
|
+
/**
|
|
18609
|
+
* One catalog row per base reading a group helper can build (D944 §3).
|
|
18610
|
+
* Data, not a form default written into the block.
|
|
18611
|
+
*/
|
|
18612
|
+
var NOW = {
|
|
18613
|
+
fieldPath: "lastFetchedAt",
|
|
18614
|
+
expr: "now"
|
|
18615
|
+
};
|
|
18616
|
+
var CHANGED = {
|
|
18617
|
+
fieldPath: "lastChangedAt",
|
|
18618
|
+
expr: "now"
|
|
18619
|
+
};
|
|
18620
|
+
function numeric(input) {
|
|
18621
|
+
return {
|
|
18622
|
+
...input,
|
|
18623
|
+
family: "numeric",
|
|
18624
|
+
deviceType: DeviceType.Sensor,
|
|
18625
|
+
memberDeviceType: DeviceType.Sensor,
|
|
18626
|
+
baseUnit: baseUnitOf(input.quantity),
|
|
18627
|
+
aggregates: NUMERIC_AGGREGATES,
|
|
18628
|
+
accept: [{
|
|
18629
|
+
cap: input.outputCap,
|
|
18630
|
+
fieldPath: input.outputField
|
|
18631
|
+
}]
|
|
18632
|
+
};
|
|
18633
|
+
}
|
|
18634
|
+
function binary(input) {
|
|
18635
|
+
return {
|
|
18636
|
+
...input,
|
|
18637
|
+
family: "binary",
|
|
18638
|
+
deviceType: DeviceType.Sensor,
|
|
18639
|
+
memberDeviceType: DeviceType.Sensor,
|
|
18640
|
+
quantity: "none",
|
|
18641
|
+
baseUnit: void 0,
|
|
18642
|
+
aggregates: BINARY_AGGREGATES,
|
|
18643
|
+
empty: "offline"
|
|
18644
|
+
};
|
|
18645
|
+
}
|
|
18646
|
+
var GROUP_TEMPLATES = [
|
|
18647
|
+
numeric({
|
|
18648
|
+
id: "temperature",
|
|
18649
|
+
summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
|
|
18650
|
+
role: DeviceRole.TemperatureSensor,
|
|
18651
|
+
outputCap: "temperature-sensor",
|
|
18652
|
+
outputField: "celsius",
|
|
18653
|
+
quantity: "temperature",
|
|
18654
|
+
defaultAggregate: "mean",
|
|
18655
|
+
empty: "null",
|
|
18656
|
+
companions: [NOW]
|
|
18657
|
+
}),
|
|
18658
|
+
numeric({
|
|
18659
|
+
id: "humidity",
|
|
18660
|
+
summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
18661
|
+
role: DeviceRole.HumiditySensor,
|
|
18662
|
+
outputCap: "humidity-sensor",
|
|
18663
|
+
outputField: "percent",
|
|
18664
|
+
quantity: "humidity",
|
|
18665
|
+
defaultAggregate: "mean",
|
|
18666
|
+
empty: "null",
|
|
18667
|
+
companions: [NOW]
|
|
18668
|
+
}),
|
|
18669
|
+
numeric({
|
|
18670
|
+
id: "pressure",
|
|
18671
|
+
summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
|
|
18672
|
+
role: DeviceRole.PressureSensor,
|
|
18673
|
+
outputCap: "pressure-sensor",
|
|
18674
|
+
outputField: "hpa",
|
|
18675
|
+
quantity: "pressure",
|
|
18676
|
+
defaultAggregate: "mean",
|
|
18677
|
+
empty: "null",
|
|
18678
|
+
companions: [NOW]
|
|
18679
|
+
}),
|
|
18680
|
+
numeric({
|
|
18681
|
+
id: "illuminance",
|
|
18682
|
+
summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
|
|
18683
|
+
role: DeviceRole.AmbientLightSensor,
|
|
18684
|
+
outputCap: "ambient-light-sensor",
|
|
18685
|
+
outputField: "lux",
|
|
18686
|
+
quantity: "illuminance",
|
|
18687
|
+
defaultAggregate: "mean",
|
|
18688
|
+
empty: "null",
|
|
18689
|
+
companions: [NOW]
|
|
18690
|
+
}),
|
|
18691
|
+
numeric({
|
|
18692
|
+
id: "power",
|
|
18693
|
+
summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
|
|
18694
|
+
role: DeviceRole.PowerSensor,
|
|
18695
|
+
outputCap: "power-meter",
|
|
18696
|
+
outputField: "watts",
|
|
18697
|
+
quantity: "power",
|
|
18698
|
+
defaultAggregate: "sum",
|
|
18699
|
+
empty: "omit",
|
|
18700
|
+
companions: [NOW]
|
|
18701
|
+
}),
|
|
18702
|
+
numeric({
|
|
18703
|
+
id: "energy",
|
|
18704
|
+
summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
|
|
18705
|
+
role: DeviceRole.EnergySensor,
|
|
18706
|
+
outputCap: "power-meter",
|
|
18707
|
+
outputField: "kwhTotal",
|
|
18708
|
+
quantity: "energy",
|
|
18709
|
+
defaultAggregate: "sum",
|
|
18710
|
+
empty: "omit",
|
|
18711
|
+
companions: [NOW]
|
|
18712
|
+
}),
|
|
18713
|
+
numeric({
|
|
18714
|
+
id: "battery",
|
|
18715
|
+
summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
18716
|
+
role: DeviceRole.BatterySensor,
|
|
18717
|
+
outputCap: "battery",
|
|
18718
|
+
outputField: "percentage",
|
|
18719
|
+
quantity: "percentage",
|
|
18720
|
+
defaultAggregate: "mean",
|
|
18721
|
+
empty: "null",
|
|
18722
|
+
companions: [
|
|
18723
|
+
{
|
|
18724
|
+
fieldPath: "charging",
|
|
18725
|
+
expr: "\"unknown\""
|
|
18726
|
+
},
|
|
18727
|
+
{
|
|
18728
|
+
fieldPath: "sleeping",
|
|
18729
|
+
expr: "false"
|
|
18730
|
+
},
|
|
18731
|
+
{
|
|
18732
|
+
fieldPath: "lastUpdated",
|
|
18733
|
+
expr: "now"
|
|
18734
|
+
}
|
|
18735
|
+
]
|
|
18736
|
+
}),
|
|
18737
|
+
numeric({
|
|
18738
|
+
id: "numeric",
|
|
18739
|
+
summary: "A numeric reading in the members’ shared quantity. Mixed quantities are refused. Nobody reporting publishes null, not 0.",
|
|
18740
|
+
role: DeviceRole.NumericSensor,
|
|
18741
|
+
outputCap: "numeric-sensor",
|
|
18742
|
+
outputField: "value",
|
|
18743
|
+
quantity: "device",
|
|
18744
|
+
defaultAggregate: "mean",
|
|
18745
|
+
empty: "null",
|
|
18746
|
+
companions: [NOW]
|
|
18747
|
+
}),
|
|
18748
|
+
binary({
|
|
18749
|
+
id: "motion",
|
|
18750
|
+
summary: "Any or all motion. Offline and unknown members are left out, never read as off. Nobody reporting takes the device offline.",
|
|
18751
|
+
role: DeviceRole.MotionSensor,
|
|
18752
|
+
outputCap: "motion",
|
|
18753
|
+
outputField: "detected",
|
|
18754
|
+
defaultAggregate: "any",
|
|
18755
|
+
accept: [{
|
|
18756
|
+
cap: "motion",
|
|
18757
|
+
fieldPath: "detected"
|
|
18758
|
+
}],
|
|
18759
|
+
companions: [{
|
|
18760
|
+
fieldPath: "lastDetectedAt",
|
|
18761
|
+
expr: "null"
|
|
18762
|
+
}, {
|
|
18763
|
+
fieldPath: "autoClearAfterMs",
|
|
18764
|
+
expr: "null"
|
|
18765
|
+
}]
|
|
18766
|
+
}),
|
|
18767
|
+
binary({
|
|
18768
|
+
id: "contact",
|
|
18769
|
+
summary: "Any or all open contacts. Offline and unknown members are left out, never read as closed.",
|
|
18770
|
+
role: DeviceRole.ContactSensor,
|
|
18771
|
+
outputCap: "contact",
|
|
18772
|
+
outputField: "entryOpen",
|
|
18773
|
+
defaultAggregate: "any",
|
|
18774
|
+
accept: [{
|
|
18775
|
+
cap: "contact",
|
|
18776
|
+
fieldPath: "entryOpen"
|
|
18777
|
+
}],
|
|
18778
|
+
companions: [CHANGED]
|
|
18779
|
+
}),
|
|
18780
|
+
binary({
|
|
18781
|
+
id: "leak",
|
|
18782
|
+
summary: "Any or all leak detections. Offline and unknown members are left out, never read as dry.",
|
|
18783
|
+
role: DeviceRole.LeakSensor,
|
|
18784
|
+
outputCap: "flood",
|
|
18785
|
+
outputField: "flooded",
|
|
18786
|
+
defaultAggregate: "any",
|
|
18787
|
+
accept: [{
|
|
18788
|
+
cap: "flood",
|
|
18789
|
+
fieldPath: "flooded"
|
|
18790
|
+
}],
|
|
18791
|
+
companions: [CHANGED]
|
|
18792
|
+
}),
|
|
18793
|
+
binary({
|
|
18794
|
+
id: "smoke",
|
|
18795
|
+
summary: "Any or all smoke detections. Offline and unknown members are left out, never read as clear.",
|
|
18796
|
+
role: DeviceRole.SmokeSensor,
|
|
18797
|
+
outputCap: "smoke",
|
|
18798
|
+
outputField: "detected",
|
|
18799
|
+
defaultAggregate: "any",
|
|
18800
|
+
accept: [{
|
|
18801
|
+
cap: "smoke",
|
|
18802
|
+
fieldPath: "detected"
|
|
18803
|
+
}],
|
|
18804
|
+
companions: [CHANGED]
|
|
18805
|
+
}),
|
|
18806
|
+
binary({
|
|
18807
|
+
id: "occupancy",
|
|
18808
|
+
summary: "Any or all of motion or binary sensors, published as a binary. Presence zones are not aggregated. Nobody reporting is offline, not off.",
|
|
18809
|
+
role: DeviceRole.BinarySensor,
|
|
18810
|
+
outputCap: "binary",
|
|
18811
|
+
outputField: "on",
|
|
18812
|
+
defaultAggregate: "any",
|
|
18813
|
+
accept: [{
|
|
18814
|
+
cap: "motion",
|
|
18815
|
+
fieldPath: "detected"
|
|
18816
|
+
}, {
|
|
18817
|
+
cap: "binary",
|
|
18818
|
+
fieldPath: "on"
|
|
18819
|
+
}],
|
|
18820
|
+
companions: [CHANGED]
|
|
18821
|
+
}),
|
|
18822
|
+
binary({
|
|
18823
|
+
id: "binary",
|
|
18824
|
+
summary: "Any or all generic binary sensors. Offline and unknown members are left out, never read as off.",
|
|
18825
|
+
role: DeviceRole.BinarySensor,
|
|
18826
|
+
outputCap: "binary",
|
|
18827
|
+
outputField: "on",
|
|
18828
|
+
defaultAggregate: "any",
|
|
18829
|
+
accept: [{
|
|
18830
|
+
cap: "binary",
|
|
18831
|
+
fieldPath: "on"
|
|
18832
|
+
}],
|
|
18833
|
+
companions: [CHANGED]
|
|
18834
|
+
})
|
|
18835
|
+
];
|
|
18836
|
+
new Map(GROUP_TEMPLATES.map((template) => [template.id, template]));
|
|
18458
18837
|
`${COMPOSED_DEVICE_STABLE_ID_PREFIX}`;
|
|
18459
18838
|
/**
|
|
18460
18839
|
* What a composition may BUILD on a device type (G2, D676): the caps a new
|
|
@@ -58309,6 +58688,24 @@ object({
|
|
|
58309
58688
|
lastChangedAt: number()
|
|
58310
58689
|
});
|
|
58311
58690
|
DeviceType.Sensor;
|
|
58691
|
+
object({
|
|
58692
|
+
/** Members whose current value entered the aggregate. */
|
|
58693
|
+
included: number().int().nonnegative().meta(readingMeta("count", {
|
|
58694
|
+
precision: 0,
|
|
58695
|
+
label: "Reporting"
|
|
58696
|
+
})),
|
|
58697
|
+
/** Members left out: offline, unknown, or not a finite reading (D393). */
|
|
58698
|
+
excluded: number().int().nonnegative().meta(readingMeta("count", {
|
|
58699
|
+
precision: 0,
|
|
58700
|
+
label: "Excluded"
|
|
58701
|
+
})),
|
|
58702
|
+
/** `included` + `excluded`. */
|
|
58703
|
+
total: number().int().nonnegative().meta(readingMeta("count", {
|
|
58704
|
+
precision: 0,
|
|
58705
|
+
label: "Members"
|
|
58706
|
+
}))
|
|
58707
|
+
});
|
|
58708
|
+
DeviceType.Sensor;
|
|
58312
58709
|
object({
|
|
58313
58710
|
/** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
|
|
58314
58711
|
position: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
@@ -68686,6 +69083,13 @@ Object.freeze({
|
|
|
68686
69083
|
access: "view",
|
|
68687
69084
|
role: "viewer"
|
|
68688
69085
|
},
|
|
69086
|
+
"groupStatus.getStatus": {
|
|
69087
|
+
capName: "group-status",
|
|
69088
|
+
capScope: "device",
|
|
69089
|
+
addonId: null,
|
|
69090
|
+
access: "view",
|
|
69091
|
+
role: "viewer"
|
|
69092
|
+
},
|
|
68689
69093
|
"heatingValve.getStatus": {
|
|
68690
69094
|
capName: "heating-valve",
|
|
68691
69095
|
capScope: "device",
|
|
@@ -78508,6 +78912,33 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
78508
78912
|
icon: "flame"
|
|
78509
78913
|
}]
|
|
78510
78914
|
},
|
|
78915
|
+
"group-status": {
|
|
78916
|
+
scope: "device",
|
|
78917
|
+
noun: t("Group", "Gruppo"),
|
|
78918
|
+
state: [
|
|
78919
|
+
{
|
|
78920
|
+
kind: "numeric",
|
|
78921
|
+
field: "included",
|
|
78922
|
+
quantity: t("the members reporting", "i membri che rispondono"),
|
|
78923
|
+
label: t("Reporting", "Rispondono"),
|
|
78924
|
+
icon: "users"
|
|
78925
|
+
},
|
|
78926
|
+
{
|
|
78927
|
+
kind: "numeric",
|
|
78928
|
+
field: "excluded",
|
|
78929
|
+
quantity: t("the members left out", "i membri esclusi"),
|
|
78930
|
+
label: t("Excluded", "Esclusi"),
|
|
78931
|
+
icon: "users"
|
|
78932
|
+
},
|
|
78933
|
+
{
|
|
78934
|
+
kind: "numeric",
|
|
78935
|
+
field: "total",
|
|
78936
|
+
quantity: t("the member count", "il numero di membri"),
|
|
78937
|
+
label: t("Members", "Membri"),
|
|
78938
|
+
icon: "sigma"
|
|
78939
|
+
}
|
|
78940
|
+
]
|
|
78941
|
+
},
|
|
78511
78942
|
"humidity-sensor": {
|
|
78512
78943
|
scope: "device",
|
|
78513
78944
|
noun: t("Humidity", "Umidità"),
|
|
@@ -79973,6 +80404,11 @@ Object.freeze({
|
|
|
79973
80404
|
form: "single",
|
|
79974
80405
|
optional: false
|
|
79975
80406
|
}],
|
|
80407
|
+
"groupStatus.getStatus": [{
|
|
80408
|
+
name: "deviceId",
|
|
80409
|
+
form: "single",
|
|
80410
|
+
optional: false
|
|
80411
|
+
}],
|
|
79976
80412
|
"heatingValve.getStatus": [{
|
|
79977
80413
|
name: "deviceId",
|
|
79978
80414
|
form: "single",
|
|
@@ -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-D_nfEXa_.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-TjjXHsNj.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 { y as u } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-
|
|
3
|
+
import { y as u } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Bkw5bZBe.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-D_nfEXa_.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-DeNyK8AH.mjs")).catch((e) => {
|
|
2757
2757
|
throw tr = void 0, e;
|
|
2758
2758
|
}), tr;
|
|
2759
2759
|
}
|