Jump to content

    
Sign in to follow this  
quarz

Снова про время

Recommended Posts

В системе есть GSM и GPS модули. Нужно получить дату-время и локальный часовой пояс(!).

 

 

Синхронизация через GSM (Quectel M95):

Вариант 1. AT+CTZU=1 и AT+QNITZ=1 - не помогло, модуль возвращает ОК, а время не синхронизируется. Пробовал симки билайн и мегафон.

Настраивал так:

AT+QNITZ=? // включена синхронизация? Отвечает: да (1), включена

AT+QNITZ=1 // если не была включена, включаю

AT+CTZU=1 // синхронизирую время

AT+CCLK? // читаю время - получаю время с момента старта модуля

AT+QLTS // запрос последнего времени синхронизации - пусто. Единственный правильный ответ =)

 

Вариант 2. NTP сервер: возвращает UTC, но часовой пояс всегда "+00". Понятно, NTP сервер ничего не знает о твоем местоположении.

 

Синхронизация по времени GPS: в каждом втором сообщении есть время. В ZDA, согласно документации должны быть дата, время и часовой пояс (смещения dh, dmin относительно UTC). Но и здесь облом - у Quectel L70\76 в смещениях пусто, в документации на UBlox Max-M8 эти поля установлены в 0. Про другие GPS приемники еще не смотрел.

 

Понятно, что можно самостоятельно по координатам вычислить часовой пояс, но я надеялся хотя бы здесь не изобретать велосипед ))

 

У Telit в "Telit_MT_GNSS_Software_User_Guide_r2.pdf"

 

...описание полей ZDA...

Local zone hour:

Offset from UTC. Number of whole hours added to local time to

obtain Greenwich Mean Time (GMT). The Local zone hour is

negative for East longitudes.

Range: -13 to 13

Null or always zero if not supported

 

Local zone minutes:

Offset from UTC. Local zone minutes have the same sign as the

Local zone hour.

Range 00 to 59

Null or always zero if not supported

 

От чего зависит поддержка? От конкретных спутников, спутниковой системы или от модуля?

 

Share this post


Link to post
Share on other sites

В GSM время синхронизируется не мгновенно (сразу после подачи команды), а тогда когда это принято у оператора. Частота обновления может меняться в зависимости от региона и составлять раз в десять минут, раз в час, раз в сутки и пр. Кроме того эта операция может не поддерживаться оператором. На МТС - раз в час, в 00 каждого часа.

 

Если включить режим синхронизации до регистрации в сети, то при регистрации время будет синхронизировано.

Share this post


Link to post
Share on other sites
Отправить GSM модулем СМС самому себе, из СМСки выдернуть время.

 

Получите время СМС-центра, не факт что в вашем часовом поясе. Если вообще придет, а не будет висеть в СМС-центре.

Share this post


Link to post
Share on other sites
В GSM время синхронизируется не мгновенно (сразу после подачи команды), а тогда когда это принято у оператора. Частота обновления может меняться в зависимости от региона и составлять раз в десять минут, раз в час, раз в сутки и пр. Кроме того эта операция может не поддерживаться оператором. На МТС - раз в час, в 00 каждого часа.

 

Если включить режим синхронизации до регистрации в сети, то при регистрации время будет синхронизировано.

 

Спасибо, попробую

Share this post


Link to post
Share on other sites

Попробовал: сразу после загрузки модуля включаю синхронизацию AT+QNITZ=1, однако ни после регистрации, ни по прошествии 9 часов время не синхронизировалось. Напишу в поддержку quectel

Share this post


Link to post
Share on other sites

Я делал так (правда на симкомовских модулях, но тамкоманды вроде бы все из стандарта)

AT+CLTS=1 //Требует брать время из сети. Вступает в силу только после перезапуска модуля!

 

А потом просто AT+CCLK?

Edited by RiseOfDeath

Share this post


Link to post
Share on other sites
Проверил на SIM900R. Оператор Билайн. Выдал точное местное время. А вот пояс почему-то +08 (?). Вместо +02.

+08 потому, что значение в четвертях часа. На этот счет смотрите описание команды AT+CCLK.

 

Вступает в силу только после перезапуска модуля!

Не совсем так. Вступает данная настройка в силу в тот момент, когда Вы её подали.

А вот время обновляется при регистрации в сети (конечно, если поддержано сетью).

При этом не обязательно модуль перезапускать, можно только перерегистрировать в сети - сначала AT+CFUN=0, затем AT+CFUN=1.

Share this post


Link to post
Share on other sites
А вот время обновляется при регистрации в сети (конечно, если поддержано сетью).

При этом не обязательно модуль перезапускать, можно только перерегистрировать в сети - сначала AT+CFUN=0, затем AT+CFUN=1.

Данный способ работает, если следующую команду послать не раньше и не сильно позже (3-5 секунд) определённого момента. После AT+CFUN=1 я жду сообщения SMS Ready.

Share this post


Link to post
Share on other sites

Перерегистрация в сети, отключение и включения радиочастотной части модуля в моём случае оказались примочками. Есть команда AT+CPAS и если результат проверки не 0, то выполняем переинициализацию до победного результата, а там и время прилетит в нужном месте, если оператор его рассылает.

Share this post


Link to post
Share on other sites

>>>>то выполняем переинициализацию до победного результата

 

А если где-то промахнулись и не учли нюансов модуля, то сжираем ресурс флеша. Тоже до.... конца. :)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this