دریافت و تنظیم زمان دقیق توسط GSM Modem
نحوه استفاده پروتکل NTP
زمان دقیق موضوع مهمیست که بهمحض مطرحشدن میتواند ساختار طراحی را تاحدی دستخوش تغییر کند. بامطرحشدن بحث اینترنت اشیاء(IOT) نیز واژه زمان اهمیت بیشتری پیدا نمودهاست. زمان میتواند ساختار و قابلیتهای دستگاه را بسیار سودمندتر کند و میتوان گفت برای برخیاز گجتها امری حیاتیو اجتنابناپذیر است. راهکارهای داشتن زمان دقیق شامل موارداصلی زیر میتواند باشد:
- استفادهاز RTC و تنظیمآن بصورت دستی
- استفادهاز ماژولهای موقعیتیاب شبیه GPS
- استفادهاز GSM Modemها و شبکههای همراه
البته مبتنیبر نوع پروژه و نیازها میتواند ساختاربالا حتی مجتمع هم گردند و از ساختار موازی برای داشتن زماندقیق برای همیشه استفاده نمود.
در این پست قصد داریم نحوهی گرفتن زمان مبتنی بر GSM Modem را در ایران متناسب با خدمات ارائهدهنده توسط اپراتورهایهمراه در ایران تشریح کنیم. دو راهکار و پروتکل مهم در GSM Modem ها جهت گرفتن زمان وجوددارد:
- NITZ- Network Identity and Time Zone
- NTP- Network Time Protocol
پروتکل NITZ چیست؟
این پروتکل جهت گرفتن زماناز بستر اپراتورهای همراه استفاده میشود بهعبارتی بعداز کانکتشدن به شبکهی اپراتور همراه بدوناینکه شما لزومیبه وصلشدنبه سرور و یا ساختار دیگری باشد میتوانید زمان را از BTSهای اپراتورهمراه دریافت نمایید.
برای نمونه مثالزیر جهت استفادهاز پروتکل NITZ مخصوص GSM Modemهای کویکتل (Quectel) استفاده میشود.
AT+CTZU Automatic Time Zone Update AT+CTZU? +CTZU: 0 OK AT+CTZU=? +CTZU: (0,1) OK AT+CTZU=1 OK AT+CTZU? +CTZU: 1 AT+CTZR Time Zone Reporting AT+CTZR=2 OK AT+CTZR? +CTZR: 2 OK +CTZE: “+32”,0,“2013/08/23,06:51:13”
متاسفانه این سرویس در ساختار اپراتورهایهمراه ایران از جمله ایرانسل و همراهاول پشتیبانی نمیشود و طبق ایمیلی که به ایرانسل ارسالشد آنها نیز ضمن تایید این مسئله از ما خواستند از پروتکل NTP بهجای پروتکل NITZ استفاده کنیم.
پروتکل NTP چیست؟
این پروتکل توانایی آپدیت زمان از بستر GPRS بین یک سرور NTP و دیوایسهای متصلبه شبکه ازجمله GSM Modemها را دارد. NTP یکیاز قدیمیترین پروتکلهای اینترنت است که از سال ۱۹۸۵ تابه الان استفاده میگردد. جهت اطلاعات تکمیلی میتوانید از این صفحه بازدید داشته باشید.
یکیاز محسنات این پروتکل محاسبهی زمان حدودی بین سرور و GSM Modem شما و اعمال آن است که میتواند باعث دقیقترشدن این زمان گردد. تااینجا متوجه شدیم که برای سنکرونکردن زمان توسط GSM Modem میتوان از پروتکل NTP استفاده نمود و جهت استفاده از این پروتکل لازم است:
- اولاً GPRS جیاسام مودم شما فعال شود.
- ثانیاً ارتباط با یک NTP Server نیز بهعنوان مرجع زمان شما برقرار شود.
باتوجهبه NTP Serverهای زیادیکه بصورت رایگانبه شما پشتیبانی میدهند لزومیبه تجهیز این سرور توسط شما وجود ندارد و اگر احیاناً در یک شبکه APN داخلی قصد دارید از این پروتکل استفاده کنید میتوانید خود شما نیز NTP Server را راهاندازی نمایید. یکی از سرورهای NTP در ایران، سروروب سایت time.day.ir است که این خدمت رایگان، توسط آدرس ntp.day.ir قابلاستفاده است. در زیر نیز میتوانید نحوهی کانکتشدنبه سرور NTP توسط ماژول GSM Modem Sim800 Or Sim900 را مشاهده نمایید.
نکته: پورت پیشفرض NTP پورت ۱۲۳ است.
AT+SAPBR=3,1, "Contype","GPRS" OK AT+SAPBR=3,1, "APN","CMNET" OK // Configure bearer profile 1 AT+SAPBR=1,1 OK //To open a GPRS context. AT+CNTPCID=1 OK AT+CNTP="3.asia.pool.ntp.org",32 OK //Set NTP service url and local time zone //Note: Here's 32 actually represent //32/4=8, which means that eight East //region, Beijing. AT+CNTP OK +CNTP: 1 // Start Sync Network Time AT+CCLK? +CCLK: "13/09/11,20:23:25+32" OK //Query local time// //Here’s timezone may different with that// //in CNTP setting. //
همچنین در زیر، مثال تستشده با ماژول UC20 , UC15 شرکت کویکتل را هم قرار دادهایم:
[2017-07-01 13:29:52:572_S:] AT+QICSGP=1,1,"UNINET","mtnirancell","",0 [2017-07-01 13:29:52:577_R:] AT+QICSGP=1,1,"UNINET","mtnirancell","",0 [2017-07-01 13:29:52:661_R:] OK [2017-07-01 13:29:53:831_S:] AT+QIACT=1 [2017-07-01 13:29:53:838_R:] AT+QIACT=1 [2017-07-01 13:29:56:477_R:] OK [2017-07-01 13:29:57:129_S:] AT+QIACT? [2017-07-01 13:29:57:132_R:] AT+QIACT? [2017-07-01 13:29:57:134_R:] +QIACT: 1,1,1,"100.81.67.15" [2017-07-01 13:29:57:134_R:] OK [2017-07-01 13:30:01:416_S:] AT+CCLK? [2017-07-01 13:30:01:432_R:] AT+CCLK? [2017-07-01 13:30:01:450_R:] +CCLK: "80/01/06,00:00:32+00" [2017-07-01 13:30:01:450_R:] OK [2017-07-01 13:30:03:325_S:] AT+QNTP=1,"ntp.day.ir",123,1 [2017-07-01 13:30:03:334_R:] AT+QNTP=1,"ntp.day.ir",123,1 [2017-07-01 13:30:03:487_R:] OK [2017-07-01 13:30:04:293_R:] +QNTP: 0,"2017/07/01,09:00:08+00" [2017-07-01 13:30:06:584_S:] AT+CCLK? [2017-07-01 13:30:06:594_R:] AT+CCLK? [2017-07-01 13:30:06:615_R:] +CCLK: "17/07/01,09:00:10+00" [2017-07-01 13:30:06:615_R:] OK
همانطورکه درمثال میبنید بعداز اتمام سنکرونکردن زمان، زمان RTC ماژول GSM بصورت اتوماتیک آپدیت گردیدهاست و لازماست بدانید زمان گرفتهشده زمان UTC میباشد.
منبع: سیسوگ