Commit fd38186c59a64c771de01703ca1ab52ad88dbca1

Authored by Nur Fajar Wibowo
1 parent bf525c786b
Exists in master

remove development in config & merapikan code index.js

Showing 2 changed files with 186 additions and 204 deletions Side-by-side Diff

1 1 {
2   - "development": {
3   - "usb_port": "please change me",//tty/USB2
4   - "node_port": "please change me",//2112
5   - "url_post": "please change me",//http://ip:port
6   - "api_key": "746573206D6F64656D2074656C6D6F73656C20666C617368"
  2 + "core": {
  3 + "usb_port": "/tty/USB2",
  4 + "node_port": "2112",
  5 + "url_post": "http://ip:port",
  6 + "api_key": "746573206D6F64656D2074656C6D6F73656C20666C617368"
7 7 }
8 8 }
9   -
... ... @@ -8,241 +8,224 @@ const request = require('request');
8 8 const Readline = require('@serialport/parser-readline');
9 9 const Delimiter = require('@serialport/parser-delimiter');
10 10  
11   -var count = 1;
12   -var statusModem = "0K";
13   -var errorMessageModem= "";
14   -var node_port = config.development.node_port;
15   -var usb_port = config.development.usb_port;
16   -var url_post = config.development.url_post;
17   -var api_key = config.development.api_key;
  11 +let count = 1;
  12 +let statusModem = "0K";
  13 +let errorMessageModem= "";
18 14  
19 15 //set serialport
20   -const serialPort = new SerialPort(usb_port, {
21   - baudRate: 115200
22   - });
  16 +const serialPort = new SerialPort(config.core.usb_port, {
  17 + baudRate: 115200
  18 +});
23 19  
24 20 const parser = serialPort.pipe(new Readline());
25 21  
26 22 serialPort.on("open", function () {
27   - console.log('Serial communication open');
28   - //
29   - serialPort.write("AT+CNMI?");
30   - serialPort.write("\r");
31   - //serialPort.write("AT+CNMI=1,1,2,1,1");
32   - //serialPort.write("\r");
33   - console.log('receive sms ON');
34   -
  23 + console.log('Serial communication open');
  24 + //
  25 + serialPort.write("AT+CNMI?");
  26 + serialPort.write("\r");
  27 + //serialPort.write("AT+CNMI=1,1,2,1,1");
  28 + //serialPort.write("\r");
  29 + console.log('receive sms ON');
35 30 });
36 31  
37 32 serialPort.on('error', function(err) {
38   - statusModem = "NOT OK";
39   - errorMessageModem = err.message;
40   - console.log('Error!: ', err.message);
41   - process.exit(1);
  33 + statusModem = "NOT OK";
  34 + errorMessageModem = err.message;
  35 + console.log('Error!: ', err.message);
  36 + process.exit(1);
42 37 });
43 38  
44 39 parser.on('data', function(data) {
45   - console.log("incoming data: " + data);
46   - var lastData = data.toString();
47   - if (lastData.match(/\+CMTI:/)){
48   - var numberPattern = /(\d+)/g;
49   - var slot = lastData.match(numberPattern);
50   - console.log("slot "+slot);
51   - console.log("ada message baru");
52   - readSmsAuto(serialPort, slot);
53   - }
  40 + console.log("incoming data: " + data);
  41 + let lastData = data.toString();
  42 + if (lastData.match(/\+CMTI:/)){
  43 + let numberPattern = /(\d+)/g;
  44 + let slot = lastData.match(numberPattern);
  45 + console.log("slot "+slot);
  46 + console.log("ada message baru");
  47 + readSmsAuto(serialPort, slot);
  48 + }
54 49 });
55 50  
56   -//------------------function 2 000000000000 -----------------
57   -//helloWorld
58   -function helloWorld(req, res, next){
59   - console.log("hello world call!??");
60   - res.send('hello world');
61   -
62   -}
63 51 //function delete message slot ke?
64 52 function deleteMessage(serialPort, slot){
65   - serialPort.write("AT+CMGD="+slot);
66   - serialPort.write("\r");
67   - console.log("delete pesan slot "+slot+" done!");
68   -
  53 + serialPort.write("AT+CMGD="+slot);
  54 + serialPort.write("\r");
  55 + console.log("delete pesan slot "+slot+" done!");
69 56 }
70 57 //post to end point url
71 58 function postIncomingMessage(nomor, pesan){
72   - console.log("----------------------------post incoming message-------------------------");
73   - pesan = pesan.replace(/\s+$/, '');
74   - //post to URL end Point
75   - request(url_post+"?msg="+pesan+"&number="+nomor, function (error, response, body) {
76   - if (error) { console.log("error post! "+nomor+" msg; \""+pesan+"\" errornya; "+error.message); }
77   - else if (!error && response.statusCode == 200) {console.log("success post "+nomor+" msg; \""+pesan+"\" resp; "+body);}
78   - });
79   - //delete incoming message after send to komod
80   - }
  59 + console.log("----------------------------post incoming message-------------------------");
  60 + pesan = pesan.replace(/\s+$/, '');
  61 + let encodePesan = encodeURIComponent(pesan);
  62 + let newUrl = config.core.url_post+"?msg="+encodePesan+"&number="+nomor;
  63 + //post to URL end Point
  64 + request(newUrl, function (error, response, body) {
  65 + if (error) {
  66 + console.log("error post! "+nomor+" msg; \""+pesan+"\" errornya; "+error.message);
  67 + } else if (!error && response.statusCode == 200) {
  68 + console.log("success post "+nomor+" msg; \""+pesan+"\" resp; "+body);
  69 + }
  70 + });
  71 +}
81 72 //sendSms
82 73 function sendSms (req, res, next){
83   - var msg = req.query.msg;
84   - var number = req.query.number;
85   - var reqid = req.query.reqid;
86   - var apikey = req.query.apikey;
87   - //api_key="746573206D6F64656D2074656C6D6F73656C20666C617368";
88   - if(!reqid||!apikey){
89   - console.log("invalid reqid or apikey;msg "+msg+" number "+number);
90   - res.json({"status": "invalid parameter", "msg": msg, "number": number, "apikey" : apikey, "reqid": reqid});
91   - return;
92   - } else if (apikey !== api_key){
93   - console.log("invalid api_key;msg \""+msg+"\" number \""+number+"\" reqid \""+reqid);
94   - res.json({"status": "invalid parameter", "msg": msg, "number": number, "apikey" : apikey, "reqid": reqid});
95   - return;
96   -
97   - }
98   - console.log("msg "+ msg + " number " +number);
99   - //----------------
100   - serialPort.write("AT+CMGF=1");
101   - serialPort.write('\r');
102   -
103   - sendingSMS(serialPort, msg, "+"+number, reqid);
104   - console.log('resp; status '+statusModem+" reqid "+reqid);
105   - //---------------
106   - res.json({"status": statusModem+" "+errorMessageModem, "msg": msg, "number": number});
  74 + let msg = req.query.msg;
  75 + let number = req.query.number;
  76 + let reqid = req.query.reqid;
  77 + let apiKey = req.query.apikey;
  78 + //apiKey="746573206D6F64656D2074656C6D6F73656C20666C617368";
  79 + if(!reqid||!apiKey){
  80 + console.log("invalid reqid or apikey;msg "+msg+" number "+number);
  81 + res.json({"status": "invalid parameter", "msg": msg, "number": number, "apikey" : apikey, "reqid": reqid});
  82 + return;
  83 + } else if (apiKey !== config.core.api_key){
  84 + console.log("invalid apiKey;msg \""+msg+"\" number \""+number+"\" reqid \""+reqid);
  85 + res.json({"status": "invalid parameter", "msg": msg, "number": number, "apikey" : apikey, "reqid": reqid});
  86 + return;
  87 + }
  88 + console.log("msg "+ msg + " number " +number);
  89 + //----------------
  90 + serialPort.write("AT+CMGF=1");
  91 + serialPort.write('\r');
  92 +
  93 + sendingSMS(serialPort, msg, "+"+number, reqid);
  94 + console.log('resp; status '+statusModem+" reqid "+reqid);
  95 + //---------------
  96 + res.json({"status": statusModem+" "+errorMessageModem, "msg": msg, "number": number});
107 97 }
108 98 //send ussd
109 99 function sendUSSD (req, res, next){
110   - var msg = req.query.msg;
111   - var reqid = req.query.reqid;
112   - var apikey = req.query.apikey;
113   - //api_key="746573206D6F64656D2074656C6D6F73656C20666C617368";
114   - if(!reqid||!apikey){
115   - console.log("invalid reqid or apikey;msg "+msg);
116   - res.json({"status": "invalid parameter", "msg": msg, "apikey" : apikey, "reqid": reqid});
117   - return;
118   - } else if (apikey !== api_key){
119   - console.log("invalid api_key;msg \""+msg+"\"reqid \""+reqid);
120   - res.json({"status": "invalid parameter", "msg": msg, "apikey" : apikey, "reqid": reqid});
121   - return;
122   -
123   - }
124   - console.log("msg "+ msg+" - "+reqid);
125   -
126   - count++;
127   - console.log("count "+ count);
128   - if (count > 2){
129   - console.log("modem busy!");
130   - count--;
131   - res.json({status: "reject", msg: "modem busy,try a few second"});
132   - return;
133   - }
134   -
135   - //----------------
136   - serialPort.write("AT+CUSD=1,\""+msg+"\"");
137   - serialPort.write('\r');
138   -
139   - //parse response USSD
140   - const parserUSSD = serialPort.pipe(new Delimiter({ delimiter: '\",0'}));
141   - var respUssd = null;
142   - parserUSSD.on('data',function(dataUSSD){
143   - //console.log("incoming datad "+dataD);
144   - var lastData = dataUSSD.toString();
145   - console.log("incoming dataUSSD "+lastData);
146   - respUssd = lastData;
147   - serialPort.unpipe(parserUSSD);
148   - });
149   -
150   - console.log('resp; status '+statusModem+" reqid "+reqid);
151   - //---------------
152   - let countDown = 8;// max witing response USSD 8 detik
153   - var waitingRespUssd = setInterval (() => {
154   - console.log(countDown+" second for reqid "+reqid);
155   - countDown--;
156   - if (respUssd || countDown < 2){
157   - var new_respUssd = null;
158   - //console.log("response USSD; "+respUssd);
159   - if (respUssd){
160   - new_respUssd = respUssd.replace(/^[^ ]+\+CUSD:/, '\+CUSD:');
161   - console.log('n_resp '+new_respUssd);
162   - }
163   - count--;
164   - res.json({
165   - "response_ussd": new_respUssd,
166   - "status": statusModem+" "+errorMessageModem,
167   - "msg": msg,
168   - "reqid": reqid
169   - });
170   - clearInterval(waitingRespUssd);
171   - }
172   - },1000);
  100 + let msg = req.query.msg;
  101 + let reqid = req.query.reqid;
  102 + let apiKey = req.query.apikey;
  103 + //apiKey="746573206D6F64656D2074656C6D6F73656C20666C617368";
  104 + if(!reqid||!apiKey){
  105 + console.log("invalid reqid or apikey;msg "+msg);
  106 + res.json({"status": "invalid parameter", "msg": msg, "apikey" : apikey, "reqid": reqid});
  107 + return;
  108 + } else if (apiKey !== config.core.api_key){
  109 + console.log("invalid apiKey;msg \""+msg+"\"reqid \""+reqid);
  110 + res.json({"status": "invalid parameter", "msg": msg, "apikey" : apikey, "reqid": reqid});
  111 + return;
  112 + }
  113 + console.log("msg "+ msg+" - "+reqid);
  114 +
  115 + count++;
  116 + console.log("count "+ count);
  117 + if (count > 2){
  118 + console.log("modem busy!");
  119 + count--;
  120 + res.json({status: "reject", msg: "modem busy,try a few second"});
  121 + return;
  122 + }
  123 +
  124 + //----------------
  125 + serialPort.write("AT+CUSD=1,\""+msg+"\"");
  126 + serialPort.write('\r');
  127 +
  128 + //parse response USSD
  129 + const parserUSSD = serialPort.pipe(new Delimiter({ delimiter: '\",0'}));
  130 + let respUssd = null;
  131 + parserUSSD.on('data',function(dataUSSD){
  132 + //console.log("incoming datad "+dataD);
  133 + let lastData = dataUSSD.toString();
  134 + console.log("incoming dataUSSD "+lastData);
  135 + respUssd = lastData;
  136 + serialPort.unpipe(parserUSSD);
  137 + });
  138 +
  139 + console.log('resp; status '+statusModem+" reqid "+reqid);
  140 + //---------------
  141 + let countDown = 8;// max witing response USSD 8 detik
  142 + let waitingRespUssd = setInterval (() => {
  143 + console.log(countDown+" second for reqid "+reqid);
  144 + countDown--;
  145 + if (respUssd || countDown < 2){
  146 + let new_respUssd = null;
  147 + //console.log("response USSD; "+respUssd);
  148 + if (respUssd){
  149 + new_respUssd = respUssd.replace(/^[^ ]+\+CUSD:/, '\+CUSD:');
  150 + console.log('n_resp '+new_respUssd);
  151 + }
  152 + count--;
  153 + res.json({
  154 + "response_ussd": new_respUssd,
  155 + "status": statusModem+" "+errorMessageModem,
  156 + "msg": msg,
  157 + "reqid": reqid
  158 + });
  159 + clearInterval(waitingRespUssd);
  160 + }
  161 + },1000);
173 162 }
174 163  
175   -
176   -
177 164 function readSmsAuto(serialPort, slot){
178 165  
179   - serialPort.write("AT+CMGR="+slot);// read only slot 1
180   - serialPort.write('\r');
181   -
182   - const parserD = serialPort.pipe(new Delimiter({ delimiter: '\r\nOK\r\n' }));
183   - parserD.on('data',function(dataD){
184   - //console.log("incoming datad "+dataD);
185   - var lastData = dataD.toString();
186   - console.log("incoming datad "+lastData);
187   - if (lastData.match(/\+CMGR:/)){
188   - console.log("incoming SMS "+lastData);
189   - // try to parse dataD
190   - const lines = lastData.split(/\n/);
191   - console.log("lines1 "+lines[1]);
192   - console.log("lines2 "+lines[2]);
193   - const content = lines[1].split(',');
194   - console.log("content0 "+content[0]);
195   - console.log("content1 "+content[1]);
196   - console.log("content2 "+content[2]);
197   - console.log("content3 "+content[3]);
198   - console.log("content4 "+content[4]);
199   - var nomor = content[1].toString();
200   - nomor = nomor.replace(/"/g,'');
201   - nomor = nomor.replace(/\+/g,'');
202   - var pesan = lines[2].toString();
203   - console.log("nomor nya "+nomor);
204   - serialPort.unpipe(parserD);
205   - postIncomingMessage(nomor, pesan);
206   - }
207   - });
208   -
209   - console.log("pesan slot "+slot+" sudah di baca");
210   -
211   - setTimeout(function(){
212   - serialPort.write("AT+CMGD="+slot);
213   - serialPort.write("\r");
214   - console.log("delete pesan slot "+slot+" done!");
215   - }, 2000);
  166 + serialPort.write("AT+CMGR="+slot);// read only slot 1
  167 + serialPort.write('\r');
  168 +
  169 + const parserD = serialPort.pipe(new Delimiter({ delimiter: '\r\nOK\r\n' }));
  170 + parserD.on('data',function(dataD){
  171 + //console.log("incoming datad "+dataD);
  172 + let lastData = dataD.toString();
  173 + console.log("incoming datad "+lastData);
  174 + if (lastData.match(/\+CMGR:/)){
  175 + console.log("incoming SMS "+lastData);
  176 + // try to parse dataD
  177 + const lines = lastData.split(/\n/);
  178 + console.log("lines1 "+lines[1]);
  179 + console.log("lines2 "+lines[2]);
  180 + const content = lines[1].split(',');
  181 + console.log("content0 "+content[0]);
  182 + console.log("content1 "+content[1]);
  183 + console.log("content2 "+content[2]);
  184 + console.log("content3 "+content[3]);
  185 + console.log("content4 "+content[4]);
  186 + let nomor = content[1].toString();
  187 + nomor = nomor.replace(/"/g,'');
  188 + nomor = nomor.replace(/\+/g,'');
  189 + let pesan = lines[2].toString();
  190 + console.log("nomor nya "+nomor);
  191 + serialPort.unpipe(parserD);
  192 + postIncomingMessage(nomor, pesan);
  193 + }
  194 + });
  195 +
  196 + console.log("pesan slot "+slot+" sudah di baca");
  197 +
  198 + setTimeout(function(){
  199 + serialPort.write("AT+CMGD="+slot);
  200 + serialPort.write("\r");
  201 + console.log("delete pesan slot "+slot+" done!");
  202 + }, 2000);
216 203 }
217 204  
218   -
219 205 function readSms(req, res, next){
220   -
221   - serialPort.write("AT+CMGF=1");
222   - serialPort.write('\r');
223   - serialPort.write('AT+CMGR=0');// read only slot 1
224   - serialPort.write('\r');
225   - res.send('sms readed');
226   -
  206 + serialPort.write("AT+CMGF=1");
  207 + serialPort.write('\r');
  208 + serialPort.write('AT+CMGR=0');// read only slot 1
  209 + serialPort.write('\r');
  210 + res.send('sms readed');
227 211 }
228 212  
229 213 function sendingSMS(serial, message, phone_no) {
230   - if (statusModem === "NOT OK"){
231   - console.log('send sms gagal');
232   - return statusModem;
233   - }
234   - console.log('number '+phone_no);
235   - serial.write("AT+CMGS=\"" + phone_no + "\"");
236   - serial.write('\r');
237   - serial.write(message);
238   - console.log(message);
239   - serial.write(Buffer([0x1A]));
240   - serial.write('^z');
  214 + if (statusModem === "NOT OK"){
  215 + console.log('send sms gagal');
  216 + return statusModem;
  217 + }
  218 + console.log('number '+phone_no);
  219 + serial.write("AT+CMGS=\"" + phone_no + "\"");
  220 + serial.write('\r');
  221 + serial.write(message);
  222 + console.log(message);
  223 + serial.write(Buffer([0x1A]));
  224 + serial.write('^z');
241 225 }
242 226  
243   -app.get('/', helloWorld);
244 227 app.get('/sms', sendSms);
245 228 app.get('/ussd', sendUSSD);
246 229 app.get('/read', readSms);
247 230  
248   -app.listen(node_port, () => console.log(`Example app listening on port ${node_port}!`));
  231 +app.listen(config.core.node_port, () => console.log(`Example app listening on port ${config.core.node_port}!`));