Skip to content

Instantly share code, notes, and snippets.

@doorbash
Created July 1, 2021 12:14
Show Gist options
  • Save doorbash/be52e20fdd4bbcd79007114e19460842 to your computer and use it in GitHub Desktop.
Save doorbash/be52e20fdd4bbcd79007114e19460842 to your computer and use it in GitHub Desktop.
const SerialPort = require('serialport')
const Readline = require('@serialport/parser-readline')
const request = require('request');
var iconv = require('iconv-lite');
const express = require('express');
const bodyParser = require('body-parser');
var ic = new require('iconv').Iconv('UTF-8', 'UCS-2');
const app = express()
const express_port = 34343
app.use(bodyParser.urlencoded({ extended: true }));
const port = new SerialPort('/dev/ttyUSB0', {
baudRate: 2400
})
const parser = port.pipe(new Readline({ delimiter: '\r\n', encoding: 'ascii' }))
port.on('open', () => {
console.log("port is open")
setTimeout(() => {
port.write("AT\r\n")
port.write("AT+CMGF=1\r\n")
port.write("AT+CSMP=17,167,0,0\r\n")
port.write("AT+CNMI=1,2,0,0,0\r\n")
port.write("AT+CMGDA=DEL ALL\r\n")
}, 1000);
});
var reading = false
var phoneNumber = ""
var time = ""
parser.on('data', data => {
console.log(data)
let buf = Buffer.from(data, 'ascii')
let str = iconv.decode(buf, 'utf8')
if(str.startsWith("+CMT")) {
let start = str.indexOf("\"") + 1
var sub = str.substring(start)
phoneNumber = sub.substring(0, sub.indexOf("\""))
sub = sub.substring(0, sub.length - 1)
time = sub.substring(sub.lastIndexOf("\"") + 1)
console.log("phoneNumber = " + phoneNumber + ", time = " + time)
reading = true
} else if(reading){
let text = iconv.decode(buf, 'base64')
request.post('**************************', {
strictSSL: false,
form: {
number: phoneNumber,
time: time,
text: text
}
})
reading = false
}
})
app.post('/', (req, res) => {
console.log(req.body)
port.write("AT+CSCS=\"GSM\"\r\n")
setTimeout(() => {
port.write("AT+CMGF=1\r\n")
setTimeout(() => {
port.write("AT+CMGS=\"" + req.body.number + "\"\r\n")
setTimeout(() => {
port.write(req.body.text)
port.write([0x1a])
res.send('OK')
}, 500)
}, 500)
}, 500)
});
app.listen(express_port, '127.0.0.1', () => {
console.log(`Example app listening at http://localhost:${express_port}`)
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment