jooby-codec 1.6.0 → 1.8.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 (150) hide show
  1. package/dist/Command.d.ts +1 -0
  2. package/dist/Command.js +3 -2
  3. package/dist/Command.js.map +1 -1
  4. package/dist/CommandBinaryBuffer.d.ts +190 -32
  5. package/dist/CommandBinaryBuffer.js +301 -2
  6. package/dist/CommandBinaryBuffer.js.map +1 -1
  7. package/dist/commands/downlink/CorrectTime2000.d.ts +1 -6
  8. package/dist/commands/downlink/CorrectTime2000.js +2 -8
  9. package/dist/commands/downlink/CorrectTime2000.js.map +1 -1
  10. package/dist/commands/downlink/ExAbsArchiveDaysMC.d.ts +5 -10
  11. package/dist/commands/downlink/ExAbsArchiveDaysMC.js +3 -9
  12. package/dist/commands/downlink/ExAbsArchiveDaysMC.js.map +1 -1
  13. package/dist/commands/downlink/ExAbsArchiveHoursMC.d.ts +5 -10
  14. package/dist/commands/downlink/ExAbsArchiveHoursMC.js +3 -9
  15. package/dist/commands/downlink/ExAbsArchiveHoursMC.js.map +1 -1
  16. package/dist/commands/downlink/ExAbsCurrentMC.d.ts +1 -6
  17. package/dist/commands/downlink/ExAbsCurrentMC.js +3 -8
  18. package/dist/commands/downlink/ExAbsCurrentMC.js.map +1 -1
  19. package/dist/commands/downlink/GetArchiveDaysMC.d.ts +5 -5
  20. package/dist/commands/downlink/GetArchiveDaysMC.js +3 -4
  21. package/dist/commands/downlink/GetArchiveDaysMC.js.map +1 -1
  22. package/dist/commands/downlink/GetArchiveEvents.d.ts +39 -0
  23. package/dist/commands/downlink/GetArchiveEvents.js +58 -0
  24. package/dist/commands/downlink/GetArchiveEvents.js.map +1 -0
  25. package/dist/commands/downlink/GetArchiveHoursMC.d.ts +5 -10
  26. package/dist/commands/downlink/GetArchiveHoursMC.js +3 -9
  27. package/dist/commands/downlink/GetArchiveHoursMC.js.map +1 -1
  28. package/dist/commands/downlink/GetCurrentMC.d.ts +1 -1
  29. package/dist/commands/downlink/GetCurrentMC.js +3 -3
  30. package/dist/commands/downlink/GetCurrentMC.js.map +1 -1
  31. package/dist/commands/downlink/GetLmicVersion.d.ts +25 -0
  32. package/dist/commands/downlink/GetLmicVersion.js +41 -0
  33. package/dist/commands/downlink/GetLmicVersion.js.map +1 -0
  34. package/dist/commands/downlink/GetParameter.d.ts +37 -0
  35. package/dist/commands/downlink/GetParameter.js +64 -0
  36. package/dist/commands/downlink/GetParameter.js.map +1 -0
  37. package/dist/commands/downlink/GetStatus.d.ts +26 -0
  38. package/dist/commands/downlink/GetStatus.js +45 -0
  39. package/dist/commands/downlink/GetStatus.js.map +1 -0
  40. package/dist/commands/downlink/SetParameter.d.ts +6 -56
  41. package/dist/commands/downlink/SetParameter.js +45 -105
  42. package/dist/commands/downlink/SetParameter.js.map +1 -1
  43. package/dist/commands/downlink/SetTime2000.d.ts +1 -6
  44. package/dist/commands/downlink/SetTime2000.js +2 -8
  45. package/dist/commands/downlink/SetTime2000.js.map +1 -1
  46. package/dist/commands/downlink/SoftRestart.d.ts +1 -1
  47. package/dist/commands/downlink/SoftRestart.js +3 -3
  48. package/dist/commands/downlink/SoftRestart.js.map +1 -1
  49. package/dist/commands/downlink/index.d.ts +4 -1
  50. package/dist/commands/downlink/index.js +4 -1
  51. package/dist/commands/downlink/index.js.map +1 -1
  52. package/dist/commands/uplink/CorrectTime2000.d.ts +1 -1
  53. package/dist/commands/uplink/CorrectTime2000.js +3 -3
  54. package/dist/commands/uplink/CorrectTime2000.js.map +1 -1
  55. package/dist/commands/uplink/DataDayMC.d.ts +3 -5
  56. package/dist/commands/uplink/DataDayMC.js +4 -3
  57. package/dist/commands/uplink/DataDayMC.js.map +1 -1
  58. package/dist/commands/uplink/DataHourMC.d.ts +3 -2
  59. package/dist/commands/uplink/DataHourMC.js +4 -3
  60. package/dist/commands/uplink/DataHourMC.js.map +1 -1
  61. package/dist/commands/uplink/ExAbsArchiveDaysMC.d.ts +3 -2
  62. package/dist/commands/uplink/ExAbsArchiveDaysMC.js +4 -3
  63. package/dist/commands/uplink/ExAbsArchiveDaysMC.js.map +1 -1
  64. package/dist/commands/uplink/ExAbsArchiveHoursMC.d.ts +3 -2
  65. package/dist/commands/uplink/ExAbsArchiveHoursMC.js +4 -3
  66. package/dist/commands/uplink/ExAbsArchiveHoursMC.js.map +1 -1
  67. package/dist/commands/uplink/ExAbsCurrentMC.d.ts +1 -1
  68. package/dist/commands/uplink/ExAbsCurrentMC.js +4 -3
  69. package/dist/commands/uplink/ExAbsCurrentMC.js.map +1 -1
  70. package/dist/commands/uplink/ExAbsDayMC.d.ts +3 -2
  71. package/dist/commands/uplink/ExAbsDayMC.js +4 -3
  72. package/dist/commands/uplink/ExAbsDayMC.js.map +1 -1
  73. package/dist/commands/uplink/ExAbsHourMC.d.ts +3 -2
  74. package/dist/commands/uplink/ExAbsHourMC.js +4 -3
  75. package/dist/commands/uplink/ExAbsHourMC.js.map +1 -1
  76. package/dist/commands/uplink/GetArchiveDaysMC.d.ts +3 -2
  77. package/dist/commands/uplink/GetArchiveDaysMC.js +4 -3
  78. package/dist/commands/uplink/GetArchiveDaysMC.js.map +1 -1
  79. package/dist/commands/uplink/GetArchiveEvents.d.ts +48 -0
  80. package/dist/commands/uplink/GetArchiveEvents.js +105 -0
  81. package/dist/commands/uplink/GetArchiveEvents.js.map +1 -0
  82. package/dist/commands/uplink/GetArchiveHoursMC.d.ts +3 -2
  83. package/dist/commands/uplink/GetArchiveHoursMC.js +4 -3
  84. package/dist/commands/uplink/GetArchiveHoursMC.js.map +1 -1
  85. package/dist/commands/uplink/GetCurrentMC.d.ts +1 -1
  86. package/dist/commands/uplink/GetCurrentMC.js +4 -3
  87. package/dist/commands/uplink/GetCurrentMC.js.map +1 -1
  88. package/dist/commands/uplink/GetLmicVersion.d.ts +46 -0
  89. package/dist/commands/uplink/GetLmicVersion.js +90 -0
  90. package/dist/commands/uplink/GetLmicVersion.js.map +1 -0
  91. package/dist/commands/uplink/GetParameter.d.ts +30 -0
  92. package/dist/commands/uplink/GetParameter.js +91 -0
  93. package/dist/commands/uplink/GetParameter.js.map +1 -0
  94. package/dist/commands/uplink/GetStatus.d.ts +57 -0
  95. package/dist/commands/uplink/{NewStatus.js → GetStatus.js} +56 -37
  96. package/dist/commands/uplink/GetStatus.js.map +1 -0
  97. package/dist/commands/uplink/LastEvent.d.ts +5 -76
  98. package/dist/commands/uplink/LastEvent.js +67 -115
  99. package/dist/commands/uplink/LastEvent.js.map +1 -1
  100. package/dist/commands/uplink/NewEvent.d.ts +35 -7
  101. package/dist/commands/uplink/NewEvent.js +96 -20
  102. package/dist/commands/uplink/NewEvent.js.map +1 -1
  103. package/dist/commands/uplink/SetTime2000.d.ts +1 -1
  104. package/dist/commands/uplink/SetTime2000.js +3 -3
  105. package/dist/commands/uplink/SetTime2000.js.map +1 -1
  106. package/dist/commands/uplink/SoftRestart.d.ts +1 -1
  107. package/dist/commands/uplink/SoftRestart.js +3 -3
  108. package/dist/commands/uplink/SoftRestart.js.map +1 -1
  109. package/dist/commands/uplink/Time2000.d.ts +5 -5
  110. package/dist/commands/uplink/Time2000.js +6 -7
  111. package/dist/commands/uplink/Time2000.js.map +1 -1
  112. package/dist/commands/uplink/index.d.ts +5 -2
  113. package/dist/commands/uplink/index.js +5 -2
  114. package/dist/commands/uplink/index.js.map +1 -1
  115. package/dist/constants/deviceParameters.d.ts +12 -12
  116. package/dist/constants/deviceParameters.js +12 -12
  117. package/dist/constants/deviceParameters.js.map +1 -1
  118. package/dist/constants/{directionTypes.js → directions.js} +1 -1
  119. package/dist/constants/directions.js.map +1 -0
  120. package/dist/constants/events.d.ts +30 -4
  121. package/dist/constants/events.js +30 -4
  122. package/dist/constants/events.js.map +1 -1
  123. package/dist/constants/hardwareTypes.d.ts +2 -2
  124. package/dist/constants/hardwareTypes.js +2 -2
  125. package/dist/constants/index.d.ts +1 -1
  126. package/dist/constants/index.js +1 -1
  127. package/dist/constants/index.js.map +1 -1
  128. package/dist/utils/message.js +2 -2
  129. package/dist/utils/message.js.map +1 -1
  130. package/dist/utils/time.d.ts +20 -3
  131. package/dist/utils/time.js +2 -2
  132. package/dist/utils/time.js.map +1 -1
  133. package/package.json +2 -1
  134. package/readme.md +33 -16
  135. package/dist/commands/downlink/NewStatus.d.ts +0 -25
  136. package/dist/commands/downlink/NewStatus.js +0 -37
  137. package/dist/commands/downlink/NewStatus.js.map +0 -1
  138. package/dist/commands/uplink/NewStatus.d.ts +0 -56
  139. package/dist/commands/uplink/NewStatus.js.map +0 -1
  140. package/dist/constants/directionTypes.js.map +0 -1
  141. package/dist/constants/general.d.ts +0 -1
  142. package/dist/constants/general.js +0 -2
  143. package/dist/constants/general.js.map +0 -1
  144. package/dist/utils/getBitArrayFromNumber.d.ts +0 -14
  145. package/dist/utils/getBitArrayFromNumber.js +0 -15
  146. package/dist/utils/getBitArrayFromNumber.js.map +0 -1
  147. package/dist/utils/getIntFromBitString.d.ts +0 -6
  148. package/dist/utils/getIntFromBitString.js +0 -6
  149. package/dist/utils/getIntFromBitString.js.map +0 -1
  150. /package/dist/constants/{directionTypes.d.ts → directions.d.ts} +0 -0
@@ -2,49 +2,66 @@ import Command from '../../Command.js';
2
2
  import CommandBinaryBuffer from '../../CommandBinaryBuffer.js';
3
3
  import roundNumber from '../../utils/roundNumber.js';
4
4
  import * as hardwareTypes from '../../constants/hardwareTypes.js';
5
- import { UPLINK } from '../../constants/directionTypes.js';
5
+ import { UPLINK } from '../../constants/directions.js';
6
6
  const COMMAND_ID = 0x14;
7
- const COMMAND_TITLE = 'NEW_STATUS';
8
7
  const COMMAND_BODY_MAX_SIZE = 20;
9
- const UNKNOWN_RESISTANT = 65535;
8
+ const UNKNOWN_BATTERY_RESISTANCE = 65535;
10
9
  // max battery capacity, 254 - 100%
11
10
  const UNKNOWN_BATTERY_CAPACITY = 255;
11
+ const examples = [
12
+ {
13
+ name: 'status for GAZM0NEW',
14
+ parameters: {
15
+ software: { type: 2, version: 10 },
16
+ hardware: { type: hardwareTypes.GAZM0NEW, version: 1 },
17
+ data: {
18
+ batteryVoltage: { low: 3158, high: 3522 },
19
+ batteryInternalResistance: 10034,
20
+ temperature: 14,
21
+ remainingBatteryCapacity: 41,
22
+ lastEventSequenceNumber: 34
23
+ }
24
+ },
25
+ hex: { header: '14 0c', body: '02 0a 03 01 c5 6d c2 27 32 0e 68 22' }
26
+ }
27
+ ];
12
28
  /**
13
29
  * Uplink command.
14
30
  *
15
31
  * @example
16
32
  * ```js
17
- * import NewStatus from 'jooby-codec/commands/uplink/NewStatus';
33
+ * import GetStatus from 'jooby-codec/commands/uplink/GetStatus';
18
34
  *
19
35
  * const parameters = {
20
- * software: {type: 4, version: 10},
21
- * hardware: {type: 1, version: 1},
36
+ * software: {type: 2, version: 10},
37
+ * hardware: {type: 3, version: 1},
22
38
  * data: {
23
- * voltage: {
24
- * low: 63,
25
- * high: 144
39
+ * batteryVoltage: {
40
+ * low: 3158,
41
+ * high: 3522
26
42
  * },
27
- * internalResistance: 10034,
43
+ * batteryInternalResistance: 10034,
28
44
  * temperature: 14,
29
- * remindedBatteryCapacity: 41,
45
+ * remainingBatteryCapacity: 41,
30
46
  * lastEventSequenceNumber: 34
31
47
  * }
32
48
  * };
33
49
  *
34
- * const command = new NewStatus(parameters);
50
+ * const command = new GetStatus(parameters);
35
51
  *
36
52
  * // output command binary in hex representation
37
53
  * console.log(command.toHex());
38
- * // 14 0c 04 0a 01 01 03 f0 90 27 32 0e 68 22
54
+ * // 14 0c 02 0a 03 01 c5 6d c2 27 32 0e 68 22
39
55
  * ```
40
56
  *
41
- * [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/NewStatus.md#response)
57
+ * [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/GetStatus.md#response)
42
58
  */
43
- class NewStatus extends Command {
59
+ class GetStatus extends Command {
44
60
  constructor(parameters) {
45
61
  super();
46
62
  this.parameters = parameters;
47
63
  }
64
+ // data - only body (without header)
48
65
  static fromBytes(data) {
49
66
  const buffer = new CommandBinaryBuffer(data);
50
67
  const software = { type: buffer.getUint8(), version: buffer.getUint8() };
@@ -64,20 +81,20 @@ class NewStatus extends Command {
64
81
  case hardwareTypes.WATER:
65
82
  case hardwareTypes.PLC2LORA:
66
83
  statusData = {
67
- voltage: buffer.getBatterVoltage(),
68
- internalResistance: buffer.getUint16(false),
84
+ batteryVoltage: buffer.getBatteryVoltage(),
85
+ batteryInternalResistance: buffer.getUint16(false),
69
86
  temperature: buffer.getUint8(),
70
- remindedBatteryCapacity: buffer.getUint8(),
87
+ remainingBatteryCapacity: buffer.getUint8(),
71
88
  lastEventSequenceNumber: buffer.getUint8()
72
89
  };
73
- if (statusData.internalResistance === UNKNOWN_RESISTANT) {
74
- statusData.internalResistance = undefined;
90
+ if (statusData.batteryInternalResistance === UNKNOWN_BATTERY_RESISTANCE) {
91
+ statusData.batteryInternalResistance = undefined;
75
92
  }
76
- if (statusData.remindedBatteryCapacity === UNKNOWN_BATTERY_CAPACITY) {
77
- statusData.remindedBatteryCapacity = undefined;
93
+ if (statusData.remainingBatteryCapacity === UNKNOWN_BATTERY_CAPACITY) {
94
+ statusData.remainingBatteryCapacity = undefined;
78
95
  }
79
- else if (statusData.remindedBatteryCapacity !== undefined) {
80
- statusData.remindedBatteryCapacity = roundNumber((statusData.remindedBatteryCapacity * 100) / (UNKNOWN_BATTERY_CAPACITY - 1), 0);
96
+ else if (statusData.remainingBatteryCapacity !== undefined) {
97
+ statusData.remainingBatteryCapacity = roundNumber((statusData.remainingBatteryCapacity * 100) / (UNKNOWN_BATTERY_CAPACITY - 1), 0);
81
98
  }
82
99
  break;
83
100
  case hardwareTypes.MTXLORA:
@@ -85,8 +102,9 @@ class NewStatus extends Command {
85
102
  default:
86
103
  throw new Error(`${this.getId()}: hardware type ${hardware.type} is not supported`);
87
104
  }
88
- return new NewStatus({ software, hardware, data: statusData });
105
+ return new GetStatus({ software, hardware, data: statusData });
89
106
  }
107
+ // returns full message - header with body
90
108
  toBytes() {
91
109
  const { software, hardware, data } = this.parameters;
92
110
  const buffer = new CommandBinaryBuffer(COMMAND_BODY_MAX_SIZE);
@@ -109,32 +127,33 @@ class NewStatus extends Command {
109
127
  case hardwareTypes.WATER:
110
128
  case hardwareTypes.PLC2LORA:
111
129
  statusData = data;
112
- buffer.setBatterVoltage(statusData.voltage);
113
- if (statusData.internalResistance === undefined) {
114
- buffer.setUint16(UNKNOWN_RESISTANT, false);
130
+ buffer.setBatteryVoltage(statusData.batteryVoltage);
131
+ if (statusData.batteryInternalResistance === undefined) {
132
+ buffer.setUint16(UNKNOWN_BATTERY_RESISTANCE, false);
115
133
  }
116
134
  else {
117
- buffer.setUint16(statusData.internalResistance, false);
135
+ buffer.setUint16(statusData.batteryInternalResistance, false);
118
136
  }
119
137
  buffer.setUint8(statusData.temperature);
120
- if (statusData.remindedBatteryCapacity === undefined) {
138
+ if (statusData.remainingBatteryCapacity === undefined) {
121
139
  buffer.setUint8(UNKNOWN_BATTERY_CAPACITY);
122
140
  }
123
141
  else {
124
- buffer.setUint8((UNKNOWN_BATTERY_CAPACITY - 1) * (statusData.remindedBatteryCapacity / 100));
142
+ buffer.setUint8((UNKNOWN_BATTERY_CAPACITY - 1) * (statusData.remainingBatteryCapacity / 100));
125
143
  }
126
144
  buffer.setUint8(statusData.lastEventSequenceNumber);
127
145
  break;
128
146
  case hardwareTypes.MTXLORA:
129
147
  case hardwareTypes.ELIMP:
130
148
  default:
131
- throw new Error(`${NewStatus.getId()}: hardware type ${hardware.type} is not supported`);
149
+ throw new Error(`${GetStatus.getId()}: hardware type ${hardware.type} is not supported`);
132
150
  }
133
151
  return Command.toBytes(COMMAND_ID, buffer.getBytesToOffset());
134
152
  }
135
153
  }
136
- NewStatus.id = COMMAND_ID;
137
- NewStatus.directionType = UPLINK;
138
- NewStatus.title = COMMAND_TITLE;
139
- export default NewStatus;
140
- //# sourceMappingURL=NewStatus.js.map
154
+ GetStatus.id = COMMAND_ID;
155
+ GetStatus.directionType = UPLINK;
156
+ GetStatus.examples = examples;
157
+ GetStatus.hasParameters = true;
158
+ export default GetStatus;
159
+ //# sourceMappingURL=GetStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetStatus.js","sourceRoot":"","sources":["../../../src/commands/uplink/GetStatus.ts"],"names":[],"mappings":"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"}
@@ -1,77 +1,5 @@
1
- import Command from '../../Command.js';
2
- interface ILastEventGasStatus {
3
- /** the battery voltage has dropped below the set threshold */
4
- isBatteryLow?: boolean;
5
- /** there is a magnetic field influence */
6
- isMagneticInfluence?: boolean;
7
- /** button is release (device is unmounted) */
8
- isButtonReleased?: boolean;
9
- /** the device has detected a loss of connection to the server */
10
- isConnectionLost?: boolean;
11
- }
12
- interface ILastEvent2ChannelStatus {
13
- /** the battery voltage has dropped below the set threshold */
14
- isBatteryLow?: boolean;
15
- /** the device has detected a loss of connection to the server */
16
- isConnectionLost?: boolean;
17
- /** the first channel is not active */
18
- isFirstChannelInactive?: boolean;
19
- /** the second channel is not active */
20
- isSecondChannelInactive?: boolean;
21
- }
22
- interface ILastEventElimpStatus {
23
- /** the device has detected a loss of connection to the server */
24
- isConnectionLost?: boolean;
25
- }
26
- interface ILastEventWaterStatus {
27
- /** the battery voltage has dropped below the set threshold */
28
- isBatteryLow?: boolean;
29
- /** the device has detected a loss of connection to the server */
30
- isConnectionLost?: boolean;
31
- }
32
- interface ILastEvent4ChannelStatus {
33
- /** the battery voltage has dropped below the set threshold */
34
- isBatteryLow?: boolean;
35
- /** the device has detected a loss of connection to the server */
36
- isConnectionLost?: boolean;
37
- /** the first channel is not active */
38
- isFirstChannelInactive?: boolean;
39
- /** the second channel is not active */
40
- isSecondChannelInactive?: boolean;
41
- /** the third channel is not active */
42
- isThirdChannelInactive?: boolean;
43
- /** the forth channel is not active */
44
- isForthChannelInactive?: boolean;
45
- }
46
- interface ILastEventMtxStatus {
47
- /** meter case is open */
48
- isMeterCaseOpen?: boolean;
49
- /** there is a magnetic field influence */
50
- isMagneticInfluence?: boolean;
51
- /** parameters set remotely */
52
- isParametersSetRemotely?: boolean;
53
- /** parameters set locally */
54
- isParametersSetLocally?: boolean;
55
- /** meter program restart */
56
- isMeterProgramRestarted?: boolean;
57
- /** incorrect password and lockout */
58
- isLockedOut?: boolean;
59
- /** time set */
60
- isTimeSet?: boolean;
61
- /** time correction */
62
- isTimeCorrected?: boolean;
63
- /** meter failure */
64
- isMeterFailure?: boolean;
65
- /** meter terminal box is open */
66
- isMeterTerminalBoxOpen?: boolean;
67
- /** meter module compartment is open */
68
- isModuleCompartmentOpen?: boolean;
69
- /** tariff plan changed */
70
- isTariffPlanChanged?: boolean;
71
- /** new tariff plan received */
72
- isNewTariffPlanReceived?: boolean;
73
- }
74
- type TLastEventStatus = ILastEventGasStatus | ILastEvent2ChannelStatus | ILastEventElimpStatus | ILastEventWaterStatus | ILastEvent4ChannelStatus | ILastEventMtxStatus;
1
+ import Command, { TCommandExampleList } from '../../Command.js';
2
+ import { TEventStatus } from '../../CommandBinaryBuffer.js';
75
3
  /**
76
4
  * LastEvent command parameters
77
5
  *
@@ -82,7 +10,7 @@ interface ILastEventParameters {
82
10
  /** unique event number */
83
11
  sequenceNumber: number;
84
12
  /** object with boolean values depending on the device hardware type */
85
- status: TLastEventStatus;
13
+ status: TEventStatus;
86
14
  }
87
15
  /**
88
16
  * Uplink command.
@@ -109,7 +37,8 @@ declare class LastEvent extends Command {
109
37
  constructor(parameters: ILastEventParameters, hardwareType: number);
110
38
  static readonly id = 96;
111
39
  static readonly directionType = 2;
112
- static readonly title = "LAST_EVENT";
40
+ static readonly examples: TCommandExampleList;
41
+ static readonly hasParameters = true;
113
42
  static fromBytes(data: Uint8Array, hardwareType?: number): LastEvent;
114
43
  toBytes(): Uint8Array;
115
44
  }
@@ -1,77 +1,67 @@
1
1
  import Command from '../../Command.js';
2
- import * as hardwareTypes from '../../constants/hardwareTypes.js';
3
2
  import CommandBinaryBuffer from '../../CommandBinaryBuffer.js';
4
- import * as bitSet from '../../utils/bitSet.js';
5
- import { UPLINK } from '../../constants/directionTypes.js';
3
+ import { UPLINK } from '../../constants/directions.js';
4
+ import * as hardwareTypes from '../../constants/hardwareTypes.js';
6
5
  const COMMAND_ID = 0x60;
7
- const COMMAND_TITLE = 'LAST_EVENT';
8
- const GAS_HARDWARE_TYPES = [
9
- hardwareTypes.GAZM0,
10
- hardwareTypes.GAZM0NEW,
11
- hardwareTypes.GAZM3,
12
- hardwareTypes.GAZWLE
13
- ];
14
- const TWO_CHANNELS_HARDWARE_TYPES = [
15
- hardwareTypes.IMP2AS,
16
- hardwareTypes.IMP2EU,
17
- hardwareTypes.IMP2IN,
18
- hardwareTypes.NOVATOR
19
- ];
20
- const ELIMP_HARDWARE_TYPES = [
21
- hardwareTypes.ELIMP
22
- ];
23
- const WATER_HARDWARE_TYPES = [
24
- hardwareTypes.WATER
25
- ];
26
- const FOUR_CHANNELS_HARDWARE_TYPES = [
27
- hardwareTypes.IMP4EU,
28
- hardwareTypes.IMP4IN
29
- ];
30
- const MTX_HARDWARE_TYPES = [
31
- hardwareTypes.MTXLORA
6
+ const examples = [
7
+ {
8
+ name: 'status for GAZM0NEW',
9
+ parameters: {
10
+ sequenceNumber: 32,
11
+ status: {
12
+ isBatteryLow: true,
13
+ isButtonReleased: false,
14
+ isConnectionLost: true,
15
+ isMagneticInfluence: false
16
+ }
17
+ },
18
+ hardwareType: hardwareTypes.GAZM0NEW,
19
+ hex: { header: '62', body: '20 09' }
20
+ },
21
+ {
22
+ name: 'status for IMP4EU',
23
+ parameters: {
24
+ sequenceNumber: 16,
25
+ status: {
26
+ // first byte: 11100001 = e1 (225)
27
+ isBatteryLow: true,
28
+ isConnectionLost: false,
29
+ isFirstChannelInactive: false,
30
+ isSecondChannelInactive: true,
31
+ isThirdChannelInactive: true,
32
+ // second byte: 00000001 = 01
33
+ isForthChannelInactive: true
34
+ }
35
+ },
36
+ hardwareType: hardwareTypes.IMP4EU,
37
+ hex: { header: '63', body: '10 e1 01' }
38
+ },
39
+ {
40
+ name: 'status for MTXLORA',
41
+ parameters: {
42
+ sequenceNumber: 48,
43
+ status: {
44
+ // first byte: 10000011 = 83 (131)
45
+ isMeterCaseOpen: true,
46
+ isMagneticInfluence: true,
47
+ isParametersSetRemotely: false,
48
+ isParametersSetLocally: false,
49
+ isMeterProgramRestarted: false,
50
+ isLockedOut: false,
51
+ isTimeSet: false,
52
+ isTimeCorrected: true,
53
+ // second byte: 00001010 = 0a (10)
54
+ isMeterFailure: false,
55
+ isMeterTerminalBoxOpen: true,
56
+ isModuleCompartmentOpen: false,
57
+ isTariffPlanChanged: true,
58
+ isNewTariffPlanReceived: false
59
+ }
60
+ },
61
+ hardwareType: hardwareTypes.MTXLORA,
62
+ hex: { header: '63', body: '30 83 0a' }
63
+ }
32
64
  ];
33
- const gasBitMask = {
34
- isBatteryLow: 2 ** 0,
35
- isMagneticInfluence: 2 ** 1,
36
- isButtonReleased: 2 ** 2,
37
- isConnectionLost: 2 ** 3
38
- };
39
- const twoChannelBitMask = {
40
- isBatteryLow: 2 ** 0,
41
- isConnectionLost: 2 ** 3,
42
- isFirstChannelInactive: 2 ** 4,
43
- isSecondChannelInactive: 2 ** 5
44
- };
45
- const elimpBitMask = {
46
- isConnectionLost: 2 ** 3
47
- };
48
- const waterBitMask = {
49
- isBatteryLow: 2 ** 0,
50
- isConnectionLost: 2 ** 3
51
- };
52
- const fourChannelBitMask = {
53
- isBatteryLow: 2 ** 0,
54
- isConnectionLost: 2 ** 3,
55
- isFirstChannelInactive: 2 ** 4,
56
- isSecondChannelInactive: 2 ** 5,
57
- isThirdChannelInactive: 2 ** 6,
58
- isForthChannelInactive: 2 ** 7
59
- };
60
- const mtxBitMask = {
61
- isMeterCaseOpen: 2 ** 0,
62
- isMagneticInfluence: 2 ** 1,
63
- isParametersSetRemotely: 2 ** 2,
64
- isParametersSetLocally: 2 ** 3,
65
- isMeterProgramRestarted: 2 ** 4,
66
- isLockedOut: 2 ** 5,
67
- isTimeSet: 2 ** 6,
68
- isTimeCorrected: 2 ** 7,
69
- isMeterFailure: 2 ** 8,
70
- isMeterTerminalBoxOpen: 2 ** 9,
71
- isModuleCompartmentOpen: 2 ** 10,
72
- isTariffPlanChanged: 2 ** 11,
73
- isNewTariffPlanReceived: 2 ** 12
74
- };
75
65
  /**
76
66
  * Uplink command.
77
67
  *
@@ -104,61 +94,23 @@ class LastEvent extends Command {
104
94
  }
105
95
  const buffer = new CommandBinaryBuffer(data);
106
96
  const sequenceNumber = buffer.getUint8();
107
- let status;
108
- if (GAS_HARDWARE_TYPES.includes(hardwareType)) {
109
- status = bitSet.toObject(gasBitMask, buffer.getUint8());
110
- }
111
- else if (TWO_CHANNELS_HARDWARE_TYPES.includes(hardwareType)) {
112
- status = bitSet.toObject(twoChannelBitMask, buffer.getUint8());
113
- }
114
- else if (ELIMP_HARDWARE_TYPES.includes(hardwareType)) {
115
- status = bitSet.toObject(elimpBitMask, buffer.getUint8());
116
- }
117
- else if (WATER_HARDWARE_TYPES.includes(hardwareType)) {
118
- status = bitSet.toObject(waterBitMask, buffer.getUint8());
119
- }
120
- else if (FOUR_CHANNELS_HARDWARE_TYPES.includes(hardwareType)) {
121
- status = bitSet.toObject(fourChannelBitMask, buffer.getExtendedValue());
122
- }
123
- else if (MTX_HARDWARE_TYPES.includes(hardwareType)) {
124
- status = bitSet.toObject(mtxBitMask, buffer.getUint16());
125
- }
126
- else {
127
- throw new Error('wrong hardwareType');
128
- }
97
+ const status = buffer.getEventStatus(hardwareType);
129
98
  return new LastEvent({ sequenceNumber, status }, hardwareType);
130
99
  }
131
100
  // returns full message - header with body
132
101
  toBytes() {
133
102
  const { sequenceNumber, status } = this.parameters;
134
- const buffer = new CommandBinaryBuffer([...FOUR_CHANNELS_HARDWARE_TYPES, ...MTX_HARDWARE_TYPES].includes(this.hardwareType) ? 3 : 2);
103
+ const buffer = new CommandBinaryBuffer(
104
+ // sequenceNumber size + status size
105
+ 1 + CommandBinaryBuffer.getEventStatusSize(this.hardwareType));
135
106
  buffer.setUint8(sequenceNumber);
136
- if (GAS_HARDWARE_TYPES.includes(this.hardwareType)) {
137
- buffer.setUint8(bitSet.fromObject(gasBitMask, status));
138
- }
139
- else if (TWO_CHANNELS_HARDWARE_TYPES.includes(this.hardwareType)) {
140
- buffer.setUint8(bitSet.fromObject(twoChannelBitMask, status));
141
- }
142
- else if (ELIMP_HARDWARE_TYPES.includes(this.hardwareType)) {
143
- buffer.setUint8(bitSet.fromObject(elimpBitMask, status));
144
- }
145
- else if (WATER_HARDWARE_TYPES.includes(this.hardwareType)) {
146
- buffer.setUint8(bitSet.fromObject(waterBitMask, status));
147
- }
148
- else if (FOUR_CHANNELS_HARDWARE_TYPES.includes(this.hardwareType)) {
149
- buffer.setExtendedValue(bitSet.fromObject(fourChannelBitMask, status));
150
- }
151
- else if (MTX_HARDWARE_TYPES.includes(this.hardwareType)) {
152
- buffer.setUint16(bitSet.fromObject(mtxBitMask, status));
153
- }
154
- else {
155
- throw new Error('wrong hardwareType');
156
- }
107
+ buffer.setEventStatus(this.hardwareType, status);
157
108
  return Command.toBytes(COMMAND_ID, buffer.toUint8Array());
158
109
  }
159
110
  }
160
111
  LastEvent.id = COMMAND_ID;
161
112
  LastEvent.directionType = UPLINK;
162
- LastEvent.title = COMMAND_TITLE;
113
+ LastEvent.examples = examples;
114
+ LastEvent.hasParameters = true;
163
115
  export default LastEvent;
164
116
  //# sourceMappingURL=LastEvent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LastEvent.js","sourceRoot":"","sources":["../../../src/commands/uplink/LastEvent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LastEvent.js","sourceRoot":"","sources":["../../../src/commands/uplink/LastEvent.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,33 @@
1
- import Command from '../../Command.js';
1
+ import Command, { TCommandExampleList } from '../../Command.js';
2
+ import { IEventMtxStatus } from '../../CommandBinaryBuffer.js';
3
+ import { TTime2000 } from '../../utils/time.js';
2
4
  interface IEventBase {
3
5
  }
6
+ interface IEventTime extends IEventBase {
7
+ time: TTime2000;
8
+ }
9
+ interface IEventBatteryAlarm extends IEventBase {
10
+ voltage: number;
11
+ }
12
+ /**
13
+ * MTX meters activation event.
14
+ */
15
+ interface IEventActivateMtx extends IEventTime {
16
+ /**
17
+ * hex string, 8 bytes contains unique meter ID
18
+ * @example
19
+ * '00 1A 79 88 17 01 23 56'
20
+ */
21
+ deviceId: string;
22
+ }
23
+ interface IEventConnection extends IEventBase {
24
+ channel: number;
25
+ value: number;
26
+ }
27
+ interface IEventMtx extends IEventBase {
28
+ status: IEventMtxStatus;
29
+ }
30
+ type TEventData = IEventTime | IEventBatteryAlarm | IEventActivateMtx | IEventConnection | IEventMtx;
4
31
  /**
5
32
  * NewEvent command parameters
6
33
  *
@@ -8,13 +35,13 @@ interface IEventBase {
8
35
  * ```js
9
36
  * import {constants} from 'jooby-codec'
10
37
  *
11
- * // `Magnet On` event at 2023-04-05 13:17:20 GMT
12
- * {id: constants.events.MAGNET_ON, sequenceNumber: 1, data: {seconds: 734015840}}
38
+ * // `MAGNET_ON` event at 2023-04-05 13:17:20 GMT
39
+ * {id: constants.events.MAGNET_ON, sequenceNumber: 1, data: {time: 734015840}}
13
40
  */
14
41
  interface INewEventParameters {
15
42
  id: number;
16
43
  sequenceNumber: number;
17
- data: IEventBase;
44
+ data: TEventData;
18
45
  }
19
46
  /**
20
47
  * Uplink command.
@@ -24,8 +51,8 @@ interface INewEventParameters {
24
51
  * import {constants} from 'jooby-codec'
25
52
  * import NewEvent from 'jooby-codec/commands/uplink/NewEvent';
26
53
  *
27
- * // `Magnet On` event at 2023-04-05 13:17:20 GMT
28
- * const parameters = {id: constants.events.MAGNET_ON, sequenceNumber: 3, data: {seconds: 734015840}};
54
+ * // `MAGNET_ON` event at 2023-04-05 13:17:20 GMT
55
+ * const parameters = {id: constants.events.MAGNET_ON, sequenceNumber: 3, data: {time: 734015840}};
29
56
  * const command = new NewEvent(parameters);
30
57
  *
31
58
  * // output command binary in hex representation
@@ -40,7 +67,8 @@ declare class NewEvent extends Command {
40
67
  constructor(parameters: INewEventParameters);
41
68
  static readonly id = 21;
42
69
  static readonly directionType = 2;
43
- static readonly title = "NEW_EVENT";
70
+ static readonly examples: TCommandExampleList;
71
+ static readonly hasParameters = true;
44
72
  static fromBytes(data: Uint8Array): NewEvent;
45
73
  toBytes(): Uint8Array;
46
74
  }