@camstack/addon-model-studio 1.1.163 → 1.1.165
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-y2kbEGdP.mjs → MotionZonesSettings-B6DWvwTt.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-4p2buawr.mjs → PrivacyMaskSettings-GC9AJ7u9.mjs} +4 -4
- package/dist/{SceneMonitorEditor-BXP48zw9.mjs → SceneMonitorEditor-CDRtXS44.mjs} +3 -3
- package/dist/_stub.js +78 -78
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-BbxlJyIJ.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-C3EH8dXO.mjs} +3 -3
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CrxDjxBh.mjs +26 -0
- package/dist/addon-model-studio.css +1 -1
- package/dist/{hostInit-CqiwgcWw.mjs → hostInit-D7wKaStx.mjs} +2 -2
- package/dist/model-studio.addon.js +2527 -3
- package/dist/model-studio.addon.mjs +2527 -3
- package/dist/{player-overlays-H3SbZZiB.mjs → player-overlays-C5aNbV6c.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-6UoyAOwH.mjs → responsive-B6Yj9AVT.mjs} +1 -1
- package/dist/{scene-monitor-copy-BklNacbF.mjs → scene-monitor-copy-DoFpRkTB.mjs} +1 -1
- package/dist/{square-iuWo9Mh3.mjs → square-CbUN1Re_.mjs} +1 -1
- package/dist/{trash-2-MSpEpKeZ.mjs → trash-2-DalUiaTk.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CI7738Pr.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CMIDBF8a.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-D4KJgqEs.mjs +0 -26
|
@@ -5884,7 +5884,7 @@ var ZodIssueCode = {
|
|
|
5884
5884
|
var ZodFirstPartyTypeKind;
|
|
5885
5885
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5886
5886
|
//#endregion
|
|
5887
|
-
//#region ../types/dist/sleep-
|
|
5887
|
+
//#region ../types/dist/sleep-i3eUVc-d.mjs
|
|
5888
5888
|
/**
|
|
5889
5889
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5890
5890
|
* window to float samples (D455).
|
|
@@ -8372,10 +8372,20 @@ var CameraSwitchAuthoritySchema = discriminatedUnion("kind", [
|
|
|
8372
8372
|
var CameraSwitchUnavailableReasonSchema = _enum([
|
|
8373
8373
|
"no-provider",
|
|
8374
8374
|
"source-unreachable",
|
|
8375
|
-
"not-configured",
|
|
8376
8375
|
"device-disabled"
|
|
8377
8376
|
]);
|
|
8378
8377
|
/**
|
|
8378
|
+
* Something true about a switch that is nonetheless OFFERED.
|
|
8379
|
+
*
|
|
8380
|
+
* The distinction from {@link CameraSwitchUnavailableReasonSchema} is the
|
|
8381
|
+
* whole point: a reason replaces the control, a warning travels WITH it. The
|
|
8382
|
+
* privacy mask taught us the difference — greying the one button that starts
|
|
8383
|
+
* the feature teaches the operator the feature is broken, while a live toggle
|
|
8384
|
+
* that flips nothing teaches them the switch is broken. Neither is true; the
|
|
8385
|
+
* honest surface is a working toggle that says what is missing.
|
|
8386
|
+
*/
|
|
8387
|
+
var CameraSwitchWarningSchema = _enum(["no-privacy-zones"]);
|
|
8388
|
+
/**
|
|
8379
8389
|
* One switch, resolved for one camera.
|
|
8380
8390
|
*
|
|
8381
8391
|
* `label` and `costWhenOff` travel ON THE WIRE rather than being looked up
|
|
@@ -8394,6 +8404,11 @@ var CameraSwitchSchema = object({
|
|
|
8394
8404
|
/** False = do not render a control. `unavailableReason` says why. */
|
|
8395
8405
|
available: boolean(),
|
|
8396
8406
|
unavailableReason: CameraSwitchUnavailableReasonSchema.optional(),
|
|
8407
|
+
/**
|
|
8408
|
+
* Present on an AVAILABLE switch only. Rendered beside the live control;
|
|
8409
|
+
* never a substitute for one.
|
|
8410
|
+
*/
|
|
8411
|
+
warning: CameraSwitchWarningSchema.optional(),
|
|
8397
8412
|
/** Current state. Meaningless when `available` is false — read it as `true`. */
|
|
8398
8413
|
enabled: boolean(),
|
|
8399
8414
|
authority: CameraSwitchAuthoritySchema
|
|
@@ -13915,6 +13930,97 @@ method(object({ integrationId: string() }), object({ filters: array(AdoptionFilt
|
|
|
13915
13930
|
auth: "admin"
|
|
13916
13931
|
});
|
|
13917
13932
|
/**
|
|
13933
|
+
* device-admin-link — "this device has a management page of its own, and here
|
|
13934
|
+
* is its address".
|
|
13935
|
+
*
|
|
13936
|
+
* ## Why this is not a `deviceConfig` cap
|
|
13937
|
+
*
|
|
13938
|
+
* There is nothing to edit. A `deviceConfig` cap (D14) exists so the framework
|
|
13939
|
+
* can DERIVE a settings form from `getOptions` + `getStatus` and route a flat
|
|
13940
|
+
* patch back through a setter; it costs a `builderId` reducer in
|
|
13941
|
+
* `device-config-contribution.ts` and a `*-config-schema.ts` beside it, and it
|
|
13942
|
+
* renders a form section. This cap answers ONE question with ONE read and
|
|
13943
|
+
* renders a button. Nothing about it is a form, so it carries no `deviceConfig`
|
|
13944
|
+
* block, no `settings`, no `runtimeState` and no reducer — exactly like
|
|
13945
|
+
* `reboot`, the other pure-RPC device-native cap.
|
|
13946
|
+
*
|
|
13947
|
+
* ## Absent, and the difference between "no page" and "we cannot say"
|
|
13948
|
+
*
|
|
13949
|
+
* The two are answered at DIFFERENT layers, on purpose:
|
|
13950
|
+
*
|
|
13951
|
+
* - **"We cannot say"** → the provider never registers the cap for that
|
|
13952
|
+
* device. A VeSync humidifier, a Petkit feeder, a Dreame vacuum and a Dreo
|
|
13953
|
+
* fan are reached only through a vendor cloud; there is no address to hand
|
|
13954
|
+
* out and no page to open. A Tuya plug, a Wyze camera and a Gree air
|
|
13955
|
+
* conditioner DO have a LAN IP, and still have no HTTP management page
|
|
13956
|
+
* behind it. None of them register, so `deviceManager.getBindings` never
|
|
13957
|
+
* lists the cap and no surface asks.
|
|
13958
|
+
* - **"This device has no page, and I know that"** → the provider registers
|
|
13959
|
+
* and `getAdminLink` returns `null`. This is the answer for a device whose
|
|
13960
|
+
* sibling DOES have a page: a Reolink battery camera reached over UDP by
|
|
13961
|
+
* `uid` with a blank `host`, an Ecowitt gateway configured in `listener`
|
|
13962
|
+
* transport, a Home Assistant broker authenticated by supervisor token
|
|
13963
|
+
* (which carries no `baseUrl` at all).
|
|
13964
|
+
*
|
|
13965
|
+
* Both draw NOTHING. A button that opens a browser error is worse than no
|
|
13966
|
+
* button, and D62 is the same rule from the other side: an off switch is
|
|
13967
|
+
* reported off, never made to look broken. There is no third state where the
|
|
13968
|
+
* UI renders a disabled button "because the device might have a page".
|
|
13969
|
+
*
|
|
13970
|
+
* ## The URL never carries credentials
|
|
13971
|
+
*
|
|
13972
|
+
* Not in userinfo, not in a query string. Every provider builds through
|
|
13973
|
+
* `buildDeviceAdminUrl` (`device-admin-link-url.ts`), which takes host, port,
|
|
13974
|
+
* scheme and path as separate arguments — there is no parameter a secret could
|
|
13975
|
+
* arrive in — and re-checks its own output for the `scheme://user:pass@` shape
|
|
13976
|
+
* that `scripts/check-no-credential-urls-in-fixtures.ts` bans from recorded
|
|
13977
|
+
* output. `scripts/check-admin-link-builder-is-the-only-url-source.ts` is what
|
|
13978
|
+
* keeps providers from hand-rolling one anyway.
|
|
13979
|
+
*
|
|
13980
|
+
* This matters here more than anywhere else in the repo, because every provider
|
|
13981
|
+
* that knows a device's host knows its PASSWORD too: `{ host, port, username,
|
|
13982
|
+
* password }` sit in one object on Hikvision, Amcrest, Reolink and ONVIF alike,
|
|
13983
|
+
* and `http://admin:hunter2@192.168.50.139/` is a URL a browser accepts. The
|
|
13984
|
+
* camera's own page will ask for its own login. That is correct, and pre-
|
|
13985
|
+
* filling it is the operator's business, not ours.
|
|
13986
|
+
*
|
|
13987
|
+
* ## It is a LAN fact
|
|
13988
|
+
*
|
|
13989
|
+
* The URL addresses the device where the NODE can see it. It is not proxied,
|
|
13990
|
+
* not made reachable from outside, and not sent anywhere. A surface renders it
|
|
13991
|
+
* as a link the operator's own browser follows, on the operator's own network,
|
|
13992
|
+
* or renders nothing.
|
|
13993
|
+
*/
|
|
13994
|
+
/**
|
|
13995
|
+
* Whose page is it. The distinction is for the OPERATOR, who needs to know
|
|
13996
|
+
* before clicking whether he is about to land on a camera's own web server or
|
|
13997
|
+
* inside Home Assistant.
|
|
13998
|
+
*/
|
|
13999
|
+
var AdminLinkTargetEnum = _enum(["device", "integration"]);
|
|
14000
|
+
var DeviceAdminLinkSchema = object({
|
|
14001
|
+
/**
|
|
14002
|
+
* Absolute `http(s)://` URL. Built by `buildDeviceAdminUrl` and therefore
|
|
14003
|
+
* free of userinfo and of any credential-shaped query key.
|
|
14004
|
+
*/
|
|
14005
|
+
url: string(),
|
|
14006
|
+
/**
|
|
14007
|
+
* What the surface calls it — "Web UI", "Home Assistant", "UniFi controller".
|
|
14008
|
+
* The PROVIDER names it, because only the provider knows what the page is;
|
|
14009
|
+
* a UI that invented the label from the addon id would call the Home
|
|
14010
|
+
* Assistant device page "Provider Homeassistant".
|
|
14011
|
+
*/
|
|
14012
|
+
label: string(),
|
|
14013
|
+
target: AdminLinkTargetEnum,
|
|
14014
|
+
/**
|
|
14015
|
+
* Host the URL points at, without scheme, port or path — for the tooltip, so
|
|
14016
|
+
* an operator can see WHERE the button goes before he follows it. Redundant
|
|
14017
|
+
* with `url` by construction; carried separately so no surface has to parse
|
|
14018
|
+
* a URL to show it.
|
|
14019
|
+
*/
|
|
14020
|
+
host: string()
|
|
14021
|
+
});
|
|
14022
|
+
method(object({ deviceId: number().int().nonnegative() }), DeviceAdminLinkSchema.nullable(), { auth: "admin" });
|
|
14023
|
+
/**
|
|
13918
14024
|
* `device-export` — collection cap for addons that export camstack
|
|
13919
14025
|
* devices to external ecosystems (HomeAssistant via MQTT discovery,
|
|
13920
14026
|
* HomeKit/HAP, Alexa Smart Home, …).
|
|
@@ -24885,6 +24991,82 @@ var ClipBytesSchema = object({
|
|
|
24885
24991
|
*/
|
|
24886
24992
|
durationMs: number().positive().optional()
|
|
24887
24993
|
});
|
|
24994
|
+
/**
|
|
24995
|
+
* Where a clip's STREAM can be dialled (D597) — the answer to
|
|
24996
|
+
* {@link videoclipsCapability.methods.dialClipStream}.
|
|
24997
|
+
*
|
|
24998
|
+
* `url` is plain `http://` on the provider's own token-gated listener, one
|
|
24999
|
+
* shot, short-lived. It is NOT the hub-proxied `/addon/<id>/clip-stream/…`
|
|
25000
|
+
* path: that plane takes only a user credential, which an addon does not
|
|
25001
|
+
* hold, and the framework offers no addon→addon byte transport — the one
|
|
25002
|
+
* precedent is the broker's own restream URLs (`getStreamWithCodec`), which
|
|
25003
|
+
* a consumer dials directly, and this is that precedent one addon over.
|
|
25004
|
+
*/
|
|
25005
|
+
/**
|
|
25006
|
+
* The audio a clip stream can be asked for, and the audio it carries.
|
|
25007
|
+
*
|
|
25008
|
+
* The camera stores AAC and no WebRTC session speaks it, so a stream that
|
|
25009
|
+
* carries sound carries it TRANSCODED, muxed as a second track beside the
|
|
25010
|
+
* video by the one ffmpeg the provider already runs (D600). `opus` is
|
|
25011
|
+
* 48 kHz mono, `pcmu` is 8 kHz µ-law — the two codecs a broker session
|
|
25012
|
+
* negotiates — and `none` is a stream asked for, or served, without sound.
|
|
25013
|
+
*/
|
|
25014
|
+
var ClipStreamAudioSchema = _enum([
|
|
25015
|
+
"opus",
|
|
25016
|
+
"pcmu",
|
|
25017
|
+
"none"
|
|
25018
|
+
]);
|
|
25019
|
+
/**
|
|
25020
|
+
* Why a stream that was ASKED for sound is not carrying it (D600).
|
|
25021
|
+
*
|
|
25022
|
+
* Only ever set beside `servedAudio: 'none'` after a non-`none` ask. Absent
|
|
25023
|
+
* means the ask was honoured, or there was no ask.
|
|
25024
|
+
*
|
|
25025
|
+
* - `not-requested` — the caller asked for `none`.
|
|
25026
|
+
* - `unsupported-ask` — the provider cannot produce that codec.
|
|
25027
|
+
*
|
|
25028
|
+
* Whether the RECORDING has sound at all is not knowable here: the camera
|
|
25029
|
+
* declares no audio track before its first frame arrives. That answer is in
|
|
25030
|
+
* the stream itself — an fMP4 with no audio track — and the broker reads it
|
|
25031
|
+
* there. A dial that says `opus` promises the codec, never the content.
|
|
25032
|
+
*/
|
|
25033
|
+
var ClipStreamAudioReasonSchema = _enum(["not-requested", "unsupported-ask"]);
|
|
25034
|
+
var ClipStreamDialSchema = object({
|
|
25035
|
+
url: string().min(1),
|
|
25036
|
+
/** After this the token is gone and the URL answers 404 `dial-expired`. */
|
|
25037
|
+
expiresAtMs: number(),
|
|
25038
|
+
/** What the stream IS — a consumer that cannot honour it must not dial. */
|
|
25039
|
+
transport: literal("forward-only"),
|
|
25040
|
+
/**
|
|
25041
|
+
* Which twin the stream ACTUALLY carries — not what was asked for.
|
|
25042
|
+
*
|
|
25043
|
+
* The stream serves every profile (D599), and a recording whose main twin
|
|
25044
|
+
* does not exist is streamed as its sub copy, which this field reports as
|
|
25045
|
+
* `low`. That is the whole reason the dial no longer refuses `high`:
|
|
25046
|
+
* stating what was served is what makes accepting honest, where a silent
|
|
25047
|
+
* substitution would be the 33x lie D576 forbids. Stated rather than
|
|
25048
|
+
* assumed, the way {@link ClipPlaybackSchema.served} is (D549 15).
|
|
25049
|
+
*/
|
|
25050
|
+
served: CamProfileSchema,
|
|
25051
|
+
/**
|
|
25052
|
+
* Which audio the stream will ACTUALLY carry — `served`'s companion for
|
|
25053
|
+
* sound, and the same reasoning (D599, D600).
|
|
25054
|
+
*
|
|
25055
|
+
* The broker asks for the codec its WebRTC session negotiated, and the
|
|
25056
|
+
* provider either muxes that codec or carries none. Stating it is what
|
|
25057
|
+
* lets the broker wire the matching sink before the first byte, and what
|
|
25058
|
+
* keeps a session from being handed a codec it cannot send — the audio
|
|
25059
|
+
* shape of the substitution `served` exists to prevent.
|
|
25060
|
+
*
|
|
25061
|
+
* It is a promise about the CODEC, not about the content: a recording with
|
|
25062
|
+
* no microphone track answers `opus` here and then arrives with no audio
|
|
25063
|
+
* track at all. That second answer is in the stream, and the broker reads
|
|
25064
|
+
* it from the `moov`.
|
|
25065
|
+
*/
|
|
25066
|
+
servedAudio: ClipStreamAudioSchema,
|
|
25067
|
+
/** Why `servedAudio` is `none` although sound was asked for. */
|
|
25068
|
+
audioReason: ClipStreamAudioReasonSchema.optional()
|
|
25069
|
+
});
|
|
24888
25070
|
var ClipSourceAvailabilitySchema = object({
|
|
24889
25071
|
state: _enum([
|
|
24890
25072
|
"ok",
|
|
@@ -25004,6 +25186,23 @@ DeviceType.Camera, method(object({
|
|
|
25004
25186
|
deviceId: number(),
|
|
25005
25187
|
clipId: string().min(1),
|
|
25006
25188
|
/**
|
|
25189
|
+
* WHICH provider holds the bytes — the `addonId` a
|
|
25190
|
+
* {@link ClipSourceSchema} row carries. **Required**, for the reason
|
|
25191
|
+
* `listClips` states one method above and for a second one this method
|
|
25192
|
+
* learned the hard way.
|
|
25193
|
+
*
|
|
25194
|
+
* The caller is the stream broker, and the broker lives in
|
|
25195
|
+
* `addon-pipeline` — the same addon that registers the RECORDER's
|
|
25196
|
+
* videoclips provider. With no provider named, the in-process
|
|
25197
|
+
* resolution handed it its own sibling, which implements this method
|
|
25198
|
+
* solely to explain that an analytics visit has no file behind it. So
|
|
25199
|
+
* every onboard clip answered with that sentence, a flash of video and
|
|
25200
|
+
* nothing more, while the SAME call from outside the addon reached the
|
|
25201
|
+
* right provider and returned the bytes (measured on 3628,
|
|
25202
|
+
* 2026-09-21).
|
|
25203
|
+
*/
|
|
25204
|
+
provider: string().min(1),
|
|
25205
|
+
/**
|
|
25007
25206
|
* Which twin to fetch, on the mapping D549 15 already fixed:
|
|
25008
25207
|
* `low | mid` → the sub file, `high` → the main twin. `auto` is not
|
|
25009
25208
|
* accepted here for the same reason it is not accepted by
|
|
@@ -25027,6 +25226,27 @@ DeviceType.Camera, method(object({
|
|
|
25027
25226
|
}), ClipBytesSchema, {
|
|
25028
25227
|
kind: "query",
|
|
25029
25228
|
auth: "protected"
|
|
25229
|
+
}), optionalMethod(object({
|
|
25230
|
+
deviceId: number(),
|
|
25231
|
+
clipId: string().min(1),
|
|
25232
|
+
/** WHICH provider holds the camera — see `readClipBytes.provider`. */
|
|
25233
|
+
provider: string().min(1),
|
|
25234
|
+
/** Which twin — `high` → the main file, everything else the sub (D599). */
|
|
25235
|
+
profile: CamProfileSchema.optional(),
|
|
25236
|
+
/**
|
|
25237
|
+
* Which audio codec the caller's session negotiated, so the provider
|
|
25238
|
+
* can mux it (D600). The ask travels on the DIAL because the mux is
|
|
25239
|
+
* spawned once, before the first byte, and cannot gain a track later.
|
|
25240
|
+
*
|
|
25241
|
+
* ABSENT IS `none`, never a guess: a caller that does not state an
|
|
25242
|
+
* ask is served the video-only stream that shipped first, so a broker
|
|
25243
|
+
* older than this field keeps working unchanged (D382 — an unstated
|
|
25244
|
+
* ask is zero).
|
|
25245
|
+
*/
|
|
25246
|
+
audio: ClipStreamAudioSchema.optional()
|
|
25247
|
+
}), ClipStreamDialSchema, {
|
|
25248
|
+
kind: "query",
|
|
25249
|
+
auth: "protected"
|
|
25030
25250
|
});
|
|
25031
25251
|
/**
|
|
25032
25252
|
* Optional client-side hints sent at session creation to help the provider
|
|
@@ -26584,6 +26804,307 @@ DeviceType.Camera, method(object({ deviceId: number() }), DayNightOptionsSchema)
|
|
|
26584
26804
|
auth: "admin"
|
|
26585
26805
|
});
|
|
26586
26806
|
/**
|
|
26807
|
+
* Vendor-neutral **onboard** recording + storage cap — what the CAMERA
|
|
26808
|
+
* writes to the CAMERA's own card, on the camera's own schedule.
|
|
26809
|
+
*
|
|
26810
|
+
* This is NOT `recording.cap.ts`. That one is CamStack's recorder: our
|
|
26811
|
+
* footage ledger, our storage locations, our retention. This one has a
|
|
26812
|
+
* different authority — the camera's firmware — and per D62 it stores
|
|
26813
|
+
* nothing of its own. Every value here is read from the camera and every
|
|
26814
|
+
* write goes back to the camera; there is no CamStack-side mirror that
|
|
26815
|
+
* could disagree with the device.
|
|
26816
|
+
*
|
|
26817
|
+
* ## One shape, two firmwares
|
|
26818
|
+
*
|
|
26819
|
+
* Measured 2026-09-22 against the live fleet:
|
|
26820
|
+
*
|
|
26821
|
+
* | fact | Hikvision (ISAPI) | Reolink (Baichuan) |
|
|
26822
|
+
* | --- | --- | --- |
|
|
26823
|
+
* | storage | `ContentMgmt/Storage` `<hdd>` rows: status, capacity, freeSpace (MB) | `getHddInfoList` (cmd 102): `mount`, `format`, `capacity` GB + `capacityM` MB remainder |
|
|
26824
|
+
* | tracks | several (101 **and** 103 on both 1436 and 3833), each with its own schedule | one per channel |
|
|
26825
|
+
* | schedule | per track, 7 `ScheduleAction` blocks: DayOfWeek + TimeOfDay range + ONE `ActionRecordingMode` | per trigger type, a 168-char weekly HOUR mask |
|
|
26826
|
+
* | triggers | `CMR`, `MOTION` | `Normal`, `MD`, `people`, `vehicle`, `dog_cat`, `crossline`, `intrude`, `loitering` |
|
|
26827
|
+
* | pre-record | `PreRecordTimeSeconds` | `preRecordTime` |
|
|
26828
|
+
* | post-record | `PostRecordTimeSeconds` | `recordDelayTime` |
|
|
26829
|
+
* | overwrite | per track `LoopEnable` | `cycle`, with `cycleList` enumerating the accepted values |
|
|
26830
|
+
* | segment length | not exposed on V5.7.1 | `packageTime` (minutes) |
|
|
26831
|
+
*
|
|
26832
|
+
* The two schedule models look different and are the same thing in
|
|
26833
|
+
* different coordinates: both answer "for this trigger, during which
|
|
26834
|
+
* weekly windows does the camera record". {@link RecordWindow} is that
|
|
26835
|
+
* question in one shape — Hikvision's ranges map straight onto it,
|
|
26836
|
+
* Reolink's mask expands into hour-aligned windows.
|
|
26837
|
+
*
|
|
26838
|
+
* ## Union, not intersection
|
|
26839
|
+
*
|
|
26840
|
+
* **The same fields exist on every camera.** What differs per device is
|
|
26841
|
+
* which VALUES that device accepts, and that is what {@link
|
|
26842
|
+
* RecordingOnboardOptions} reports — a `{ readable, writable, reason }`
|
|
26843
|
+
* per field plus the schedule's own limits. A control a camera cannot
|
|
26844
|
+
* honour is rendered DISABLED WITH ITS REASON, never missing and never
|
|
26845
|
+
* dead: disabled must not look like broken.
|
|
26846
|
+
*
|
|
26847
|
+
* ## Refusal by name
|
|
26848
|
+
*
|
|
26849
|
+
* A write a camera cannot honour is refused with a sentence the operator
|
|
26850
|
+
* can read — never accepted and dropped. Both providers refuse through
|
|
26851
|
+
* {@link describeOnboardRefusal}, so the vocabulary is one function and
|
|
26852
|
+
* one test, not two hand-written vendor opinions.
|
|
26853
|
+
*
|
|
26854
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
26855
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
26856
|
+
* injected from `status`) reports the live values, and a single
|
|
26857
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
26858
|
+
* settings-contribution methods.
|
|
26859
|
+
*/
|
|
26860
|
+
/**
|
|
26861
|
+
* What makes the camera start recording during a window.
|
|
26862
|
+
*
|
|
26863
|
+
* The union of both vendors' vocabularies. `continuous` is Hikvision's
|
|
26864
|
+
* `CMR` and Reolink's `Normal`; `motion` is `MOTION` / `MD`. The
|
|
26865
|
+
* object-class triggers are Reolink-only today and the smart-event ones
|
|
26866
|
+
* (`lineCrossing`, `intrusion`, `loitering`) are Reolink-only on the
|
|
26867
|
+
* firmwares measured — a camera that cannot record on a trigger simply
|
|
26868
|
+
* does not list it in `options.schedule.triggers`, and a window naming
|
|
26869
|
+
* it is REFUSED, not dropped.
|
|
26870
|
+
*/
|
|
26871
|
+
var RecordTriggerSchema = _enum([
|
|
26872
|
+
"continuous",
|
|
26873
|
+
"motion",
|
|
26874
|
+
"person",
|
|
26875
|
+
"vehicle",
|
|
26876
|
+
"animal",
|
|
26877
|
+
"lineCrossing",
|
|
26878
|
+
"intrusion",
|
|
26879
|
+
"loitering",
|
|
26880
|
+
"alarmInput"
|
|
26881
|
+
]);
|
|
26882
|
+
/**
|
|
26883
|
+
* One weekly recording window: "on `day`, from `startMinute` to
|
|
26884
|
+
* `endMinute`, record on `trigger`".
|
|
26885
|
+
*
|
|
26886
|
+
* `day` is 0 = Monday … 6 = Sunday (ISO order, which is also the order
|
|
26887
|
+
* both firmwares enumerate). Minutes are local camera time since
|
|
26888
|
+
* midnight; `endMinute` may be 1440, meaning end of day — that is
|
|
26889
|
+
* Hikvision's literal `24:00` and Reolink's 24th mask slot, and
|
|
26890
|
+
* collapsing it to 0 would turn a whole-day window into an empty one.
|
|
26891
|
+
*/
|
|
26892
|
+
var RecordWindowSchema = object({
|
|
26893
|
+
trigger: RecordTriggerSchema,
|
|
26894
|
+
day: number().int().min(0).max(6),
|
|
26895
|
+
startMinute: number().int().min(0).max(1439),
|
|
26896
|
+
endMinute: number().int().min(1).max(1440)
|
|
26897
|
+
});
|
|
26898
|
+
/** Status of one physical volume, as the camera itself describes it. */
|
|
26899
|
+
var OnboardStorageVolumeSchema = object({
|
|
26900
|
+
/** The camera's own id for the volume (`hdd/id`, Reolink `HddInfo/number`). */
|
|
26901
|
+
id: string(),
|
|
26902
|
+
/** The camera's own name for it, when it gives one (`hddName`). */
|
|
26903
|
+
label: string().optional(),
|
|
26904
|
+
status: _enum([
|
|
26905
|
+
"ok",
|
|
26906
|
+
"unformatted",
|
|
26907
|
+
"error",
|
|
26908
|
+
"offline",
|
|
26909
|
+
"unknown"
|
|
26910
|
+
]),
|
|
26911
|
+
/**
|
|
26912
|
+
* Total size in MB, or **null when the camera did not say**.
|
|
26913
|
+
*
|
|
26914
|
+
* Never 0 for an unreadable value: a measurement that failed is not a
|
|
26915
|
+
* measurement (D393), and a card whose size is unknown must not be
|
|
26916
|
+
* rendered as a card of size zero.
|
|
26917
|
+
*/
|
|
26918
|
+
capacityMb: number().nullable(),
|
|
26919
|
+
/**
|
|
26920
|
+
* Free space in MB, or null when unknown.
|
|
26921
|
+
*
|
|
26922
|
+
* **Not a proxy for "has footage".** Measured 2026-09-22: 1436 and
|
|
26923
|
+
* 1439 both report exactly 11776 MB free — the fixed reserve a looping
|
|
26924
|
+
* card converges on once it has wrapped. At loop steady state the
|
|
26925
|
+
* number is identical whether the camera recorded yesterday or stopped
|
|
26926
|
+
* a month ago.
|
|
26927
|
+
*/
|
|
26928
|
+
freeMb: number().nullable(),
|
|
26929
|
+
/** True when the camera reports the volume writable (`property` RW). */
|
|
26930
|
+
writable: boolean().optional()
|
|
26931
|
+
});
|
|
26932
|
+
object({
|
|
26933
|
+
storage: discriminatedUnion("kind", [
|
|
26934
|
+
object({
|
|
26935
|
+
kind: literal("present"),
|
|
26936
|
+
volumes: array(OnboardStorageVolumeSchema)
|
|
26937
|
+
}),
|
|
26938
|
+
object({
|
|
26939
|
+
kind: literal("absent"),
|
|
26940
|
+
reason: string()
|
|
26941
|
+
}),
|
|
26942
|
+
object({
|
|
26943
|
+
kind: literal("unknown"),
|
|
26944
|
+
reason: string()
|
|
26945
|
+
})
|
|
26946
|
+
]),
|
|
26947
|
+
tracks: array(object({
|
|
26948
|
+
id: string(),
|
|
26949
|
+
enabled: boolean(),
|
|
26950
|
+
isVideo: boolean(),
|
|
26951
|
+
/** From the camera's own track description. Null when it does not say. */
|
|
26952
|
+
codec: string().nullable(),
|
|
26953
|
+
resolution: string().nullable(),
|
|
26954
|
+
/** Per-track overwrite flag, where the firmware keeps it per track. */
|
|
26955
|
+
overwriteWhenFull: boolean().nullable()
|
|
26956
|
+
})),
|
|
26957
|
+
/**
|
|
26958
|
+
* The track the write path targets — the enabled VIDEO one. Null when
|
|
26959
|
+
* no track could be identified, which is itself a refusal reason.
|
|
26960
|
+
*/
|
|
26961
|
+
primaryTrackId: string().nullable(),
|
|
26962
|
+
/** Master "record to the card at all" switch. */
|
|
26963
|
+
enabled: boolean().nullable(),
|
|
26964
|
+
overwriteWhenFull: boolean().nullable(),
|
|
26965
|
+
preRecordSec: number().nullable(),
|
|
26966
|
+
postRecordSec: number().nullable(),
|
|
26967
|
+
/** Length of one recorded file, in minutes. */
|
|
26968
|
+
segmentMinutes: number().nullable(),
|
|
26969
|
+
/** The primary track's weekly windows, flattened. */
|
|
26970
|
+
windows: array(RecordWindowSchema),
|
|
26971
|
+
/**
|
|
26972
|
+
* How many windows the camera described that CamStack could NOT read —
|
|
26973
|
+
* an unrecognised trigger, an unparseable clock, a weekday it does not
|
|
26974
|
+
* name.
|
|
26975
|
+
*
|
|
26976
|
+
* A dropped window is work the reader threw away, and a schedule that
|
|
26977
|
+
* silently shows fewer rows than the camera holds is how an operator
|
|
26978
|
+
* saves back a schedule shorter than the one they were looking at
|
|
26979
|
+
* (D391). Non-zero means the window list is INCOMPLETE and a write
|
|
26980
|
+
* that replaces it would delete what was not shown — which is why a
|
|
26981
|
+
* provider reporting a non-zero count also reports the schedule as not
|
|
26982
|
+
* writable.
|
|
26983
|
+
*/
|
|
26984
|
+
unreadableWindows: number(),
|
|
26985
|
+
/**
|
|
26986
|
+
* The camera is scheduled to record and has NO usable storage.
|
|
26987
|
+
*
|
|
26988
|
+
* A first-class fact because it is the fleet's most common silent
|
|
26989
|
+
* defect: measured 2026-09-22, 1441 and 3831 are both motion-recording
|
|
26990
|
+
* to a card that is not there. Neither the schedule nor the storage
|
|
26991
|
+
* read says anything wrong on its own; only the pair does.
|
|
26992
|
+
*/
|
|
26993
|
+
recordingToNowhere: boolean(),
|
|
26994
|
+
lastFetchedAt: number()
|
|
26995
|
+
});
|
|
26996
|
+
/** Numeric range descriptor — `{ min, max, step }` per the getOptions convention. */
|
|
26997
|
+
var RangeSchema = object({
|
|
26998
|
+
min: number(),
|
|
26999
|
+
max: number(),
|
|
27000
|
+
step: number()
|
|
27001
|
+
});
|
|
27002
|
+
/**
|
|
27003
|
+
* The values a camera actually takes for a numeric field, when they are a SET
|
|
27004
|
+
* rather than a range.
|
|
27005
|
+
*
|
|
27006
|
+
* `{min,max,step}` cannot say what these two firmwares do. Measured on 1436
|
|
27007
|
+
* (I91DN) on 2026-09-22 by writing each value and reading it back:
|
|
27008
|
+
*
|
|
27009
|
+
* - pre-record: `0, 5, 10, 15, 20, 25, 30` and `2147483647` (INT32_MAX, the
|
|
27010
|
+
* camera's "no limit" — `-1` and `4294967295` both land on it);
|
|
27011
|
+
* - post-record: `5, 10, 30, 60, 120, 300, 600`.
|
|
27012
|
+
*
|
|
27013
|
+
* Neither is expressible as a step: the first has a sentinel two billion away
|
|
27014
|
+
* from its neighbours, the second doubles and then jumps. A range that tried
|
|
27015
|
+
* would forbid values the camera takes AND permit values it silently replaces
|
|
27016
|
+
* with 5 — wrong in both directions at once.
|
|
27017
|
+
*
|
|
27018
|
+
* `sentinel` names the member that is not a duration, so a surface can render
|
|
27019
|
+
* "no limit" instead of `2147483647` seconds.
|
|
27020
|
+
*/
|
|
27021
|
+
var AllowedValuesSchema = object({
|
|
27022
|
+
values: array(number()).min(1),
|
|
27023
|
+
sentinel: object({
|
|
27024
|
+
value: number(),
|
|
27025
|
+
meaning: _enum(["no-limit", "disabled"])
|
|
27026
|
+
}).optional()
|
|
27027
|
+
});
|
|
27028
|
+
/**
|
|
27029
|
+
* Per-field availability on ONE camera.
|
|
27030
|
+
*
|
|
27031
|
+
* The field exists on every camera — this says whether this one can be
|
|
27032
|
+
* read and whether it can be written, and `reason` says why not when
|
|
27033
|
+
* either is false. The UI renders the control DISABLED with the reason
|
|
27034
|
+
* rather than hiding it, so a limitation is legible instead of looking
|
|
27035
|
+
* like a missing feature.
|
|
27036
|
+
*/
|
|
27037
|
+
var OnboardFieldSupportSchema = object({
|
|
27038
|
+
readable: boolean(),
|
|
27039
|
+
writable: boolean(),
|
|
27040
|
+
/** Required whenever `readable` or `writable` is false. */
|
|
27041
|
+
reason: string().optional()
|
|
27042
|
+
});
|
|
27043
|
+
/** What this camera's schedule model can express. */
|
|
27044
|
+
var OnboardScheduleSupportSchema = object({
|
|
27045
|
+
support: OnboardFieldSupportSchema,
|
|
27046
|
+
/**
|
|
27047
|
+
* The smallest time step the camera can express, in minutes.
|
|
27048
|
+
*
|
|
27049
|
+
* Hikvision takes arbitrary minutes (`00:05:00`–`23:57:00` observed on
|
|
27050
|
+
* 1436's track 103). Reolink's schedule is a 7×24 HOUR mask, so 60. A
|
|
27051
|
+
* window whose edges are not a multiple of this is REFUSED rather than
|
|
27052
|
+
* quietly rounded — rounding is how an operator's 06:30 becomes 06:00
|
|
27053
|
+
* and nothing says so.
|
|
27054
|
+
*/
|
|
27055
|
+
granularityMinutes: number(),
|
|
27056
|
+
/** Triggers this camera can record on. A window naming another is refused. */
|
|
27057
|
+
triggers: array(RecordTriggerSchema),
|
|
27058
|
+
/**
|
|
27059
|
+
* False when the camera stores ONE trigger per time range, so two
|
|
27060
|
+
* windows overlapping on the same day cannot carry different triggers.
|
|
27061
|
+
* True on Reolink, whose mask is per-trigger and independent.
|
|
27062
|
+
*/
|
|
27063
|
+
supportsOverlappingTriggers: boolean()
|
|
27064
|
+
});
|
|
27065
|
+
var RecordingOnboardOptionsSchema = object({
|
|
27066
|
+
enabled: OnboardFieldSupportSchema,
|
|
27067
|
+
overwriteWhenFull: OnboardFieldSupportSchema,
|
|
27068
|
+
preRecordSec: OnboardFieldSupportSchema,
|
|
27069
|
+
preRecordSecRange: RangeSchema.optional(),
|
|
27070
|
+
/** Preferred over the range when the camera takes a SET, not a span. */
|
|
27071
|
+
preRecordSecAllowed: AllowedValuesSchema.optional(),
|
|
27072
|
+
postRecordSec: OnboardFieldSupportSchema,
|
|
27073
|
+
postRecordSecRange: RangeSchema.optional(),
|
|
27074
|
+
/** Preferred over the range when the camera takes a SET, not a span. */
|
|
27075
|
+
postRecordSecAllowed: AllowedValuesSchema.optional(),
|
|
27076
|
+
segmentMinutes: OnboardFieldSupportSchema,
|
|
27077
|
+
segmentMinutesRange: RangeSchema.optional(),
|
|
27078
|
+
/** Preferred over the range when the camera takes a SET, not a span. */
|
|
27079
|
+
segmentMinutesAllowed: AllowedValuesSchema.optional(),
|
|
27080
|
+
schedule: OnboardScheduleSupportSchema
|
|
27081
|
+
});
|
|
27082
|
+
/**
|
|
27083
|
+
* A partial change. Every field optional.
|
|
27084
|
+
*
|
|
27085
|
+
* Unlike the other `deviceConfig` caps, a provider here does **NOT**
|
|
27086
|
+
* silently ignore a field it cannot support — it refuses, by name,
|
|
27087
|
+
* through {@link describeOnboardRefusal}. Silence on a recording setting
|
|
27088
|
+
* is the failure D62 exists to prevent: the operator believes the camera
|
|
27089
|
+
* is recording the way the form says, and it is not.
|
|
27090
|
+
*/
|
|
27091
|
+
var RecordingOnboardPatchSchema = object({
|
|
27092
|
+
enabled: boolean().optional(),
|
|
27093
|
+
overwriteWhenFull: boolean().optional(),
|
|
27094
|
+
preRecordSec: number().optional(),
|
|
27095
|
+
postRecordSec: number().optional(),
|
|
27096
|
+
segmentMinutes: number().optional(),
|
|
27097
|
+
/** The complete new window set for the primary track — not a delta. */
|
|
27098
|
+
windows: array(RecordWindowSchema).optional()
|
|
27099
|
+
});
|
|
27100
|
+
DeviceType.Camera, method(object({ deviceId: number() }), RecordingOnboardOptionsSchema), method(object({
|
|
27101
|
+
deviceId: number(),
|
|
27102
|
+
settings: RecordingOnboardPatchSchema
|
|
27103
|
+
}), _void(), {
|
|
27104
|
+
kind: "mutation",
|
|
27105
|
+
auth: "admin"
|
|
27106
|
+
});
|
|
27107
|
+
/**
|
|
26587
27108
|
* Generic device-level status snapshot. Auto-registered by `BaseDevice`
|
|
26588
27109
|
* for every device, regardless of provider — the kernel needs a uniform
|
|
26589
27110
|
* cap-keyed slice for the basic device flags every consumer expects to
|
|
@@ -30729,7 +31250,7 @@ method(object({
|
|
|
30729
31250
|
auth: "admin"
|
|
30730
31251
|
}), method(object({ deviceId: number() }), RecordingConfigSchema, {
|
|
30731
31252
|
kind: "query",
|
|
30732
|
-
auth: "
|
|
31253
|
+
auth: "protected"
|
|
30733
31254
|
}), method(object({
|
|
30734
31255
|
deviceId: number(),
|
|
30735
31256
|
profile: string(),
|
|
@@ -32950,7 +33471,1336 @@ AccessoryKind.Siren, AccessoryKind.Floodlight, AccessoryKind.Spotlight, Accessor
|
|
|
32950
33471
|
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;
|
|
32951
33472
|
new Set(Object.values(DeviceType));
|
|
32952
33473
|
DeviceFeature.BatteryOperated;
|
|
33474
|
+
/**
|
|
33475
|
+
* The vocabulary, in the order a picker offers it.
|
|
33476
|
+
*
|
|
33477
|
+
* Adding a key here is not enough to make it pickable: both glyph tables must
|
|
33478
|
+
* gain it too, and their tests fail until they do. That is the intended
|
|
33479
|
+
* friction — it is the only thing that keeps the two surfaces honest.
|
|
33480
|
+
*/
|
|
33481
|
+
var DISPLAY_ICON_VOCABULARY = [
|
|
33482
|
+
{
|
|
33483
|
+
key: "camera",
|
|
33484
|
+
group: "device",
|
|
33485
|
+
synonyms: [
|
|
33486
|
+
"telecamera",
|
|
33487
|
+
"videocamera",
|
|
33488
|
+
"camera",
|
|
33489
|
+
"cam"
|
|
33490
|
+
]
|
|
33491
|
+
},
|
|
33492
|
+
{
|
|
33493
|
+
key: "network",
|
|
33494
|
+
group: "device",
|
|
33495
|
+
synonyms: [
|
|
33496
|
+
"rete",
|
|
33497
|
+
"network",
|
|
33498
|
+
"lan"
|
|
33499
|
+
]
|
|
33500
|
+
},
|
|
33501
|
+
{
|
|
33502
|
+
key: "toggle-left",
|
|
33503
|
+
group: "device",
|
|
33504
|
+
synonyms: [
|
|
33505
|
+
"interruttore",
|
|
33506
|
+
"switch",
|
|
33507
|
+
"toggle"
|
|
33508
|
+
]
|
|
33509
|
+
},
|
|
33510
|
+
{
|
|
33511
|
+
key: "toggle-right",
|
|
33512
|
+
group: "device",
|
|
33513
|
+
synonyms: [
|
|
33514
|
+
"interruttore",
|
|
33515
|
+
"switch",
|
|
33516
|
+
"toggle",
|
|
33517
|
+
"acceso"
|
|
33518
|
+
]
|
|
33519
|
+
},
|
|
33520
|
+
{
|
|
33521
|
+
key: "circle-dot",
|
|
33522
|
+
group: "device",
|
|
33523
|
+
synonyms: [
|
|
33524
|
+
"pulsante",
|
|
33525
|
+
"bottone",
|
|
33526
|
+
"button",
|
|
33527
|
+
"dot"
|
|
33528
|
+
]
|
|
33529
|
+
},
|
|
33530
|
+
{
|
|
33531
|
+
key: "refresh-cw",
|
|
33532
|
+
group: "device",
|
|
33533
|
+
synonyms: [
|
|
33534
|
+
"aggiorna",
|
|
33535
|
+
"ricarica",
|
|
33536
|
+
"refresh",
|
|
33537
|
+
"reload",
|
|
33538
|
+
"ciclo"
|
|
33539
|
+
]
|
|
33540
|
+
},
|
|
33541
|
+
{
|
|
33542
|
+
key: "box",
|
|
33543
|
+
group: "device",
|
|
33544
|
+
synonyms: [
|
|
33545
|
+
"scatola",
|
|
33546
|
+
"box",
|
|
33547
|
+
"contenitore"
|
|
33548
|
+
]
|
|
33549
|
+
},
|
|
33550
|
+
{
|
|
33551
|
+
key: "scroll-text",
|
|
33552
|
+
group: "device",
|
|
33553
|
+
synonyms: [
|
|
33554
|
+
"registro",
|
|
33555
|
+
"log",
|
|
33556
|
+
"testo"
|
|
33557
|
+
]
|
|
33558
|
+
},
|
|
33559
|
+
{
|
|
33560
|
+
key: "workflow",
|
|
33561
|
+
group: "device",
|
|
33562
|
+
synonyms: [
|
|
33563
|
+
"automazione",
|
|
33564
|
+
"flusso",
|
|
33565
|
+
"workflow",
|
|
33566
|
+
"scenario"
|
|
33567
|
+
]
|
|
33568
|
+
},
|
|
33569
|
+
{
|
|
33570
|
+
key: "lock",
|
|
33571
|
+
group: "device",
|
|
33572
|
+
synonyms: [
|
|
33573
|
+
"serratura",
|
|
33574
|
+
"chiave",
|
|
33575
|
+
"lucchetto",
|
|
33576
|
+
"chiuso",
|
|
33577
|
+
"locked"
|
|
33578
|
+
]
|
|
33579
|
+
},
|
|
33580
|
+
{
|
|
33581
|
+
key: "lock-open",
|
|
33582
|
+
group: "device",
|
|
33583
|
+
synonyms: [
|
|
33584
|
+
"serratura",
|
|
33585
|
+
"aperta",
|
|
33586
|
+
"sbloccato",
|
|
33587
|
+
"unlocked"
|
|
33588
|
+
]
|
|
33589
|
+
},
|
|
33590
|
+
{
|
|
33591
|
+
key: "blinds",
|
|
33592
|
+
group: "device",
|
|
33593
|
+
synonyms: [
|
|
33594
|
+
"tapparella",
|
|
33595
|
+
"persiana",
|
|
33596
|
+
"serranda",
|
|
33597
|
+
"avvolgibile",
|
|
33598
|
+
"shutter",
|
|
33599
|
+
"blind",
|
|
33600
|
+
"veneziana"
|
|
33601
|
+
]
|
|
33602
|
+
},
|
|
33603
|
+
{
|
|
33604
|
+
key: "air-vent",
|
|
33605
|
+
group: "device",
|
|
33606
|
+
synonyms: [
|
|
33607
|
+
"bocchetta",
|
|
33608
|
+
"aria",
|
|
33609
|
+
"ventilazione",
|
|
33610
|
+
"condizionatore",
|
|
33611
|
+
"vent"
|
|
33612
|
+
]
|
|
33613
|
+
},
|
|
33614
|
+
{
|
|
33615
|
+
key: "monitor-play",
|
|
33616
|
+
group: "device",
|
|
33617
|
+
synonyms: [
|
|
33618
|
+
"schermo",
|
|
33619
|
+
"riproduzione",
|
|
33620
|
+
"player",
|
|
33621
|
+
"display"
|
|
33622
|
+
]
|
|
33623
|
+
},
|
|
33624
|
+
{
|
|
33625
|
+
key: "sliders-horizontal",
|
|
33626
|
+
group: "device",
|
|
33627
|
+
synonyms: [
|
|
33628
|
+
"regolazione",
|
|
33629
|
+
"cursori",
|
|
33630
|
+
"impostazioni",
|
|
33631
|
+
"slider"
|
|
33632
|
+
]
|
|
33633
|
+
},
|
|
33634
|
+
{
|
|
33635
|
+
key: "map-pin",
|
|
33636
|
+
group: "device",
|
|
33637
|
+
synonyms: [
|
|
33638
|
+
"posizione",
|
|
33639
|
+
"luogo",
|
|
33640
|
+
"mappa",
|
|
33641
|
+
"pin"
|
|
33642
|
+
]
|
|
33643
|
+
},
|
|
33644
|
+
{
|
|
33645
|
+
key: "bot",
|
|
33646
|
+
group: "device",
|
|
33647
|
+
synonyms: [
|
|
33648
|
+
"robot",
|
|
33649
|
+
"aspirapolvere",
|
|
33650
|
+
"bot"
|
|
33651
|
+
]
|
|
33652
|
+
},
|
|
33653
|
+
{
|
|
33654
|
+
key: "tractor",
|
|
33655
|
+
group: "device",
|
|
33656
|
+
synonyms: [
|
|
33657
|
+
"trattore",
|
|
33658
|
+
"tosaerba",
|
|
33659
|
+
"giardino"
|
|
33660
|
+
]
|
|
33661
|
+
},
|
|
33662
|
+
{
|
|
33663
|
+
key: "image",
|
|
33664
|
+
group: "device",
|
|
33665
|
+
synonyms: [
|
|
33666
|
+
"immagine",
|
|
33667
|
+
"foto",
|
|
33668
|
+
"snapshot"
|
|
33669
|
+
]
|
|
33670
|
+
},
|
|
33671
|
+
{
|
|
33672
|
+
key: "bone",
|
|
33673
|
+
group: "device",
|
|
33674
|
+
synonyms: ["osso", "cane"]
|
|
33675
|
+
},
|
|
33676
|
+
{
|
|
33677
|
+
key: "door-closed",
|
|
33678
|
+
group: "device",
|
|
33679
|
+
synonyms: [
|
|
33680
|
+
"porta",
|
|
33681
|
+
"chiusa",
|
|
33682
|
+
"contatto"
|
|
33683
|
+
]
|
|
33684
|
+
},
|
|
33685
|
+
{
|
|
33686
|
+
key: "door-open",
|
|
33687
|
+
group: "device",
|
|
33688
|
+
synonyms: [
|
|
33689
|
+
"porta",
|
|
33690
|
+
"aperta",
|
|
33691
|
+
"contatto",
|
|
33692
|
+
"ingresso",
|
|
33693
|
+
"uscita"
|
|
33694
|
+
]
|
|
33695
|
+
},
|
|
33696
|
+
{
|
|
33697
|
+
key: "crosshair",
|
|
33698
|
+
group: "device",
|
|
33699
|
+
synonyms: [
|
|
33700
|
+
"mirino",
|
|
33701
|
+
"puntamento",
|
|
33702
|
+
"centro"
|
|
33703
|
+
]
|
|
33704
|
+
},
|
|
33705
|
+
{
|
|
33706
|
+
key: "eye",
|
|
33707
|
+
group: "device",
|
|
33708
|
+
synonyms: [
|
|
33709
|
+
"occhio",
|
|
33710
|
+
"visibile",
|
|
33711
|
+
"visto"
|
|
33712
|
+
]
|
|
33713
|
+
},
|
|
33714
|
+
{
|
|
33715
|
+
key: "eye-off",
|
|
33716
|
+
group: "device",
|
|
33717
|
+
synonyms: [
|
|
33718
|
+
"privacy",
|
|
33719
|
+
"nascosto",
|
|
33720
|
+
"oscurato",
|
|
33721
|
+
"mascherato",
|
|
33722
|
+
"invisibile"
|
|
33723
|
+
]
|
|
33724
|
+
},
|
|
33725
|
+
{
|
|
33726
|
+
key: "smartphone",
|
|
33727
|
+
group: "device",
|
|
33728
|
+
synonyms: [
|
|
33729
|
+
"telefono",
|
|
33730
|
+
"cellulare",
|
|
33731
|
+
"smartphone"
|
|
33732
|
+
]
|
|
33733
|
+
},
|
|
33734
|
+
{
|
|
33735
|
+
key: "phone",
|
|
33736
|
+
group: "device",
|
|
33737
|
+
synonyms: ["telefono", "chiamata"]
|
|
33738
|
+
},
|
|
33739
|
+
{
|
|
33740
|
+
key: "tablet",
|
|
33741
|
+
group: "device",
|
|
33742
|
+
synonyms: ["tablet", "ipad"]
|
|
33743
|
+
},
|
|
33744
|
+
{
|
|
33745
|
+
key: "laptop",
|
|
33746
|
+
group: "device",
|
|
33747
|
+
synonyms: [
|
|
33748
|
+
"portatile",
|
|
33749
|
+
"laptop",
|
|
33750
|
+
"notebook"
|
|
33751
|
+
]
|
|
33752
|
+
},
|
|
33753
|
+
{
|
|
33754
|
+
key: "monitor",
|
|
33755
|
+
group: "device",
|
|
33756
|
+
synonyms: ["monitor", "schermo"]
|
|
33757
|
+
},
|
|
33758
|
+
{
|
|
33759
|
+
key: "tv",
|
|
33760
|
+
group: "device",
|
|
33761
|
+
synonyms: ["televisore", "tv"]
|
|
33762
|
+
},
|
|
33763
|
+
{
|
|
33764
|
+
key: "speaker",
|
|
33765
|
+
group: "device",
|
|
33766
|
+
synonyms: [
|
|
33767
|
+
"altoparlante",
|
|
33768
|
+
"cassa",
|
|
33769
|
+
"speaker"
|
|
33770
|
+
]
|
|
33771
|
+
},
|
|
33772
|
+
{
|
|
33773
|
+
key: "printer",
|
|
33774
|
+
group: "device",
|
|
33775
|
+
synonyms: ["stampante"]
|
|
33776
|
+
},
|
|
33777
|
+
{
|
|
33778
|
+
key: "projector",
|
|
33779
|
+
group: "device",
|
|
33780
|
+
synonyms: ["proiettore"]
|
|
33781
|
+
},
|
|
33782
|
+
{
|
|
33783
|
+
key: "gamepad-2",
|
|
33784
|
+
group: "device",
|
|
33785
|
+
synonyms: [
|
|
33786
|
+
"console",
|
|
33787
|
+
"gioco",
|
|
33788
|
+
"joystick"
|
|
33789
|
+
]
|
|
33790
|
+
},
|
|
33791
|
+
{
|
|
33792
|
+
key: "radio",
|
|
33793
|
+
group: "device",
|
|
33794
|
+
synonyms: ["radio"]
|
|
33795
|
+
},
|
|
33796
|
+
{
|
|
33797
|
+
key: "router",
|
|
33798
|
+
group: "device",
|
|
33799
|
+
synonyms: ["router", "modem"]
|
|
33800
|
+
},
|
|
33801
|
+
{
|
|
33802
|
+
key: "bluetooth",
|
|
33803
|
+
group: "device",
|
|
33804
|
+
synonyms: ["bluetooth"]
|
|
33805
|
+
},
|
|
33806
|
+
{
|
|
33807
|
+
key: "cpu",
|
|
33808
|
+
group: "device",
|
|
33809
|
+
synonyms: [
|
|
33810
|
+
"processore",
|
|
33811
|
+
"cpu",
|
|
33812
|
+
"chip",
|
|
33813
|
+
"dispositivo"
|
|
33814
|
+
]
|
|
33815
|
+
},
|
|
33816
|
+
{
|
|
33817
|
+
key: "hard-drive",
|
|
33818
|
+
group: "device",
|
|
33819
|
+
synonyms: [
|
|
33820
|
+
"disco",
|
|
33821
|
+
"hdd",
|
|
33822
|
+
"archiviazione",
|
|
33823
|
+
"storage"
|
|
33824
|
+
]
|
|
33825
|
+
},
|
|
33826
|
+
{
|
|
33827
|
+
key: "server",
|
|
33828
|
+
group: "device",
|
|
33829
|
+
synonyms: ["server", "nas"]
|
|
33830
|
+
},
|
|
33831
|
+
{
|
|
33832
|
+
key: "mic",
|
|
33833
|
+
group: "device",
|
|
33834
|
+
synonyms: ["microfono", "audio"]
|
|
33835
|
+
},
|
|
33836
|
+
{
|
|
33837
|
+
key: "mic-off",
|
|
33838
|
+
group: "device",
|
|
33839
|
+
synonyms: [
|
|
33840
|
+
"microfono",
|
|
33841
|
+
"spento",
|
|
33842
|
+
"muto"
|
|
33843
|
+
]
|
|
33844
|
+
},
|
|
33845
|
+
{
|
|
33846
|
+
key: "video",
|
|
33847
|
+
group: "device",
|
|
33848
|
+
synonyms: ["video"]
|
|
33849
|
+
},
|
|
33850
|
+
{
|
|
33851
|
+
key: "video-off",
|
|
33852
|
+
group: "device",
|
|
33853
|
+
synonyms: ["video", "spento"]
|
|
33854
|
+
},
|
|
33855
|
+
{
|
|
33856
|
+
key: "music",
|
|
33857
|
+
group: "device",
|
|
33858
|
+
synonyms: ["musica"]
|
|
33859
|
+
},
|
|
33860
|
+
{
|
|
33861
|
+
key: "plug",
|
|
33862
|
+
group: "device",
|
|
33863
|
+
synonyms: [
|
|
33864
|
+
"presa",
|
|
33865
|
+
"spina",
|
|
33866
|
+
"plug"
|
|
33867
|
+
]
|
|
33868
|
+
},
|
|
33869
|
+
{
|
|
33870
|
+
key: "plug-zap",
|
|
33871
|
+
group: "device",
|
|
33872
|
+
synonyms: ["presa", "alimentata"]
|
|
33873
|
+
},
|
|
33874
|
+
{
|
|
33875
|
+
key: "power",
|
|
33876
|
+
group: "device",
|
|
33877
|
+
synonyms: [
|
|
33878
|
+
"accensione",
|
|
33879
|
+
"alimentazione",
|
|
33880
|
+
"power"
|
|
33881
|
+
]
|
|
33882
|
+
},
|
|
33883
|
+
{
|
|
33884
|
+
key: "power-off",
|
|
33885
|
+
group: "device",
|
|
33886
|
+
synonyms: ["spegnimento", "spento"]
|
|
33887
|
+
},
|
|
33888
|
+
{
|
|
33889
|
+
key: "cable",
|
|
33890
|
+
group: "device",
|
|
33891
|
+
synonyms: ["cavo"]
|
|
33892
|
+
},
|
|
33893
|
+
{
|
|
33894
|
+
key: "battery",
|
|
33895
|
+
group: "device",
|
|
33896
|
+
synonyms: ["batteria"]
|
|
33897
|
+
},
|
|
33898
|
+
{
|
|
33899
|
+
key: "battery-charging",
|
|
33900
|
+
group: "device",
|
|
33901
|
+
synonyms: [
|
|
33902
|
+
"batteria",
|
|
33903
|
+
"carica",
|
|
33904
|
+
"ricarica"
|
|
33905
|
+
]
|
|
33906
|
+
},
|
|
33907
|
+
{
|
|
33908
|
+
key: "battery-full",
|
|
33909
|
+
group: "device",
|
|
33910
|
+
synonyms: [
|
|
33911
|
+
"batteria",
|
|
33912
|
+
"carica",
|
|
33913
|
+
"piena"
|
|
33914
|
+
]
|
|
33915
|
+
},
|
|
33916
|
+
{
|
|
33917
|
+
key: "battery-low",
|
|
33918
|
+
group: "device",
|
|
33919
|
+
synonyms: ["batteria", "scarica"]
|
|
33920
|
+
},
|
|
33921
|
+
{
|
|
33922
|
+
key: "key",
|
|
33923
|
+
group: "device",
|
|
33924
|
+
synonyms: ["chiave"]
|
|
33925
|
+
},
|
|
33926
|
+
{
|
|
33927
|
+
key: "key-round",
|
|
33928
|
+
group: "device",
|
|
33929
|
+
synonyms: ["chiave", "tonda"]
|
|
33930
|
+
},
|
|
33931
|
+
{
|
|
33932
|
+
key: "mailbox",
|
|
33933
|
+
group: "device",
|
|
33934
|
+
synonyms: [
|
|
33935
|
+
"cassetta",
|
|
33936
|
+
"postale",
|
|
33937
|
+
"posta"
|
|
33938
|
+
]
|
|
33939
|
+
},
|
|
33940
|
+
{
|
|
33941
|
+
key: "package",
|
|
33942
|
+
group: "device",
|
|
33943
|
+
synonyms: ["pacco", "consegna"]
|
|
33944
|
+
},
|
|
33945
|
+
{
|
|
33946
|
+
key: "shield",
|
|
33947
|
+
group: "device",
|
|
33948
|
+
synonyms: [
|
|
33949
|
+
"scudo",
|
|
33950
|
+
"protezione",
|
|
33951
|
+
"sicurezza",
|
|
33952
|
+
"allarme"
|
|
33953
|
+
]
|
|
33954
|
+
},
|
|
33955
|
+
{
|
|
33956
|
+
key: "shield-check",
|
|
33957
|
+
group: "device",
|
|
33958
|
+
synonyms: [
|
|
33959
|
+
"protetto",
|
|
33960
|
+
"sicuro",
|
|
33961
|
+
"armato"
|
|
33962
|
+
]
|
|
33963
|
+
},
|
|
33964
|
+
{
|
|
33965
|
+
key: "shield-off",
|
|
33966
|
+
group: "device",
|
|
33967
|
+
synonyms: [
|
|
33968
|
+
"protezione",
|
|
33969
|
+
"disattivata",
|
|
33970
|
+
"disarmato"
|
|
33971
|
+
]
|
|
33972
|
+
},
|
|
33973
|
+
{
|
|
33974
|
+
key: "briefcase",
|
|
33975
|
+
group: "device",
|
|
33976
|
+
synonyms: [
|
|
33977
|
+
"ufficio",
|
|
33978
|
+
"lavoro",
|
|
33979
|
+
"valigetta",
|
|
33980
|
+
"studio"
|
|
33981
|
+
]
|
|
33982
|
+
},
|
|
33983
|
+
{
|
|
33984
|
+
key: "lightbulb",
|
|
33985
|
+
group: "lighting",
|
|
33986
|
+
synonyms: [
|
|
33987
|
+
"luce",
|
|
33988
|
+
"lampadina",
|
|
33989
|
+
"lampada",
|
|
33990
|
+
"light"
|
|
33991
|
+
]
|
|
33992
|
+
},
|
|
33993
|
+
{
|
|
33994
|
+
key: "lamp",
|
|
33995
|
+
group: "lighting",
|
|
33996
|
+
synonyms: ["lampada", "abatjour"]
|
|
33997
|
+
},
|
|
33998
|
+
{
|
|
33999
|
+
key: "lamp-ceiling",
|
|
34000
|
+
group: "lighting",
|
|
34001
|
+
synonyms: [
|
|
34002
|
+
"plafoniera",
|
|
34003
|
+
"lampadario",
|
|
34004
|
+
"luce",
|
|
34005
|
+
"soffitto"
|
|
34006
|
+
]
|
|
34007
|
+
},
|
|
34008
|
+
{
|
|
34009
|
+
key: "lamp-desk",
|
|
34010
|
+
group: "lighting",
|
|
34011
|
+
synonyms: [
|
|
34012
|
+
"lampada",
|
|
34013
|
+
"scrivania",
|
|
34014
|
+
"abatjour"
|
|
34015
|
+
]
|
|
34016
|
+
},
|
|
34017
|
+
{
|
|
34018
|
+
key: "lamp-floor",
|
|
34019
|
+
group: "lighting",
|
|
34020
|
+
synonyms: [
|
|
34021
|
+
"piantana",
|
|
34022
|
+
"lampada",
|
|
34023
|
+
"terra"
|
|
34024
|
+
]
|
|
34025
|
+
},
|
|
34026
|
+
{
|
|
34027
|
+
key: "flashlight",
|
|
34028
|
+
group: "lighting",
|
|
34029
|
+
synonyms: [
|
|
34030
|
+
"faretto",
|
|
34031
|
+
"torcia",
|
|
34032
|
+
"spot",
|
|
34033
|
+
"faro"
|
|
34034
|
+
]
|
|
34035
|
+
},
|
|
34036
|
+
{
|
|
34037
|
+
key: "heater",
|
|
34038
|
+
group: "lighting",
|
|
34039
|
+
synonyms: [
|
|
34040
|
+
"riscaldamento",
|
|
34041
|
+
"termosifone",
|
|
34042
|
+
"stufa",
|
|
34043
|
+
"calore"
|
|
34044
|
+
]
|
|
34045
|
+
},
|
|
34046
|
+
{
|
|
34047
|
+
key: "snowflake",
|
|
34048
|
+
group: "lighting",
|
|
34049
|
+
synonyms: [
|
|
34050
|
+
"freddo",
|
|
34051
|
+
"raffrescamento",
|
|
34052
|
+
"aria",
|
|
34053
|
+
"condizionata",
|
|
34054
|
+
"neve"
|
|
34055
|
+
]
|
|
34056
|
+
},
|
|
34057
|
+
{
|
|
34058
|
+
key: "thermometer-sun",
|
|
34059
|
+
group: "lighting",
|
|
34060
|
+
synonyms: [
|
|
34061
|
+
"caldo",
|
|
34062
|
+
"temperatura",
|
|
34063
|
+
"alta"
|
|
34064
|
+
]
|
|
34065
|
+
},
|
|
34066
|
+
{
|
|
34067
|
+
key: "thermometer-snowflake",
|
|
34068
|
+
group: "lighting",
|
|
34069
|
+
synonyms: [
|
|
34070
|
+
"freddo",
|
|
34071
|
+
"temperatura",
|
|
34072
|
+
"bassa"
|
|
34073
|
+
]
|
|
34074
|
+
},
|
|
34075
|
+
{
|
|
34076
|
+
key: "refrigerator",
|
|
34077
|
+
group: "lighting",
|
|
34078
|
+
synonyms: ["frigorifero", "frigo"]
|
|
34079
|
+
},
|
|
34080
|
+
{
|
|
34081
|
+
key: "microwave",
|
|
34082
|
+
group: "lighting",
|
|
34083
|
+
synonyms: ["microonde", "forno"]
|
|
34084
|
+
},
|
|
34085
|
+
{
|
|
34086
|
+
key: "washing-machine",
|
|
34087
|
+
group: "lighting",
|
|
34088
|
+
synonyms: [
|
|
34089
|
+
"lavatrice",
|
|
34090
|
+
"lavastoviglie",
|
|
34091
|
+
"asciugatrice"
|
|
34092
|
+
]
|
|
34093
|
+
},
|
|
34094
|
+
{
|
|
34095
|
+
key: "cooking-pot",
|
|
34096
|
+
group: "lighting",
|
|
34097
|
+
synonyms: [
|
|
34098
|
+
"pentola",
|
|
34099
|
+
"cucina",
|
|
34100
|
+
"fornello"
|
|
34101
|
+
]
|
|
34102
|
+
},
|
|
34103
|
+
{
|
|
34104
|
+
key: "utensils",
|
|
34105
|
+
group: "lighting",
|
|
34106
|
+
synonyms: [
|
|
34107
|
+
"cucina",
|
|
34108
|
+
"posate",
|
|
34109
|
+
"sala",
|
|
34110
|
+
"pranzo"
|
|
34111
|
+
]
|
|
34112
|
+
},
|
|
34113
|
+
{
|
|
34114
|
+
key: "thermometer",
|
|
34115
|
+
group: "sensing",
|
|
34116
|
+
synonyms: [
|
|
34117
|
+
"temperatura",
|
|
34118
|
+
"termometro",
|
|
34119
|
+
"termostato"
|
|
34120
|
+
]
|
|
34121
|
+
},
|
|
34122
|
+
{
|
|
34123
|
+
key: "droplets",
|
|
34124
|
+
group: "sensing",
|
|
34125
|
+
synonyms: [
|
|
34126
|
+
"umidita",
|
|
34127
|
+
"acqua",
|
|
34128
|
+
"allagamento",
|
|
34129
|
+
"perdita"
|
|
34130
|
+
]
|
|
34131
|
+
},
|
|
34132
|
+
{
|
|
34133
|
+
key: "droplet",
|
|
34134
|
+
group: "sensing",
|
|
34135
|
+
synonyms: [
|
|
34136
|
+
"goccia",
|
|
34137
|
+
"acqua",
|
|
34138
|
+
"perdita",
|
|
34139
|
+
"allagamento"
|
|
34140
|
+
]
|
|
34141
|
+
},
|
|
34142
|
+
{
|
|
34143
|
+
key: "gauge",
|
|
34144
|
+
group: "sensing",
|
|
34145
|
+
synonyms: [
|
|
34146
|
+
"misura",
|
|
34147
|
+
"livello",
|
|
34148
|
+
"pressione",
|
|
34149
|
+
"indicatore"
|
|
34150
|
+
]
|
|
34151
|
+
},
|
|
34152
|
+
{
|
|
34153
|
+
key: "gauge2",
|
|
34154
|
+
group: "sensing",
|
|
34155
|
+
synonyms: [
|
|
34156
|
+
"misura",
|
|
34157
|
+
"livello",
|
|
34158
|
+
"pressione",
|
|
34159
|
+
"indicatore"
|
|
34160
|
+
],
|
|
34161
|
+
aliasOf: "gauge"
|
|
34162
|
+
},
|
|
34163
|
+
{
|
|
34164
|
+
key: "sun",
|
|
34165
|
+
group: "sensing",
|
|
34166
|
+
synonyms: [
|
|
34167
|
+
"sole",
|
|
34168
|
+
"luminosita",
|
|
34169
|
+
"giorno",
|
|
34170
|
+
"esterno"
|
|
34171
|
+
]
|
|
34172
|
+
},
|
|
34173
|
+
{
|
|
34174
|
+
key: "sun-medium",
|
|
34175
|
+
group: "sensing",
|
|
34176
|
+
synonyms: ["sole", "luminosita"]
|
|
34177
|
+
},
|
|
34178
|
+
{
|
|
34179
|
+
key: "sunrise",
|
|
34180
|
+
group: "sensing",
|
|
34181
|
+
synonyms: ["alba"]
|
|
34182
|
+
},
|
|
34183
|
+
{
|
|
34184
|
+
key: "moon",
|
|
34185
|
+
group: "sensing",
|
|
34186
|
+
synonyms: [
|
|
34187
|
+
"notte",
|
|
34188
|
+
"luna",
|
|
34189
|
+
"notturna",
|
|
34190
|
+
"nightvision"
|
|
34191
|
+
]
|
|
34192
|
+
},
|
|
34193
|
+
{
|
|
34194
|
+
key: "wind",
|
|
34195
|
+
group: "sensing",
|
|
34196
|
+
synonyms: [
|
|
34197
|
+
"vento",
|
|
34198
|
+
"aria",
|
|
34199
|
+
"gas",
|
|
34200
|
+
"monossido",
|
|
34201
|
+
"co"
|
|
34202
|
+
]
|
|
34203
|
+
},
|
|
34204
|
+
{
|
|
34205
|
+
key: "cloud",
|
|
34206
|
+
group: "sensing",
|
|
34207
|
+
synonyms: ["nuvola", "nuvoloso"]
|
|
34208
|
+
},
|
|
34209
|
+
{
|
|
34210
|
+
key: "cloud-rain",
|
|
34211
|
+
group: "sensing",
|
|
34212
|
+
synonyms: ["pioggia"]
|
|
34213
|
+
},
|
|
34214
|
+
{
|
|
34215
|
+
key: "cloud-sun",
|
|
34216
|
+
group: "sensing",
|
|
34217
|
+
synonyms: [
|
|
34218
|
+
"variabile",
|
|
34219
|
+
"sole",
|
|
34220
|
+
"nuvole"
|
|
34221
|
+
]
|
|
34222
|
+
},
|
|
34223
|
+
{
|
|
34224
|
+
key: "waves",
|
|
34225
|
+
group: "sensing",
|
|
34226
|
+
synonyms: [
|
|
34227
|
+
"onde",
|
|
34228
|
+
"acqua",
|
|
34229
|
+
"vibrazione"
|
|
34230
|
+
]
|
|
34231
|
+
},
|
|
34232
|
+
{
|
|
34233
|
+
key: "sprout",
|
|
34234
|
+
group: "sensing",
|
|
34235
|
+
synonyms: [
|
|
34236
|
+
"irrigazione",
|
|
34237
|
+
"pianta",
|
|
34238
|
+
"germoglio",
|
|
34239
|
+
"orto"
|
|
34240
|
+
]
|
|
34241
|
+
},
|
|
34242
|
+
{
|
|
34243
|
+
key: "leaf",
|
|
34244
|
+
group: "sensing",
|
|
34245
|
+
synonyms: [
|
|
34246
|
+
"foglia",
|
|
34247
|
+
"pianta",
|
|
34248
|
+
"verde"
|
|
34249
|
+
]
|
|
34250
|
+
},
|
|
34251
|
+
{
|
|
34252
|
+
key: "flower",
|
|
34253
|
+
group: "sensing",
|
|
34254
|
+
synonyms: ["fiore", "pianta"]
|
|
34255
|
+
},
|
|
34256
|
+
{
|
|
34257
|
+
key: "zap",
|
|
34258
|
+
group: "sensing",
|
|
34259
|
+
synonyms: [
|
|
34260
|
+
"energia",
|
|
34261
|
+
"corrente",
|
|
34262
|
+
"consumo",
|
|
34263
|
+
"watt",
|
|
34264
|
+
"elettricita"
|
|
34265
|
+
]
|
|
34266
|
+
},
|
|
34267
|
+
{
|
|
34268
|
+
key: "flame",
|
|
34269
|
+
group: "sensing",
|
|
34270
|
+
synonyms: [
|
|
34271
|
+
"fiamma",
|
|
34272
|
+
"gas",
|
|
34273
|
+
"fuoco",
|
|
34274
|
+
"incendio"
|
|
34275
|
+
]
|
|
34276
|
+
},
|
|
34277
|
+
{
|
|
34278
|
+
key: "bell",
|
|
34279
|
+
group: "sensing",
|
|
34280
|
+
synonyms: [
|
|
34281
|
+
"campanello",
|
|
34282
|
+
"suoneria",
|
|
34283
|
+
"notifica",
|
|
34284
|
+
"bell",
|
|
34285
|
+
"chime"
|
|
34286
|
+
]
|
|
34287
|
+
},
|
|
34288
|
+
{
|
|
34289
|
+
key: "bell-ring",
|
|
34290
|
+
group: "sensing",
|
|
34291
|
+
synonyms: [
|
|
34292
|
+
"campanello",
|
|
34293
|
+
"suona",
|
|
34294
|
+
"doorbell",
|
|
34295
|
+
"notifica"
|
|
34296
|
+
]
|
|
34297
|
+
},
|
|
34298
|
+
{
|
|
34299
|
+
key: "bell-off",
|
|
34300
|
+
group: "sensing",
|
|
34301
|
+
synonyms: [
|
|
34302
|
+
"silenzioso",
|
|
34303
|
+
"notifiche",
|
|
34304
|
+
"disattivate",
|
|
34305
|
+
"muto"
|
|
34306
|
+
]
|
|
34307
|
+
},
|
|
34308
|
+
{
|
|
34309
|
+
key: "siren",
|
|
34310
|
+
group: "sensing",
|
|
34311
|
+
synonyms: ["sirena", "allarme"]
|
|
34312
|
+
},
|
|
34313
|
+
{
|
|
34314
|
+
key: "radar",
|
|
34315
|
+
group: "sensing",
|
|
34316
|
+
synonyms: [
|
|
34317
|
+
"movimento",
|
|
34318
|
+
"presenza",
|
|
34319
|
+
"pir",
|
|
34320
|
+
"rilevamento",
|
|
34321
|
+
"radar"
|
|
34322
|
+
]
|
|
34323
|
+
},
|
|
34324
|
+
{
|
|
34325
|
+
key: "activity",
|
|
34326
|
+
group: "sensing",
|
|
34327
|
+
synonyms: [
|
|
34328
|
+
"attivita",
|
|
34329
|
+
"sensore",
|
|
34330
|
+
"generico"
|
|
34331
|
+
]
|
|
34332
|
+
},
|
|
34333
|
+
{
|
|
34334
|
+
key: "hash",
|
|
34335
|
+
group: "sensing",
|
|
34336
|
+
synonyms: [
|
|
34337
|
+
"numero",
|
|
34338
|
+
"contatore",
|
|
34339
|
+
"valore"
|
|
34340
|
+
]
|
|
34341
|
+
},
|
|
34342
|
+
{
|
|
34343
|
+
key: "clock",
|
|
34344
|
+
group: "sensing",
|
|
34345
|
+
synonyms: [
|
|
34346
|
+
"orologio",
|
|
34347
|
+
"ora",
|
|
34348
|
+
"tempo"
|
|
34349
|
+
]
|
|
34350
|
+
},
|
|
34351
|
+
{
|
|
34352
|
+
key: "timer",
|
|
34353
|
+
group: "sensing",
|
|
34354
|
+
synonyms: [
|
|
34355
|
+
"timer",
|
|
34356
|
+
"conto",
|
|
34357
|
+
"rovescia"
|
|
34358
|
+
]
|
|
34359
|
+
},
|
|
34360
|
+
{
|
|
34361
|
+
key: "calendar",
|
|
34362
|
+
group: "sensing",
|
|
34363
|
+
synonyms: [
|
|
34364
|
+
"calendario",
|
|
34365
|
+
"data",
|
|
34366
|
+
"pianificazione"
|
|
34367
|
+
]
|
|
34368
|
+
},
|
|
34369
|
+
{
|
|
34370
|
+
key: "pipette",
|
|
34371
|
+
group: "sensing",
|
|
34372
|
+
synonyms: [
|
|
34373
|
+
"qualita",
|
|
34374
|
+
"aria",
|
|
34375
|
+
"misura",
|
|
34376
|
+
"campione"
|
|
34377
|
+
]
|
|
34378
|
+
},
|
|
34379
|
+
{
|
|
34380
|
+
key: "fan",
|
|
34381
|
+
group: "sensing",
|
|
34382
|
+
synonyms: [
|
|
34383
|
+
"ventilatore",
|
|
34384
|
+
"ventola",
|
|
34385
|
+
"aria"
|
|
34386
|
+
]
|
|
34387
|
+
},
|
|
34388
|
+
{
|
|
34389
|
+
key: "bath",
|
|
34390
|
+
group: "sensing",
|
|
34391
|
+
synonyms: [
|
|
34392
|
+
"bagno",
|
|
34393
|
+
"vasca",
|
|
34394
|
+
"doccia"
|
|
34395
|
+
]
|
|
34396
|
+
},
|
|
34397
|
+
{
|
|
34398
|
+
key: "footprints",
|
|
34399
|
+
group: "sensing",
|
|
34400
|
+
synonyms: [
|
|
34401
|
+
"movimento",
|
|
34402
|
+
"passi",
|
|
34403
|
+
"presenza",
|
|
34404
|
+
"motion"
|
|
34405
|
+
]
|
|
34406
|
+
},
|
|
34407
|
+
{
|
|
34408
|
+
key: "alarm-smoke",
|
|
34409
|
+
group: "sensing",
|
|
34410
|
+
synonyms: [
|
|
34411
|
+
"fumo",
|
|
34412
|
+
"antincendio",
|
|
34413
|
+
"rilevatore"
|
|
34414
|
+
]
|
|
34415
|
+
},
|
|
34416
|
+
{
|
|
34417
|
+
key: "shield-alert",
|
|
34418
|
+
group: "sensing",
|
|
34419
|
+
synonyms: [
|
|
34420
|
+
"manomissione",
|
|
34421
|
+
"allarme",
|
|
34422
|
+
"tamper",
|
|
34423
|
+
"avviso"
|
|
34424
|
+
]
|
|
34425
|
+
},
|
|
34426
|
+
{
|
|
34427
|
+
key: "vibrate",
|
|
34428
|
+
group: "sensing",
|
|
34429
|
+
synonyms: [
|
|
34430
|
+
"vibrazione",
|
|
34431
|
+
"urto",
|
|
34432
|
+
"tamper"
|
|
34433
|
+
]
|
|
34434
|
+
},
|
|
34435
|
+
{
|
|
34436
|
+
key: "wifi",
|
|
34437
|
+
group: "sensing",
|
|
34438
|
+
synonyms: [
|
|
34439
|
+
"wifi",
|
|
34440
|
+
"rete",
|
|
34441
|
+
"segnale"
|
|
34442
|
+
]
|
|
34443
|
+
},
|
|
34444
|
+
{
|
|
34445
|
+
key: "wifi-off",
|
|
34446
|
+
group: "sensing",
|
|
34447
|
+
synonyms: [
|
|
34448
|
+
"wifi",
|
|
34449
|
+
"assente",
|
|
34450
|
+
"offline",
|
|
34451
|
+
"disconnesso"
|
|
34452
|
+
]
|
|
34453
|
+
},
|
|
34454
|
+
{
|
|
34455
|
+
key: "volume-2",
|
|
34456
|
+
group: "sensing",
|
|
34457
|
+
synonyms: [
|
|
34458
|
+
"volume",
|
|
34459
|
+
"audio",
|
|
34460
|
+
"altoparlante",
|
|
34461
|
+
"suono"
|
|
34462
|
+
]
|
|
34463
|
+
},
|
|
34464
|
+
{
|
|
34465
|
+
key: "volume-x",
|
|
34466
|
+
group: "sensing",
|
|
34467
|
+
synonyms: [
|
|
34468
|
+
"muto",
|
|
34469
|
+
"silenziato",
|
|
34470
|
+
"volume",
|
|
34471
|
+
"spento"
|
|
34472
|
+
]
|
|
34473
|
+
},
|
|
34474
|
+
{
|
|
34475
|
+
key: "heart",
|
|
34476
|
+
group: "sensing",
|
|
34477
|
+
synonyms: [
|
|
34478
|
+
"cuore",
|
|
34479
|
+
"preferito",
|
|
34480
|
+
"salute"
|
|
34481
|
+
]
|
|
34482
|
+
},
|
|
34483
|
+
{
|
|
34484
|
+
key: "heart-pulse",
|
|
34485
|
+
group: "sensing",
|
|
34486
|
+
synonyms: [
|
|
34487
|
+
"battito",
|
|
34488
|
+
"salute",
|
|
34489
|
+
"monitoraggio"
|
|
34490
|
+
]
|
|
34491
|
+
},
|
|
34492
|
+
{
|
|
34493
|
+
key: "star",
|
|
34494
|
+
group: "sensing",
|
|
34495
|
+
synonyms: [
|
|
34496
|
+
"preferito",
|
|
34497
|
+
"stella",
|
|
34498
|
+
"importante"
|
|
34499
|
+
]
|
|
34500
|
+
},
|
|
34501
|
+
{
|
|
34502
|
+
key: "sparkles",
|
|
34503
|
+
group: "sensing",
|
|
34504
|
+
synonyms: [
|
|
34505
|
+
"automatico",
|
|
34506
|
+
"intelligente",
|
|
34507
|
+
"ai",
|
|
34508
|
+
"scena"
|
|
34509
|
+
]
|
|
34510
|
+
},
|
|
34511
|
+
{
|
|
34512
|
+
key: "house",
|
|
34513
|
+
group: "place",
|
|
34514
|
+
synonyms: [
|
|
34515
|
+
"casa",
|
|
34516
|
+
"abitazione",
|
|
34517
|
+
"home"
|
|
34518
|
+
]
|
|
34519
|
+
},
|
|
34520
|
+
{
|
|
34521
|
+
key: "sofa",
|
|
34522
|
+
group: "place",
|
|
34523
|
+
synonyms: [
|
|
34524
|
+
"salone",
|
|
34525
|
+
"soggiorno",
|
|
34526
|
+
"divano",
|
|
34527
|
+
"living"
|
|
34528
|
+
]
|
|
34529
|
+
},
|
|
34530
|
+
{
|
|
34531
|
+
key: "bed-double",
|
|
34532
|
+
group: "place",
|
|
34533
|
+
synonyms: [
|
|
34534
|
+
"camera",
|
|
34535
|
+
"letto",
|
|
34536
|
+
"matrimoniale"
|
|
34537
|
+
]
|
|
34538
|
+
},
|
|
34539
|
+
{
|
|
34540
|
+
key: "bed",
|
|
34541
|
+
group: "place",
|
|
34542
|
+
synonyms: [
|
|
34543
|
+
"cameretta",
|
|
34544
|
+
"letto",
|
|
34545
|
+
"singolo"
|
|
34546
|
+
]
|
|
34547
|
+
},
|
|
34548
|
+
{
|
|
34549
|
+
key: "warehouse",
|
|
34550
|
+
group: "place",
|
|
34551
|
+
synonyms: [
|
|
34552
|
+
"magazzino",
|
|
34553
|
+
"capanno",
|
|
34554
|
+
"deposito",
|
|
34555
|
+
"cantina"
|
|
34556
|
+
]
|
|
34557
|
+
},
|
|
34558
|
+
{
|
|
34559
|
+
key: "trees",
|
|
34560
|
+
group: "place",
|
|
34561
|
+
synonyms: [
|
|
34562
|
+
"giardino",
|
|
34563
|
+
"alberi",
|
|
34564
|
+
"esterno",
|
|
34565
|
+
"parco"
|
|
34566
|
+
]
|
|
34567
|
+
},
|
|
34568
|
+
{
|
|
34569
|
+
key: "tree-pine",
|
|
34570
|
+
group: "place",
|
|
34571
|
+
synonyms: [
|
|
34572
|
+
"albero",
|
|
34573
|
+
"pino",
|
|
34574
|
+
"giardino"
|
|
34575
|
+
]
|
|
34576
|
+
},
|
|
34577
|
+
{
|
|
34578
|
+
key: "fence",
|
|
34579
|
+
group: "place",
|
|
34580
|
+
synonyms: [
|
|
34581
|
+
"recinto",
|
|
34582
|
+
"cancello",
|
|
34583
|
+
"staccionata",
|
|
34584
|
+
"perimetro"
|
|
34585
|
+
]
|
|
34586
|
+
},
|
|
34587
|
+
{
|
|
34588
|
+
key: "store",
|
|
34589
|
+
group: "place",
|
|
34590
|
+
synonyms: [
|
|
34591
|
+
"negozio",
|
|
34592
|
+
"ingresso",
|
|
34593
|
+
"vetrina"
|
|
34594
|
+
]
|
|
34595
|
+
},
|
|
34596
|
+
{
|
|
34597
|
+
key: "building",
|
|
34598
|
+
group: "place",
|
|
34599
|
+
synonyms: ["edificio", "palazzo"]
|
|
34600
|
+
},
|
|
34601
|
+
{
|
|
34602
|
+
key: "building-2",
|
|
34603
|
+
group: "place",
|
|
34604
|
+
synonyms: [
|
|
34605
|
+
"edificio",
|
|
34606
|
+
"uffici",
|
|
34607
|
+
"condominio"
|
|
34608
|
+
]
|
|
34609
|
+
},
|
|
34610
|
+
{
|
|
34611
|
+
key: "mountain",
|
|
34612
|
+
group: "place",
|
|
34613
|
+
synonyms: [
|
|
34614
|
+
"montagna",
|
|
34615
|
+
"esterno",
|
|
34616
|
+
"panorama"
|
|
34617
|
+
]
|
|
34618
|
+
},
|
|
34619
|
+
{
|
|
34620
|
+
key: "umbrella",
|
|
34621
|
+
group: "place",
|
|
34622
|
+
synonyms: [
|
|
34623
|
+
"tenda",
|
|
34624
|
+
"markise",
|
|
34625
|
+
"ombrellone",
|
|
34626
|
+
"pergola",
|
|
34627
|
+
"veranda"
|
|
34628
|
+
]
|
|
34629
|
+
},
|
|
34630
|
+
{
|
|
34631
|
+
key: "dumbbell",
|
|
34632
|
+
group: "place",
|
|
34633
|
+
synonyms: ["palestra", "attrezzi"]
|
|
34634
|
+
},
|
|
34635
|
+
{
|
|
34636
|
+
key: "wrench",
|
|
34637
|
+
group: "place",
|
|
34638
|
+
synonyms: [
|
|
34639
|
+
"officina",
|
|
34640
|
+
"manutenzione",
|
|
34641
|
+
"attrezzi",
|
|
34642
|
+
"utenze"
|
|
34643
|
+
]
|
|
34644
|
+
},
|
|
34645
|
+
{
|
|
34646
|
+
key: "hammer",
|
|
34647
|
+
group: "place",
|
|
34648
|
+
synonyms: [
|
|
34649
|
+
"officina",
|
|
34650
|
+
"martello",
|
|
34651
|
+
"lavori"
|
|
34652
|
+
]
|
|
34653
|
+
},
|
|
34654
|
+
{
|
|
34655
|
+
key: "drill",
|
|
34656
|
+
group: "place",
|
|
34657
|
+
synonyms: [
|
|
34658
|
+
"officina",
|
|
34659
|
+
"trapano",
|
|
34660
|
+
"lavori"
|
|
34661
|
+
]
|
|
34662
|
+
},
|
|
34663
|
+
{
|
|
34664
|
+
key: "waves-ladder",
|
|
34665
|
+
group: "place",
|
|
34666
|
+
synonyms: ["piscina", "vasca"]
|
|
34667
|
+
},
|
|
34668
|
+
{
|
|
34669
|
+
key: "circle-parking",
|
|
34670
|
+
group: "place",
|
|
34671
|
+
synonyms: [
|
|
34672
|
+
"parcheggio",
|
|
34673
|
+
"posto",
|
|
34674
|
+
"auto",
|
|
34675
|
+
"garage"
|
|
34676
|
+
]
|
|
34677
|
+
},
|
|
34678
|
+
{
|
|
34679
|
+
key: "route",
|
|
34680
|
+
group: "place",
|
|
34681
|
+
synonyms: [
|
|
34682
|
+
"percorso",
|
|
34683
|
+
"strada",
|
|
34684
|
+
"vialetto",
|
|
34685
|
+
"tragitto"
|
|
34686
|
+
]
|
|
34687
|
+
},
|
|
34688
|
+
{
|
|
34689
|
+
key: "car",
|
|
34690
|
+
group: "life",
|
|
34691
|
+
synonyms: [
|
|
34692
|
+
"auto",
|
|
34693
|
+
"macchina",
|
|
34694
|
+
"veicolo",
|
|
34695
|
+
"parcheggio"
|
|
34696
|
+
]
|
|
34697
|
+
},
|
|
34698
|
+
{
|
|
34699
|
+
key: "bike",
|
|
34700
|
+
group: "life",
|
|
34701
|
+
synonyms: [
|
|
34702
|
+
"bicicletta",
|
|
34703
|
+
"bici",
|
|
34704
|
+
"moto"
|
|
34705
|
+
]
|
|
34706
|
+
},
|
|
34707
|
+
{
|
|
34708
|
+
key: "bus",
|
|
34709
|
+
group: "life",
|
|
34710
|
+
synonyms: ["autobus", "pullman"]
|
|
34711
|
+
},
|
|
34712
|
+
{
|
|
34713
|
+
key: "truck",
|
|
34714
|
+
group: "life",
|
|
34715
|
+
synonyms: [
|
|
34716
|
+
"camion",
|
|
34717
|
+
"furgone",
|
|
34718
|
+
"consegna"
|
|
34719
|
+
]
|
|
34720
|
+
},
|
|
34721
|
+
{
|
|
34722
|
+
key: "plane",
|
|
34723
|
+
group: "life",
|
|
34724
|
+
synonyms: ["aereo"]
|
|
34725
|
+
},
|
|
34726
|
+
{
|
|
34727
|
+
key: "train-front",
|
|
34728
|
+
group: "life",
|
|
34729
|
+
synonyms: ["treno"]
|
|
34730
|
+
},
|
|
34731
|
+
{
|
|
34732
|
+
key: "sailboat",
|
|
34733
|
+
group: "life",
|
|
34734
|
+
synonyms: ["barca", "imbarcazione"]
|
|
34735
|
+
},
|
|
34736
|
+
{
|
|
34737
|
+
key: "dog",
|
|
34738
|
+
group: "life",
|
|
34739
|
+
synonyms: ["cane", "animale"]
|
|
34740
|
+
},
|
|
34741
|
+
{
|
|
34742
|
+
key: "cat",
|
|
34743
|
+
group: "life",
|
|
34744
|
+
synonyms: ["gatto", "animale"]
|
|
34745
|
+
},
|
|
34746
|
+
{
|
|
34747
|
+
key: "bird",
|
|
34748
|
+
group: "life",
|
|
34749
|
+
synonyms: ["uccello", "animale"]
|
|
34750
|
+
},
|
|
34751
|
+
{
|
|
34752
|
+
key: "paw-print",
|
|
34753
|
+
group: "life",
|
|
34754
|
+
synonyms: [
|
|
34755
|
+
"animale",
|
|
34756
|
+
"zampa",
|
|
34757
|
+
"pet"
|
|
34758
|
+
]
|
|
34759
|
+
},
|
|
34760
|
+
{
|
|
34761
|
+
key: "baby",
|
|
34762
|
+
group: "life",
|
|
34763
|
+
synonyms: [
|
|
34764
|
+
"neonato",
|
|
34765
|
+
"bimbo",
|
|
34766
|
+
"cameretta",
|
|
34767
|
+
"babymonitor"
|
|
34768
|
+
]
|
|
34769
|
+
},
|
|
34770
|
+
{
|
|
34771
|
+
key: "user",
|
|
34772
|
+
group: "life",
|
|
34773
|
+
synonyms: ["persona", "utente"]
|
|
34774
|
+
},
|
|
34775
|
+
{
|
|
34776
|
+
key: "users",
|
|
34777
|
+
group: "life",
|
|
34778
|
+
synonyms: [
|
|
34779
|
+
"persone",
|
|
34780
|
+
"gruppo",
|
|
34781
|
+
"famiglia"
|
|
34782
|
+
]
|
|
34783
|
+
},
|
|
34784
|
+
{
|
|
34785
|
+
key: "person-standing",
|
|
34786
|
+
group: "life",
|
|
34787
|
+
synonyms: [
|
|
34788
|
+
"persona",
|
|
34789
|
+
"piedi",
|
|
34790
|
+
"presenza"
|
|
34791
|
+
]
|
|
34792
|
+
}
|
|
34793
|
+
];
|
|
34794
|
+
DISPLAY_ICON_VOCABULARY.map((e) => e.key);
|
|
34795
|
+
DISPLAY_ICON_VOCABULARY.filter((e) => e.aliasOf === void 0).map((e) => e.key);
|
|
34796
|
+
new Map(DISPLAY_ICON_VOCABULARY.map((e) => [e.key, e]));
|
|
32953
34797
|
Object.freeze({
|
|
34798
|
+
"accessories.getStatus": {
|
|
34799
|
+
capName: "accessories",
|
|
34800
|
+
capScope: "device",
|
|
34801
|
+
addonId: null,
|
|
34802
|
+
access: "view"
|
|
34803
|
+
},
|
|
32954
34804
|
"accessories.setChildHidden": {
|
|
32955
34805
|
capName: "accessories",
|
|
32956
34806
|
capScope: "device",
|
|
@@ -33233,6 +35083,12 @@ Object.freeze({
|
|
|
33233
35083
|
addonId: null,
|
|
33234
35084
|
access: "view"
|
|
33235
35085
|
},
|
|
35086
|
+
"airQualitySensor.getStatus": {
|
|
35087
|
+
capName: "air-quality-sensor",
|
|
35088
|
+
capScope: "device",
|
|
35089
|
+
addonId: null,
|
|
35090
|
+
access: "view"
|
|
35091
|
+
},
|
|
33236
35092
|
"alarmPanel.arm": {
|
|
33237
35093
|
capName: "alarm-panel",
|
|
33238
35094
|
capScope: "device",
|
|
@@ -33245,6 +35101,12 @@ Object.freeze({
|
|
|
33245
35101
|
addonId: null,
|
|
33246
35102
|
access: "create"
|
|
33247
35103
|
},
|
|
35104
|
+
"alarmPanel.getStatus": {
|
|
35105
|
+
capName: "alarm-panel",
|
|
35106
|
+
capScope: "device",
|
|
35107
|
+
addonId: null,
|
|
35108
|
+
access: "view"
|
|
35109
|
+
},
|
|
33248
35110
|
"alarmPanel.trigger": {
|
|
33249
35111
|
capName: "alarm-panel",
|
|
33250
35112
|
capScope: "device",
|
|
@@ -33293,6 +35155,30 @@ Object.freeze({
|
|
|
33293
35155
|
addonId: null,
|
|
33294
35156
|
access: "create"
|
|
33295
35157
|
},
|
|
35158
|
+
"ambientLightSensor.getStatus": {
|
|
35159
|
+
capName: "ambient-light-sensor",
|
|
35160
|
+
capScope: "device",
|
|
35161
|
+
addonId: null,
|
|
35162
|
+
access: "view"
|
|
35163
|
+
},
|
|
35164
|
+
"audioAnalysis.applyDeviceSettingsPatch": {
|
|
35165
|
+
capName: "audio-analysis",
|
|
35166
|
+
capScope: "device",
|
|
35167
|
+
addonId: null,
|
|
35168
|
+
access: "create"
|
|
35169
|
+
},
|
|
35170
|
+
"audioAnalysis.getDeviceLiveContribution": {
|
|
35171
|
+
capName: "audio-analysis",
|
|
35172
|
+
capScope: "device",
|
|
35173
|
+
addonId: null,
|
|
35174
|
+
access: "view"
|
|
35175
|
+
},
|
|
35176
|
+
"audioAnalysis.getDeviceSettingsContribution": {
|
|
35177
|
+
capName: "audio-analysis",
|
|
35178
|
+
capScope: "device",
|
|
35179
|
+
addonId: null,
|
|
35180
|
+
access: "view"
|
|
35181
|
+
},
|
|
33296
35182
|
"audioAnalysis.resolveDeviceSettings": {
|
|
33297
35183
|
capName: "audio-analysis",
|
|
33298
35184
|
capScope: "device",
|
|
@@ -33455,6 +35341,12 @@ Object.freeze({
|
|
|
33455
35341
|
addonId: null,
|
|
33456
35342
|
access: "create"
|
|
33457
35343
|
},
|
|
35344
|
+
"automationControl.getStatus": {
|
|
35345
|
+
capName: "automation-control",
|
|
35346
|
+
capScope: "device",
|
|
35347
|
+
addonId: null,
|
|
35348
|
+
access: "view"
|
|
35349
|
+
},
|
|
33458
35350
|
"automationControl.trigger": {
|
|
33459
35351
|
capName: "automation-control",
|
|
33460
35352
|
capScope: "device",
|
|
@@ -33551,12 +35443,30 @@ Object.freeze({
|
|
|
33551
35443
|
addonId: null,
|
|
33552
35444
|
access: "create"
|
|
33553
35445
|
},
|
|
35446
|
+
"battery.getStatus": {
|
|
35447
|
+
capName: "battery",
|
|
35448
|
+
capScope: "device",
|
|
35449
|
+
addonId: null,
|
|
35450
|
+
access: "view"
|
|
35451
|
+
},
|
|
33554
35452
|
"battery.wakeForStream": {
|
|
33555
35453
|
capName: "battery",
|
|
33556
35454
|
capScope: "device",
|
|
33557
35455
|
addonId: null,
|
|
33558
35456
|
access: "create"
|
|
33559
35457
|
},
|
|
35458
|
+
"binary.getStatus": {
|
|
35459
|
+
capName: "binary",
|
|
35460
|
+
capScope: "device",
|
|
35461
|
+
addonId: null,
|
|
35462
|
+
access: "view"
|
|
35463
|
+
},
|
|
35464
|
+
"brightness.getStatus": {
|
|
35465
|
+
capName: "brightness",
|
|
35466
|
+
capScope: "device",
|
|
35467
|
+
addonId: null,
|
|
35468
|
+
access: "view"
|
|
35469
|
+
},
|
|
33560
35470
|
"brightness.setBrightness": {
|
|
33561
35471
|
capName: "brightness",
|
|
33562
35472
|
capScope: "device",
|
|
@@ -33671,6 +35581,30 @@ Object.freeze({
|
|
|
33671
35581
|
addonId: null,
|
|
33672
35582
|
access: "view"
|
|
33673
35583
|
},
|
|
35584
|
+
"cameraCredentials.getStatus": {
|
|
35585
|
+
capName: "camera-credentials",
|
|
35586
|
+
capScope: "device",
|
|
35587
|
+
addonId: null,
|
|
35588
|
+
access: "view"
|
|
35589
|
+
},
|
|
35590
|
+
"cameraGridLayout.applyDeviceSettingsPatch": {
|
|
35591
|
+
capName: "camera-grid-layout",
|
|
35592
|
+
capScope: "device",
|
|
35593
|
+
addonId: null,
|
|
35594
|
+
access: "create"
|
|
35595
|
+
},
|
|
35596
|
+
"cameraGridLayout.getDeviceLiveContribution": {
|
|
35597
|
+
capName: "camera-grid-layout",
|
|
35598
|
+
capScope: "device",
|
|
35599
|
+
addonId: null,
|
|
35600
|
+
access: "view"
|
|
35601
|
+
},
|
|
35602
|
+
"cameraGridLayout.getDeviceSettingsContribution": {
|
|
35603
|
+
capName: "camera-grid-layout",
|
|
35604
|
+
capScope: "device",
|
|
35605
|
+
addonId: null,
|
|
35606
|
+
access: "view"
|
|
35607
|
+
},
|
|
33674
35608
|
"cameraGridLayout.getLayout": {
|
|
33675
35609
|
capName: "camera-grid-layout",
|
|
33676
35610
|
capScope: "device",
|
|
@@ -33683,6 +35617,24 @@ Object.freeze({
|
|
|
33683
35617
|
addonId: null,
|
|
33684
35618
|
access: "create"
|
|
33685
35619
|
},
|
|
35620
|
+
"cameraPipelineConfig.applyDeviceSettingsPatch": {
|
|
35621
|
+
capName: "camera-pipeline-config",
|
|
35622
|
+
capScope: "device",
|
|
35623
|
+
addonId: null,
|
|
35624
|
+
access: "create"
|
|
35625
|
+
},
|
|
35626
|
+
"cameraPipelineConfig.getDeviceLiveContribution": {
|
|
35627
|
+
capName: "camera-pipeline-config",
|
|
35628
|
+
capScope: "device",
|
|
35629
|
+
addonId: null,
|
|
35630
|
+
access: "view"
|
|
35631
|
+
},
|
|
35632
|
+
"cameraPipelineConfig.getDeviceSettingsContribution": {
|
|
35633
|
+
capName: "camera-pipeline-config",
|
|
35634
|
+
capScope: "device",
|
|
35635
|
+
addonId: null,
|
|
35636
|
+
access: "view"
|
|
35637
|
+
},
|
|
33686
35638
|
"cameraStreams.getBrokerStreams": {
|
|
33687
35639
|
capName: "camera-streams",
|
|
33688
35640
|
capScope: "device",
|
|
@@ -33713,6 +35665,18 @@ Object.freeze({
|
|
|
33713
35665
|
addonId: null,
|
|
33714
35666
|
access: "view"
|
|
33715
35667
|
},
|
|
35668
|
+
"carbonMonoxide.getStatus": {
|
|
35669
|
+
capName: "carbon-monoxide",
|
|
35670
|
+
capScope: "device",
|
|
35671
|
+
addonId: null,
|
|
35672
|
+
access: "view"
|
|
35673
|
+
},
|
|
35674
|
+
"climateControl.getStatus": {
|
|
35675
|
+
capName: "climate-control",
|
|
35676
|
+
capScope: "device",
|
|
35677
|
+
addonId: null,
|
|
35678
|
+
access: "view"
|
|
35679
|
+
},
|
|
33716
35680
|
"climateControl.setFanMode": {
|
|
33717
35681
|
capName: "climate-control",
|
|
33718
35682
|
capScope: "device",
|
|
@@ -33761,6 +35725,12 @@ Object.freeze({
|
|
|
33761
35725
|
addonId: null,
|
|
33762
35726
|
access: "create"
|
|
33763
35727
|
},
|
|
35728
|
+
"color.getStatus": {
|
|
35729
|
+
capName: "color",
|
|
35730
|
+
capScope: "device",
|
|
35731
|
+
addonId: null,
|
|
35732
|
+
access: "view"
|
|
35733
|
+
},
|
|
33764
35734
|
"color.setColor": {
|
|
33765
35735
|
capName: "color",
|
|
33766
35736
|
capScope: "device",
|
|
@@ -33779,12 +35749,36 @@ Object.freeze({
|
|
|
33779
35749
|
addonId: null,
|
|
33780
35750
|
access: "create"
|
|
33781
35751
|
},
|
|
35752
|
+
"connectivity.getStatus": {
|
|
35753
|
+
capName: "connectivity",
|
|
35754
|
+
capScope: "device",
|
|
35755
|
+
addonId: null,
|
|
35756
|
+
access: "view"
|
|
35757
|
+
},
|
|
35758
|
+
"consumables.getStatus": {
|
|
35759
|
+
capName: "consumables",
|
|
35760
|
+
capScope: "device",
|
|
35761
|
+
addonId: null,
|
|
35762
|
+
access: "view"
|
|
35763
|
+
},
|
|
33782
35764
|
"consumables.reset": {
|
|
33783
35765
|
capName: "consumables",
|
|
33784
35766
|
capScope: "device",
|
|
33785
35767
|
addonId: null,
|
|
33786
35768
|
access: "delete"
|
|
33787
35769
|
},
|
|
35770
|
+
"contact.getStatus": {
|
|
35771
|
+
capName: "contact",
|
|
35772
|
+
capScope: "device",
|
|
35773
|
+
addonId: null,
|
|
35774
|
+
access: "view"
|
|
35775
|
+
},
|
|
35776
|
+
"control.getStatus": {
|
|
35777
|
+
capName: "control",
|
|
35778
|
+
capScope: "device",
|
|
35779
|
+
addonId: null,
|
|
35780
|
+
access: "view"
|
|
35781
|
+
},
|
|
33788
35782
|
"control.setValue": {
|
|
33789
35783
|
capName: "control",
|
|
33790
35784
|
capScope: "device",
|
|
@@ -33851,6 +35845,12 @@ Object.freeze({
|
|
|
33851
35845
|
addonId: null,
|
|
33852
35846
|
access: "create"
|
|
33853
35847
|
},
|
|
35848
|
+
"cover.getStatus": {
|
|
35849
|
+
capName: "cover",
|
|
35850
|
+
capScope: "device",
|
|
35851
|
+
addonId: null,
|
|
35852
|
+
access: "view"
|
|
35853
|
+
},
|
|
33854
35854
|
"cover.open": {
|
|
33855
35855
|
capName: "cover",
|
|
33856
35856
|
capScope: "device",
|
|
@@ -33983,6 +35983,12 @@ Object.freeze({
|
|
|
33983
35983
|
addonId: null,
|
|
33984
35984
|
access: "view"
|
|
33985
35985
|
},
|
|
35986
|
+
"dayNight.getStatus": {
|
|
35987
|
+
capName: "day-night",
|
|
35988
|
+
capScope: "device",
|
|
35989
|
+
addonId: null,
|
|
35990
|
+
access: "view"
|
|
35991
|
+
},
|
|
33986
35992
|
"dayNight.setSettings": {
|
|
33987
35993
|
capName: "day-night",
|
|
33988
35994
|
capScope: "device",
|
|
@@ -34073,6 +36079,30 @@ Object.freeze({
|
|
|
34073
36079
|
addonId: null,
|
|
34074
36080
|
access: "view"
|
|
34075
36081
|
},
|
|
36082
|
+
"detectionPipeline.applyDeviceSettingsPatch": {
|
|
36083
|
+
capName: "detection-pipeline",
|
|
36084
|
+
capScope: "device",
|
|
36085
|
+
addonId: null,
|
|
36086
|
+
access: "create"
|
|
36087
|
+
},
|
|
36088
|
+
"detectionPipeline.getDeviceLiveContribution": {
|
|
36089
|
+
capName: "detection-pipeline",
|
|
36090
|
+
capScope: "device",
|
|
36091
|
+
addonId: null,
|
|
36092
|
+
access: "view"
|
|
36093
|
+
},
|
|
36094
|
+
"detectionPipeline.getDeviceSettingsContribution": {
|
|
36095
|
+
capName: "detection-pipeline",
|
|
36096
|
+
capScope: "device",
|
|
36097
|
+
addonId: null,
|
|
36098
|
+
access: "view"
|
|
36099
|
+
},
|
|
36100
|
+
"deviceAdminLink.getAdminLink": {
|
|
36101
|
+
capName: "device-admin-link",
|
|
36102
|
+
capScope: "device",
|
|
36103
|
+
addonId: null,
|
|
36104
|
+
access: "view"
|
|
36105
|
+
},
|
|
34076
36106
|
"deviceAdoption.adopt": {
|
|
34077
36107
|
capName: "device-adoption",
|
|
34078
36108
|
capScope: "system",
|
|
@@ -34085,6 +36115,12 @@ Object.freeze({
|
|
|
34085
36115
|
addonId: null,
|
|
34086
36116
|
access: "view"
|
|
34087
36117
|
},
|
|
36118
|
+
"deviceAdoption.getStatus": {
|
|
36119
|
+
capName: "device-adoption",
|
|
36120
|
+
capScope: "system",
|
|
36121
|
+
addonId: null,
|
|
36122
|
+
access: "view"
|
|
36123
|
+
},
|
|
34088
36124
|
"deviceAdoption.listCandidateFilters": {
|
|
34089
36125
|
capName: "device-adoption",
|
|
34090
36126
|
capScope: "system",
|
|
@@ -34121,6 +36157,12 @@ Object.freeze({
|
|
|
34121
36157
|
addonId: null,
|
|
34122
36158
|
access: "create"
|
|
34123
36159
|
},
|
|
36160
|
+
"deviceDiscovery.getStatus": {
|
|
36161
|
+
capName: "device-discovery",
|
|
36162
|
+
capScope: "device",
|
|
36163
|
+
addonId: null,
|
|
36164
|
+
access: "view"
|
|
36165
|
+
},
|
|
34124
36166
|
"deviceDiscovery.listDiscovered": {
|
|
34125
36167
|
capName: "device-discovery",
|
|
34126
36168
|
capScope: "device",
|
|
@@ -34139,12 +36181,30 @@ Object.freeze({
|
|
|
34139
36181
|
addonId: null,
|
|
34140
36182
|
access: "create"
|
|
34141
36183
|
},
|
|
36184
|
+
"deviceExport.applyDeviceSettingsPatch": {
|
|
36185
|
+
capName: "device-export",
|
|
36186
|
+
capScope: "system",
|
|
36187
|
+
addonId: null,
|
|
36188
|
+
access: "create"
|
|
36189
|
+
},
|
|
34142
36190
|
"deviceExport.exposeDevice": {
|
|
34143
36191
|
capName: "device-export",
|
|
34144
36192
|
capScope: "system",
|
|
34145
36193
|
addonId: null,
|
|
34146
36194
|
access: "create"
|
|
34147
36195
|
},
|
|
36196
|
+
"deviceExport.getDeviceLiveContribution": {
|
|
36197
|
+
capName: "device-export",
|
|
36198
|
+
capScope: "system",
|
|
36199
|
+
addonId: null,
|
|
36200
|
+
access: "view"
|
|
36201
|
+
},
|
|
36202
|
+
"deviceExport.getDeviceSettingsContribution": {
|
|
36203
|
+
capName: "device-export",
|
|
36204
|
+
capScope: "system",
|
|
36205
|
+
addonId: null,
|
|
36206
|
+
access: "view"
|
|
36207
|
+
},
|
|
34148
36208
|
"deviceExport.getStatus": {
|
|
34149
36209
|
capName: "device-export",
|
|
34150
36210
|
capScope: "system",
|
|
@@ -34241,6 +36301,12 @@ Object.freeze({
|
|
|
34241
36301
|
addonId: null,
|
|
34242
36302
|
access: "create"
|
|
34243
36303
|
},
|
|
36304
|
+
"deviceManager.applyDeviceSettingsPatch": {
|
|
36305
|
+
capName: "device-manager",
|
|
36306
|
+
capScope: "system",
|
|
36307
|
+
addonId: null,
|
|
36308
|
+
access: "create"
|
|
36309
|
+
},
|
|
34244
36310
|
"deviceManager.applyInitialMeta": {
|
|
34245
36311
|
capName: "device-manager",
|
|
34246
36312
|
capScope: "system",
|
|
@@ -34343,6 +36409,12 @@ Object.freeze({
|
|
|
34343
36409
|
addonId: null,
|
|
34344
36410
|
access: "view"
|
|
34345
36411
|
},
|
|
36412
|
+
"deviceManager.getDeviceLiveContribution": {
|
|
36413
|
+
capName: "device-manager",
|
|
36414
|
+
capScope: "system",
|
|
36415
|
+
addonId: null,
|
|
36416
|
+
access: "view"
|
|
36417
|
+
},
|
|
34346
36418
|
"deviceManager.getDeviceLiveInfoAggregate": {
|
|
34347
36419
|
capName: "device-manager",
|
|
34348
36420
|
capScope: "system",
|
|
@@ -34355,6 +36427,12 @@ Object.freeze({
|
|
|
34355
36427
|
addonId: null,
|
|
34356
36428
|
access: "view"
|
|
34357
36429
|
},
|
|
36430
|
+
"deviceManager.getDeviceSettingsContribution": {
|
|
36431
|
+
capName: "device-manager",
|
|
36432
|
+
capScope: "system",
|
|
36433
|
+
addonId: null,
|
|
36434
|
+
access: "view"
|
|
36435
|
+
},
|
|
34358
36436
|
"deviceManager.getDeviceStatusAggregate": {
|
|
34359
36437
|
capName: "device-manager",
|
|
34360
36438
|
capScope: "system",
|
|
@@ -34847,6 +36925,36 @@ Object.freeze({
|
|
|
34847
36925
|
addonId: null,
|
|
34848
36926
|
access: "create"
|
|
34849
36927
|
},
|
|
36928
|
+
"deviceStatus.getStatus": {
|
|
36929
|
+
capName: "device-status",
|
|
36930
|
+
capScope: "device",
|
|
36931
|
+
addonId: null,
|
|
36932
|
+
access: "view"
|
|
36933
|
+
},
|
|
36934
|
+
"doorbell.applyDeviceSettingsPatch": {
|
|
36935
|
+
capName: "doorbell",
|
|
36936
|
+
capScope: "device",
|
|
36937
|
+
addonId: null,
|
|
36938
|
+
access: "create"
|
|
36939
|
+
},
|
|
36940
|
+
"doorbell.getDeviceLiveContribution": {
|
|
36941
|
+
capName: "doorbell",
|
|
36942
|
+
capScope: "device",
|
|
36943
|
+
addonId: null,
|
|
36944
|
+
access: "view"
|
|
36945
|
+
},
|
|
36946
|
+
"doorbell.getDeviceSettingsContribution": {
|
|
36947
|
+
capName: "doorbell",
|
|
36948
|
+
capScope: "device",
|
|
36949
|
+
addonId: null,
|
|
36950
|
+
access: "view"
|
|
36951
|
+
},
|
|
36952
|
+
"doorbell.getStatus": {
|
|
36953
|
+
capName: "doorbell",
|
|
36954
|
+
capScope: "device",
|
|
36955
|
+
addonId: null,
|
|
36956
|
+
access: "view"
|
|
36957
|
+
},
|
|
34850
36958
|
"embeddingEncoder.encode": {
|
|
34851
36959
|
capName: "embedding-encoder",
|
|
34852
36960
|
capScope: "system",
|
|
@@ -34865,6 +36973,18 @@ Object.freeze({
|
|
|
34865
36973
|
addonId: null,
|
|
34866
36974
|
access: "view"
|
|
34867
36975
|
},
|
|
36976
|
+
"enumSensor.getStatus": {
|
|
36977
|
+
capName: "enum-sensor",
|
|
36978
|
+
capScope: "device",
|
|
36979
|
+
addonId: null,
|
|
36980
|
+
access: "view"
|
|
36981
|
+
},
|
|
36982
|
+
"eventEmitter.getStatus": {
|
|
36983
|
+
capName: "event-emitter",
|
|
36984
|
+
capScope: "device",
|
|
36985
|
+
addonId: null,
|
|
36986
|
+
access: "view"
|
|
36987
|
+
},
|
|
34868
36988
|
"events.getEventClipUrl": {
|
|
34869
36989
|
capName: "events",
|
|
34870
36990
|
capScope: "device",
|
|
@@ -34985,6 +37105,12 @@ Object.freeze({
|
|
|
34985
37105
|
addonId: null,
|
|
34986
37106
|
access: "view"
|
|
34987
37107
|
},
|
|
37108
|
+
"fanControl.getStatus": {
|
|
37109
|
+
capName: "fan-control",
|
|
37110
|
+
capScope: "device",
|
|
37111
|
+
addonId: null,
|
|
37112
|
+
access: "view"
|
|
37113
|
+
},
|
|
34988
37114
|
"fanControl.setDirection": {
|
|
34989
37115
|
capName: "fan-control",
|
|
34990
37116
|
capScope: "device",
|
|
@@ -35009,6 +37135,12 @@ Object.freeze({
|
|
|
35009
37135
|
addonId: null,
|
|
35010
37136
|
access: "create"
|
|
35011
37137
|
},
|
|
37138
|
+
"featureProbe.getStatus": {
|
|
37139
|
+
capName: "feature-probe",
|
|
37140
|
+
capScope: "device",
|
|
37141
|
+
addonId: null,
|
|
37142
|
+
access: "view"
|
|
37143
|
+
},
|
|
35012
37144
|
"filesystemBrowse.browse": {
|
|
35013
37145
|
capName: "filesystem-browse",
|
|
35014
37146
|
capScope: "system",
|
|
@@ -35027,6 +37159,24 @@ Object.freeze({
|
|
|
35027
37159
|
addonId: null,
|
|
35028
37160
|
access: "view"
|
|
35029
37161
|
},
|
|
37162
|
+
"flood.getStatus": {
|
|
37163
|
+
capName: "flood",
|
|
37164
|
+
capScope: "device",
|
|
37165
|
+
addonId: null,
|
|
37166
|
+
access: "view"
|
|
37167
|
+
},
|
|
37168
|
+
"gas.getStatus": {
|
|
37169
|
+
capName: "gas",
|
|
37170
|
+
capScope: "device",
|
|
37171
|
+
addonId: null,
|
|
37172
|
+
access: "view"
|
|
37173
|
+
},
|
|
37174
|
+
"humidifier.getStatus": {
|
|
37175
|
+
capName: "humidifier",
|
|
37176
|
+
capScope: "device",
|
|
37177
|
+
addonId: null,
|
|
37178
|
+
access: "view"
|
|
37179
|
+
},
|
|
35030
37180
|
"humidifier.setMode": {
|
|
35031
37181
|
capName: "humidifier",
|
|
35032
37182
|
capScope: "device",
|
|
@@ -35045,12 +37195,30 @@ Object.freeze({
|
|
|
35045
37195
|
addonId: null,
|
|
35046
37196
|
access: "create"
|
|
35047
37197
|
},
|
|
37198
|
+
"humiditySensor.getStatus": {
|
|
37199
|
+
capName: "humidity-sensor",
|
|
37200
|
+
capScope: "device",
|
|
37201
|
+
addonId: null,
|
|
37202
|
+
access: "view"
|
|
37203
|
+
},
|
|
37204
|
+
"image.getStatus": {
|
|
37205
|
+
capName: "image",
|
|
37206
|
+
capScope: "device",
|
|
37207
|
+
addonId: null,
|
|
37208
|
+
access: "view"
|
|
37209
|
+
},
|
|
35048
37210
|
"imageSettings.getOptions": {
|
|
35049
37211
|
capName: "image-settings",
|
|
35050
37212
|
capScope: "device",
|
|
35051
37213
|
addonId: null,
|
|
35052
37214
|
access: "view"
|
|
35053
37215
|
},
|
|
37216
|
+
"imageSettings.getStatus": {
|
|
37217
|
+
capName: "image-settings",
|
|
37218
|
+
capScope: "device",
|
|
37219
|
+
addonId: null,
|
|
37220
|
+
access: "view"
|
|
37221
|
+
},
|
|
35054
37222
|
"imageSettings.setSettings": {
|
|
35055
37223
|
capName: "image-settings",
|
|
35056
37224
|
capScope: "device",
|
|
@@ -35123,6 +37291,12 @@ Object.freeze({
|
|
|
35123
37291
|
addonId: null,
|
|
35124
37292
|
access: "create"
|
|
35125
37293
|
},
|
|
37294
|
+
"intercom.getStatus": {
|
|
37295
|
+
capName: "intercom",
|
|
37296
|
+
capScope: "device",
|
|
37297
|
+
addonId: null,
|
|
37298
|
+
access: "view"
|
|
37299
|
+
},
|
|
35126
37300
|
"intercom.handleAnswer": {
|
|
35127
37301
|
capName: "intercom",
|
|
35128
37302
|
capScope: "device",
|
|
@@ -35159,6 +37333,12 @@ Object.freeze({
|
|
|
35159
37333
|
addonId: null,
|
|
35160
37334
|
access: "create"
|
|
35161
37335
|
},
|
|
37336
|
+
"lawnMowerControl.getStatus": {
|
|
37337
|
+
capName: "lawn-mower-control",
|
|
37338
|
+
capScope: "device",
|
|
37339
|
+
addonId: null,
|
|
37340
|
+
access: "view"
|
|
37341
|
+
},
|
|
35162
37342
|
"lawnMowerControl.pause": {
|
|
35163
37343
|
capName: "lawn-mower-control",
|
|
35164
37344
|
capScope: "device",
|
|
@@ -35441,6 +37621,12 @@ Object.freeze({
|
|
|
35441
37621
|
addonId: null,
|
|
35442
37622
|
access: "create"
|
|
35443
37623
|
},
|
|
37624
|
+
"lockControl.getStatus": {
|
|
37625
|
+
capName: "lock-control",
|
|
37626
|
+
capScope: "device",
|
|
37627
|
+
addonId: null,
|
|
37628
|
+
access: "view"
|
|
37629
|
+
},
|
|
35444
37630
|
"lockControl.lock": {
|
|
35445
37631
|
capName: "lock-control",
|
|
35446
37632
|
capScope: "device",
|
|
@@ -35489,6 +37675,12 @@ Object.freeze({
|
|
|
35489
37675
|
addonId: null,
|
|
35490
37676
|
access: "view"
|
|
35491
37677
|
},
|
|
37678
|
+
"mediaPlayer.getStatus": {
|
|
37679
|
+
capName: "media-player",
|
|
37680
|
+
capScope: "device",
|
|
37681
|
+
addonId: null,
|
|
37682
|
+
access: "view"
|
|
37683
|
+
},
|
|
35492
37684
|
"mediaPlayer.next": {
|
|
35493
37685
|
capName: "media-player",
|
|
35494
37686
|
capScope: "device",
|
|
@@ -35681,6 +37873,12 @@ Object.freeze({
|
|
|
35681
37873
|
addonId: null,
|
|
35682
37874
|
access: "create"
|
|
35683
37875
|
},
|
|
37876
|
+
"motion.getStatus": {
|
|
37877
|
+
capName: "motion",
|
|
37878
|
+
capScope: "device",
|
|
37879
|
+
addonId: null,
|
|
37880
|
+
access: "view"
|
|
37881
|
+
},
|
|
35684
37882
|
"motion.isDetected": {
|
|
35685
37883
|
capName: "motion",
|
|
35686
37884
|
capScope: "device",
|
|
@@ -35693,6 +37891,24 @@ Object.freeze({
|
|
|
35693
37891
|
addonId: null,
|
|
35694
37892
|
access: "create"
|
|
35695
37893
|
},
|
|
37894
|
+
"motionDetection.applyDeviceSettingsPatch": {
|
|
37895
|
+
capName: "motion-detection",
|
|
37896
|
+
capScope: "device",
|
|
37897
|
+
addonId: null,
|
|
37898
|
+
access: "create"
|
|
37899
|
+
},
|
|
37900
|
+
"motionDetection.getDeviceLiveContribution": {
|
|
37901
|
+
capName: "motion-detection",
|
|
37902
|
+
capScope: "device",
|
|
37903
|
+
addonId: null,
|
|
37904
|
+
access: "view"
|
|
37905
|
+
},
|
|
37906
|
+
"motionDetection.getDeviceSettingsContribution": {
|
|
37907
|
+
capName: "motion-detection",
|
|
37908
|
+
capScope: "device",
|
|
37909
|
+
addonId: null,
|
|
37910
|
+
access: "view"
|
|
37911
|
+
},
|
|
35696
37912
|
"motionDetection.removeCamera": {
|
|
35697
37913
|
capName: "motion-detection",
|
|
35698
37914
|
capScope: "device",
|
|
@@ -35705,6 +37921,12 @@ Object.freeze({
|
|
|
35705
37921
|
addonId: null,
|
|
35706
37922
|
access: "delete"
|
|
35707
37923
|
},
|
|
37924
|
+
"motionTrigger.getStatus": {
|
|
37925
|
+
capName: "motion-trigger",
|
|
37926
|
+
capScope: "device",
|
|
37927
|
+
addonId: null,
|
|
37928
|
+
access: "view"
|
|
37929
|
+
},
|
|
35708
37930
|
"motionTrigger.setMotionTrigger": {
|
|
35709
37931
|
capName: "motion-trigger",
|
|
35710
37932
|
capScope: "device",
|
|
@@ -35717,6 +37939,12 @@ Object.freeze({
|
|
|
35717
37939
|
addonId: null,
|
|
35718
37940
|
access: "view"
|
|
35719
37941
|
},
|
|
37942
|
+
"motionZones.getStatus": {
|
|
37943
|
+
capName: "motion-zones",
|
|
37944
|
+
capScope: "device",
|
|
37945
|
+
addonId: null,
|
|
37946
|
+
access: "view"
|
|
37947
|
+
},
|
|
35720
37948
|
"motionZones.setZone": {
|
|
35721
37949
|
capName: "motion-zones",
|
|
35722
37950
|
capScope: "device",
|
|
@@ -35777,6 +38005,12 @@ Object.freeze({
|
|
|
35777
38005
|
addonId: null,
|
|
35778
38006
|
access: "view"
|
|
35779
38007
|
},
|
|
38008
|
+
"nativeObjectDetection.getStatus": {
|
|
38009
|
+
capName: "native-object-detection",
|
|
38010
|
+
capScope: "device",
|
|
38011
|
+
addonId: null,
|
|
38012
|
+
access: "view"
|
|
38013
|
+
},
|
|
35780
38014
|
"nativeObjectDetection.setEnabled": {
|
|
35781
38015
|
capName: "native-object-detection",
|
|
35782
38016
|
capScope: "device",
|
|
@@ -35795,6 +38029,12 @@ Object.freeze({
|
|
|
35795
38029
|
addonId: null,
|
|
35796
38030
|
access: "view"
|
|
35797
38031
|
},
|
|
38032
|
+
"navigation.getStatus": {
|
|
38033
|
+
capName: "navigation",
|
|
38034
|
+
capScope: "device",
|
|
38035
|
+
addonId: null,
|
|
38036
|
+
access: "view"
|
|
38037
|
+
},
|
|
35798
38038
|
"navigation.goToPoint": {
|
|
35799
38039
|
capName: "navigation",
|
|
35800
38040
|
capScope: "device",
|
|
@@ -35879,6 +38119,12 @@ Object.freeze({
|
|
|
35879
38119
|
addonId: null,
|
|
35880
38120
|
access: "create"
|
|
35881
38121
|
},
|
|
38122
|
+
"networkLink.getStatus": {
|
|
38123
|
+
capName: "network-link",
|
|
38124
|
+
capScope: "device",
|
|
38125
|
+
addonId: null,
|
|
38126
|
+
access: "view"
|
|
38127
|
+
},
|
|
35882
38128
|
"networkQuality.getAllStats": {
|
|
35883
38129
|
capName: "network-quality",
|
|
35884
38130
|
capScope: "system",
|
|
@@ -36137,18 +38383,36 @@ Object.freeze({
|
|
|
36137
38383
|
addonId: null,
|
|
36138
38384
|
access: "create"
|
|
36139
38385
|
},
|
|
38386
|
+
"notifier.getStatus": {
|
|
38387
|
+
capName: "notifier",
|
|
38388
|
+
capScope: "device",
|
|
38389
|
+
addonId: null,
|
|
38390
|
+
access: "view"
|
|
38391
|
+
},
|
|
36140
38392
|
"notifier.send": {
|
|
36141
38393
|
capName: "notifier",
|
|
36142
38394
|
capScope: "device",
|
|
36143
38395
|
addonId: null,
|
|
36144
38396
|
access: "create"
|
|
36145
38397
|
},
|
|
38398
|
+
"numericSensor.getStatus": {
|
|
38399
|
+
capName: "numeric-sensor",
|
|
38400
|
+
capScope: "device",
|
|
38401
|
+
addonId: null,
|
|
38402
|
+
access: "view"
|
|
38403
|
+
},
|
|
36146
38404
|
"oauthIntegration.getDescriptor": {
|
|
36147
38405
|
capName: "oauth-integration",
|
|
36148
38406
|
capScope: "system",
|
|
36149
38407
|
addonId: null,
|
|
36150
38408
|
access: "view"
|
|
36151
38409
|
},
|
|
38410
|
+
"osd.getStatus": {
|
|
38411
|
+
capName: "osd",
|
|
38412
|
+
capScope: "device",
|
|
38413
|
+
addonId: null,
|
|
38414
|
+
access: "view"
|
|
38415
|
+
},
|
|
36152
38416
|
"osd.setOverlay": {
|
|
36153
38417
|
capName: "osd",
|
|
36154
38418
|
capScope: "device",
|
|
@@ -36221,6 +38485,12 @@ Object.freeze({
|
|
|
36221
38485
|
addonId: null,
|
|
36222
38486
|
access: "create"
|
|
36223
38487
|
},
|
|
38488
|
+
"petFeeder.getStatus": {
|
|
38489
|
+
capName: "pet-feeder",
|
|
38490
|
+
capScope: "device",
|
|
38491
|
+
addonId: null,
|
|
38492
|
+
access: "view"
|
|
38493
|
+
},
|
|
36224
38494
|
"petFeeder.markFoodReplenished": {
|
|
36225
38495
|
capName: "pet-feeder",
|
|
36226
38496
|
capScope: "device",
|
|
@@ -36263,6 +38533,12 @@ Object.freeze({
|
|
|
36263
38533
|
addonId: null,
|
|
36264
38534
|
access: "create"
|
|
36265
38535
|
},
|
|
38536
|
+
"pipelineAnalytics.applyDeviceSettingsPatch": {
|
|
38537
|
+
capName: "pipeline-analytics",
|
|
38538
|
+
capScope: "device",
|
|
38539
|
+
addonId: null,
|
|
38540
|
+
access: "create"
|
|
38541
|
+
},
|
|
36266
38542
|
"pipelineAnalytics.cancelRelocateMedia": {
|
|
36267
38543
|
capName: "pipeline-analytics",
|
|
36268
38544
|
capScope: "device",
|
|
@@ -36329,6 +38605,18 @@ Object.freeze({
|
|
|
36329
38605
|
addonId: null,
|
|
36330
38606
|
access: "view"
|
|
36331
38607
|
},
|
|
38608
|
+
"pipelineAnalytics.getDeviceLiveContribution": {
|
|
38609
|
+
capName: "pipeline-analytics",
|
|
38610
|
+
capScope: "device",
|
|
38611
|
+
addonId: null,
|
|
38612
|
+
access: "view"
|
|
38613
|
+
},
|
|
38614
|
+
"pipelineAnalytics.getDeviceSettingsContribution": {
|
|
38615
|
+
capName: "pipeline-analytics",
|
|
38616
|
+
capScope: "device",
|
|
38617
|
+
addonId: null,
|
|
38618
|
+
access: "view"
|
|
38619
|
+
},
|
|
36332
38620
|
"pipelineAnalytics.getEventDensity": {
|
|
36333
38621
|
capName: "pipeline-analytics",
|
|
36334
38622
|
capScope: "device",
|
|
@@ -36899,6 +39187,12 @@ Object.freeze({
|
|
|
36899
39187
|
addonId: null,
|
|
36900
39188
|
access: "view"
|
|
36901
39189
|
},
|
|
39190
|
+
"pipelineOrchestrator.applyDeviceSettingsPatch": {
|
|
39191
|
+
capName: "pipeline-orchestrator",
|
|
39192
|
+
capScope: "system",
|
|
39193
|
+
addonId: null,
|
|
39194
|
+
access: "create"
|
|
39195
|
+
},
|
|
36902
39196
|
"pipelineOrchestrator.assignAudio": {
|
|
36903
39197
|
capName: "pipeline-orchestrator",
|
|
36904
39198
|
capScope: "system",
|
|
@@ -36989,6 +39283,18 @@ Object.freeze({
|
|
|
36989
39283
|
addonId: null,
|
|
36990
39284
|
access: "view"
|
|
36991
39285
|
},
|
|
39286
|
+
"pipelineOrchestrator.getDeviceLiveContribution": {
|
|
39287
|
+
capName: "pipeline-orchestrator",
|
|
39288
|
+
capScope: "system",
|
|
39289
|
+
addonId: null,
|
|
39290
|
+
access: "view"
|
|
39291
|
+
},
|
|
39292
|
+
"pipelineOrchestrator.getDeviceSettingsContribution": {
|
|
39293
|
+
capName: "pipeline-orchestrator",
|
|
39294
|
+
capScope: "system",
|
|
39295
|
+
addonId: null,
|
|
39296
|
+
access: "view"
|
|
39297
|
+
},
|
|
36992
39298
|
"pipelineOrchestrator.getGlobalMetrics": {
|
|
36993
39299
|
capName: "pipeline-orchestrator",
|
|
36994
39300
|
capScope: "system",
|
|
@@ -37397,12 +39703,36 @@ Object.freeze({
|
|
|
37397
39703
|
addonId: null,
|
|
37398
39704
|
access: "view"
|
|
37399
39705
|
},
|
|
39706
|
+
"powerMeter.getStatus": {
|
|
39707
|
+
capName: "power-meter",
|
|
39708
|
+
capScope: "device",
|
|
39709
|
+
addonId: null,
|
|
39710
|
+
access: "view"
|
|
39711
|
+
},
|
|
39712
|
+
"presence.getStatus": {
|
|
39713
|
+
capName: "presence",
|
|
39714
|
+
capScope: "device",
|
|
39715
|
+
addonId: null,
|
|
39716
|
+
access: "view"
|
|
39717
|
+
},
|
|
39718
|
+
"pressureSensor.getStatus": {
|
|
39719
|
+
capName: "pressure-sensor",
|
|
39720
|
+
capScope: "device",
|
|
39721
|
+
addonId: null,
|
|
39722
|
+
access: "view"
|
|
39723
|
+
},
|
|
37400
39724
|
"privacyMask.getOptions": {
|
|
37401
39725
|
capName: "privacy-mask",
|
|
37402
39726
|
capScope: "device",
|
|
37403
39727
|
addonId: null,
|
|
37404
39728
|
access: "view"
|
|
37405
39729
|
},
|
|
39730
|
+
"privacyMask.getStatus": {
|
|
39731
|
+
capName: "privacy-mask",
|
|
39732
|
+
capScope: "device",
|
|
39733
|
+
addonId: null,
|
|
39734
|
+
access: "view"
|
|
39735
|
+
},
|
|
37406
39736
|
"privacyMask.setAudioEnabled": {
|
|
37407
39737
|
capName: "privacy-mask",
|
|
37408
39738
|
capScope: "device",
|
|
@@ -37463,6 +39793,12 @@ Object.freeze({
|
|
|
37463
39793
|
addonId: null,
|
|
37464
39794
|
access: "view"
|
|
37465
39795
|
},
|
|
39796
|
+
"ptz.getStatus": {
|
|
39797
|
+
capName: "ptz",
|
|
39798
|
+
capScope: "device",
|
|
39799
|
+
addonId: null,
|
|
39800
|
+
access: "view"
|
|
39801
|
+
},
|
|
37466
39802
|
"ptz.goHome": {
|
|
37467
39803
|
capName: "ptz",
|
|
37468
39804
|
capScope: "device",
|
|
@@ -37541,6 +39877,12 @@ Object.freeze({
|
|
|
37541
39877
|
addonId: null,
|
|
37542
39878
|
access: "create"
|
|
37543
39879
|
},
|
|
39880
|
+
"recording.applyDeviceSettingsPatch": {
|
|
39881
|
+
capName: "recording",
|
|
39882
|
+
capScope: "system",
|
|
39883
|
+
addonId: null,
|
|
39884
|
+
access: "create"
|
|
39885
|
+
},
|
|
37544
39886
|
"recording.cancelRelocateJob": {
|
|
37545
39887
|
capName: "recording",
|
|
37546
39888
|
capScope: "system",
|
|
@@ -37589,6 +39931,18 @@ Object.freeze({
|
|
|
37589
39931
|
addonId: null,
|
|
37590
39932
|
access: "view"
|
|
37591
39933
|
},
|
|
39934
|
+
"recording.getDeviceLiveContribution": {
|
|
39935
|
+
capName: "recording",
|
|
39936
|
+
capScope: "system",
|
|
39937
|
+
addonId: null,
|
|
39938
|
+
access: "view"
|
|
39939
|
+
},
|
|
39940
|
+
"recording.getDeviceSettingsContribution": {
|
|
39941
|
+
capName: "recording",
|
|
39942
|
+
capScope: "system",
|
|
39943
|
+
addonId: null,
|
|
39944
|
+
access: "view"
|
|
39945
|
+
},
|
|
37592
39946
|
"recording.getPlacement": {
|
|
37593
39947
|
capName: "recording",
|
|
37594
39948
|
capScope: "system",
|
|
@@ -37607,6 +39961,12 @@ Object.freeze({
|
|
|
37607
39961
|
addonId: null,
|
|
37608
39962
|
access: "view"
|
|
37609
39963
|
},
|
|
39964
|
+
"recording.getStatus": {
|
|
39965
|
+
capName: "recording",
|
|
39966
|
+
capScope: "system",
|
|
39967
|
+
addonId: null,
|
|
39968
|
+
access: "view"
|
|
39969
|
+
},
|
|
37610
39970
|
"recording.getStorageMigrationMoveStatus": {
|
|
37611
39971
|
capName: "recording",
|
|
37612
39972
|
capScope: "system",
|
|
@@ -37781,6 +40141,24 @@ Object.freeze({
|
|
|
37781
40141
|
addonId: null,
|
|
37782
40142
|
access: "view"
|
|
37783
40143
|
},
|
|
40144
|
+
"recordingOnboard.getOptions": {
|
|
40145
|
+
capName: "recording-onboard",
|
|
40146
|
+
capScope: "device",
|
|
40147
|
+
addonId: null,
|
|
40148
|
+
access: "view"
|
|
40149
|
+
},
|
|
40150
|
+
"recordingOnboard.getStatus": {
|
|
40151
|
+
capName: "recording-onboard",
|
|
40152
|
+
capScope: "device",
|
|
40153
|
+
addonId: null,
|
|
40154
|
+
access: "view"
|
|
40155
|
+
},
|
|
40156
|
+
"recordingOnboard.setSettings": {
|
|
40157
|
+
capName: "recording-onboard",
|
|
40158
|
+
capScope: "device",
|
|
40159
|
+
addonId: null,
|
|
40160
|
+
access: "create"
|
|
40161
|
+
},
|
|
37784
40162
|
"recordingSignal.getStatus": {
|
|
37785
40163
|
capName: "recording-signal",
|
|
37786
40164
|
capScope: "device",
|
|
@@ -37811,6 +40189,12 @@ Object.freeze({
|
|
|
37811
40189
|
addonId: null,
|
|
37812
40190
|
access: "delete"
|
|
37813
40191
|
},
|
|
40192
|
+
"sceneMonitor.getStatus": {
|
|
40193
|
+
capName: "scene-monitor",
|
|
40194
|
+
capScope: "device",
|
|
40195
|
+
addonId: null,
|
|
40196
|
+
access: "view"
|
|
40197
|
+
},
|
|
37814
40198
|
"sceneMonitor.listScenes": {
|
|
37815
40199
|
capName: "scene-monitor",
|
|
37816
40200
|
capScope: "device",
|
|
@@ -37841,6 +40225,12 @@ Object.freeze({
|
|
|
37841
40225
|
addonId: null,
|
|
37842
40226
|
access: "create"
|
|
37843
40227
|
},
|
|
40228
|
+
"scriptRunner.getStatus": {
|
|
40229
|
+
capName: "script-runner",
|
|
40230
|
+
capScope: "device",
|
|
40231
|
+
addonId: null,
|
|
40232
|
+
access: "view"
|
|
40233
|
+
},
|
|
37844
40234
|
"scriptRunner.run": {
|
|
37845
40235
|
capName: "script-runner",
|
|
37846
40236
|
capScope: "device",
|
|
@@ -37973,6 +40363,12 @@ Object.freeze({
|
|
|
37973
40363
|
addonId: null,
|
|
37974
40364
|
access: "create"
|
|
37975
40365
|
},
|
|
40366
|
+
"smoke.getStatus": {
|
|
40367
|
+
capName: "smoke",
|
|
40368
|
+
capScope: "device",
|
|
40369
|
+
addonId: null,
|
|
40370
|
+
access: "view"
|
|
40371
|
+
},
|
|
37976
40372
|
"smtpProvider.getStatus": {
|
|
37977
40373
|
capName: "smtp-provider",
|
|
37978
40374
|
capScope: "system",
|
|
@@ -37991,12 +40387,30 @@ Object.freeze({
|
|
|
37991
40387
|
addonId: null,
|
|
37992
40388
|
access: "view"
|
|
37993
40389
|
},
|
|
40390
|
+
"snapshot.applyDeviceSettingsPatch": {
|
|
40391
|
+
capName: "snapshot",
|
|
40392
|
+
capScope: "device",
|
|
40393
|
+
addonId: null,
|
|
40394
|
+
access: "create"
|
|
40395
|
+
},
|
|
37994
40396
|
"snapshot.getDebugState": {
|
|
37995
40397
|
capName: "snapshot",
|
|
37996
40398
|
capScope: "device",
|
|
37997
40399
|
addonId: null,
|
|
37998
40400
|
access: "view"
|
|
37999
40401
|
},
|
|
40402
|
+
"snapshot.getDeviceLiveContribution": {
|
|
40403
|
+
capName: "snapshot",
|
|
40404
|
+
capScope: "device",
|
|
40405
|
+
addonId: null,
|
|
40406
|
+
access: "view"
|
|
40407
|
+
},
|
|
40408
|
+
"snapshot.getDeviceSettingsContribution": {
|
|
40409
|
+
capName: "snapshot",
|
|
40410
|
+
capScope: "device",
|
|
40411
|
+
addonId: null,
|
|
40412
|
+
access: "view"
|
|
40413
|
+
},
|
|
38000
40414
|
"snapshot.getSnapshot": {
|
|
38001
40415
|
capName: "snapshot",
|
|
38002
40416
|
capScope: "device",
|
|
@@ -38015,6 +40429,12 @@ Object.freeze({
|
|
|
38015
40429
|
addonId: null,
|
|
38016
40430
|
access: "view"
|
|
38017
40431
|
},
|
|
40432
|
+
"snapshot.getStatus": {
|
|
40433
|
+
capName: "snapshot",
|
|
40434
|
+
capScope: "device",
|
|
40435
|
+
addonId: null,
|
|
40436
|
+
access: "view"
|
|
40437
|
+
},
|
|
38018
40438
|
"snapshot.invalidateCache": {
|
|
38019
40439
|
capName: "snapshot",
|
|
38020
40440
|
capScope: "device",
|
|
@@ -38351,6 +40771,12 @@ Object.freeze({
|
|
|
38351
40771
|
addonId: null,
|
|
38352
40772
|
access: "create"
|
|
38353
40773
|
},
|
|
40774
|
+
"streamBroker.applyDeviceSettingsPatch": {
|
|
40775
|
+
capName: "stream-broker",
|
|
40776
|
+
capScope: "system",
|
|
40777
|
+
addonId: null,
|
|
40778
|
+
access: "create"
|
|
40779
|
+
},
|
|
38354
40780
|
"streamBroker.assignProfile": {
|
|
38355
40781
|
capName: "stream-broker",
|
|
38356
40782
|
capScope: "system",
|
|
@@ -38387,6 +40813,18 @@ Object.freeze({
|
|
|
38387
40813
|
addonId: null,
|
|
38388
40814
|
access: "view"
|
|
38389
40815
|
},
|
|
40816
|
+
"streamBroker.getDeviceLiveContribution": {
|
|
40817
|
+
capName: "stream-broker",
|
|
40818
|
+
capScope: "system",
|
|
40819
|
+
addonId: null,
|
|
40820
|
+
access: "view"
|
|
40821
|
+
},
|
|
40822
|
+
"streamBroker.getDeviceSettingsContribution": {
|
|
40823
|
+
capName: "stream-broker",
|
|
40824
|
+
capScope: "system",
|
|
40825
|
+
addonId: null,
|
|
40826
|
+
access: "view"
|
|
40827
|
+
},
|
|
38390
40828
|
"streamBroker.getPreBufferInfo": {
|
|
38391
40829
|
capName: "stream-broker",
|
|
38392
40830
|
capScope: "system",
|
|
@@ -38585,6 +41023,12 @@ Object.freeze({
|
|
|
38585
41023
|
addonId: null,
|
|
38586
41024
|
access: "view"
|
|
38587
41025
|
},
|
|
41026
|
+
"streamParams.getStatus": {
|
|
41027
|
+
capName: "stream-params",
|
|
41028
|
+
capScope: "device",
|
|
41029
|
+
addonId: null,
|
|
41030
|
+
access: "view"
|
|
41031
|
+
},
|
|
38588
41032
|
"streamParams.setProfile": {
|
|
38589
41033
|
capName: "stream-params",
|
|
38590
41034
|
capScope: "device",
|
|
@@ -38597,6 +41041,12 @@ Object.freeze({
|
|
|
38597
41041
|
addonId: null,
|
|
38598
41042
|
access: "view"
|
|
38599
41043
|
},
|
|
41044
|
+
"switch.getStatus": {
|
|
41045
|
+
capName: "switch",
|
|
41046
|
+
capScope: "device",
|
|
41047
|
+
addonId: null,
|
|
41048
|
+
access: "view"
|
|
41049
|
+
},
|
|
38600
41050
|
"switch.setState": {
|
|
38601
41051
|
capName: "switch",
|
|
38602
41052
|
capScope: "device",
|
|
@@ -38693,6 +41143,18 @@ Object.freeze({
|
|
|
38693
41143
|
addonId: null,
|
|
38694
41144
|
access: "create"
|
|
38695
41145
|
},
|
|
41146
|
+
"tamper.getStatus": {
|
|
41147
|
+
capName: "tamper",
|
|
41148
|
+
capScope: "device",
|
|
41149
|
+
addonId: null,
|
|
41150
|
+
access: "view"
|
|
41151
|
+
},
|
|
41152
|
+
"temperatureSensor.getStatus": {
|
|
41153
|
+
capName: "temperature-sensor",
|
|
41154
|
+
capScope: "device",
|
|
41155
|
+
addonId: null,
|
|
41156
|
+
access: "view"
|
|
41157
|
+
},
|
|
38696
41158
|
"terminalSession.adoptLegacyMonitor": {
|
|
38697
41159
|
capName: "terminal-session",
|
|
38698
41160
|
capScope: "system",
|
|
@@ -38789,6 +41251,12 @@ Object.freeze({
|
|
|
38789
41251
|
addonId: null,
|
|
38790
41252
|
access: "view"
|
|
38791
41253
|
},
|
|
41254
|
+
"update.getStatus": {
|
|
41255
|
+
capName: "update",
|
|
41256
|
+
capScope: "device",
|
|
41257
|
+
addonId: null,
|
|
41258
|
+
access: "view"
|
|
41259
|
+
},
|
|
38792
41260
|
"update.installUpdate": {
|
|
38793
41261
|
capName: "update",
|
|
38794
41262
|
capScope: "device",
|
|
@@ -39011,6 +41479,12 @@ Object.freeze({
|
|
|
39011
41479
|
addonId: null,
|
|
39012
41480
|
access: "create"
|
|
39013
41481
|
},
|
|
41482
|
+
"vacuumControl.getStatus": {
|
|
41483
|
+
capName: "vacuum-control",
|
|
41484
|
+
capScope: "device",
|
|
41485
|
+
addonId: null,
|
|
41486
|
+
access: "view"
|
|
41487
|
+
},
|
|
39014
41488
|
"vacuumControl.locate": {
|
|
39015
41489
|
capName: "vacuum-control",
|
|
39016
41490
|
capScope: "device",
|
|
@@ -39053,6 +41527,12 @@ Object.freeze({
|
|
|
39053
41527
|
addonId: null,
|
|
39054
41528
|
access: "create"
|
|
39055
41529
|
},
|
|
41530
|
+
"valve.getStatus": {
|
|
41531
|
+
capName: "valve",
|
|
41532
|
+
capScope: "device",
|
|
41533
|
+
addonId: null,
|
|
41534
|
+
access: "view"
|
|
41535
|
+
},
|
|
39056
41536
|
"valve.open": {
|
|
39057
41537
|
capName: "valve",
|
|
39058
41538
|
capScope: "device",
|
|
@@ -39125,6 +41605,18 @@ Object.freeze({
|
|
|
39125
41605
|
addonId: null,
|
|
39126
41606
|
access: "create"
|
|
39127
41607
|
},
|
|
41608
|
+
"vibration.getStatus": {
|
|
41609
|
+
capName: "vibration",
|
|
41610
|
+
capScope: "device",
|
|
41611
|
+
addonId: null,
|
|
41612
|
+
access: "view"
|
|
41613
|
+
},
|
|
41614
|
+
"videoclips.dialClipStream": {
|
|
41615
|
+
capName: "videoclips",
|
|
41616
|
+
capScope: "device",
|
|
41617
|
+
addonId: null,
|
|
41618
|
+
access: "view"
|
|
41619
|
+
},
|
|
39128
41620
|
"videoclips.getClipPlayback": {
|
|
39129
41621
|
capName: "videoclips",
|
|
39130
41622
|
capScope: "device",
|
|
@@ -39161,6 +41653,12 @@ Object.freeze({
|
|
|
39161
41653
|
addonId: null,
|
|
39162
41654
|
access: "view"
|
|
39163
41655
|
},
|
|
41656
|
+
"waterHeater.getStatus": {
|
|
41657
|
+
capName: "water-heater",
|
|
41658
|
+
capScope: "device",
|
|
41659
|
+
addonId: null,
|
|
41660
|
+
access: "view"
|
|
41661
|
+
},
|
|
39164
41662
|
"waterHeater.setAway": {
|
|
39165
41663
|
capName: "water-heater",
|
|
39166
41664
|
capScope: "device",
|
|
@@ -39179,6 +41677,12 @@ Object.freeze({
|
|
|
39179
41677
|
addonId: null,
|
|
39180
41678
|
access: "create"
|
|
39181
41679
|
},
|
|
41680
|
+
"weather.getStatus": {
|
|
41681
|
+
capName: "weather",
|
|
41682
|
+
capScope: "device",
|
|
41683
|
+
addonId: null,
|
|
41684
|
+
access: "view"
|
|
41685
|
+
},
|
|
39182
41686
|
"webrtcSession.addIceCandidate": {
|
|
39183
41687
|
capName: "webrtc-session",
|
|
39184
41688
|
capScope: "device",
|
|
@@ -39541,6 +42045,11 @@ Object.freeze({
|
|
|
39541
42045
|
form: "single",
|
|
39542
42046
|
optional: true
|
|
39543
42047
|
}],
|
|
42048
|
+
"deviceAdminLink.getAdminLink": [{
|
|
42049
|
+
name: "deviceId",
|
|
42050
|
+
form: "single",
|
|
42051
|
+
optional: false
|
|
42052
|
+
}],
|
|
39544
42053
|
"deviceAdoption.release": [{
|
|
39545
42054
|
name: "camDeviceId",
|
|
39546
42055
|
form: "single",
|
|
@@ -40926,6 +43435,16 @@ Object.freeze({
|
|
|
40926
43435
|
form: "single",
|
|
40927
43436
|
optional: true
|
|
40928
43437
|
}],
|
|
43438
|
+
"recordingOnboard.getOptions": [{
|
|
43439
|
+
name: "deviceId",
|
|
43440
|
+
form: "single",
|
|
43441
|
+
optional: false
|
|
43442
|
+
}],
|
|
43443
|
+
"recordingOnboard.setSettings": [{
|
|
43444
|
+
name: "deviceId",
|
|
43445
|
+
form: "single",
|
|
43446
|
+
optional: false
|
|
43447
|
+
}],
|
|
40929
43448
|
"recordingSignal.getStatus": [{
|
|
40930
43449
|
name: "deviceId",
|
|
40931
43450
|
form: "single",
|
|
@@ -41152,6 +43671,11 @@ Object.freeze({
|
|
|
41152
43671
|
form: "single",
|
|
41153
43672
|
optional: false
|
|
41154
43673
|
}],
|
|
43674
|
+
"videoclips.dialClipStream": [{
|
|
43675
|
+
name: "deviceId",
|
|
43676
|
+
form: "single",
|
|
43677
|
+
optional: false
|
|
43678
|
+
}],
|
|
41155
43679
|
"videoclips.getClipPlayback": [{
|
|
41156
43680
|
name: "deviceId",
|
|
41157
43681
|
form: "single",
|