خدمة تحديد موقع GSM لوحدات SIM800x وتشغيلها باستخدام Yandex.Locator API

خدمة تحديد موقع GSM لوحدات SIM800x وتشغيلها باستخدام Yandex.Locator API

Google ، للأسف بالنسبة للعديد من مستخدمي وحدات GSM ، قامت منذ 2-3 أشهر بحظر ونقل واجهة برمجة التطبيقات (API) إلى أساس مدفوع لتحديد الموقع عن طريق إحداثيات الأبراج الخلوية المرئية بواسطة الوحدة. وبسبب هذا ، تم تصنيع وحدات من سلسلة SIM800 سيمكوم للحلول اللاسلكية، توقفت وظيفة الأمر AT + CIPGSMLOC عن العمل. في هذه المقالة سأخبرك كيف يمكنك حل هذه المشكلة باستخدام خدمة مماثلة تقدمها Yandex - موقع Yandex.Locator.

دعنا نتخطى كيفية حصول Yandex على إحداثيات الأبراج الخلوية ، الشيء الرئيسي هو أنه يمكننا استخدام هذه الخدمة المجانية والحصول على البيانات التالية: خط الطول وخط الطول والارتفاع بالإضافة إلى خطأ تقريبي لكل معلمة. الغرض الرئيسي من المقالة هو تقديم برنامج تعليمي صغير حول كيفية التبديل بسرعة إلى واجهة برمجة التطبيقات من Yandex ، بدلاً من الخدمة التي لم تعد متوفرة من Google.

أدناه ، كمثال ، سيتم الحصول على خط الطول وخط العرض لموقع الوحدة فقط.

اذا هيا بنا نبدأ

تحتاج أولاً إلى قراءة اتفاقية المستخدم الموجودة في: yandex.ru/legal/locator_api. ينبغي إيلاء اهتمام خاص للفقرة 3.6. من اتفاقية المستخدم هذه ، والتي تنص على ذلك تحتفظ Yandex بالحق في تغيير / تصحيح أو تحديث واجهة برمجة تطبيقات Yandex.Locator في أي وقت دون إشعار مسبق.

اذهب إلى العنوان yandex.ru/dev/locator/keys/get وأضف حساب Yandex الذي تم إنشاؤه مسبقًا إلى مجموعة المطورين. ستتيح لك هذه الخطوات الحصول على مفتاح للوصول إلى هذه الخدمة.

خدمة تحديد موقع GSM لوحدات SIM800x وتشغيلها باستخدام Yandex.Locator API
اكتب أو احفظ المفتاح المستلم.

بعد الانتهاء من هذه الخطوات ، سيتم الوصول إلى الصفحة. yandex.ru/dev/locator/doc/dg/api/geolocation-api-docpage الذي يوفر معلومات أساسية حول آلية تشغيل خدمة Yandex.Locator.

لإنشاء طلب XML بتنسيق cURL لخدمات Yandex.Locator ، ستحتاج إلى الحصول على معلومات حول أبراج الخلايا "المرئية" بواسطة الوحدة:

  • كود الدولة - رمز الدولة
  • معرف المشغل - رمز شبكة المحمول
  • cellid - معرف الخلية
  • lac - رمز الموقع

يمكن الحصول على هذه المعلومات من الوحدة النمطية عن طريق إرسال الأمر "AT + CNETSCAN".

المعلومات الواردة من الوحدة

Operator:"MegaFon",MCC:250,MNC:02,Rxlev:59,Cellid:2105,Arfcn:96,Lac:1E9E,Bsic:31<CR><LF>
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:54,Cellid:2107,Arfcn:18,Lac:1E9E,Bsic:3A<CR><LF>
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:45,Cellid:10A9,Arfcn:97,Lac:1E9E,Bsic:11<CR><LF>
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:41,Cellid:2108,Arfcn:814,Lac:1E9E,Bsic:1F<CR><LF>
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:43,Cellid:5100,Arfcn:13,Lac:1E9E,Bsic:2B<CR><LF>
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:39,Cellid:5102,Arfcn:839,Lac:1E9E,Bsic:1A<CR><LF>
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:38,Cellid:2106,Arfcn:104,Lac:1E9E,Bsic:0A<CR><LF>
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:37,Cellid:0FE7,Arfcn:12,Lac:1E9E,Bsic:24<CR><LF>
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:44,Cellid:14C8,Arfcn:91,Lac:1E9E,Bsic:24<CR><LF>
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:37,Cellid:04B3,Arfcn:105,Lac:1E9E,Bsic:3A<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:47,Cellid:29A0,Arfcn:70,Lac:39BA,Bsic:09<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:43,Cellid:0FDD,Arfcn:590,Lac:39BA,Bsic:09<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:44,Cellid:29A1,Arfcn:84,Lac:39BA,Bsic:10<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:40,Cellid:8F95,Arfcn:81,Lac:39BA,Bsic:03<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:43,Cellid:0FDF,Arfcn:855,Lac:39BA,Bsic:24<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:37,Cellid:299C,Arfcn:851,Lac:39BA,Bsic:17<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:37,Cellid:0FDE,Arfcn:852,Lac:39BA,Bsic:1B<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:35,Cellid:299F,Arfcn:72,Lac:39BA,Bsic:10<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:33,Cellid:28A5,Arfcn:66,Lac:396D,Bsic:25<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:33,Cellid:2A8F,Arfcn:71,Lac:39BA,Bsic:23<CR><LF>
Operator:"MOTIV",MCC:250,MNC:20,Rxlev:46,Cellid:39D2,Arfcn:865,Lac:4D0D,Bsic:14<CR><LF>
Operator:"MOTIV",MCC:250,MNC:20,Rxlev:36,Cellid:09EE,Arfcn:866,Lac:4D0D,Bsic:25<CR><LF>
Operator:"MOTIV",MCC:250,MNC:20,Rxlev:28,Cellid:09ED,Arfcn:869,Lac:4D0D,Bsic:22<CR><LF>
Operator:"MOTIV",MCC:250,MNC:20,Rxlev:28,Cellid:09EF,Arfcn:861,Lac:4D0D,Bsic:17<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:66,Cellid:58FE,Arfcn:1021,Lac:00EC,Bsic:0A<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:50,Cellid:58FD,Arfcn:1016,Lac:00EC,Bsic:08<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:49,Cellid:58FF,Arfcn:1023,Lac:00EC,Bsic:09<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:46,Cellid:F93B,Arfcn:59,Lac:00EC,Bsic:20<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:50,Cellid:381B,Arfcn:1020,Lac:00EC,Bsic:0A<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:37,Cellid:3819,Arfcn:42,Lac:00EC,Bsic:08<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:34,Cellid:4C0F,Arfcn:43,Lac:00EC,Bsic:0A<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:33,Cellid:0817,Arfcn:26,Lac:00EC,Bsic:27<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:34,Cellid:3A5D,Arfcn:1017,Lac:00E9,Bsic:34<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:33,Cellid:3D05,Arfcn:1018,Lac:00EC,Bsic:1F<CR><LF>

من المهم ملاحظة أنه سيكون من الضروري في المستقبل تحويل البيانات من إجابة الوحدة النمطية حول Cellid و Lac من تنسيق سداسي عشري إلى تنسيق عشري.

نحتاج الآن إلى إنشاء بيانات XML للوصول إلى خادم Yandex ، والذي سيتم دمجه لاحقًا في عنصر واحد.

جدول البيانات

معطيات
تعليق

xml=<ya_lbs_request><common><version>1.0</version><api_key>

...
يجب أن يحتوي هذا على مفتاح مكون من 88 رقمًا تم استلامه من Yandex

</api_key></common>
<gsm_cells>
<cell><countrycode>
250

رمز البلد (MCC)

</countrycode><operatorid>
2

كود المشغل (MNC)

</operatorid><cellid>
8453

تم استلام Cellid من البرج الأول في القائمة من الوحدة وتحويله من رقم مع الأساس 16 إلى رقم بالقاعدة 10 (القيمة المستلمة من الوحدة هي 2105)

</cellid><lac>
7838

بحيرة البرج الأول ، تم تحويلها أيضًا من رقم ذي أساس 16 إلى رقم بالقاعدة 10 (القيمة المستلمة من الوحدة هي 1E9E)

</lac></cell>
...

يمكن تكرار المجموعة ، التي توحدها علامة الخلية ، عدة مرات حسب الضرورة لزيادة موثوقية موقع معين

</gsm_cells>
<ip><address_v4>
10.137.92.60

يمكن الحصول على عنوان IP الذي تم تعيينه للوحدة بواسطة الشبكة بعد فتح سياق GPRS عن طريق إرسال الأمر "AT + SAPBR = 2,1،XNUMX" إلى الوحدة النمطية - انظر أدناه

</address_v4></ip></ya_lbs_request>

وبالتالي ، سيتم إنشاء رسالة XML بطول 1304 حرفًا بالشكل التالي:

رسالة

xml=<ya_lbs_request><common><version>1.0</version><api_key>{здесь необходимо указать свой ключ}</api_key></common><gsm_cells><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>8453</cellid><lac>7838</lac></cell><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>8455</cellid><lac>7838</lac></cell><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>4265</cellid><lac>7838</lac></cell><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>8456</cellid><lac>7838</lac></cell><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>20736</cellid><lac>7838</lac></cell><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>20738</cellid><lac>7838</lac></cell><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>8454</cellid><lac>7838</lac></cell><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>4071</cellid><lac>7838</lac></cell><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>5320</cellid><lac>7838</lac></cell><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>1203</cellid><lac>7838</lac></cell></gsm_cells><ip><address_v4>10.137.92.60</address_v4></ip></ya_lbs_request>

تم إنشاء هذه الرسالة في قاعدة بيانات الأبراج الخلوية لمشغل Megafon ، ويمكن استكمالها بالبيانات ، بما في ذلك. على الأبراج الأخرى المرئية للوحدة التي تم استلامها بواسطة الأمر "AT + CNETSCAN" لزيادة موثوقية إحداثيات الإخراج.

العمل مع الوحدة والحصول على الإحداثيات الحالية

AT- سجل العمل مع الوحدة النمطية

>AT+SAPBR=3,1,”Contype”,”GPRS” // конфигурирование профиля доступа в Интернет
<OK
>AT+SAPBR=3,1,”APN”,”internet” // конфигурирование APN 
<OK
>AT+SAPBR=1,1 // запрос на открытие GPRS контекста
<OK // контекст открыт
>AT+SAPBR=2,1 // запрос текущего IP адреса присвоенного оператором сотовой связи
<+SAPBR: 1,1,”10.137.92.60” // данный IP адрес потребуется вставить в XML-сообщение
<
<OK
>AT+HTTPINIT
<OK
>AT+HTTPPARA=”CID”,1
<OK
>AT+HTTPPARA=”URL”,”http://api.lbs.yandex.net/geolocation”
<OK
>AT+HTTPDATA=1304,10000 // первое число – длина сформированного XML-сообщения
<DOWNLOAD // приглашение к вводу XML-сообщения
< // вводим сформированное нами XML-сообщение
<OK
>AT+HTTPACTION=1
<OK
<
<+HTTPACTION: 1,200,303 // 200 – сообщение отправлено, 303 – получено 303 байт данных
>AT+HTTPREAD=81,10
<+HTTPREAD: 10
<60.0330963 // широта на которой расположен модуль
<OK
>AT+HTTPREAD=116,10
<+HTTPREAD: 10
<30.2484303 // долгота на которой расположен модуль
>AT+HTTPTERM
<OK

وهكذا حصلنا على الإحداثيات الحالية للوحدة: 60.0330963 ، 30.2484304.
مع زيادة عدد البيانات التي ترسلها الأبراج الخلوية ، ستزداد دقة تحديد المواقع بشكل متناسب.

يمكن العثور على مزيد من المعلومات التفصيلية حول محتوى الاستجابة من خدمة Yandex.Locator واختيار البيانات التي تحتاجها على الرابط: yandex.ru/dev/locator/doc/dg/api/xml-reply-docpage، ضمن API-> XML-> Response

اختتام

آمل أن تكون هذه المادة مفيدة للمطورين. جاهز للإجابة على أسئلتك في التعليقات.

المصدر: www.habr.com

إضافة تعليق