Сервер NodeJS (на AWS EC2) не получает каждый запрос на получение от модуля SIM800 (настроен в Arduino)
Я использую сервер NodeJS на экземпляре AWS EC2 (на порту 80) для прослушивания запросов от модуля SIM800. Однако он не получает каждый запрос от модуля (он получает первый GET-запрос в цикле, который выполняет 10 запросов). Один и тот же код, отвечающий за выполнение запросов GET, отлично работает на другом сервере, на котором работает PHP. Запрос GET помещает некоторые данные в MongoDB. В чем может быть проблема? Я прилагаю код сервера и код Arduino здесь.
var express = require('express');
var app = express();
var mongojs = require('mongojs');
var db = mongojs('battery',['power']);
app.get('/writedata/:voltage/:current/:coloumbs', function(req, res){
console.log("get!");
r = db.power.insert({
voltage: req.params.voltage,
current: req.params.current,
coloumbs: req.params.coloumbs
})
console.log(r)
res.write("successfully inserted");
res.end();
});
app.listen(3000);
console.log('server running at port 3000');
Код Arduino:
#include <SoftwareSerial.h>
SoftwareSerial myGsm(7,8);
void senddata();
void printSerialData();
void gsm_init();
void setup() {
delay(4000);
myGsm.begin(9600);
Serial.begin(9600);
gsm_init();
}
void loop() {
int i;
myGsm.println("AT+CIPSTART=\"TCP\",\"18.217.227.42\",\"80\"");
printSerialData();
delay(5000);
myGsm.println("AT+CIPSEND");
printSerialData();
delay(1000);
for(i=0;i<10;i++) {
myGsm.println("GET http://18.217.227.42/writedata/1/8/5");
myGsm.write(0x1A);
delay(1000);
printSerialData();
delay(10000);
}
myGsm.println("AT+CIPSHUT");
delay(1000);
}
void printSerialData() {
while(myGsm.available()!=0)
Serial.write(myGsm.read());
}
void gsm_init() {
myGsm.println("AT+CPIN?");
delay(1000);
printSerialData();
myGsm.println("AT+CREG?");
delay(1000);
printSerialData();
myGsm.println("AT+CGATT=1");
delay(1000);
printSerialData();
myGsm.println("AT+CIPSHUT");
delay(1000);
printSerialData();
myGsm.println("AT+CIPMUX=0");
delay(2000);
printSerialData();
myGsm.println("AT+CSTT=\"www\",\"\",\"\"");
//setting the APN, 2nd parameter empty works for all networks
delay(5000);
printSerialData();
myGsm.println();
myGsm.println("AT+CIICR");
delay(6000);
printSerialData();
myGsm.println("AT+CIFSR"); //init the HTTP request
delay(5000);
printSerialData();
}