Telit Cinterion IoT Developer Community
POC Wifi Geolocation Finder using JAVA AT Interceptor
Tutorial, December 27, 2019 - 2:20am, 3014 views
A variety of Thales Java modules offer a new feature called Java AT command interceptor which allows Java MIDlets to register a customer specific AT command.
The following arcticle show cases a proof of concept design (POC) which utilizes the mentioned feature and implements a geolocation finder based on surrounding Wifi access points. The user can control the geolocaction finder easily via AT commands. From the outside it appears as the geoloaction finer was natively implemented on module side before already.
The below figure illustrates the system architecture of the POC:
There are several ways to calculate the geolocation. Probably the most common one is GPS which can reach its limits indoor. Localization based on sourrounding wifis can be an alternative. This POC uses an ESP8266 as wifi sniffer which communicates to a Thales module (ELS61-AUS) via AT commands.
The Thales module collects the required Wifi information (MAC address plus signal strength) and sends it over the cellular network to a service provider (this POC uses Combain) who calculates the geolocation and sends the respective coordinates (longitude and latitude) back to the module. A lot of service providers are available and the API is mostly the same. Hence, replacing providers does not require much effort.
The POC itself is via USB connected to a PC. The following AT commands help the user to configure and start the localization. The syntax does not deviate from what is known already from all natively supported commands:
AT+GEOLOC="API_KEY","APN" - Command to configure the feature
AT+GEOLOC? - Requests the configuration
AT+GEOLOC - Starts the Geolocation
The API key can be requested on the Combain's website.
All the source code plus the Eclipse project have been attached to this article. It can be freely downloaded and modified.
Once the MIDlet is compiled and is tranfered to the module, it can be executed and controlled as described above. The below terminal logs show the demo running:
The coordinates can be easily copied into a map application to visualize the location.