Hi,
We have SODAQ SARA R412M Board and we are using DU NBIOT sim for sending some sensor data to the thingspeak website. Also checked with our network provider ,Du for the connectivity which is working fine and the sim is connected to the NBIOT network.
Our problem is that we are able to connect with the network but not be able to send data to the website. This code works well when we change some parameter for GPRS and at that time sim got connection to the GPRS.
The following is the code we are using to send data to website.
#include <Sodaq_R4X.h>
#include <Sodaq_wdt.h>
#define CONSOLE_STREAM SerialUSB
#define MODEM_STREAM Serial1
#define DUIOT
#if defined(DUIOT)
#define CURRENT_APN "duiot"
#define CURRENT_OPERATOR AUTOMATIC_OPERATOR
#define CURRENT_URAT SODAQ_R4X_NBIOT_URAT //UNCOMMENT FOR NBIOT
//#define CURRENT_URAT SODAQ_R4X_LTEM_URAT //UNCOMMENT FOR 2G
#define CURRENT_MNO_PROFILE MNOProfiles::STANDARD_EUROPE
#define NBIOT_BANDMASK "524420"
#else
#error "Please define a operator"
#endif
#define HTTP_HOST "api.thingspeak.com"
#define HTTP_PORT 80
#define HTTP_QUERY "/update?api_key=XXXXXXZXDF&field1=70&field2=41"
static Sodaq_R4X r4x;
static Sodaq_SARA_R4XX_OnOff saraR4xxOnOff;
static bool isReady;
void setup()
{
CONSOLE_STREAM.begin(115200);
MODEM_STREAM.begin(r4x.getDefaultBaudrate());
r4x.setDiag(CONSOLE_STREAM);
r4x.init(&saraR4xxOnOff, MODEM_STREAM);
isReady = r4x.connect(CURRENT_APN, CURRENT_URAT, CURRENT_MNO_PROFILE, CURRENT_OPERATOR, NBIOT_BANDMASK, NBIOT_BANDMASK);
CONSOLE_STREAM.println(isReady ? "Network connected" : "Network connection failed");
CONSOLE_STREAM.println("Setup done");
if (isReady) {
downloadFile();
}
}
void loop()
{
if (CONSOLE_STREAM.available()) {
int i = CONSOLE_STREAM.read();
CONSOLE_STREAM.write(i);
MODEM_STREAM.write(i);
}
if (MODEM_STREAM.available()) {
CONSOLE_STREAM.write(MODEM_STREAM.read());
}
downloadFile();
sodaq_wdt_safe_delay(100000);
}
void downloadFile()
{
char buffer[2048];
uint32_t i = r4x.httpGet(HTTP_HOST,HTTP_PORT, HTTP_QUERY, buffer, sizeof(buffer));
CONSOLE_STREAM.print("Read bytes: ");
CONSOLE_STREAM.println(i);
if (i > 0) {
buffer[i] = 0;
CONSOLE_STREAM.println("Buffer:");
CONSOLE_STREAM.println(buffer);
}
}
And the corresponding serial monitor result is as follows.
Network connected
Setup done
Read bytes: 0
Please help us to find the mistake.