Яку команду AT слід надіслати модему, щоб отримати час?


11

Я використовую SIM800E . Я хочу знати, яку команду AT слід відправити модему, щоб отримати час? Цей модем має RTC. Але мені потрібно встановити це автоматично через стільникову вежу. Вежа може надсилати час модему при запиті за допомогою команди AT. Я бачив у багатьох телефонах, що час оновлюється під час передачі.

У посібнику немає цієї інформації.


1
Згідно з цим документом на апаратний дизайн потрібно отримати "посібник з командування SIM800E AT" - окремий документ.
RedGrittyBrick

Тоді на практиці, як прості немультимедійні телефони оновлюють місцезнаходження?
gpuguy

3
NITZ є необов'язковою частиною стандартів GSM, підтримується не всіма операторами, і може бути не точним, ніж за кілька хвилин.
RedGrittyBrick

3
Я вважаю, що це вже є темою, оскільки це стосується використання вбудованого модуля GSM для зв'язку M2M. Чому це повідомлення поза темою, і було дозволено чотири наступні дописи: приклад 1 2 3 4
tcrosley

Відповіді:


7

Я використав таку команду:

AT+CCLK?

який повертає дату та час, наприклад:

+CCLK: "00/01/12,05:44:53+00" 

успішно в продуктах, що використовують три різних модулі клітин: Enfora, Telit і Sierra. Той факт, що він використовує символ + після AT, означає, що це звичайна (на відміну від власницької) команди, і має бути доступною для більшості, якщо не всіх модулів комірок. (Власні команди використовують специфічний для постачальника символ після AT, наприклад AT $, AT%, AT! Тощо)

Як я вже згадував у коментарі, якщо ви не можете отримати час за допомогою цієї команди (наприклад, вона повертає всі 0), тоді ще один спосіб - підключитися до мережі та звільнити час від роботи сервера за допомогою команди HTTP.

For example, the following HTTP request:
HEAD /index.html HTTP/1.1\r\n
Host: www.somehost.com\r\n;
\r\n

де Somehost - це ваш власний сервер або Google.com тощо. Це також передбачає, що index.html є основною сторінкою сайту (не для Google).

Він поверне заголовок на зразок:

HTTP/1.x 200 OK  
Transfer-Encoding: (something)  
Date: Fri, 13 Nov 2013 04:36:25 GMT
(lots more stuff)

Наскільки мені відомо, всі користувачі зобов’язані повернути час GMT у своїх заголовках.


1
Деякі речі, які я читав, пропонують, що значення, повернене + CCLK, може бути від тактового борту (RTC), а не від мережі GSM (башта).
RedGrittyBrick

1
Я також прочитав описану команду таким чином, однак я використовував її в декількох різних продуктах, використовуючи три різні модулі комірок протягом останніх п'яти років або близько того, і вона працювала майже скрізь у США, а також у Європі та Азії. Було кілька перевізників, наприклад один у Німеччині, де він не працював (повернув усі 0); Я зв’язався з ними і мені сказали, що не підтримують оновлення часу в мережі. Тому я написав код, щоб зробити запит HTTP 1.1 і захопити час відключення сервера.
tcrosley

1
Я думаю, що запит HTTP може бути краще написаний, HEAD / HTTP/1.0\r\nHost: example.com\r\n\r\nоскільки я вважаю, що /він менш схильний до 404, і що HTTP 1.0 краще відображає наше (на пристрої) незнання HTTP. Крім того, крапка з комою виглядає як друкарська помилка. Крім цього, дата - GMT / UTC за специфікацією ( див. Також ).

1
Ця відповідь є інформаційною, але заслуговує на оновлення щодо бортової RTC та проблеми з мережевим часом.

5

Перш за все, NITZ погано підтримується у багатьох мережах (можна сказати, РОЗРАБОТКА). Я б зовсім не покладався на нього, оскільки 1 з 10 мереж використовує його, особливо у віддалених місцях.

По-друге + команда CCLK призначена для внутрішньої RTC модему. Деякі модеми мають можливість оновити цей годинник з мережі. Покладатися на це ризиковано.

Вищезазначений запит HTTP є неповним, тобто він не працює. Раніше я знав, як це зробити, тому повернеться назад, коли це буде працювати.

Той факт, що він використовує символ + після AT, означає, що це звичайна (на відміну від власницької) команди, і має бути доступною для більшості, якщо не всіх модулів комірок. (Власні команди використовують специфічний для постачальника символ після AT, наприклад AT $, AT%, AT! Тощо)

Це не зовсім вірно. Існують власні команди модему, які дотримуються конвенції AT +. Наприклад, AT + WOPEN - це власна команда Sierra.

Існує певний набір команд, однакових незалежно від модему. Вони визначені в документах 3GPP. Власні команди зазвичай визначаються в посібниках користувача постачальника і чітко позначені як власні.


4

AT + CLTS = 1 (Отримати місцеву позначку часу) AT&W (Зберегти конфігурацію)

Вимкніть модем і увімкніть модем (перезавантажте, щоб отримати локальний час з мережі)

Наступного разу, коли модем завантажиться, ви маєте змогу отримати локальний час мережею, і його можна прочитати надсилаючи

AT + CCLK?

Це працювало для мене, використовуючи модем SIM800 GSM для читання описів команд AT для отримання додаткової інформації


@ s0nic2k відповідь підтверджена, це НЕ буде працювати так, як ви очікували.
Ali80

3

PuTTY:

AT+COPS=2

OK

AT+CTZU=1

OK

AT+COPS=0

OK

+CTZU: "15/05/06,17:25:42",-12,0

Працює чудово, після цього ви повинні проаналізувати результат і помістити в clk, оскільки це не відбувається автоматично. (принаймні в моєму Сінтріоні)


6
Було б допомогти, якщо ви можете пояснити англійською мовою, що це робить і чому це рішення питання.
Девід

@David Залишайтеся з нами, ми працюємо над перекладом у чаті.
Нік Алексєєв

2
Варіант для SIM800H, який працював на мене: використовуйте AT + CLTS = 1 замість AT + CTZU = 1 (оскільки CTZU не підтримується). Тоді ви отримаєте небажане повідомлення типу * PSUTTZ: 2017,1,30,20,17,28, "- 20", 0 при перереєструванні
Метт Томас

2

Використовуйте команду AT + CIPGSMLOC. Він добре працює в модулях SIMCOM.

Цій команді потрібна послуга GPRS, яка додається перед її використанням. Тому спочатку приєднайте послугу GPRS за допомогою відповідної послідовності команд, а потім скористайтеся цією командою для отримання дати та часу з мережі GSM.

Для підключення послуги GPRS:

CMD:AT+CGATT=1 CMD:AT+SAPBR=3,1,"Contype","GPRS" CMD:AT+SAPBR=3,1,"APN","" CMD:AT+SAPBR=3,1,"USER","" CMD:AT+SAPBR=3,1,"PWD","" CMD:AT+SAPBR=1,1 CMD:AT+SAPBR=2,1 /* to confirm that GPRS is attached. will show IP if attached */

Потім використовуйте команду GSM Location:

AT+CIPGSMLOC=1,1

Ця команда потребує значного часу (декілька секунд) для отримання інформації з мережі, тому надайте функції виконання команд належним тайм-аутом.

Ця команда також повертає місце BTS, до якого підключений модуль. Таким чином, ви також можете отримати приблизно точне розташування GSM-модуля.

Для отримання додаткової інформації зверніться до цього посібника: (працює аналогічно для SIM800)

SIM900_GSM Location AT Command Manual_V1.00

Також зауважте, що команда AT + CLBS не збігається з цією командою. У деяких регіонах це може не працювати. (Я не зміг ним скористатися!). Але AT + CIPGSMLOC завжди працює.


Я отримую +CIPGSMLOC: 302<\r><\n> відповідь
Ali80

1
@ Ali80 Поповніть свою кредитну картку. Це може статися, якщо на вашій сімкарді є кредит, але він не стягувався тривалий час. Ви можете також протестувати за допомогою іншої simcard.
MDR

так, я можу підтвердити, що цей метод працює, мій simcard мав кредит, але мав доступ до деякого плану даних.
Ali80

1

NITZ, як вказував RedGrittyBrick, - це відповідь. Однак це повідомлення, яке надсилається лише мережею, як правило, під час приєднання до мережі. Деякі перевізники надсилають її, інші - ні. Немає стандартного способу вимагати цього.


1

Ось послідовність команд AT для отримання часу стільникової мережі. Вона працювала в моєму модулі GSM UBLOX LEON G-200 .

GSM_Send_Modem_Command("AT+COPS=2\r\n");//de register
GSM_Send_Modem_Command("AT+CTZU=1\r\n");//automatic time zone update is enabled
GSM_Send_Modem_Command("AT+COPS=0\r\n");// register to network
GSM_Send_Modem_Command("AT+CCLK?\r\n");// gets the clock of the MT

1

спочатку надішліть цю дві команди
AT + CLTS = 1; & W

AT + CFUN = 1,1 і чим AT + CLTS? перевірити, чи отримуєте ви цю відповідь + клітинки: 1
і чим надсилаєте цю команду AT + CCLK?


Ласкаво просимо на EE.SE. Скористайтеся двома зворотними галочками (``) навколо фрагментів коду у своїх публікаціях або використовуйте {}кнопку на панелі інструментів редактора для блоків коду, як і в інших відповідях. Це дасть шрифт сірого фону та фіксованої ширини, що дозволить легко побачити, де починається і закінчується ваш код.
транзистор

0

Я успішно використовував NITZ під час ініціалізації та CCLK, коли хочу прочитати внутрішню RTC. ЯКЩО може пройти хвилина-дві, перш ніж модем RTC буде встановлений з мережі. Варто зберегти прапор, щоб вказати, чи дійсно час дійсний.


0

Я розробив прошивку для U-Blox LTE. Там я використав AT + CCLK? отримати поточний локальний час від модему.

Це дає час у наступному форматі. Не те, щоб це була синхронізована команда.

+CCLK: "00/01/01,05:44:53+00" (might get unsynchronized time if the modem time is not sync with the system time)

Отже наступна команда AT була відправлена ​​до реєстрації для синхронізації часу з мережею

AT+CTZU=1\r\n

Отже, моя послідовність команд:

AT+CTZU=1\r\n
AT+CREG=1\r\n (to subscribe for the network registration updates)
AT+CCLK?\r\n (The Time Zone information is provided after the network registration, if the network supports the time
zone information)

Додаткова логіка для забезпечення правильного часу:

Він перевіряє дату на 70/01/01 або 00/01/01 (у нашому випадку - це час, який ми отримуємо, якщо модем має недійсний час). І якщо він недійсний, він намагається періодично кожні 1 хвилини, поки він не отримає правильний час. Після декількох спроб перестає надсилати CCLK? і покладатися на інші джерела часу.

Примітка: NITZ ще підтримується в обмеженому наборі країн ( https://en.wikipedia.org/wiki/NITZ )

Тому найкраще мати резервний спосіб оновлення часу, якщо він не підтримується в цій країні.

У моєму випадку у нас є модуль GPS, тому я отримую оновлення часу через дані GNSS.

Крім того, що тут не доречно, але вважається корисним для синхронізації в часі.

Ми запускаємо chrony deamon для оновлення системного часу (ввімкнено ручні команди). Таким чином, обидва оновлення часу отримуються, і chrony вирішує правильний час та оновлює системний час.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.