advlib-ble-manufacturers
Version:
Wireless advertising packet decoding library for Bluetooth Low Energy manufacturer-specific data. We believe in an open Internet of Things.
205 lines (184 loc) • 6.79 kB
JavaScript
/**
* Copyright reelyActive 2023
* We believe in an open Internet of Things
*/
const manufacturer = require('../../lib/lairdconnectivity.js');
const assert = require ('assert');
// Input data for the scenario
const INPUT_DATA_TEMPERATURE = '0100000000006655443322110101001e621562ce04000000';
const INPUT_DATA_MAGNET = '0100000000006655443322110201001e6215620000000000';
const INPUT_DATA_MOVEMENT = '0100000000006655443322110301001e6215620000000000';
const INPUT_DATA_BATTERY_VOLTAGE = '0100000000006655443322110c01001e621562050d000000';
const INPUT_DATA_TEMPERATURE_3 = '0100000000006655443322111401001e6215620000a84100';
const INPUT_DATA_VOLTAGE_2 = '0100000000006655443322111701001e62156200e4404600';
const INPUT_DATA_CURRENT_4 = '0100000000006655443322111d01001e6215620000f64200';
const INPUT_DATA_ULTRASONIC = '0100000000006655443322111e01001e6215620080264400';
const INPUT_DATA_PRESSURE_1 = '0100000000006655443322111f01001e6215620000044200';
const INPUT_DATA_TAMPER = '0100000000006655443322112601001e6215620100000000';
const INPUT_DATA_CONTACT_TRACER =
'81ffffff000066554433221100001e621562000130ce0000';
// Expected outputs for the scenario
const EXPECTED_DATA_INVALID_INPUT = null;
const EXPECTED_DATA_TEMPERATURE = {
deviceIds: [ "112233445566/3" ],
flags: 0,
networkId: 0,
recordNumber: 1,
temperature: 12.3,
timestamp: 1645568542,
uri: "https://sniffypedia.org/Organization/Laird_Connectivity/"
};
const EXPECTED_DATA_MAGNET = {
deviceIds: [ "112233445566/3" ],
flags: 0,
isContactDetected: [ true ],
networkId: 0,
recordNumber: 1,
timestamp: 1645568542,
uri: "https://sniffypedia.org/Organization/Laird_Connectivity/"
};
const EXPECTED_DATA_MOVEMENT = {
deviceIds: [ "112233445566/3" ],
flags: 0,
isMotionDetected: [ true ],
networkId: 0,
recordNumber: 1,
timestamp: 1645568542,
uri: "https://sniffypedia.org/Organization/Laird_Connectivity/"
};
const EXPECTED_DATA_BATTERY_VOLTAGE = {
batteryVoltage: 3.333,
deviceIds: [ "112233445566/3" ],
flags: 0,
networkId: 0,
recordNumber: 1,
timestamp: 1645568542,
uri: "https://sniffypedia.org/Organization/Laird_Connectivity/"
};
const EXPECTED_DATA_TEMPERATURE_3 = {
deviceIds: [ "112233445566/3" ],
flags: 0,
networkId: 0,
recordNumber: 1,
temperatures: [ null, null, 21.0, null ],
timestamp: 1645568542,
uri: "https://sniffypedia.org/Organization/Laird_Connectivity/"
};
const EXPECTED_DATA_VOLTAGE_2 = {
deviceIds: [ "112233445566/3" ],
flags: 0,
networkId: 0,
recordNumber: 1,
timestamp: 1645568542,
uri: "https://sniffypedia.org/Organization/Laird_Connectivity/",
voltages: [ null, 12.345, null, null ]
};
const EXPECTED_DATA_CURRENT_4 = {
amperages: [ null, null, null, 123 ],
deviceIds: [ "112233445566/3" ],
flags: 0,
networkId: 0,
recordNumber: 1,
timestamp: 1645568542,
uri: "https://sniffypedia.org/Organization/Laird_Connectivity/"
};
const EXPECTED_DATA_ULTRASONIC = {
deviceIds: [ "112233445566/3" ],
distance: 0.666,
flags: 0,
networkId: 0,
recordNumber: 1,
timestamp: 1645568542,
uri: "https://sniffypedia.org/Organization/Laird_Connectivity/"
};
const EXPECTED_DATA_PRESSURE_1 = {
deviceIds: [ "112233445566/3" ],
flags: 0,
networkId: 0,
pressures: [ 227526.981, null ],
recordNumber: 1,
timestamp: 1645568542,
uri: "https://sniffypedia.org/Organization/Laird_Connectivity/"
};
const EXPECTED_DATA_TAMPER = {
deviceIds: [ "112233445566/3" ],
flags: 0,
isContactDetected: [ false ],
networkId: 0,
recordNumber: 1,
timestamp: 1645568542,
uri: "https://sniffypedia.org/Organization/Laird_Connectivity/"
};
const EXPECTED_DATA_CONTACT_TRACER = {
batteryVoltage: 3.296,
deviceIds: [ "112233445566/3" ],
flags: 0,
isMotionDetected: [ true ],
networkId: 65535,
profile: 0,
timestamp: 1645568542,
txPower: 0,
uri: "https://sniffypedia.org/Organization/Laird_Connectivity/"
};
// Describe the scenario
describe('lairdconnectivity', function() {
// Test the process function with no input data
it('should handle no input data', function() {
assert.deepEqual(manufacturer.process(), EXPECTED_DATA_INVALID_INPUT);
});
// Test the process function with temperature data
it('should handle BT510 temperature data', function() {
assert.deepEqual(manufacturer.process(INPUT_DATA_TEMPERATURE),
EXPECTED_DATA_TEMPERATURE);
});
// Test the process function with magnet data
it('should handle magnet data', function() {
assert.deepEqual(manufacturer.process(INPUT_DATA_MAGNET),
EXPECTED_DATA_MAGNET);
});
// Test the process function with movement data
it('should handle movement data', function() {
assert.deepEqual(manufacturer.process(INPUT_DATA_MOVEMENT),
EXPECTED_DATA_MOVEMENT);
});
// Test the process function with battery voltage data
it('should handle battery voltage data', function() {
assert.deepEqual(manufacturer.process(INPUT_DATA_BATTERY_VOLTAGE),
EXPECTED_DATA_BATTERY_VOLTAGE);
});
// Test the process function with temperature data
it('should handle BT610 temperature data', function() {
assert.deepEqual(manufacturer.process(INPUT_DATA_TEMPERATURE_3),
EXPECTED_DATA_TEMPERATURE_3);
});
// Test the process function with voltage data
it('should handle voltage data', function() {
assert.deepEqual(manufacturer.process(INPUT_DATA_VOLTAGE_2),
EXPECTED_DATA_VOLTAGE_2);
});
// Test the process function with current data
it('should handle current data', function() {
assert.deepEqual(manufacturer.process(INPUT_DATA_CURRENT_4),
EXPECTED_DATA_CURRENT_4);
});
// Test the process function with ultrasonic data
it('should handle ultrasonic data', function() {
assert.deepEqual(manufacturer.process(INPUT_DATA_ULTRASONIC),
EXPECTED_DATA_ULTRASONIC);
});
// Test the process function with pressure data
it('should handle pressure data', function() {
assert.deepEqual(manufacturer.process(INPUT_DATA_PRESSURE_1),
EXPECTED_DATA_PRESSURE_1);
});
// Test the process function with tamper data
it('should handle tamper data', function() {
assert.deepEqual(manufacturer.process(INPUT_DATA_TAMPER),
EXPECTED_DATA_TAMPER);
});
// Test the process function with contact tracer data
it('should handle contact tracer data', function() {
assert.deepEqual(manufacturer.process(INPUT_DATA_CONTACT_TRACER),
EXPECTED_DATA_CONTACT_TRACER);
});
});