@mega-yfue/eufy-sdk 0.5.0-beta.54 → 0.5.0-beta.55
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/index.js +319 -1
- package/dist/index.js.map +3 -3
- package/dist/model/capabilities/index.d.ts +5 -1
- package/dist/model/capabilities/mower.d.ts +230 -0
- package/dist/model/param-dictionary.d.ts +6 -0
- package/dist/model/param-namespace.d.ts +1 -1
- package/dist/model/types.d.ts +10 -8
- package/package.json +1 -1
|
@@ -42,6 +42,7 @@ import type { VacuumCleanActions } from "./vacuum-clean.js";
|
|
|
42
42
|
import type { VacuumDockActions } from "./vacuum-dock.js";
|
|
43
43
|
import type { DisplayActions } from "./display.js";
|
|
44
44
|
import type { SuctionActions } from "./suction.js";
|
|
45
|
+
import type { MowerActions } from "./mower.js";
|
|
45
46
|
import type { LocateActions } from "./locate.js";
|
|
46
47
|
import type { DeviceInfo } from "./info.js";
|
|
47
48
|
import type { CusPushAlarmType } from "../push-events.js";
|
|
@@ -426,6 +427,8 @@ export interface DeviceActionMap {
|
|
|
426
427
|
vacuumDock: VacuumDockActions;
|
|
427
428
|
/** RoboVac suction: `level`, `boostIq`, `supportedLevels`; `setSuctionLevel`, `setBoostIq`. */
|
|
428
429
|
suction: SuctionActions;
|
|
430
|
+
/** Robot mower (read-only): `battery`, `cutHeight`, `network`, `wifiSignal`, wear timers and settings. No write is captured. */
|
|
431
|
+
mower: MowerActions;
|
|
429
432
|
/** RoboVac locate (find-robot beep): `locating`; `locate(on?)`. */
|
|
430
433
|
locate: LocateActions;
|
|
431
434
|
/** Smart Display (read-only): `battery`. No display write is captured. */
|
|
@@ -521,7 +524,7 @@ export type { ActionSpec } from "./types.js";
|
|
|
521
524
|
* `undefined` for an action nothing describes.
|
|
522
525
|
*/
|
|
523
526
|
export { actionSpecOf } from "./access.js";
|
|
524
|
-
export type { PtzActions, LightActions, SmartLightActions, RgbColor, CameraActions, LockActions, SirenActions, ArmingActions, BatteryActions, MotionActions, ContactActions, LeakActions, SmokeActions, CoActions, KeypadActions, RtspActions, VacuumCleanActions, SuctionActions, LocateActions, };
|
|
527
|
+
export type { PtzActions, LightActions, SmartLightActions, RgbColor, CameraActions, LockActions, SirenActions, ArmingActions, BatteryActions, MotionActions, ContactActions, LeakActions, SmokeActions, CoActions, KeypadActions, RtspActions, VacuumCleanActions, SuctionActions, MowerActions, LocateActions, };
|
|
525
528
|
/**
|
|
526
529
|
* The member table each `*Actions` type is DERIVED from (`LockActions = Surface<typeof LOCK_MEMBERS>`),
|
|
527
530
|
* so the type names the table and the table is part of the published surface.
|
|
@@ -550,6 +553,7 @@ export { SMART_LIGHT_MEMBERS } from "./smart-light.js";
|
|
|
550
553
|
export { SMOKE_MEMBERS } from "./smoke.js";
|
|
551
554
|
export { DISPLAY_MEMBERS, type DisplayActions } from "./display.js";
|
|
552
555
|
export { SUCTION_MEMBERS } from "./suction.js";
|
|
556
|
+
export { MOWER_MEMBERS } from "./mower.js";
|
|
553
557
|
export { VACUUM_CLEAN_MEMBERS } from "./vacuum-clean.js";
|
|
554
558
|
export type { DeviceInfo } from "./info.js";
|
|
555
559
|
export type { AutoSpotlightOptions } from "./light.js";
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { type Surface } from "./members.js";
|
|
2
|
+
import type { CapabilityModule } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Robot-mower Tuya **DP ids** — the E15's Tuya product schema (`thing.m.device.ref.info.list` v5.4,
|
|
5
|
+
* `schemaInfo.schema`, product `bvxrcjxom787vnit`), each id also reported by a live E15. The product
|
|
6
|
+
* is built on Tuya's robot-vacuum template, so ids below 101 carry that template's codes; the mower's
|
|
7
|
+
* own data points are 101-146.
|
|
8
|
+
*
|
|
9
|
+
* Only scalar data points are named here. The Raw ones (`robot_status` 107, `battery_status` 108,
|
|
10
|
+
* `map_info` 113, the `*_control` commands 103-106, …) are protobuf messages whose field layout no
|
|
11
|
+
* source in hand states, and 102 (`device_infomation`) and 142 (`gps_info`) carry the device's network
|
|
12
|
+
* identity and position.
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export declare const MOWER_DP: {
|
|
16
|
+
readonly BATTERY: 8;
|
|
17
|
+
readonly VOLUME: 26;
|
|
18
|
+
readonly CHILD_LOCK: 47;
|
|
19
|
+
readonly RAIN_AUTO_RETURN: 101;
|
|
20
|
+
readonly WIFI_SIGNAL: 109;
|
|
21
|
+
readonly MOW_HEIGHT: 110;
|
|
22
|
+
readonly SAVE_MAP_PROGRESS: 118;
|
|
23
|
+
readonly STATION_USED_TIME: 125;
|
|
24
|
+
readonly BLADE_USED_TIME: 126;
|
|
25
|
+
readonly EDGE_TRIM: 128;
|
|
26
|
+
readonly WORK_ANGLE_ENABLED: 130;
|
|
27
|
+
readonly WORK_ANGLE: 131;
|
|
28
|
+
readonly SMART_NO_GO_ZONES: 132;
|
|
29
|
+
readonly BIRD_VIEW_CAPTURE: 133;
|
|
30
|
+
readonly NETWORK: 134;
|
|
31
|
+
readonly CELLULAR_ENABLED: 137;
|
|
32
|
+
readonly EDGE_DISTANCE: 139;
|
|
33
|
+
readonly GPS_ANTI_THEFT: 140;
|
|
34
|
+
readonly SPARSE_LAWN_OPTIMIZATION: 141;
|
|
35
|
+
};
|
|
36
|
+
/** The `net_media_type` (DP 134) range, as the schema lists it. */
|
|
37
|
+
export declare const MOWER_NETWORKS: readonly ["None", "Wifi", "Cellular"];
|
|
38
|
+
/** The mower's network link (DP 134). */
|
|
39
|
+
export type MowerNetwork = (typeof MOWER_NETWORKS)[number];
|
|
40
|
+
/**
|
|
41
|
+
* Every `mower` read, declared once.
|
|
42
|
+
*
|
|
43
|
+
* All read-only. Several of these data points are `rw` in the schema, but no write has been captured
|
|
44
|
+
* against a mower, and the vendor app drives the mower through named pass-through commands rather than
|
|
45
|
+
* by publishing these DPs, so no setter is installed.
|
|
46
|
+
*
|
|
47
|
+
* Exported but NOT published: each entry states its wire id, which the reference site does not carry.
|
|
48
|
+
* @internal
|
|
49
|
+
*/
|
|
50
|
+
export declare const MOWER_MEMBERS: {
|
|
51
|
+
/** Charge percentage (DP 8, `battery_percentage`). */
|
|
52
|
+
readonly battery: {
|
|
53
|
+
readonly param: 8;
|
|
54
|
+
readonly type: "number";
|
|
55
|
+
readonly unit: "%";
|
|
56
|
+
readonly kind: "percent";
|
|
57
|
+
readonly provenance: "mega";
|
|
58
|
+
readonly description: "Battery level 0-100 (DP 8, battery_percentage). Read-only.";
|
|
59
|
+
};
|
|
60
|
+
/** Speaker volume (DP 26, `volume_set`). */
|
|
61
|
+
readonly volume: {
|
|
62
|
+
readonly param: 26;
|
|
63
|
+
readonly type: "number";
|
|
64
|
+
readonly unit: "%";
|
|
65
|
+
readonly kind: "percent";
|
|
66
|
+
readonly provenance: "mega";
|
|
67
|
+
readonly description: "Speaker volume 0-100 (DP 26, volume_set). Read-only.";
|
|
68
|
+
};
|
|
69
|
+
/** Whether the child lock is on (DP 47, `child_lock`). */
|
|
70
|
+
readonly childLock: {
|
|
71
|
+
readonly param: 47;
|
|
72
|
+
readonly type: "bool";
|
|
73
|
+
readonly kind: "boolean";
|
|
74
|
+
readonly provenance: "mega";
|
|
75
|
+
readonly description: "Child lock on (DP 47, child_lock). Read-only.";
|
|
76
|
+
};
|
|
77
|
+
/** Whether the mower returns to its station when it detects rain (DP 101, `rain_auto_return`). */
|
|
78
|
+
readonly rainAutoReturn: {
|
|
79
|
+
readonly param: 101;
|
|
80
|
+
readonly type: "bool";
|
|
81
|
+
readonly kind: "boolean";
|
|
82
|
+
readonly provenance: "mega";
|
|
83
|
+
readonly description: "Return to the station when rain is detected (DP 101, rain_auto_return). Read-only.";
|
|
84
|
+
};
|
|
85
|
+
/** Wi-Fi signal strength as a percentage (DP 109, `wifi_signal_strength`), not a dBm reading. */
|
|
86
|
+
readonly wifiSignal: {
|
|
87
|
+
readonly param: 109;
|
|
88
|
+
readonly type: "number";
|
|
89
|
+
readonly unit: "%";
|
|
90
|
+
readonly kind: "percent";
|
|
91
|
+
readonly provenance: "mega";
|
|
92
|
+
readonly description: "Wi-Fi signal strength 0-100 % (DP 109, wifi_signal_strength). Read-only.";
|
|
93
|
+
};
|
|
94
|
+
/** Cutting height in millimetres (DP 110, `mow_height`), 25-75. */
|
|
95
|
+
readonly cutHeight: {
|
|
96
|
+
readonly param: 110;
|
|
97
|
+
readonly type: "number";
|
|
98
|
+
readonly unit: "mm";
|
|
99
|
+
readonly kind: "millimetres";
|
|
100
|
+
readonly min: 25;
|
|
101
|
+
readonly max: 75;
|
|
102
|
+
readonly provenance: "mega";
|
|
103
|
+
readonly description: "Cutting height 25-75 mm (DP 110, mow_height). Read-only.";
|
|
104
|
+
};
|
|
105
|
+
/** Progress of saving the map (DP 118, `save_map_process`). */
|
|
106
|
+
readonly mapSaveProgress: {
|
|
107
|
+
readonly param: 118;
|
|
108
|
+
readonly type: "number";
|
|
109
|
+
readonly unit: "%";
|
|
110
|
+
readonly kind: "percent";
|
|
111
|
+
readonly provenance: "mega";
|
|
112
|
+
readonly description: "Map-save progress 0-100 % (DP 118, save_map_process). Read-only.";
|
|
113
|
+
};
|
|
114
|
+
/** Total base-station use in minutes (DP 125, `base_station_used_time`). */
|
|
115
|
+
readonly stationUsedTime: {
|
|
116
|
+
readonly param: 125;
|
|
117
|
+
readonly type: "number";
|
|
118
|
+
readonly unit: "min";
|
|
119
|
+
readonly kind: "minutes";
|
|
120
|
+
readonly provenance: "mega";
|
|
121
|
+
readonly description: "Base-station use in minutes (DP 125, base_station_used_time). Read-only.";
|
|
122
|
+
};
|
|
123
|
+
/** Total cutting-blade use in minutes (DP 126, `mow_blade_used_time`). */
|
|
124
|
+
readonly bladeUsedTime: {
|
|
125
|
+
readonly param: 126;
|
|
126
|
+
readonly type: "number";
|
|
127
|
+
readonly unit: "min";
|
|
128
|
+
readonly kind: "minutes";
|
|
129
|
+
readonly provenance: "mega";
|
|
130
|
+
readonly description: "Cutting-blade use in minutes (DP 126, mow_blade_used_time). Read-only.";
|
|
131
|
+
};
|
|
132
|
+
/** Whether edge trimming is on (DP 128, `edge_trim`). */
|
|
133
|
+
readonly edgeTrim: {
|
|
134
|
+
readonly param: 128;
|
|
135
|
+
readonly type: "bool";
|
|
136
|
+
readonly kind: "boolean";
|
|
137
|
+
readonly provenance: "mega";
|
|
138
|
+
readonly description: "Edge trimming on (DP 128, edge_trim). Read-only.";
|
|
139
|
+
};
|
|
140
|
+
/** Whether a fixed mowing angle is in use (DP 130, `enable_work_angle`); the angle is `workAngle`. */
|
|
141
|
+
readonly workAngleEnabled: {
|
|
142
|
+
readonly param: 130;
|
|
143
|
+
readonly type: "bool";
|
|
144
|
+
readonly kind: "boolean";
|
|
145
|
+
readonly provenance: "mega";
|
|
146
|
+
readonly description: "Fixed mowing angle in use (DP 130, enable_work_angle). Read-only.";
|
|
147
|
+
};
|
|
148
|
+
/** The mowing angle in degrees, -90 to 90 (DP 131, `work_angle`). */
|
|
149
|
+
readonly workAngle: {
|
|
150
|
+
readonly param: 131;
|
|
151
|
+
readonly type: "number";
|
|
152
|
+
readonly unit: "°";
|
|
153
|
+
readonly kind: "degrees";
|
|
154
|
+
readonly min: -90;
|
|
155
|
+
readonly max: 90;
|
|
156
|
+
readonly provenance: "mega";
|
|
157
|
+
readonly description: "Mowing angle -90 to 90 degrees (DP 131, work_angle). Read-only.";
|
|
158
|
+
};
|
|
159
|
+
/** Whether smart no-go zones are on (DP 132, `enable_smart_forbid_zone`). */
|
|
160
|
+
readonly smartNoGoZones: {
|
|
161
|
+
readonly param: 132;
|
|
162
|
+
readonly type: "bool";
|
|
163
|
+
readonly kind: "boolean";
|
|
164
|
+
readonly provenance: "mega";
|
|
165
|
+
readonly description: "Smart no-go zones on (DP 132, enable_smart_forbid_zone). Read-only.";
|
|
166
|
+
};
|
|
167
|
+
/** Whether bird's-eye-view capture is on (DP 133, `enable_bird_view_capture`). */
|
|
168
|
+
readonly birdViewCapture: {
|
|
169
|
+
readonly param: 133;
|
|
170
|
+
readonly type: "bool";
|
|
171
|
+
readonly kind: "boolean";
|
|
172
|
+
readonly provenance: "mega";
|
|
173
|
+
readonly description: "Bird's-eye-view capture on (DP 133, enable_bird_view_capture). Read-only.";
|
|
174
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* The network link in use (DP 134, `net_media_type`). Answers `undefined` for a value outside the
|
|
177
|
+
* schema's range.
|
|
178
|
+
*/
|
|
179
|
+
readonly network: {
|
|
180
|
+
readonly param: 134;
|
|
181
|
+
readonly type: "string";
|
|
182
|
+
readonly provenance: "mega";
|
|
183
|
+
readonly decode: (raw: unknown) => MowerNetwork | undefined;
|
|
184
|
+
readonly decodedKind: "enum";
|
|
185
|
+
readonly decodedValues: readonly ["None", "Wifi", "Cellular"];
|
|
186
|
+
readonly description: "Network link: None, Wifi or Cellular (DP 134, net_media_type). Read-only.";
|
|
187
|
+
};
|
|
188
|
+
/** Whether the cellular link is enabled (DP 137, `enable_cellular`). */
|
|
189
|
+
readonly cellularEnabled: {
|
|
190
|
+
readonly param: 137;
|
|
191
|
+
readonly type: "bool";
|
|
192
|
+
readonly kind: "boolean";
|
|
193
|
+
readonly provenance: "mega";
|
|
194
|
+
readonly description: "Cellular link enabled (DP 137, enable_cellular). Read-only.";
|
|
195
|
+
};
|
|
196
|
+
/** Edge-following distance in millimetres (DP 139, `follow_edge_distance`), signed. */
|
|
197
|
+
readonly edgeDistance: {
|
|
198
|
+
readonly param: 139;
|
|
199
|
+
readonly type: "number";
|
|
200
|
+
readonly unit: "mm";
|
|
201
|
+
readonly kind: "millimetres";
|
|
202
|
+
readonly min: -10000;
|
|
203
|
+
readonly max: 10000;
|
|
204
|
+
readonly provenance: "mega";
|
|
205
|
+
readonly description: "Edge-following distance in mm, signed (DP 139, follow_edge_distance). Read-only.";
|
|
206
|
+
};
|
|
207
|
+
/** Whether GPS anti-theft is on (DP 140, `gps_location_check`). */
|
|
208
|
+
readonly gpsAntiTheft: {
|
|
209
|
+
readonly param: 140;
|
|
210
|
+
readonly type: "bool";
|
|
211
|
+
readonly kind: "boolean";
|
|
212
|
+
readonly provenance: "mega";
|
|
213
|
+
readonly description: "GPS anti-theft on (DP 140, gps_location_check). Read-only.";
|
|
214
|
+
};
|
|
215
|
+
/** Whether sparse-lawn optimisation is on (DP 141, `sparse_lawn_optimization`). */
|
|
216
|
+
readonly sparseLawnOptimization: {
|
|
217
|
+
readonly param: 141;
|
|
218
|
+
readonly type: "bool";
|
|
219
|
+
readonly kind: "boolean";
|
|
220
|
+
readonly provenance: "mega";
|
|
221
|
+
readonly description: "Sparse-lawn optimisation on (DP 141, sparse_lawn_optimization). Read-only.";
|
|
222
|
+
};
|
|
223
|
+
};
|
|
224
|
+
/**
|
|
225
|
+
* Bound mower reads — the object returned by `dev.mower()`. Each getter is present only once the
|
|
226
|
+
* mower has reported its data point.
|
|
227
|
+
*/
|
|
228
|
+
export type MowerActions = Surface<typeof MOWER_MEMBERS>;
|
|
229
|
+
/** `mower` — robot-mower state from its Tuya data points. */
|
|
230
|
+
export declare const MOWER: CapabilityModule;
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* `types.ts`.
|
|
10
10
|
* - CLEAN_PARAMS — RoboVac Tuya DP space (ids 1 and above), names from the cloud
|
|
11
11
|
* `get_product_data_point` data_point_list, hence provenance `mega`.
|
|
12
|
+
* - MOWER_PARAMS — robot-mower Tuya DP space, names from the mower's Tuya product schema.
|
|
12
13
|
*
|
|
13
14
|
* Which models reported an id, and the capture that named it, are in the commit that adds the entry.
|
|
14
15
|
*/
|
|
@@ -50,3 +51,8 @@ export declare const CLEAN_PARAMS: Record<number, ParamDef>;
|
|
|
50
51
|
* display settings screen, one control at a time, params diffed after each.
|
|
51
52
|
*/
|
|
52
53
|
export declare const DISPLAY_PARAMS: Record<number, ParamDef>;
|
|
54
|
+
/**
|
|
55
|
+
* Robot-mower Tuya DP space — names from the E15's Tuya product schema (`schemaInfo.schema`), each id
|
|
56
|
+
* also reported by a live E15. Only the scalar data points the `mower` capability reads are listed.
|
|
57
|
+
*/
|
|
58
|
+
export declare const MOWER_PARAMS: Record<number, ParamDef>;
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
import type { Codec } from "./types.js";
|
|
15
15
|
import { type ParamDef } from "./param-dictionary.js";
|
|
16
16
|
/** The param id spaces this SDK models. */
|
|
17
|
-
export type ParamNamespace = "security" | "clean" | "life" | "print" | "display";
|
|
17
|
+
export type ParamNamespace = "security" | "clean" | "mower" | "life" | "print" | "display";
|
|
18
18
|
/** Look up a param def in the given namespace. */
|
|
19
19
|
export declare function paramDef(ns: ParamNamespace, paramType: number): ParamDef | undefined;
|
|
20
20
|
/** The param namespace a device's ids live in, from its codec, via the module-local `NAMESPACE_BY_CODEC` table. */
|
package/dist/model/types.d.ts
CHANGED
|
@@ -39,7 +39,7 @@ export type Codec = "station" | "camera" | "sensor" | "lock" | "keypad" | "vacuu
|
|
|
39
39
|
* it maps to a {@link CapabilityModule} that owns its property schema. Extend this union as
|
|
40
40
|
* new capabilities are modelled — adding one never requires a subclass.
|
|
41
41
|
*/
|
|
42
|
-
export type Capability = "video" | "snapshot" | "motion" | "person_detection" | "battery" | "light" | "ptz" | "doorbell" | "contact" | "leak" | "smoke" | "co" | "siren" | "lock" | "keypad" | "arming" | "storage" | "rtsp" | "camera" | "audio" | "vacuum_clean" | "vacuum_dock" | "suction" | "locate" | "smart_light" | "display" | "info";
|
|
42
|
+
export type Capability = "video" | "snapshot" | "motion" | "person_detection" | "battery" | "light" | "ptz" | "doorbell" | "contact" | "leak" | "smoke" | "co" | "siren" | "lock" | "keypad" | "arming" | "storage" | "rtsp" | "camera" | "audio" | "vacuum_clean" | "vacuum_dock" | "suction" | "locate" | "mower" | "smart_light" | "display" | "info";
|
|
43
43
|
/** Value type of a property. */
|
|
44
44
|
export type PropertyValueType = "bool" | "number" | "string" | "enum";
|
|
45
45
|
/**
|
|
@@ -52,11 +52,12 @@ export type PropertyValueType = "bool" | "number" | "string" | "enum";
|
|
|
52
52
|
* one as the other is wrong in a way no type check catches.
|
|
53
53
|
*
|
|
54
54
|
* - `boolean` — an on/off state (always paired with `type: "bool"`).
|
|
55
|
-
* - `percent` / `celsius` / `dbm` / `seconds` / `hours` / `
|
|
56
|
-
* in the unit the device reports it in; each pairs with the
|
|
57
|
-
* never converted on the way out — a converted reading is an invented
|
|
58
|
-
* are separate kinds for exactly that reason: a robot reports
|
|
59
|
-
*
|
|
55
|
+
* - `percent` / `celsius` / `dbm` / `seconds` / `hours` / `minutes` / `millimetres` / `megabytes` /
|
|
56
|
+
* `degrees` — a measured quantity in the unit the device reports it in; each pairs with the
|
|
57
|
+
* matching `unit`. Values are never converted on the way out — a converted reading is an invented
|
|
58
|
+
* one. `seconds`, `minutes` and `hours` are separate kinds for exactly that reason: a robot reports
|
|
59
|
+
* a run in seconds, a mower its blade wear in minutes and a vacuum's consumable wear in hours, and
|
|
60
|
+
* normalising one into another would publish a number the device never sent.
|
|
60
61
|
* - `scalar` — a plain number in no unit at all: a step on a ladder, a mode index, a raw level, a
|
|
61
62
|
* segment count. Ordered and comparable, but its range and direction are the device's, so nothing
|
|
62
63
|
* but the device says what a given value means.
|
|
@@ -83,7 +84,7 @@ export type PropertyValueType = "bool" | "number" | "string" | "enum";
|
|
|
83
84
|
* decodes them and are exported beside that decoder; unlike an enum's options they are not carried
|
|
84
85
|
* here, which is a gap this vocabulary does not close on its own.
|
|
85
86
|
*/
|
|
86
|
-
export declare const KNOWN_VALUE_KINDS: readonly ["boolean", "percent", "celsius", "dbm", "seconds", "hours", "megabytes", "degrees", "scalar", "bitfield", "enum", "identifier", "timestamp", "text"];
|
|
87
|
+
export declare const KNOWN_VALUE_KINDS: readonly ["boolean", "percent", "celsius", "dbm", "seconds", "hours", "minutes", "millimetres", "megabytes", "degrees", "scalar", "bitfield", "enum", "identifier", "timestamp", "text"];
|
|
87
88
|
/** One of the kinds this version models — the closed half of {@link ValueKind}. */
|
|
88
89
|
export type KnownValueKind = (typeof KNOWN_VALUE_KINDS)[number];
|
|
89
90
|
/**
|
|
@@ -106,7 +107,8 @@ export declare function isKnownValueKind(kind: ValueKind): kind is KnownValueKin
|
|
|
106
107
|
/**
|
|
107
108
|
* How much a param's name and meaning can be trusted, most-trusted first. This is the one definition;
|
|
108
109
|
* the param dictionary and every `provenance` field use it.
|
|
109
|
-
* - `mega` — the vendor's cloud names it: its data-point catalog (`get_product_data_point`),
|
|
110
|
+
* - `mega` — the vendor's cloud names it: its data-point catalog (`get_product_data_point`), the
|
|
111
|
+
* Tuya product schema of an `eufy_home_tuya` device (`thing.m.device.ref.info.list`), or a
|
|
110
112
|
* reported value that matches what the cloud record already says (a model name or code).
|
|
111
113
|
* - `verified` — confirmed on a real device by this project: our own capture or observation, or
|
|
112
114
|
* identified by someone who has the hardware.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mega-yfue/eufy-sdk",
|
|
3
|
-
"version": "0.5.0-beta.
|
|
3
|
+
"version": "0.5.0-beta.55",
|
|
4
4
|
"description": "One typed TypeScript client for the Anker eufy v6 cloud — capability-driven devices, realtime events over P2P/MQTT/push, and live media",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "mega-yfue",
|