Skip to content

sim808.isSMSunread() detecting an unread message even though there isn't an unread message #39

@LokYinBarneyWong

Description

@LokYinBarneyWong

hello, I made some modifications to the code which was supposed to receive an SMS message and then get its GPS location and send the GPS location back to whoever sent the SMS message, basically a small GPS tracker, but when I put my SD into the sim808 module to test it, the message index is always 1 when the code proceeded into void loop() detecting an unread message, even though I already read all the messages before putting it in. Is there a way for me to fix this issue, Thank you for reading this. :slight_smile:
here is the complete code:
`#include <DFRobot_sim808.h>
#include <SoftwareSerial.h>

#define MESSAGE_LENGTH 160
char message[MESSAGE_LENGTH];
bool messageIndex = 0;
char MESSAGE[300];
char lat[12];
char lon[12];
char wspeed[12];

char phone[16];
char datetime[24];

#define PIN_TX 10
#define PIN_RX 11
SoftwareSerial mySerial(PIN_TX,PIN_RX);
DFRobot_SIM808 sim808(&mySerial);//Connect RX,TX,PWR,

void setup()
{
mySerial.begin(9600);
Serial.begin(9600);
//******** Initialize sim808 module *************

if( sim808.attachGPS())
Serial.println("Open the GPS power success, please send SMS message to me!");

else 
Serial.println("Open the GPS power failure");
Serial.print("init message index: ");   //debug code
Serial.println(messageIndex);

}

void loop()
{
//*********** Detecting unread SMS ************************
messageIndex = sim808.isSMSunread();
Serial.print("SMS Index under loop: "); //degbug code
Serial.println(messageIndex);
//*********** At least one UNREAD SMS ***********
if (messageIndex > 0)
{
Serial.println("Entering SMS processing block");

  sim808.readSMS(messageIndex, message, MESSAGE_LENGTH, phone, datetime);
  //***********In order not to full SIM Memory, is better to delete it**********
  sim808.deleteSMS(messageIndex);
  Serial.print("From number: ");
  Serial.println(phone);  
  Serial.print("Datetime: ");
  Serial.println(datetime);        
  Serial.print("Recieved Message: ");
  Serial.println(message); 

while(!sim808.getGPS())
{
  
}


  Serial.print(sim808.GPSdata.year);
  Serial.print("/");
  Serial.print(sim808.GPSdata.month);
  Serial.print("/");
  Serial.print(sim808.GPSdata.day);
  Serial.print(" ");
  Serial.print(sim808.GPSdata.hour);
  Serial.print(":");
  Serial.print(sim808.GPSdata.minute);
  Serial.print(":");
  Serial.print(sim808.GPSdata.second);
  Serial.print(":");
  Serial.println(sim808.GPSdata.centisecond);
  Serial.print("latitude :");
  Serial.println(sim808.GPSdata.lat);
  Serial.print("longitude :");
  Serial.println(sim808.GPSdata.lon);
  Serial.print("speed_kph :");
  Serial.println(sim808.GPSdata.speed_kph);
  Serial.print("heading :");
  Serial.println(sim808.GPSdata.heading);
  Serial.println();

  float la = sim808.GPSdata.lat;
  float lo = sim808.GPSdata.lon;
  float ws = sim808.GPSdata.speed_kph;

  dtostrf(la, 6, 2, lat); //put float value of la into char array of lat. 6 = number of digits before decimal sign. 2 = number of digits after the decimal sign.
  dtostrf(lo, 6, 2, lon); //put float value of lo into char array of lon
  dtostrf(ws, 6, 2, wspeed);  //put float value of ws into char array of wspeed

  sprintf(MESSAGE, "Latitude : %s\nLongitude : %s\nWind Speed : %s kph\nMy Module Is Working. Mewan Indula Pathirage. Try With This Link.\nhttp://www.latlong.net/Show-Latitude-Longitude.html\nhttp://maps.google.com/maps?q=%s,%s\n", lat, lon, wspeed, lat, lon);
  

   Serial.println("Sim808 init success");
   Serial.println("Start to send message ...");

   Serial.println(MESSAGE);
   Serial.println(phone);

   sim808.sendSMS(phone,MESSAGE);

  //************* Turn off the GPS power ************
  sim808.detachGPS();

}
else
{
Serial.println("No unread SMS");
}

}`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions