This module was written with Raspberry Pi aspect in mind, but it basically should work on all linux distros, it might work on Windows as well (not tested yet), you just need a serial port filesystem (/dev/ttyAMA0 for RPi).
It has been tested on SIM800L module.
npm install simcomvar modem = require('simcom').modem('/dev/ttyAMA0');
modem.on('open', function() {
  // do something with the modem
});
modem.error('error', function() {
});
modem.open(); // open the portThe modem function is a factory function, it creates an instance of Modem class for a device if neccessary.
Talk directly to the modem using Modem.write() method.
modem.write('ATI\r');Modem.execute() returns a promise which you can easily setup callbacks to process the response or error.
modem.execute('ATI').then(function(lines) {
  console.log('ATI Response', lines);
}, function(error) {
  console.error('ATI Command Error', error);
});