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
|
|
|
};
|