Tomswe
August 30, 2019, 6:21am
1
It works from 2 minutes to some hours then it hangs and stop working.
Will there be some kind of update or shall I put it in the trashcan?
pert
August 30, 2019, 7:30am
2
It's impossible to say what the problem is based on such little information, but there is some information here on improving the reliability of the GSM communications of the MKR GSM 1400 here:
opened 08:24PM - 20 Nov 18 UTC
type: imperfection
I've posted this before, but I'll try again. My code is pretty simple. I check f… or SMS messages and then reply back using Hologram's network. I'm using the latest MKRGSM library 1.3.1. I also have a 1400 mAhr lithium battery connected so I'm confident that I don't have a hardware issue related to modem current.
Here's my code:
```
#include <MKRGSM.h>
const char PINNUMBER[] = " ";
const char GPRS_APN[] = "hologram";
const char GPRS_LOGIN[] = " ";
const char GPRS_PASSWORD[] = " ";
String HOLOGRAM_DEVICE_KEY = "********";
String HOLOGRAM_TOPIC = "_SOCKETAPI_";
GSMClient client;
GPRS gprs;
GSM gsm(1); // Enable debug
GSM_SMS sms;
GSMScanner scan;
char server[] = "cloudsocket.hologram.io";
int port = 9999;
boolean isSMSAvailable = false;
char sms_message[145];
void setup() {
Serial.begin(115200);
//while(!Serial);
scan.begin();
connectGSM();
}
void connectGSM() {
boolean connected = false;
while (!connected) {
Serial.println("Begin GSM Access");
if ((gsm.begin() == GSM_READY) &&
(gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY)) {
connected = true;
Serial.println("GSM Access Success");
Serial.println(scan.getCurrentCarrier());
}
else {
Serial.println("Not connected");
delay(1000);
}
}
}
void loop() {
if(Serial.available()) {
char c = Serial.read();
if(c == 'e')
MODEM.debug();
if(c == 'd')
MODEM.noDebug();
}
// Get any new incoming txt messages
int c;
if (sms.available()) {
int i = 0;
while ((c = sms.read()) != -1) {
sms_message[i++] = (char)c;
}
sms_message[i] = '\0'; // Terminate message
isSMSAvailable = true;
sms.flush();
}
if(gsm.isAccessAlive()) {
if(gprs.status() != GPRS_READY) {
if(gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY)
Serial.println("GPRS ready!");
else
Serial.println("GRPS not ready!");
}
}
else {
Serial.println("Reconnect to GSM...");
connectGSM();
}
// Send message back through hologram
if(isSMSAvailable) {
isSMSAvailable = false;
if (client.connect(server, port)) {
client.print("{\"k\":\"" + HOLOGRAM_DEVICE_KEY + "\",\"d\":\"");
client.print(sms_message);
client.println("\",\"t\":\""+HOLOGRAM_TOPIC+"\"}");
client.stop();
}
else {
MODEM.send("AT+USOER");
}
}
delay(1000);
}`
```
It takes anywhere from a few days to a week or more to exhibit the problem. My logs typically look like this, where the incoming SMS message, "Jdjd", gets received and then repeated back to me via Hologram's network.
```
OK
AT+CMGL="REC UNREAD"
+CMGL: 19,"REC UNREAD","+19495472010",,"18/11/14,03:53:24+00"
Jdjd
OK
AT+CMGD=19
OK
AT+CREG?
+CREG: 0,5
OK
AT+USOCR=6
+USOCR: 0
OK
AT+USOCO=0,"cloudsocket.hologram.io",9999
OK
AT+USOWR=0,21,"7B226B223A22433E383375242B57222C2264223A22"
+USOWR: 0,21
OK
AT+USOWR=0,4,"4A646A64"
+USOWR: 0,4
OK
AT+USOWR=0,20,"222C2274223A225F534F434B45544150495F227D"
+USOWR: 0,20
OK
AT+USOWR=0,2,"0D0A"
+USOWR: 0,2
OK
AT+USOCL=0
OK
AT+CMGL="REC UNREAD"
OK
AT+CREG?
+CREG: 0,5`
```
However, after a week or so this happens:
```
`OK
AT+CMGL="REC UNREAD"
+CMGL: 19,"REC UNREAD","+19495472010",,"18/11/20,19:51:00+00"
JDJDJ
OK
AT+CMGD=19
OK
AT+CREG?
+CREG: 0,5
OK
AT+USOCR=6
+USOCR: 0
OK
AT+USOCO=0,"cloudsocket.hologram.io",9999
ERROR
+UUSOCL: 0
AT+USOCL=0
ERROR
AT+CMGL="REC UNREAD"
OK
AT+CREG?
+CREG: 0,5
OK
AT+CMGL="REC UNREAD"
OK
AT+CREG?
+CREG: 0,5
````
From then on, the library is never able to recover.
Any help would be greatly appreciated. The code I submitted is a stripped down version of my application. I've been wanting to release my application using the MKRGSM board but I've been haunted by this issue. I see there's some asynchronous options that aren't well documented and I'm reluctant to use this approach - besides, shouldn't this library be rock solid as documented!
If you do all that and it still isn't working, then come back here with detailed information and we'll try to help you out.