Сервер 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();
}

0 ответов

Другие вопросы по тегам