Apa perintah AT yang harus dikirim ke modem untuk mendapatkan waktu?

11

Saya menggunakan SIM800E . Saya ingin tahu perintah AT apa yang harus dikirim ke modem untuk mendapatkan waktu? Modem ini memiliki RTC. Tapi saya perlu mengaturnya secara otomatis melalui menara sel. Menara dapat mengirim waktu ke modem ketika diminta menggunakan perintah AT. Saya telah melihat di banyak ponsel bahwa waktu diperbarui selama hand-off.

The pengguna tidak memiliki informasi ini.

gpuguy
sumber
1
Menurut dokumen desain perangkat keras itu Anda perlu mendapatkan "SIM800E AT Command Manual" - dokumen terpisah.
RedGrittyBrick
Lalu dalam praktiknya bagaimana sederhananya lokasi telepon non-Multimedia diperbarui?
gpuguy
3
NITZ adalah bagian opsional dari standar GSM, tidak didukung oleh semua operator dan mungkin tidak akurat hingga lebih dari beberapa menit.
RedGrittyBrick
3
Saya percaya ini pada topik karena menyangkut penggunaan modul GSM tertanam untuk komunikasi M2M. Mengapa posting ini di luar topik, dan empat posting berikut diizinkan: contoh 1 2 3 4
tcrosley

Jawaban:

7

Saya telah menggunakan perintah berikut:

AT+CCLK?

yang mengembalikan tanggal dan waktu, seperti:

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

berhasil dalam produk yang menggunakan tiga modul sel yang berbeda: Enfora, Telit, dan Sierra. Fakta bahwa ia menggunakan karakter + setelah AT menyiratkan itu adalah perintah yang umum (sebagai lawan kepemilikan), dan harus tersedia pada sebagian besar atau tidak semua modul sel. (Perintah eksklusif menggunakan karakter khusus vendor setelah AT, seperti AT $, AT%, AT! Dll.)

Seperti yang saya sebutkan dalam komentar, jika Anda tidak dapat menggunakan perintah ini (misalnya, mengembalikan semua 0), maka cara lain adalah menyambung ke jaringan dan mendapatkan waktu istirahat dari server menggunakan perintah HTTP.

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

di mana somehost adalah server Anda sendiri atau Google.com dll. Ini juga mengasumsikan index.html adalah halaman utama untuk situs tersebut (bukan untuk Google).

Ini akan mengembalikan header seperti:

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

Sejauh yang saya tahu, semua pengungkit wajib mengembalikan waktu GMT di header mereka.

tcrosley
sumber
1
Beberapa hal yang saya baca menyarankan nilai yang dikembalikan oleh + CCLK mungkin berasal dari on-board clock (RTC), bukan dari jaringan GSM (menara).
RedGrittyBrick
1
Saya telah membaca perintah yang dijelaskan dengan cara itu juga, namun saya telah menggunakannya di beberapa produk yang berbeda menggunakan tiga modul sel yang berbeda selama sekitar lima tahun terakhir, dan telah bekerja hampir di mana saja di AS dan juga Eropa dan Asia. Ada beberapa operator, misalnya satu di Jerman, di mana tidak berfungsi (kembalikan semua 0); Saya menghubungi mereka dan diberi tahu bahwa mereka tidak mendukung pembaruan waktu melalui jaringan. Jadi saya menulis kode untuk melakukan permintaan HTTP 1.1 dan mengambil waktu istirahat dari server.
tcrosley
1
Saya pikir permintaan HTTP bisa ditulis lebih baik HEAD / HTTP/1.0\r\nHost: example.com\r\n\r\nkarena saya merasa /kurang rentan terhadap 404s dan bahwa HTTP 1.0 lebih baik mewakili ketidaktahuan kami (bijaksana perangkat) tentang HTTP. Selain itu, titik koma terlihat seperti kesalahan ketik. Selain itu, tanggalnya adalah GMT / UTC pada spesifikasi ( lihat juga ).
1
Jawaban ini memberi informasi tetapi layak mendapat pembaruan tentang masalah waktu jaringan RTC vs.
5

Pertama-tama, NITZ kurang didukung di banyak jaringan (dapatkah Anda mengatakan COST-CUTTING). Saya tidak akan bergantung sama sekali karena 1 dari 10 jaringan menggunakannya, terutama di tempat-tempat yang jauh.

Perintah kedua + CCLK adalah untuk RTC internal modem. Beberapa modem memiliki fasilitas untuk memperbarui jam ini dari jaringan. Mengandalkan ini berisiko.

Permintaan HTTP di atas tidak lengkap yaitu tidak berfungsi. Saya dulu tahu bagaimana melakukan ini sehingga akan kembali lagi ketika berfungsi.

Fakta bahwa ia menggunakan karakter + setelah AT menyiratkan itu adalah perintah yang umum (sebagai lawan kepemilikan), dan harus tersedia pada sebagian besar atau tidak semua modul sel. (Perintah eksklusif menggunakan karakter khusus vendor setelah AT, seperti AT $, AT%, AT! Dll.)

Ini tidak sepenuhnya benar. Ada perintah modem eksklusif yang mengikuti konvensi AT +. Misalnya AT + WOPEN adalah perintah Sierra berpemilik.

Ada seperangkat perintah tertentu yang sama terlepas dari modem. Ini didefinisikan dalam dokumen 3GPP. Perintah kepemilikan biasanya didefinisikan dalam manual pengguna vendor dan ditandai dengan jelas sebagai milik.

s0nic2k
sumber
4

AT + CLTS = 1 (Dapatkan cap waktu lokal) AT&W (Simpan konfigurasi)

Matikan modem dan hidupkan modem (reboot untuk mendapatkan waktu lokal dari jaringan)

Lain kali ketika modem dinyalakan Anda harus bisa mendapatkan waktu lokal dengan jaringan dan dapat dibaca dengan mengirim

AT + CCLK?

Ini bekerja untuk saya saya menggunakan modem GSM SIM800 baca deskripsi perintah AT untuk informasi lebih lanjut

Sumit Dubey
sumber
@ s0nic2k jawaban dikonfirmasi, ini TIDAK akan berfungsi seperti yang Anda harapkan.
Ali80
3

Dempul:

AT+COPS=2

OK

AT+CTZU=1

OK

AT+COPS=0

OK

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

Bekerja dengan baik, setelah itu Anda harus menguraikan hasil dan tempat di CLK karena ini tidak terjadi secara otomatis. (setidaknya di Cinterion saya)

meninggal74
sumber
6
Akan membantu jika Anda dapat menjelaskan, dalam bahasa Inggris, apa ini dan mengapa itu merupakan solusi untuk pertanyaan itu.
David
@ David Tetap disini, kami sedang mengerjakan terjemahan di obrolan.
Nick Alexeev
2
Varian untuk SIM800H yang berfungsi untuk saya: gunakan AT + CLTS = 1 alih-alih AT + CTZU = 1 (karena CTZU tidak didukung). Maka Anda akan mendapatkan pesan yang tidak diminta seperti * PSUTTZ: 2017,1,30,20,17,28, "- 20", 0 saat Anda mendaftar ulang
Matt Thomas
2

Gunakan perintah AT + CIPGSMLOC. Ini bekerja dengan baik dalam modul SIMCOM.

Perintah ini membutuhkan layanan GPRS yang terpasang sebelum Anda menggunakannya. Jadi pertama pasang layanan GPRS menggunakan urutan perintah yang sesuai kemudian gunakan perintah ini untuk mendapatkan tanggal dan waktu dari jaringan GSM.

Untuk melampirkan layanan 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 */

Kemudian gunakan perintah Lokasi GSM:

AT+CIPGSMLOC=1,1

Perintah ini membutuhkan waktu yang cukup lama (beberapa detik) untuk mendapatkan informasi dari jaringan sehingga memberikan fungsi eksekusi perintah tepat waktu.

Perintah ini juga mengembalikan lokasi BTS yang terhubung dengan modul. Jadi Anda bisa mendapatkan lokasi modul GSM yang kurang lebih akurat juga.

Rujuk ke manual ini untuk informasi lebih lanjut: (bekerja dengan cara yang sama untuk SIM800)

SIM900_GSM Location AT Command Manual_V1.00

Perhatikan juga bahwa perintah AT + CLBS tidak sama dengan perintah ini. Mungkin tidak berfungsi di beberapa daerah. (Saya belum bisa menggunakannya!). Tetapi AT + CIPGSMLOC selalu berfungsi.

MDR
sumber
Saya mendapat +CIPGSMLOC: 302<\r><\n> tanggapan
Ali80
1
@ Ali80 Isi ulang pulsa kartu sim Anda. Ini mungkin terjadi jika kartu sim Anda memiliki kredit tetapi belum ditagih untuk waktu yang lama. Anda dapat menguji dengan kartu sim lain juga.
MDR
ya saya dapat mengkonfirmasi metode ini berfungsi, kartu sim saya memiliki kredit tetapi memiliki beberapa akses paket data terbatas.
Ali80
1

NITZ seperti yang ditunjukkan oleh RedGrittyBrick adalah jawabannya. Namun, ini adalah pesan yang hanya dikirim oleh jaringan, biasanya saat bergabung dengan jaringan. Beberapa operator mengirimnya, beberapa tidak. Tidak ada cara standar untuk memintanya.

pjc50
sumber
1

Ini adalah urutan perintah AT untuk mendapatkan waktu jaringan seluler. Ini berfungsi dalam modul GSM UBLOX LEON G-200 saya .

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
Myanju
sumber
1

kirim dulu dua perintah ini
AT + CLTS = 1; & W

AT + CFUN = 1,1 dan dari AT + CLTS? periksa apakah Anda mendapatkan balasan ini + clts: 1
dan daripada mengirim perintah ini AT + CCLK?

souhard bekal
sumber
Selamat datang di EE.SE. Gunakan dua kutu belakang (``) di sekitar cuplikan kode di pos Anda atau gunakan {}tombol pada bilah alat editor untuk blok kode seperti pada jawaban lainnya. Ini akan memberikan latar belakang abu-abu dan font lebar tetap sehingga mudah untuk melihat di mana kode Anda mulai dan berakhir.
Transistor
0

Saya telah berhasil menggunakan NITZ selama inisialisasi, dan CCLK ketika saya ingin membaca RTC internal. NAMUN, dibutuhkan satu atau dua menit sebelum modem RTC diatur dari jaringan. Sebaiknya pertahankan bendera untuk menunjukkan jika waktunya memang benar.

MC
sumber
0

Saya mengembangkan firmware untuk U-Blox LTE. Di sana saya menggunakan AT + CCLK? untuk mendapatkan waktu setempat saat ini dari modem.

Ini memberi waktu dalam format berikut. Bukannya itu perintah yang disinkronkan.

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

Jadi perintah AT berikut dikirim sebelum pendaftaran, untuk menyinkronkan waktu dengan jaringan

AT+CTZU=1\r\n

Jadi urutan perintah saya adalah:

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)

Logika tambahan untuk memastikan waktu yang tepat:

Ia memeriksa tanggal terhadap 70/01/01 atau 00/01/01 (dalam kasus kami, itu adalah waktu yang kami dapatkan jika modem memiliki waktu yang tidak valid). Dan jika itu tidak valid, ia mencoba secara berkala setiap 1 menit hingga mendapat waktu yang tepat. Setelah beberapa percobaan berhenti mengirim CCLK? dan mengandalkan sumber waktu lainnya.

Catatan: NITZ belum didukung di sejumlah negara terbatas ( https://en.wikipedia.org/wiki/NITZ )

Jadi yang terbaik adalah memiliki cadangan cara memperbarui waktu jika tidak didukung di negara itu.

Dalam kasus saya, kami memiliki modul GPS jadi saya mendapatkan pembaruan waktu melalui data GNSS.

Selain itu, yang tidak relevan di sini, tetapi dianggap berguna untuk sinkronisasi waktu.

Kami menjalankan deamon chrony untuk memperbarui waktu sistem (perintah manual diaktifkan). Jadi, kedua pembaruan waktu diambil dan secara kronik memutuskan waktu yang tepat dan memperbarui waktu sistem.

SajithP
sumber