@camstack/addon-osd-manager 0.1.129 → 0.1.131
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-DWuVSEf5.mjs → MotionZonesSettings-BEiIAXxX.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-BWVHTm06.mjs → PrivacyMaskSettings-CvIg_072.mjs} +4 -4
- package/dist/{SceneMonitorEditor-XJsu4mm2.mjs → SceneMonitorEditor-JZwBd1Jv.mjs} +3 -3
- package/dist/_stub.js +128 -128
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-b-sE7-_3.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-NFf3Y4nO.mjs} +3 -3
- package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D23J0_pM.mjs +26 -0
- package/dist/addon-osd-manager.css +1 -1
- package/dist/{hostInit-B0SRpKdK.mjs → hostInit-CwDM2suA.mjs} +2 -2
- package/dist/index.js +2618 -3
- package/dist/index.mjs +2618 -3
- package/dist/{player-overlays-DzUl-ZVZ.mjs → player-overlays-9RdwSS8n.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-VLKmeNms.mjs → responsive-DOUWrPJ-.mjs} +1 -1
- package/dist/{scene-monitor-copy-BKF6KEsb.mjs → scene-monitor-copy-Cr8ZNK1p.mjs} +1 -1
- package/dist/{square-CWIOFtEA.mjs → square-DLZPuHya.mjs} +1 -1
- package/dist/{trash-2-Dk1s3AVe.mjs → trash-2-DE6KKFYA.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-DqvD2BGa.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-8Z1DwgHL.mjs} +1 -1
- package/package.json +1 -1
- package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B9U0FY5V.mjs +0 -26
package/dist/index.mjs
CHANGED
|
@@ -5359,7 +5359,7 @@ var ZodIssueCode = {
|
|
|
5359
5359
|
var ZodFirstPartyTypeKind;
|
|
5360
5360
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5361
5361
|
//#endregion
|
|
5362
|
-
//#region ../types/dist/sleep-
|
|
5362
|
+
//#region ../types/dist/sleep-i3eUVc-d.mjs
|
|
5363
5363
|
/**
|
|
5364
5364
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5365
5365
|
* window to float samples (D455).
|
|
@@ -7878,10 +7878,20 @@ var CameraSwitchAuthoritySchema = discriminatedUnion("kind", [
|
|
|
7878
7878
|
var CameraSwitchUnavailableReasonSchema = _enum([
|
|
7879
7879
|
"no-provider",
|
|
7880
7880
|
"source-unreachable",
|
|
7881
|
-
"not-configured",
|
|
7882
7881
|
"device-disabled"
|
|
7883
7882
|
]);
|
|
7884
7883
|
/**
|
|
7884
|
+
* Something true about a switch that is nonetheless OFFERED.
|
|
7885
|
+
*
|
|
7886
|
+
* The distinction from {@link CameraSwitchUnavailableReasonSchema} is the
|
|
7887
|
+
* whole point: a reason replaces the control, a warning travels WITH it. The
|
|
7888
|
+
* privacy mask taught us the difference — greying the one button that starts
|
|
7889
|
+
* the feature teaches the operator the feature is broken, while a live toggle
|
|
7890
|
+
* that flips nothing teaches them the switch is broken. Neither is true; the
|
|
7891
|
+
* honest surface is a working toggle that says what is missing.
|
|
7892
|
+
*/
|
|
7893
|
+
var CameraSwitchWarningSchema = _enum(["no-privacy-zones"]);
|
|
7894
|
+
/**
|
|
7885
7895
|
* One switch, resolved for one camera.
|
|
7886
7896
|
*
|
|
7887
7897
|
* `label` and `costWhenOff` travel ON THE WIRE rather than being looked up
|
|
@@ -7900,6 +7910,11 @@ var CameraSwitchSchema = object({
|
|
|
7900
7910
|
/** False = do not render a control. `unavailableReason` says why. */
|
|
7901
7911
|
available: boolean(),
|
|
7902
7912
|
unavailableReason: CameraSwitchUnavailableReasonSchema.optional(),
|
|
7913
|
+
/**
|
|
7914
|
+
* Present on an AVAILABLE switch only. Rendered beside the live control;
|
|
7915
|
+
* never a substitute for one.
|
|
7916
|
+
*/
|
|
7917
|
+
warning: CameraSwitchWarningSchema.optional(),
|
|
7903
7918
|
/** Current state. Meaningless when `available` is false — read it as `true`. */
|
|
7904
7919
|
enabled: boolean(),
|
|
7905
7920
|
authority: CameraSwitchAuthoritySchema
|
|
@@ -14663,6 +14678,118 @@ var deviceAdoptionCapability = {
|
|
|
14663
14678
|
}
|
|
14664
14679
|
};
|
|
14665
14680
|
/**
|
|
14681
|
+
* device-admin-link — "this device has a management page of its own, and here
|
|
14682
|
+
* is its address".
|
|
14683
|
+
*
|
|
14684
|
+
* ## Why this is not a `deviceConfig` cap
|
|
14685
|
+
*
|
|
14686
|
+
* There is nothing to edit. A `deviceConfig` cap (D14) exists so the framework
|
|
14687
|
+
* can DERIVE a settings form from `getOptions` + `getStatus` and route a flat
|
|
14688
|
+
* patch back through a setter; it costs a `builderId` reducer in
|
|
14689
|
+
* `device-config-contribution.ts` and a `*-config-schema.ts` beside it, and it
|
|
14690
|
+
* renders a form section. This cap answers ONE question with ONE read and
|
|
14691
|
+
* renders a button. Nothing about it is a form, so it carries no `deviceConfig`
|
|
14692
|
+
* block, no `settings`, no `runtimeState` and no reducer — exactly like
|
|
14693
|
+
* `reboot`, the other pure-RPC device-native cap.
|
|
14694
|
+
*
|
|
14695
|
+
* ## Absent, and the difference between "no page" and "we cannot say"
|
|
14696
|
+
*
|
|
14697
|
+
* The two are answered at DIFFERENT layers, on purpose:
|
|
14698
|
+
*
|
|
14699
|
+
* - **"We cannot say"** → the provider never registers the cap for that
|
|
14700
|
+
* device. A VeSync humidifier, a Petkit feeder, a Dreame vacuum and a Dreo
|
|
14701
|
+
* fan are reached only through a vendor cloud; there is no address to hand
|
|
14702
|
+
* out and no page to open. A Tuya plug, a Wyze camera and a Gree air
|
|
14703
|
+
* conditioner DO have a LAN IP, and still have no HTTP management page
|
|
14704
|
+
* behind it. None of them register, so `deviceManager.getBindings` never
|
|
14705
|
+
* lists the cap and no surface asks.
|
|
14706
|
+
* - **"This device has no page, and I know that"** → the provider registers
|
|
14707
|
+
* and `getAdminLink` returns `null`. This is the answer for a device whose
|
|
14708
|
+
* sibling DOES have a page: a Reolink battery camera reached over UDP by
|
|
14709
|
+
* `uid` with a blank `host`, an Ecowitt gateway configured in `listener`
|
|
14710
|
+
* transport, a Home Assistant broker authenticated by supervisor token
|
|
14711
|
+
* (which carries no `baseUrl` at all).
|
|
14712
|
+
*
|
|
14713
|
+
* Both draw NOTHING. A button that opens a browser error is worse than no
|
|
14714
|
+
* button, and D62 is the same rule from the other side: an off switch is
|
|
14715
|
+
* reported off, never made to look broken. There is no third state where the
|
|
14716
|
+
* UI renders a disabled button "because the device might have a page".
|
|
14717
|
+
*
|
|
14718
|
+
* ## The URL never carries credentials
|
|
14719
|
+
*
|
|
14720
|
+
* Not in userinfo, not in a query string. Every provider builds through
|
|
14721
|
+
* `buildDeviceAdminUrl` (`device-admin-link-url.ts`), which takes host, port,
|
|
14722
|
+
* scheme and path as separate arguments — there is no parameter a secret could
|
|
14723
|
+
* arrive in — and re-checks its own output for the `scheme://user:pass@` shape
|
|
14724
|
+
* that `scripts/check-no-credential-urls-in-fixtures.ts` bans from recorded
|
|
14725
|
+
* output. `scripts/check-admin-link-builder-is-the-only-url-source.ts` is what
|
|
14726
|
+
* keeps providers from hand-rolling one anyway.
|
|
14727
|
+
*
|
|
14728
|
+
* This matters here more than anywhere else in the repo, because every provider
|
|
14729
|
+
* that knows a device's host knows its PASSWORD too: `{ host, port, username,
|
|
14730
|
+
* password }` sit in one object on Hikvision, Amcrest, Reolink and ONVIF alike,
|
|
14731
|
+
* and `http://admin:hunter2@192.168.50.139/` is a URL a browser accepts. The
|
|
14732
|
+
* camera's own page will ask for its own login. That is correct, and pre-
|
|
14733
|
+
* filling it is the operator's business, not ours.
|
|
14734
|
+
*
|
|
14735
|
+
* ## It is a LAN fact
|
|
14736
|
+
*
|
|
14737
|
+
* The URL addresses the device where the NODE can see it. It is not proxied,
|
|
14738
|
+
* not made reachable from outside, and not sent anywhere. A surface renders it
|
|
14739
|
+
* as a link the operator's own browser follows, on the operator's own network,
|
|
14740
|
+
* or renders nothing.
|
|
14741
|
+
*/
|
|
14742
|
+
/**
|
|
14743
|
+
* Whose page is it. The distinction is for the OPERATOR, who needs to know
|
|
14744
|
+
* before clicking whether he is about to land on a camera's own web server or
|
|
14745
|
+
* inside Home Assistant.
|
|
14746
|
+
*/
|
|
14747
|
+
var AdminLinkTargetEnum = _enum(["device", "integration"]);
|
|
14748
|
+
var DeviceAdminLinkSchema = object({
|
|
14749
|
+
/**
|
|
14750
|
+
* Absolute `http(s)://` URL. Built by `buildDeviceAdminUrl` and therefore
|
|
14751
|
+
* free of userinfo and of any credential-shaped query key.
|
|
14752
|
+
*/
|
|
14753
|
+
url: string(),
|
|
14754
|
+
/**
|
|
14755
|
+
* What the surface calls it — "Web UI", "Home Assistant", "UniFi controller".
|
|
14756
|
+
* The PROVIDER names it, because only the provider knows what the page is;
|
|
14757
|
+
* a UI that invented the label from the addon id would call the Home
|
|
14758
|
+
* Assistant device page "Provider Homeassistant".
|
|
14759
|
+
*/
|
|
14760
|
+
label: string(),
|
|
14761
|
+
target: AdminLinkTargetEnum,
|
|
14762
|
+
/**
|
|
14763
|
+
* Host the URL points at, without scheme, port or path — for the tooltip, so
|
|
14764
|
+
* an operator can see WHERE the button goes before he follows it. Redundant
|
|
14765
|
+
* with `url` by construction; carried separately so no surface has to parse
|
|
14766
|
+
* a URL to show it.
|
|
14767
|
+
*/
|
|
14768
|
+
host: string()
|
|
14769
|
+
});
|
|
14770
|
+
var deviceAdminLinkCapability = {
|
|
14771
|
+
name: "device-admin-link",
|
|
14772
|
+
scope: "device",
|
|
14773
|
+
deviceNative: true,
|
|
14774
|
+
mode: "singleton",
|
|
14775
|
+
methods: {
|
|
14776
|
+
/**
|
|
14777
|
+
* The device's management page, or `null` when this device has none.
|
|
14778
|
+
*
|
|
14779
|
+
* `auth: 'admin'` deliberately. This is administration, not actuation —
|
|
14780
|
+
* the same bucket as `reboot` and `camera-credentials`, and explicitly NOT
|
|
14781
|
+
* the actuation set `scripts/check-actuation-not-admin.ts` protects (D403).
|
|
14782
|
+
* The URL is also a statement about the LAN, which a household member with
|
|
14783
|
+
* a `view` grant on a light has no reason to be handed.
|
|
14784
|
+
*
|
|
14785
|
+
* The surfaces gate on the QUERY, never on a role they guessed: a caller
|
|
14786
|
+
* without the right loses the query and draws nothing, which is the same
|
|
14787
|
+
* thing a device with no page draws. There is no path on which a button
|
|
14788
|
+
* appears and then fails — the D403 failure mode, from the other end.
|
|
14789
|
+
*/
|
|
14790
|
+
getAdminLink: method(object({ deviceId: number().int().nonnegative() }), DeviceAdminLinkSchema.nullable(), { auth: "admin" }) }
|
|
14791
|
+
};
|
|
14792
|
+
/**
|
|
14666
14793
|
* `device-export` — collection cap for addons that export camstack
|
|
14667
14794
|
* devices to external ecosystems (HomeAssistant via MQTT discovery,
|
|
14668
14795
|
* HomeKit/HAP, Alexa Smart Home, …).
|
|
@@ -29278,6 +29405,82 @@ var ClipBytesSchema = object({
|
|
|
29278
29405
|
*/
|
|
29279
29406
|
durationMs: number().positive().optional()
|
|
29280
29407
|
});
|
|
29408
|
+
/**
|
|
29409
|
+
* Where a clip's STREAM can be dialled (D597) — the answer to
|
|
29410
|
+
* {@link videoclipsCapability.methods.dialClipStream}.
|
|
29411
|
+
*
|
|
29412
|
+
* `url` is plain `http://` on the provider's own token-gated listener, one
|
|
29413
|
+
* shot, short-lived. It is NOT the hub-proxied `/addon/<id>/clip-stream/…`
|
|
29414
|
+
* path: that plane takes only a user credential, which an addon does not
|
|
29415
|
+
* hold, and the framework offers no addon→addon byte transport — the one
|
|
29416
|
+
* precedent is the broker's own restream URLs (`getStreamWithCodec`), which
|
|
29417
|
+
* a consumer dials directly, and this is that precedent one addon over.
|
|
29418
|
+
*/
|
|
29419
|
+
/**
|
|
29420
|
+
* The audio a clip stream can be asked for, and the audio it carries.
|
|
29421
|
+
*
|
|
29422
|
+
* The camera stores AAC and no WebRTC session speaks it, so a stream that
|
|
29423
|
+
* carries sound carries it TRANSCODED, muxed as a second track beside the
|
|
29424
|
+
* video by the one ffmpeg the provider already runs (D600). `opus` is
|
|
29425
|
+
* 48 kHz mono, `pcmu` is 8 kHz µ-law — the two codecs a broker session
|
|
29426
|
+
* negotiates — and `none` is a stream asked for, or served, without sound.
|
|
29427
|
+
*/
|
|
29428
|
+
var ClipStreamAudioSchema = _enum([
|
|
29429
|
+
"opus",
|
|
29430
|
+
"pcmu",
|
|
29431
|
+
"none"
|
|
29432
|
+
]);
|
|
29433
|
+
/**
|
|
29434
|
+
* Why a stream that was ASKED for sound is not carrying it (D600).
|
|
29435
|
+
*
|
|
29436
|
+
* Only ever set beside `servedAudio: 'none'` after a non-`none` ask. Absent
|
|
29437
|
+
* means the ask was honoured, or there was no ask.
|
|
29438
|
+
*
|
|
29439
|
+
* - `not-requested` — the caller asked for `none`.
|
|
29440
|
+
* - `unsupported-ask` — the provider cannot produce that codec.
|
|
29441
|
+
*
|
|
29442
|
+
* Whether the RECORDING has sound at all is not knowable here: the camera
|
|
29443
|
+
* declares no audio track before its first frame arrives. That answer is in
|
|
29444
|
+
* the stream itself — an fMP4 with no audio track — and the broker reads it
|
|
29445
|
+
* there. A dial that says `opus` promises the codec, never the content.
|
|
29446
|
+
*/
|
|
29447
|
+
var ClipStreamAudioReasonSchema = _enum(["not-requested", "unsupported-ask"]);
|
|
29448
|
+
var ClipStreamDialSchema = object({
|
|
29449
|
+
url: string().min(1),
|
|
29450
|
+
/** After this the token is gone and the URL answers 404 `dial-expired`. */
|
|
29451
|
+
expiresAtMs: number(),
|
|
29452
|
+
/** What the stream IS — a consumer that cannot honour it must not dial. */
|
|
29453
|
+
transport: literal("forward-only"),
|
|
29454
|
+
/**
|
|
29455
|
+
* Which twin the stream ACTUALLY carries — not what was asked for.
|
|
29456
|
+
*
|
|
29457
|
+
* The stream serves every profile (D599), and a recording whose main twin
|
|
29458
|
+
* does not exist is streamed as its sub copy, which this field reports as
|
|
29459
|
+
* `low`. That is the whole reason the dial no longer refuses `high`:
|
|
29460
|
+
* stating what was served is what makes accepting honest, where a silent
|
|
29461
|
+
* substitution would be the 33x lie D576 forbids. Stated rather than
|
|
29462
|
+
* assumed, the way {@link ClipPlaybackSchema.served} is (D549 15).
|
|
29463
|
+
*/
|
|
29464
|
+
served: CamProfileSchema,
|
|
29465
|
+
/**
|
|
29466
|
+
* Which audio the stream will ACTUALLY carry — `served`'s companion for
|
|
29467
|
+
* sound, and the same reasoning (D599, D600).
|
|
29468
|
+
*
|
|
29469
|
+
* The broker asks for the codec its WebRTC session negotiated, and the
|
|
29470
|
+
* provider either muxes that codec or carries none. Stating it is what
|
|
29471
|
+
* lets the broker wire the matching sink before the first byte, and what
|
|
29472
|
+
* keeps a session from being handed a codec it cannot send — the audio
|
|
29473
|
+
* shape of the substitution `served` exists to prevent.
|
|
29474
|
+
*
|
|
29475
|
+
* It is a promise about the CODEC, not about the content: a recording with
|
|
29476
|
+
* no microphone track answers `opus` here and then arrives with no audio
|
|
29477
|
+
* track at all. That second answer is in the stream, and the broker reads
|
|
29478
|
+
* it from the `moov`.
|
|
29479
|
+
*/
|
|
29480
|
+
servedAudio: ClipStreamAudioSchema,
|
|
29481
|
+
/** Why `servedAudio` is `none` although sound was asked for. */
|
|
29482
|
+
audioReason: ClipStreamAudioReasonSchema.optional()
|
|
29483
|
+
});
|
|
29281
29484
|
var ClipSourceAvailabilitySchema = object({
|
|
29282
29485
|
state: _enum([
|
|
29283
29486
|
"ok",
|
|
@@ -29488,6 +29691,23 @@ var videoclipsCapability = {
|
|
|
29488
29691
|
deviceId: number(),
|
|
29489
29692
|
clipId: string().min(1),
|
|
29490
29693
|
/**
|
|
29694
|
+
* WHICH provider holds the bytes — the `addonId` a
|
|
29695
|
+
* {@link ClipSourceSchema} row carries. **Required**, for the reason
|
|
29696
|
+
* `listClips` states one method above and for a second one this method
|
|
29697
|
+
* learned the hard way.
|
|
29698
|
+
*
|
|
29699
|
+
* The caller is the stream broker, and the broker lives in
|
|
29700
|
+
* `addon-pipeline` — the same addon that registers the RECORDER's
|
|
29701
|
+
* videoclips provider. With no provider named, the in-process
|
|
29702
|
+
* resolution handed it its own sibling, which implements this method
|
|
29703
|
+
* solely to explain that an analytics visit has no file behind it. So
|
|
29704
|
+
* every onboard clip answered with that sentence, a flash of video and
|
|
29705
|
+
* nothing more, while the SAME call from outside the addon reached the
|
|
29706
|
+
* right provider and returned the bytes (measured on 3628,
|
|
29707
|
+
* 2026-09-21).
|
|
29708
|
+
*/
|
|
29709
|
+
provider: string().min(1),
|
|
29710
|
+
/**
|
|
29491
29711
|
* Which twin to fetch, on the mapping D549 15 already fixed:
|
|
29492
29712
|
* `low | mid` → the sub file, `high` → the main twin. `auto` is not
|
|
29493
29713
|
* accepted here for the same reason it is not accepted by
|
|
@@ -29511,6 +29731,44 @@ var videoclipsCapability = {
|
|
|
29511
29731
|
}), ClipBytesSchema, {
|
|
29512
29732
|
kind: "query",
|
|
29513
29733
|
auth: "protected"
|
|
29734
|
+
}),
|
|
29735
|
+
/**
|
|
29736
|
+
* Where this clip's STREAM can be dialled (D597) — the forward-only
|
|
29737
|
+
* fMP4 the provider writes from the first muxed byte, for the broker to
|
|
29738
|
+
* play through the same WebRTC session as recorded footage, with the
|
|
29739
|
+
* first frame at the first fragment instead of after the last byte.
|
|
29740
|
+
*
|
|
29741
|
+
* Nothing is fetched here: the answer is a one-shot URL on the
|
|
29742
|
+
* provider's own listener, and the camera is touched when it is dialled.
|
|
29743
|
+
* The gates the file path runs (`readClipBytes`) run on the dial too —
|
|
29744
|
+
* the id, the row, a clip still being written — and refuse in the same
|
|
29745
|
+
* vocabulary, THROWN with `clipExportFailure(<token>, <prose>)`. Every
|
|
29746
|
+
* profile is served (D599) and the answer states which twin it carries;
|
|
29747
|
+
* `high` is not refused. Optional on the provider for the same reason
|
|
29748
|
+
* `readClipBytes` is: a source with no camera socket behind it (the
|
|
29749
|
+
* recorder's analytics window, a HomeKit tee) has no stream.
|
|
29750
|
+
*/
|
|
29751
|
+
dialClipStream: optionalMethod(object({
|
|
29752
|
+
deviceId: number(),
|
|
29753
|
+
clipId: string().min(1),
|
|
29754
|
+
/** WHICH provider holds the camera — see `readClipBytes.provider`. */
|
|
29755
|
+
provider: string().min(1),
|
|
29756
|
+
/** Which twin — `high` → the main file, everything else the sub (D599). */
|
|
29757
|
+
profile: CamProfileSchema.optional(),
|
|
29758
|
+
/**
|
|
29759
|
+
* Which audio codec the caller's session negotiated, so the provider
|
|
29760
|
+
* can mux it (D600). The ask travels on the DIAL because the mux is
|
|
29761
|
+
* spawned once, before the first byte, and cannot gain a track later.
|
|
29762
|
+
*
|
|
29763
|
+
* ABSENT IS `none`, never a guess: a caller that does not state an
|
|
29764
|
+
* ask is served the video-only stream that shipped first, so a broker
|
|
29765
|
+
* older than this field keeps working unchanged (D382 — an unstated
|
|
29766
|
+
* ask is zero).
|
|
29767
|
+
*/
|
|
29768
|
+
audio: ClipStreamAudioSchema.optional()
|
|
29769
|
+
}), ClipStreamDialSchema, {
|
|
29770
|
+
kind: "query",
|
|
29771
|
+
auth: "protected"
|
|
29514
29772
|
})
|
|
29515
29773
|
}
|
|
29516
29774
|
};
|
|
@@ -32057,6 +32315,346 @@ var dayNightCapability = {
|
|
|
32057
32315
|
volatileStateFields: ["lastFetchedAt"]
|
|
32058
32316
|
};
|
|
32059
32317
|
/**
|
|
32318
|
+
* Vendor-neutral **onboard** recording + storage cap — what the CAMERA
|
|
32319
|
+
* writes to the CAMERA's own card, on the camera's own schedule.
|
|
32320
|
+
*
|
|
32321
|
+
* This is NOT `recording.cap.ts`. That one is CamStack's recorder: our
|
|
32322
|
+
* footage ledger, our storage locations, our retention. This one has a
|
|
32323
|
+
* different authority — the camera's firmware — and per D62 it stores
|
|
32324
|
+
* nothing of its own. Every value here is read from the camera and every
|
|
32325
|
+
* write goes back to the camera; there is no CamStack-side mirror that
|
|
32326
|
+
* could disagree with the device.
|
|
32327
|
+
*
|
|
32328
|
+
* ## One shape, two firmwares
|
|
32329
|
+
*
|
|
32330
|
+
* Measured 2026-09-22 against the live fleet:
|
|
32331
|
+
*
|
|
32332
|
+
* | fact | Hikvision (ISAPI) | Reolink (Baichuan) |
|
|
32333
|
+
* | --- | --- | --- |
|
|
32334
|
+
* | storage | `ContentMgmt/Storage` `<hdd>` rows: status, capacity, freeSpace (MB) | `getHddInfoList` (cmd 102): `mount`, `format`, `capacity` GB + `capacityM` MB remainder |
|
|
32335
|
+
* | tracks | several (101 **and** 103 on both 1436 and 3833), each with its own schedule | one per channel |
|
|
32336
|
+
* | schedule | per track, 7 `ScheduleAction` blocks: DayOfWeek + TimeOfDay range + ONE `ActionRecordingMode` | per trigger type, a 168-char weekly HOUR mask |
|
|
32337
|
+
* | triggers | `CMR`, `MOTION` | `Normal`, `MD`, `people`, `vehicle`, `dog_cat`, `crossline`, `intrude`, `loitering` |
|
|
32338
|
+
* | pre-record | `PreRecordTimeSeconds` | `preRecordTime` |
|
|
32339
|
+
* | post-record | `PostRecordTimeSeconds` | `recordDelayTime` |
|
|
32340
|
+
* | overwrite | per track `LoopEnable` | `cycle`, with `cycleList` enumerating the accepted values |
|
|
32341
|
+
* | segment length | not exposed on V5.7.1 | `packageTime` (minutes) |
|
|
32342
|
+
*
|
|
32343
|
+
* The two schedule models look different and are the same thing in
|
|
32344
|
+
* different coordinates: both answer "for this trigger, during which
|
|
32345
|
+
* weekly windows does the camera record". {@link RecordWindow} is that
|
|
32346
|
+
* question in one shape — Hikvision's ranges map straight onto it,
|
|
32347
|
+
* Reolink's mask expands into hour-aligned windows.
|
|
32348
|
+
*
|
|
32349
|
+
* ## Union, not intersection
|
|
32350
|
+
*
|
|
32351
|
+
* **The same fields exist on every camera.** What differs per device is
|
|
32352
|
+
* which VALUES that device accepts, and that is what {@link
|
|
32353
|
+
* RecordingOnboardOptions} reports — a `{ readable, writable, reason }`
|
|
32354
|
+
* per field plus the schedule's own limits. A control a camera cannot
|
|
32355
|
+
* honour is rendered DISABLED WITH ITS REASON, never missing and never
|
|
32356
|
+
* dead: disabled must not look like broken.
|
|
32357
|
+
*
|
|
32358
|
+
* ## Refusal by name
|
|
32359
|
+
*
|
|
32360
|
+
* A write a camera cannot honour is refused with a sentence the operator
|
|
32361
|
+
* can read — never accepted and dropped. Both providers refuse through
|
|
32362
|
+
* {@link describeOnboardRefusal}, so the vocabulary is one function and
|
|
32363
|
+
* one test, not two hand-written vendor opinions.
|
|
32364
|
+
*
|
|
32365
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
32366
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
32367
|
+
* injected from `status`) reports the live values, and a single
|
|
32368
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
32369
|
+
* settings-contribution methods.
|
|
32370
|
+
*/
|
|
32371
|
+
/**
|
|
32372
|
+
* What makes the camera start recording during a window.
|
|
32373
|
+
*
|
|
32374
|
+
* The union of both vendors' vocabularies. `continuous` is Hikvision's
|
|
32375
|
+
* `CMR` and Reolink's `Normal`; `motion` is `MOTION` / `MD`. The
|
|
32376
|
+
* object-class triggers are Reolink-only today and the smart-event ones
|
|
32377
|
+
* (`lineCrossing`, `intrusion`, `loitering`) are Reolink-only on the
|
|
32378
|
+
* firmwares measured — a camera that cannot record on a trigger simply
|
|
32379
|
+
* does not list it in `options.schedule.triggers`, and a window naming
|
|
32380
|
+
* it is REFUSED, not dropped.
|
|
32381
|
+
*/
|
|
32382
|
+
var RecordTriggerSchema = _enum([
|
|
32383
|
+
"continuous",
|
|
32384
|
+
"motion",
|
|
32385
|
+
"person",
|
|
32386
|
+
"vehicle",
|
|
32387
|
+
"animal",
|
|
32388
|
+
"lineCrossing",
|
|
32389
|
+
"intrusion",
|
|
32390
|
+
"loitering",
|
|
32391
|
+
"alarmInput"
|
|
32392
|
+
]);
|
|
32393
|
+
/**
|
|
32394
|
+
* One weekly recording window: "on `day`, from `startMinute` to
|
|
32395
|
+
* `endMinute`, record on `trigger`".
|
|
32396
|
+
*
|
|
32397
|
+
* `day` is 0 = Monday … 6 = Sunday (ISO order, which is also the order
|
|
32398
|
+
* both firmwares enumerate). Minutes are local camera time since
|
|
32399
|
+
* midnight; `endMinute` may be 1440, meaning end of day — that is
|
|
32400
|
+
* Hikvision's literal `24:00` and Reolink's 24th mask slot, and
|
|
32401
|
+
* collapsing it to 0 would turn a whole-day window into an empty one.
|
|
32402
|
+
*/
|
|
32403
|
+
var RecordWindowSchema = object({
|
|
32404
|
+
trigger: RecordTriggerSchema,
|
|
32405
|
+
day: number().int().min(0).max(6),
|
|
32406
|
+
startMinute: number().int().min(0).max(1439),
|
|
32407
|
+
endMinute: number().int().min(1).max(1440)
|
|
32408
|
+
});
|
|
32409
|
+
/** Status of one physical volume, as the camera itself describes it. */
|
|
32410
|
+
var OnboardStorageVolumeSchema = object({
|
|
32411
|
+
/** The camera's own id for the volume (`hdd/id`, Reolink `HddInfo/number`). */
|
|
32412
|
+
id: string(),
|
|
32413
|
+
/** The camera's own name for it, when it gives one (`hddName`). */
|
|
32414
|
+
label: string().optional(),
|
|
32415
|
+
status: _enum([
|
|
32416
|
+
"ok",
|
|
32417
|
+
"unformatted",
|
|
32418
|
+
"error",
|
|
32419
|
+
"offline",
|
|
32420
|
+
"unknown"
|
|
32421
|
+
]),
|
|
32422
|
+
/**
|
|
32423
|
+
* Total size in MB, or **null when the camera did not say**.
|
|
32424
|
+
*
|
|
32425
|
+
* Never 0 for an unreadable value: a measurement that failed is not a
|
|
32426
|
+
* measurement (D393), and a card whose size is unknown must not be
|
|
32427
|
+
* rendered as a card of size zero.
|
|
32428
|
+
*/
|
|
32429
|
+
capacityMb: number().nullable(),
|
|
32430
|
+
/**
|
|
32431
|
+
* Free space in MB, or null when unknown.
|
|
32432
|
+
*
|
|
32433
|
+
* **Not a proxy for "has footage".** Measured 2026-09-22: 1436 and
|
|
32434
|
+
* 1439 both report exactly 11776 MB free — the fixed reserve a looping
|
|
32435
|
+
* card converges on once it has wrapped. At loop steady state the
|
|
32436
|
+
* number is identical whether the camera recorded yesterday or stopped
|
|
32437
|
+
* a month ago.
|
|
32438
|
+
*/
|
|
32439
|
+
freeMb: number().nullable(),
|
|
32440
|
+
/** True when the camera reports the volume writable (`property` RW). */
|
|
32441
|
+
writable: boolean().optional()
|
|
32442
|
+
});
|
|
32443
|
+
/**
|
|
32444
|
+
* What the camera is doing with its own storage, right now.
|
|
32445
|
+
*
|
|
32446
|
+
* Every scalar is nullable and **null means the camera did not answer**,
|
|
32447
|
+
* never a default. A form that seeds `0` from an unanswered read invites
|
|
32448
|
+
* the operator to save that 0 back onto the camera.
|
|
32449
|
+
*/
|
|
32450
|
+
var RecordingOnboardStatusSchema = object({
|
|
32451
|
+
storage: discriminatedUnion("kind", [
|
|
32452
|
+
object({
|
|
32453
|
+
kind: literal("present"),
|
|
32454
|
+
volumes: array(OnboardStorageVolumeSchema)
|
|
32455
|
+
}),
|
|
32456
|
+
object({
|
|
32457
|
+
kind: literal("absent"),
|
|
32458
|
+
reason: string()
|
|
32459
|
+
}),
|
|
32460
|
+
object({
|
|
32461
|
+
kind: literal("unknown"),
|
|
32462
|
+
reason: string()
|
|
32463
|
+
})
|
|
32464
|
+
]),
|
|
32465
|
+
tracks: array(object({
|
|
32466
|
+
id: string(),
|
|
32467
|
+
enabled: boolean(),
|
|
32468
|
+
isVideo: boolean(),
|
|
32469
|
+
/** From the camera's own track description. Null when it does not say. */
|
|
32470
|
+
codec: string().nullable(),
|
|
32471
|
+
resolution: string().nullable(),
|
|
32472
|
+
/** Per-track overwrite flag, where the firmware keeps it per track. */
|
|
32473
|
+
overwriteWhenFull: boolean().nullable()
|
|
32474
|
+
})),
|
|
32475
|
+
/**
|
|
32476
|
+
* The track the write path targets — the enabled VIDEO one. Null when
|
|
32477
|
+
* no track could be identified, which is itself a refusal reason.
|
|
32478
|
+
*/
|
|
32479
|
+
primaryTrackId: string().nullable(),
|
|
32480
|
+
/** Master "record to the card at all" switch. */
|
|
32481
|
+
enabled: boolean().nullable(),
|
|
32482
|
+
overwriteWhenFull: boolean().nullable(),
|
|
32483
|
+
preRecordSec: number().nullable(),
|
|
32484
|
+
postRecordSec: number().nullable(),
|
|
32485
|
+
/** Length of one recorded file, in minutes. */
|
|
32486
|
+
segmentMinutes: number().nullable(),
|
|
32487
|
+
/** The primary track's weekly windows, flattened. */
|
|
32488
|
+
windows: array(RecordWindowSchema),
|
|
32489
|
+
/**
|
|
32490
|
+
* How many windows the camera described that CamStack could NOT read —
|
|
32491
|
+
* an unrecognised trigger, an unparseable clock, a weekday it does not
|
|
32492
|
+
* name.
|
|
32493
|
+
*
|
|
32494
|
+
* A dropped window is work the reader threw away, and a schedule that
|
|
32495
|
+
* silently shows fewer rows than the camera holds is how an operator
|
|
32496
|
+
* saves back a schedule shorter than the one they were looking at
|
|
32497
|
+
* (D391). Non-zero means the window list is INCOMPLETE and a write
|
|
32498
|
+
* that replaces it would delete what was not shown — which is why a
|
|
32499
|
+
* provider reporting a non-zero count also reports the schedule as not
|
|
32500
|
+
* writable.
|
|
32501
|
+
*/
|
|
32502
|
+
unreadableWindows: number(),
|
|
32503
|
+
/**
|
|
32504
|
+
* The camera is scheduled to record and has NO usable storage.
|
|
32505
|
+
*
|
|
32506
|
+
* A first-class fact because it is the fleet's most common silent
|
|
32507
|
+
* defect: measured 2026-09-22, 1441 and 3831 are both motion-recording
|
|
32508
|
+
* to a card that is not there. Neither the schedule nor the storage
|
|
32509
|
+
* read says anything wrong on its own; only the pair does.
|
|
32510
|
+
*/
|
|
32511
|
+
recordingToNowhere: boolean(),
|
|
32512
|
+
lastFetchedAt: number()
|
|
32513
|
+
});
|
|
32514
|
+
/** Numeric range descriptor — `{ min, max, step }` per the getOptions convention. */
|
|
32515
|
+
var RangeSchema = object({
|
|
32516
|
+
min: number(),
|
|
32517
|
+
max: number(),
|
|
32518
|
+
step: number()
|
|
32519
|
+
});
|
|
32520
|
+
/**
|
|
32521
|
+
* The values a camera actually takes for a numeric field, when they are a SET
|
|
32522
|
+
* rather than a range.
|
|
32523
|
+
*
|
|
32524
|
+
* `{min,max,step}` cannot say what these two firmwares do. Measured on 1436
|
|
32525
|
+
* (I91DN) on 2026-09-22 by writing each value and reading it back:
|
|
32526
|
+
*
|
|
32527
|
+
* - pre-record: `0, 5, 10, 15, 20, 25, 30` and `2147483647` (INT32_MAX, the
|
|
32528
|
+
* camera's "no limit" — `-1` and `4294967295` both land on it);
|
|
32529
|
+
* - post-record: `5, 10, 30, 60, 120, 300, 600`.
|
|
32530
|
+
*
|
|
32531
|
+
* Neither is expressible as a step: the first has a sentinel two billion away
|
|
32532
|
+
* from its neighbours, the second doubles and then jumps. A range that tried
|
|
32533
|
+
* would forbid values the camera takes AND permit values it silently replaces
|
|
32534
|
+
* with 5 — wrong in both directions at once.
|
|
32535
|
+
*
|
|
32536
|
+
* `sentinel` names the member that is not a duration, so a surface can render
|
|
32537
|
+
* "no limit" instead of `2147483647` seconds.
|
|
32538
|
+
*/
|
|
32539
|
+
var AllowedValuesSchema = object({
|
|
32540
|
+
values: array(number()).min(1),
|
|
32541
|
+
sentinel: object({
|
|
32542
|
+
value: number(),
|
|
32543
|
+
meaning: _enum(["no-limit", "disabled"])
|
|
32544
|
+
}).optional()
|
|
32545
|
+
});
|
|
32546
|
+
/**
|
|
32547
|
+
* Per-field availability on ONE camera.
|
|
32548
|
+
*
|
|
32549
|
+
* The field exists on every camera — this says whether this one can be
|
|
32550
|
+
* read and whether it can be written, and `reason` says why not when
|
|
32551
|
+
* either is false. The UI renders the control DISABLED with the reason
|
|
32552
|
+
* rather than hiding it, so a limitation is legible instead of looking
|
|
32553
|
+
* like a missing feature.
|
|
32554
|
+
*/
|
|
32555
|
+
var OnboardFieldSupportSchema = object({
|
|
32556
|
+
readable: boolean(),
|
|
32557
|
+
writable: boolean(),
|
|
32558
|
+
/** Required whenever `readable` or `writable` is false. */
|
|
32559
|
+
reason: string().optional()
|
|
32560
|
+
});
|
|
32561
|
+
/** What this camera's schedule model can express. */
|
|
32562
|
+
var OnboardScheduleSupportSchema = object({
|
|
32563
|
+
support: OnboardFieldSupportSchema,
|
|
32564
|
+
/**
|
|
32565
|
+
* The smallest time step the camera can express, in minutes.
|
|
32566
|
+
*
|
|
32567
|
+
* Hikvision takes arbitrary minutes (`00:05:00`–`23:57:00` observed on
|
|
32568
|
+
* 1436's track 103). Reolink's schedule is a 7×24 HOUR mask, so 60. A
|
|
32569
|
+
* window whose edges are not a multiple of this is REFUSED rather than
|
|
32570
|
+
* quietly rounded — rounding is how an operator's 06:30 becomes 06:00
|
|
32571
|
+
* and nothing says so.
|
|
32572
|
+
*/
|
|
32573
|
+
granularityMinutes: number(),
|
|
32574
|
+
/** Triggers this camera can record on. A window naming another is refused. */
|
|
32575
|
+
triggers: array(RecordTriggerSchema),
|
|
32576
|
+
/**
|
|
32577
|
+
* False when the camera stores ONE trigger per time range, so two
|
|
32578
|
+
* windows overlapping on the same day cannot carry different triggers.
|
|
32579
|
+
* True on Reolink, whose mask is per-trigger and independent.
|
|
32580
|
+
*/
|
|
32581
|
+
supportsOverlappingTriggers: boolean()
|
|
32582
|
+
});
|
|
32583
|
+
var RecordingOnboardOptionsSchema = object({
|
|
32584
|
+
enabled: OnboardFieldSupportSchema,
|
|
32585
|
+
overwriteWhenFull: OnboardFieldSupportSchema,
|
|
32586
|
+
preRecordSec: OnboardFieldSupportSchema,
|
|
32587
|
+
preRecordSecRange: RangeSchema.optional(),
|
|
32588
|
+
/** Preferred over the range when the camera takes a SET, not a span. */
|
|
32589
|
+
preRecordSecAllowed: AllowedValuesSchema.optional(),
|
|
32590
|
+
postRecordSec: OnboardFieldSupportSchema,
|
|
32591
|
+
postRecordSecRange: RangeSchema.optional(),
|
|
32592
|
+
/** Preferred over the range when the camera takes a SET, not a span. */
|
|
32593
|
+
postRecordSecAllowed: AllowedValuesSchema.optional(),
|
|
32594
|
+
segmentMinutes: OnboardFieldSupportSchema,
|
|
32595
|
+
segmentMinutesRange: RangeSchema.optional(),
|
|
32596
|
+
/** Preferred over the range when the camera takes a SET, not a span. */
|
|
32597
|
+
segmentMinutesAllowed: AllowedValuesSchema.optional(),
|
|
32598
|
+
schedule: OnboardScheduleSupportSchema
|
|
32599
|
+
});
|
|
32600
|
+
/**
|
|
32601
|
+
* A partial change. Every field optional.
|
|
32602
|
+
*
|
|
32603
|
+
* Unlike the other `deviceConfig` caps, a provider here does **NOT**
|
|
32604
|
+
* silently ignore a field it cannot support — it refuses, by name,
|
|
32605
|
+
* through {@link describeOnboardRefusal}. Silence on a recording setting
|
|
32606
|
+
* is the failure D62 exists to prevent: the operator believes the camera
|
|
32607
|
+
* is recording the way the form says, and it is not.
|
|
32608
|
+
*/
|
|
32609
|
+
var RecordingOnboardPatchSchema = object({
|
|
32610
|
+
enabled: boolean().optional(),
|
|
32611
|
+
overwriteWhenFull: boolean().optional(),
|
|
32612
|
+
preRecordSec: number().optional(),
|
|
32613
|
+
postRecordSec: number().optional(),
|
|
32614
|
+
segmentMinutes: number().optional(),
|
|
32615
|
+
/** The complete new window set for the primary track — not a delta. */
|
|
32616
|
+
windows: array(RecordWindowSchema).optional()
|
|
32617
|
+
});
|
|
32618
|
+
var recordingOnboardCapability = {
|
|
32619
|
+
name: "recording-onboard",
|
|
32620
|
+
scope: "device",
|
|
32621
|
+
deviceNative: true,
|
|
32622
|
+
mode: "singleton",
|
|
32623
|
+
deviceTypes: [DeviceType.Camera],
|
|
32624
|
+
deviceConfig: { ui: {
|
|
32625
|
+
kind: "derived-form",
|
|
32626
|
+
builderId: "recording-onboard",
|
|
32627
|
+
tab: "recording"
|
|
32628
|
+
} },
|
|
32629
|
+
methods: {
|
|
32630
|
+
getOptions: method(object({ deviceId: number() }), RecordingOnboardOptionsSchema),
|
|
32631
|
+
setSettings: method(object({
|
|
32632
|
+
deviceId: number(),
|
|
32633
|
+
settings: RecordingOnboardPatchSchema
|
|
32634
|
+
}), _void(), {
|
|
32635
|
+
kind: "mutation",
|
|
32636
|
+
auth: "admin"
|
|
32637
|
+
})
|
|
32638
|
+
},
|
|
32639
|
+
status: {
|
|
32640
|
+
schema: RecordingOnboardStatusSchema,
|
|
32641
|
+
kind: "poll"
|
|
32642
|
+
},
|
|
32643
|
+
runtimeState: RecordingOnboardStatusSchema,
|
|
32644
|
+
/**
|
|
32645
|
+
* Runtime-state durability: **restored** — operator-set camera-side
|
|
32646
|
+
* recording config; mutation-driven, and the storage half is the last
|
|
32647
|
+
* thing the camera said about its own card.
|
|
32648
|
+
*
|
|
32649
|
+
* See `RuntimeStateDurability`. Enforced by
|
|
32650
|
+
* `scripts/check-runtime-state-durability.ts`.
|
|
32651
|
+
*/
|
|
32652
|
+
durability: "restored",
|
|
32653
|
+
/** Clock fields: written, but excluded from the compare that decides
|
|
32654
|
+
* whether persisting is worth a SQLite commit. */
|
|
32655
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
32656
|
+
};
|
|
32657
|
+
/**
|
|
32060
32658
|
* Generic device-level status snapshot. Auto-registered by `BaseDevice`
|
|
32061
32659
|
* for every device, regardless of provider — the kernel needs a uniform
|
|
32062
32660
|
* cap-keyed slice for the basic device flags every consumer expects to
|
|
@@ -38093,9 +38691,21 @@ var recordingCapability = {
|
|
|
38093
38691
|
kind: "query",
|
|
38094
38692
|
auth: "admin"
|
|
38095
38693
|
}),
|
|
38694
|
+
/**
|
|
38695
|
+
* READ the camera's recording intent.
|
|
38696
|
+
*
|
|
38697
|
+
* `protected`, not `admin`, since 2026-09-21. It is the only per-camera
|
|
38698
|
+
* source of the recording mode the viewer has, and the camera status dot
|
|
38699
|
+
* asks for it on a screen every read-only user sees. As `admin` it answered
|
|
38700
|
+
* FORBIDDEN, the viewer collapsed that to `null` and `null` to `'off'`, and
|
|
38701
|
+
* a recording camera was drawn GREEN — a failed measurement rendered as a
|
|
38702
|
+
* value (D315, D393, D590). It carries schedules and retention, no secret,
|
|
38703
|
+
* and the per-device gate in `scope-access.ts` still applies; `setDeviceConfig`
|
|
38704
|
+
* stays `admin`.
|
|
38705
|
+
*/
|
|
38096
38706
|
getDeviceConfig: method(object({ deviceId: number() }), RecordingConfigSchema, {
|
|
38097
38707
|
kind: "query",
|
|
38098
|
-
auth: "
|
|
38708
|
+
auth: "protected"
|
|
38099
38709
|
}),
|
|
38100
38710
|
/** Locate footage at a wall-clock instant: the covering segment's window,
|
|
38101
38711
|
* or a gap with the forward nearest covered edge. Used by a feeder running
|
|
@@ -41408,6 +42018,1329 @@ DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeate
|
|
|
41408
42018
|
new Set(Object.values(DeviceType));
|
|
41409
42019
|
DeviceFeature.BatteryOperated;
|
|
41410
42020
|
/**
|
|
42021
|
+
* The vocabulary, in the order a picker offers it.
|
|
42022
|
+
*
|
|
42023
|
+
* Adding a key here is not enough to make it pickable: both glyph tables must
|
|
42024
|
+
* gain it too, and their tests fail until they do. That is the intended
|
|
42025
|
+
* friction — it is the only thing that keeps the two surfaces honest.
|
|
42026
|
+
*/
|
|
42027
|
+
var DISPLAY_ICON_VOCABULARY = [
|
|
42028
|
+
{
|
|
42029
|
+
key: "camera",
|
|
42030
|
+
group: "device",
|
|
42031
|
+
synonyms: [
|
|
42032
|
+
"telecamera",
|
|
42033
|
+
"videocamera",
|
|
42034
|
+
"camera",
|
|
42035
|
+
"cam"
|
|
42036
|
+
]
|
|
42037
|
+
},
|
|
42038
|
+
{
|
|
42039
|
+
key: "network",
|
|
42040
|
+
group: "device",
|
|
42041
|
+
synonyms: [
|
|
42042
|
+
"rete",
|
|
42043
|
+
"network",
|
|
42044
|
+
"lan"
|
|
42045
|
+
]
|
|
42046
|
+
},
|
|
42047
|
+
{
|
|
42048
|
+
key: "toggle-left",
|
|
42049
|
+
group: "device",
|
|
42050
|
+
synonyms: [
|
|
42051
|
+
"interruttore",
|
|
42052
|
+
"switch",
|
|
42053
|
+
"toggle"
|
|
42054
|
+
]
|
|
42055
|
+
},
|
|
42056
|
+
{
|
|
42057
|
+
key: "toggle-right",
|
|
42058
|
+
group: "device",
|
|
42059
|
+
synonyms: [
|
|
42060
|
+
"interruttore",
|
|
42061
|
+
"switch",
|
|
42062
|
+
"toggle",
|
|
42063
|
+
"acceso"
|
|
42064
|
+
]
|
|
42065
|
+
},
|
|
42066
|
+
{
|
|
42067
|
+
key: "circle-dot",
|
|
42068
|
+
group: "device",
|
|
42069
|
+
synonyms: [
|
|
42070
|
+
"pulsante",
|
|
42071
|
+
"bottone",
|
|
42072
|
+
"button",
|
|
42073
|
+
"dot"
|
|
42074
|
+
]
|
|
42075
|
+
},
|
|
42076
|
+
{
|
|
42077
|
+
key: "refresh-cw",
|
|
42078
|
+
group: "device",
|
|
42079
|
+
synonyms: [
|
|
42080
|
+
"aggiorna",
|
|
42081
|
+
"ricarica",
|
|
42082
|
+
"refresh",
|
|
42083
|
+
"reload",
|
|
42084
|
+
"ciclo"
|
|
42085
|
+
]
|
|
42086
|
+
},
|
|
42087
|
+
{
|
|
42088
|
+
key: "box",
|
|
42089
|
+
group: "device",
|
|
42090
|
+
synonyms: [
|
|
42091
|
+
"scatola",
|
|
42092
|
+
"box",
|
|
42093
|
+
"contenitore"
|
|
42094
|
+
]
|
|
42095
|
+
},
|
|
42096
|
+
{
|
|
42097
|
+
key: "scroll-text",
|
|
42098
|
+
group: "device",
|
|
42099
|
+
synonyms: [
|
|
42100
|
+
"registro",
|
|
42101
|
+
"log",
|
|
42102
|
+
"testo"
|
|
42103
|
+
]
|
|
42104
|
+
},
|
|
42105
|
+
{
|
|
42106
|
+
key: "workflow",
|
|
42107
|
+
group: "device",
|
|
42108
|
+
synonyms: [
|
|
42109
|
+
"automazione",
|
|
42110
|
+
"flusso",
|
|
42111
|
+
"workflow",
|
|
42112
|
+
"scenario"
|
|
42113
|
+
]
|
|
42114
|
+
},
|
|
42115
|
+
{
|
|
42116
|
+
key: "lock",
|
|
42117
|
+
group: "device",
|
|
42118
|
+
synonyms: [
|
|
42119
|
+
"serratura",
|
|
42120
|
+
"chiave",
|
|
42121
|
+
"lucchetto",
|
|
42122
|
+
"chiuso",
|
|
42123
|
+
"locked"
|
|
42124
|
+
]
|
|
42125
|
+
},
|
|
42126
|
+
{
|
|
42127
|
+
key: "lock-open",
|
|
42128
|
+
group: "device",
|
|
42129
|
+
synonyms: [
|
|
42130
|
+
"serratura",
|
|
42131
|
+
"aperta",
|
|
42132
|
+
"sbloccato",
|
|
42133
|
+
"unlocked"
|
|
42134
|
+
]
|
|
42135
|
+
},
|
|
42136
|
+
{
|
|
42137
|
+
key: "blinds",
|
|
42138
|
+
group: "device",
|
|
42139
|
+
synonyms: [
|
|
42140
|
+
"tapparella",
|
|
42141
|
+
"persiana",
|
|
42142
|
+
"serranda",
|
|
42143
|
+
"avvolgibile",
|
|
42144
|
+
"shutter",
|
|
42145
|
+
"blind",
|
|
42146
|
+
"veneziana"
|
|
42147
|
+
]
|
|
42148
|
+
},
|
|
42149
|
+
{
|
|
42150
|
+
key: "air-vent",
|
|
42151
|
+
group: "device",
|
|
42152
|
+
synonyms: [
|
|
42153
|
+
"bocchetta",
|
|
42154
|
+
"aria",
|
|
42155
|
+
"ventilazione",
|
|
42156
|
+
"condizionatore",
|
|
42157
|
+
"vent"
|
|
42158
|
+
]
|
|
42159
|
+
},
|
|
42160
|
+
{
|
|
42161
|
+
key: "monitor-play",
|
|
42162
|
+
group: "device",
|
|
42163
|
+
synonyms: [
|
|
42164
|
+
"schermo",
|
|
42165
|
+
"riproduzione",
|
|
42166
|
+
"player",
|
|
42167
|
+
"display"
|
|
42168
|
+
]
|
|
42169
|
+
},
|
|
42170
|
+
{
|
|
42171
|
+
key: "sliders-horizontal",
|
|
42172
|
+
group: "device",
|
|
42173
|
+
synonyms: [
|
|
42174
|
+
"regolazione",
|
|
42175
|
+
"cursori",
|
|
42176
|
+
"impostazioni",
|
|
42177
|
+
"slider"
|
|
42178
|
+
]
|
|
42179
|
+
},
|
|
42180
|
+
{
|
|
42181
|
+
key: "map-pin",
|
|
42182
|
+
group: "device",
|
|
42183
|
+
synonyms: [
|
|
42184
|
+
"posizione",
|
|
42185
|
+
"luogo",
|
|
42186
|
+
"mappa",
|
|
42187
|
+
"pin"
|
|
42188
|
+
]
|
|
42189
|
+
},
|
|
42190
|
+
{
|
|
42191
|
+
key: "bot",
|
|
42192
|
+
group: "device",
|
|
42193
|
+
synonyms: [
|
|
42194
|
+
"robot",
|
|
42195
|
+
"aspirapolvere",
|
|
42196
|
+
"bot"
|
|
42197
|
+
]
|
|
42198
|
+
},
|
|
42199
|
+
{
|
|
42200
|
+
key: "tractor",
|
|
42201
|
+
group: "device",
|
|
42202
|
+
synonyms: [
|
|
42203
|
+
"trattore",
|
|
42204
|
+
"tosaerba",
|
|
42205
|
+
"giardino"
|
|
42206
|
+
]
|
|
42207
|
+
},
|
|
42208
|
+
{
|
|
42209
|
+
key: "image",
|
|
42210
|
+
group: "device",
|
|
42211
|
+
synonyms: [
|
|
42212
|
+
"immagine",
|
|
42213
|
+
"foto",
|
|
42214
|
+
"snapshot"
|
|
42215
|
+
]
|
|
42216
|
+
},
|
|
42217
|
+
{
|
|
42218
|
+
key: "bone",
|
|
42219
|
+
group: "device",
|
|
42220
|
+
synonyms: ["osso", "cane"]
|
|
42221
|
+
},
|
|
42222
|
+
{
|
|
42223
|
+
key: "door-closed",
|
|
42224
|
+
group: "device",
|
|
42225
|
+
synonyms: [
|
|
42226
|
+
"porta",
|
|
42227
|
+
"chiusa",
|
|
42228
|
+
"contatto"
|
|
42229
|
+
]
|
|
42230
|
+
},
|
|
42231
|
+
{
|
|
42232
|
+
key: "door-open",
|
|
42233
|
+
group: "device",
|
|
42234
|
+
synonyms: [
|
|
42235
|
+
"porta",
|
|
42236
|
+
"aperta",
|
|
42237
|
+
"contatto",
|
|
42238
|
+
"ingresso",
|
|
42239
|
+
"uscita"
|
|
42240
|
+
]
|
|
42241
|
+
},
|
|
42242
|
+
{
|
|
42243
|
+
key: "crosshair",
|
|
42244
|
+
group: "device",
|
|
42245
|
+
synonyms: [
|
|
42246
|
+
"mirino",
|
|
42247
|
+
"puntamento",
|
|
42248
|
+
"centro"
|
|
42249
|
+
]
|
|
42250
|
+
},
|
|
42251
|
+
{
|
|
42252
|
+
key: "eye",
|
|
42253
|
+
group: "device",
|
|
42254
|
+
synonyms: [
|
|
42255
|
+
"occhio",
|
|
42256
|
+
"visibile",
|
|
42257
|
+
"visto"
|
|
42258
|
+
]
|
|
42259
|
+
},
|
|
42260
|
+
{
|
|
42261
|
+
key: "eye-off",
|
|
42262
|
+
group: "device",
|
|
42263
|
+
synonyms: [
|
|
42264
|
+
"privacy",
|
|
42265
|
+
"nascosto",
|
|
42266
|
+
"oscurato",
|
|
42267
|
+
"mascherato",
|
|
42268
|
+
"invisibile"
|
|
42269
|
+
]
|
|
42270
|
+
},
|
|
42271
|
+
{
|
|
42272
|
+
key: "smartphone",
|
|
42273
|
+
group: "device",
|
|
42274
|
+
synonyms: [
|
|
42275
|
+
"telefono",
|
|
42276
|
+
"cellulare",
|
|
42277
|
+
"smartphone"
|
|
42278
|
+
]
|
|
42279
|
+
},
|
|
42280
|
+
{
|
|
42281
|
+
key: "phone",
|
|
42282
|
+
group: "device",
|
|
42283
|
+
synonyms: ["telefono", "chiamata"]
|
|
42284
|
+
},
|
|
42285
|
+
{
|
|
42286
|
+
key: "tablet",
|
|
42287
|
+
group: "device",
|
|
42288
|
+
synonyms: ["tablet", "ipad"]
|
|
42289
|
+
},
|
|
42290
|
+
{
|
|
42291
|
+
key: "laptop",
|
|
42292
|
+
group: "device",
|
|
42293
|
+
synonyms: [
|
|
42294
|
+
"portatile",
|
|
42295
|
+
"laptop",
|
|
42296
|
+
"notebook"
|
|
42297
|
+
]
|
|
42298
|
+
},
|
|
42299
|
+
{
|
|
42300
|
+
key: "monitor",
|
|
42301
|
+
group: "device",
|
|
42302
|
+
synonyms: ["monitor", "schermo"]
|
|
42303
|
+
},
|
|
42304
|
+
{
|
|
42305
|
+
key: "tv",
|
|
42306
|
+
group: "device",
|
|
42307
|
+
synonyms: ["televisore", "tv"]
|
|
42308
|
+
},
|
|
42309
|
+
{
|
|
42310
|
+
key: "speaker",
|
|
42311
|
+
group: "device",
|
|
42312
|
+
synonyms: [
|
|
42313
|
+
"altoparlante",
|
|
42314
|
+
"cassa",
|
|
42315
|
+
"speaker"
|
|
42316
|
+
]
|
|
42317
|
+
},
|
|
42318
|
+
{
|
|
42319
|
+
key: "printer",
|
|
42320
|
+
group: "device",
|
|
42321
|
+
synonyms: ["stampante"]
|
|
42322
|
+
},
|
|
42323
|
+
{
|
|
42324
|
+
key: "projector",
|
|
42325
|
+
group: "device",
|
|
42326
|
+
synonyms: ["proiettore"]
|
|
42327
|
+
},
|
|
42328
|
+
{
|
|
42329
|
+
key: "gamepad-2",
|
|
42330
|
+
group: "device",
|
|
42331
|
+
synonyms: [
|
|
42332
|
+
"console",
|
|
42333
|
+
"gioco",
|
|
42334
|
+
"joystick"
|
|
42335
|
+
]
|
|
42336
|
+
},
|
|
42337
|
+
{
|
|
42338
|
+
key: "radio",
|
|
42339
|
+
group: "device",
|
|
42340
|
+
synonyms: ["radio"]
|
|
42341
|
+
},
|
|
42342
|
+
{
|
|
42343
|
+
key: "router",
|
|
42344
|
+
group: "device",
|
|
42345
|
+
synonyms: ["router", "modem"]
|
|
42346
|
+
},
|
|
42347
|
+
{
|
|
42348
|
+
key: "bluetooth",
|
|
42349
|
+
group: "device",
|
|
42350
|
+
synonyms: ["bluetooth"]
|
|
42351
|
+
},
|
|
42352
|
+
{
|
|
42353
|
+
key: "cpu",
|
|
42354
|
+
group: "device",
|
|
42355
|
+
synonyms: [
|
|
42356
|
+
"processore",
|
|
42357
|
+
"cpu",
|
|
42358
|
+
"chip",
|
|
42359
|
+
"dispositivo"
|
|
42360
|
+
]
|
|
42361
|
+
},
|
|
42362
|
+
{
|
|
42363
|
+
key: "hard-drive",
|
|
42364
|
+
group: "device",
|
|
42365
|
+
synonyms: [
|
|
42366
|
+
"disco",
|
|
42367
|
+
"hdd",
|
|
42368
|
+
"archiviazione",
|
|
42369
|
+
"storage"
|
|
42370
|
+
]
|
|
42371
|
+
},
|
|
42372
|
+
{
|
|
42373
|
+
key: "server",
|
|
42374
|
+
group: "device",
|
|
42375
|
+
synonyms: ["server", "nas"]
|
|
42376
|
+
},
|
|
42377
|
+
{
|
|
42378
|
+
key: "mic",
|
|
42379
|
+
group: "device",
|
|
42380
|
+
synonyms: ["microfono", "audio"]
|
|
42381
|
+
},
|
|
42382
|
+
{
|
|
42383
|
+
key: "mic-off",
|
|
42384
|
+
group: "device",
|
|
42385
|
+
synonyms: [
|
|
42386
|
+
"microfono",
|
|
42387
|
+
"spento",
|
|
42388
|
+
"muto"
|
|
42389
|
+
]
|
|
42390
|
+
},
|
|
42391
|
+
{
|
|
42392
|
+
key: "video",
|
|
42393
|
+
group: "device",
|
|
42394
|
+
synonyms: ["video"]
|
|
42395
|
+
},
|
|
42396
|
+
{
|
|
42397
|
+
key: "video-off",
|
|
42398
|
+
group: "device",
|
|
42399
|
+
synonyms: ["video", "spento"]
|
|
42400
|
+
},
|
|
42401
|
+
{
|
|
42402
|
+
key: "music",
|
|
42403
|
+
group: "device",
|
|
42404
|
+
synonyms: ["musica"]
|
|
42405
|
+
},
|
|
42406
|
+
{
|
|
42407
|
+
key: "plug",
|
|
42408
|
+
group: "device",
|
|
42409
|
+
synonyms: [
|
|
42410
|
+
"presa",
|
|
42411
|
+
"spina",
|
|
42412
|
+
"plug"
|
|
42413
|
+
]
|
|
42414
|
+
},
|
|
42415
|
+
{
|
|
42416
|
+
key: "plug-zap",
|
|
42417
|
+
group: "device",
|
|
42418
|
+
synonyms: ["presa", "alimentata"]
|
|
42419
|
+
},
|
|
42420
|
+
{
|
|
42421
|
+
key: "power",
|
|
42422
|
+
group: "device",
|
|
42423
|
+
synonyms: [
|
|
42424
|
+
"accensione",
|
|
42425
|
+
"alimentazione",
|
|
42426
|
+
"power"
|
|
42427
|
+
]
|
|
42428
|
+
},
|
|
42429
|
+
{
|
|
42430
|
+
key: "power-off",
|
|
42431
|
+
group: "device",
|
|
42432
|
+
synonyms: ["spegnimento", "spento"]
|
|
42433
|
+
},
|
|
42434
|
+
{
|
|
42435
|
+
key: "cable",
|
|
42436
|
+
group: "device",
|
|
42437
|
+
synonyms: ["cavo"]
|
|
42438
|
+
},
|
|
42439
|
+
{
|
|
42440
|
+
key: "battery",
|
|
42441
|
+
group: "device",
|
|
42442
|
+
synonyms: ["batteria"]
|
|
42443
|
+
},
|
|
42444
|
+
{
|
|
42445
|
+
key: "battery-charging",
|
|
42446
|
+
group: "device",
|
|
42447
|
+
synonyms: [
|
|
42448
|
+
"batteria",
|
|
42449
|
+
"carica",
|
|
42450
|
+
"ricarica"
|
|
42451
|
+
]
|
|
42452
|
+
},
|
|
42453
|
+
{
|
|
42454
|
+
key: "battery-full",
|
|
42455
|
+
group: "device",
|
|
42456
|
+
synonyms: [
|
|
42457
|
+
"batteria",
|
|
42458
|
+
"carica",
|
|
42459
|
+
"piena"
|
|
42460
|
+
]
|
|
42461
|
+
},
|
|
42462
|
+
{
|
|
42463
|
+
key: "battery-low",
|
|
42464
|
+
group: "device",
|
|
42465
|
+
synonyms: ["batteria", "scarica"]
|
|
42466
|
+
},
|
|
42467
|
+
{
|
|
42468
|
+
key: "key",
|
|
42469
|
+
group: "device",
|
|
42470
|
+
synonyms: ["chiave"]
|
|
42471
|
+
},
|
|
42472
|
+
{
|
|
42473
|
+
key: "key-round",
|
|
42474
|
+
group: "device",
|
|
42475
|
+
synonyms: ["chiave", "tonda"]
|
|
42476
|
+
},
|
|
42477
|
+
{
|
|
42478
|
+
key: "mailbox",
|
|
42479
|
+
group: "device",
|
|
42480
|
+
synonyms: [
|
|
42481
|
+
"cassetta",
|
|
42482
|
+
"postale",
|
|
42483
|
+
"posta"
|
|
42484
|
+
]
|
|
42485
|
+
},
|
|
42486
|
+
{
|
|
42487
|
+
key: "package",
|
|
42488
|
+
group: "device",
|
|
42489
|
+
synonyms: ["pacco", "consegna"]
|
|
42490
|
+
},
|
|
42491
|
+
{
|
|
42492
|
+
key: "shield",
|
|
42493
|
+
group: "device",
|
|
42494
|
+
synonyms: [
|
|
42495
|
+
"scudo",
|
|
42496
|
+
"protezione",
|
|
42497
|
+
"sicurezza",
|
|
42498
|
+
"allarme"
|
|
42499
|
+
]
|
|
42500
|
+
},
|
|
42501
|
+
{
|
|
42502
|
+
key: "shield-check",
|
|
42503
|
+
group: "device",
|
|
42504
|
+
synonyms: [
|
|
42505
|
+
"protetto",
|
|
42506
|
+
"sicuro",
|
|
42507
|
+
"armato"
|
|
42508
|
+
]
|
|
42509
|
+
},
|
|
42510
|
+
{
|
|
42511
|
+
key: "shield-off",
|
|
42512
|
+
group: "device",
|
|
42513
|
+
synonyms: [
|
|
42514
|
+
"protezione",
|
|
42515
|
+
"disattivata",
|
|
42516
|
+
"disarmato"
|
|
42517
|
+
]
|
|
42518
|
+
},
|
|
42519
|
+
{
|
|
42520
|
+
key: "briefcase",
|
|
42521
|
+
group: "device",
|
|
42522
|
+
synonyms: [
|
|
42523
|
+
"ufficio",
|
|
42524
|
+
"lavoro",
|
|
42525
|
+
"valigetta",
|
|
42526
|
+
"studio"
|
|
42527
|
+
]
|
|
42528
|
+
},
|
|
42529
|
+
{
|
|
42530
|
+
key: "lightbulb",
|
|
42531
|
+
group: "lighting",
|
|
42532
|
+
synonyms: [
|
|
42533
|
+
"luce",
|
|
42534
|
+
"lampadina",
|
|
42535
|
+
"lampada",
|
|
42536
|
+
"light"
|
|
42537
|
+
]
|
|
42538
|
+
},
|
|
42539
|
+
{
|
|
42540
|
+
key: "lamp",
|
|
42541
|
+
group: "lighting",
|
|
42542
|
+
synonyms: ["lampada", "abatjour"]
|
|
42543
|
+
},
|
|
42544
|
+
{
|
|
42545
|
+
key: "lamp-ceiling",
|
|
42546
|
+
group: "lighting",
|
|
42547
|
+
synonyms: [
|
|
42548
|
+
"plafoniera",
|
|
42549
|
+
"lampadario",
|
|
42550
|
+
"luce",
|
|
42551
|
+
"soffitto"
|
|
42552
|
+
]
|
|
42553
|
+
},
|
|
42554
|
+
{
|
|
42555
|
+
key: "lamp-desk",
|
|
42556
|
+
group: "lighting",
|
|
42557
|
+
synonyms: [
|
|
42558
|
+
"lampada",
|
|
42559
|
+
"scrivania",
|
|
42560
|
+
"abatjour"
|
|
42561
|
+
]
|
|
42562
|
+
},
|
|
42563
|
+
{
|
|
42564
|
+
key: "lamp-floor",
|
|
42565
|
+
group: "lighting",
|
|
42566
|
+
synonyms: [
|
|
42567
|
+
"piantana",
|
|
42568
|
+
"lampada",
|
|
42569
|
+
"terra"
|
|
42570
|
+
]
|
|
42571
|
+
},
|
|
42572
|
+
{
|
|
42573
|
+
key: "flashlight",
|
|
42574
|
+
group: "lighting",
|
|
42575
|
+
synonyms: [
|
|
42576
|
+
"faretto",
|
|
42577
|
+
"torcia",
|
|
42578
|
+
"spot",
|
|
42579
|
+
"faro"
|
|
42580
|
+
]
|
|
42581
|
+
},
|
|
42582
|
+
{
|
|
42583
|
+
key: "heater",
|
|
42584
|
+
group: "lighting",
|
|
42585
|
+
synonyms: [
|
|
42586
|
+
"riscaldamento",
|
|
42587
|
+
"termosifone",
|
|
42588
|
+
"stufa",
|
|
42589
|
+
"calore"
|
|
42590
|
+
]
|
|
42591
|
+
},
|
|
42592
|
+
{
|
|
42593
|
+
key: "snowflake",
|
|
42594
|
+
group: "lighting",
|
|
42595
|
+
synonyms: [
|
|
42596
|
+
"freddo",
|
|
42597
|
+
"raffrescamento",
|
|
42598
|
+
"aria",
|
|
42599
|
+
"condizionata",
|
|
42600
|
+
"neve"
|
|
42601
|
+
]
|
|
42602
|
+
},
|
|
42603
|
+
{
|
|
42604
|
+
key: "thermometer-sun",
|
|
42605
|
+
group: "lighting",
|
|
42606
|
+
synonyms: [
|
|
42607
|
+
"caldo",
|
|
42608
|
+
"temperatura",
|
|
42609
|
+
"alta"
|
|
42610
|
+
]
|
|
42611
|
+
},
|
|
42612
|
+
{
|
|
42613
|
+
key: "thermometer-snowflake",
|
|
42614
|
+
group: "lighting",
|
|
42615
|
+
synonyms: [
|
|
42616
|
+
"freddo",
|
|
42617
|
+
"temperatura",
|
|
42618
|
+
"bassa"
|
|
42619
|
+
]
|
|
42620
|
+
},
|
|
42621
|
+
{
|
|
42622
|
+
key: "refrigerator",
|
|
42623
|
+
group: "lighting",
|
|
42624
|
+
synonyms: ["frigorifero", "frigo"]
|
|
42625
|
+
},
|
|
42626
|
+
{
|
|
42627
|
+
key: "microwave",
|
|
42628
|
+
group: "lighting",
|
|
42629
|
+
synonyms: ["microonde", "forno"]
|
|
42630
|
+
},
|
|
42631
|
+
{
|
|
42632
|
+
key: "washing-machine",
|
|
42633
|
+
group: "lighting",
|
|
42634
|
+
synonyms: [
|
|
42635
|
+
"lavatrice",
|
|
42636
|
+
"lavastoviglie",
|
|
42637
|
+
"asciugatrice"
|
|
42638
|
+
]
|
|
42639
|
+
},
|
|
42640
|
+
{
|
|
42641
|
+
key: "cooking-pot",
|
|
42642
|
+
group: "lighting",
|
|
42643
|
+
synonyms: [
|
|
42644
|
+
"pentola",
|
|
42645
|
+
"cucina",
|
|
42646
|
+
"fornello"
|
|
42647
|
+
]
|
|
42648
|
+
},
|
|
42649
|
+
{
|
|
42650
|
+
key: "utensils",
|
|
42651
|
+
group: "lighting",
|
|
42652
|
+
synonyms: [
|
|
42653
|
+
"cucina",
|
|
42654
|
+
"posate",
|
|
42655
|
+
"sala",
|
|
42656
|
+
"pranzo"
|
|
42657
|
+
]
|
|
42658
|
+
},
|
|
42659
|
+
{
|
|
42660
|
+
key: "thermometer",
|
|
42661
|
+
group: "sensing",
|
|
42662
|
+
synonyms: [
|
|
42663
|
+
"temperatura",
|
|
42664
|
+
"termometro",
|
|
42665
|
+
"termostato"
|
|
42666
|
+
]
|
|
42667
|
+
},
|
|
42668
|
+
{
|
|
42669
|
+
key: "droplets",
|
|
42670
|
+
group: "sensing",
|
|
42671
|
+
synonyms: [
|
|
42672
|
+
"umidita",
|
|
42673
|
+
"acqua",
|
|
42674
|
+
"allagamento",
|
|
42675
|
+
"perdita"
|
|
42676
|
+
]
|
|
42677
|
+
},
|
|
42678
|
+
{
|
|
42679
|
+
key: "droplet",
|
|
42680
|
+
group: "sensing",
|
|
42681
|
+
synonyms: [
|
|
42682
|
+
"goccia",
|
|
42683
|
+
"acqua",
|
|
42684
|
+
"perdita",
|
|
42685
|
+
"allagamento"
|
|
42686
|
+
]
|
|
42687
|
+
},
|
|
42688
|
+
{
|
|
42689
|
+
key: "gauge",
|
|
42690
|
+
group: "sensing",
|
|
42691
|
+
synonyms: [
|
|
42692
|
+
"misura",
|
|
42693
|
+
"livello",
|
|
42694
|
+
"pressione",
|
|
42695
|
+
"indicatore"
|
|
42696
|
+
]
|
|
42697
|
+
},
|
|
42698
|
+
{
|
|
42699
|
+
key: "gauge2",
|
|
42700
|
+
group: "sensing",
|
|
42701
|
+
synonyms: [
|
|
42702
|
+
"misura",
|
|
42703
|
+
"livello",
|
|
42704
|
+
"pressione",
|
|
42705
|
+
"indicatore"
|
|
42706
|
+
],
|
|
42707
|
+
aliasOf: "gauge"
|
|
42708
|
+
},
|
|
42709
|
+
{
|
|
42710
|
+
key: "sun",
|
|
42711
|
+
group: "sensing",
|
|
42712
|
+
synonyms: [
|
|
42713
|
+
"sole",
|
|
42714
|
+
"luminosita",
|
|
42715
|
+
"giorno",
|
|
42716
|
+
"esterno"
|
|
42717
|
+
]
|
|
42718
|
+
},
|
|
42719
|
+
{
|
|
42720
|
+
key: "sun-medium",
|
|
42721
|
+
group: "sensing",
|
|
42722
|
+
synonyms: ["sole", "luminosita"]
|
|
42723
|
+
},
|
|
42724
|
+
{
|
|
42725
|
+
key: "sunrise",
|
|
42726
|
+
group: "sensing",
|
|
42727
|
+
synonyms: ["alba"]
|
|
42728
|
+
},
|
|
42729
|
+
{
|
|
42730
|
+
key: "moon",
|
|
42731
|
+
group: "sensing",
|
|
42732
|
+
synonyms: [
|
|
42733
|
+
"notte",
|
|
42734
|
+
"luna",
|
|
42735
|
+
"notturna",
|
|
42736
|
+
"nightvision"
|
|
42737
|
+
]
|
|
42738
|
+
},
|
|
42739
|
+
{
|
|
42740
|
+
key: "wind",
|
|
42741
|
+
group: "sensing",
|
|
42742
|
+
synonyms: [
|
|
42743
|
+
"vento",
|
|
42744
|
+
"aria",
|
|
42745
|
+
"gas",
|
|
42746
|
+
"monossido",
|
|
42747
|
+
"co"
|
|
42748
|
+
]
|
|
42749
|
+
},
|
|
42750
|
+
{
|
|
42751
|
+
key: "cloud",
|
|
42752
|
+
group: "sensing",
|
|
42753
|
+
synonyms: ["nuvola", "nuvoloso"]
|
|
42754
|
+
},
|
|
42755
|
+
{
|
|
42756
|
+
key: "cloud-rain",
|
|
42757
|
+
group: "sensing",
|
|
42758
|
+
synonyms: ["pioggia"]
|
|
42759
|
+
},
|
|
42760
|
+
{
|
|
42761
|
+
key: "cloud-sun",
|
|
42762
|
+
group: "sensing",
|
|
42763
|
+
synonyms: [
|
|
42764
|
+
"variabile",
|
|
42765
|
+
"sole",
|
|
42766
|
+
"nuvole"
|
|
42767
|
+
]
|
|
42768
|
+
},
|
|
42769
|
+
{
|
|
42770
|
+
key: "waves",
|
|
42771
|
+
group: "sensing",
|
|
42772
|
+
synonyms: [
|
|
42773
|
+
"onde",
|
|
42774
|
+
"acqua",
|
|
42775
|
+
"vibrazione"
|
|
42776
|
+
]
|
|
42777
|
+
},
|
|
42778
|
+
{
|
|
42779
|
+
key: "sprout",
|
|
42780
|
+
group: "sensing",
|
|
42781
|
+
synonyms: [
|
|
42782
|
+
"irrigazione",
|
|
42783
|
+
"pianta",
|
|
42784
|
+
"germoglio",
|
|
42785
|
+
"orto"
|
|
42786
|
+
]
|
|
42787
|
+
},
|
|
42788
|
+
{
|
|
42789
|
+
key: "leaf",
|
|
42790
|
+
group: "sensing",
|
|
42791
|
+
synonyms: [
|
|
42792
|
+
"foglia",
|
|
42793
|
+
"pianta",
|
|
42794
|
+
"verde"
|
|
42795
|
+
]
|
|
42796
|
+
},
|
|
42797
|
+
{
|
|
42798
|
+
key: "flower",
|
|
42799
|
+
group: "sensing",
|
|
42800
|
+
synonyms: ["fiore", "pianta"]
|
|
42801
|
+
},
|
|
42802
|
+
{
|
|
42803
|
+
key: "zap",
|
|
42804
|
+
group: "sensing",
|
|
42805
|
+
synonyms: [
|
|
42806
|
+
"energia",
|
|
42807
|
+
"corrente",
|
|
42808
|
+
"consumo",
|
|
42809
|
+
"watt",
|
|
42810
|
+
"elettricita"
|
|
42811
|
+
]
|
|
42812
|
+
},
|
|
42813
|
+
{
|
|
42814
|
+
key: "flame",
|
|
42815
|
+
group: "sensing",
|
|
42816
|
+
synonyms: [
|
|
42817
|
+
"fiamma",
|
|
42818
|
+
"gas",
|
|
42819
|
+
"fuoco",
|
|
42820
|
+
"incendio"
|
|
42821
|
+
]
|
|
42822
|
+
},
|
|
42823
|
+
{
|
|
42824
|
+
key: "bell",
|
|
42825
|
+
group: "sensing",
|
|
42826
|
+
synonyms: [
|
|
42827
|
+
"campanello",
|
|
42828
|
+
"suoneria",
|
|
42829
|
+
"notifica",
|
|
42830
|
+
"bell",
|
|
42831
|
+
"chime"
|
|
42832
|
+
]
|
|
42833
|
+
},
|
|
42834
|
+
{
|
|
42835
|
+
key: "bell-ring",
|
|
42836
|
+
group: "sensing",
|
|
42837
|
+
synonyms: [
|
|
42838
|
+
"campanello",
|
|
42839
|
+
"suona",
|
|
42840
|
+
"doorbell",
|
|
42841
|
+
"notifica"
|
|
42842
|
+
]
|
|
42843
|
+
},
|
|
42844
|
+
{
|
|
42845
|
+
key: "bell-off",
|
|
42846
|
+
group: "sensing",
|
|
42847
|
+
synonyms: [
|
|
42848
|
+
"silenzioso",
|
|
42849
|
+
"notifiche",
|
|
42850
|
+
"disattivate",
|
|
42851
|
+
"muto"
|
|
42852
|
+
]
|
|
42853
|
+
},
|
|
42854
|
+
{
|
|
42855
|
+
key: "siren",
|
|
42856
|
+
group: "sensing",
|
|
42857
|
+
synonyms: ["sirena", "allarme"]
|
|
42858
|
+
},
|
|
42859
|
+
{
|
|
42860
|
+
key: "radar",
|
|
42861
|
+
group: "sensing",
|
|
42862
|
+
synonyms: [
|
|
42863
|
+
"movimento",
|
|
42864
|
+
"presenza",
|
|
42865
|
+
"pir",
|
|
42866
|
+
"rilevamento",
|
|
42867
|
+
"radar"
|
|
42868
|
+
]
|
|
42869
|
+
},
|
|
42870
|
+
{
|
|
42871
|
+
key: "activity",
|
|
42872
|
+
group: "sensing",
|
|
42873
|
+
synonyms: [
|
|
42874
|
+
"attivita",
|
|
42875
|
+
"sensore",
|
|
42876
|
+
"generico"
|
|
42877
|
+
]
|
|
42878
|
+
},
|
|
42879
|
+
{
|
|
42880
|
+
key: "hash",
|
|
42881
|
+
group: "sensing",
|
|
42882
|
+
synonyms: [
|
|
42883
|
+
"numero",
|
|
42884
|
+
"contatore",
|
|
42885
|
+
"valore"
|
|
42886
|
+
]
|
|
42887
|
+
},
|
|
42888
|
+
{
|
|
42889
|
+
key: "clock",
|
|
42890
|
+
group: "sensing",
|
|
42891
|
+
synonyms: [
|
|
42892
|
+
"orologio",
|
|
42893
|
+
"ora",
|
|
42894
|
+
"tempo"
|
|
42895
|
+
]
|
|
42896
|
+
},
|
|
42897
|
+
{
|
|
42898
|
+
key: "timer",
|
|
42899
|
+
group: "sensing",
|
|
42900
|
+
synonyms: [
|
|
42901
|
+
"timer",
|
|
42902
|
+
"conto",
|
|
42903
|
+
"rovescia"
|
|
42904
|
+
]
|
|
42905
|
+
},
|
|
42906
|
+
{
|
|
42907
|
+
key: "calendar",
|
|
42908
|
+
group: "sensing",
|
|
42909
|
+
synonyms: [
|
|
42910
|
+
"calendario",
|
|
42911
|
+
"data",
|
|
42912
|
+
"pianificazione"
|
|
42913
|
+
]
|
|
42914
|
+
},
|
|
42915
|
+
{
|
|
42916
|
+
key: "pipette",
|
|
42917
|
+
group: "sensing",
|
|
42918
|
+
synonyms: [
|
|
42919
|
+
"qualita",
|
|
42920
|
+
"aria",
|
|
42921
|
+
"misura",
|
|
42922
|
+
"campione"
|
|
42923
|
+
]
|
|
42924
|
+
},
|
|
42925
|
+
{
|
|
42926
|
+
key: "fan",
|
|
42927
|
+
group: "sensing",
|
|
42928
|
+
synonyms: [
|
|
42929
|
+
"ventilatore",
|
|
42930
|
+
"ventola",
|
|
42931
|
+
"aria"
|
|
42932
|
+
]
|
|
42933
|
+
},
|
|
42934
|
+
{
|
|
42935
|
+
key: "bath",
|
|
42936
|
+
group: "sensing",
|
|
42937
|
+
synonyms: [
|
|
42938
|
+
"bagno",
|
|
42939
|
+
"vasca",
|
|
42940
|
+
"doccia"
|
|
42941
|
+
]
|
|
42942
|
+
},
|
|
42943
|
+
{
|
|
42944
|
+
key: "footprints",
|
|
42945
|
+
group: "sensing",
|
|
42946
|
+
synonyms: [
|
|
42947
|
+
"movimento",
|
|
42948
|
+
"passi",
|
|
42949
|
+
"presenza",
|
|
42950
|
+
"motion"
|
|
42951
|
+
]
|
|
42952
|
+
},
|
|
42953
|
+
{
|
|
42954
|
+
key: "alarm-smoke",
|
|
42955
|
+
group: "sensing",
|
|
42956
|
+
synonyms: [
|
|
42957
|
+
"fumo",
|
|
42958
|
+
"antincendio",
|
|
42959
|
+
"rilevatore"
|
|
42960
|
+
]
|
|
42961
|
+
},
|
|
42962
|
+
{
|
|
42963
|
+
key: "shield-alert",
|
|
42964
|
+
group: "sensing",
|
|
42965
|
+
synonyms: [
|
|
42966
|
+
"manomissione",
|
|
42967
|
+
"allarme",
|
|
42968
|
+
"tamper",
|
|
42969
|
+
"avviso"
|
|
42970
|
+
]
|
|
42971
|
+
},
|
|
42972
|
+
{
|
|
42973
|
+
key: "vibrate",
|
|
42974
|
+
group: "sensing",
|
|
42975
|
+
synonyms: [
|
|
42976
|
+
"vibrazione",
|
|
42977
|
+
"urto",
|
|
42978
|
+
"tamper"
|
|
42979
|
+
]
|
|
42980
|
+
},
|
|
42981
|
+
{
|
|
42982
|
+
key: "wifi",
|
|
42983
|
+
group: "sensing",
|
|
42984
|
+
synonyms: [
|
|
42985
|
+
"wifi",
|
|
42986
|
+
"rete",
|
|
42987
|
+
"segnale"
|
|
42988
|
+
]
|
|
42989
|
+
},
|
|
42990
|
+
{
|
|
42991
|
+
key: "wifi-off",
|
|
42992
|
+
group: "sensing",
|
|
42993
|
+
synonyms: [
|
|
42994
|
+
"wifi",
|
|
42995
|
+
"assente",
|
|
42996
|
+
"offline",
|
|
42997
|
+
"disconnesso"
|
|
42998
|
+
]
|
|
42999
|
+
},
|
|
43000
|
+
{
|
|
43001
|
+
key: "volume-2",
|
|
43002
|
+
group: "sensing",
|
|
43003
|
+
synonyms: [
|
|
43004
|
+
"volume",
|
|
43005
|
+
"audio",
|
|
43006
|
+
"altoparlante",
|
|
43007
|
+
"suono"
|
|
43008
|
+
]
|
|
43009
|
+
},
|
|
43010
|
+
{
|
|
43011
|
+
key: "volume-x",
|
|
43012
|
+
group: "sensing",
|
|
43013
|
+
synonyms: [
|
|
43014
|
+
"muto",
|
|
43015
|
+
"silenziato",
|
|
43016
|
+
"volume",
|
|
43017
|
+
"spento"
|
|
43018
|
+
]
|
|
43019
|
+
},
|
|
43020
|
+
{
|
|
43021
|
+
key: "heart",
|
|
43022
|
+
group: "sensing",
|
|
43023
|
+
synonyms: [
|
|
43024
|
+
"cuore",
|
|
43025
|
+
"preferito",
|
|
43026
|
+
"salute"
|
|
43027
|
+
]
|
|
43028
|
+
},
|
|
43029
|
+
{
|
|
43030
|
+
key: "heart-pulse",
|
|
43031
|
+
group: "sensing",
|
|
43032
|
+
synonyms: [
|
|
43033
|
+
"battito",
|
|
43034
|
+
"salute",
|
|
43035
|
+
"monitoraggio"
|
|
43036
|
+
]
|
|
43037
|
+
},
|
|
43038
|
+
{
|
|
43039
|
+
key: "star",
|
|
43040
|
+
group: "sensing",
|
|
43041
|
+
synonyms: [
|
|
43042
|
+
"preferito",
|
|
43043
|
+
"stella",
|
|
43044
|
+
"importante"
|
|
43045
|
+
]
|
|
43046
|
+
},
|
|
43047
|
+
{
|
|
43048
|
+
key: "sparkles",
|
|
43049
|
+
group: "sensing",
|
|
43050
|
+
synonyms: [
|
|
43051
|
+
"automatico",
|
|
43052
|
+
"intelligente",
|
|
43053
|
+
"ai",
|
|
43054
|
+
"scena"
|
|
43055
|
+
]
|
|
43056
|
+
},
|
|
43057
|
+
{
|
|
43058
|
+
key: "house",
|
|
43059
|
+
group: "place",
|
|
43060
|
+
synonyms: [
|
|
43061
|
+
"casa",
|
|
43062
|
+
"abitazione",
|
|
43063
|
+
"home"
|
|
43064
|
+
]
|
|
43065
|
+
},
|
|
43066
|
+
{
|
|
43067
|
+
key: "sofa",
|
|
43068
|
+
group: "place",
|
|
43069
|
+
synonyms: [
|
|
43070
|
+
"salone",
|
|
43071
|
+
"soggiorno",
|
|
43072
|
+
"divano",
|
|
43073
|
+
"living"
|
|
43074
|
+
]
|
|
43075
|
+
},
|
|
43076
|
+
{
|
|
43077
|
+
key: "bed-double",
|
|
43078
|
+
group: "place",
|
|
43079
|
+
synonyms: [
|
|
43080
|
+
"camera",
|
|
43081
|
+
"letto",
|
|
43082
|
+
"matrimoniale"
|
|
43083
|
+
]
|
|
43084
|
+
},
|
|
43085
|
+
{
|
|
43086
|
+
key: "bed",
|
|
43087
|
+
group: "place",
|
|
43088
|
+
synonyms: [
|
|
43089
|
+
"cameretta",
|
|
43090
|
+
"letto",
|
|
43091
|
+
"singolo"
|
|
43092
|
+
]
|
|
43093
|
+
},
|
|
43094
|
+
{
|
|
43095
|
+
key: "warehouse",
|
|
43096
|
+
group: "place",
|
|
43097
|
+
synonyms: [
|
|
43098
|
+
"magazzino",
|
|
43099
|
+
"capanno",
|
|
43100
|
+
"deposito",
|
|
43101
|
+
"cantina"
|
|
43102
|
+
]
|
|
43103
|
+
},
|
|
43104
|
+
{
|
|
43105
|
+
key: "trees",
|
|
43106
|
+
group: "place",
|
|
43107
|
+
synonyms: [
|
|
43108
|
+
"giardino",
|
|
43109
|
+
"alberi",
|
|
43110
|
+
"esterno",
|
|
43111
|
+
"parco"
|
|
43112
|
+
]
|
|
43113
|
+
},
|
|
43114
|
+
{
|
|
43115
|
+
key: "tree-pine",
|
|
43116
|
+
group: "place",
|
|
43117
|
+
synonyms: [
|
|
43118
|
+
"albero",
|
|
43119
|
+
"pino",
|
|
43120
|
+
"giardino"
|
|
43121
|
+
]
|
|
43122
|
+
},
|
|
43123
|
+
{
|
|
43124
|
+
key: "fence",
|
|
43125
|
+
group: "place",
|
|
43126
|
+
synonyms: [
|
|
43127
|
+
"recinto",
|
|
43128
|
+
"cancello",
|
|
43129
|
+
"staccionata",
|
|
43130
|
+
"perimetro"
|
|
43131
|
+
]
|
|
43132
|
+
},
|
|
43133
|
+
{
|
|
43134
|
+
key: "store",
|
|
43135
|
+
group: "place",
|
|
43136
|
+
synonyms: [
|
|
43137
|
+
"negozio",
|
|
43138
|
+
"ingresso",
|
|
43139
|
+
"vetrina"
|
|
43140
|
+
]
|
|
43141
|
+
},
|
|
43142
|
+
{
|
|
43143
|
+
key: "building",
|
|
43144
|
+
group: "place",
|
|
43145
|
+
synonyms: ["edificio", "palazzo"]
|
|
43146
|
+
},
|
|
43147
|
+
{
|
|
43148
|
+
key: "building-2",
|
|
43149
|
+
group: "place",
|
|
43150
|
+
synonyms: [
|
|
43151
|
+
"edificio",
|
|
43152
|
+
"uffici",
|
|
43153
|
+
"condominio"
|
|
43154
|
+
]
|
|
43155
|
+
},
|
|
43156
|
+
{
|
|
43157
|
+
key: "mountain",
|
|
43158
|
+
group: "place",
|
|
43159
|
+
synonyms: [
|
|
43160
|
+
"montagna",
|
|
43161
|
+
"esterno",
|
|
43162
|
+
"panorama"
|
|
43163
|
+
]
|
|
43164
|
+
},
|
|
43165
|
+
{
|
|
43166
|
+
key: "umbrella",
|
|
43167
|
+
group: "place",
|
|
43168
|
+
synonyms: [
|
|
43169
|
+
"tenda",
|
|
43170
|
+
"markise",
|
|
43171
|
+
"ombrellone",
|
|
43172
|
+
"pergola",
|
|
43173
|
+
"veranda"
|
|
43174
|
+
]
|
|
43175
|
+
},
|
|
43176
|
+
{
|
|
43177
|
+
key: "dumbbell",
|
|
43178
|
+
group: "place",
|
|
43179
|
+
synonyms: ["palestra", "attrezzi"]
|
|
43180
|
+
},
|
|
43181
|
+
{
|
|
43182
|
+
key: "wrench",
|
|
43183
|
+
group: "place",
|
|
43184
|
+
synonyms: [
|
|
43185
|
+
"officina",
|
|
43186
|
+
"manutenzione",
|
|
43187
|
+
"attrezzi",
|
|
43188
|
+
"utenze"
|
|
43189
|
+
]
|
|
43190
|
+
},
|
|
43191
|
+
{
|
|
43192
|
+
key: "hammer",
|
|
43193
|
+
group: "place",
|
|
43194
|
+
synonyms: [
|
|
43195
|
+
"officina",
|
|
43196
|
+
"martello",
|
|
43197
|
+
"lavori"
|
|
43198
|
+
]
|
|
43199
|
+
},
|
|
43200
|
+
{
|
|
43201
|
+
key: "drill",
|
|
43202
|
+
group: "place",
|
|
43203
|
+
synonyms: [
|
|
43204
|
+
"officina",
|
|
43205
|
+
"trapano",
|
|
43206
|
+
"lavori"
|
|
43207
|
+
]
|
|
43208
|
+
},
|
|
43209
|
+
{
|
|
43210
|
+
key: "waves-ladder",
|
|
43211
|
+
group: "place",
|
|
43212
|
+
synonyms: ["piscina", "vasca"]
|
|
43213
|
+
},
|
|
43214
|
+
{
|
|
43215
|
+
key: "circle-parking",
|
|
43216
|
+
group: "place",
|
|
43217
|
+
synonyms: [
|
|
43218
|
+
"parcheggio",
|
|
43219
|
+
"posto",
|
|
43220
|
+
"auto",
|
|
43221
|
+
"garage"
|
|
43222
|
+
]
|
|
43223
|
+
},
|
|
43224
|
+
{
|
|
43225
|
+
key: "route",
|
|
43226
|
+
group: "place",
|
|
43227
|
+
synonyms: [
|
|
43228
|
+
"percorso",
|
|
43229
|
+
"strada",
|
|
43230
|
+
"vialetto",
|
|
43231
|
+
"tragitto"
|
|
43232
|
+
]
|
|
43233
|
+
},
|
|
43234
|
+
{
|
|
43235
|
+
key: "car",
|
|
43236
|
+
group: "life",
|
|
43237
|
+
synonyms: [
|
|
43238
|
+
"auto",
|
|
43239
|
+
"macchina",
|
|
43240
|
+
"veicolo",
|
|
43241
|
+
"parcheggio"
|
|
43242
|
+
]
|
|
43243
|
+
},
|
|
43244
|
+
{
|
|
43245
|
+
key: "bike",
|
|
43246
|
+
group: "life",
|
|
43247
|
+
synonyms: [
|
|
43248
|
+
"bicicletta",
|
|
43249
|
+
"bici",
|
|
43250
|
+
"moto"
|
|
43251
|
+
]
|
|
43252
|
+
},
|
|
43253
|
+
{
|
|
43254
|
+
key: "bus",
|
|
43255
|
+
group: "life",
|
|
43256
|
+
synonyms: ["autobus", "pullman"]
|
|
43257
|
+
},
|
|
43258
|
+
{
|
|
43259
|
+
key: "truck",
|
|
43260
|
+
group: "life",
|
|
43261
|
+
synonyms: [
|
|
43262
|
+
"camion",
|
|
43263
|
+
"furgone",
|
|
43264
|
+
"consegna"
|
|
43265
|
+
]
|
|
43266
|
+
},
|
|
43267
|
+
{
|
|
43268
|
+
key: "plane",
|
|
43269
|
+
group: "life",
|
|
43270
|
+
synonyms: ["aereo"]
|
|
43271
|
+
},
|
|
43272
|
+
{
|
|
43273
|
+
key: "train-front",
|
|
43274
|
+
group: "life",
|
|
43275
|
+
synonyms: ["treno"]
|
|
43276
|
+
},
|
|
43277
|
+
{
|
|
43278
|
+
key: "sailboat",
|
|
43279
|
+
group: "life",
|
|
43280
|
+
synonyms: ["barca", "imbarcazione"]
|
|
43281
|
+
},
|
|
43282
|
+
{
|
|
43283
|
+
key: "dog",
|
|
43284
|
+
group: "life",
|
|
43285
|
+
synonyms: ["cane", "animale"]
|
|
43286
|
+
},
|
|
43287
|
+
{
|
|
43288
|
+
key: "cat",
|
|
43289
|
+
group: "life",
|
|
43290
|
+
synonyms: ["gatto", "animale"]
|
|
43291
|
+
},
|
|
43292
|
+
{
|
|
43293
|
+
key: "bird",
|
|
43294
|
+
group: "life",
|
|
43295
|
+
synonyms: ["uccello", "animale"]
|
|
43296
|
+
},
|
|
43297
|
+
{
|
|
43298
|
+
key: "paw-print",
|
|
43299
|
+
group: "life",
|
|
43300
|
+
synonyms: [
|
|
43301
|
+
"animale",
|
|
43302
|
+
"zampa",
|
|
43303
|
+
"pet"
|
|
43304
|
+
]
|
|
43305
|
+
},
|
|
43306
|
+
{
|
|
43307
|
+
key: "baby",
|
|
43308
|
+
group: "life",
|
|
43309
|
+
synonyms: [
|
|
43310
|
+
"neonato",
|
|
43311
|
+
"bimbo",
|
|
43312
|
+
"cameretta",
|
|
43313
|
+
"babymonitor"
|
|
43314
|
+
]
|
|
43315
|
+
},
|
|
43316
|
+
{
|
|
43317
|
+
key: "user",
|
|
43318
|
+
group: "life",
|
|
43319
|
+
synonyms: ["persona", "utente"]
|
|
43320
|
+
},
|
|
43321
|
+
{
|
|
43322
|
+
key: "users",
|
|
43323
|
+
group: "life",
|
|
43324
|
+
synonyms: [
|
|
43325
|
+
"persone",
|
|
43326
|
+
"gruppo",
|
|
43327
|
+
"famiglia"
|
|
43328
|
+
]
|
|
43329
|
+
},
|
|
43330
|
+
{
|
|
43331
|
+
key: "person-standing",
|
|
43332
|
+
group: "life",
|
|
43333
|
+
synonyms: [
|
|
43334
|
+
"persona",
|
|
43335
|
+
"piedi",
|
|
43336
|
+
"presenza"
|
|
43337
|
+
]
|
|
43338
|
+
}
|
|
43339
|
+
];
|
|
43340
|
+
DISPLAY_ICON_VOCABULARY.map((e) => e.key);
|
|
43341
|
+
DISPLAY_ICON_VOCABULARY.filter((e) => e.aliasOf === void 0).map((e) => e.key);
|
|
43342
|
+
new Map(DISPLAY_ICON_VOCABULARY.map((e) => [e.key, e]));
|
|
43343
|
+
/**
|
|
41411
43344
|
* Every CapabilityDefinition shipped by `@camstack/types`. The hub
|
|
41412
43345
|
* iterates this array at boot to declare each cap on the registry
|
|
41413
43346
|
* before addons (in-process or via the Moleculer bridge) attempt
|
|
@@ -41461,6 +43394,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
41461
43394
|
dayNightCapability,
|
|
41462
43395
|
decoderCapability,
|
|
41463
43396
|
detectionPipelineCapability,
|
|
43397
|
+
deviceAdminLinkCapability,
|
|
41464
43398
|
deviceAdoptionCapability,
|
|
41465
43399
|
deviceDiscoveryCapability,
|
|
41466
43400
|
deviceExportCapability,
|
|
@@ -41535,6 +43469,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
41535
43469
|
rebootCapability,
|
|
41536
43470
|
recordingCapability,
|
|
41537
43471
|
recordingExportCapability,
|
|
43472
|
+
recordingOnboardCapability,
|
|
41538
43473
|
recordingSignalCapability,
|
|
41539
43474
|
sceneMonitorCapability,
|
|
41540
43475
|
scriptRunnerCapability,
|
|
@@ -41577,6 +43512,12 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
41577
43512
|
zonesCapability
|
|
41578
43513
|
];
|
|
41579
43514
|
Object.freeze({
|
|
43515
|
+
"accessories.getStatus": {
|
|
43516
|
+
capName: "accessories",
|
|
43517
|
+
capScope: "device",
|
|
43518
|
+
addonId: null,
|
|
43519
|
+
access: "view"
|
|
43520
|
+
},
|
|
41580
43521
|
"accessories.setChildHidden": {
|
|
41581
43522
|
capName: "accessories",
|
|
41582
43523
|
capScope: "device",
|
|
@@ -41859,6 +43800,12 @@ Object.freeze({
|
|
|
41859
43800
|
addonId: null,
|
|
41860
43801
|
access: "view"
|
|
41861
43802
|
},
|
|
43803
|
+
"airQualitySensor.getStatus": {
|
|
43804
|
+
capName: "air-quality-sensor",
|
|
43805
|
+
capScope: "device",
|
|
43806
|
+
addonId: null,
|
|
43807
|
+
access: "view"
|
|
43808
|
+
},
|
|
41862
43809
|
"alarmPanel.arm": {
|
|
41863
43810
|
capName: "alarm-panel",
|
|
41864
43811
|
capScope: "device",
|
|
@@ -41871,6 +43818,12 @@ Object.freeze({
|
|
|
41871
43818
|
addonId: null,
|
|
41872
43819
|
access: "create"
|
|
41873
43820
|
},
|
|
43821
|
+
"alarmPanel.getStatus": {
|
|
43822
|
+
capName: "alarm-panel",
|
|
43823
|
+
capScope: "device",
|
|
43824
|
+
addonId: null,
|
|
43825
|
+
access: "view"
|
|
43826
|
+
},
|
|
41874
43827
|
"alarmPanel.trigger": {
|
|
41875
43828
|
capName: "alarm-panel",
|
|
41876
43829
|
capScope: "device",
|
|
@@ -41919,6 +43872,30 @@ Object.freeze({
|
|
|
41919
43872
|
addonId: null,
|
|
41920
43873
|
access: "create"
|
|
41921
43874
|
},
|
|
43875
|
+
"ambientLightSensor.getStatus": {
|
|
43876
|
+
capName: "ambient-light-sensor",
|
|
43877
|
+
capScope: "device",
|
|
43878
|
+
addonId: null,
|
|
43879
|
+
access: "view"
|
|
43880
|
+
},
|
|
43881
|
+
"audioAnalysis.applyDeviceSettingsPatch": {
|
|
43882
|
+
capName: "audio-analysis",
|
|
43883
|
+
capScope: "device",
|
|
43884
|
+
addonId: null,
|
|
43885
|
+
access: "create"
|
|
43886
|
+
},
|
|
43887
|
+
"audioAnalysis.getDeviceLiveContribution": {
|
|
43888
|
+
capName: "audio-analysis",
|
|
43889
|
+
capScope: "device",
|
|
43890
|
+
addonId: null,
|
|
43891
|
+
access: "view"
|
|
43892
|
+
},
|
|
43893
|
+
"audioAnalysis.getDeviceSettingsContribution": {
|
|
43894
|
+
capName: "audio-analysis",
|
|
43895
|
+
capScope: "device",
|
|
43896
|
+
addonId: null,
|
|
43897
|
+
access: "view"
|
|
43898
|
+
},
|
|
41922
43899
|
"audioAnalysis.resolveDeviceSettings": {
|
|
41923
43900
|
capName: "audio-analysis",
|
|
41924
43901
|
capScope: "device",
|
|
@@ -42081,6 +44058,12 @@ Object.freeze({
|
|
|
42081
44058
|
addonId: null,
|
|
42082
44059
|
access: "create"
|
|
42083
44060
|
},
|
|
44061
|
+
"automationControl.getStatus": {
|
|
44062
|
+
capName: "automation-control",
|
|
44063
|
+
capScope: "device",
|
|
44064
|
+
addonId: null,
|
|
44065
|
+
access: "view"
|
|
44066
|
+
},
|
|
42084
44067
|
"automationControl.trigger": {
|
|
42085
44068
|
capName: "automation-control",
|
|
42086
44069
|
capScope: "device",
|
|
@@ -42177,12 +44160,30 @@ Object.freeze({
|
|
|
42177
44160
|
addonId: null,
|
|
42178
44161
|
access: "create"
|
|
42179
44162
|
},
|
|
44163
|
+
"battery.getStatus": {
|
|
44164
|
+
capName: "battery",
|
|
44165
|
+
capScope: "device",
|
|
44166
|
+
addonId: null,
|
|
44167
|
+
access: "view"
|
|
44168
|
+
},
|
|
42180
44169
|
"battery.wakeForStream": {
|
|
42181
44170
|
capName: "battery",
|
|
42182
44171
|
capScope: "device",
|
|
42183
44172
|
addonId: null,
|
|
42184
44173
|
access: "create"
|
|
42185
44174
|
},
|
|
44175
|
+
"binary.getStatus": {
|
|
44176
|
+
capName: "binary",
|
|
44177
|
+
capScope: "device",
|
|
44178
|
+
addonId: null,
|
|
44179
|
+
access: "view"
|
|
44180
|
+
},
|
|
44181
|
+
"brightness.getStatus": {
|
|
44182
|
+
capName: "brightness",
|
|
44183
|
+
capScope: "device",
|
|
44184
|
+
addonId: null,
|
|
44185
|
+
access: "view"
|
|
44186
|
+
},
|
|
42186
44187
|
"brightness.setBrightness": {
|
|
42187
44188
|
capName: "brightness",
|
|
42188
44189
|
capScope: "device",
|
|
@@ -42297,6 +44298,30 @@ Object.freeze({
|
|
|
42297
44298
|
addonId: null,
|
|
42298
44299
|
access: "view"
|
|
42299
44300
|
},
|
|
44301
|
+
"cameraCredentials.getStatus": {
|
|
44302
|
+
capName: "camera-credentials",
|
|
44303
|
+
capScope: "device",
|
|
44304
|
+
addonId: null,
|
|
44305
|
+
access: "view"
|
|
44306
|
+
},
|
|
44307
|
+
"cameraGridLayout.applyDeviceSettingsPatch": {
|
|
44308
|
+
capName: "camera-grid-layout",
|
|
44309
|
+
capScope: "device",
|
|
44310
|
+
addonId: null,
|
|
44311
|
+
access: "create"
|
|
44312
|
+
},
|
|
44313
|
+
"cameraGridLayout.getDeviceLiveContribution": {
|
|
44314
|
+
capName: "camera-grid-layout",
|
|
44315
|
+
capScope: "device",
|
|
44316
|
+
addonId: null,
|
|
44317
|
+
access: "view"
|
|
44318
|
+
},
|
|
44319
|
+
"cameraGridLayout.getDeviceSettingsContribution": {
|
|
44320
|
+
capName: "camera-grid-layout",
|
|
44321
|
+
capScope: "device",
|
|
44322
|
+
addonId: null,
|
|
44323
|
+
access: "view"
|
|
44324
|
+
},
|
|
42300
44325
|
"cameraGridLayout.getLayout": {
|
|
42301
44326
|
capName: "camera-grid-layout",
|
|
42302
44327
|
capScope: "device",
|
|
@@ -42309,6 +44334,24 @@ Object.freeze({
|
|
|
42309
44334
|
addonId: null,
|
|
42310
44335
|
access: "create"
|
|
42311
44336
|
},
|
|
44337
|
+
"cameraPipelineConfig.applyDeviceSettingsPatch": {
|
|
44338
|
+
capName: "camera-pipeline-config",
|
|
44339
|
+
capScope: "device",
|
|
44340
|
+
addonId: null,
|
|
44341
|
+
access: "create"
|
|
44342
|
+
},
|
|
44343
|
+
"cameraPipelineConfig.getDeviceLiveContribution": {
|
|
44344
|
+
capName: "camera-pipeline-config",
|
|
44345
|
+
capScope: "device",
|
|
44346
|
+
addonId: null,
|
|
44347
|
+
access: "view"
|
|
44348
|
+
},
|
|
44349
|
+
"cameraPipelineConfig.getDeviceSettingsContribution": {
|
|
44350
|
+
capName: "camera-pipeline-config",
|
|
44351
|
+
capScope: "device",
|
|
44352
|
+
addonId: null,
|
|
44353
|
+
access: "view"
|
|
44354
|
+
},
|
|
42312
44355
|
"cameraStreams.getBrokerStreams": {
|
|
42313
44356
|
capName: "camera-streams",
|
|
42314
44357
|
capScope: "device",
|
|
@@ -42339,6 +44382,18 @@ Object.freeze({
|
|
|
42339
44382
|
addonId: null,
|
|
42340
44383
|
access: "view"
|
|
42341
44384
|
},
|
|
44385
|
+
"carbonMonoxide.getStatus": {
|
|
44386
|
+
capName: "carbon-monoxide",
|
|
44387
|
+
capScope: "device",
|
|
44388
|
+
addonId: null,
|
|
44389
|
+
access: "view"
|
|
44390
|
+
},
|
|
44391
|
+
"climateControl.getStatus": {
|
|
44392
|
+
capName: "climate-control",
|
|
44393
|
+
capScope: "device",
|
|
44394
|
+
addonId: null,
|
|
44395
|
+
access: "view"
|
|
44396
|
+
},
|
|
42342
44397
|
"climateControl.setFanMode": {
|
|
42343
44398
|
capName: "climate-control",
|
|
42344
44399
|
capScope: "device",
|
|
@@ -42387,6 +44442,12 @@ Object.freeze({
|
|
|
42387
44442
|
addonId: null,
|
|
42388
44443
|
access: "create"
|
|
42389
44444
|
},
|
|
44445
|
+
"color.getStatus": {
|
|
44446
|
+
capName: "color",
|
|
44447
|
+
capScope: "device",
|
|
44448
|
+
addonId: null,
|
|
44449
|
+
access: "view"
|
|
44450
|
+
},
|
|
42390
44451
|
"color.setColor": {
|
|
42391
44452
|
capName: "color",
|
|
42392
44453
|
capScope: "device",
|
|
@@ -42405,12 +44466,36 @@ Object.freeze({
|
|
|
42405
44466
|
addonId: null,
|
|
42406
44467
|
access: "create"
|
|
42407
44468
|
},
|
|
44469
|
+
"connectivity.getStatus": {
|
|
44470
|
+
capName: "connectivity",
|
|
44471
|
+
capScope: "device",
|
|
44472
|
+
addonId: null,
|
|
44473
|
+
access: "view"
|
|
44474
|
+
},
|
|
44475
|
+
"consumables.getStatus": {
|
|
44476
|
+
capName: "consumables",
|
|
44477
|
+
capScope: "device",
|
|
44478
|
+
addonId: null,
|
|
44479
|
+
access: "view"
|
|
44480
|
+
},
|
|
42408
44481
|
"consumables.reset": {
|
|
42409
44482
|
capName: "consumables",
|
|
42410
44483
|
capScope: "device",
|
|
42411
44484
|
addonId: null,
|
|
42412
44485
|
access: "delete"
|
|
42413
44486
|
},
|
|
44487
|
+
"contact.getStatus": {
|
|
44488
|
+
capName: "contact",
|
|
44489
|
+
capScope: "device",
|
|
44490
|
+
addonId: null,
|
|
44491
|
+
access: "view"
|
|
44492
|
+
},
|
|
44493
|
+
"control.getStatus": {
|
|
44494
|
+
capName: "control",
|
|
44495
|
+
capScope: "device",
|
|
44496
|
+
addonId: null,
|
|
44497
|
+
access: "view"
|
|
44498
|
+
},
|
|
42414
44499
|
"control.setValue": {
|
|
42415
44500
|
capName: "control",
|
|
42416
44501
|
capScope: "device",
|
|
@@ -42477,6 +44562,12 @@ Object.freeze({
|
|
|
42477
44562
|
addonId: null,
|
|
42478
44563
|
access: "create"
|
|
42479
44564
|
},
|
|
44565
|
+
"cover.getStatus": {
|
|
44566
|
+
capName: "cover",
|
|
44567
|
+
capScope: "device",
|
|
44568
|
+
addonId: null,
|
|
44569
|
+
access: "view"
|
|
44570
|
+
},
|
|
42480
44571
|
"cover.open": {
|
|
42481
44572
|
capName: "cover",
|
|
42482
44573
|
capScope: "device",
|
|
@@ -42609,6 +44700,12 @@ Object.freeze({
|
|
|
42609
44700
|
addonId: null,
|
|
42610
44701
|
access: "view"
|
|
42611
44702
|
},
|
|
44703
|
+
"dayNight.getStatus": {
|
|
44704
|
+
capName: "day-night",
|
|
44705
|
+
capScope: "device",
|
|
44706
|
+
addonId: null,
|
|
44707
|
+
access: "view"
|
|
44708
|
+
},
|
|
42612
44709
|
"dayNight.setSettings": {
|
|
42613
44710
|
capName: "day-night",
|
|
42614
44711
|
capScope: "device",
|
|
@@ -42699,6 +44796,30 @@ Object.freeze({
|
|
|
42699
44796
|
addonId: null,
|
|
42700
44797
|
access: "view"
|
|
42701
44798
|
},
|
|
44799
|
+
"detectionPipeline.applyDeviceSettingsPatch": {
|
|
44800
|
+
capName: "detection-pipeline",
|
|
44801
|
+
capScope: "device",
|
|
44802
|
+
addonId: null,
|
|
44803
|
+
access: "create"
|
|
44804
|
+
},
|
|
44805
|
+
"detectionPipeline.getDeviceLiveContribution": {
|
|
44806
|
+
capName: "detection-pipeline",
|
|
44807
|
+
capScope: "device",
|
|
44808
|
+
addonId: null,
|
|
44809
|
+
access: "view"
|
|
44810
|
+
},
|
|
44811
|
+
"detectionPipeline.getDeviceSettingsContribution": {
|
|
44812
|
+
capName: "detection-pipeline",
|
|
44813
|
+
capScope: "device",
|
|
44814
|
+
addonId: null,
|
|
44815
|
+
access: "view"
|
|
44816
|
+
},
|
|
44817
|
+
"deviceAdminLink.getAdminLink": {
|
|
44818
|
+
capName: "device-admin-link",
|
|
44819
|
+
capScope: "device",
|
|
44820
|
+
addonId: null,
|
|
44821
|
+
access: "view"
|
|
44822
|
+
},
|
|
42702
44823
|
"deviceAdoption.adopt": {
|
|
42703
44824
|
capName: "device-adoption",
|
|
42704
44825
|
capScope: "system",
|
|
@@ -42711,6 +44832,12 @@ Object.freeze({
|
|
|
42711
44832
|
addonId: null,
|
|
42712
44833
|
access: "view"
|
|
42713
44834
|
},
|
|
44835
|
+
"deviceAdoption.getStatus": {
|
|
44836
|
+
capName: "device-adoption",
|
|
44837
|
+
capScope: "system",
|
|
44838
|
+
addonId: null,
|
|
44839
|
+
access: "view"
|
|
44840
|
+
},
|
|
42714
44841
|
"deviceAdoption.listCandidateFilters": {
|
|
42715
44842
|
capName: "device-adoption",
|
|
42716
44843
|
capScope: "system",
|
|
@@ -42747,6 +44874,12 @@ Object.freeze({
|
|
|
42747
44874
|
addonId: null,
|
|
42748
44875
|
access: "create"
|
|
42749
44876
|
},
|
|
44877
|
+
"deviceDiscovery.getStatus": {
|
|
44878
|
+
capName: "device-discovery",
|
|
44879
|
+
capScope: "device",
|
|
44880
|
+
addonId: null,
|
|
44881
|
+
access: "view"
|
|
44882
|
+
},
|
|
42750
44883
|
"deviceDiscovery.listDiscovered": {
|
|
42751
44884
|
capName: "device-discovery",
|
|
42752
44885
|
capScope: "device",
|
|
@@ -42765,12 +44898,30 @@ Object.freeze({
|
|
|
42765
44898
|
addonId: null,
|
|
42766
44899
|
access: "create"
|
|
42767
44900
|
},
|
|
44901
|
+
"deviceExport.applyDeviceSettingsPatch": {
|
|
44902
|
+
capName: "device-export",
|
|
44903
|
+
capScope: "system",
|
|
44904
|
+
addonId: null,
|
|
44905
|
+
access: "create"
|
|
44906
|
+
},
|
|
42768
44907
|
"deviceExport.exposeDevice": {
|
|
42769
44908
|
capName: "device-export",
|
|
42770
44909
|
capScope: "system",
|
|
42771
44910
|
addonId: null,
|
|
42772
44911
|
access: "create"
|
|
42773
44912
|
},
|
|
44913
|
+
"deviceExport.getDeviceLiveContribution": {
|
|
44914
|
+
capName: "device-export",
|
|
44915
|
+
capScope: "system",
|
|
44916
|
+
addonId: null,
|
|
44917
|
+
access: "view"
|
|
44918
|
+
},
|
|
44919
|
+
"deviceExport.getDeviceSettingsContribution": {
|
|
44920
|
+
capName: "device-export",
|
|
44921
|
+
capScope: "system",
|
|
44922
|
+
addonId: null,
|
|
44923
|
+
access: "view"
|
|
44924
|
+
},
|
|
42774
44925
|
"deviceExport.getStatus": {
|
|
42775
44926
|
capName: "device-export",
|
|
42776
44927
|
capScope: "system",
|
|
@@ -42867,6 +45018,12 @@ Object.freeze({
|
|
|
42867
45018
|
addonId: null,
|
|
42868
45019
|
access: "create"
|
|
42869
45020
|
},
|
|
45021
|
+
"deviceManager.applyDeviceSettingsPatch": {
|
|
45022
|
+
capName: "device-manager",
|
|
45023
|
+
capScope: "system",
|
|
45024
|
+
addonId: null,
|
|
45025
|
+
access: "create"
|
|
45026
|
+
},
|
|
42870
45027
|
"deviceManager.applyInitialMeta": {
|
|
42871
45028
|
capName: "device-manager",
|
|
42872
45029
|
capScope: "system",
|
|
@@ -42969,6 +45126,12 @@ Object.freeze({
|
|
|
42969
45126
|
addonId: null,
|
|
42970
45127
|
access: "view"
|
|
42971
45128
|
},
|
|
45129
|
+
"deviceManager.getDeviceLiveContribution": {
|
|
45130
|
+
capName: "device-manager",
|
|
45131
|
+
capScope: "system",
|
|
45132
|
+
addonId: null,
|
|
45133
|
+
access: "view"
|
|
45134
|
+
},
|
|
42972
45135
|
"deviceManager.getDeviceLiveInfoAggregate": {
|
|
42973
45136
|
capName: "device-manager",
|
|
42974
45137
|
capScope: "system",
|
|
@@ -42981,6 +45144,12 @@ Object.freeze({
|
|
|
42981
45144
|
addonId: null,
|
|
42982
45145
|
access: "view"
|
|
42983
45146
|
},
|
|
45147
|
+
"deviceManager.getDeviceSettingsContribution": {
|
|
45148
|
+
capName: "device-manager",
|
|
45149
|
+
capScope: "system",
|
|
45150
|
+
addonId: null,
|
|
45151
|
+
access: "view"
|
|
45152
|
+
},
|
|
42984
45153
|
"deviceManager.getDeviceStatusAggregate": {
|
|
42985
45154
|
capName: "device-manager",
|
|
42986
45155
|
capScope: "system",
|
|
@@ -43473,6 +45642,36 @@ Object.freeze({
|
|
|
43473
45642
|
addonId: null,
|
|
43474
45643
|
access: "create"
|
|
43475
45644
|
},
|
|
45645
|
+
"deviceStatus.getStatus": {
|
|
45646
|
+
capName: "device-status",
|
|
45647
|
+
capScope: "device",
|
|
45648
|
+
addonId: null,
|
|
45649
|
+
access: "view"
|
|
45650
|
+
},
|
|
45651
|
+
"doorbell.applyDeviceSettingsPatch": {
|
|
45652
|
+
capName: "doorbell",
|
|
45653
|
+
capScope: "device",
|
|
45654
|
+
addonId: null,
|
|
45655
|
+
access: "create"
|
|
45656
|
+
},
|
|
45657
|
+
"doorbell.getDeviceLiveContribution": {
|
|
45658
|
+
capName: "doorbell",
|
|
45659
|
+
capScope: "device",
|
|
45660
|
+
addonId: null,
|
|
45661
|
+
access: "view"
|
|
45662
|
+
},
|
|
45663
|
+
"doorbell.getDeviceSettingsContribution": {
|
|
45664
|
+
capName: "doorbell",
|
|
45665
|
+
capScope: "device",
|
|
45666
|
+
addonId: null,
|
|
45667
|
+
access: "view"
|
|
45668
|
+
},
|
|
45669
|
+
"doorbell.getStatus": {
|
|
45670
|
+
capName: "doorbell",
|
|
45671
|
+
capScope: "device",
|
|
45672
|
+
addonId: null,
|
|
45673
|
+
access: "view"
|
|
45674
|
+
},
|
|
43476
45675
|
"embeddingEncoder.encode": {
|
|
43477
45676
|
capName: "embedding-encoder",
|
|
43478
45677
|
capScope: "system",
|
|
@@ -43491,6 +45690,18 @@ Object.freeze({
|
|
|
43491
45690
|
addonId: null,
|
|
43492
45691
|
access: "view"
|
|
43493
45692
|
},
|
|
45693
|
+
"enumSensor.getStatus": {
|
|
45694
|
+
capName: "enum-sensor",
|
|
45695
|
+
capScope: "device",
|
|
45696
|
+
addonId: null,
|
|
45697
|
+
access: "view"
|
|
45698
|
+
},
|
|
45699
|
+
"eventEmitter.getStatus": {
|
|
45700
|
+
capName: "event-emitter",
|
|
45701
|
+
capScope: "device",
|
|
45702
|
+
addonId: null,
|
|
45703
|
+
access: "view"
|
|
45704
|
+
},
|
|
43494
45705
|
"events.getEventClipUrl": {
|
|
43495
45706
|
capName: "events",
|
|
43496
45707
|
capScope: "device",
|
|
@@ -43611,6 +45822,12 @@ Object.freeze({
|
|
|
43611
45822
|
addonId: null,
|
|
43612
45823
|
access: "view"
|
|
43613
45824
|
},
|
|
45825
|
+
"fanControl.getStatus": {
|
|
45826
|
+
capName: "fan-control",
|
|
45827
|
+
capScope: "device",
|
|
45828
|
+
addonId: null,
|
|
45829
|
+
access: "view"
|
|
45830
|
+
},
|
|
43614
45831
|
"fanControl.setDirection": {
|
|
43615
45832
|
capName: "fan-control",
|
|
43616
45833
|
capScope: "device",
|
|
@@ -43635,6 +45852,12 @@ Object.freeze({
|
|
|
43635
45852
|
addonId: null,
|
|
43636
45853
|
access: "create"
|
|
43637
45854
|
},
|
|
45855
|
+
"featureProbe.getStatus": {
|
|
45856
|
+
capName: "feature-probe",
|
|
45857
|
+
capScope: "device",
|
|
45858
|
+
addonId: null,
|
|
45859
|
+
access: "view"
|
|
45860
|
+
},
|
|
43638
45861
|
"filesystemBrowse.browse": {
|
|
43639
45862
|
capName: "filesystem-browse",
|
|
43640
45863
|
capScope: "system",
|
|
@@ -43653,6 +45876,24 @@ Object.freeze({
|
|
|
43653
45876
|
addonId: null,
|
|
43654
45877
|
access: "view"
|
|
43655
45878
|
},
|
|
45879
|
+
"flood.getStatus": {
|
|
45880
|
+
capName: "flood",
|
|
45881
|
+
capScope: "device",
|
|
45882
|
+
addonId: null,
|
|
45883
|
+
access: "view"
|
|
45884
|
+
},
|
|
45885
|
+
"gas.getStatus": {
|
|
45886
|
+
capName: "gas",
|
|
45887
|
+
capScope: "device",
|
|
45888
|
+
addonId: null,
|
|
45889
|
+
access: "view"
|
|
45890
|
+
},
|
|
45891
|
+
"humidifier.getStatus": {
|
|
45892
|
+
capName: "humidifier",
|
|
45893
|
+
capScope: "device",
|
|
45894
|
+
addonId: null,
|
|
45895
|
+
access: "view"
|
|
45896
|
+
},
|
|
43656
45897
|
"humidifier.setMode": {
|
|
43657
45898
|
capName: "humidifier",
|
|
43658
45899
|
capScope: "device",
|
|
@@ -43671,12 +45912,30 @@ Object.freeze({
|
|
|
43671
45912
|
addonId: null,
|
|
43672
45913
|
access: "create"
|
|
43673
45914
|
},
|
|
45915
|
+
"humiditySensor.getStatus": {
|
|
45916
|
+
capName: "humidity-sensor",
|
|
45917
|
+
capScope: "device",
|
|
45918
|
+
addonId: null,
|
|
45919
|
+
access: "view"
|
|
45920
|
+
},
|
|
45921
|
+
"image.getStatus": {
|
|
45922
|
+
capName: "image",
|
|
45923
|
+
capScope: "device",
|
|
45924
|
+
addonId: null,
|
|
45925
|
+
access: "view"
|
|
45926
|
+
},
|
|
43674
45927
|
"imageSettings.getOptions": {
|
|
43675
45928
|
capName: "image-settings",
|
|
43676
45929
|
capScope: "device",
|
|
43677
45930
|
addonId: null,
|
|
43678
45931
|
access: "view"
|
|
43679
45932
|
},
|
|
45933
|
+
"imageSettings.getStatus": {
|
|
45934
|
+
capName: "image-settings",
|
|
45935
|
+
capScope: "device",
|
|
45936
|
+
addonId: null,
|
|
45937
|
+
access: "view"
|
|
45938
|
+
},
|
|
43680
45939
|
"imageSettings.setSettings": {
|
|
43681
45940
|
capName: "image-settings",
|
|
43682
45941
|
capScope: "device",
|
|
@@ -43749,6 +46008,12 @@ Object.freeze({
|
|
|
43749
46008
|
addonId: null,
|
|
43750
46009
|
access: "create"
|
|
43751
46010
|
},
|
|
46011
|
+
"intercom.getStatus": {
|
|
46012
|
+
capName: "intercom",
|
|
46013
|
+
capScope: "device",
|
|
46014
|
+
addonId: null,
|
|
46015
|
+
access: "view"
|
|
46016
|
+
},
|
|
43752
46017
|
"intercom.handleAnswer": {
|
|
43753
46018
|
capName: "intercom",
|
|
43754
46019
|
capScope: "device",
|
|
@@ -43785,6 +46050,12 @@ Object.freeze({
|
|
|
43785
46050
|
addonId: null,
|
|
43786
46051
|
access: "create"
|
|
43787
46052
|
},
|
|
46053
|
+
"lawnMowerControl.getStatus": {
|
|
46054
|
+
capName: "lawn-mower-control",
|
|
46055
|
+
capScope: "device",
|
|
46056
|
+
addonId: null,
|
|
46057
|
+
access: "view"
|
|
46058
|
+
},
|
|
43788
46059
|
"lawnMowerControl.pause": {
|
|
43789
46060
|
capName: "lawn-mower-control",
|
|
43790
46061
|
capScope: "device",
|
|
@@ -44067,6 +46338,12 @@ Object.freeze({
|
|
|
44067
46338
|
addonId: null,
|
|
44068
46339
|
access: "create"
|
|
44069
46340
|
},
|
|
46341
|
+
"lockControl.getStatus": {
|
|
46342
|
+
capName: "lock-control",
|
|
46343
|
+
capScope: "device",
|
|
46344
|
+
addonId: null,
|
|
46345
|
+
access: "view"
|
|
46346
|
+
},
|
|
44070
46347
|
"lockControl.lock": {
|
|
44071
46348
|
capName: "lock-control",
|
|
44072
46349
|
capScope: "device",
|
|
@@ -44115,6 +46392,12 @@ Object.freeze({
|
|
|
44115
46392
|
addonId: null,
|
|
44116
46393
|
access: "view"
|
|
44117
46394
|
},
|
|
46395
|
+
"mediaPlayer.getStatus": {
|
|
46396
|
+
capName: "media-player",
|
|
46397
|
+
capScope: "device",
|
|
46398
|
+
addonId: null,
|
|
46399
|
+
access: "view"
|
|
46400
|
+
},
|
|
44118
46401
|
"mediaPlayer.next": {
|
|
44119
46402
|
capName: "media-player",
|
|
44120
46403
|
capScope: "device",
|
|
@@ -44307,6 +46590,12 @@ Object.freeze({
|
|
|
44307
46590
|
addonId: null,
|
|
44308
46591
|
access: "create"
|
|
44309
46592
|
},
|
|
46593
|
+
"motion.getStatus": {
|
|
46594
|
+
capName: "motion",
|
|
46595
|
+
capScope: "device",
|
|
46596
|
+
addonId: null,
|
|
46597
|
+
access: "view"
|
|
46598
|
+
},
|
|
44310
46599
|
"motion.isDetected": {
|
|
44311
46600
|
capName: "motion",
|
|
44312
46601
|
capScope: "device",
|
|
@@ -44319,6 +46608,24 @@ Object.freeze({
|
|
|
44319
46608
|
addonId: null,
|
|
44320
46609
|
access: "create"
|
|
44321
46610
|
},
|
|
46611
|
+
"motionDetection.applyDeviceSettingsPatch": {
|
|
46612
|
+
capName: "motion-detection",
|
|
46613
|
+
capScope: "device",
|
|
46614
|
+
addonId: null,
|
|
46615
|
+
access: "create"
|
|
46616
|
+
},
|
|
46617
|
+
"motionDetection.getDeviceLiveContribution": {
|
|
46618
|
+
capName: "motion-detection",
|
|
46619
|
+
capScope: "device",
|
|
46620
|
+
addonId: null,
|
|
46621
|
+
access: "view"
|
|
46622
|
+
},
|
|
46623
|
+
"motionDetection.getDeviceSettingsContribution": {
|
|
46624
|
+
capName: "motion-detection",
|
|
46625
|
+
capScope: "device",
|
|
46626
|
+
addonId: null,
|
|
46627
|
+
access: "view"
|
|
46628
|
+
},
|
|
44322
46629
|
"motionDetection.removeCamera": {
|
|
44323
46630
|
capName: "motion-detection",
|
|
44324
46631
|
capScope: "device",
|
|
@@ -44331,6 +46638,12 @@ Object.freeze({
|
|
|
44331
46638
|
addonId: null,
|
|
44332
46639
|
access: "delete"
|
|
44333
46640
|
},
|
|
46641
|
+
"motionTrigger.getStatus": {
|
|
46642
|
+
capName: "motion-trigger",
|
|
46643
|
+
capScope: "device",
|
|
46644
|
+
addonId: null,
|
|
46645
|
+
access: "view"
|
|
46646
|
+
},
|
|
44334
46647
|
"motionTrigger.setMotionTrigger": {
|
|
44335
46648
|
capName: "motion-trigger",
|
|
44336
46649
|
capScope: "device",
|
|
@@ -44343,6 +46656,12 @@ Object.freeze({
|
|
|
44343
46656
|
addonId: null,
|
|
44344
46657
|
access: "view"
|
|
44345
46658
|
},
|
|
46659
|
+
"motionZones.getStatus": {
|
|
46660
|
+
capName: "motion-zones",
|
|
46661
|
+
capScope: "device",
|
|
46662
|
+
addonId: null,
|
|
46663
|
+
access: "view"
|
|
46664
|
+
},
|
|
44346
46665
|
"motionZones.setZone": {
|
|
44347
46666
|
capName: "motion-zones",
|
|
44348
46667
|
capScope: "device",
|
|
@@ -44403,6 +46722,12 @@ Object.freeze({
|
|
|
44403
46722
|
addonId: null,
|
|
44404
46723
|
access: "view"
|
|
44405
46724
|
},
|
|
46725
|
+
"nativeObjectDetection.getStatus": {
|
|
46726
|
+
capName: "native-object-detection",
|
|
46727
|
+
capScope: "device",
|
|
46728
|
+
addonId: null,
|
|
46729
|
+
access: "view"
|
|
46730
|
+
},
|
|
44406
46731
|
"nativeObjectDetection.setEnabled": {
|
|
44407
46732
|
capName: "native-object-detection",
|
|
44408
46733
|
capScope: "device",
|
|
@@ -44421,6 +46746,12 @@ Object.freeze({
|
|
|
44421
46746
|
addonId: null,
|
|
44422
46747
|
access: "view"
|
|
44423
46748
|
},
|
|
46749
|
+
"navigation.getStatus": {
|
|
46750
|
+
capName: "navigation",
|
|
46751
|
+
capScope: "device",
|
|
46752
|
+
addonId: null,
|
|
46753
|
+
access: "view"
|
|
46754
|
+
},
|
|
44424
46755
|
"navigation.goToPoint": {
|
|
44425
46756
|
capName: "navigation",
|
|
44426
46757
|
capScope: "device",
|
|
@@ -44505,6 +46836,12 @@ Object.freeze({
|
|
|
44505
46836
|
addonId: null,
|
|
44506
46837
|
access: "create"
|
|
44507
46838
|
},
|
|
46839
|
+
"networkLink.getStatus": {
|
|
46840
|
+
capName: "network-link",
|
|
46841
|
+
capScope: "device",
|
|
46842
|
+
addonId: null,
|
|
46843
|
+
access: "view"
|
|
46844
|
+
},
|
|
44508
46845
|
"networkQuality.getAllStats": {
|
|
44509
46846
|
capName: "network-quality",
|
|
44510
46847
|
capScope: "system",
|
|
@@ -44763,18 +47100,36 @@ Object.freeze({
|
|
|
44763
47100
|
addonId: null,
|
|
44764
47101
|
access: "create"
|
|
44765
47102
|
},
|
|
47103
|
+
"notifier.getStatus": {
|
|
47104
|
+
capName: "notifier",
|
|
47105
|
+
capScope: "device",
|
|
47106
|
+
addonId: null,
|
|
47107
|
+
access: "view"
|
|
47108
|
+
},
|
|
44766
47109
|
"notifier.send": {
|
|
44767
47110
|
capName: "notifier",
|
|
44768
47111
|
capScope: "device",
|
|
44769
47112
|
addonId: null,
|
|
44770
47113
|
access: "create"
|
|
44771
47114
|
},
|
|
47115
|
+
"numericSensor.getStatus": {
|
|
47116
|
+
capName: "numeric-sensor",
|
|
47117
|
+
capScope: "device",
|
|
47118
|
+
addonId: null,
|
|
47119
|
+
access: "view"
|
|
47120
|
+
},
|
|
44772
47121
|
"oauthIntegration.getDescriptor": {
|
|
44773
47122
|
capName: "oauth-integration",
|
|
44774
47123
|
capScope: "system",
|
|
44775
47124
|
addonId: null,
|
|
44776
47125
|
access: "view"
|
|
44777
47126
|
},
|
|
47127
|
+
"osd.getStatus": {
|
|
47128
|
+
capName: "osd",
|
|
47129
|
+
capScope: "device",
|
|
47130
|
+
addonId: null,
|
|
47131
|
+
access: "view"
|
|
47132
|
+
},
|
|
44778
47133
|
"osd.setOverlay": {
|
|
44779
47134
|
capName: "osd",
|
|
44780
47135
|
capScope: "device",
|
|
@@ -44847,6 +47202,12 @@ Object.freeze({
|
|
|
44847
47202
|
addonId: null,
|
|
44848
47203
|
access: "create"
|
|
44849
47204
|
},
|
|
47205
|
+
"petFeeder.getStatus": {
|
|
47206
|
+
capName: "pet-feeder",
|
|
47207
|
+
capScope: "device",
|
|
47208
|
+
addonId: null,
|
|
47209
|
+
access: "view"
|
|
47210
|
+
},
|
|
44850
47211
|
"petFeeder.markFoodReplenished": {
|
|
44851
47212
|
capName: "pet-feeder",
|
|
44852
47213
|
capScope: "device",
|
|
@@ -44889,6 +47250,12 @@ Object.freeze({
|
|
|
44889
47250
|
addonId: null,
|
|
44890
47251
|
access: "create"
|
|
44891
47252
|
},
|
|
47253
|
+
"pipelineAnalytics.applyDeviceSettingsPatch": {
|
|
47254
|
+
capName: "pipeline-analytics",
|
|
47255
|
+
capScope: "device",
|
|
47256
|
+
addonId: null,
|
|
47257
|
+
access: "create"
|
|
47258
|
+
},
|
|
44892
47259
|
"pipelineAnalytics.cancelRelocateMedia": {
|
|
44893
47260
|
capName: "pipeline-analytics",
|
|
44894
47261
|
capScope: "device",
|
|
@@ -44955,6 +47322,18 @@ Object.freeze({
|
|
|
44955
47322
|
addonId: null,
|
|
44956
47323
|
access: "view"
|
|
44957
47324
|
},
|
|
47325
|
+
"pipelineAnalytics.getDeviceLiveContribution": {
|
|
47326
|
+
capName: "pipeline-analytics",
|
|
47327
|
+
capScope: "device",
|
|
47328
|
+
addonId: null,
|
|
47329
|
+
access: "view"
|
|
47330
|
+
},
|
|
47331
|
+
"pipelineAnalytics.getDeviceSettingsContribution": {
|
|
47332
|
+
capName: "pipeline-analytics",
|
|
47333
|
+
capScope: "device",
|
|
47334
|
+
addonId: null,
|
|
47335
|
+
access: "view"
|
|
47336
|
+
},
|
|
44958
47337
|
"pipelineAnalytics.getEventDensity": {
|
|
44959
47338
|
capName: "pipeline-analytics",
|
|
44960
47339
|
capScope: "device",
|
|
@@ -45525,6 +47904,12 @@ Object.freeze({
|
|
|
45525
47904
|
addonId: null,
|
|
45526
47905
|
access: "view"
|
|
45527
47906
|
},
|
|
47907
|
+
"pipelineOrchestrator.applyDeviceSettingsPatch": {
|
|
47908
|
+
capName: "pipeline-orchestrator",
|
|
47909
|
+
capScope: "system",
|
|
47910
|
+
addonId: null,
|
|
47911
|
+
access: "create"
|
|
47912
|
+
},
|
|
45528
47913
|
"pipelineOrchestrator.assignAudio": {
|
|
45529
47914
|
capName: "pipeline-orchestrator",
|
|
45530
47915
|
capScope: "system",
|
|
@@ -45615,6 +48000,18 @@ Object.freeze({
|
|
|
45615
48000
|
addonId: null,
|
|
45616
48001
|
access: "view"
|
|
45617
48002
|
},
|
|
48003
|
+
"pipelineOrchestrator.getDeviceLiveContribution": {
|
|
48004
|
+
capName: "pipeline-orchestrator",
|
|
48005
|
+
capScope: "system",
|
|
48006
|
+
addonId: null,
|
|
48007
|
+
access: "view"
|
|
48008
|
+
},
|
|
48009
|
+
"pipelineOrchestrator.getDeviceSettingsContribution": {
|
|
48010
|
+
capName: "pipeline-orchestrator",
|
|
48011
|
+
capScope: "system",
|
|
48012
|
+
addonId: null,
|
|
48013
|
+
access: "view"
|
|
48014
|
+
},
|
|
45618
48015
|
"pipelineOrchestrator.getGlobalMetrics": {
|
|
45619
48016
|
capName: "pipeline-orchestrator",
|
|
45620
48017
|
capScope: "system",
|
|
@@ -46023,12 +48420,36 @@ Object.freeze({
|
|
|
46023
48420
|
addonId: null,
|
|
46024
48421
|
access: "view"
|
|
46025
48422
|
},
|
|
48423
|
+
"powerMeter.getStatus": {
|
|
48424
|
+
capName: "power-meter",
|
|
48425
|
+
capScope: "device",
|
|
48426
|
+
addonId: null,
|
|
48427
|
+
access: "view"
|
|
48428
|
+
},
|
|
48429
|
+
"presence.getStatus": {
|
|
48430
|
+
capName: "presence",
|
|
48431
|
+
capScope: "device",
|
|
48432
|
+
addonId: null,
|
|
48433
|
+
access: "view"
|
|
48434
|
+
},
|
|
48435
|
+
"pressureSensor.getStatus": {
|
|
48436
|
+
capName: "pressure-sensor",
|
|
48437
|
+
capScope: "device",
|
|
48438
|
+
addonId: null,
|
|
48439
|
+
access: "view"
|
|
48440
|
+
},
|
|
46026
48441
|
"privacyMask.getOptions": {
|
|
46027
48442
|
capName: "privacy-mask",
|
|
46028
48443
|
capScope: "device",
|
|
46029
48444
|
addonId: null,
|
|
46030
48445
|
access: "view"
|
|
46031
48446
|
},
|
|
48447
|
+
"privacyMask.getStatus": {
|
|
48448
|
+
capName: "privacy-mask",
|
|
48449
|
+
capScope: "device",
|
|
48450
|
+
addonId: null,
|
|
48451
|
+
access: "view"
|
|
48452
|
+
},
|
|
46032
48453
|
"privacyMask.setAudioEnabled": {
|
|
46033
48454
|
capName: "privacy-mask",
|
|
46034
48455
|
capScope: "device",
|
|
@@ -46089,6 +48510,12 @@ Object.freeze({
|
|
|
46089
48510
|
addonId: null,
|
|
46090
48511
|
access: "view"
|
|
46091
48512
|
},
|
|
48513
|
+
"ptz.getStatus": {
|
|
48514
|
+
capName: "ptz",
|
|
48515
|
+
capScope: "device",
|
|
48516
|
+
addonId: null,
|
|
48517
|
+
access: "view"
|
|
48518
|
+
},
|
|
46092
48519
|
"ptz.goHome": {
|
|
46093
48520
|
capName: "ptz",
|
|
46094
48521
|
capScope: "device",
|
|
@@ -46167,6 +48594,12 @@ Object.freeze({
|
|
|
46167
48594
|
addonId: null,
|
|
46168
48595
|
access: "create"
|
|
46169
48596
|
},
|
|
48597
|
+
"recording.applyDeviceSettingsPatch": {
|
|
48598
|
+
capName: "recording",
|
|
48599
|
+
capScope: "system",
|
|
48600
|
+
addonId: null,
|
|
48601
|
+
access: "create"
|
|
48602
|
+
},
|
|
46170
48603
|
"recording.cancelRelocateJob": {
|
|
46171
48604
|
capName: "recording",
|
|
46172
48605
|
capScope: "system",
|
|
@@ -46215,6 +48648,18 @@ Object.freeze({
|
|
|
46215
48648
|
addonId: null,
|
|
46216
48649
|
access: "view"
|
|
46217
48650
|
},
|
|
48651
|
+
"recording.getDeviceLiveContribution": {
|
|
48652
|
+
capName: "recording",
|
|
48653
|
+
capScope: "system",
|
|
48654
|
+
addonId: null,
|
|
48655
|
+
access: "view"
|
|
48656
|
+
},
|
|
48657
|
+
"recording.getDeviceSettingsContribution": {
|
|
48658
|
+
capName: "recording",
|
|
48659
|
+
capScope: "system",
|
|
48660
|
+
addonId: null,
|
|
48661
|
+
access: "view"
|
|
48662
|
+
},
|
|
46218
48663
|
"recording.getPlacement": {
|
|
46219
48664
|
capName: "recording",
|
|
46220
48665
|
capScope: "system",
|
|
@@ -46233,6 +48678,12 @@ Object.freeze({
|
|
|
46233
48678
|
addonId: null,
|
|
46234
48679
|
access: "view"
|
|
46235
48680
|
},
|
|
48681
|
+
"recording.getStatus": {
|
|
48682
|
+
capName: "recording",
|
|
48683
|
+
capScope: "system",
|
|
48684
|
+
addonId: null,
|
|
48685
|
+
access: "view"
|
|
48686
|
+
},
|
|
46236
48687
|
"recording.getStorageMigrationMoveStatus": {
|
|
46237
48688
|
capName: "recording",
|
|
46238
48689
|
capScope: "system",
|
|
@@ -46407,6 +48858,24 @@ Object.freeze({
|
|
|
46407
48858
|
addonId: null,
|
|
46408
48859
|
access: "view"
|
|
46409
48860
|
},
|
|
48861
|
+
"recordingOnboard.getOptions": {
|
|
48862
|
+
capName: "recording-onboard",
|
|
48863
|
+
capScope: "device",
|
|
48864
|
+
addonId: null,
|
|
48865
|
+
access: "view"
|
|
48866
|
+
},
|
|
48867
|
+
"recordingOnboard.getStatus": {
|
|
48868
|
+
capName: "recording-onboard",
|
|
48869
|
+
capScope: "device",
|
|
48870
|
+
addonId: null,
|
|
48871
|
+
access: "view"
|
|
48872
|
+
},
|
|
48873
|
+
"recordingOnboard.setSettings": {
|
|
48874
|
+
capName: "recording-onboard",
|
|
48875
|
+
capScope: "device",
|
|
48876
|
+
addonId: null,
|
|
48877
|
+
access: "create"
|
|
48878
|
+
},
|
|
46410
48879
|
"recordingSignal.getStatus": {
|
|
46411
48880
|
capName: "recording-signal",
|
|
46412
48881
|
capScope: "device",
|
|
@@ -46437,6 +48906,12 @@ Object.freeze({
|
|
|
46437
48906
|
addonId: null,
|
|
46438
48907
|
access: "delete"
|
|
46439
48908
|
},
|
|
48909
|
+
"sceneMonitor.getStatus": {
|
|
48910
|
+
capName: "scene-monitor",
|
|
48911
|
+
capScope: "device",
|
|
48912
|
+
addonId: null,
|
|
48913
|
+
access: "view"
|
|
48914
|
+
},
|
|
46440
48915
|
"sceneMonitor.listScenes": {
|
|
46441
48916
|
capName: "scene-monitor",
|
|
46442
48917
|
capScope: "device",
|
|
@@ -46467,6 +48942,12 @@ Object.freeze({
|
|
|
46467
48942
|
addonId: null,
|
|
46468
48943
|
access: "create"
|
|
46469
48944
|
},
|
|
48945
|
+
"scriptRunner.getStatus": {
|
|
48946
|
+
capName: "script-runner",
|
|
48947
|
+
capScope: "device",
|
|
48948
|
+
addonId: null,
|
|
48949
|
+
access: "view"
|
|
48950
|
+
},
|
|
46470
48951
|
"scriptRunner.run": {
|
|
46471
48952
|
capName: "script-runner",
|
|
46472
48953
|
capScope: "device",
|
|
@@ -46599,6 +49080,12 @@ Object.freeze({
|
|
|
46599
49080
|
addonId: null,
|
|
46600
49081
|
access: "create"
|
|
46601
49082
|
},
|
|
49083
|
+
"smoke.getStatus": {
|
|
49084
|
+
capName: "smoke",
|
|
49085
|
+
capScope: "device",
|
|
49086
|
+
addonId: null,
|
|
49087
|
+
access: "view"
|
|
49088
|
+
},
|
|
46602
49089
|
"smtpProvider.getStatus": {
|
|
46603
49090
|
capName: "smtp-provider",
|
|
46604
49091
|
capScope: "system",
|
|
@@ -46617,12 +49104,30 @@ Object.freeze({
|
|
|
46617
49104
|
addonId: null,
|
|
46618
49105
|
access: "view"
|
|
46619
49106
|
},
|
|
49107
|
+
"snapshot.applyDeviceSettingsPatch": {
|
|
49108
|
+
capName: "snapshot",
|
|
49109
|
+
capScope: "device",
|
|
49110
|
+
addonId: null,
|
|
49111
|
+
access: "create"
|
|
49112
|
+
},
|
|
46620
49113
|
"snapshot.getDebugState": {
|
|
46621
49114
|
capName: "snapshot",
|
|
46622
49115
|
capScope: "device",
|
|
46623
49116
|
addonId: null,
|
|
46624
49117
|
access: "view"
|
|
46625
49118
|
},
|
|
49119
|
+
"snapshot.getDeviceLiveContribution": {
|
|
49120
|
+
capName: "snapshot",
|
|
49121
|
+
capScope: "device",
|
|
49122
|
+
addonId: null,
|
|
49123
|
+
access: "view"
|
|
49124
|
+
},
|
|
49125
|
+
"snapshot.getDeviceSettingsContribution": {
|
|
49126
|
+
capName: "snapshot",
|
|
49127
|
+
capScope: "device",
|
|
49128
|
+
addonId: null,
|
|
49129
|
+
access: "view"
|
|
49130
|
+
},
|
|
46626
49131
|
"snapshot.getSnapshot": {
|
|
46627
49132
|
capName: "snapshot",
|
|
46628
49133
|
capScope: "device",
|
|
@@ -46641,6 +49146,12 @@ Object.freeze({
|
|
|
46641
49146
|
addonId: null,
|
|
46642
49147
|
access: "view"
|
|
46643
49148
|
},
|
|
49149
|
+
"snapshot.getStatus": {
|
|
49150
|
+
capName: "snapshot",
|
|
49151
|
+
capScope: "device",
|
|
49152
|
+
addonId: null,
|
|
49153
|
+
access: "view"
|
|
49154
|
+
},
|
|
46644
49155
|
"snapshot.invalidateCache": {
|
|
46645
49156
|
capName: "snapshot",
|
|
46646
49157
|
capScope: "device",
|
|
@@ -46977,6 +49488,12 @@ Object.freeze({
|
|
|
46977
49488
|
addonId: null,
|
|
46978
49489
|
access: "create"
|
|
46979
49490
|
},
|
|
49491
|
+
"streamBroker.applyDeviceSettingsPatch": {
|
|
49492
|
+
capName: "stream-broker",
|
|
49493
|
+
capScope: "system",
|
|
49494
|
+
addonId: null,
|
|
49495
|
+
access: "create"
|
|
49496
|
+
},
|
|
46980
49497
|
"streamBroker.assignProfile": {
|
|
46981
49498
|
capName: "stream-broker",
|
|
46982
49499
|
capScope: "system",
|
|
@@ -47013,6 +49530,18 @@ Object.freeze({
|
|
|
47013
49530
|
addonId: null,
|
|
47014
49531
|
access: "view"
|
|
47015
49532
|
},
|
|
49533
|
+
"streamBroker.getDeviceLiveContribution": {
|
|
49534
|
+
capName: "stream-broker",
|
|
49535
|
+
capScope: "system",
|
|
49536
|
+
addonId: null,
|
|
49537
|
+
access: "view"
|
|
49538
|
+
},
|
|
49539
|
+
"streamBroker.getDeviceSettingsContribution": {
|
|
49540
|
+
capName: "stream-broker",
|
|
49541
|
+
capScope: "system",
|
|
49542
|
+
addonId: null,
|
|
49543
|
+
access: "view"
|
|
49544
|
+
},
|
|
47016
49545
|
"streamBroker.getPreBufferInfo": {
|
|
47017
49546
|
capName: "stream-broker",
|
|
47018
49547
|
capScope: "system",
|
|
@@ -47211,6 +49740,12 @@ Object.freeze({
|
|
|
47211
49740
|
addonId: null,
|
|
47212
49741
|
access: "view"
|
|
47213
49742
|
},
|
|
49743
|
+
"streamParams.getStatus": {
|
|
49744
|
+
capName: "stream-params",
|
|
49745
|
+
capScope: "device",
|
|
49746
|
+
addonId: null,
|
|
49747
|
+
access: "view"
|
|
49748
|
+
},
|
|
47214
49749
|
"streamParams.setProfile": {
|
|
47215
49750
|
capName: "stream-params",
|
|
47216
49751
|
capScope: "device",
|
|
@@ -47223,6 +49758,12 @@ Object.freeze({
|
|
|
47223
49758
|
addonId: null,
|
|
47224
49759
|
access: "view"
|
|
47225
49760
|
},
|
|
49761
|
+
"switch.getStatus": {
|
|
49762
|
+
capName: "switch",
|
|
49763
|
+
capScope: "device",
|
|
49764
|
+
addonId: null,
|
|
49765
|
+
access: "view"
|
|
49766
|
+
},
|
|
47226
49767
|
"switch.setState": {
|
|
47227
49768
|
capName: "switch",
|
|
47228
49769
|
capScope: "device",
|
|
@@ -47319,6 +49860,18 @@ Object.freeze({
|
|
|
47319
49860
|
addonId: null,
|
|
47320
49861
|
access: "create"
|
|
47321
49862
|
},
|
|
49863
|
+
"tamper.getStatus": {
|
|
49864
|
+
capName: "tamper",
|
|
49865
|
+
capScope: "device",
|
|
49866
|
+
addonId: null,
|
|
49867
|
+
access: "view"
|
|
49868
|
+
},
|
|
49869
|
+
"temperatureSensor.getStatus": {
|
|
49870
|
+
capName: "temperature-sensor",
|
|
49871
|
+
capScope: "device",
|
|
49872
|
+
addonId: null,
|
|
49873
|
+
access: "view"
|
|
49874
|
+
},
|
|
47322
49875
|
"terminalSession.adoptLegacyMonitor": {
|
|
47323
49876
|
capName: "terminal-session",
|
|
47324
49877
|
capScope: "system",
|
|
@@ -47415,6 +49968,12 @@ Object.freeze({
|
|
|
47415
49968
|
addonId: null,
|
|
47416
49969
|
access: "view"
|
|
47417
49970
|
},
|
|
49971
|
+
"update.getStatus": {
|
|
49972
|
+
capName: "update",
|
|
49973
|
+
capScope: "device",
|
|
49974
|
+
addonId: null,
|
|
49975
|
+
access: "view"
|
|
49976
|
+
},
|
|
47418
49977
|
"update.installUpdate": {
|
|
47419
49978
|
capName: "update",
|
|
47420
49979
|
capScope: "device",
|
|
@@ -47637,6 +50196,12 @@ Object.freeze({
|
|
|
47637
50196
|
addonId: null,
|
|
47638
50197
|
access: "create"
|
|
47639
50198
|
},
|
|
50199
|
+
"vacuumControl.getStatus": {
|
|
50200
|
+
capName: "vacuum-control",
|
|
50201
|
+
capScope: "device",
|
|
50202
|
+
addonId: null,
|
|
50203
|
+
access: "view"
|
|
50204
|
+
},
|
|
47640
50205
|
"vacuumControl.locate": {
|
|
47641
50206
|
capName: "vacuum-control",
|
|
47642
50207
|
capScope: "device",
|
|
@@ -47679,6 +50244,12 @@ Object.freeze({
|
|
|
47679
50244
|
addonId: null,
|
|
47680
50245
|
access: "create"
|
|
47681
50246
|
},
|
|
50247
|
+
"valve.getStatus": {
|
|
50248
|
+
capName: "valve",
|
|
50249
|
+
capScope: "device",
|
|
50250
|
+
addonId: null,
|
|
50251
|
+
access: "view"
|
|
50252
|
+
},
|
|
47682
50253
|
"valve.open": {
|
|
47683
50254
|
capName: "valve",
|
|
47684
50255
|
capScope: "device",
|
|
@@ -47751,6 +50322,18 @@ Object.freeze({
|
|
|
47751
50322
|
addonId: null,
|
|
47752
50323
|
access: "create"
|
|
47753
50324
|
},
|
|
50325
|
+
"vibration.getStatus": {
|
|
50326
|
+
capName: "vibration",
|
|
50327
|
+
capScope: "device",
|
|
50328
|
+
addonId: null,
|
|
50329
|
+
access: "view"
|
|
50330
|
+
},
|
|
50331
|
+
"videoclips.dialClipStream": {
|
|
50332
|
+
capName: "videoclips",
|
|
50333
|
+
capScope: "device",
|
|
50334
|
+
addonId: null,
|
|
50335
|
+
access: "view"
|
|
50336
|
+
},
|
|
47754
50337
|
"videoclips.getClipPlayback": {
|
|
47755
50338
|
capName: "videoclips",
|
|
47756
50339
|
capScope: "device",
|
|
@@ -47787,6 +50370,12 @@ Object.freeze({
|
|
|
47787
50370
|
addonId: null,
|
|
47788
50371
|
access: "view"
|
|
47789
50372
|
},
|
|
50373
|
+
"waterHeater.getStatus": {
|
|
50374
|
+
capName: "water-heater",
|
|
50375
|
+
capScope: "device",
|
|
50376
|
+
addonId: null,
|
|
50377
|
+
access: "view"
|
|
50378
|
+
},
|
|
47790
50379
|
"waterHeater.setAway": {
|
|
47791
50380
|
capName: "water-heater",
|
|
47792
50381
|
capScope: "device",
|
|
@@ -47805,6 +50394,12 @@ Object.freeze({
|
|
|
47805
50394
|
addonId: null,
|
|
47806
50395
|
access: "create"
|
|
47807
50396
|
},
|
|
50397
|
+
"weather.getStatus": {
|
|
50398
|
+
capName: "weather",
|
|
50399
|
+
capScope: "device",
|
|
50400
|
+
addonId: null,
|
|
50401
|
+
access: "view"
|
|
50402
|
+
},
|
|
47808
50403
|
"webrtcSession.addIceCandidate": {
|
|
47809
50404
|
capName: "webrtc-session",
|
|
47810
50405
|
capScope: "device",
|
|
@@ -48167,6 +50762,11 @@ Object.freeze({
|
|
|
48167
50762
|
form: "single",
|
|
48168
50763
|
optional: true
|
|
48169
50764
|
}],
|
|
50765
|
+
"deviceAdminLink.getAdminLink": [{
|
|
50766
|
+
name: "deviceId",
|
|
50767
|
+
form: "single",
|
|
50768
|
+
optional: false
|
|
50769
|
+
}],
|
|
48170
50770
|
"deviceAdoption.release": [{
|
|
48171
50771
|
name: "camDeviceId",
|
|
48172
50772
|
form: "single",
|
|
@@ -49552,6 +52152,16 @@ Object.freeze({
|
|
|
49552
52152
|
form: "single",
|
|
49553
52153
|
optional: true
|
|
49554
52154
|
}],
|
|
52155
|
+
"recordingOnboard.getOptions": [{
|
|
52156
|
+
name: "deviceId",
|
|
52157
|
+
form: "single",
|
|
52158
|
+
optional: false
|
|
52159
|
+
}],
|
|
52160
|
+
"recordingOnboard.setSettings": [{
|
|
52161
|
+
name: "deviceId",
|
|
52162
|
+
form: "single",
|
|
52163
|
+
optional: false
|
|
52164
|
+
}],
|
|
49555
52165
|
"recordingSignal.getStatus": [{
|
|
49556
52166
|
name: "deviceId",
|
|
49557
52167
|
form: "single",
|
|
@@ -49778,6 +52388,11 @@ Object.freeze({
|
|
|
49778
52388
|
form: "single",
|
|
49779
52389
|
optional: false
|
|
49780
52390
|
}],
|
|
52391
|
+
"videoclips.dialClipStream": [{
|
|
52392
|
+
name: "deviceId",
|
|
52393
|
+
form: "single",
|
|
52394
|
+
optional: false
|
|
52395
|
+
}],
|
|
49781
52396
|
"videoclips.getClipPlayback": [{
|
|
49782
52397
|
name: "deviceId",
|
|
49783
52398
|
form: "single",
|