Good day Everyone,
I have a project where each event is time-stamped, and the timestamp is added to an SMS and sent for recording. I have been able to retrieve the time from the SIM800L Modem, and when I do the following:
int time = sim800l.print("AT+CCLK?\r"); Serial.println(time);
Then the time prints in the format it was retrieved and displays in the serial monitor correctly. However when I try and cast/parse, then all that is being retrieved is the single digit 9. Basically, the goal is to get this "20/11/02,05:58:59+08", or a subset of it into String which would allow me to add it to the SMS.
My full code below:
#include <SoftwareSerial.h>
SoftwareSerial sim800l(2, 3); // RX,TX for Arduino and for the module it's TXD RXD, they should be inverted
#define button1 7 //Button pin, on the other pin it's wired with GND
bool button_State; //Button state
String String1 = "Waypoint 1:";
String String2 = "YYMMDD";
void setup()
{
 
  pinMode(button1, INPUT_PULLUP); //The button is always on HIGH level, when pressed it goes LOW
  sim800l.begin(9600);   //Module baude rate, this is on max, it depends on the version
  Serial.begin(9600);   
  delay(1000);
}
 
void loop()
{
 
  button_State = digitalRead(button1);   //We are constantly reading the button State
 
  if (button_State == LOW) {            //And if it's pressed
    Serial.println("Button pressed");   //Shows this message on the serial monitor
    delay(200);                         //Small delay to avoid detecting the button press many times
   
    SendSMS();                          //And this function is called
 }
 
  if (sim800l.available()){            //Displays on the serial monitor if there's a communication from the module
    Serial.write(sim800l.read());
  }
}
 
void SendSMS()
{
  Serial.println("Sending SMS...");               //Show this message on serial monitor
  int time = sim800l.print("AT+CCLK?\r");
  Serial.println(time);
  String tym = String(time); // <- This just rint a 9 to the serial monitor
 
  sim800l.print("AT+CMGF=1\r");                   //Set the module to SMS mode
  delay(100);
  sim800l.print("AT+CMGS=\"+xxxxxxxxxxx\"\r");  //Your phone number don't forget to include your country code, example +212123456789"
  delay(500);
  sim800l.print(String1 + String2 + Tym);       //This is the text to send to the phone number, don't make it too long or you have to modify the SoftwareSerial buffer
  delay(500);
  sim800l.print((char)26);// (required according to the datasheet)
  delay(500);
  sim800l.println();
  Serial.println("Text Sent.");
  delay(500);
}
Please note that I have searched extensively and tried many code samples, I am just really stuck.
Thank you in advance, and your help is much appreciated