diff --git a/lib/modem-commands.js b/lib/modem-commands.js index 122f9ae..7553562 100644 --- a/lib/modem-commands.js +++ b/lib/modem-commands.js @@ -117,6 +117,7 @@ exports.queryIMEI = function queryIMEI(lockName) { port.unpipe(parser); mutex.unlock(lockName || MUTEX_COMMAND, 'queryIMEI'); modemInfo.imei = data.toString().trim(); + logger.info('IMEI extracted', { imei: modemInfo.imei }); resolve(modemInfo.imei); }); @@ -135,6 +136,7 @@ exports.queryIMSI = function queryIMSI(lockName) { port.unpipe(parser); mutex.unlock(lockName || MUTEX_COMMAND, 'queryIMSI'); modemInfo.imsi = data.toString().trim(); + logger.info('IMSI extracted', { imsi: modemInfo.imsi }); resolve(modemInfo.imsi); }); @@ -148,8 +150,9 @@ exports.queryIMSI = function queryIMSI(lockName) { exports.queryIMEIAndIMSI = async function queryIMEIAndIMSI() { await mutex.lock(MUTEX_COMMAND, 'queryIMEIAndIMSI'); - await this.queryIMEI(MUTEX_SUBCOMMAND); - await this.queryIMSI(MUTEX_SUBCOMMAND); + const imei = await this.queryIMEI(MUTEX_SUBCOMMAND); + const imsi = await this.queryIMSI(MUTEX_SUBCOMMAND); await mutex.unlock(MUTEX_COMMAND, 'queryIMEIAndIMSI'); + return { imei, imsi }; }; diff --git a/lib/serialport-parsers.js b/lib/serialport-parsers.js index dd178ea..1afb1e1 100644 --- a/lib/serialport-parsers.js +++ b/lib/serialport-parsers.js @@ -1,6 +1,7 @@ const PARSER_READLINE_DELIMITER = '\r\n'; const PARSER_WAIT_FOR_OK_OR_ERROR_REGEX = /\r\n(?:OK|ERROR)\r\n/; +const moment = require('moment'); const pdu = require('node-pdu'); const ParserReadline = require('@serialport/parser-readline'); const ParserRegex = require('@serialport/parser-regex'); @@ -8,6 +9,7 @@ const ParserRegex = require('@serialport/parser-regex'); const logger = require('komodo-sdk/logger'); const dbCops = require('./db-cops'); +const modemInfo = require('./modem-info'); let port; @@ -35,8 +37,15 @@ function onCSQ(data) { const val = data.toString().trim().match(/\+CSQ:\s*(.*)/); if (!val || !val[1]) return null; + const [, signalStrength] = val; + logger.info('Signal quality extracted', { signalQuality: val[1] }); - return val[1]; + + modemInfo.signalStrength = signalStrength; + modemInfo.signalStrengthTs = new Date(); + modemInfo.signalStrengthTsReadable = moment(modemInfo.signalStrengthTs).format('YYYY-MM-DD HH:mm:ss'); + + return signalStrength; } function onPduDeliver(data, parsedData) { @@ -64,6 +73,10 @@ function onCOPS(data) { cops, mode, format, networkId, networkName, }); + modemInfo.cops = cops; + modemInfo.networkId = networkId; + modemInfo.networkName = networkName; + return { cops, mode, format, networkId, networkName, }; diff --git a/modem-tester.js b/modem-tester.js index d9f9d7a..57e5c82 100644 --- a/modem-tester.js +++ b/modem-tester.js @@ -3,11 +3,11 @@ const SerialPort = require('serialport'); const config = require('komodo-sdk/config'); const logger = require('komodo-sdk/logger'); - const ParserInterByteTimeout = require('@serialport/parser-inter-byte-timeout'); const parsers = require('./lib/serialport-parsers'); const modemCommands = require('./lib/modem-commands'); +const modemInfo = require('./lib/modem-info'); const parserInterByteTimeout = new ParserInterByteTimeout({ interval: 1000 }); parserInterByteTimeout.on('data', (data) => { @@ -27,10 +27,12 @@ const port = new SerialPort(config.modem.device, { baudRate: 115200 }, async (er await modemCommands.queryIMEIAndIMSI(); await modemCommands.queryCOPSAndSignalQuality(); + logger.info('Modem state', modemInfo); setInterval(() => { modemCommands.queryIMEIAndIMSI(); modemCommands.queryCOPSAndSignalQuality(); + logger.info('Modem state', modemInfo); }, (config && config.interval_beetwen_signal_strength_ms) || 30000); });