Efficient geolocation

By utilizing the device's location history and BSSID data, combined with database query and alternative location search methods, the problem of high cost and low efficiency of equipment geolocation in the prior art is solved, and more efficient and accurate equipment positioning is achieved.

CN120604137APending Publication Date: 2025-09-05ABSOLUTE SOFTWARE CORPORATION
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202480006421.7
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-01-10
Filing Date
2024-01-10
Publication Date
2025-09-05

AI Technical Summary

Technical Problem

In the prior art, device geolocation methods rely on a large number of API requests, resulting in high cost and inefficiency, and device location data is underutilized.

Method used

By using the device's location history and BSSID data, combining database queries and alternative location search methods, the device's geographical location is determined and the number of API requests is reduced.

Benefits of technology

It reduces the cost and time of equipment geolocation and improves the accuracy and efficiency of location analysis.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120604137A_ABST
    Figure CN120604137A_ABST
Patent Text Reader

Abstract

A plurality of access point identifiers associated with a common location are grouped into a group of three and stored in a document of a database. When the position of a device is needed, the detected access point is searched in the database. If a group of matched three access points are found in the database, corresponding positions can be obtained from the document where the three access points are found.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims priority to U.S. Provisional Application No. 63 / 479,349, filed January 10, 2024, the contents of which are incorporated herein by reference in their entirety. Technical Field

[0003] The present disclosure relates to geolocation of electronic devices. In particular, it relates to the use of BSSID (Basic Service Set Identifier) ​​data. Background Art

[0004] Geolocation services can use third-party application programming interfaces (APIs) to resolve a mobile device's location using a detected basic service set identifier (BSSID) or media access control (MAC) address. Fleets of remote devices may need to issue hundreds of millions, or even billions, of API requests annually. The number of API requests increases as the fleet grows and more location-sensitive features are added to the services that manage the devices.

[0005] Typically, the location of a device is rarely, if ever, stored in a database. These locations are only for the individual device itself.

[0006] Improved methods are needed to geolocate devices. Summary of the Invention

[0007] Embodiments of the present invention can use device location history extracted from a large set of documents to more efficiently use geolocation data. Queries can be formed based on the device's database location history to see if there are any locations that meet certain pre-determined criteria, including but not limited to whether a certain number of access points overlap with the current list of access points detected by the device, have the same public IP, etc. In this way, using the techniques described herein, a potential benefit of embodiments of the present invention is that they can reduce the cost of resolving locations.

[0008] In one aspect, a method is provided that includes receiving a geolocation payload from a first device having a receiver, the geolocation payload including a first plurality of basic service set identifiers (BSSIDs) detected by the first device; and determining a location of the first device by searching a database including a second plurality of BSSIDs and location data associated with the second plurality of BSSIDs using the first plurality of BSSIDs.

[0009] In one embodiment, if the search does not find location data in the database based on the first plurality of BSSIDs, the method further includes determining location using an alternative location lookup.

[0010] In one embodiment, the alternative location lookup is a geolocation API, a location determined using a global navigation satellite system (GNSS), or a location of the operating system.

[0011] In one embodiment, the method further includes assembling the first plurality of BSSIDs into a plurality of received BSSID combinations, each received BSSID combination including a first number of BSSIDs from the first plurality of BSSIDs; wherein the second plurality of BSSIDs is stored as a plurality of stored BSSID combinations, each stored BSSID combination including a first number of BSSIDs from the second plurality of BSSIDs, and determining the location using the received BSSID combinations to search for matches in the stored BSSID combinations.

[0012] In one embodiment, the first number is at least three.

[0013] In one embodiment, the determination of the location of the device uses the received BSSID combinations to search the database until at least one received BSSID combination is found.

[0014] In one embodiment, the geo-location payload includes a signal strength for each of the first plurality of BSSIDs, and the searching using the received BSSID combination is based on the signal strength.

[0015] In one embodiment, the determining the location of the device searches the second plurality of BSSIDs from a first time period.

[0016] In one embodiment, the geolocation payload further includes a received device Internet Protocol (IP) address, wherein the database includes stored device IP addresses associated with the location data, and wherein the location of the device is determined using the received IP address.

[0017] In one embodiment, the device location is determined by comparing the received IP address to determine if it is within a range of stored device IP addresses.

[0018] In one embodiment, the location data stored in the database includes previously stored location data of the first device, the second device, or a combination thereof.

[0019] In one embodiment, the location data stored in the database comprises previously stored location data of the first device.

[0020] In one embodiment, the location data stored in the database comprises previously stored location data of the second device.

[0021] In one embodiment, the method further comprises executing device rules based on the determined location of the device.

[0022] In one embodiment, the method further comprises updating the database using the determined location, the first plurality of BSSIDs, and a timestamp of the geo-location payload.

[0023] In one embodiment, the method further comprises validating the determined location against a previous location of the first device.

[0024] In one aspect, a system for determining a location of a first device is provided, comprising a first device including a receiver for detecting a first plurality of BSSIDs, a processor for assembling a geolocation payload including the detected BSSIDs, and a transmitter for sending the geolocation payload; a database including a second plurality of BSSIDs and locations associated therewith; a second device including a receiver and a computer-readable medium having instructions stored thereon, the instructions, when executed, causing the second device to receive a geolocation payload from a first device having a receiver, the geolocation payload including a first plurality of basic service set identifiers (BSSIDs) detected by the first device; and determining the location of the first device by searching a database including a second plurality of BSSIDs and location data associated with the second plurality of BSSIDs using the first plurality of BSSIDs. BRIEF DESCRIPTION OF THE DRAWINGS

[0025] The present disclosure provides the following drawings, in which:

[0026] Figure 1 An environment is shown in which the present disclosure may be deployed according to some embodiments of the present invention.

[0027] Figure 2 Another environment in which the present disclosure may be deployed in accordance with some embodiments of the invention is shown.

[0028] Figure 3

[0066] Another alternative environment in which the present disclosure may be deployed in accordance with some embodiments of the invention is shown.

[0029] Figure 4 is a flow chart of a method according to an embodiment of the present invention.

[0030] Figure 5 is a flow chart illustrating searching and updating a database according to an embodiment of the present invention.

[0031] Figure 6 is a flowchart of a method according to another embodiment of the present invention. Specific embodiments

[0032] The methods, processes, and systems described herein enable geolocation of a device based on the wireless access points it detects. A device's geographic location can be based on historical data for the device or multiple devices. Multiple wireless access points detected by a device can be grouped to reduce database size, query time, and improve accuracy.

[0033] Glossary

[0034] Access Point (AP) or Wireless Access Point (WAP): A device that creates a wireless local area network (WLAN), typically located in an office or large building.

[0035] Application Programming Interface (API): A way for computer programs to communicate with each other. For example, a first program can use an API to access a geolocation service available through a second program.

[0036] Basic Service Set Identifier (BSSID): The MAC address of an AP. A BSSID is commonly used to refer to a device that provides network connectivity. Because a MAC address can be used to identify any network device, not just an AP, this disclosure uses BSSID to refer to the MAC address of an AP unless the context dictates otherwise.

[0037] Geographic Location: Identifies the geographic location of the device.

[0038] Media Access Control (MAC) Address: A unique identifier assigned to the network interface controller of a device (such as an AP). MAC addresses are provided as six groups of two hexadecimal numbers separated by hyphens, colons, or no separators (for example, 00:0C:E6:02:37:F8).

[0039] WLAN: Wireless Local Area Network.

[0040] Exemplary embodiments

[0041] One embodiment involves searching the location history database for a document whose AP list overlaps with at least three items (i.e., the three APs currently detected by the device). If found, the location recorded in that document is reused without calling the geolocation API. However, despite the typically large size of the historical geolocation collection, there are methods to return results in the shortest possible response time.

[0042] Another embodiment involves storing the geographic location history in a new collection with an identifier (_id) that is a combination of the 3 BSSIDs. In order to ensure that the identifier is unique among the 3 BSSIDs, we must first sort the BSSIDs into a list.

[0043] Figure 1 An example of an environment 100 according to some embodiments is shown in which the geographic location of a client device can be determined. The example environment 100 may include one or more devices, such as a client device 110. The client device 110 includes a receiver (not shown) for collecting information for detecting the BSSID of an access point (AP) 104 in its vicinity. The receiver may be a wireless receiver, a WIFI (wireless network) antenna, etc. Figure 1 As shown, the client device 110 is a client device. The client device may include a desktop computer, a laptop computer, a tablet computer, a smartphone, a set-top box, a smart watch, an IoT device, etc. Although three APs are used for illustration, the client device 110 may detect fewer or more APs based on the number of APs in its vicinity and the strength of their signals.

[0044] Client device 110 includes network hardware (not shown), such as a transmitter, for communicating with server 130 over wide area network (WAN) 120 (e.g., the Internet). Although shown as being directly connected to WAN 120, client device 110 may connect to the WAN through other methods, such as through one of APs 104 detected by client device 110.

[0045] Server 130 may communicate with location database 140. Location database 140 includes historical location data of client device 110 and BSSIDs detected by client device 110 at corresponding historical locations. Location database 140 may be stored on server 130 or remotely.

[0046] When the location of the client device 110 is not found in the database 140 , the client device 110 may communicate with the geolocation server 150 using an API to obtain the location of the client device 110 .

[0047] Figure 2 Another example of an environment 200 in which the geographic location of a client device can be determined according to some embodiments is shown. The example environment 200 includes a client device 210. The client device 210 includes a receiver for collecting information for use in the BSSIDs of APs 204 in its vicinity. As described above, the client device 210 can detect fewer or more APs based on the number of APs in its vicinity and the strength of their signals.

[0048] Client device 210 can communicate with server 230 via a wide area network (WAN) 220 (e.g., the Internet). Although shown as being directly connected to WAN 220, client device 210 can connect to the WAN via other methods, such as through one of APs 204 detectable by client device 210.

[0049] Server 230 may communicate with location database 240. Location database 240 includes historical location data of client device 210 and BSSIDs detected by client device 210 at corresponding historical locations. Location database 240 may be stored on server 230 or remotely.

[0050] When the location of the client device 210 is not found in the database 240 , the client device 210 may communicate with the geolocation server 250 using an API to obtain the location of the client device 210 .

[0051] Client device 210 includes or is paired with a satellite navigation receiver capable of communicating with a global navigation satellite system (GNSS) 260 to determine its location. Typically, such client devices include smartphones, but other client devices paired with satellite navigation receivers may also be suitable. Exemplary GNSS implementations include the Global Positioning System (GPS), the Global Navigation Satellite System (GLONASS), BeiDou, and Galileo.

[0052] Figure 3 Another alternative example of an environment 300 in which the geographic location of a client device can be determined according to some embodiments is shown. The example environment 300 includes a plurality of client devices 310. Each client device 310 includes a receiver for collecting information for detecting the BSSID of an AP 304 in its vicinity.

[0053] Client device 310 can communicate with a server 330 via a wide area network (WAN) 320 (e.g., the Internet). Although shown as being directly connected to WAN 320, client device 310 can connect to the WAN via other methods, such as through one of APs 304 detectable by client device 310. As described above, client device 310 can detect fewer or more APs based on the number of APs in its vicinity and the strength of their signals.

[0054] Server 330 can communicate with location database 340. Location database 340 includes historical location data of all client devices 310 and BSSIDs detected by client devices 310 at corresponding historical locations. Location database 340 can be stored on server 330 or remotely.

[0055] When the location of the client device 310 is not found in the database 340 , each client device 310 may communicate with the geolocation server 350 using an API to obtain the location of the client device 310 .

[0056] Each client device 310 can connect asynchronously in the environment 300 such that a different client device 310 can be connected to each of the server 330 , the geo-location server 340 , etc. simultaneously.

[0057] Now refer to Figure 4 , according to some embodiments, exemplary operational steps for implementing some examples are shown. At operation 402, a geolocation payload is received from a first device (e.g., client device 110) having a receiver. The geolocation payload includes a first plurality of BSSIDs detected by the first device. In some embodiments, the payload is received at the first device. Performing the lookup locally on the first device may speed up the determination because it eliminates the transmission time of the geolocation payload. However, this may require a large amount of storage space on the first device (e.g., see the size of the example database in Table 1), may not be able to access the historical locations of other devices, may degrade performance if the first client does not have sufficient computing power, and may increase the payload size if the received BSSID combination is transmitted to a server to replicate the database or enhance an auxiliary database. In some embodiments, the reception is performed by a second device (e.g., server 130, 230, 330) that is remote from the first device.

[0058] At operation 406, the location of the first device is determined using the geolocation payload by searching a database containing a second plurality of BSSIDs and location data associated with the second plurality of BSSIDs. If one or more BSSIDs in the first plurality of BSSIDs match one or more BSSIDs in the second plurality of BSSIDs, the first device is determined to be located at a location associated with one or more matching BSSIDs in the second plurality of BSSIDs. As the number of matches increases, confidence in the location may increase. This may be useful, for example, when a single physical AP broadcasts multiple SSIDs (e.g., each virtual AP has a separate BSSID) or BSSIDs. Matching such BSSIDs may not improve the accuracy of the location, so increasing the number of matches may increase the likelihood of matching BSSIDs from different physical APs. Operational speed may be increased by reducing the number of searches performed (e.g., searching based on only a subset of the first plurality of BSSIDs). In some embodiments, at least 3, 4, 5, 6, 7, 8, 9, or 10 of the first plurality of BSSIDs have corresponding entries in the second plurality of BSSIDs. In some embodiments, 3, 4, 5, 6, 7, 8, 9, or 10 of the first plurality of BSSIDs have corresponding entries in the second plurality of BSSIDs. In some embodiments, 3 of the first plurality of BSSIDs have corresponding entries in the second plurality of BSSIDs.

[0059] In some embodiments, at operation 404, the BSSIDs are optionally assembled into received BSSID combinations, each received BSSID combination including a first number of BSSIDs from the first plurality of BSSIDs (see, e.g., Figure 1 ). The first number of BSSIDs can be 2, 3, 4, 5, 6, 7, 8, 9, 10 or more. Increasing the first number of BSSIDs may improve the accuracy and / or confidence of determining the location. However, if the first number of BSSIDs is too high, the time required to perform the search and / or the size of the data set may increase. In an embodiment where the BSSIDs are assembled into a plurality of received BSSID combinations, the second plurality of BSSIDs are stored as a plurality of stored BSSID combinations, each stored BSSID combination having the same number of BSSIDs as the received BSSID. The location determination at 406 uses the received BSSID combination to search for a match in the stored BSSID combinations.

[0060] In some embodiments, the first number is at least 3, and each received BSSID combination includes at least 3 BSSIDs. In a preferred embodiment, the first number is 3. Using three APs (e.g., three different physical APs) helps reduce location uncertainty. If the locations of three known APs are provided, the signal strength can be used as a proxy for distance to a specific location to determine the location.

[0061] The number of received BSSID combinations depends on the number of BSSIDs in the first plurality of BSSIDs in the geolocation payload and the first number. For example, if the first plurality of BSSIDs has 20 BSSIDs and the first number is 3, there are 1140 (20 out of 3) received BSSID combinations.

[0062] In some embodiments, the first plurality of BSSIDs includes all BSSIDs detected by the first device. In some embodiments, the first plurality of BSSIDs is limited based on a predetermined number, signal strength, or both. Depending on the number of APs in the vicinity of the first device, the first device may detect a very large number of BSSIDs. Therefore, it may be necessary to limit the number of BSSIDs included in the geolocation payload. For example, if the first number is 3 and the predetermined number of BSSIDs is 20, 1140 BSSID combinations are received; if the predetermined number of BSSIDs is 30, 4060 BSSID combinations are received; if the predetermined number of BSSIDs is 40, 9880 BSSID combinations are received.

[0063] In some embodiments, the predetermined number is selected to reduce the number of potential searches performed during the determination process. In some embodiments, the predetermined number is between 10 and 30. In some embodiments, the predetermined number is 20.

[0064] In some embodiments, the selection of BSSIDs for inclusion in the geolocation payload is based on the signal strength of the corresponding AP detected by the first device. For example, only the BSSIDs of the APs with the strongest signals are included in the geolocation payload. This may be limited to a predetermined number as described above. In some embodiments, only the BSSIDs of APs with a threshold signal strength are included.

[0065] In some embodiments, the database includes historical locations of the first device, and optionally timestamps of the historical locations. In some embodiments, the location is determined by, for example, first searching the database based on the most recent location of the first device during a first time period. If a location cannot be found within the first time period, the search is expanded to include locations within a second time period that is longer than the first time period.

[0066] In some embodiments, the database includes historical locations of additional devices (eg, additional client devices 310 ).

[0067] Now refer to Figure 5 At operation 404, one embodiment provides an updated database for a set of BSSIDs 512 detected at a given longitude and latitude. The BSSIDs are then sorted in numerical order to provide a sorted array 514. Sorted array 514 is arranged into multiple arrays for each combination of BSSIDs 516 that can be assembled from array 516 (shown as having three BSSIDs in each combination). Each combination in each array 516 is concatenated into a separate string 518. Each concatenated combination 518 is associated with a particular longitude and latitude and stored in a separate document 542 in a database 540 (e.g., database 140, 240, or 340). Later, when the server (e.g., server 130, 230, 330) receives a geolocation payload (also referred to as a WIFI payload) 502 from the same device or another device (e.g., at operation 402), it can create a received BSSID combination 504 from the geolocation payload 502 (e.g., in operation 404), similar to how the BSSID combination array 516 was created (e.g., a combination of three BSSIDs from the detected BSSIDs). If one of the received BSSID combinations 504 matches a combination document entry 542 in the database 540 (e.g., at operation 407), the corresponding longitude and latitude can be obtained from the document 542 without having to call the geolocation API.

[0068] Table 1 shows the results of an exemplary database, for example in the collection: LocationByWifiMacAddress

[0069] Number of files 490,510,900 size 45.1GB (gigabytes) Number of combinations 1140 (20 BSSIDs) Retrieval time 0.879 seconds

[0070] Table 1

[0071] This shows that for 20 BSSIDs detected, 1140 combinations of three BSSIDs can be selected from these 20. It shows that the typical query time is less than one second.

[0072] In other embodiments, groups of four or more BSSIDs (or APs) may be used instead of three. By increasing the number of APs, accuracy and / or confidence may increase, but database size and / or query time may decrease.

[0073] BSSIDs (e.g., three BSSIDs) can be combined in another manner for storage in the database. For example, in some embodiments, the BSSIDs are stored as a single array of BSSID combinations 506 rather than concatenated into a string. In such an embodiment, document 512 includes an array of BSSIDs and, optionally, the relative signal strength of the BSSIDs at a particular location.

[0074] Back to Figure 4 In some embodiments, at operation 410, a database is updated with a document including the determined location, the first plurality of BSSIDs, and a timestamp of the geolocation payload. In some embodiments, the first plurality is stored in a document as a received BSSID combination, the document including the determined location and the timestamp of the geolocation payload. In some embodiments, documents with unique BSSID combinations are saved to the database rather than duplicating the BSSID combinations and locations to reduce storage requirements. In some embodiments, documents containing matching BSSID combinations are updated with the timestamp of the document. In other embodiments, a particular received BSSID combination for which there is a matching stored BSSID combination in a pre-existing document is saved in a new document. In some embodiments, each received BSSID combination is combined into a string. In some embodiments, each received BSSID combination is stored as an array.

[0075] In some embodiments, at operation 407, if a location is found at operation 406, the determined location may be used as further described in the method. However, if the location cannot be determined from the database, an alternative location search may be performed at operation 408. Alternative location searches include determining the location of the first device using an API, such as a geolocation API (e.g., one provided by Google, Baidu, etc.), using a satellite navigation receiver to receive a location using GNSS, using an operating system location, or a combination thereof. For example, if the first device is equipped with such information, a second device that receives a geolocation payload may use GNSS or the operating system location to send a location request to the first device. The use of satellite navigation receivers is typically limited due to high power consumption, the time required to synchronize with GNSS, and the availability of satellite navigation receivers (e.g., not commonly found on laptops or desktop devices). Furthermore, OS locations may have limited reliability because they may be manually entered by the user. Furthermore, geolocation API calls may incur costs, which are magnified when managing a device fleet. Therefore, using the BSSID is preferred.

[0076] In some embodiments, the determined location is optionally verified based on a previous location of the first device (e.g., the last known location) during operation 409. In some embodiments, the previous location is stored in a database. If there is a seemingly unreasonable distance between the location of the first device determined based on the timestamp of the geographic location payload and the previous location determined based on its timestamp, an inaccurate location may have been determined. In this case, it is possible to choose to determine or verify the location in operation 408. In some embodiments, the determined location at operation 408 is compared with the determined location at 406. If the determined locations are close to each other, the location can be considered accurate. However, if the locations determined at 406 and 408 are not adjacent to each other, the location may be wrong. In this case, in some embodiments, an alternative location search can be performed, the database can be updated to delete the association of the location with a specific BSSID, the event can be logged for further investigation, or a combination thereof.

[0077] In some embodiments, the geolocation payload includes an Internet Protocol (IP) address. In some embodiments, a historical IP address is associated with each location stored in the database and the second plurality of BSSIDs. In certain embodiments, the IP address can be used to filter requests from previously unknown locations. For example, the IP address can be used for error verification by determining whether the IP address has been previously associated with any location. If the IP address in the geolocation payload does not match any IP address stored in the database, this may indicate that the first device has not yet reached that location, eliminating the need to search for a BSSID. In some embodiments, the IP address in the geolocation payload does not need to exactly match an IP address in the database, but rather within a certain IP range. For example, some internet service providers do not assign static IP addresses to specific devices, but rather dynamically assign one. In this case, a range of IP addresses may be assigned at the same location based on subnetting practices. In other embodiments, the IP address in the geolocation payload must be identical to the IP address from a previous location. In some embodiments, the IP address from the geolocation payload can be used to determine or increase confidence in the location of the first device based on the database.

[0078] In some embodiments, the determined location is optionally used to enforce geofencing rules at operation 412. In some embodiments, the determined location is used to geotag additional data received from the first device. In some embodiments, the determined location is used to provide location-based services, such as targeted advertising, navigation services, tracking, search results, to provide data for analysis and research, or a combination thereof.

[0079] Now refer to Figure 6Another embodiment of the method is provided. At 602, a geolocation payload is received. The geolocation payload includes a timestamp and optionally BSSID, GNSS data, operating system location data, and IP address.

[0080] The timestamp is used to perform error checking at 604. For example, if the timestamp is not available, a time earlier than the previous entry or earlier than the receiving device is used.

[0081] At 606, the geolocation payload is checked to verify whether it contains a BSSID. If it is determined that the geolocation payload contains a BSSID, then at 608, a database is searched for a first time period to determine whether a historical location (e.g., a recent location, such as the past 24 hours) with these BSSIDs is available. At 610, if a historical location is found in the first time period, then at 612, the location is verified to determine whether the determined location is within a predetermined radius of the device's last known location. If the device is within the predetermined radius, the database is updated with the new BSSID detected by the device. If the device is not within the predetermined radius, an alternate location lookup is initiated to verify whether the location in the database is still accurate.

[0082] If no historical location is found in the first time period at 610, the search is expanded to include historical locations found in a second time period. If a usable location is found in the second time period at 614, the location is verified at 612. If no usable location is found in the second time period, the location continues to an alternate location search at 616.

[0083] If a BSSID is not included in the geolocation payload at 606 , an alternate location lookup is performed at 616 .

[0084] After the location is verified at 612, the database is updated at 618 with the location and time of the new geolocation payload, and optionally the BSSID and IP address.

[0085] The description of an embodiment with multiple components or features does not imply that any particular component and / or feature is required. Rather, various optional components have been described to illustrate various possible embodiments of the invention.

[0086] It is apparent that the various methods and algorithms described in this disclosure can be implemented by appropriately programmed computers and / or computing devices. Typically, a processor will receive instructions from a memory or similar device and execute these instructions, thereby executing one or more processes defined by these instructions. In addition, programs that implement such methods and algorithms can be stored and transmitted in a variety of ways using various media (e.g., computer-readable media). Therefore, the embodiments are not limited to any specific combination of hardware and software.

[0087] Thus, the description of a process also describes at least one device for performing the process, and also describes at least one computer-readable medium and / or computer-readable memory for performing the process. The device for performing the process may include components and / or devices (e.g., a processor, input and output devices) suitable for performing the process. The computer-readable medium may store program elements and / or instructions suitable for performing the method.

Claims

1. A method comprising: receiving a geolocation payload from a first device having a receiver, the geolocation payload comprising a first plurality of basic service set identifiers (BSSIDs) detected by the first device; The location of the first device is determined by searching a database including a second plurality of BSSIDs and location data associated with the second plurality of BSSIDs using the first plurality of BSSIDs.

2. The method according to claim 1, characterized in that Also includes: If no location data is found in the database search based on the first plurality of BSSIDs, an alternative location lookup is used to determine location.

3. The method according to claim 2, characterized in that The alternative location lookup is a geolocation API, a location determined using the Global Navigation Satellite System (GNSS), or a location of the operating system.

4. The method according to claim 1, wherein Also includes: assembling the first plurality of BSSIDs into a plurality of received BSSID combinations, each received BSSID combination including a first number of BSSIDs from the first plurality of BSSIDs, wherein the second plurality of BSSIDs is stored as a plurality of stored BSSID combinations, each stored BSSID combination including a first number of BSSIDs from the second plurality of BSSIDs, and The location is determined by searching for matching items in stored BSSID combinations using the received BSSID combination.

5. The method according to claim 4, characterized in that The first number is at least 3.

6. The method according to claim 4, characterized in that Determining the location of the device searches the database using the received BSSID combinations until at least one received BSSID combination is found.

7. The method according to claim 4, characterized in that The geo-location payload includes a signal strength for each of the first plurality of BSSIDs, and searching using received combinations of BSSIDs is based on the signal strengths.

8. The method according to claim 1, characterized in that The location of the device is determined by searching the second plurality of BSSIDs over a first time period.

9. The method according to claim 1, characterized in that The geolocation payload also includes a received Internet Protocol (IP) address of the device, wherein the database includes storing device IP addresses in association with the location data, and wherein the determination of the device location uses the received IP address.

10. The method according to claim 9, characterized in that Determination of device location compares the received IP address to determine if it is within a stored range of device IP addresses.

11. The method according to claim 1, wherein The location data stored in the database includes previously stored location data of the first device, a second device, or a combination thereof.

12. The method according to claim 1, characterized in that The location data stored in the database includes previously stored location data of a second device.

13. The method according to claim 1, wherein The location data stored in the database includes previously stored location data of a second device.

14. The method according to claim 1, wherein Also included is executing device rules based on the determined device location.

15. The method according to claim 1, wherein Also included is updating the database using the determined location, the first plurality of BSSIDs, and a timestamp of the geo-location payload.

16. The method according to claim 1, characterized in that Also included is validating the determined location against a previous location of the first device.

17. A system for determining a location of a first device, comprising: a first device comprising a receiver for detecting a first plurality of BSSIDs, a processor for assembling a geolocation payload comprising the detected BSSIDs, and a transmitter for transmitting the geolocation payload; a database comprising a second plurality of BSSIDs and locations associated therewith; and A second device comprising a receiver and a computer-readable medium having instructions stored thereon, the instructions, when executed, causing the second device to: receiving a geolocation payload from a first device having a receiver, the geolocation payload comprising a first plurality of basic service set identifiers (BSSIDs) detected by the first device; and The location of the first device is determined by searching a database using the first plurality of BSSIDs, the database including a second plurality of BSSIDs and location data associated with the second plurality of BSSIDs.