บริการระบุตำแหน่ง GSM ของโมดูล SIM800x และการทำงานร่วมกับ Yandex.Locator API

บริการระบุตำแหน่ง GSM ของโมดูล SIM800x และการทำงานร่วมกับ Yandex.Locator API

โชคไม่ดีที่ Google สำหรับผู้ใช้โมดูล GSM จำนวนมากเมื่อ 2-3 เดือนที่แล้วได้บล็อกและโอน API ไปยังแบบชำระเงินเพื่อระบุตำแหน่งตามพิกัดของเสาสัญญาณที่โมดูลมองเห็นได้ ด้วยเหตุนี้จึงผลิตโมดูลซีรีส์ SIM800 โซลูชั่นไร้สาย SIMComการทำงานของคำสั่ง AT+CIPGSMLOC หยุดทำงาน ในบทความนี้ฉันจะบอกคุณว่าคุณสามารถแก้ไขปัญหานี้ได้อย่างไรโดยใช้บริการที่คล้ายกันของ Yandex - Yandex.Locator.

ข้ามวิธีที่ Yandex รับพิกัดของเสาสัญญาณโทรศัพท์ สิ่งสำคัญคือเราสามารถใช้บริการฟรีนี้และรับข้อมูลต่อไปนี้: ละติจูด ลองจิจูด ระดับความสูง รวมถึงข้อผิดพลาดโดยประมาณสำหรับแต่ละพารามิเตอร์ วัตถุประสงค์หลักของบทความนี้คือเพื่อให้บทช่วยสอนสั้นๆ เกี่ยวกับการสลับไปใช้ Yandex API อย่างรวดเร็ว แทนที่จะเป็นบริการจาก Google ที่ไม่มีให้บริการอีกต่อไป

ด้านล่างนี้เป็นตัวอย่าง เราจะแสดงเฉพาะละติจูดและลองจิจูดของตำแหน่งโมดูล

มาเริ่มกันเลย

ขั้นแรกคุณต้องอ่านข้อตกลงผู้ใช้ซึ่งอยู่ที่: yandex.ru/legal/locator_api. ควรให้ความสนใจเป็นพิเศษกับข้อ 3.6 ข้อตกลงผู้ใช้นี้ซึ่งระบุไว้ว่า Yandex ขอสงวนสิทธิ์ในการเปลี่ยนแปลง/แก้ไขหรืออัปเดต Yandex.Locator API ได้ตลอดเวลาโดยไม่ต้องแจ้งให้ทราบล่วงหน้า.

ไปที่ที่อยู่ 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' ไปยังโมดูล - ดูด้านล่าง

</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-log ของการทำงานกับโมดูล

>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->การตอบกลับ

ข้อสรุป

ฉันหวังว่าเนื้อหานี้จะช่วยนักพัฒนาได้ดี ฉันพร้อมที่จะตอบคำถามของคุณในความคิดเห็น

ที่มา: will.com

เพิ่มความคิดเห็น