node-switchbot 2.4.0 → 2.5.0-beta.0

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.
Files changed (180) hide show
  1. package/.github/npm-version-script.cjs +81 -0
  2. package/CHANGELOG.md +1 -1
  3. package/dist/advertising.d.ts +14 -148
  4. package/dist/advertising.d.ts.map +1 -1
  5. package/dist/advertising.js +36 -92
  6. package/dist/advertising.js.map +1 -1
  7. package/dist/device/woblindtilt.d.ts +98 -13
  8. package/dist/device/woblindtilt.d.ts.map +1 -1
  9. package/dist/device/woblindtilt.js +192 -86
  10. package/dist/device/woblindtilt.js.map +1 -1
  11. package/dist/device/woblindtilt.test.d.ts +2 -0
  12. package/dist/device/woblindtilt.test.d.ts.map +1 -0
  13. package/dist/device/woblindtilt.test.js +26 -0
  14. package/dist/device/woblindtilt.test.js.map +1 -0
  15. package/dist/device/wobulb.d.ts +17 -34
  16. package/dist/device/wobulb.d.ts.map +1 -1
  17. package/dist/device/wobulb.js +53 -61
  18. package/dist/device/wobulb.js.map +1 -1
  19. package/dist/device/wobulb.test.d.ts +2 -0
  20. package/dist/device/wobulb.test.d.ts.map +1 -0
  21. package/dist/device/wobulb.test.js +52 -0
  22. package/dist/device/wobulb.test.js.map +1 -0
  23. package/dist/device/woceilinglight.d.ts +21 -51
  24. package/dist/device/woceilinglight.d.ts.map +1 -1
  25. package/dist/device/woceilinglight.js +53 -64
  26. package/dist/device/woceilinglight.js.map +1 -1
  27. package/dist/device/woceilinglight.test.d.ts +2 -0
  28. package/dist/device/woceilinglight.test.d.ts.map +1 -0
  29. package/dist/device/woceilinglight.test.js +63 -0
  30. package/dist/device/woceilinglight.test.js.map +1 -0
  31. package/dist/device/wocontact.d.ts +1 -14
  32. package/dist/device/wocontact.d.ts.map +1 -1
  33. package/dist/device/wocontact.js +13 -13
  34. package/dist/device/wocontact.js.map +1 -1
  35. package/dist/device/wocontact.test.d.ts +2 -0
  36. package/dist/device/wocontact.test.d.ts.map +1 -0
  37. package/dist/device/wocontact.test.js +34 -0
  38. package/dist/device/wocontact.test.js.map +1 -0
  39. package/dist/device/wocurtain.d.ts +5 -16
  40. package/dist/device/wocurtain.d.ts.map +1 -1
  41. package/dist/device/wocurtain.js +58 -47
  42. package/dist/device/wocurtain.js.map +1 -1
  43. package/dist/device/wocurtain.test.d.ts +2 -0
  44. package/dist/device/wocurtain.test.d.ts.map +1 -0
  45. package/dist/device/wocurtain.test.js +33 -0
  46. package/dist/device/wocurtain.test.js.map +1 -0
  47. package/dist/device/wohand.d.ts +2 -10
  48. package/dist/device/wohand.d.ts.map +1 -1
  49. package/dist/device/wohand.js +31 -33
  50. package/dist/device/wohand.js.map +1 -1
  51. package/dist/device/wohand.test.d.ts +2 -0
  52. package/dist/device/wohand.test.d.ts.map +1 -0
  53. package/dist/device/wohand.test.js +62 -0
  54. package/dist/device/wohand.test.js.map +1 -0
  55. package/dist/device/wohand2.test.d.ts +2 -0
  56. package/dist/device/wohand2.test.d.ts.map +1 -0
  57. package/dist/device/wohand2.test.js +50 -0
  58. package/dist/device/wohand2.test.js.map +1 -0
  59. package/dist/device/wohub2.d.ts +1 -19
  60. package/dist/device/wohub2.d.ts.map +1 -1
  61. package/dist/device/wohub2.js +6 -2
  62. package/dist/device/wohub2.js.map +1 -1
  63. package/dist/device/wohumi.d.ts +2 -11
  64. package/dist/device/wohumi.d.ts.map +1 -1
  65. package/dist/device/wohumi.js +31 -33
  66. package/dist/device/wohumi.js.map +1 -1
  67. package/dist/device/wohumi.test.d.ts +2 -0
  68. package/dist/device/wohumi.test.d.ts.map +1 -0
  69. package/dist/device/wohumi.test.js +61 -0
  70. package/dist/device/wohumi.test.js.map +1 -0
  71. package/dist/device/woiosensorth.d.ts +1 -19
  72. package/dist/device/woiosensorth.d.ts.map +1 -1
  73. package/dist/device/woiosensorth.js +14 -10
  74. package/dist/device/woiosensorth.js.map +1 -1
  75. package/dist/device/woiosensorth.test.d.ts +2 -0
  76. package/dist/device/woiosensorth.test.d.ts.map +1 -0
  77. package/dist/device/woiosensorth.test.js +39 -0
  78. package/dist/device/woiosensorth.test.js.map +1 -0
  79. package/dist/device/woplugmini.d.ts +12 -38
  80. package/dist/device/woplugmini.d.ts.map +1 -1
  81. package/dist/device/woplugmini.js +35 -40
  82. package/dist/device/woplugmini.js.map +1 -1
  83. package/dist/device/woplugmini.test.d.ts +2 -0
  84. package/dist/device/woplugmini.test.d.ts.map +1 -0
  85. package/dist/device/woplugmini.test.js +91 -0
  86. package/dist/device/woplugmini.test.js.map +1 -0
  87. package/dist/device/wopresence.d.ts +2 -14
  88. package/dist/device/wopresence.d.ts.map +1 -1
  89. package/dist/device/wopresence.js +11 -7
  90. package/dist/device/wopresence.js.map +1 -1
  91. package/dist/device/wopresence.test.d.ts +2 -0
  92. package/dist/device/wopresence.test.d.ts.map +1 -0
  93. package/dist/device/wopresence.test.js +42 -0
  94. package/dist/device/wopresence.test.js.map +1 -0
  95. package/dist/device/wosensorth.d.ts +3 -37
  96. package/dist/device/wosensorth.d.ts.map +1 -1
  97. package/dist/device/wosensorth.js +24 -20
  98. package/dist/device/wosensorth.js.map +1 -1
  99. package/dist/device/wosensorth.test.d.ts +2 -0
  100. package/dist/device/wosensorth.test.d.ts.map +1 -0
  101. package/dist/device/wosensorth.test.js +59 -0
  102. package/dist/device/wosensorth.test.js.map +1 -0
  103. package/dist/device/wosmartlock.d.ts +19 -33
  104. package/dist/device/wosmartlock.d.ts.map +1 -1
  105. package/dist/device/wosmartlock.js +104 -83
  106. package/dist/device/wosmartlock.js.map +1 -1
  107. package/dist/device/wosmartlock.test.d.ts +2 -0
  108. package/dist/device/wosmartlock.test.d.ts.map +1 -0
  109. package/dist/device/wosmartlock.test.js +84 -0
  110. package/dist/device/wosmartlock.test.js.map +1 -0
  111. package/dist/device/wosmartlockpro.d.ts +13 -27
  112. package/dist/device/wosmartlockpro.d.ts.map +1 -1
  113. package/dist/device/wosmartlockpro.js +90 -70
  114. package/dist/device/wosmartlockpro.js.map +1 -1
  115. package/dist/device/wosmartlockpro.test.d.ts +2 -0
  116. package/dist/device/wosmartlockpro.test.d.ts.map +1 -0
  117. package/dist/device/wosmartlockpro.test.js +124 -0
  118. package/dist/device/wosmartlockpro.test.js.map +1 -0
  119. package/dist/device/wostrip.d.ts +18 -32
  120. package/dist/device/wostrip.d.ts.map +1 -1
  121. package/dist/device/wostrip.js +58 -70
  122. package/dist/device/wostrip.js.map +1 -1
  123. package/dist/device/wostrip.test.d.ts +2 -0
  124. package/dist/device/wostrip.test.d.ts.map +1 -0
  125. package/dist/device/wostrip.test.js +115 -0
  126. package/dist/device/wostrip.test.js.map +1 -0
  127. package/dist/device.d.ts +237 -39
  128. package/dist/device.d.ts.map +1 -1
  129. package/dist/device.js +478 -366
  130. package/dist/device.js.map +1 -1
  131. package/dist/index.d.ts +1 -1
  132. package/dist/index.d.ts.map +1 -1
  133. package/dist/index.js +1 -1
  134. package/dist/index.js.map +1 -1
  135. package/dist/parameter-checker.d.ts.map +1 -1
  136. package/dist/parameter-checker.js.map +1 -1
  137. package/dist/settings.d.ts +8 -0
  138. package/dist/settings.d.ts.map +1 -0
  139. package/dist/settings.js +12 -0
  140. package/dist/settings.js.map +1 -0
  141. package/dist/switchbot.d.ts +30 -10
  142. package/dist/switchbot.d.ts.map +1 -1
  143. package/dist/switchbot.js +39 -86
  144. package/dist/switchbot.js.map +1 -1
  145. package/dist/types/bledevicestatus.d.ts +288 -0
  146. package/dist/types/bledevicestatus.d.ts.map +1 -0
  147. package/dist/types/bledevicestatus.js +2 -0
  148. package/dist/types/bledevicestatus.js.map +1 -0
  149. package/dist/types/devicelist.d.ts +89 -0
  150. package/dist/types/devicelist.d.ts.map +1 -0
  151. package/dist/types/devicelist.js +6 -0
  152. package/dist/types/devicelist.js.map +1 -0
  153. package/dist/types/deviceresponse.d.ts +13 -0
  154. package/dist/types/deviceresponse.d.ts.map +1 -0
  155. package/dist/types/deviceresponse.js +2 -0
  156. package/dist/types/deviceresponse.js.map +1 -0
  157. package/dist/types/devicestatus.d.ts +149 -0
  158. package/dist/types/devicestatus.d.ts.map +1 -0
  159. package/dist/types/devicestatus.js +3 -0
  160. package/dist/types/devicestatus.js.map +1 -0
  161. package/dist/types/devicewebhookstatus.d.ts +156 -0
  162. package/dist/types/devicewebhookstatus.d.ts.map +1 -0
  163. package/dist/types/devicewebhookstatus.js +2 -0
  164. package/dist/types/devicewebhookstatus.js.map +1 -0
  165. package/dist/types/irdevicelist.d.ts +10 -0
  166. package/dist/types/irdevicelist.d.ts.map +1 -0
  167. package/dist/types/irdevicelist.js +2 -0
  168. package/dist/types/irdevicelist.js.map +1 -0
  169. package/dist/types/pushbody.d.ts +6 -0
  170. package/dist/types/pushbody.d.ts.map +1 -0
  171. package/dist/types/pushbody.js +2 -0
  172. package/dist/types/pushbody.js.map +1 -0
  173. package/dist/{types.d.ts → types/types.d.ts} +9 -0
  174. package/dist/types/types.d.ts.map +1 -0
  175. package/dist/types/types.js.map +1 -0
  176. package/jest.config.js +3 -0
  177. package/package.json +22 -14
  178. package/dist/types.d.ts.map +0 -1
  179. package/dist/types.js.map +0 -1
  180. /package/dist/{types.js → types/types.js} +0 -0
@@ -0,0 +1,81 @@
1
+ #!/bin/env node
2
+
3
+ /**
4
+ * This scripts queries the npm registry to pull out the latest version for a given tag.
5
+ */
6
+
7
+ const fs = require("fs");
8
+ const semver = require("semver");
9
+ const child_process = require("child_process");
10
+ const assert = require("assert");
11
+
12
+ const BRANCH_VERSION_PATTERN = /^([A-Za-z]*)-(\d+.\d+.\d+)$/
13
+
14
+ // Load the contents of the package.json file
15
+ const packageJSON = JSON.parse(fs.readFileSync("package.json", "utf8"));
16
+
17
+ let refArgument = process.argv[2];
18
+ let tagArgument = process.argv[3] || "latest";
19
+
20
+ if (refArgument == null) {
21
+ console.error("ref argument is missing");
22
+ console.error("Usage: npm-version-script.cjs <ref> [tag]");
23
+ process.exit(1);
24
+ }
25
+
26
+ /**
27
+ * Queries the NPM registry for the latest version for the provided tag.
28
+ * @param tag The tag to query for.
29
+ * @returns {string} Returns the version.
30
+ */
31
+ function getTagVersionFromNpm(tag) {
32
+ try {
33
+ return child_process.execSync(`npm info ${packageJSON.name} version --tag="${tag}"`).toString("utf8").trim();
34
+ } catch (e) {
35
+ throw e;
36
+ }
37
+ }
38
+
39
+ function desiredTargetVersion(ref) {
40
+ // ref is a GitHub action ref string
41
+ if (ref.startsWith("refs/pull/")) {
42
+ throw Error("The version script was executed inside a PR!");
43
+ }
44
+
45
+ assert(ref.startsWith("refs/heads/"))
46
+ let branchName = ref.slice("refs/heads/".length);
47
+
48
+ let results = branchName.match(BRANCH_VERSION_PATTERN);
49
+ if (results != null) {
50
+ if (results[1] !== tagArgument) {
51
+ console.warn(`The base branch name (${results[1]}) differs from the tag name ${tagArgument}`);
52
+ }
53
+
54
+ return results[2];
55
+ }
56
+
57
+ // legacy mode were we use the `betaVersion` property in the package.json
58
+ if (branchName === "beta" && packageJSON.betaVersion) {
59
+ return packageJSON.betaVersion
60
+ }
61
+
62
+ throw new Error("Malformed branch name for ref: " + ref + ". Can't derive the base version. Use a branch name like: beta-x.x.x!");
63
+ }
64
+
65
+ // derive the base version from the branch ref
66
+ const baseVersion = desiredTargetVersion(refArgument);
67
+
68
+ // query the npm registry for the latest version of the provided tag name
69
+ const latestReleasedVersion = getTagVersionFromNpm(tagArgument); // e.g. 0.7.0-beta.12
70
+ const latestReleaseBase = semver.inc(latestReleasedVersion, "patch"); // will produce 0.7.0 (removing the preid, needed for the equality check below)
71
+
72
+ let publishTag;
73
+ if (semver.eq(baseVersion, latestReleaseBase)) { // check if we are releasing another version for the latest beta
74
+ publishTag = latestReleasedVersion; // set the current latest beta to be incremented
75
+ } else {
76
+ publishTag = baseVersion; // start of with a new beta version
77
+ }
78
+
79
+ // save the package.json
80
+ packageJSON.version = publishTag;
81
+ fs.writeFileSync("package.json", JSON.stringify(packageJSON, null, 2));
package/CHANGELOG.md CHANGED
@@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. This projec
5
5
  ## [2.4.0](https://github.com/OpenWonderLabs/node-switchbot/releases/tag/v2.4.0) (2024-09-13)
6
6
 
7
7
  ### What's Changed
8
- - Added `celcius` and `fahrenheit` as based values sent for Sensors
8
+ - Added `celsius` and `fahrenheit` as based values sent for Sensors
9
9
  - Housekeeping and update dependencies
10
10
 
11
11
  **Full Changelog**: https://github.com/OpenWonderLabs/node-switchbot/compare/v2.3.0...v2.4.0
@@ -1,161 +1,27 @@
1
- import type { Peripheral } from '@stoprocent/noble';
2
- import { SwitchBotBLEModel } from './types.js';
1
+ import type * as Noble from '@stoprocent/noble';
2
+ import { Buffer } from 'node:buffer';
3
3
  export type Ad = {
4
4
  id: string;
5
5
  address: string;
6
6
  rssi: number;
7
7
  serviceData: Record<string, unknown>;
8
8
  } | null;
9
+ export interface AdvertisementData {
10
+ serviceData: Buffer | null;
11
+ manufacturerData: Buffer | null;
12
+ }
9
13
  export declare class Advertising {
10
14
  constructor();
11
15
  /**
12
- * Parses the advertisement data of a peripheral device.
16
+ * Parses the advertisement data coming from SwitchBot device.
17
+ *
18
+ * This function processes advertising packets received from SwitchBot devices
19
+ * and extracts relevant information based on the device type.
13
20
  *
14
- * @param peripheral - The peripheral device.
15
- * @param onlog - The logging function.
16
- * @returns The parsed data of the peripheral device.
21
+ * @param peripheral - The peripheral device object from noble.
22
+ * @param onlog - A logging function for debugging purposes.
23
+ * @returns An object containing parsed data specific to the SwitchBot device type, or `null` if the device is not recognized.
17
24
  */
18
- static parse(peripheral: Peripheral, onlog?: (message: string) => void): {
19
- id: string;
20
- address: string;
21
- rssi: number;
22
- serviceData: {
23
- model: SwitchBotBLEModel;
24
- modelName: import("./types.js").SwitchBotBLEModelName;
25
- modelFriendlyName: import("./types.js").SwitchBotBLEModelFriendlyName;
26
- mode: boolean;
27
- state: boolean;
28
- battery: number;
29
- } | {
30
- model: string;
31
- modelName: import("./types.js").SwitchBotBLEModelName;
32
- modelFriendlyName: import("./types.js").SwitchBotBLEModelFriendlyName;
33
- calibration: boolean;
34
- battery: number;
35
- inMotion: boolean;
36
- position: number;
37
- lightLevel: number;
38
- deviceChain: number;
39
- } | {
40
- model: SwitchBotBLEModel;
41
- modelName: import("./types.js").SwitchBotBLEModelName;
42
- modelFriendlyName: import("./types.js").SwitchBotBLEModelFriendlyName;
43
- onState: boolean;
44
- autoMode: boolean;
45
- percentage: number;
46
- humidity: number;
47
- } | {
48
- model: SwitchBotBLEModel;
49
- modelName: import("./types.js").SwitchBotBLEModelName;
50
- modelFriendlyName: import("./types.js").SwitchBotBLEModelFriendlyName;
51
- temperature: {
52
- c: number;
53
- f: number;
54
- };
55
- celsius: number;
56
- fahrenheit: number;
57
- fahrenheit_mode: boolean;
58
- humidity: number;
59
- battery: number;
60
- } | {
61
- model: SwitchBotBLEModel;
62
- modelName: import("./types.js").SwitchBotBLEModelName;
63
- modelfriendlyName: import("./types.js").SwitchBotBLEModelFriendlyName;
64
- temperature: {
65
- c: number;
66
- f: number;
67
- };
68
- celsius: number;
69
- fahrenheit: number;
70
- fahrenheit_mode: boolean;
71
- humidity: number;
72
- battery: number;
73
- } | {
74
- model: SwitchBotBLEModel;
75
- modelName: import("./types.js").SwitchBotBLEModelName;
76
- modelFriendlyName: import("./types.js").SwitchBotBLEModelFriendlyName;
77
- temperature: {
78
- c: number;
79
- f: number;
80
- };
81
- celsius: number;
82
- fahrenheit: number;
83
- fahrenheit_mode: boolean;
84
- humidity: number;
85
- lightLevel: number;
86
- } | {
87
- model: SwitchBotBLEModel;
88
- modelName: import("./types.js").SwitchBotBLEModelName;
89
- modelFriendlyName: import("./types.js").SwitchBotBLEModelFriendlyName;
90
- tested: boolean;
91
- movement: boolean;
92
- battery: number;
93
- led: number;
94
- iot: number;
95
- sense_distance: number;
96
- lightLevel: string;
97
- is_light: boolean;
98
- } | {
99
- model: SwitchBotBLEModel;
100
- modelName: import("./types.js").SwitchBotBLEModelName;
101
- modelFriendlyName: import("./types.js").SwitchBotBLEModelFriendlyName;
102
- movement: boolean;
103
- tested: number;
104
- battery: number;
105
- contact_open: boolean;
106
- contact_timeout: boolean;
107
- lightLevel: string;
108
- button_count: number;
109
- doorState: string;
110
- } | {
111
- model: SwitchBotBLEModel;
112
- modelName: import("./types.js").SwitchBotBLEModelName;
113
- modelFriendlyName: import("./types.js").SwitchBotBLEModelFriendlyName;
114
- state: boolean;
115
- brightness: number;
116
- red: number;
117
- green: number;
118
- blue: number;
119
- delay: number;
120
- preset: number;
121
- color_mode: number;
122
- speed: number;
123
- loop_index: number;
124
- } | {
125
- model: SwitchBotBLEModel;
126
- modelName: import("./types.js").SwitchBotBLEModelName;
127
- modelFriendlyName: import("./types.js").SwitchBotBLEModelFriendlyName;
128
- state: string | null;
129
- delay: boolean;
130
- timer: boolean;
131
- syncUtcTime: boolean;
132
- wifiRssi: number;
133
- overload: boolean;
134
- currentPower: number;
135
- } | {
136
- model: SwitchBotBLEModel;
137
- modelName: import("./types.js").SwitchBotBLEModelName;
138
- modelFriendlyName: import("./types.js").SwitchBotBLEModelFriendlyName;
139
- battery: number;
140
- calibration: boolean;
141
- status: string;
142
- update_from_secondary_lock: boolean;
143
- door_open: boolean;
144
- double_lock_mode: boolean;
145
- unclosed_alarm: boolean;
146
- unlocked_alarm: boolean;
147
- auto_lock_paused: boolean;
148
- night_latch: boolean;
149
- } | {
150
- model: SwitchBotBLEModel;
151
- modelName: import("./types.js").SwitchBotBLEModelName;
152
- modelFriendlyName: import("./types.js").SwitchBotBLEModelFriendlyName;
153
- calibration: boolean;
154
- battery: number;
155
- inMotion: boolean;
156
- tilt: number;
157
- lightLevel: number;
158
- };
159
- } | null;
25
+ static parse(peripheral: Noble.Peripheral, onlog?: (message: string) => void): Promise<Ad>;
160
26
  }
161
27
  //# sourceMappingURL=advertising.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"advertising.d.ts","sourceRoot":"","sources":["../src/advertising.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAmBnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,MAAM,EAAE,GAAG;IACf,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC,GAAG,IAAI,CAAA;AAER,qBAAa,WAAW;;IA6DtB;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2HvE"}
1
+ {"version":3,"file":"advertising.d.ts","sourceRoot":"","sources":["../src/advertising.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,KAAK,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAmBpC,MAAM,MAAM,EAAE,GAAG;IACf,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC,GAAG,IAAI,CAAA;AAER,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC;AAED,qBAAa,WAAW;;IAGtB;;;;;;;;;OASG;WACU,KAAK,CAChB,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAAC,EAAE,CAAC;CAiHf"}
@@ -14,146 +14,90 @@ import { WoSensorTH } from './device/wosensorth.js';
14
14
  import { WoSmartLock } from './device/wosmartlock.js';
15
15
  import { WoSmartLockPro } from './device/wosmartlockpro.js';
16
16
  import { WoStrip } from './device/wostrip.js';
17
- import { SwitchBotBLEModel } from './types.js';
17
+ import { SwitchBotBLEModel } from './types/types.js';
18
18
  export class Advertising {
19
19
  constructor() { }
20
- /* ------------------------------------------------------------------
21
- * parse(peripheral)
22
- * - Parse advertising packets coming from switchbot devices
23
- *
24
- * [Arguments]
25
- * - peripheral | Object | Required | A `Peripheral` object of noble
26
- *
27
- * [Return value]
28
- * - An object as follows:
29
- *
30
- * WoHand
31
- * {
32
- * id: 'c12e453e2008',
33
- * address: 'c1:2e:45:3e:20:08',
34
- * rssi: -43,
35
- * serviceData: {
36
- * model: 'H',
37
- * modelName: 'WoHand',
38
- * mode: false,
39
- * state: false,
40
- * battery: 95
41
- * }
42
- * }
43
- *
44
- * WoSensorTH
45
- * {
46
- * id: 'cb4eb903c96d',
47
- * address: 'cb:4e:b9:03:c9:6d',
48
- * rssi: -54,
49
- * serviceData: {
50
- * model: 'T',
51
- * modelName: 'WoSensorTH',
52
- * celsius: 26.2,
53
- * fahrenheit: 79.2,
54
- * fahrenheit_mode: false,
55
- * humidity: 45,
56
- * battery: 100
57
- * }
58
- * }
59
- *
60
- * WoCurtain
61
- * {
62
- * id: 'ec58c5d00111',
63
- * address: 'ec:58:c5:d0:01:11',
64
- * rssi: -39,
65
- * serviceData: {
66
- * model: 'c',
67
- * modelName: 'WoCurtain',
68
- * calibration: true,
69
- * battery: 91,
70
- * position: 1,
71
- * lightLevel: 1
72
- * }
73
- * }
74
- *
75
- * If the specified `Peripheral` does not represent any switchbot
76
- * device, this method will return `null`.
77
- * ---------------------------------------------------------------- */
78
20
  /**
79
- * Parses the advertisement data of a peripheral device.
21
+ * Parses the advertisement data coming from SwitchBot device.
80
22
  *
81
- * @param peripheral - The peripheral device.
82
- * @param onlog - The logging function.
83
- * @returns The parsed data of the peripheral device.
23
+ * This function processes advertising packets received from SwitchBot devices
24
+ * and extracts relevant information based on the device type.
25
+ *
26
+ * @param peripheral - The peripheral device object from noble.
27
+ * @param onlog - A logging function for debugging purposes.
28
+ * @returns An object containing parsed data specific to the SwitchBot device type, or `null` if the device is not recognized.
84
29
  */
85
- static parse(peripheral, onlog) {
30
+ static async parse(peripheral, onlog) {
86
31
  const ad = peripheral.advertisement;
87
32
  if (!ad || !ad.serviceData) {
88
33
  return null;
89
34
  }
90
- const serviceData = ad.serviceData[0] || ad.serviceData;
35
+ const adServiceData = ad.serviceData[0] || ad.serviceData;
91
36
  const manufacturerData = ad.manufacturerData;
92
- const buf = serviceData.data;
93
- const bufIsInvalid = !buf || !Buffer.isBuffer(buf) || buf.length < 3;
94
- const manufacturerDataIsInvalid = !manufacturerData
95
- || !Buffer.isBuffer(manufacturerData)
96
- || manufacturerData.length < 3;
97
- if (bufIsInvalid || manufacturerDataIsInvalid) {
37
+ const serviceData = adServiceData.data;
38
+ function validateBuffer(buffer) {
39
+ return buffer && Buffer.isBuffer(buffer) && buffer.length >= 3;
40
+ }
41
+ if (!validateBuffer(serviceData) || !validateBuffer(manufacturerData)) {
98
42
  return null;
99
43
  }
100
- const model = buf.subarray(0, 1).toString('utf8');
44
+ const model = serviceData.subarray(0, 1).toString('utf8');
101
45
  let sd;
102
46
  switch (model) {
103
47
  case SwitchBotBLEModel.Bot:
104
- sd = WoHand.parseServiceData(buf, onlog);
48
+ sd = await WoHand.parseServiceData(serviceData, onlog);
105
49
  break;
106
50
  case SwitchBotBLEModel.Curtain:
107
51
  case SwitchBotBLEModel.Curtain3:
108
- sd = WoCurtain.parseServiceData(buf, onlog);
52
+ sd = await WoCurtain.parseServiceData(serviceData, manufacturerData, onlog);
109
53
  break;
110
54
  case SwitchBotBLEModel.Humidifier:
111
- sd = WoHumi.parseServiceData(buf, onlog);
55
+ sd = await WoHumi.parseServiceData(serviceData, onlog);
112
56
  break;
113
57
  case SwitchBotBLEModel.Meter:
114
- sd = WoSensorTH.parseServiceData(buf, onlog);
58
+ sd = await WoSensorTH.parseServiceData(serviceData, onlog);
115
59
  break;
116
60
  case SwitchBotBLEModel.MeterPlus:
117
- sd = WoSensorTH.parseServiceData_Plus(buf, onlog);
61
+ sd = await WoSensorTH.parseServiceData_Plus(serviceData, onlog);
118
62
  break;
119
63
  case SwitchBotBLEModel.Hub2:
120
- sd = WoHub2.parseServiceData(manufacturerData, onlog);
64
+ sd = await WoHub2.parseServiceData(manufacturerData, onlog);
121
65
  break;
122
66
  case SwitchBotBLEModel.OutdoorMeter:
123
- sd = WoIOSensorTH.parseServiceData(buf, manufacturerData, onlog);
67
+ sd = await WoIOSensorTH.parseServiceData(serviceData, manufacturerData, onlog);
124
68
  break;
125
69
  case SwitchBotBLEModel.MotionSensor:
126
- sd = WoPresence.parseServiceData(buf, onlog);
70
+ sd = await WoPresence.parseServiceData(serviceData, onlog);
127
71
  break;
128
72
  case SwitchBotBLEModel.ContactSensor:
129
- sd = WoContact.parseServiceData(buf, onlog);
73
+ sd = await WoContact.parseServiceData(serviceData, onlog);
130
74
  break;
131
75
  case SwitchBotBLEModel.ColorBulb:
132
- sd = WoBulb.parseServiceData(manufacturerData, onlog);
76
+ sd = await WoBulb.parseServiceData(serviceData, manufacturerData, onlog);
133
77
  break;
134
78
  case SwitchBotBLEModel.CeilingLight:
135
- sd = WoCeilingLight.parseServiceData(manufacturerData, onlog);
79
+ sd = await WoCeilingLight.parseServiceData(manufacturerData, onlog);
136
80
  break;
137
81
  case SwitchBotBLEModel.CeilingLightPro:
138
- sd = WoCeilingLight.parseServiceData_Pro(manufacturerData, onlog);
82
+ sd = await WoCeilingLight.parseServiceData_Pro(manufacturerData, onlog);
139
83
  break;
140
84
  case SwitchBotBLEModel.StripLight:
141
- sd = WoStrip.parseServiceData(buf, onlog);
85
+ sd = await WoStrip.parseServiceData(serviceData, onlog);
142
86
  break;
143
87
  case SwitchBotBLEModel.PlugMiniUS:
144
- sd = WoPlugMini.parseServiceData_US(manufacturerData, onlog);
88
+ sd = await WoPlugMini.parseServiceData_US(manufacturerData, onlog);
145
89
  break;
146
90
  case SwitchBotBLEModel.PlugMiniJP:
147
- sd = WoPlugMini.parseServiceData_JP(manufacturerData, onlog);
91
+ sd = await WoPlugMini.parseServiceData_JP(manufacturerData, onlog);
148
92
  break;
149
93
  case SwitchBotBLEModel.Lock:
150
- sd = WoSmartLock.parseServiceData(buf, manufacturerData, onlog);
94
+ sd = await WoSmartLock.parseServiceData(serviceData, manufacturerData, onlog);
151
95
  break;
152
96
  case SwitchBotBLEModel.LockPro:
153
- sd = WoSmartLockPro.parseServiceData(buf, manufacturerData, onlog);
97
+ sd = await WoSmartLockPro.parseServiceData(serviceData, manufacturerData, onlog);
154
98
  break;
155
99
  case SwitchBotBLEModel.BlindTilt:
156
- sd = WoBlindTilt.parseServiceData(buf, onlog);
100
+ sd = await WoBlindTilt.parseServiceData(serviceData, manufacturerData, onlog);
157
101
  break;
158
102
  default:
159
103
  if (onlog && typeof onlog === 'function') {
@@ -173,9 +117,9 @@ export class Advertising {
173
117
  .toString('hex')
174
118
  .slice(4, 16);
175
119
  if (str !== '') {
176
- address = str.substr(0, 2);
120
+ address = str.substring(0, 2);
177
121
  for (let i = 2; i < str.length; i += 2) {
178
- address = `${address}:${str.substr(i, 2)}`;
122
+ address = `${address}:${str.substring(i, i + 2)}`;
179
123
  }
180
124
  }
181
125
  }
@@ -1 +1 @@
1
- {"version":3,"file":"advertising.js","sourceRoot":"","sources":["../src/advertising.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"advertising.js","sourceRoot":"","sources":["../src/advertising.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAcpD,MAAM,OAAO,WAAW;IACtB,gBAAgB,CAAC;IAEjB;;;;;;;;;OASG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,CAChB,UAA4B,EAC5B,KAAiC;QAEjC,MAAM,EAAE,GAAG,UAAU,CAAC,aAAa,CAAA;QACnC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,aAAa,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,CAAA;QACzD,MAAM,gBAAgB,GAAG,EAAE,CAAC,gBAAgB,CAAA;QAC5C,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAA;QAEtC,SAAS,cAAc,CAAC,MAAW;YACjC,OAAO,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,CAAA;QAChE,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACzD,IAAI,EAAE,CAAA;QACN,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,iBAAiB,CAAC,GAAG;gBACxB,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;gBACtD,MAAK;YACP,KAAK,iBAAiB,CAAC,OAAO,CAAC;YAC/B,KAAK,iBAAiB,CAAC,QAAQ;gBAC7B,EAAE,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAA;gBAC3E,MAAK;YACP,KAAK,iBAAiB,CAAC,UAAU;gBAC/B,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;gBACtD,MAAK;YACP,KAAK,iBAAiB,CAAC,KAAK;gBAC1B,EAAE,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;gBAC1D,MAAK;YACP,KAAK,iBAAiB,CAAC,SAAS;gBAC9B,EAAE,GAAG,MAAM,UAAU,CAAC,qBAAqB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;gBAC/D,MAAK;YACP,KAAK,iBAAiB,CAAC,IAAI;gBACzB,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;gBAC3D,MAAK;YACP,KAAK,iBAAiB,CAAC,YAAY;gBACjC,EAAE,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAA;gBAC9E,MAAK;YACP,KAAK,iBAAiB,CAAC,YAAY;gBACjC,EAAE,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;gBAC1D,MAAK;YACP,KAAK,iBAAiB,CAAC,aAAa;gBAClC,EAAE,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;gBACzD,MAAK;YACP,KAAK,iBAAiB,CAAC,SAAS;gBAC9B,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAA;gBACxE,MAAK;YACP,KAAK,iBAAiB,CAAC,YAAY;gBACjC,EAAE,GAAG,MAAM,cAAc,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;gBACnE,MAAK;YACP,KAAK,iBAAiB,CAAC,eAAe;gBACpC,EAAE,GAAG,MAAM,cAAc,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;gBACvE,MAAK;YACP,KAAK,iBAAiB,CAAC,UAAU;gBAC/B,EAAE,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;gBACvD,MAAK;YACP,KAAK,iBAAiB,CAAC,UAAU;gBAC/B,EAAE,GAAG,MAAM,UAAU,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;gBAClE,MAAK;YACP,KAAK,iBAAiB,CAAC,UAAU;gBAC/B,EAAE,GAAG,MAAM,UAAU,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;gBAClE,MAAK;YACP,KAAK,iBAAiB,CAAC,IAAI;gBACzB,EAAE,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAA;gBAC7E,MAAK;YACP,KAAK,iBAAiB,CAAC,OAAO;gBAC5B,EAAE,GAAG,MAAM,cAAc,CAAC,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAA;gBAChF,MAAK;YACP,KAAK,iBAAiB,CAAC,SAAS;gBAC9B,EAAE,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAA;gBAC7E,MAAK;YACP;gBACE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;oBACzC,KAAK,CAAC,qBAAqB,UAAU,CAAC,EAAE,yBAAyB,KAAK,kBAAkB,CAAC,CAAA;gBAC3F,CAAC;gBACD,OAAO,IAAI,CAAA;QACf,CAAC;QACD,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBACzC,KAAK,CAAC,qBAAqB,UAAU,CAAC,EAAE,IAAI,KAAK,0CAA0C,CAAC,CAAA;YAC9F,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,OAAO,GAAG,UAAU,CAAC,OAAO,IAAI,EAAE,CAAA;QACtC,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,UAAU,CAAC,aAAa,CAAC,gBAAgB;iBAClD,QAAQ,CAAC,KAAK,CAAC;iBACf,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACf,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;gBACf,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvC,OAAO,GAAG,GAAG,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;gBACnD,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACtC,CAAC;QACD,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,OAAO;YACP,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,WAAW,EAAE,EAA6B;SAC3C,CAAA;QAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YACzC,KAAK,CAAC,qBAAqB,UAAU,CAAC,EAAE,IAAI,KAAK,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACtF,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
@@ -1,21 +1,106 @@
1
1
  import { Buffer } from 'node:buffer';
2
2
  import { SwitchbotDevice } from '../device.js';
3
- import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types.js';
4
3
  export declare class WoBlindTilt extends SwitchbotDevice {
5
- static parseServiceData(buf: Buffer, onlog: ((message: string) => void) | undefined): {
6
- model: SwitchBotBLEModel;
7
- modelName: SwitchBotBLEModelName;
8
- modelFriendlyName: SwitchBotBLEModelFriendlyName;
9
- calibration: boolean;
10
- battery: number;
11
- inMotion: boolean;
12
- tilt: number;
13
- lightLevel: number;
14
- } | null;
4
+ private _reverse;
5
+ /**
6
+ * Parses the service data and manufacturer data for the WoBlindTilt device.
7
+ *
8
+ * @param {Buffer} serviceData - The service data buffer.
9
+ * @param {Buffer} manufacturerData - The manufacturer data buffer.
10
+ * @param {(message: string) => void} [onlog] - Optional logging function.
11
+ * @param {boolean} [reverse] - Whether to reverse the tilt percentage.
12
+ * @returns {object | null} The parsed data object or null if the data is invalid.
13
+ */
14
+ static parseServiceData(serviceData: Buffer, manufacturerData: Buffer, onlog: ((message: string) => void) | undefined, reverse?: boolean): Promise<object | null>;
15
+ /**
16
+ * open
17
+ *
18
+ * Opens the blind tilt to the fully open position.
19
+ *
20
+ * @returns {Promise<void>} - A promise that resolves when the operation is complete. Nothing will be passed to the `resolve()`.
21
+ */
15
22
  open(): Promise<void>;
23
+ /**
24
+ * closeUp
25
+ *
26
+ * Closes the blind tilt up to the nearest endpoint.
27
+ *
28
+ * @returns {Promise<void>} - A promise that resolves when the operation is complete. Nothing will be passed to the `resolve()`.
29
+ */
30
+ closeUp(): Promise<void>;
31
+ /**
32
+ * closeDown
33
+ *
34
+ * Closes the blind tilt down to the nearest endpoint.
35
+ *
36
+ * @returns {Promise<void>} - A promise that resolves when the operation is complete. Nothing will be passed to the `resolve()`.
37
+ */
38
+ closeDown(): Promise<void>;
39
+ /**
40
+ * close
41
+ *
42
+ * Closes the blind tilt to the nearest endpoint.
43
+ *
44
+ * @returns {Promise<void>} - A promise that resolves when the operation is complete. Nothing will be passed to the `resolve()`.
45
+ */
16
46
  close(): Promise<void>;
47
+ /**
48
+ * getPosition
49
+ *
50
+ * Retrieves the current position of the blind tilt.
51
+ *
52
+ * @returns {number} - The current position of the blind tilt (0-100).
53
+ */
54
+ getPosition(): Promise<number>;
55
+ /**
56
+ * _getAdvValue
57
+ *
58
+ * Retrieves the advertised value for a given key.
59
+ *
60
+ * @param {string} key - The key for the advertised value.
61
+ * @returns {Promise<number>} - The advertised value.
62
+ */
63
+ private _getAdvValue;
64
+ /**
65
+ * getBasicInfo
66
+ *
67
+ * Retrieves the basic information of the blind tilt.
68
+ *
69
+ * @returns {Promise<object>} - A promise that resolves to an object containing the basic information of the blind tilt.
70
+ */
71
+ getBasicInfo(): Promise<object | null>;
72
+ /**
73
+ * Pauses the blind tilt operation.
74
+ *
75
+ * This method sends a command to pause the current operation of the blind tilt.
76
+ *
77
+ * @returns {Promise<void>} A promise that resolves when the operation is complete.
78
+ * No value is passed to the `resolve()` function.
79
+ */
17
80
  pause(): Promise<void>;
18
- runToPos(percent: number, mode: number): Promise<unknown>;
19
- _operateBlindTilt(bytes: number[]): Promise<void>;
81
+ /**
82
+ * runToPos the blind tilt operation.
83
+ *
84
+ * This method sends a command to run the blind tilt to the specified position.
85
+ *
86
+ * @param {number} percent - The target position percentage (0-100).
87
+ * @param {number} mode - The running mode (0 or 1).
88
+ * @returns {Promise<void>} - A promise that resolves when the operation is complete.
89
+ */
90
+ runToPos(percent: number, mode: number): Promise<void>;
91
+ /**
92
+ * Sends a command to operate the blind tilt and handles the response.
93
+ *
94
+ * This method constructs a buffer from the provided byte array and sends it as a command to the device.
95
+ * It returns a promise that resolves if the device responds with a success code (0x01) and rejects if the device
96
+ * returns an error or if the command fails.
97
+ *
98
+ * @param {number[]} bytes - The byte array representing the command to be sent to the device.
99
+ * @returns {Promise<void>} A promise that resolves when the command is successfully executed or rejects with an
100
+ * error if the command fails.
101
+ *
102
+ * @throws {Error} Throws an error if the device returns an error code or if the command fails.
103
+ */
104
+ operateBlindTilt(bytes: number[]): Promise<void>;
20
105
  }
21
106
  //# sourceMappingURL=woblindtilt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"woblindtilt.d.ts","sourceRoot":"","sources":["../../src/device/woblindtilt.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAErG,qBAAa,WAAY,SAAQ,eAAe;IAC9C,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS;;;;;;;;;;IA2CnF,IAAI;IAeJ,KAAK;IAeL,KAAK;IAeL,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAgCtC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE;CAqBlC"}
1
+ {"version":3,"file":"woblindtilt.d.ts","sourceRoot":"","sources":["../../src/device/woblindtilt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAMpC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,QAAQ,CAAiB;IACjC;;;;;;;;OAQG;WACU,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,EAC9C,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkCzB;;;;;;OAMG;IACG,IAAI;IAIV;;;;;;OAMG;IACG,OAAO;IAIb;;;;;;OAMG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC;;;;;;OAMG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;;;;;OAMG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAQpC;;;;;;;OAOG;YACW,YAAY;IAQ1B;;;;;;OAMG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA2C5C;;;;;;;OAOG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;;;;;;;OAQG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB5D;;;;;;;;;;;;OAYG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAavD"}