SIM800L: АТ команда узнать, что на станции нет СМС для неё

После просыпания и подачи питания на SIM800L нужно принять управляющую СМС, если она есть. Она приходит от 1 до 15секунд, если по опросу ожидать её прихода. То есть непонятно, какой таймаут оставить на это ожидание - гораздо лучше было бы получить ОТВЕТ: Нет СМС и отключиться. Чтобы не жрать батарейку.

Есть команды типа “количество СМС в САМОЙ SIM800L” но это не значит что их нет на сотовой станции для нас… Команды типа “выдать количество не скачанных СО СТАНЦИИ СМС” и не хватает. Если она вообще существует.

Что ещё я делал: использовал вывод RING - он дергается в 0 на 120мС при ПРИХОДЕ СМС. Примерно через то же время, что и при опросе.
Но никак не дергается, если мы СМС не скачали - а сколько этого ждать?..

void SMSrecv() // --------------------------------------------------
{
 char str[MaxStr];
  byte i=0; 
  byte ItSMS = 0;

  memset(str, '\0', MaxStr);

  ClSec=0;
  unsigned long  previous = millis();

  if(EE.B.WaitSMS>60 || EE.B.WaitSMS<10 ) EE.B.WaitSMS=25; 
  unsigned long TimeOt = ((unsigned long) EE.B.WaitSMS ) * 1000L; //mS MsWaitSMS; 

  unsigned long  WaitSMSstart=millis(); //засечем время начала ожидания прихода СМС

  do{
      if(serial1.available() != 0)
      {   
        str[i] = serial1.read(); i++; //принимаем байты 
        previous = millis(); //сбросим таймаут
      }
      if (strstr(str, "RING") != NULL) // это входящий звонок  
      {
        sendATcommand("ATH0", "OK",20); // выдать отбой
        return;       
      }
      if (strstr(str, "+CMT:") != NULL) { ItSMS=1; TimeOt=500;}    //Indicates that new message has been received.  Вот этого ждем...

    } while( ((millis() - previous) < TimeOt) && i<MaxStr-1); //timeout или переполнение


    if(!ItSMS) return; // это не СМС, выходим

WaitSMSsec = ( (float)  ( millis() - WaitSMSstart) ) * 0.001f; //а тут я засекаю время реального ожидания прихода СМС, и шлю его затем себе

//далее обработка принятой СМС

Сколько раз на этом форуме говорили, что надо выкладывать полный скетч, чобы можно было загузить помошнику у себя, а не эти огрызки.

Согласен, моя вина. Просто там есть коммерческая тсказать информация, которую мне жалко выставлять. Ну и он длинный. И работает отлично - в нём проблем нет, проблема как быстро узнать что СМС через чужое устройство типа SIM800L на станции нет непринятых нами СМС.
Может кто-то долбался с этими чудовищными АТ-командами и всё знает.

Напишите короткий пример без так сказать информациюи

ну я выше и попытался это сделать - это просто опрос SIM800L в ожидании признака что пришло СМС… Все работает, но надо ставить ожидание, по хорошему 30сек. В это время жрется 20мА, и так каждый час. Жалко! )) хотелось бы ожидать именно ОТВЕТА: нет СМС.

(там есть какая-то СМС-индикация но я её не могу понять… точнее как я понял такой возможности узать про СМС именно НА СТАНЦИИ нет команды. Хорошо если я неправ.)

Подробная документация по AT-командам

читал, всего-то 378 страниц. Не нашел…

Беда :frowning:

Впервые слышу, что существуют какие-то СМС на СТАНЦИИ, которые не скачаны на устройство

1 лайк

Если номер не в сети, то смс буферизируются опсос-ом. как только абонент регистрируется сетью, смски все оптом летят ему.

да, для обычного режима это видимо нонсенс: пришла СМС и устройство сразу её скачало.

Здесь же включились - вошли в сотовую сеть - как определить что СМС нет и что можно отключиться?
Тут проблема в том, СКОЛЬКО ЖДАТЬ это скачивание. Хотелось бы должаться типа ответа: “Число СМС для вас =0”. Иначе приходится ждать ОТСУТСТВИЯ, вопрос - сколько времени ждать?..

К слову, если не дождались то… СМСка пропадает, в следующем включении её уже нет.

Именно так. И это работает для моего случая хорошо и удобно: кинул управляющую СМС с командами - устройство включилось позже - скачало - обработало. Всё это отлично работает, но хочется сэкономить батарейку ))

И плюс это некрасиво: ждать ОТСУТСТВИЯ непонятно сколько. Получить четкий ответ “СМС для вас=0” как-то правильнее.

Глупость. Пока опсос не плучит квиток о доставке, смс не удаляется из буфера. Не знаю какие сейчас павила, но раньше оператор гарантировал доставку смс в течение суток. Приход смс сразу после регистрации может и не поизойти.

Видимо факт включения в сеть срабатывает как квитанция, или у меня что-то не так обрабатывается. Я в общем сильно этот факт не тестировал, просто для теста кидаю СМС - короткий таймаут делаю - не скачалась, не сработала. Занова запускаю - СМС уже не приходит.

Тогда в суд на опсоса как за не оказанную платную услугу. Ни одна смс не имеет право потеряться. ИМХО.

О, тут я приличный опыт набрал. Было дело что за сутки СМСки скопились, а скачались только когда я приехал в Красноярский край, все чохом. Ну и пропадали по одиночке иногда, но тут я не могу стопудово обвинить опсоса, хотя похоже больше на него.

СМСки идут мне каждый час, с конца мая )) сейчас поставил на 4 часа, посмотрю как зиму переживет устройство в кустах на берегу.

Все запросы к оператору делаются через хэштег (#), а не через at команды.

воот! это уже интересная мысль. Надо посмотреть в этом направлении.

Как пример USSD команда *#100#