vn-rfid/src/stream.js

53 lines
1.5 KiB
JavaScript
Raw Normal View History

2023-01-24 09:11:58 +00:00
import got from 'got';
import rfidParser from './rfidParser.js';
import newPallet from './newPallet.js';
2023-01-31 13:59:05 +00:00
import debug from '../util/debugStream.js';
2023-01-27 11:40:09 +00:00
import counter from './counter.js';
2023-01-24 09:11:58 +00:00
let interval;
2023-02-02 13:51:25 +00:00
let counterInterval;
2023-01-24 09:11:58 +00:00
2023-01-24 14:10:39 +00:00
export default async(conf, cb) => {
2023-01-27 11:40:09 +00:00
let rfidbuffer = new Set();
let rfidbufferExtend = [];
2023-01-24 09:11:58 +00:00
const stream = got.stream(`http://${conf.ip}/api/v1/data/stream`);
stream
.on('data', async value => {
const parsed = await rfidParser(value);
2023-02-03 12:20:00 +00:00
2023-02-02 13:51:25 +00:00
if (!parsed.codes.size) return;
2023-01-27 11:40:09 +00:00
rfidbuffer = new Set([...rfidbuffer, ...parsed.codes]);
rfidbufferExtend = rfidbufferExtend.concat(parsed.extended);
2023-01-24 09:11:58 +00:00
2024-05-31 10:02:39 +00:00
// debug({codes: rfidbuffer, extended: rfidbufferExtend}, conf);
2023-01-24 09:11:58 +00:00
2023-01-27 11:40:09 +00:00
if (rfidbuffer.size) {
clearTimeout(interval);
2023-01-24 09:11:58 +00:00
interval = null;
2023-01-27 11:40:09 +00:00
interval = setTimeout(createPallet, conf.interval);
2023-02-02 13:51:25 +00:00
if (!counterInterval)
counterInterval = setTimeout(counterIntervalManager, conf.counterInterval);
2023-01-24 09:11:58 +00:00
}
})
.on('error', e => {
2023-01-24 14:10:39 +00:00
cb(e);
2023-01-24 09:11:58 +00:00
});
function createPallet() {
2023-02-03 12:20:00 +00:00
clearTimeout(interval);
2023-01-27 11:40:09 +00:00
2024-05-31 09:57:38 +00:00
if (!conf.minimum || rfidbuffer.size > conf.minimum)
newPallet(rfidbuffer, conf.arcId);
2024-03-04 10:42:48 +00:00
rfidbuffer = new Set();
rfidbufferExtend = [];
2023-01-24 09:11:58 +00:00
}
2023-02-02 13:51:25 +00:00
function counterIntervalManager() {
counterInterval = null;
counter(rfidbuffer.size, conf.arcId);
}
2023-01-24 09:11:58 +00:00
};