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
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:
Manzilga boring
Olingan kalitni yozib oling yoki boshqa yo'l bilan saqlang.
Ushbu amallarni bajarganingizdan so'ng siz sahifaga kirish huquqiga ega bo'lasiz
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:
xulosa
Umid qilamanki, ushbu material ishlab chiquvchilarga yaxshi yordam beradi. Izohlarda savollaringizga javob berishga tayyorman.
Manba: www.habr.com