jooby-codec 1.0.1 → 1.2.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 +3 -3
- package/dist/Command.js +14 -10
- package/dist/Command.js.map +1 -1
- package/dist/CommandBinaryBuffer.d.ts +59 -0
- package/dist/CommandBinaryBuffer.js +83 -2
- package/dist/CommandBinaryBuffer.js.map +1 -1
- package/dist/UnknownCommand.d.ts +20 -0
- package/dist/UnknownCommand.js +22 -0
- package/dist/UnknownCommand.js.map +1 -0
- package/dist/commands/downlink/CorrectTime2000.d.ts +2 -2
- package/dist/commands/downlink/CorrectTime2000.js +2 -1
- package/dist/commands/downlink/CorrectTime2000.js.map +1 -1
- package/dist/commands/downlink/GetArchiveHoursMul.d.ts +47 -0
- package/dist/commands/downlink/GetArchiveHoursMul.js +66 -0
- package/dist/commands/downlink/GetArchiveHoursMul.js.map +1 -0
- package/dist/commands/downlink/NewStatus.d.ts +25 -0
- package/dist/commands/downlink/NewStatus.js +37 -0
- package/dist/commands/downlink/NewStatus.js.map +1 -0
- package/dist/commands/downlink/SetTime2000.d.ts +2 -2
- package/dist/commands/downlink/SetTime2000.js +2 -1
- package/dist/commands/downlink/SetTime2000.js.map +1 -1
- package/dist/commands/downlink/SoftRestart.d.ts +24 -0
- package/dist/commands/downlink/SoftRestart.js +34 -0
- package/dist/commands/downlink/SoftRestart.js.map +1 -0
- package/dist/commands/downlink/index.d.ts +3 -0
- package/dist/commands/downlink/index.js +3 -0
- package/dist/commands/downlink/index.js.map +1 -1
- package/dist/commands/uplink/CorrectTime2000.d.ts +1 -1
- package/dist/commands/uplink/CorrectTime2000.js +2 -1
- package/dist/commands/uplink/CorrectTime2000.js.map +1 -1
- package/dist/commands/uplink/DataDayMul.d.ts +1 -1
- package/dist/commands/uplink/DataDayMul.js +3 -2
- package/dist/commands/uplink/DataDayMul.js.map +1 -1
- package/dist/commands/uplink/DataHourMul.d.ts +1 -1
- package/dist/commands/uplink/DataHourMul.js +5 -5
- package/dist/commands/uplink/DataHourMul.js.map +1 -1
- package/dist/commands/uplink/ExAbsDayMul.d.ts +1 -1
- package/dist/commands/uplink/ExAbsDayMul.js +3 -3
- package/dist/commands/uplink/ExAbsDayMul.js.map +1 -1
- package/dist/commands/uplink/ExAbsHourMul.d.ts +1 -1
- package/dist/commands/uplink/ExAbsHourMul.js +3 -3
- package/dist/commands/uplink/ExAbsHourMul.js.map +1 -1
- package/dist/commands/uplink/GetArchiveHoursMul.d.ts +28 -0
- package/dist/commands/uplink/GetArchiveHoursMul.js +51 -0
- package/dist/commands/uplink/GetArchiveHoursMul.js.map +1 -0
- package/dist/commands/uplink/GetCurrentMul.d.ts +1 -1
- package/dist/commands/uplink/GetCurrentMul.js +3 -2
- package/dist/commands/uplink/GetCurrentMul.js.map +1 -1
- package/dist/commands/uplink/LastEvent.d.ts +116 -0
- package/dist/commands/uplink/LastEvent.js +164 -0
- package/dist/commands/uplink/LastEvent.js.map +1 -0
- package/dist/commands/uplink/NewEvent.d.ts +30 -1
- package/dist/commands/uplink/NewEvent.js +50 -14
- package/dist/commands/uplink/NewEvent.js.map +1 -1
- package/dist/commands/uplink/NewStatus.d.ts +56 -0
- package/dist/commands/uplink/NewStatus.js +140 -0
- package/dist/commands/uplink/NewStatus.js.map +1 -0
- package/dist/commands/uplink/SetTime2000.d.ts +1 -1
- package/dist/commands/uplink/SetTime2000.js +2 -1
- package/dist/commands/uplink/SetTime2000.js.map +1 -1
- package/dist/commands/uplink/SoftRestart.d.ts +24 -0
- package/dist/commands/uplink/SoftRestart.js +34 -0
- package/dist/commands/uplink/SoftRestart.js.map +1 -0
- package/dist/commands/uplink/Time2000.d.ts +2 -2
- package/dist/commands/uplink/Time2000.js +7 -6
- package/dist/commands/uplink/Time2000.js.map +1 -1
- package/dist/commands/uplink/index.d.ts +5 -0
- package/dist/commands/uplink/index.js +5 -0
- package/dist/commands/uplink/index.js.map +1 -1
- package/dist/constants/directionTypes.d.ts +3 -0
- package/dist/constants/directionTypes.js +4 -0
- package/dist/constants/directionTypes.js.map +1 -0
- package/dist/constants/hardwareTypes.d.ts +70 -0
- package/dist/constants/hardwareTypes.js +71 -0
- package/dist/constants/hardwareTypes.js.map +1 -0
- package/dist/constants/index.d.ts +2 -0
- package/dist/constants/index.js +2 -0
- package/dist/constants/index.js.map +1 -1
- package/dist/utils/bitSet.d.ts +40 -0
- package/dist/utils/bitSet.js +54 -0
- package/dist/utils/bitSet.js.map +1 -0
- package/dist/utils/message.d.ts +2 -5
- package/dist/utils/message.js +30 -30
- package/dist/utils/message.js.map +1 -1
- package/package.json +36 -76
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import Command from '../../Command.js';
|
|
2
|
+
import * as hardwareTypes from '../../constants/hardwareTypes.js';
|
|
3
|
+
import CommandBinaryBuffer from '../../CommandBinaryBuffer.js';
|
|
4
|
+
import * as bitSet from '../../utils/bitSet.js';
|
|
5
|
+
import { UPLINK } from '../../constants/directionTypes.js';
|
|
6
|
+
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
|
|
32
|
+
];
|
|
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
|
+
/**
|
|
76
|
+
* Uplink command.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```js
|
|
80
|
+
* import LastEvent from 'jooby-codec/commands/downlink/LastEvent';
|
|
81
|
+
* import hardwareTypes from 'jooby-codec/constants/hardwareTypes';
|
|
82
|
+
*
|
|
83
|
+
* const command = new LastEvent(
|
|
84
|
+
* {sequenceNumber: 8, status: {isBatteryLow: true}},
|
|
85
|
+
* hardwareTypes.IMP2EU
|
|
86
|
+
* );
|
|
87
|
+
*
|
|
88
|
+
* // output command binary in hex representation
|
|
89
|
+
* console.log(command.toHex());
|
|
90
|
+
* // 62 08 01
|
|
91
|
+
* ```
|
|
92
|
+
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/uplink/LastEvent.md)
|
|
93
|
+
*/
|
|
94
|
+
class LastEvent extends Command {
|
|
95
|
+
constructor(parameters, hardwareType) {
|
|
96
|
+
super();
|
|
97
|
+
this.parameters = parameters;
|
|
98
|
+
this.hardwareType = hardwareType;
|
|
99
|
+
}
|
|
100
|
+
// data - only body (without header)
|
|
101
|
+
static fromBytes(data, hardwareType) {
|
|
102
|
+
if (!hardwareType) {
|
|
103
|
+
throw new Error('hardwareType argument is mandatory');
|
|
104
|
+
}
|
|
105
|
+
const buffer = new CommandBinaryBuffer(data);
|
|
106
|
+
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
|
+
}
|
|
129
|
+
return new LastEvent({ sequenceNumber, status }, hardwareType);
|
|
130
|
+
}
|
|
131
|
+
// returns full message - header with body
|
|
132
|
+
toBytes() {
|
|
133
|
+
const { sequenceNumber, status } = this.parameters;
|
|
134
|
+
const buffer = new CommandBinaryBuffer([...FOUR_CHANNELS_HARDWARE_TYPES, ...MTX_HARDWARE_TYPES].includes(this.hardwareType) ? 3 : 2);
|
|
135
|
+
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
|
+
}
|
|
157
|
+
return Command.toBytes(COMMAND_ID, buffer.toUint8Array());
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
LastEvent.id = COMMAND_ID;
|
|
161
|
+
LastEvent.directionType = UPLINK;
|
|
162
|
+
LastEvent.title = COMMAND_TITLE;
|
|
163
|
+
export default LastEvent;
|
|
164
|
+
//# sourceMappingURL=LastEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LastEvent.js","sourceRoot":"","sources":["../../../src/commands/uplink/LastEvent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,45 @@
|
|
|
1
1
|
import Command from '../../Command.js';
|
|
2
2
|
interface IEventBase {
|
|
3
3
|
}
|
|
4
|
+
/**
|
|
5
|
+
* NewEvent command parameters
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```js
|
|
9
|
+
* import {constants} from 'jooby-codec'
|
|
10
|
+
*
|
|
11
|
+
* // `Magnet On` event at 2023-04-05 13:17:20 GMT
|
|
12
|
+
* {id: constants.events.MAGNET_ON, sequenceNumber: 1, data: {time: 734015840}}
|
|
13
|
+
*/
|
|
4
14
|
interface INewEventParameters {
|
|
5
15
|
id: number;
|
|
6
16
|
sequenceNumber: number;
|
|
7
17
|
data: IEventBase;
|
|
8
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Uplink command.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```js
|
|
24
|
+
* import {constants} from 'jooby-codec'
|
|
25
|
+
* import NewEvent from 'jooby-codec/commands/uplink/NewEvent';
|
|
26
|
+
*
|
|
27
|
+
* // `Magnet On` event at 2023-04-05 13:17:20 GMT
|
|
28
|
+
* const parameters = {id: constants.events.MAGNET_ON, sequenceNumber: 3, data: {time: 734015840}}
|
|
29
|
+
* const command = new NewEvent(parameters);
|
|
30
|
+
*
|
|
31
|
+
* // output command binary in hex representation
|
|
32
|
+
* console.log(command.toHex());
|
|
33
|
+
* // 15 06 01 03 2b c0 31 60
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/uplink/NewEvent.md)
|
|
37
|
+
*/
|
|
9
38
|
declare class NewEvent extends Command {
|
|
10
39
|
parameters: INewEventParameters;
|
|
11
40
|
constructor(parameters: INewEventParameters);
|
|
12
41
|
static readonly id = 21;
|
|
13
|
-
static readonly
|
|
42
|
+
static readonly directionType = 2;
|
|
14
43
|
static readonly title = "NEW_EVENT";
|
|
15
44
|
static fromBytes(data: Uint8Array): NewEvent;
|
|
16
45
|
toBytes(): Uint8Array;
|
|
@@ -1,10 +1,46 @@
|
|
|
1
1
|
import Command from '../../Command.js';
|
|
2
2
|
import CommandBinaryBuffer from '../../CommandBinaryBuffer.js';
|
|
3
|
+
import getHexFromBytes from '../../utils/getHexFromBytes.js';
|
|
4
|
+
import getBytesFromHex from '../../utils/getBytesFromHex.js';
|
|
3
5
|
import * as events from '../../constants/events.js';
|
|
6
|
+
import { UPLINK } from '../../constants/directionTypes.js';
|
|
4
7
|
const COMMAND_ID = 0x15;
|
|
5
8
|
const COMMAND_TITLE = 'NEW_EVENT';
|
|
6
|
-
//
|
|
7
|
-
const COMMAND_BODY_MAX_SIZE =
|
|
9
|
+
// ACTIVATE_MTX are biggest,1 byte event id, 1 byte sequence number, 4 bytes time, 8 bytes mtx address
|
|
10
|
+
const COMMAND_BODY_MAX_SIZE = 14;
|
|
11
|
+
const MTX_ADDRESS_SIZE = 8;
|
|
12
|
+
const getVoltage = (buffer) => buffer.getUint16(false);
|
|
13
|
+
const setVoltage = (buffer, value) => buffer.setUint16(value, false);
|
|
14
|
+
const getDeviceId = (buffer) => {
|
|
15
|
+
const bytes = [];
|
|
16
|
+
for (let i = 0; i < MTX_ADDRESS_SIZE; ++i) {
|
|
17
|
+
bytes.push(buffer.getUint8());
|
|
18
|
+
}
|
|
19
|
+
return getHexFromBytes(new Uint8Array(bytes));
|
|
20
|
+
};
|
|
21
|
+
const setDeviceId = (buffer, value) => {
|
|
22
|
+
const bytes = getBytesFromHex(value);
|
|
23
|
+
bytes.forEach(byte => buffer.setUint8(byte));
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Uplink command.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```js
|
|
30
|
+
* import {constants} from 'jooby-codec'
|
|
31
|
+
* import NewEvent from 'jooby-codec/commands/uplink/NewEvent';
|
|
32
|
+
*
|
|
33
|
+
* // `Magnet On` event at 2023-04-05 13:17:20 GMT
|
|
34
|
+
* const parameters = {id: constants.events.MAGNET_ON, sequenceNumber: 3, data: {time: 734015840}}
|
|
35
|
+
* const command = new NewEvent(parameters);
|
|
36
|
+
*
|
|
37
|
+
* // output command binary in hex representation
|
|
38
|
+
* console.log(command.toHex());
|
|
39
|
+
* // 15 06 01 03 2b c0 31 60
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/uplink/NewEvent.md)
|
|
43
|
+
*/
|
|
8
44
|
class NewEvent extends Command {
|
|
9
45
|
constructor(parameters) {
|
|
10
46
|
super();
|
|
@@ -27,13 +63,13 @@ class NewEvent extends Command {
|
|
|
27
63
|
case events.EV_OPTOLOW:
|
|
28
64
|
case events.EV_OPTOFLASH:
|
|
29
65
|
case events.EV_REJOIN:
|
|
30
|
-
eventData = { time: buffer.
|
|
66
|
+
eventData = { time: buffer.getTime() };
|
|
31
67
|
break;
|
|
32
68
|
case events.BATTERY_ALARM:
|
|
33
|
-
eventData = { voltage: buffer
|
|
69
|
+
eventData = { voltage: getVoltage(buffer) };
|
|
34
70
|
break;
|
|
35
71
|
case events.ACTIVATE_MTX:
|
|
36
|
-
eventData = { time: buffer.
|
|
72
|
+
eventData = { time: buffer.getTime(), deviceId: getDeviceId(buffer) };
|
|
37
73
|
break;
|
|
38
74
|
case events.CONNECT:
|
|
39
75
|
case events.DISCONNECT:
|
|
@@ -43,13 +79,13 @@ class NewEvent extends Command {
|
|
|
43
79
|
eventData = { status1: buffer.getUint8(), status2: buffer.getUint8() };
|
|
44
80
|
break;
|
|
45
81
|
default:
|
|
46
|
-
throw new Error(`${this.getId()}: event ${id} not supported`);
|
|
82
|
+
throw new Error(`${this.getId()}: event ${id} is not supported`);
|
|
47
83
|
}
|
|
48
84
|
return new NewEvent({ id, sequenceNumber, data: eventData });
|
|
49
85
|
}
|
|
50
86
|
toBytes() {
|
|
51
87
|
const { id, sequenceNumber, data } = this.parameters;
|
|
52
|
-
const buffer = new CommandBinaryBuffer(COMMAND_BODY_MAX_SIZE
|
|
88
|
+
const buffer = new CommandBinaryBuffer(COMMAND_BODY_MAX_SIZE);
|
|
53
89
|
let eventData;
|
|
54
90
|
buffer.setUint8(id);
|
|
55
91
|
buffer.setUint8(sequenceNumber);
|
|
@@ -66,16 +102,16 @@ class NewEvent extends Command {
|
|
|
66
102
|
case events.EV_OPTOFLASH:
|
|
67
103
|
case events.EV_REJOIN:
|
|
68
104
|
eventData = data;
|
|
69
|
-
buffer.
|
|
105
|
+
buffer.setTime(eventData.time);
|
|
70
106
|
break;
|
|
71
107
|
case events.BATTERY_ALARM:
|
|
72
108
|
eventData = data;
|
|
73
|
-
buffer
|
|
109
|
+
setVoltage(buffer, eventData.voltage);
|
|
74
110
|
break;
|
|
75
111
|
case events.ACTIVATE_MTX:
|
|
76
112
|
eventData = data;
|
|
77
|
-
buffer.
|
|
78
|
-
buffer
|
|
113
|
+
buffer.setTime(eventData.time);
|
|
114
|
+
setDeviceId(buffer, eventData.deviceId);
|
|
79
115
|
break;
|
|
80
116
|
case events.CONNECT:
|
|
81
117
|
case events.DISCONNECT:
|
|
@@ -86,16 +122,16 @@ class NewEvent extends Command {
|
|
|
86
122
|
case events.EV_MTX:
|
|
87
123
|
eventData = data;
|
|
88
124
|
buffer.setUint8(eventData.status1);
|
|
89
|
-
buffer.
|
|
125
|
+
buffer.setUint8(eventData.status2);
|
|
90
126
|
break;
|
|
91
127
|
default:
|
|
92
|
-
throw new Error(`${NewEvent.getId()}: event ${id} not supported`);
|
|
128
|
+
throw new Error(`${NewEvent.getId()}: event ${id} is not supported`);
|
|
93
129
|
}
|
|
94
130
|
return Command.toBytes(COMMAND_ID, buffer.getBytesToOffset());
|
|
95
131
|
}
|
|
96
132
|
}
|
|
97
133
|
NewEvent.id = COMMAND_ID;
|
|
98
|
-
NewEvent.
|
|
134
|
+
NewEvent.directionType = UPLINK;
|
|
99
135
|
NewEvent.title = COMMAND_TITLE;
|
|
100
136
|
export default NewEvent;
|
|
101
137
|
//# sourceMappingURL=NewEvent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NewEvent.js","sourceRoot":"","sources":["../../../src/commands/uplink/NewEvent.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,mBAAmB,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"NewEvent.js","sourceRoot":"","sources":["../../../src/commands/uplink/NewEvent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import Command from '../../Command.js';
|
|
2
|
+
interface IStatusBase {
|
|
3
|
+
}
|
|
4
|
+
interface IProduct {
|
|
5
|
+
version: number;
|
|
6
|
+
type: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* NewStatus command parameters
|
|
10
|
+
*/
|
|
11
|
+
interface INewStatusParameters {
|
|
12
|
+
software: IProduct;
|
|
13
|
+
hardware: IProduct;
|
|
14
|
+
data: IStatusBase;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Uplink command.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```js
|
|
21
|
+
* import NewStatus from 'jooby-codec/commands/uplink/NewStatus';
|
|
22
|
+
*
|
|
23
|
+
* const parameters = {
|
|
24
|
+
* software: {type: 4, version: 10},
|
|
25
|
+
* hardware: {type: 1, version: 1},
|
|
26
|
+
* data: {
|
|
27
|
+
* voltage: {
|
|
28
|
+
* low: 63,
|
|
29
|
+
* high: 144
|
|
30
|
+
* },
|
|
31
|
+
* internalResistance: 10034,
|
|
32
|
+
* temperature: 14,
|
|
33
|
+
* remindedBatteryCapacity: 41,
|
|
34
|
+
* lastEventSequenceNumber: 34
|
|
35
|
+
* }
|
|
36
|
+
* };
|
|
37
|
+
*
|
|
38
|
+
* const command = new NewStatus(parameters);
|
|
39
|
+
*
|
|
40
|
+
* // output command binary in hex representation
|
|
41
|
+
* console.log(command.toHex());
|
|
42
|
+
* // 14 0c 04 0a 01 01 03 f0 90 27 32 0e 68 22
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/NewStatus.md#response)
|
|
46
|
+
*/
|
|
47
|
+
declare class NewStatus extends Command {
|
|
48
|
+
parameters: INewStatusParameters;
|
|
49
|
+
constructor(parameters: INewStatusParameters);
|
|
50
|
+
static readonly id = 20;
|
|
51
|
+
static readonly directionType = 2;
|
|
52
|
+
static readonly title = "NEW_STATUS";
|
|
53
|
+
static fromBytes(data: Uint8Array): NewStatus;
|
|
54
|
+
toBytes(): Uint8Array;
|
|
55
|
+
}
|
|
56
|
+
export default NewStatus;
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import Command from '../../Command.js';
|
|
2
|
+
import CommandBinaryBuffer from '../../CommandBinaryBuffer.js';
|
|
3
|
+
import roundNumber from '../../utils/roundNumber.js';
|
|
4
|
+
import * as hardwareTypes from '../../constants/hardwareTypes.js';
|
|
5
|
+
import { UPLINK } from '../../constants/directionTypes.js';
|
|
6
|
+
const COMMAND_ID = 0x14;
|
|
7
|
+
const COMMAND_TITLE = 'NEW_STATUS';
|
|
8
|
+
const COMMAND_BODY_MAX_SIZE = 20;
|
|
9
|
+
const UNKNOWN_RESISTANT = 65535;
|
|
10
|
+
// max battery capacity, 254 - 100%
|
|
11
|
+
const UNKNOWN_BATTERY_CAPACITY = 255;
|
|
12
|
+
/**
|
|
13
|
+
* Uplink command.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```js
|
|
17
|
+
* import NewStatus from 'jooby-codec/commands/uplink/NewStatus';
|
|
18
|
+
*
|
|
19
|
+
* const parameters = {
|
|
20
|
+
* software: {type: 4, version: 10},
|
|
21
|
+
* hardware: {type: 1, version: 1},
|
|
22
|
+
* data: {
|
|
23
|
+
* voltage: {
|
|
24
|
+
* low: 63,
|
|
25
|
+
* high: 144
|
|
26
|
+
* },
|
|
27
|
+
* internalResistance: 10034,
|
|
28
|
+
* temperature: 14,
|
|
29
|
+
* remindedBatteryCapacity: 41,
|
|
30
|
+
* lastEventSequenceNumber: 34
|
|
31
|
+
* }
|
|
32
|
+
* };
|
|
33
|
+
*
|
|
34
|
+
* const command = new NewStatus(parameters);
|
|
35
|
+
*
|
|
36
|
+
* // output command binary in hex representation
|
|
37
|
+
* console.log(command.toHex());
|
|
38
|
+
* // 14 0c 04 0a 01 01 03 f0 90 27 32 0e 68 22
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/NewStatus.md#response)
|
|
42
|
+
*/
|
|
43
|
+
class NewStatus extends Command {
|
|
44
|
+
constructor(parameters) {
|
|
45
|
+
super();
|
|
46
|
+
this.parameters = parameters;
|
|
47
|
+
}
|
|
48
|
+
static fromBytes(data) {
|
|
49
|
+
const buffer = new CommandBinaryBuffer(data);
|
|
50
|
+
const software = { type: buffer.getUint8(), version: buffer.getUint8() };
|
|
51
|
+
const hardware = { type: buffer.getUint8(), version: buffer.getUint8() };
|
|
52
|
+
let statusData;
|
|
53
|
+
switch (hardware.type) {
|
|
54
|
+
case hardwareTypes.GAZM3:
|
|
55
|
+
case hardwareTypes.GAZM0:
|
|
56
|
+
case hardwareTypes.GAZM0NEW:
|
|
57
|
+
case hardwareTypes.NOVATOR:
|
|
58
|
+
case hardwareTypes.IMP2EU:
|
|
59
|
+
case hardwareTypes.IMP4EU:
|
|
60
|
+
case hardwareTypes.IMP2AS:
|
|
61
|
+
case hardwareTypes.IMP2IN:
|
|
62
|
+
case hardwareTypes.IMP4IN:
|
|
63
|
+
case hardwareTypes.GAZWLE:
|
|
64
|
+
case hardwareTypes.WATER:
|
|
65
|
+
case hardwareTypes.PLC2LORA:
|
|
66
|
+
statusData = {
|
|
67
|
+
voltage: buffer.getBatterVoltage(),
|
|
68
|
+
internalResistance: buffer.getUint16(false),
|
|
69
|
+
temperature: buffer.getUint8(),
|
|
70
|
+
remindedBatteryCapacity: buffer.getUint8(),
|
|
71
|
+
lastEventSequenceNumber: buffer.getUint8()
|
|
72
|
+
};
|
|
73
|
+
if (statusData.internalResistance === UNKNOWN_RESISTANT) {
|
|
74
|
+
statusData.internalResistance = undefined;
|
|
75
|
+
}
|
|
76
|
+
if (statusData.remindedBatteryCapacity === UNKNOWN_BATTERY_CAPACITY) {
|
|
77
|
+
statusData.remindedBatteryCapacity = undefined;
|
|
78
|
+
}
|
|
79
|
+
else if (statusData.remindedBatteryCapacity !== undefined) {
|
|
80
|
+
statusData.remindedBatteryCapacity = roundNumber((statusData.remindedBatteryCapacity * 100) / (UNKNOWN_BATTERY_CAPACITY - 1), 0);
|
|
81
|
+
}
|
|
82
|
+
break;
|
|
83
|
+
case hardwareTypes.MTXLORA:
|
|
84
|
+
case hardwareTypes.ELIMP:
|
|
85
|
+
default:
|
|
86
|
+
throw new Error(`${this.getId()}: hardware type ${hardware.type} is not supported`);
|
|
87
|
+
}
|
|
88
|
+
return new NewStatus({ software, hardware, data: statusData });
|
|
89
|
+
}
|
|
90
|
+
toBytes() {
|
|
91
|
+
const { software, hardware, data } = this.parameters;
|
|
92
|
+
const buffer = new CommandBinaryBuffer(COMMAND_BODY_MAX_SIZE);
|
|
93
|
+
let statusData;
|
|
94
|
+
buffer.setUint8(software.type);
|
|
95
|
+
buffer.setUint8(software.version);
|
|
96
|
+
buffer.setUint8(hardware.type);
|
|
97
|
+
buffer.setUint8(hardware.version);
|
|
98
|
+
switch (hardware.type) {
|
|
99
|
+
case hardwareTypes.GAZM3:
|
|
100
|
+
case hardwareTypes.GAZM0:
|
|
101
|
+
case hardwareTypes.GAZM0NEW:
|
|
102
|
+
case hardwareTypes.NOVATOR:
|
|
103
|
+
case hardwareTypes.IMP2EU:
|
|
104
|
+
case hardwareTypes.IMP4EU:
|
|
105
|
+
case hardwareTypes.IMP2AS:
|
|
106
|
+
case hardwareTypes.IMP2IN:
|
|
107
|
+
case hardwareTypes.IMP4IN:
|
|
108
|
+
case hardwareTypes.GAZWLE:
|
|
109
|
+
case hardwareTypes.WATER:
|
|
110
|
+
case hardwareTypes.PLC2LORA:
|
|
111
|
+
statusData = data;
|
|
112
|
+
buffer.setBatterVoltage(statusData.voltage);
|
|
113
|
+
if (statusData.internalResistance === undefined) {
|
|
114
|
+
buffer.setUint16(UNKNOWN_RESISTANT, false);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
buffer.setUint16(statusData.internalResistance, false);
|
|
118
|
+
}
|
|
119
|
+
buffer.setUint8(statusData.temperature);
|
|
120
|
+
if (statusData.remindedBatteryCapacity === undefined) {
|
|
121
|
+
buffer.setUint8(UNKNOWN_BATTERY_CAPACITY);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
buffer.setUint8((UNKNOWN_BATTERY_CAPACITY - 1) * (statusData.remindedBatteryCapacity / 100));
|
|
125
|
+
}
|
|
126
|
+
buffer.setUint8(statusData.lastEventSequenceNumber);
|
|
127
|
+
break;
|
|
128
|
+
case hardwareTypes.MTXLORA:
|
|
129
|
+
case hardwareTypes.ELIMP:
|
|
130
|
+
default:
|
|
131
|
+
throw new Error(`${NewStatus.getId()}: hardware type ${hardware.type} is not supported`);
|
|
132
|
+
}
|
|
133
|
+
return Command.toBytes(COMMAND_ID, buffer.getBytesToOffset());
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
NewStatus.id = COMMAND_ID;
|
|
137
|
+
NewStatus.directionType = UPLINK;
|
|
138
|
+
NewStatus.title = COMMAND_TITLE;
|
|
139
|
+
export default NewStatus;
|
|
140
|
+
//# sourceMappingURL=NewStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NewStatus.js","sourceRoot":"","sources":["../../../src/commands/uplink/NewStatus.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ declare class SetTime2000 extends Command {
|
|
|
29
29
|
parameters: IUplinkSetTime2000Parameters;
|
|
30
30
|
constructor(parameters: IUplinkSetTime2000Parameters);
|
|
31
31
|
static readonly id = 2;
|
|
32
|
-
static readonly
|
|
32
|
+
static readonly directionType = 2;
|
|
33
33
|
static readonly title = "SET_TIME_2000";
|
|
34
34
|
static fromBytes(data: Uint8Array): SetTime2000;
|
|
35
35
|
toBytes(): Uint8Array;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import Command from '../../Command.js';
|
|
2
2
|
import BinaryBuffer from '../../BinaryBuffer.js';
|
|
3
|
+
import { UPLINK } from '../../constants/directionTypes.js';
|
|
3
4
|
const COMMAND_ID = 0x02;
|
|
4
5
|
const COMMAND_TITLE = 'SET_TIME_2000';
|
|
5
6
|
const COMMAND_BODY_SIZE = 1;
|
|
@@ -47,7 +48,7 @@ class SetTime2000 extends Command {
|
|
|
47
48
|
}
|
|
48
49
|
}
|
|
49
50
|
SetTime2000.id = COMMAND_ID;
|
|
50
|
-
SetTime2000.
|
|
51
|
+
SetTime2000.directionType = UPLINK;
|
|
51
52
|
SetTime2000.title = COMMAND_TITLE;
|
|
52
53
|
export default SetTime2000;
|
|
53
54
|
//# sourceMappingURL=SetTime2000.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SetTime2000.js","sourceRoot":"","sources":["../../../src/commands/uplink/SetTime2000.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"SetTime2000.js","sourceRoot":"","sources":["../../../src/commands/uplink/SetTime2000.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,YAAY,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAczD,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,aAAa,GAAG,eAAe,CAAC;AACtC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAG5B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAY,SAAQ,OAAO;IAC7B,YAAqB,UAAwC;QACzD,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAA8B;IAE7D,CAAC;IAQD,oCAAoC;IACpC,MAAM,CAAC,SAAS,CAAG,IAAgB;QAC/B,IAAK,IAAI,CAAC,UAAU,KAAK,iBAAiB,EAAG;YACzC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,wBAAwB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SAChF;QAED,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAE7C,MAAM,UAAU,GAAG;YACf,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;SAC5B,CAAC;QAEF,IAAK,CAAC,MAAM,CAAC,OAAO,EAAG;YACnB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;SACpE;QAED,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAED,OAAO;QACH,MAAM,EAAC,MAAM,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAE1D,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAExB,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;;AAhCe,cAAE,GAAG,UAAU,CAAC;AAEhB,yBAAa,GAAG,MAAM,CAAC;AAEvB,iBAAK,GAAG,aAAa,CAAC;AAgC1C,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import Command from '../../Command.js';
|
|
2
|
+
/**
|
|
3
|
+
* Uplink command.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```js
|
|
7
|
+
* import SoftRestart from 'jooby-codec/commands/uplink/SoftRestart';
|
|
8
|
+
*
|
|
9
|
+
* const command = new SoftRestart();
|
|
10
|
+
*
|
|
11
|
+
* // output command binary in hex representation
|
|
12
|
+
* console.log(command.toHex());
|
|
13
|
+
* // 19 00
|
|
14
|
+
* ```
|
|
15
|
+
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/SoftRestart.md#response)
|
|
16
|
+
*/
|
|
17
|
+
declare class SoftRestart extends Command {
|
|
18
|
+
static readonly id = 25;
|
|
19
|
+
static readonly directionType = 2;
|
|
20
|
+
static readonly title = "SOFT_RESTART";
|
|
21
|
+
static fromBytes(): SoftRestart;
|
|
22
|
+
toBytes(): Uint8Array;
|
|
23
|
+
}
|
|
24
|
+
export default SoftRestart;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import Command from '../../Command.js';
|
|
2
|
+
import { UPLINK } from '../../constants/directionTypes.js';
|
|
3
|
+
const COMMAND_ID = 0x19;
|
|
4
|
+
const COMMAND_TITLE = 'SOFT_RESTART';
|
|
5
|
+
/**
|
|
6
|
+
* Uplink command.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```js
|
|
10
|
+
* import SoftRestart from 'jooby-codec/commands/uplink/SoftRestart';
|
|
11
|
+
*
|
|
12
|
+
* const command = new SoftRestart();
|
|
13
|
+
*
|
|
14
|
+
* // output command binary in hex representation
|
|
15
|
+
* console.log(command.toHex());
|
|
16
|
+
* // 19 00
|
|
17
|
+
* ```
|
|
18
|
+
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/SoftRestart.md#response)
|
|
19
|
+
*/
|
|
20
|
+
class SoftRestart extends Command {
|
|
21
|
+
// data - only body (without header)
|
|
22
|
+
static fromBytes() {
|
|
23
|
+
return new SoftRestart();
|
|
24
|
+
}
|
|
25
|
+
// eslint-disable-next-line class-methods-use-this
|
|
26
|
+
toBytes() {
|
|
27
|
+
return Command.toBytes(COMMAND_ID);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
SoftRestart.id = COMMAND_ID;
|
|
31
|
+
SoftRestart.directionType = UPLINK;
|
|
32
|
+
SoftRestart.title = COMMAND_TITLE;
|
|
33
|
+
export default SoftRestart;
|
|
34
|
+
//# sourceMappingURL=SoftRestart.js.map
|