PAYLOAD PARSERS
Biblioteca para converter payloads da Sigfox de hexadecimal para dados legiveis, baseado em um FRAME e um TEMPLATE.
Traduzindo um payload em um objeto
import { Parse } from '@sigmais/payload-parsers';
const parse = new Parse();
const parameters = [ {
label: 'frame',
bytes: [0],
bits: { offset: 0, length: 8 },
type: 'int',
},
{
label: 'timestamp',
bytes: [1, 2, 3, 4],
bits: { offset: 0, length: 32 },
type: 'int',
},
{
label: 'timezone',
bytes: [5],
bits: { offset: 0, length: 8 },
type: 'intSigned',
},
{
label: 'battery',
bytes: [6, 7],
bits: { offset: 0, length: 16 },
type: 'percentage',
},
{
label: 'lqi',
bytes: [8],
bits: { offset: 0, length: 8 },
type: 'int',
}]
const result = parse.decoder('00630E57E6FC014D01C002B4', parameters);
console.log(result);
/*
frame: 0,
timestamp: 1661884390,
timezone: -4,
battery: 3.33,
lqi: 1
*/
Convertendo um objeto em um payload
import { Parse } from '@sigmais/payload-parsers';
const parse = new Parse();
const template = [{
bits: {
length: 7,
offset: 0,
},
byte: 0,
label: 'header',
type: 'int',
value: '00',
},
{
bits: {
length: 7,
offset: 0,
},
byte: 1,
label: 'sense',
type: 'int',
value: '30',
},
{
bits: {
length: 7,
offset: 0,
},
byte: 2,
label: 'timestampSyncPeriod',
type: 'timeUnit',
value: {
unit: 'HOURS', //SECONDS | MINUTES | HOURS
value: 12,
},
}]
const result = parse.encoder(template, 12, true)
//12 é o tamanho do payload em bytes.
//true é para indicar que deve ser gerado CRC e adicionado ao ultimo byte.
console.log(result);
//00008C00000000000000000067
Traduzindo um payload Sigmeter
import { Sigmeter } from '@sigmais/payload-parsers';
const sigmeter = new Sigmeter();
const event = sigmeter.decode('0137006DDB003354FA0004B5');
console.log(event);
/*
{
frame: 2,
config: false,
data: {
reset: false,
lastLog: false,
count1: 7143479,
count2: 3342555,
timeCount1: 348064,
timeCount2: 1205,
},
}
*/
Convertendo um objeto em um payload BSHM
import { BSHM } from '@sigmais/payload-parsers';
const bshm = new BSHM();
const config = [
timestampSyncPeriod: {
value: 6,
unit: 'HOURS',
},
downlinkPeriod: {
value: 1,
unit: 'DAYS',
}]
const payload = bshm.encode(config,12,true);
// 12 é o tamanho do payload em bytes e true é para indicar
// que deve ser gerado CRC e adicionado ao ultimo byte.
console.log(payload);
/* 0086C1000000000000000058 */