mclimate-payload-helper 1.2.6 → 1.2.8

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 (163) hide show
  1. package/.eslintrc.cjs +18 -0
  2. package/.husky/pre-commit +6 -0
  3. package/CLAUDE.md +10 -1
  4. package/add-encoder-command-existing.md +51 -51
  5. package/add-encoder-command-new.md +51 -51
  6. package/dist/decoders/commandsReadingHelper.d.ts.map +1 -1
  7. package/dist/decoders/commandsReadingHelper.js +240 -202
  8. package/dist/decoders/commandsReadingHelper.js.map +1 -1
  9. package/dist/decoders/payloadParsers/AQISensorPayloadParser.js +5 -5
  10. package/dist/decoders/payloadParsers/AQISensorPayloadParser.js.map +1 -1
  11. package/dist/decoders/payloadParsers/CO2DisplayLitePayloadParser.d.ts +1 -1
  12. package/dist/decoders/payloadParsers/CO2DisplayLitePayloadParser.d.ts.map +1 -1
  13. package/dist/decoders/payloadParsers/CO2DisplayLitePayloadParser.js +18 -18
  14. package/dist/decoders/payloadParsers/CO2DisplayLitePayloadParser.js.map +1 -1
  15. package/dist/decoders/payloadParsers/CO2DisplayPayloadParser.d.ts +1 -1
  16. package/dist/decoders/payloadParsers/CO2DisplayPayloadParser.d.ts.map +1 -1
  17. package/dist/decoders/payloadParsers/CO2DisplayPayloadParser.js +19 -19
  18. package/dist/decoders/payloadParsers/CO2DisplayPayloadParser.js.map +1 -1
  19. package/dist/decoders/payloadParsers/CO2SensorPayloadParser.d.ts +1 -1
  20. package/dist/decoders/payloadParsers/CO2SensorPayloadParser.d.ts.map +1 -1
  21. package/dist/decoders/payloadParsers/CO2SensorPayloadParser.js +3 -3
  22. package/dist/decoders/payloadParsers/CO2SensorPayloadParser.js.map +1 -1
  23. package/dist/decoders/payloadParsers/DskDevicePayloadParser.js +11 -11
  24. package/dist/decoders/payloadParsers/DskDevicePayloadParser.js.map +1 -1
  25. package/dist/decoders/payloadParsers/FanCoilThermostatPayloadParser.d.ts +1 -1
  26. package/dist/decoders/payloadParsers/FanCoilThermostatPayloadParser.d.ts.map +1 -1
  27. package/dist/decoders/payloadParsers/FanCoilThermostatPayloadParser.js +1 -1
  28. package/dist/decoders/payloadParsers/FanCoilThermostatPayloadParser.js.map +1 -1
  29. package/dist/decoders/payloadParsers/ThermostatPayloadParser.d.ts +1 -1
  30. package/dist/decoders/payloadParsers/ThermostatPayloadParser.d.ts.map +1 -1
  31. package/dist/decoders/payloadParsers/ThermostatPayloadParser.js +32 -40
  32. package/dist/decoders/payloadParsers/ThermostatPayloadParser.js.map +1 -1
  33. package/dist/decoders/payloadParsers/WirelessThermostatPayloadParser.d.ts +1 -1
  34. package/dist/decoders/payloadParsers/WirelessThermostatPayloadParser.d.ts.map +1 -1
  35. package/dist/decoders/payloadParsers/WirelessThermostatPayloadParser.js +13 -13
  36. package/dist/decoders/payloadParsers/WirelessThermostatPayloadParser.js.map +1 -1
  37. package/dist/decoders/payloadParsers/buttonPayloadParser.d.ts +1 -1
  38. package/dist/decoders/payloadParsers/buttonPayloadParser.d.ts.map +1 -1
  39. package/dist/decoders/payloadParsers/buttonPayloadParser.js +6 -6
  40. package/dist/decoders/payloadParsers/buttonPayloadParser.js.map +1 -1
  41. package/dist/decoders/payloadParsers/co2PirLitePayloadParser.d.ts +1 -1
  42. package/dist/decoders/payloadParsers/co2PirLitePayloadParser.d.ts.map +1 -1
  43. package/dist/decoders/payloadParsers/co2PirLitePayloadParser.js +31 -29
  44. package/dist/decoders/payloadParsers/co2PirLitePayloadParser.js.map +1 -1
  45. package/dist/decoders/payloadParsers/htDisplayLitePayloadParser.d.ts +1 -1
  46. package/dist/decoders/payloadParsers/htDisplayLitePayloadParser.d.ts.map +1 -1
  47. package/dist/decoders/payloadParsers/htDisplayLitePayloadParser.js +17 -17
  48. package/dist/decoders/payloadParsers/htDisplayLitePayloadParser.js.map +1 -1
  49. package/dist/decoders/payloadParsers/htPirLitePayloadParser.d.ts +1 -1
  50. package/dist/decoders/payloadParsers/htPirLitePayloadParser.d.ts.map +1 -1
  51. package/dist/decoders/payloadParsers/htPirLitePayloadParser.js +26 -26
  52. package/dist/decoders/payloadParsers/htPirLitePayloadParser.js.map +1 -1
  53. package/dist/decoders/payloadParsers/htSensorPayloadParser.d.ts +1 -1
  54. package/dist/decoders/payloadParsers/htSensorPayloadParser.d.ts.map +1 -1
  55. package/dist/decoders/payloadParsers/htSensorPayloadParser.js +16 -16
  56. package/dist/decoders/payloadParsers/htSensorPayloadParser.js.map +1 -1
  57. package/dist/decoders/payloadParsers/melissaLorawanPayloadParser.d.ts +1 -1
  58. package/dist/decoders/payloadParsers/melissaLorawanPayloadParser.d.ts.map +1 -1
  59. package/dist/decoders/payloadParsers/melissaLorawanPayloadParser.js +8 -8
  60. package/dist/decoders/payloadParsers/melissaLorawanPayloadParser.js.map +1 -1
  61. package/dist/decoders/payloadParsers/multisensorPayloadParser.d.ts +1 -1
  62. package/dist/decoders/payloadParsers/multisensorPayloadParser.d.ts.map +1 -1
  63. package/dist/decoders/payloadParsers/multisensorPayloadParser.js +4 -5
  64. package/dist/decoders/payloadParsers/multisensorPayloadParser.js.map +1 -1
  65. package/dist/decoders/payloadParsers/openCloseSensorPayloadParser.d.ts +1 -1
  66. package/dist/decoders/payloadParsers/openCloseSensorPayloadParser.d.ts.map +1 -1
  67. package/dist/decoders/payloadParsers/openCloseSensorPayloadParser.js +23 -20
  68. package/dist/decoders/payloadParsers/openCloseSensorPayloadParser.js.map +1 -1
  69. package/dist/decoders/payloadParsers/relay16DryPayloadParser.d.ts +1 -1
  70. package/dist/decoders/payloadParsers/relay16DryPayloadParser.d.ts.map +1 -1
  71. package/dist/decoders/payloadParsers/relay16DryPayloadParser.js +8 -8
  72. package/dist/decoders/payloadParsers/relay16DryPayloadParser.js.map +1 -1
  73. package/dist/decoders/payloadParsers/relay16PayloadParser.d.ts +1 -1
  74. package/dist/decoders/payloadParsers/relay16PayloadParser.d.ts.map +1 -1
  75. package/dist/decoders/payloadParsers/relay16PayloadParser.js +8 -8
  76. package/dist/decoders/payloadParsers/relay16PayloadParser.js.map +1 -1
  77. package/dist/decoders/payloadParsers/tFloodPayloadParser.js +7 -7
  78. package/dist/decoders/payloadParsers/tFloodPayloadParser.js.map +1 -1
  79. package/dist/decoders/payloadParsers/tValvePayloadParser.js +4 -4
  80. package/dist/decoders/payloadParsers/tValvePayloadParser.js.map +1 -1
  81. package/dist/decoders/payloadParsers/uplinkPayloadParser.d.ts +1 -1
  82. package/dist/decoders/payloadParsers/uplinkPayloadParser.d.ts.map +1 -1
  83. package/dist/decoders/payloadParsers/vickiPayloadParser.d.ts +1 -1
  84. package/dist/decoders/payloadParsers/vickiPayloadParser.d.ts.map +1 -1
  85. package/dist/decoders/payloadParsers/vickiPayloadParser.js +25 -25
  86. package/dist/decoders/payloadParsers/vickiPayloadParser.js.map +1 -1
  87. package/dist/encoders/Co2DisplayCommands.js +1 -1
  88. package/dist/encoders/Co2DisplayCommands.js.map +1 -1
  89. package/dist/encoders/Co2DisplayLiteCommands.js +1 -1
  90. package/dist/encoders/Co2DisplayLiteCommands.js.map +1 -1
  91. package/dist/encoders/Co2PirLiteCommands.d.ts +6 -2
  92. package/dist/encoders/Co2PirLiteCommands.d.ts.map +1 -1
  93. package/dist/encoders/Co2PirLiteCommands.js +66 -13
  94. package/dist/encoders/Co2PirLiteCommands.js.map +1 -1
  95. package/dist/encoders/CommandBuilder.d.ts +2 -2
  96. package/dist/encoders/CommandBuilder.d.ts.map +1 -1
  97. package/dist/encoders/CommandBuilder.js +4 -2
  98. package/dist/encoders/CommandBuilder.js.map +1 -1
  99. package/dist/encoders/HTPirLiteCommands.d.ts +6 -2
  100. package/dist/encoders/HTPirLiteCommands.d.ts.map +1 -1
  101. package/dist/encoders/HTPirLiteCommands.js +67 -18
  102. package/dist/encoders/HTPirLiteCommands.js.map +1 -1
  103. package/dist/encoders/MelissaCommands.d.ts.map +1 -1
  104. package/dist/encoders/MelissaCommands.js.map +1 -1
  105. package/dist/encoders/Relay16DryCommands.d.ts.map +1 -1
  106. package/dist/encoders/Relay16DryCommands.js +1 -3
  107. package/dist/encoders/Relay16DryCommands.js.map +1 -1
  108. package/dist/encoders/VickiCommands.d.ts.map +1 -1
  109. package/dist/encoders/VickiCommands.js +5 -7
  110. package/dist/encoders/VickiCommands.js.map +1 -1
  111. package/dist/encoders/types/schemas.d.ts +80 -170
  112. package/dist/encoders/types/schemas.d.ts.map +1 -1
  113. package/dist/encoders/types/schemas.js +30 -7
  114. package/dist/encoders/types/schemas.js.map +1 -1
  115. package/dist/test/payloadDecoders.test.js +54 -44
  116. package/dist/test/payloadDecoders.test.js.map +1 -1
  117. package/dist/test/payloadEncoders.test.js +50 -34
  118. package/dist/test/payloadEncoders.test.js.map +1 -1
  119. package/dist/utils/delMethods.d.ts +1 -1
  120. package/dist/utils/delMethods.d.ts.map +1 -1
  121. package/dist/utils/delMethods.js +3 -2
  122. package/dist/utils/delMethods.js.map +1 -1
  123. package/dist/utils/mixin.d.ts +1 -1
  124. package/dist/utils/mixin.d.ts.map +1 -1
  125. package/dist/utils/mixin.js +4 -1
  126. package/dist/utils/mixin.js.map +1 -1
  127. package/package.json +13 -2
  128. package/src/decoders/commandsReadingHelper.ts +239 -203
  129. package/src/decoders/payloadParsers/AQISensorPayloadParser.ts +5 -5
  130. package/src/decoders/payloadParsers/CO2DisplayLitePayloadParser.ts +19 -19
  131. package/src/decoders/payloadParsers/CO2DisplayPayloadParser.ts +19 -19
  132. package/src/decoders/payloadParsers/CO2SensorPayloadParser.ts +4 -4
  133. package/src/decoders/payloadParsers/DskDevicePayloadParser.ts +11 -11
  134. package/src/decoders/payloadParsers/FanCoilThermostatPayloadParser.ts +3 -3
  135. package/src/decoders/payloadParsers/ThermostatPayloadParser.ts +32 -42
  136. package/src/decoders/payloadParsers/WirelessThermostatPayloadParser.ts +16 -14
  137. package/src/decoders/payloadParsers/buttonPayloadParser.ts +6 -6
  138. package/src/decoders/payloadParsers/co2PirLitePayloadParser.ts +44 -40
  139. package/src/decoders/payloadParsers/htDisplayLitePayloadParser.ts +17 -17
  140. package/src/decoders/payloadParsers/htPirLitePayloadParser.ts +37 -35
  141. package/src/decoders/payloadParsers/htSensorPayloadParser.ts +17 -17
  142. package/src/decoders/payloadParsers/melissaLorawanPayloadParser.ts +11 -11
  143. package/src/decoders/payloadParsers/multisensorPayloadParser.ts +75 -77
  144. package/src/decoders/payloadParsers/openCloseSensorPayloadParser.ts +40 -36
  145. package/src/decoders/payloadParsers/relay16DryPayloadParser.ts +10 -10
  146. package/src/decoders/payloadParsers/relay16PayloadParser.ts +10 -10
  147. package/src/decoders/payloadParsers/tFloodPayloadParser.ts +7 -7
  148. package/src/decoders/payloadParsers/tValvePayloadParser.ts +4 -4
  149. package/src/decoders/payloadParsers/vickiPayloadParser.ts +28 -28
  150. package/src/encoders/Co2DisplayCommands.ts +1 -1
  151. package/src/encoders/Co2DisplayLiteCommands.ts +2 -2
  152. package/src/encoders/Co2PirLiteCommands.ts +66 -15
  153. package/src/encoders/CommandBuilder.ts +5 -3
  154. package/src/encoders/HTPirLiteCommands.ts +81 -34
  155. package/src/encoders/MelissaCommands.ts +20 -24
  156. package/src/encoders/Relay16DryCommands.ts +3 -6
  157. package/src/encoders/VickiCommands.ts +23 -53
  158. package/src/encoders/index.ts +0 -1
  159. package/src/encoders/types/schemas.ts +51 -12
  160. package/src/test/payloadDecoders.test.ts +114 -99
  161. package/src/test/payloadEncoders.test.ts +111 -92
  162. package/src/utils/delMethods.ts +6 -3
  163. package/src/utils/mixin.ts +5 -2
package/.eslintrc.cjs ADDED
@@ -0,0 +1,18 @@
1
+ /** @type {import("eslint").Linter.Config} */
2
+ module.exports = {
3
+ root: true,
4
+ parser: '@typescript-eslint/parser',
5
+ parserOptions: {
6
+ project: './tsconfig.json',
7
+ tsconfigRootDir: __dirname,
8
+ },
9
+ env: {
10
+ node: true,
11
+ es2021: true,
12
+ jest: true,
13
+ },
14
+ plugins: ['@typescript-eslint', 'jest'],
15
+ extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:jest/recommended', 'prettier'],
16
+ ignorePatterns: ['dist', 'node_modules', 'jest.config.ts'],
17
+ rules: {},
18
+ }
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env sh
2
+ set -e
3
+ npm run format:check
4
+ npm run type-check
5
+ npm run lint
6
+ npm run test
package/CLAUDE.md CHANGED
@@ -5,17 +5,20 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
5
5
  ## Common Development Commands
6
6
 
7
7
  ### Building the Package
8
+
8
9
  ```bash
9
10
  npm run build # Compiles TypeScript and resolves path aliases
10
11
  ```
11
12
 
12
13
  ### Running Tests
14
+
13
15
  ```bash
14
16
  npm test # Runs all tests
15
17
  npm test -- [pattern] # Run specific test files
16
18
  ```
17
19
 
18
20
  ### Publishing
21
+
19
22
  ```bash
20
23
  npm publish # Publishes to npm (runs build automatically via prepublishOnly)
21
24
  ```
@@ -25,12 +28,14 @@ npm publish # Publishes to npm (runs build automatically via prepublishOnly)
25
28
  This is a TypeScript library for encoding and decoding payloads for MClimate IoT devices. The codebase is organized into three main areas:
26
29
 
27
30
  ### 1. Decoders (`src/decoders/`)
31
+
28
32
  - **Purpose**: Parse incoming device payloads (hex strings) into structured data
29
33
  - **Entry Point**: `uplinkPayloadParser` in `src/decoders/payloadParsers/uplinkPayloadParser.ts`
30
34
  - **Device Parsers**: Individual parser classes in `src/decoders/payloadParsers/` (e.g., `VickiPayloadParser`, `HTSensorPayloadParser`)
31
35
  - **Command Reading**: `commandsReadingHelper.ts` handles parsing of command responses
32
36
 
33
37
  ### 2. Encoders (`src/encoders/`)
38
+
34
39
  - **Purpose**: Build commands to send to devices
35
40
  - **Entry Point**: `CommandBuilder` class that routes to device-specific command classes
36
41
  - **Command Classes**: Each device has its own command class (e.g., `VickiCommands`, `HTSensorCommands`)
@@ -38,6 +43,7 @@ This is a TypeScript library for encoding and decoding payloads for MClimate IoT
38
43
  - **Schemas**: Command validation schemas in `src/encoders/types/schemas.ts`
39
44
 
40
45
  ### 3. Type System
46
+
41
47
  - **Device Types**: Enumerated in `src/decoders/payloadParsers/types/allDevices.ts`
42
48
  - **Path Aliases**: Uses `@/` prefix for absolute imports from `src/`
43
49
  - **Zod Schemas**: Used for command parameter validation
@@ -45,6 +51,7 @@ This is a TypeScript library for encoding and decoding payloads for MClimate IoT
45
51
  ## Key Implementation Patterns
46
52
 
47
53
  ### Adding New Devices
54
+
48
55
  1. Add device type to `DeviceType` enum
49
56
  2. Create payload parser class and export it
50
57
  3. Add parser case to `uplinkPayloadParser` switch
@@ -55,12 +62,14 @@ This is a TypeScript library for encoding and decoding payloads for MClimate IoT
55
62
  6. Define Zod schema for command validation
56
63
 
57
64
  ### Command Structure
65
+
58
66
  - Commands use hexadecimal encoding
59
67
  - Each command extends `BaseCommand`
60
68
  - Commands can be combined using `CommandBuilder.combine()`
61
69
  - Mixins used for shared command sets (e.g., `TemperatureCommonCommands`)
62
70
 
63
71
  ### Testing
72
+
64
73
  - Tests located in `src/test/`
65
74
  - Separate test files for decoders and encoders
66
- - Uses Jest with TypeScript support
75
+ - Uses Jest with TypeScript support
@@ -184,27 +184,27 @@ export namespace [YourDeviceCommandTypes] {
184
184
  ```typescript
185
185
  /* --------------------------------------- CO2 PIR LITE COMMANDS --------------------------------------- */
186
186
  const Co2PirLiteCommandSchemas = {
187
- ...GeneralCommandSchemas,
188
- ...PIRCommandSchemas,
189
- setUplinkSendingOnButtonPress: z.object({
190
- value: z.number(),
191
- }),
192
- getUplinkSendingOnButtonPress: z.object({}),
193
- restartDevice: z.object({}),
194
- setCo2BoundaryLevels: z.object({
195
- good_medium: z.number(),
196
- medium_bad: z.number(),
197
- }),
198
- getCo2BoundaryLevels: z.object({}),
199
- // ... more commands
187
+ ...GeneralCommandSchemas,
188
+ ...PIRCommandSchemas,
189
+ setUplinkSendingOnButtonPress: z.object({
190
+ value: z.number(),
191
+ }),
192
+ getUplinkSendingOnButtonPress: z.object({}),
193
+ restartDevice: z.object({}),
194
+ setCo2BoundaryLevels: z.object({
195
+ good_medium: z.number(),
196
+ medium_bad: z.number(),
197
+ }),
198
+ getCo2BoundaryLevels: z.object({}),
199
+ // ... more commands
200
200
  }
201
201
 
202
202
  export namespace Co2PirLiteCommandTypes {
203
- export type SetUplinkSendingOnButtonPressParams = z.infer<
204
- typeof Co2PirLiteCommandSchemas.setUplinkSendingOnButtonPress
205
- >
206
- export type RestartDeviceParams = z.infer<typeof Co2PirLiteCommandSchemas.restartDevice>
207
- export type SetCo2BoundaryLevelsParams = z.infer<typeof Co2PirLiteCommandSchemas.setCo2BoundaryLevels>
203
+ export type SetUplinkSendingOnButtonPressParams = z.infer<
204
+ typeof Co2PirLiteCommandSchemas.setUplinkSendingOnButtonPress
205
+ >
206
+ export type RestartDeviceParams = z.infer<typeof Co2PirLiteCommandSchemas.restartDevice>
207
+ export type SetCo2BoundaryLevelsParams = z.infer<typeof Co2PirLiteCommandSchemas.setCo2BoundaryLevels>
208
208
  }
209
209
  ```
210
210
 
@@ -243,31 +243,31 @@ import { CustomError } from '@/utils'
243
243
  import { MyDeviceCommandTypes, DeviceCommandSchemas } from '@/encoders/types'
244
244
 
245
245
  export class MyDeviceCommands {
246
- static setTemperature(params: MyDeviceCommandTypes.SetTemperatureParams) {
247
- try {
248
- DeviceCommandSchemas.MyDeviceCommandSchemas.setTemperature.parse(params)
249
- const { value } = params
250
- return new BaseCommand('SetTemperature', 0x15, value)
251
- } catch (e) {
252
- if (e instanceof ZodError) {
253
- throw new CustomError({
254
- message: 'Zod validation error during SetTemperature execution',
255
- command: 'SetTemperature',
256
- originalError: e,
257
- })
258
- } else {
259
- throw new CustomError({
260
- message: 'Error during SetTemperature execution',
261
- command: 'SetTemperature',
262
- originalError: e as Error,
263
- })
264
- }
265
- }
266
- }
267
-
268
- static getTemperature() {
269
- return new BaseCommand('GetTemperature', 0x16)
270
- }
246
+ static setTemperature(params: MyDeviceCommandTypes.SetTemperatureParams) {
247
+ try {
248
+ DeviceCommandSchemas.MyDeviceCommandSchemas.setTemperature.parse(params)
249
+ const { value } = params
250
+ return new BaseCommand('SetTemperature', 0x15, value)
251
+ } catch (e) {
252
+ if (e instanceof ZodError) {
253
+ throw new CustomError({
254
+ message: 'Zod validation error during SetTemperature execution',
255
+ command: 'SetTemperature',
256
+ originalError: e,
257
+ })
258
+ } else {
259
+ throw new CustomError({
260
+ message: 'Error during SetTemperature execution',
261
+ command: 'SetTemperature',
262
+ originalError: e as Error,
263
+ })
264
+ }
265
+ }
266
+ }
267
+
268
+ static getTemperature() {
269
+ return new BaseCommand('GetTemperature', 0x16)
270
+ }
271
271
  }
272
272
  ```
273
273
 
@@ -276,21 +276,21 @@ export class MyDeviceCommands {
276
276
  ```typescript
277
277
  /* --------------------------------------- MY DEVICE COMMANDS --------------------------------------- */
278
278
  const MyDeviceCommandSchemas = {
279
- ...GeneralCommandSchemas,
280
- setTemperature: z.object({
281
- value: z.number().min(-40).max(85),
282
- }),
283
- getTemperature: z.object({}),
279
+ ...GeneralCommandSchemas,
280
+ setTemperature: z.object({
281
+ value: z.number().min(-40).max(85),
282
+ }),
283
+ getTemperature: z.object({}),
284
284
  }
285
285
 
286
286
  export namespace MyDeviceCommandTypes {
287
- export type SetTemperatureParams = z.infer<typeof MyDeviceCommandSchemas.setTemperature>
287
+ export type SetTemperatureParams = z.infer<typeof MyDeviceCommandSchemas.setTemperature>
288
288
  }
289
289
 
290
290
  // Then add to the export at bottom:
291
291
  export const DeviceCommandSchemas = {
292
- // ... existing schemas
293
- MyDeviceCommandSchemas,
292
+ // ... existing schemas
293
+ MyDeviceCommandSchemas,
294
294
  }
295
295
  ```
296
296
 
@@ -230,27 +230,27 @@ export namespace [YourDeviceCommandTypes] {
230
230
  ```typescript
231
231
  /* --------------------------------------- CO2 PIR LITE COMMANDS --------------------------------------- */
232
232
  const Co2PirLiteCommandSchemas = {
233
- ...GeneralCommandSchemas,
234
- ...PIRCommandSchemas,
235
- setUplinkSendingOnButtonPress: z.object({
236
- value: z.number(),
237
- }),
238
- getUplinkSendingOnButtonPress: z.object({}),
239
- restartDevice: z.object({}),
240
- setCo2BoundaryLevels: z.object({
241
- good_medium: z.number(),
242
- medium_bad: z.number(),
243
- }),
244
- getCo2BoundaryLevels: z.object({}),
245
- // ... more commands
233
+ ...GeneralCommandSchemas,
234
+ ...PIRCommandSchemas,
235
+ setUplinkSendingOnButtonPress: z.object({
236
+ value: z.number(),
237
+ }),
238
+ getUplinkSendingOnButtonPress: z.object({}),
239
+ restartDevice: z.object({}),
240
+ setCo2BoundaryLevels: z.object({
241
+ good_medium: z.number(),
242
+ medium_bad: z.number(),
243
+ }),
244
+ getCo2BoundaryLevels: z.object({}),
245
+ // ... more commands
246
246
  }
247
247
 
248
248
  export namespace Co2PirLiteCommandTypes {
249
- export type SetUplinkSendingOnButtonPressParams = z.infer<
250
- typeof Co2PirLiteCommandSchemas.setUplinkSendingOnButtonPress
251
- >
252
- export type RestartDeviceParams = z.infer<typeof Co2PirLiteCommandSchemas.restartDevice>
253
- export type SetCo2BoundaryLevelsParams = z.infer<typeof Co2PirLiteCommandSchemas.setCo2BoundaryLevels>
249
+ export type SetUplinkSendingOnButtonPressParams = z.infer<
250
+ typeof Co2PirLiteCommandSchemas.setUplinkSendingOnButtonPress
251
+ >
252
+ export type RestartDeviceParams = z.infer<typeof Co2PirLiteCommandSchemas.restartDevice>
253
+ export type SetCo2BoundaryLevelsParams = z.infer<typeof Co2PirLiteCommandSchemas.setCo2BoundaryLevels>
254
254
  }
255
255
  ```
256
256
 
@@ -293,31 +293,31 @@ import { CustomError } from '@/utils'
293
293
  import { MyDeviceCommandTypes, DeviceCommandSchemas } from '@/encoders/types'
294
294
 
295
295
  export class MyDeviceCommands {
296
- static setTemperature(params: MyDeviceCommandTypes.SetTemperatureParams) {
297
- try {
298
- DeviceCommandSchemas.MyDeviceCommandSchemas.setTemperature.parse(params)
299
- const { value } = params
300
- return new BaseCommand('SetTemperature', 0x15, value)
301
- } catch (e) {
302
- if (e instanceof ZodError) {
303
- throw new CustomError({
304
- message: 'Zod validation error during SetTemperature execution',
305
- command: 'SetTemperature',
306
- originalError: e,
307
- })
308
- } else {
309
- throw new CustomError({
310
- message: 'Error during SetTemperature execution',
311
- command: 'SetTemperature',
312
- originalError: e as Error,
313
- })
314
- }
315
- }
316
- }
317
-
318
- static getTemperature() {
319
- return new BaseCommand('GetTemperature', 0x16)
320
- }
296
+ static setTemperature(params: MyDeviceCommandTypes.SetTemperatureParams) {
297
+ try {
298
+ DeviceCommandSchemas.MyDeviceCommandSchemas.setTemperature.parse(params)
299
+ const { value } = params
300
+ return new BaseCommand('SetTemperature', 0x15, value)
301
+ } catch (e) {
302
+ if (e instanceof ZodError) {
303
+ throw new CustomError({
304
+ message: 'Zod validation error during SetTemperature execution',
305
+ command: 'SetTemperature',
306
+ originalError: e,
307
+ })
308
+ } else {
309
+ throw new CustomError({
310
+ message: 'Error during SetTemperature execution',
311
+ command: 'SetTemperature',
312
+ originalError: e as Error,
313
+ })
314
+ }
315
+ }
316
+ }
317
+
318
+ static getTemperature() {
319
+ return new BaseCommand('GetTemperature', 0x16)
320
+ }
321
321
  }
322
322
  ```
323
323
 
@@ -326,21 +326,21 @@ export class MyDeviceCommands {
326
326
  ```typescript
327
327
  /* --------------------------------------- MY DEVICE COMMANDS --------------------------------------- */
328
328
  const MyDeviceCommandSchemas = {
329
- ...GeneralCommandSchemas,
330
- setTemperature: z.object({
331
- value: z.number().min(-40).max(85),
332
- }),
333
- getTemperature: z.object({}),
329
+ ...GeneralCommandSchemas,
330
+ setTemperature: z.object({
331
+ value: z.number().min(-40).max(85),
332
+ }),
333
+ getTemperature: z.object({}),
334
334
  }
335
335
 
336
336
  export namespace MyDeviceCommandTypes {
337
- export type SetTemperatureParams = z.infer<typeof MyDeviceCommandSchemas.setTemperature>
337
+ export type SetTemperatureParams = z.infer<typeof MyDeviceCommandSchemas.setTemperature>
338
338
  }
339
339
 
340
340
  // Then add to the export at bottom:
341
341
  export const DeviceCommandSchemas = {
342
- // ... existing schemas
343
- MyDeviceCommandSchemas,
342
+ // ... existing schemas
343
+ MyDeviceCommandSchemas,
344
344
  }
345
345
  ```
346
346
 
@@ -1 +1 @@
1
- {"version":3,"file":"commandsReadingHelper.d.ts","sourceRoot":"","sources":["../../src/decoders/commandsReadingHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAG5D,eAAO,MAAM,qBAAqB,YAAa,MAAM,iBAAiB,MAAM,cAAc,UAAU,mBA6tFnG,CAAA"}
1
+ {"version":3,"file":"commandsReadingHelper.d.ts","sourceRoot":"","sources":["../../src/decoders/commandsReadingHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAG5D,eAAO,MAAM,qBAAqB,YAAa,MAAM,iBAAiB,MAAM,cAAc,UAAU,mBAiwFnG,CAAA"}