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.
- package/dist/Command.d.ts +1 -0
- package/dist/Command.js +3 -2
- package/dist/Command.js.map +1 -1
- package/dist/CommandBinaryBuffer.d.ts +190 -32
- package/dist/CommandBinaryBuffer.js +301 -2
- package/dist/CommandBinaryBuffer.js.map +1 -1
- package/dist/commands/downlink/CorrectTime2000.d.ts +1 -6
- package/dist/commands/downlink/CorrectTime2000.js +2 -8
- package/dist/commands/downlink/CorrectTime2000.js.map +1 -1
- package/dist/commands/downlink/ExAbsArchiveDaysMC.d.ts +5 -10
- package/dist/commands/downlink/ExAbsArchiveDaysMC.js +3 -9
- package/dist/commands/downlink/ExAbsArchiveDaysMC.js.map +1 -1
- package/dist/commands/downlink/ExAbsArchiveHoursMC.d.ts +5 -10
- package/dist/commands/downlink/ExAbsArchiveHoursMC.js +3 -9
- package/dist/commands/downlink/ExAbsArchiveHoursMC.js.map +1 -1
- package/dist/commands/downlink/ExAbsCurrentMC.d.ts +1 -6
- package/dist/commands/downlink/ExAbsCurrentMC.js +3 -8
- package/dist/commands/downlink/ExAbsCurrentMC.js.map +1 -1
- package/dist/commands/downlink/GetArchiveDaysMC.d.ts +5 -5
- package/dist/commands/downlink/GetArchiveDaysMC.js +3 -4
- package/dist/commands/downlink/GetArchiveDaysMC.js.map +1 -1
- package/dist/commands/downlink/GetArchiveEvents.d.ts +39 -0
- package/dist/commands/downlink/GetArchiveEvents.js +58 -0
- package/dist/commands/downlink/GetArchiveEvents.js.map +1 -0
- package/dist/commands/downlink/GetArchiveHoursMC.d.ts +5 -10
- package/dist/commands/downlink/GetArchiveHoursMC.js +3 -9
- package/dist/commands/downlink/GetArchiveHoursMC.js.map +1 -1
- package/dist/commands/downlink/GetCurrentMC.d.ts +1 -1
- package/dist/commands/downlink/GetCurrentMC.js +3 -3
- package/dist/commands/downlink/GetCurrentMC.js.map +1 -1
- package/dist/commands/downlink/GetLmicVersion.d.ts +25 -0
- package/dist/commands/downlink/GetLmicVersion.js +41 -0
- package/dist/commands/downlink/GetLmicVersion.js.map +1 -0
- package/dist/commands/downlink/GetParameter.d.ts +37 -0
- package/dist/commands/downlink/GetParameter.js +64 -0
- package/dist/commands/downlink/GetParameter.js.map +1 -0
- package/dist/commands/downlink/GetStatus.d.ts +26 -0
- package/dist/commands/downlink/GetStatus.js +45 -0
- package/dist/commands/downlink/GetStatus.js.map +1 -0
- package/dist/commands/downlink/SetParameter.d.ts +6 -56
- package/dist/commands/downlink/SetParameter.js +45 -105
- package/dist/commands/downlink/SetParameter.js.map +1 -1
- package/dist/commands/downlink/SetTime2000.d.ts +1 -6
- package/dist/commands/downlink/SetTime2000.js +2 -8
- package/dist/commands/downlink/SetTime2000.js.map +1 -1
- package/dist/commands/downlink/SoftRestart.d.ts +1 -1
- package/dist/commands/downlink/SoftRestart.js +3 -3
- package/dist/commands/downlink/SoftRestart.js.map +1 -1
- package/dist/commands/downlink/index.d.ts +4 -1
- package/dist/commands/downlink/index.js +4 -1
- package/dist/commands/downlink/index.js.map +1 -1
- package/dist/commands/uplink/CorrectTime2000.d.ts +1 -1
- package/dist/commands/uplink/CorrectTime2000.js +3 -3
- package/dist/commands/uplink/CorrectTime2000.js.map +1 -1
- package/dist/commands/uplink/DataDayMC.d.ts +3 -5
- package/dist/commands/uplink/DataDayMC.js +4 -3
- package/dist/commands/uplink/DataDayMC.js.map +1 -1
- package/dist/commands/uplink/DataHourMC.d.ts +3 -2
- package/dist/commands/uplink/DataHourMC.js +4 -3
- package/dist/commands/uplink/DataHourMC.js.map +1 -1
- package/dist/commands/uplink/ExAbsArchiveDaysMC.d.ts +3 -2
- package/dist/commands/uplink/ExAbsArchiveDaysMC.js +4 -3
- package/dist/commands/uplink/ExAbsArchiveDaysMC.js.map +1 -1
- package/dist/commands/uplink/ExAbsArchiveHoursMC.d.ts +3 -2
- package/dist/commands/uplink/ExAbsArchiveHoursMC.js +4 -3
- package/dist/commands/uplink/ExAbsArchiveHoursMC.js.map +1 -1
- package/dist/commands/uplink/ExAbsCurrentMC.d.ts +1 -1
- package/dist/commands/uplink/ExAbsCurrentMC.js +4 -3
- package/dist/commands/uplink/ExAbsCurrentMC.js.map +1 -1
- package/dist/commands/uplink/ExAbsDayMC.d.ts +3 -2
- package/dist/commands/uplink/ExAbsDayMC.js +4 -3
- package/dist/commands/uplink/ExAbsDayMC.js.map +1 -1
- package/dist/commands/uplink/ExAbsHourMC.d.ts +3 -2
- package/dist/commands/uplink/ExAbsHourMC.js +4 -3
- package/dist/commands/uplink/ExAbsHourMC.js.map +1 -1
- package/dist/commands/uplink/GetArchiveDaysMC.d.ts +3 -2
- package/dist/commands/uplink/GetArchiveDaysMC.js +4 -3
- package/dist/commands/uplink/GetArchiveDaysMC.js.map +1 -1
- package/dist/commands/uplink/GetArchiveEvents.d.ts +48 -0
- package/dist/commands/uplink/GetArchiveEvents.js +105 -0
- package/dist/commands/uplink/GetArchiveEvents.js.map +1 -0
- package/dist/commands/uplink/GetArchiveHoursMC.d.ts +3 -2
- package/dist/commands/uplink/GetArchiveHoursMC.js +4 -3
- package/dist/commands/uplink/GetArchiveHoursMC.js.map +1 -1
- package/dist/commands/uplink/GetCurrentMC.d.ts +1 -1
- package/dist/commands/uplink/GetCurrentMC.js +4 -3
- package/dist/commands/uplink/GetCurrentMC.js.map +1 -1
- package/dist/commands/uplink/GetLmicVersion.d.ts +46 -0
- package/dist/commands/uplink/GetLmicVersion.js +90 -0
- package/dist/commands/uplink/GetLmicVersion.js.map +1 -0
- package/dist/commands/uplink/GetParameter.d.ts +30 -0
- package/dist/commands/uplink/GetParameter.js +91 -0
- package/dist/commands/uplink/GetParameter.js.map +1 -0
- package/dist/commands/uplink/GetStatus.d.ts +57 -0
- package/dist/commands/uplink/{NewStatus.js → GetStatus.js} +56 -37
- package/dist/commands/uplink/GetStatus.js.map +1 -0
- package/dist/commands/uplink/LastEvent.d.ts +5 -76
- package/dist/commands/uplink/LastEvent.js +67 -115
- package/dist/commands/uplink/LastEvent.js.map +1 -1
- package/dist/commands/uplink/NewEvent.d.ts +35 -7
- package/dist/commands/uplink/NewEvent.js +96 -20
- package/dist/commands/uplink/NewEvent.js.map +1 -1
- package/dist/commands/uplink/SetTime2000.d.ts +1 -1
- package/dist/commands/uplink/SetTime2000.js +3 -3
- package/dist/commands/uplink/SetTime2000.js.map +1 -1
- package/dist/commands/uplink/SoftRestart.d.ts +1 -1
- package/dist/commands/uplink/SoftRestart.js +3 -3
- package/dist/commands/uplink/SoftRestart.js.map +1 -1
- package/dist/commands/uplink/Time2000.d.ts +5 -5
- package/dist/commands/uplink/Time2000.js +6 -7
- package/dist/commands/uplink/Time2000.js.map +1 -1
- package/dist/commands/uplink/index.d.ts +5 -2
- package/dist/commands/uplink/index.js +5 -2
- package/dist/commands/uplink/index.js.map +1 -1
- package/dist/constants/deviceParameters.d.ts +12 -12
- package/dist/constants/deviceParameters.js +12 -12
- package/dist/constants/deviceParameters.js.map +1 -1
- package/dist/constants/{directionTypes.js → directions.js} +1 -1
- package/dist/constants/directions.js.map +1 -0
- package/dist/constants/events.d.ts +30 -4
- package/dist/constants/events.js +30 -4
- package/dist/constants/events.js.map +1 -1
- package/dist/constants/hardwareTypes.d.ts +2 -2
- package/dist/constants/hardwareTypes.js +2 -2
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/index.js +1 -1
- package/dist/constants/index.js.map +1 -1
- package/dist/utils/message.js +2 -2
- package/dist/utils/message.js.map +1 -1
- package/dist/utils/time.d.ts +20 -3
- package/dist/utils/time.js +2 -2
- package/dist/utils/time.js.map +1 -1
- package/package.json +2 -1
- package/readme.md +33 -16
- package/dist/commands/downlink/NewStatus.d.ts +0 -25
- package/dist/commands/downlink/NewStatus.js +0 -37
- package/dist/commands/downlink/NewStatus.js.map +0 -1
- package/dist/commands/uplink/NewStatus.d.ts +0 -56
- package/dist/commands/uplink/NewStatus.js.map +0 -1
- package/dist/constants/directionTypes.js.map +0 -1
- package/dist/constants/general.d.ts +0 -1
- package/dist/constants/general.js +0 -2
- package/dist/constants/general.js.map +0 -1
- package/dist/utils/getBitArrayFromNumber.d.ts +0 -14
- package/dist/utils/getBitArrayFromNumber.js +0 -15
- package/dist/utils/getBitArrayFromNumber.js.map +0 -1
- package/dist/utils/getIntFromBitString.d.ts +0 -6
- package/dist/utils/getIntFromBitString.js +0 -6
- package/dist/utils/getIntFromBitString.js.map +0 -1
- /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/
|
|
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
|
|
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
|
|
33
|
+
* import GetStatus from 'jooby-codec/commands/uplink/GetStatus';
|
|
18
34
|
*
|
|
19
35
|
* const parameters = {
|
|
20
|
-
* software: {type:
|
|
21
|
-
* hardware: {type:
|
|
36
|
+
* software: {type: 2, version: 10},
|
|
37
|
+
* hardware: {type: 3, version: 1},
|
|
22
38
|
* data: {
|
|
23
|
-
*
|
|
24
|
-
* low:
|
|
25
|
-
* high:
|
|
39
|
+
* batteryVoltage: {
|
|
40
|
+
* low: 3158,
|
|
41
|
+
* high: 3522
|
|
26
42
|
* },
|
|
27
|
-
*
|
|
43
|
+
* batteryInternalResistance: 10034,
|
|
28
44
|
* temperature: 14,
|
|
29
|
-
*
|
|
45
|
+
* remainingBatteryCapacity: 41,
|
|
30
46
|
* lastEventSequenceNumber: 34
|
|
31
47
|
* }
|
|
32
48
|
* };
|
|
33
49
|
*
|
|
34
|
-
* const command = new
|
|
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
|
|
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/
|
|
57
|
+
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/GetStatus.md#response)
|
|
42
58
|
*/
|
|
43
|
-
class
|
|
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
|
-
|
|
68
|
-
|
|
84
|
+
batteryVoltage: buffer.getBatteryVoltage(),
|
|
85
|
+
batteryInternalResistance: buffer.getUint16(false),
|
|
69
86
|
temperature: buffer.getUint8(),
|
|
70
|
-
|
|
87
|
+
remainingBatteryCapacity: buffer.getUint8(),
|
|
71
88
|
lastEventSequenceNumber: buffer.getUint8()
|
|
72
89
|
};
|
|
73
|
-
if (statusData.
|
|
74
|
-
statusData.
|
|
90
|
+
if (statusData.batteryInternalResistance === UNKNOWN_BATTERY_RESISTANCE) {
|
|
91
|
+
statusData.batteryInternalResistance = undefined;
|
|
75
92
|
}
|
|
76
|
-
if (statusData.
|
|
77
|
-
statusData.
|
|
93
|
+
if (statusData.remainingBatteryCapacity === UNKNOWN_BATTERY_CAPACITY) {
|
|
94
|
+
statusData.remainingBatteryCapacity = undefined;
|
|
78
95
|
}
|
|
79
|
-
else if (statusData.
|
|
80
|
-
statusData.
|
|
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
|
|
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.
|
|
113
|
-
if (statusData.
|
|
114
|
-
buffer.setUint16(
|
|
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.
|
|
135
|
+
buffer.setUint16(statusData.batteryInternalResistance, false);
|
|
118
136
|
}
|
|
119
137
|
buffer.setUint8(statusData.temperature);
|
|
120
|
-
if (statusData.
|
|
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.
|
|
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(`${
|
|
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
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
|
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
|
|
5
|
-
import
|
|
3
|
+
import { UPLINK } from '../../constants/directions.js';
|
|
4
|
+
import * as hardwareTypes from '../../constants/hardwareTypes.js';
|
|
6
5
|
const COMMAND_ID = 0x60;
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
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(
|
|
103
|
+
const buffer = new CommandBinaryBuffer(
|
|
104
|
+
// sequenceNumber size + status size
|
|
105
|
+
1 + CommandBinaryBuffer.getEventStatusSize(this.hardwareType));
|
|
135
106
|
buffer.setUint8(sequenceNumber);
|
|
136
|
-
|
|
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.
|
|
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":"AAAA,OAAO,
|
|
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
|
-
* // `
|
|
12
|
-
* {id: constants.events.MAGNET_ON, sequenceNumber: 1, data: {
|
|
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:
|
|
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
|
-
* // `
|
|
28
|
-
* const parameters = {id: constants.events.MAGNET_ON, sequenceNumber: 3, data: {
|
|
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
|
|
70
|
+
static readonly examples: TCommandExampleList;
|
|
71
|
+
static readonly hasParameters = true;
|
|
44
72
|
static fromBytes(data: Uint8Array): NewEvent;
|
|
45
73
|
toBytes(): Uint8Array;
|
|
46
74
|
}
|