UNPKG

qrt

Version:
105 lines (91 loc) 1.91 kB
const dayjs = require('dayjs'); const helpers = require('../helpers'); module.exports = { parseRaw(raw) { if (typeof raw !== 'string') { throw new Error('Raw must be an string'); } const { dataString, version, firmwareVersion, status } = helpers.device.info; const splittedRaw = raw.split(','); const pipes = splittedRaw[28].split('|'); return { DUI: dataString === 'MQA' ? splittedRaw[3] : splittedRaw[4], dataString: splittedRaw[dataString.pos], version: splittedRaw[version.pos], firmwareVersion: splittedRaw[firmwareVersion.pos], status: splittedRaw[status.pos], }; }, parseAvgKey(key, avgType) { if (typeof key !== 'string') { throw new Error('Key must be an string'); } const avgTypeConfigs = { '10mn': { length: 6, positions: { DUI: 0, year: 1, month: 2, day: 3, hour: 4, minute: 5, }, }, '1h': { length: 5, positions: { DUI: 0, year: 1, month: 2, day: 3, hour: 4, }, }, '8h': { length: 5, positions: { DUI: 0, year: 1, month: 2, day: 3, hour: 4, }, }, '1d': { length: 4, positions: { DUI: 0, year: 1, month: 2, day: 3, }, }, '1m': { length: 3, positions: { DUI: 0, year: 1, month: 2, }, }, }; const avgConfig = avgTypeConfigs[avgType]; if (!avgConfig) { throw new Error('Invalid avg type'); } const keyParts = key.split('!'); if (!keyParts.length || avgConfig.length !== keyParts.length) { throw new Error('Invalid key format'); } const positions = avgConfig.positions; return dayjs(0) .year(keyParts[positions.year]) .month(keyParts[positions.month] - 1) .date(keyParts[positions.day] || 1) .hour(keyParts[positions.hour] || 0) .minute(keyParts[positions.minute] || 0) .toISOString(); }, };