SerialPort-GSM is a simplified plugin for communicating with gsm modems. (Primarily for sms) (Focused in PDU mode)
SerialPort-GSM is a simplified plugin for communicating with gsm modems, primarily for sms. (This library is focused in 'PDU' mode)
npm install serialport-gsm
A full example can be found in the example directory.
let serialportgsm = require('serialport-gsm')
serialportgsm.list((err, result) => {
    console.log(result)
})
Call other functions after the port has been opened.
open(path, options, callback)
When opening a serial port, specify (in this order)
(see sample options on code).| Name | Type | Default | Description | | ——————— | ————- | ———– | ———– | | baudRate | number | 9600 | The port’s baudRate. | | dataBits | number | 8 | Must be one of: 8, 7, 6, or 5. | | stopBits | number | 1 | Must be one of: 1 or 2. | | highWaterMark | number | 16384 | The size of the read and write buffers defaults to 16k. | | parity | string | “none | Must be one of: ‘none’, ‘even’, ‘mark’, ‘odd’, ‘space’. | | rtscts | boolean | false | flow control setting | | xon | boolean | false | flow control setting | | xoff | boolean | false | flow control setting | | xany | boolean | false | flow control settings |
| Name                   | Type          | Default     | Description |
| ———————- | ————- | ———– | ———– |
| autoDeleteOnReceive    | boolean       | false       | Delete from 'sim' after receiving. |
| enableConcatenation    | boolean       | false       | Receive concatenated messages as one. |
| incomingCallIndication | boolean       | false       | Receive 'onNewIncomingCall' event when receiving calls. |
| incomingSMSIndication  | boolean       | true        | Enables the modem to notify that a new SMS message has been received. |
| pin                    | string        |             | If your SIM card is protected by a PIN provide the PIN as String and it will be used to unlock the SIM card during initialization (empty, means “no PIN existing on the SIM card”). |
| customInitCommand      | string        |             | If your device needs a custom initialization command it can be provided and will be used after PIN check. The command is expected to return 'OK' (empty, means “no custom command for init”). |
| cnmiCommand            | string        | ‘AT+CNMI=2,1,0,2,1’ | Defines if messages are saved on SIM or delivered directly
| logger                 |               |             | Provide a logger instance, currently 'debug' is used only to output written and received serial data. Use 'console' for debugging purposes. |
let serialportgsm = require('serialport-gsm')
let modem = serialportgsm.Modem()
let options = {
    baudRate: 115200,
    dataBits: 8,
    stopBits: 1,
    parity: 'none',
    rtscts: false,
    xon: false,
    xoff: false,
    xany: false,
    autoDeleteOnReceive: true,
    enableConcatenation: true,
    incomingCallIndication: true,
    incomingSMSIndication: true,
    pin: '',
    customInitCommand: '',
    cnmiCommand: 'AT+CNMI=2,1,0,2,1',
    logger: console
}
modem.open('COM', options, callback[Optional])
This function starts the modem. (If your port fails to work or does not respond to commands, don’t forget to call initializeModem after opening the port.)
modem.on('open', data => {
    modem.initializeModem(callback[optional])
})
Closes an open connection
close(callback[optional])
modem.close()
setModemMode(callback, type)
'PDU' or 'SMS'modem.on('open', data => {	
  modem.setModemMode(callback, 'PDU')	
})	
Send simple command to check communication with device
modem.checkModem(callback)
Sends sms. sendSMS(recipient, message, alert, callback)
| Name | Type | Default | Description | 
|---|---|---|---|
| recipient | string | The recipient number should start with the location code or '+' then the location code (Ex. '63999XXXXX19', '+63999XXXXX19' ). | 
    |
| message | string | The text message to send. | |
| alert | boolean | false | Enable to send as class 0 message (flash message), or Disable to send as a normal sms. | 
| callback | [function] | The callback is called twice. First time when queued for sending and second time when message was really send out. | 
modem.sendSMS('63999XXXXX19', 'Hello there Zab!', true, callback)
Shows messages of sim inbox
modem.getSimInbox(callback)
Delete a sim message by message object (Use Sim Inbox data)
modem.deleteMessage(messageObj, callback)
modem.deleteAllSimMessages(callback)
modem.getModemSerial(callback)
modem.getNetworkSignal(callback)
modem.getOwnNumber(callback)
setOwnNumber('number', callback, name[optional || default 'OwnNumber'])
modem.setOwnNumber(number, callback)
modem.hangupCall(callback)
For executing a complex custom command with multi-line responses, you need your own parsing logic - see examples
modem.executeCommand(command, callback, priority, timeout)
modem.on('open', result => { /*do something*/ })
modem.on('close', result => { /*do something*/ })
modem.on('error', result => { /*do something*/ })
modem.on('onSendingMessage', result => { status, request, data })
modem.on('onNewMessage', messageDetails)
modem.on('onNewMessageIndicator', result => { sender, timeSent })
modem.on('onNewIncomingCall', result => { number, numberScheme })
modem.on('onMemoryFull', result => { status, data })
When errors are returned and the error originated from the device, then in the error message, an error code should be listed, e.g. “+CMS ERROR: 500”. An (incomplete) list of possible error codes and their meanings can be found e.g. at https://www.activexperts.com/sms-component/gsm-error-codes/
Access base serialport. Please refer to SerialPort Docs for documentation
let serialportgsm = require('serialport-gsm')
let serialport = serialportgsm.serialport
Access modem serialport.
modem.port.SERIAL_PORT_PROTOTYPES
Thanks goes to these wonderful people who contributed a lot in this project:
Made with contributors-img.
SerialPort-GSM is MIT licensed and all it’s dependencies are MIT or BSD licensed.