GSM-Ortungsdienst von SIM800x-Modulen und seine Arbeit mit der Yandex.Locator-API



Google hat leider fĂŒr viele Nutzer von GSM-Modulen vor 2-3 Monaten eine API blockiert und auf kostenpflichtige Basis ĂŒbertragen, um den Standort anhand der Koordinaten der vom Modul sichtbaren Mobilfunkmasten zu bestimmen. Aus diesem Grund hat die FunktionalitĂ€t des AT + CIPGSMLOC-Teams die Arbeit an den Modulen der SIM800-Serie von SIMCom Wireless Solutions eingestellt . In diesem Artikel werde ich Ihnen erklĂ€ren, wie Sie das Problem mithilfe eines Ă€hnlichen Dienstes von Yandex - Yandex.Locator lösen können .

Wir werden weglassen, wie Yandex die Koordinaten von Mobilfunkmasten empfĂ€ngt. Hauptsache, wir können diesen kostenlosen Dienst nutzen und die folgenden Daten abrufen: Breite, LĂ€nge, Höhe sowie den ungefĂ€hren Fehler fĂŒr jeden Parameter. Das Hauptziel des Artikels ist es, ein kleines Tutorial zum schnellen Übergang von Yandex zur API anstelle des nicht mehr verfĂŒgbaren Dienstes von Google zu geben.

Im Folgenden erhalten Sie als Beispiel nur den Breiten- und LĂ€ngengrad des Standorts des Moduls.

Also lasst uns anfangen


Zuerst mĂŒssen Sie die Benutzervereinbarung lesen, die sich unter folgender Adresse befindet: yandex.ru/legal/locator_api . Besondere Aufmerksamkeit sollte Abschnitt 3.6 gewidmet werden. dieser Benutzervereinbarung, die besagt, dass Yandex sich das Recht vorbehĂ€lt, die Yandex.Locator-API jederzeit ohne vorherige AnkĂŒndigung zu Ă€ndern / korrigieren oder zu aktualisieren .

Gehen Sie zu yandex.ru/dev/locator/keys/get und fĂŒgen Sie Ihr zuvor erstelltes Yandex-Konto zur Entwicklungsgruppe hinzu. Mit diesen Aktionen erhalten Sie einen SchlĂŒssel fĂŒr den Zugriff auf diesen Dienst.


Notieren Sie den empfangenen SchlĂŒssel oder speichern Sie ihn auf andere Weise.

Nachdem Sie diese Schritte ausgefĂŒhrt haben, erhalten Sie Zugriff auf die Seite yandex.ru/dev/locator/doc/dg/api/geolocation-api-docpage, auf der grundlegende Informationen zum Mechanismus des Yandex.Locator-Dienstes bereitgestellt werden.

Um eine XML-Anforderung im cURL-Format fĂŒr Yandex.Locator-Dienste zu generieren, mĂŒssen Sie Informationen zu den "sichtbaren" ModulzellentĂŒrmen abrufen:

  • LĂ€ndercode - LĂ€ndercode
  • operatorid - Mobilfunknetzcode
  • cellid - Zell-ID
  • lac - Standortcode

Diese Informationen erhalten Sie vom Modul, indem Sie den Befehl 'AT + CNETSCAN' senden.

Vom Modul empfangene Informationen
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>

Es ist wichtig zu beachten, dass Sie in Zukunft die Daten aus der Antwort des Moduls zu Cellid und Lac von hexadezimal nach dezimal konvertieren mĂŒssen.

Jetzt mĂŒssen wir XML-Daten generieren, um auf den Yandex-Server zugreifen zu können, der in Zukunft zu einem Element zusammengefasst wird.

Datentabelle
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
Cellid 16 10 ( — 2105)
</cellid><lac>
7838
Lac , 16 10 ( – 1E9E)
</lac></cell>
...
, cell -
</gsm_cells>
<ip><address_v4>
10.137.92.60
IP GPRS , ‘AT+SAPBR=2,1’ – .
</address_v4></ip></ya_lbs_request>


Auf diese Weise wird eine XML-Nachricht mit einer LĂ€nge von 1304 Zeichen des folgenden Formulars generiert:

Botschaft
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>


Diese Nachricht basiert auf den Daten auf den Mobilfunkmasten des Megafon-Betreibers und kann mit Daten wie ergĂ€nzt werden auf anderen TĂŒrmen, die fĂŒr das vom Befehl 'AT + CNETSCAN' empfangene Modul sichtbar sind, um die ZuverlĂ€ssigkeit der ausgegebenen Koordinaten zu erhöhen.

Arbeiten mit dem Modul und Erhalten der aktuellen Koordinaten


AT-Protokoll der Arbeit mit dem Modul
>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

Somit haben wir die aktuellen Koordinaten des Moduls erhalten: 60.0330963, 30.2484304.
Mit zunehmender Anzahl von Daten, die von Mobilfunkmasten gesendet werden, steigt die Genauigkeit der Standortbestimmung proportional an.

Weitere Informationen zum Inhalt der Antwort des Yandex.Locator-Dienstes und zur Auswahl der benötigten Daten finden Sie unter: yandex.ru/dev/locator/doc/dg/api/xml-reply-docpage im Abschnitt API-> XML-> Antwort

Fazit


Ich hoffe, dass dieses Material Entwicklern eine gute Hilfe sein wird. Bereit, Ihre Fragen in den Kommentaren zu beantworten.

All Articles