คำสั่ง AT แบบใดที่ควรส่งให้โมเด็มเพื่อให้ได้เวลา


11

ฉันใช้SIM800E ฉันต้องการทราบว่าคำสั่ง AT ใดที่ควรส่งไปยังโมเด็มเพื่อให้ได้เวลา โมเด็มนี้มี RTC แต่ฉันต้องตั้งค่ามันโดยอัตโนมัติผ่านเสาสัญญาณโทรศัพท์ หอคอยสามารถส่งเวลาไปยังโมเด็มเมื่อร้องขอโดยใช้คำสั่ง AT ฉันเห็นในโทรศัพท์หลายเครื่องว่าเวลามีการอัพเดทในระหว่างการส่งออก

คู่มือไม่ได้มีข้อมูลนี้


1
ตามเอกสารการออกแบบฮาร์ดแวร์นั้นคุณจำเป็นต้องได้รับ "SIM800E AT Command Manual" - เอกสารแยกต่างหาก
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)

เท่าที่ฉันรู้, severs ทั้งหมดมีหน้าที่ที่จะต้องกลับเวลา 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 (บันทึกการกำหนดค่า)

ปิดโมเด็มและเปิดโมเด็ม (รีบูตเพื่อรับเวลาท้องถิ่นจากเครือข่าย)

ครั้งต่อไปเมื่อโมเด็มบูทขึ้นคุณควรจะได้เวลาเครือข่ายและสามารถอ่านได้โดยการส่ง

ที่ + CCLK?

สิ่งนี้ใช้ได้สำหรับฉันโดยใช้โมเด็ม SIM800 GSM อ่านคำอธิบายคำสั่ง AT สำหรับข้อมูลเพิ่มเติม


@ s0nic2k คำตอบยืนยันนี่จะไม่ทำงานอย่างที่คุณคาดหวัง
Ali80

3

ฉาบ:

AT+COPS=2

OK

AT+CTZU=1

OK

AT+COPS=0

OK

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

ทำงานได้อย่างสมบูรณ์แบบหลังจากนั้นคุณต้องแยกวิเคราะห์ผลลัพธ์และวางใน clk เพราะสิ่งนี้จะไม่เกิดขึ้นโดยอัตโนมัติ (อย่างน้อยใน Cinterion ของฉัน)


6
มันจะช่วยถ้าคุณสามารถอธิบายเป็นภาษาอังกฤษสิ่งนี้ทำอะไรและทำไมมันจึงเป็นคำตอบสำหรับคำถาม
David

@ David คอยติดตามเรากำลังทำงานกับการแปลในการแชท
Nick Alexeev

2
ตัวแปรสำหรับ SIM800H ที่เหมาะกับฉัน: ใช้ AT + CLTS = 1 แทน AT + CTZU = 1 (เนื่องจากไม่รองรับ CTZU) จากนั้นคุณจะได้รับข้อความที่ไม่พึงประสงค์เช่น * PSUTTZ: 2017,1,30,20,17,28, "- 20", 0 เมื่อคุณลงทะเบียนใหม่
Matt Thomas

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:

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 เติมเงินซิมการ์ดของคุณ สิ่งนี้อาจเกิดขึ้นหากซิมการ์ดของคุณมีเครดิต แต่ไม่ได้ถูกเรียกเก็บเงินเป็นเวลานาน คุณสามารถทดสอบกับซิมการ์ดอื่นได้เช่นกัน
MDR

ใช่ฉันสามารถยืนยันวิธีนี้ใช้งานได้ซิมการ์ดของฉันมีเครดิต แต่มีการเข้าถึงแผนข้อมูล จำกัด
Ali80

1

NITZ ตามที่ RedGrittyBrick ชี้เป็นคำตอบ อย่างไรก็ตามนี่เป็นข้อความที่ส่งโดยเครือข่ายเท่านั้นโดยปกติจะเป็นการเข้าร่วมเครือข่าย ผู้ให้บริการบางรายส่งไปบางคนทำไม่ได้ ไม่มีวิธีมาตรฐานในการขอ


1

นี่คือลำดับคำสั่ง AT เพื่อรับเวลาเครือข่ายเซลลูล่าร์มันทำงานในโมดูล UBLOX LEON G-200 GSM ของฉัน

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? ตรวจสอบว่าคุณได้รับคำตอบนี้ + clts: 1
และมากกว่าส่งคำสั่งนี้ที่ + 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 เพื่ออัปเดตเวลาของระบบ (เปิดใช้งานคำสั่งด้วยตนเอง) ดังนั้นการอัปเดตทั้งเวลาจะถูกนำมาใช้และตัดสินใจเลือกเวลาที่ถูกต้องตามลำดับเวลาและอัปเดตเวลาของระบบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.