SIM800x modullarining GSM joylashuv xizmati va uning Yandex.Locator API bilan ishlashi

SIM800x modullarining GSM joylashuv xizmati va uning Yandex.Locator API bilan ishlashi

Google, afsuski, GSM modullarining ko'p foydalanuvchilari uchun 2-3 oy oldin modulga ko'rinadigan uyali aloqa minoralari koordinatalari asosida joylashuvni aniqlash uchun API-ni bloklab qo'ydi va pullik asosga o'tkazdi. Shu sababli SIM800 seriyali modullar ishlab chiqariladi SIMCom simsiz yechimlari, AT+CIPGSMLOC buyrug'ining funksionalligi ishlashni to'xtatdi. Ushbu maqolada men sizga Yandex tomonidan taqdim etilgan shunga o'xshash xizmatdan foydalanib, bu muammoni qanday hal qilishingiz mumkinligini aytaman - Yandex.Locator.

Keling, Yandex uyali minoralarning koordinatalarini qanday qabul qilishini o'tkazib yuboraylik, asosiysi biz ushbu bepul xizmatdan foydalanishimiz va quyidagi ma'lumotlarni olishimiz mumkin: kenglik, uzunlik, balandlik, shuningdek, har bir parametr uchun taxminiy xato. Maqolaning asosiy maqsadi Google'dan mavjud bo'lmagan xizmat o'rniga Yandex API-ga tezda o'tish bo'yicha qisqacha qo'llanma berishdir.

Quyida, misol sifatida, biz faqat modul joylashgan joyning kenglik va uzunligini ko'rsatamiz.

Shunday qilib, keling, boshlaylik

Avval siz quyidagi manzilda joylashgan foydalanuvchi shartnomasini o'qib chiqishingiz kerak: yandex.ru/legal/locator_api. 3.6-bandga alohida e'tibor berilishi kerak. ushbu foydalanuvchi shartnomasi, unda aytilgan Yandex istalgan vaqtda, oldindan ogohlantirmasdan, Yandex.Locator API-ni o'zgartirish/tuzatish yoki yangilash huquqini o'zida saqlab qoladi..

Manzilga boring yandex.ru/dev/locator/keys/get va ilgari yaratilgan Yandex hisob qaydnomangizni ishlab chiqish guruhiga qo'shing. Ushbu qadamlar sizga ushbu xizmatga kirish uchun kalitni olish imkonini beradi.

SIM800x modullarining GSM joylashuv xizmati va uning Yandex.Locator API bilan ishlashi
Olingan kalitni yozib oling yoki boshqa yo'l bilan saqlang.

Ushbu amallarni bajarganingizdan so'ng siz sahifaga kirish huquqiga ega bo'lasiz yandex.ru/dev/locator/doc/dg/api/geolocation-api-docpage bu erda Yandex.Locator xizmatining ishlash mexanizmi haqida asosiy ma'lumotlar taqdim etiladi.

Yandex.Locator xizmatlariga cURL formatida XML so'rovini yaratish uchun modul tomonidan "ko'rinadigan" uyali aloqa minoralari haqida ma'lumot olishingiz kerak bo'ladi:

  • mamlakat kodi - mamlakat kodi
  • operatorid - mobil tarmoq kodi
  • cellid - hujayra identifikatori
  • lac - joylashuv kodi

Ushbu ma'lumotni moduldan "AT+CNETSCAN" buyrug'ini yuborish orqali olish mumkin.

Moduldan olingan ma'lumotlar

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>

Shuni ta'kidlash kerakki, keyinchalik modulning Cellid va Lac javobidagi ma'lumotlarni o'n oltilikdan o'nlikka aylantirishingiz kerak bo'ladi.

Endi biz Yandex serveriga murojaat qilish uchun XML ma'lumotlarini yaratishimiz kerak, ular keyinchalik bitta elementga birlashtiriladi.

Ma'lumotlar jadvali

ma'lumotlar
izoh

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

...
Bu Yandex-dan olingan 88 raqamli kalitni o'z ichiga olishi kerak

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

Mamlakat kodi (MCC)

</countrycode><operatorid>
2

Operator kodi (MNC)

</operatorid><cellid>
8453

Ro'yxatdagi birinchi minoraning hujayrasi moduldan olingan va 16 asosli raqamdan 10 asosli raqamga aylantirilgan (moduldan olingan qiymat 2105).

</cellid><lac>
7838

Birinchi minoraning lak, shuningdek, 16 ta asosiy raqamdan 10 ta asosiy raqamga aylantirildi (moduldan olingan qiymat 1E9E)

</lac></cell>
...

Hujayra yorlig'i bilan birlashtirilgan guruh ma'lum bir joyning ishonchliligini oshirish uchun kerak bo'lganda ko'p marta takrorlanishi mumkin.

</gsm_cells>
<ip><address_v4>
10.137.92.60

GPRS konteksti ochilgandan so'ng tarmoq tomonidan modulga tayinlangan IP-manzilni modulga "AT+SAPBR=2,1" buyrug'ini yuborish orqali olish mumkin - pastga qarang.

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

Bu 1304 belgidan iborat XML xabarini yaratadi:

Xabar

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>

Ushbu xabar Megafon operatorining uyali aloqa minoralari haqidagi ma'lumotlar asosida yaratilgan bo'lib, uni ma'lumotlar bilan to'ldirish mumkin, jumladan: berilgan koordinatalarning ishonchliligini oshirish uchun "AT+CNETSCAN" buyrug'i yordamida qabul qilingan modulga ko'rinadigan boshqa minoralarda.

Modul bilan ishlash va joriy koordinatalarni olish

AT-modul bilan ishlash jurnali

>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

Shunday qilib, biz modulning joriy koordinatalarini oldik: 60.0330963, 30.2484304.
Uyali aloqa minoralari orqali yuboriladigan ma'lumotlar soni ortib borishi bilan joylashuvni aniqlashning aniqligi mutanosib ravishda oshadi.

Yandex.Locator xizmatidan javobning mazmuni va kerakli ma'lumotlarni tanlash haqida batafsil ma'lumotni havolada o'qishingiz mumkin: yandex.ru/dev/locator/doc/dg/api/xml-reply-docpage, API-> XML-> Javob bo'limida

xulosa

Umid qilamanki, ushbu material ishlab chiquvchilarga yaxshi yordam beradi. Izohlarda savollaringizga javob berishga tayyorman.

Manba: www.habr.com

a Izoh qo'shish