SIM800x модулдарынын GSM Локация кызматы жана анын Yandex.Locator API менен иштөөсү

SIM800x модулдарынын GSM Локация кызматы жана анын Yandex.Locator API менен иштөөсү

Google, тилекке каршы, GSM модулдарынын көптөгөн колдонуучулары үчүн 2-3 ай мурун модулга көрүнгөн уюлдук мунаралардын координаттарынын негизинде жайгашкан жерди аныктоо үчүн API'ны блоктоп, акы төлөнүүчү негизде өткөрүп берген. Ушундан улам SIM800 сериясындагы модулдар өндүрүлгөн SIMCom зымсыз чечимдер, AT+CIPGSMLOC буйругунун иштеши иштебей калды. Бул макалада мен сизге Яндекс тарабынан сунушталган окшош кызматты колдонуу менен бул көйгөйдү кантип чечсе болорун айтып берем - Yandex.Locator.

Келгиле, Яндекс уюлдук мунаралардын координаттарын кантип кабыл аларын өткөрүп жиберели, эң негизгиси, биз бул бекер кызматты колдонуп, төмөнкү маалыматтарды ала алабыз: Кеңдик, Узундук, Бийиктик, ошондой эле ар бир параметр боюнча болжолдуу ката. Макаланын негизги максаты - Google'дун жеткиликтүү болбой калган кызматынын ордуна, Yandex API'ге тез өтүү боюнча кыскача окуу куралы.

Төмөндө, мисал катары, модулдун жайгашкан жеринин кеңдигин жана узундугун гана көрсөтөбүз.

Ошентип, баштайлы

Адегенде төмөнкү даректе жайгашкан колдонуучу келишимин окуп чыгышыңыз керек: yandex.ru/legal/locator_api. 3.6-пунктуна өзгөчө көңүл буруу керек. деп айтылат бул колдонуучу келишими Яндекс алдын ала эскертүүсүз каалаган убакта Yandex.Locator APIди өзгөртүү/түзөтүү же жаңыртуу укугун өзүнө калтырат..

Дарекке барыңыз yandex.ru/dev/locator/keys/get жана мурда түзүлгөн Яндекс каттоо эсебиңизди өнүктүрүү тобуна кошуңуз. Бул кадамдар сизге бул кызматка кирүү үчүн ачкыч алууга мүмкүндүк берет.

SIM800x модулдарынын GSM Локация кызматы жана анын Yandex.Locator API менен иштөөсү
Сиз алган ачкычты жазыңыз же башка жол менен сактаңыз.

Бул кадамдарды аткаргандан кийин, сиз баракка кире аласыз yandex.ru/dev/locator/doc/dg/api/geolocation-api-docpage мында Яндекс.Локатор кызматынын иштөө механизми жөнүндө негизги маалымат берилет.

Яндекс.Локатор кызматтарына cURL форматында XML суроо-талапты түзүү үчүн сиз модулдун жардамы менен "көрүнүүчү" уюлдук мунаралар жөнүндө маалыматты алышыңыз керек:

  • өлкөнүн коду – өлкөнүн коду
  • operatorid – мобилдик тармактын коду
  • 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 маалыматтарын түзүшүбүз керек, алар кийинчерээк бир элементке бириктирилет.

маалымат таблицасы

маалымат
түшүндүрмө

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

...
Бул Яндекстен алынган 88 орундуу ачкычты камтышы керек

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

Өлкө коду (MCC)

</countrycode><operatorid>
2

Оператор коду (MNC)

</operatorid><cellid>
8453

Тизмеден биринчи мунаранын клеткасы модулдан алынган жана базасы 16 болгон сандан 10 базасы бар санга айландырылган (модульден алынган маани 2105)

</cellid><lac>
7838

Биринчи мунаранын лак, ошондой эле базалык 16 сандан 10 базалык санга айландырылган (модулдан алынган маани 1E9E)

</lac></cell>
...

Клетка теги менен бириктирилген топ белгилүү бир жердин ишенимдүүлүгүн жогорулатуу үчүн зарыл болушунча көп жолу кайталанышы мүмкүн

</gsm_cells>
<ip><address_v4>
10.137.92.60

GPRS контексти ачылгандан кийин тармак тарабынан модулга ыйгарылган IP дарегин модулга 'AT+SAPBR=2,1' буйругун жөнөтүү аркылуу алууга болот - төмөндө караңыз

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

Бул төмөнкүдөй узундугу 1304 белгиден турган XML билдирүүсүн жаратат:

билдирүү

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.ru/dev/locator/doc/dg/api/xml-reply-docpage, API-> XML-> Жооп бөлүмүндө

жыйынтыктоо

Бул материал иштеп чыгуучуларга жакшы жардам берет деп ишенем. Мен комментарийлерде суроолоруңузга жооп берүүгө даярмын.

Source: www.habr.com

Комментарий кошуу