Smart location alert system

In an approach to sending an alert based on a user's location, one or more computer processors identify a position of a target device as a first location based, at least in part, on data provided by one or more geolocation systems; identify a location category for the first location; determine that the identified location category is among a predetermined set of location categories; identify a time threshold for the identified location category; identify an alert that is associated with the identified location category within the database; determine an amount of time that the target device is present at the first location; and determine that the amount of time the target device is present at the first location exceeds the time threshold, and in response, sending the alert to the one or more recipient devices for the purpose of notifying users of the first location of the target device.

BACKGROUND

The present invention relates generally to the field of location alert systems and, more particularly, to alert systems utilizing a heterogeneous collection of location-determining systems.

Smart devices, such as smart phones, are prevalent in modern culture. There are over 2 billion smart device users in the world. Smart devices are ubiquitous in everyday life, where many individuals carry a personal smart device on their person, everywhere they go. Many smart devices are built with location monitoring and tracking capabilities. Smart devices, when on a network, continuously transmit data about the current time and position using built-in communication receivers.

One location monitoring system is global positioning system (GPS). With GPS, a GPS receiver monitors multiple satellites to determine the precise position of the receiver and its deviation over time. GPS utilizes the time and known position of specialized satellites. The satellites carry stable atomic clocks that are synchronized with one another and with the ground clocks. Any drift from true time maintained on the ground is corrected daily. Each GPS satellite continually broadcasts a signal to be received by a GPS receiver. At a minimum, four satellites must be in view of the receiver for it to compute four unknown quantities (three position coordinates and clock deviation from satellite time). These coordinates may be displayed on a moving map display or recorded and used by some other system.

Smart device tracking is the ascertaining of the position or location at a certain time of a smart device, whether stationary or moving. Localization occurs either via multilateration of radio signals between several cellular towers of the network and the phone, or via GPS. To locate a smart device using multilateration of radio signals, the smart device emits a roaming signal to contact the next nearby antenna tower. Examples of smart device tracking include network-based, handset-based, SIM-based, and/or wi-fi based.

SUMMARY

According to one embodiment of the present invention, a method for sending an alert based on a user's location is provided. The method includes: identifying a position of a target device as a first location based, at least in part, on data provided by one or more geolocation systems; identifying a location category for the first location, wherein a database associates the first location with the location category; determining that the identified location category is among a predetermined set of location categories, wherein the predetermined set of location categories is associated with the database; identifying a time threshold for the identified location category, wherein the database associates the time threshold with the identified location category; identifying an alert that is associated with the identified location category within the database; determining an amount of time that the target device is present at the first location, wherein the amount of time the target device is present at the first location is determined based, at least in part, on time information paired with geolocation information received from the one or more geolocation systems; and determining that the amount of time the target device is present at the first location exceeds the time threshold, and in response, sending the alert to the one or more recipient devices for the purpose of notifying users of the one or more recipient devices of the first location of the target device.

According to another embodiment of the present invention, a computer program product for sending an alert based on a user's location is provided. The computer program product comprises a computer readable storage medium and program instructions stored on the computer readable storage medium. The program instructions include: program instructions to identify a position of a target device as a first location based, at least in part, on data provided by one or more geolocation systems; program instructions to identify a location category for the first location, wherein a database associates the first location with the location category; program instructions to determine that the identified location category is among a predetermined set of location categories, wherein the predetermined set of location categories is associated with the database; program instructions to identify a time threshold for the identified location category, wherein the database associates the time threshold with the identified location category; program instructions to identify an alert that is associated with the identified location category within the database; program instructions to determine an amount of time that the target device is present at the first location, wherein the amount of time the target device is present at the first location is determined based, at least in part, on time information paired with geolocation information received from the one or more geolocation systems; and program instructions to determine that the amount of time the target device is present at the first location exceeds the time threshold, and in response, sending the alert to the one or more recipient devices for the purpose of notifying users of the one or more recipient devices of the first location of the target device.

According to another embodiment of the present invention, a computer system for sending an alert based on a user's location is provided. The computer system includes one or more computer processors, one or more computer readable storage media, and program instructions stored on the computer readable storage media for execution by at least one of the one or more processors. The program instructions include: program instructions to identify a position of a target device as a first location based, at least in part, on data provided by one or more geolocation systems; program instructions to identify a location category for the first location, wherein a database associates the first location with the location category; program instructions to determine that the identified location category is among a predetermined set of location categories, wherein the predetermined set of location categories is associated with the database; program instructions to identify a time threshold for the identified location category, wherein the database associates the time threshold with the identified location category; program instructions to identify an alert that is associated with the identified location category within the database; program instructions to determine an amount of time that the target device is present at the first location, wherein the amount of time the target device is present at the first location is determined based, at least in part, on time information paired with geolocation information received from the one or more geolocation systems; and program instructions to determine that the amount of time the target device is present at the first location exceeds the time threshold, and in response, sending the alert to the one or more recipient devices for the purpose of notifying users of the one or more recipient devices of the first location of the target device.

DETAILED DESCRIPTION

Embodiments of the present invention recognize that in some situations, such as in an emergency or if a person simply forgets, interested parties are not contacted regarding the situation. Additionally, parents, spouses, family members, friends, employers, and other interested parties often want to know the status of someone who is traveling and would like to know if the person has safely arrived at their intended destination. Typically, the owner of a smart device contacts interested parties directly via a phone call or text message. Third parties, such as other individuals, hospitals, or the police, may also initiate contact with interested parties of a person if necessary. If, however, the owner of a smart device is in an emergency, the owner may find it difficult to contact interested parties to notify them of the emergency. An individual who is incapacitated from an unexpected medical emergency, for example, may not be able to notify his family members of the situation. Family members and other interested parties are notified of an emergency later on, if at all, which prevents them from acting promptly to assist or support the incapacitated individual.

Embodiments of the present invention provide a method to determine whether to send an alert to one or more listed recipients based on a user's location and activity. In some embodiments, for example, a user's smart device uses location monitoring and tracking capabilities to determine the location of the user and the time spent at the location. In such embodiments, the smart device communicates with geolocation systems and location sensors, such as GPS and wireless location beacons, to identify the location of the user. The smart device uses location and amount of time the user spends at the location in the determination of whether an alert is sent. Predefined locations are identified to prompt an alert if visited by the user and their smart device for a predefined amount of time. In various embodiments, the smart device or other device(s) that are provided with the location of the smart device can send an alert to the user's listed recipients. If, for example, a user is incapacitated from an injury, emergency services may transport the user to a hospital to receive medical attention. The user, incapacitated from injury, is unable to send an alert to his family members. In some embodiments, the user's smart device utilizes GPS services and location sensors placed within the hospital to determine that the user is in a hospital room. In this example, hospitals are on the predefined list or set of locations with a predefined time limit of one hour. The user's smart device determines if the user resides in the hospital room for longer than one hour, and if true, the user's smart device sends an alert message to the user's family members, who are on the user's recipient list. The alert message sent by the user's smart device is received by the recipient's device. In alternative embodiments, the smart device can determine whether to send an alert on the safe arrival to a destination. For example, a user is traveling and arrives at a desired location. The smart device determines that the user arrived at the desired destination and notifies the user's listed recipients that the user arrived with an alert. As illustrated by this example, among others, embodiments of the preset invention represent an improvement with respect to alert initiation at least in that the user does not need to take a specific action to initiate an alert. Rather than the user taking direct actions to initiate an alert to be sent to designated recipients, the alert is initiated outside of the user's direct control based on the location and/or movement(s) of the user and the user's smart device, as described herein.

Embodiments of the present invention will now be described in detail with reference to the Figures. It is to be understood that these embodiments are described only for the purpose of illustration and help those skilled in the art to understand and implement the present invention, without suggesting any limitation as to the scope of the invention. The invention described herein can be implemented in various manners other than the ones explicitly described herein.

FIG. 1is a functional block diagram illustrating a computing environment, in accordance with an embodiment of the present invention. For example,FIG. 1is a functional block diagram illustrating computing environment100. Computing environment100includes target device104, client device106, location beacon108, geolocation system110, and smart alert server112connected over network102. Target device104includes target user interface (target UI)105. Client device106includes client user interface (client UI)107. Geolocation system110includes geolocation database111. Smart alert server112includes smart alert program300and database220.

In various embodiments, smart alert server112is a computing device that can be a standalone device, a server, a laptop computer, a tablet computer, a netbook computer, a personal computer (PC), or a desktop computer. In another embodiment, smart alert server112represents a computing system utilizing clustered computers and components to act as a single pool of seamless resources. In general, smart alert server112can be any computing device or a combination of devices with access to some or all of target device104, client device106, location beacon108, and geolocation system110, and with access to and/or capable of executing smart alert program300and is capable of executing smart alert program300. Smart alert server112may include internal and external hardware components, as depicted and described in further detail with respect toFIG. 4.

In this embodiment, smart alert program300is stored on smart alert server112. In other embodiments, smart alert program300may reside on another computing device (e.g., target device104), provided that it can access and/or receive data from some or all of target device104, client device106, location beacon108, and geolocation system110. In yet other embodiments, smart alert program300may be stored externally and accessed through a communication network, such as network102.

Network102can be, for example, a local area network (LAN), a wide area network (WAN) such as the Internet, or a combination of the two, and may include wired, wireless, fiber optic or any other connection known in the art. In general, network102can be any combination of connections and protocols that will support communications between smart alert server112, target device104, client device106, location beacon108, and geolocation system110, in accordance with a desired embodiment of the present invention.

In general, smart alert program300operates to determine whether an alert is to be sent to a list of recipients, based on a user's location and time present at the location. One or more users of smart alert program300uses a smart device, such as target device104and/or client device106, to collect a list of recipients. In various embodiments, the recipients are the individuals or entities who may receive alerts about the user. Smart alert program300identifies the location of the user, as described in greater detail herein with respect to determining the location of target device104. The location of the user is needed in the determination of whether an alert needs to be sent. If a user is located at certain areas, an alert may be necessary. Smart alert program300utilizes data provided by geolocation positioning systems and/or location beacons and/or target device104to determine the location of the user. Smart alert program300identifies the category of the location (i.e., a location category). Location categories are enumerated to smart alert program300as types of locations where an alert may be necessary. Smart alert program300determines whether the location category is relevant. Smart alert program300can, for example, determine location category relevancy based on pattern recognition and/or information collected from a database. If the location category is relevant, smart alert program300determines the threshold amount of time relevant to a location category. In various embodiments, smart alert program300determines threshold amount of time relevant to the location category based on pattern recognition and/or information collected from a database. Smart alert program300determines whether the user is present at the location longer than the determined threshold amount of time relevant to the location category. If the user is present for longer than the threshold amount of time relevant to the location category, smart alert program300sends an alert and information regarding the alert to the user's list of recipients (e.g., client device106).

Database220is a data repository that may be written to and read by smart alert program300. List(s) of recipients, location history, location activity, and location information may be stored to database220. The location history is the history of movement (i.e., a sequence of locations and corresponding point in time) by the target device (e.g., target device104). In some embodiments, database220may be written to and read by programs and entities outside of computing environment100, as well as other entities within computing environment100, in order to populate the repository with list of recipients, location history, location activity, and location information. Database220may also include information stored on geolocation database111, such as location coordinates, location identification, and geocoding information.

In various embodiments, target device104is a computing device that can be a standalone device, a server, a laptop computer, a tablet computer, a netbook computer, a personal computer (PC), a desktop computer, a personal digital assistant (PDA), a smart phone, or any programmable electronic device capable of communicating with smart alert server112via network102. In another embodiment, target device104represents a computing system utilizing clustered computers and components to act as a single pool of seamless resources. In general, target device104can be any computing device or a combination of devices with access to smart alert server112, and with access to and/or capable of executing smart alert program300. In some embodiments, target device104can communicate directly or indirectly with client device106. Target device104may include internal and external hardware components, as depicted and described in further detail with respect toFIG. 4.

Target device104includes a user interface (UI), target UI105, which executes locally on target device104and operates to provide a UI to a user of target device104. Target UI105further operates to receive user input from a user via the provided user interface, thereby enabling the user to interact with target device104. In one embodiment, target UI105provides a user interface that enables a user of target device104to interact with smart alert program300of smart alert server112via network102. In various examples, the user interacts with smart alert program300in order to submit list(s) of recipients, view alerts, view location history, and view location activity. In one embodiment, target UI105is stored on target device104. In other embodiments, target UI105is stored on another computing device (e.g., smart alert server112), provided that target UI105can access and is accessible by target device104and smart alert program300.

Client device106is a computing device that can be a standalone device, a server, a laptop computer, a tablet computer, a netbook computer, a personal computer (PC), a desktop computer, a personal digital assistant (PDA), a smart phone, or any programmable electronic device capable of communicating with smart alert server112via network102. In another embodiment, client device106represents a computing system utilizing clustered computers and components to act as a single pool of seamless resources. In general, client device106can be any computing device or a combination of devices with access to smart alert server112, and with access to and/or capable of executing smart alert program300. In one embodiment, a plurality of client devices exists, where each client device belongs to a potential recipient of an alert sent by smart alert program300. Client device106may also be referred to as a recipient device, a device used by a recipient of an alert sent from smart alert program300. Client device106may include internal and external hardware components, as depicted and described in further detail with respect toFIG. 4.

Client device106includes a user interface (UI), client UI107, which executes locally on client device106and operates to provide a UI to a user of client device106. Client UI107further operates to receive interaction from a user via the provided user interface, thereby enabling the user to interact with client device106. In one embodiment, client UI107provides a user interface that enables a user of client device106to interact with smart alert program300of smart alert server112via network102. In one embodiment, client UI107is stored on client device106. In other embodiments, client UI107is stored on another computing device (e.g., smart alert server112), provided that client UI107can access and is accessible by at least client device106and smart alert program300.

Location beacon108is a functional device that can emit signals that are detectable by a computing device, such as a standalone device, a server, a laptop computer, a tablet computer, a netbook computer, a personal computer (PC), a desktop computer, a personal digital assistant (PDA), a smart phone, or any programmable electronic device. In some embodiments, location beacon108is capable of communicating with smart alert server112via network102. In some embodiments, location beacon108can communicate over network102with wireless local area network (WLAN) communication, near-field communication (NFC), radio-frequency identification (RFID), and/or Bluetooth communication. In general, location beacon108can be any device or a combination of devices designed to send and/or receive signals from a computing device with access to smart alert server112and with access to and/or capable of executing smart alert program300.

In general, geolocation system110is a system with capabilities to conduct identification or estimation of the real-world geographic location of an object, such as a computing device. Geolocation involves the generation of a set of geographic coordinates and is closely related to the use of positioning systems. In various embodiments, device geolocation can be performed by associating a geographic location with an Internet Protocol (IP) address, a MAC address, RFID tag, a hardware embedded article/production number, an embedded software number, an invoice, a Wi-Fi positioning system, a device fingerprint, canvas fingerprinting, device GPS coordinates, or user-inputted information. Data gathered from device geolocation can include information such as country, region, city, postal/zip code, latitude, longitude, and time zone. Deeper data sets can determine other parameters such as domain name, connection speed, ISP, language, proxies, company name, US DMA/MSA, NAICS codes, and home/business. Mobile phone localization, from either multilateration of radio signals between cell towers or by GPS, can also pair a device to a location and a time. The location may be signified as broadly as a zip code or as narrowly as specific longitude/latitude coordinates.

Geolocation system110may be a global navigation satellite system that provides geolocation and time information to a GPS receiver anywhere on or near the Earth where there is an unobstructed line of sight to four or more GPS satellites. Geolocation involves the generation of a set of geographic coordinates and is closely related to the use of positioning systems. Device geolocation is performed by associating a geographic location with the GPS coordinates of target device104. Geolocation system110can transmit signals to target device104and/or receive signals from target device104enabling at least one of, or a combination of, (i) target device104determining its position based on signal(s) received from geolocation system110and (ii) geolocation system110determining the location of target device104based on signal(s) received from target device104. In embodiments utilizing GPS, for example, target device104transmits and receives signals to and from global navigational satellite systems. In other embodiments utilizing cellular towers, for example, target device104transmits and receives radio signals between several cellular towers for multilateration. Data provided by geolocation system100may be provided by GPS, one or more location beacons, optical character recognition computer program instructions, and natural language processing computer program instructions. In some embodiments, data provided by geolocation system100may be provided by location beacons that is able to emit a signal identifying a location. In other embodiments, data provided by geolocation system100may be provided by an optical head-mounted display device executing optical character recognition computer program instructions to recognize text found in the location and executing natural language processing computer program instructions to identify the location.

Geolocation database111is a data repository that may be written to and read by geolocation system110. Location, location identification, and geocoding information may be stored to database220. In some embodiments, geolocation database111may be written to and read by programs and entities outside of computing environment100, as well as other entities within computing environment100, in order to populate the repository with location, location identification, and geocoding information.

FIG. 2is a functional block diagram illustrating a computing environment, in accordance with an embodiment of the present invention. For example,FIG. 2is a functional block diagram illustrating computing environment200. Computing environment200includes smart phone204, wearable device208, wireless location beacon210, GPS212, client device106, and smart alert server112connected over network102. Smart phone204includes camera205and GPS mod207(i.e., a GPS module). Wearable device208includes camera209and GPS mod211.

In the specific embodiment depicted inFIG. 2, target device104is represented by smart phone204and/or wearable device208. As described above with respect to target device104, smart phone204operates as a handheld personal device with a mobile operating system and an integrated mobile broadband cellular network connection for voice, SMS, Internet data, and Wi-Fi communication, capable of communicating with smart alert server112via network102and with access to and/or capable of executing smart alert program300. Smart phone204may include internal and external hardware components, as depicted, and described in further detail with respect toFIG. 4. In various examples, a user of smart phone204interacts with smart alert program300in order to submit list(s) of recipients, view alerts, view location history, view location activity, and determine location via optical environment recognition.

Wearable device208is an optical head-mounted display device capable of communicating with smart alert server112via network102and with access to and/or capable of executing smart alert program300. Wearable device208may include internal and external hardware components, as depicted, and described in further detail with respect toFIG. 4. In various examples, a user of wearable device208interacts, directly or indirectly, with smart alert program300in order to submit list of recipients, view alerts, view location history, view location activity, and determine location via optical environment recognition. Wearable device208may be completely functional as standalone smart device or function as an extension of a smart phone (e.g., smart phone204), connected and running software that enables the two devices to be synchronized for additional and enhanced functionality. Wearable device208includes camera209for optical environment recognition capabilities based on what a user looks toward while wearing the device.

Optical character recognition techniques may be used to convert images taken of typed, handwritten, or printed text into machine-encoded text. Machine-encoded text is comprehensible by a machine to use for processing. Optical character recognition techniques include recognizing characters in their entirety or by detecting the individual lines and strokes of characters. The wearable device worn by a user recognizes text displayed on documents, signs, billboards, or other printed or displayed materials. Optical character recognition utilizes various techniques to recognize text from other objects. Wearable device208utilizes natural language processing to transcribe recognized text into a machine comprehensible format. Natural language processing techniques enable computer to understand human (natural) language. Parsing, for example, is a natural language process of analyzing a string of characters with the rules of formal grammar. The machine comprehensible text parsed from displayed or printed recognizable text are compared with definitions and/or logic enumerated by database220to determine the meaning of the transcribed text. Optical character recognition techniques in combination with natural language processing is used by wearable device208to understand the meaning of text displayed in the environment around wearable device208to, in such embodiments, infer various forms of information about the environment and/or the location of wearable device208, as described herein.

Smart phone204and wearable device208include camera205and camera209, respectively, wherein each is able to capture photographs and/or record video using one or more built-in digital cameras. Smart phone204and wearable device208may run mobile applications along with camera205and camera209to add capabilities such as geotagging and optical environment recognition.

Smart phone204and wearable device208includes GPS mod207and GPS mod211, respectively, which are GPS receiver modules that can receive information from GPS satellites and calculate the device's geographical position. GPS mod207and GPS mod211receive data from GPS212to utilize GPS capabilities such as device tracking and location identification.

Wireless location beacon210is a functional device that can emit signals that are detectable by a computing device, such as smart phone204and/or wearable device208, and capable of communicating with smart alert server112via network102. In some embodiments, wireless location beacon210can communicate over network102with wireless local area network (WLAN) communication, near-field communication (NFC), radio-frequency identification (RFID), and/or Bluetooth communication. Wireless location beacon210can be located in a room within a building so that when a user enters the room, wireless location beacon210may communicate with smart phone204and/or wearable device208to identify itself to smart phone204and/or wearable device208and/or identify the room and/or location of wireless beacon210to smart phone204and/or wearable device208. For example, a user holding a smart phone enters a room with a wireless location beacon inside. The wireless location beacon is designated as the wireless location beacon for that specific room. When the user enters the room, the wireless location beacon connects with the smart phone with Bluetooth communication to identify itself and to identify the room the smart phone is in. A wireless location beacon can be used to refine the location area determined by geolocation systems (e.g., GPS212) to a subset of the locations in that location area. For example, a geolocation system determines smart phone204is located in a building which contains multiple rooms. Wireless location beacon210can assist in refining the location of smart phone204to the specific room that smart phone204is located in. The specific room is a subset of the overall location of the building.

In the specific embodiment depicted inFIG. 2, geolocation system110is represented by GPS212. As described above with respect to geolocation system110, GPS212operates to provide geolocation and time information to a GPS receiver anywhere on or near the Earth where there is an unobstructed line of sight to four or more GPS satellites. Device geolocation is performed by associating a geographic location with the GPS coordinates of smart phone204and/or wearable device208. GPS212contains a data repository that may be written to and read by GPS212and stores location, location identification, and geocoding information.

To illustrate the functionality described above with respect toFIG. 2, in one specific example a user of smart phone204, Abel, stores the names and contact information of five close family members and friends in database220of smart alert server112via smart phone204. Abel inputs the phone numbers of each of the five individuals. If an alert is sent out by smart alert program300, one or more of the five individuals would receive a text message with the alert. The five designated recipients use client devices (also called recipient devices), such as client device106, to receive alerts. In various embodiments, database220associates listed individuals with specific alerts such that one or more recipients may be designated to receive some alerts but not all alerts sent via smart alert program300.

As Abel walks around a city block, smart phone204constantly monitors the location of Abel. When Abel walks into a grocery store, GPS mod207on smart phone204interacts with GPS212to determine Abel is in a grocery store. GPS mod207on smart phone204receives information from GPS satellites and calculates the geographical coordinates of smart phone204. GPS212reads the geographical coordinates and determines via its data repository that Abel is located in a specific grocery store. If Abel suffers a medical injury and is transported to a hospital to receive medical attention, GPS mod207on smart phone204interacts with GPS212to determine that Abel has left the grocery store. GPS mod207on smart phone204constantly receives information from GPS satellites and calculates the geographical coordinates of smart phone204as Abel is transported. GPS212determines the geographical coordinates and determines via its data repository that Abel is now located at a hospital. Location beacons, such as wireless location beacon210, within the hospital building may additionally refine the determination of Abel's location within the building to a subset of the locations consisted in Abel's location. Location beacons are advantageous in that they may enable smart phone204and/or any other target device104to determine the exact room a user resides in, whereas GPS may have difficulty making that determination, due to signal attenuation from roofs, walls, and other objects. Attenuation is the reduction of signal strength during transmission. While GPS provides the geographical coordinates of smart phone204, location determination within a building may be difficult to determine due to factors such as bad signal strength. Additionally, if a building has multiple floors, location determination via GPS may not be adequate since GPS is an overhead satellite-based positioning system. For example, differentiating a device located in a basement versus a device located in the first floor may be difficult. Location beacons provide additional support to the determination of a smart phone's location within a building. Referring again to the example involving Abel, smart phone204interacts with wireless location beacon210located in a medical treatment patient room. Smart alert program300determines Abel is in a medical treatment patient room from location information received from wireless location beacon210.

In addition to determining Abel's location, smart alert program300determines a corresponding location category and whether or not Abel's location and/or location category is relevant to one or more alerts. In the above example, when Abel is brought to ABC Medical Center to receive medical attention, smart alert program300identifies the location category to be “hospital”. If, for example, Abel visits the lobby of ABC Medical Center to ask a question, smart alert program300determines Abel is in the ABC Medical Center lobby and smart alert program300determines the location category to be “hospital lobby” and/or “lobby.” When Abel is brought to ABC Medical Center to receive medical treatment, smart alert program300determines Abel is in a medical treatment patient room of ABC Medical Center and smart alert program300determines the location category to be “hospital patient room” or “patient room.”

When “hospital lobby” is not input as a relevant location category into smart alert program300, if Abel visits the lobby of ABC Medical Center to ask a question, smart alert program300determines that “hospital lobby” or “lobby” is not a relevant location category. “Patient room,” however, may be input as a relevant location category to smart alert program300such that, when Abel is brought to a medical treatment patient room of ABC Medical Center to receive medical treatment, smart alert program300determines that Abel is in a relevant “hospital patient room” or “patient room” location category.

In some embodiments, like the one depicted inFIG. 2, an optical head-mounted display device, such as wearable device208, is used as a target device (i.e., an instance of target device104) with smart alert program300. Camera209on wearable device208is used for optical environment recognition capabilities based on what a user looks toward while wearing the device. In some cases, it is advantageous to use optical character recognition capabilities and natural language processing capabilities along with GPS capabilities to identify locations when specific coordinates and/or location category information for the location are not stored in database220. As explained above, optical character recognition is the electronic conversion of images of typed, handwritten or printed text into machine-encoded text. Optical character recognition may be used by recognizing characters in their entirety (pattern recognition) or by detecting the individual lines and strokes characters are made from (feature detection) and identifying them that way. As also explained above, natural language processing is how computers process and understand human (natural) language. Parsing is a natural language process of analyzing a string of characters with the rules of formal grammar. For example, if user Abel is located within ABC Medical Center and GPS212determines Abel is located at a particular set of coordinates. The coordinates, however, may not be associated with ABC Medical Center in database220. In such cases the use of optical character recognition and natural language processing may advantageously facilitate the determination of the appropriate location category. If, for example, Abel is looking at a sign that reads “ABC Medical Center” while wearing wearable device208, optical character recognition software within wearable device208determines Abel is looking at text. Natural language processing parses the text “ABC Medical Center” to distinguish the different words and comprehend the definitions of the words of “ABC Medical Center”. Smart alert program300compares the machine comprehensible text parsed from text with definitions enumerated by database220to determine the meaning of the transcribed text. Smart alert program300is thereby capable of determining that Abel is located at ABC Medical Center and determine that the corresponding location category is “medical center” or “hospital” or any other appropriate location category enumerated within database220from the natural language processing of the text reading “ABC Medical Center.” Additionally, such techniques may enable smart alert program300to determine the location of wearable device208by cross-referencing “ABC medical center” with associated location information (e.g., GPS coordinates) within database220and/or geolocation database111.

In some embodiments, optical character recognition capabilities can also be used alone or along with GPS capabilities to determine location categories for location categories not stored in database220. For example, if user Abel is wearing wearable device208, and GPS212determines Abel is located at ABC Medical Center. The location category of ABC Medical Center may not be stored in a database for smart alert program300to access or location determination systems may not be accurate enough to determine location. Abel is looking at a sign that reads “ABC Medical Center” while wearing wearable device208. Optical character recognition software within wearable device208determines Abel is looking at text that reads “ABC Medical Center” and smart alert program300determines Abel's location, ABC Medical Center, is a hospital. In this example, optical recognition techniques recognize the words “Medical Center” and uses information within databases to determine that “Medical Center” refers to a hospital.

In another example, Abel walks to a hospital lobby to ask a question and on his way to the hospital lobby, he passes through hospital patient room DEF. As previously described, in some embodiments time spent at a location is a factor that smart alert program300considers when determining whether or not to send an alert. In this example, smart alert program300determines Abel is only present in hospital patient room DEF for a few minutes and that the relevant threshold amount of time for location category “hospital patient room” or “patient room” is one hour. Smart alert program300determines that Abel is not present at hospital patient room DEF for longer than the threshold amount of time relevant for a hospital patient room and does not send an alert.

Alternatively, Abel is brought to a medical treatment patient room of ABC Medical Center to receive medical treatment. Abel resides in the medical treatment patient room for more than one hour. The relevant threshold amount of time for a hospital patient room is one hour. Smart alert program300determines that Abel is present at a hospital patient room for longer than one hour. Smart alert program300sends an alert and relevant information in the form of a text message to the five individuals Abel listed as recipients. The alert contains Abel's name, his location at a hospital patient room in ABC Medical Center, information on where ABC Medical Center is located, and that Abel has been in the hospital patient room in ABC Medical Center for longer than one hour.

FIG. 3is a flowchart depicting operations for sending an alert based on a user's location, on a computing device within the computing environment ofFIG. 1and/orFIG. 2, in accordance with an embodiment of the present invention. For example,FIG. 3is a flowchart depicting operations of smart alert program300on smart alert server112within computing environment100and/or computing environment200. In other examples,FIG. 3is a flowchart depicting operations of smart alert program300on target device104(e.g., smart phone204and/or wearable device208) within computing environment100and/or computing environment200.

Smart alert program300collects a user's list of recipients and stores the list in a database (step302, e.g., database220). In an embodiment of the present invention, a user generates the list of recipients by inputting contact information of interested parties that the user would like to receive alerts from smart alert program300(e.g., user(s) of client device106). The user can input the contact information into target device104ofFIG. 1via target UI105. The contact information can include phone numbers for phone calls and text messages, and email addresses. In some embodiments, the list of recipients and corresponding contact information may be accessed by the user and the user may edit the given information. For example, a user of smart alert program300uses smart phone204ofFIG. 2to input the names and the contact information of interested parties. Interested parties may be any individual or entity whom the user would like to have receive alerts from smart alert program300. The list of recipients and contact information are stored on database220. In another embodiment, the contact information of interested parties is collected directly from a third-party source, such as a school's parent or guardian directory, an employer's emergency contact information database, or a hospital's emergency contact information database.

Smart alert program300identifies the location of the user (step304). In an embodiment of the present invention, smart alert program300determines the location of the smart device, such as target device104, that the user carries on the user's person. In an embodiment, smart alert program300utilizes positioning systems, such as geolocation system110ofFIG. 1, to generate a set of geographic coordinates. Smart alert program300accesses geolocation database111to determine the location corresponding to the geographic coordinates of target device104. For example, GPS mod207ofFIG. 2, located on smart phone204, which belongs to a user and receives signals from GPS212to determine the coordinates of smart phone204. Based on these coordinates, GPS mod207may access geolocation information within geolocation databases (e.g., geolocation database111) to determine the corresponding location for the geographic coordinates of smart phone204. In another embodiment, smart alert program300utilizes a location device that can emit detectable signals, such as location beacon108, to determine the location of the user. For example, when a user, carrying smart phone204, enters a room that contains wireless location beacon210, wireless communication beacon210communicates the location of the room and information of the room's location to smart phone204. Smart alert program300identifies the location of the room from the information obtained from wireless beacon210. In yet another embodiment, smart alert program300utilizes both geolocation systems and location beacons to determine the location of a smart device. For example, a user, carrying smart phone204, enters an office building. Smart alert program300utilizes geolocation systems to determine the user is located in the office building. Each room of the office building contains a location beacon. As the user travels within the office building, smart alert program300utilizes the location beacons within rooms of the office building to determine the user's location with respect to what room the user is located within the office building.

Smart alert program300identifies the category of the location (step306). In an embodiment of the present invention, smart alert program300determines the location category of an identified location. A location category is a descriptor term for a specific location and acts as an identifier for the type of location that corresponds to the specific location. Accordingly, a plurality of specific locations can be associated with each respective location category. Examples of location categories include hospital, grocery store, school, police station, residential home, and restaurant. In the example described above with respect toFIG. 2, the location category for ABC Medical Center is hospital. Location categories corresponding to specific locations are stored on database220ofFIG. 1and may be retrieved by smart alert program300. For example, when user Abel walks into ABC Foods, smart alert program300identifies the location category to be “grocery store”. In another embodiment, location categories include categories of rooms within buildings. Location categories of rooms describe unique or specific information about the room within a building. Referring again to the example involving Abel, ABC Medical Center's hospital rooms each have specific location categories. Examples of location categories for rooms in ABC Medical Center include: lobby, examination room, operating room, intensive care center, and morgue.

Having identified the category of the location, smart alert program300determines whether the location category is relevant (decision step308). In various embodiments, a relevant location category is a location category enumerated within a database and/or determined via pattern recognition techniques. For example, a relevant location category can be a location category that is one of a predetermined set of location categories (either explicitly or inferentially) in which the set represents, at least in part, anticipated locations/movements that are associated with the user of target device104(e.g., smart phone204and/or wearable device208). For example, relevant location categories may include hospitals and police stations. In another embodiment, relevant location categories are locations that, with a high probability of likelihood, the user will visit, as enumerated within a database or determined via pattern recognition techniques, as discussed in more detail in the subsequent paragraph. Pattern recognition techniques may be used to determine relevant location categories to better tailor location category relevancy with respect to a user's likely or anticipated travel destinations, and is some embodiments, corresponding points in time. For example, if a student regularly travels to school, schools may be considered a relevant location category. In an embodiment, relevant location categories may be inputted to smart alert program300with a device, such as target device104and/or client device106ofFIG. 1. For example, a user or designated recipient who knows a specific travel path the user may take, can input to smart alert program300the destinations the user will be travelling to and/or locations along the specific travel path. The location categories of the locations inputted to smart alert program300may be determined as relevant location categories.

In another embodiment, smart alert program300determines, as part of step308, relevant location categories by detecting patterns of travel of users, with emphasis on locations commonly visited (i.e., the movement history of the user with respect to locations and time and/or locations only visited in emergency situations). Emergency situations can be situations that require police, fire, and/or medical assistance. Smart alert program300detects patterns via machine learning and pattern recognition techniques, as would be appreciated by one with skill in the art. Machine learning explores the study and construction of algorithms that can learn from and make predictions based on data. Such algorithms operate by building a model from example inputs in order to make data-driven predictions or decisions expressed as outputs, rather than following strictly static program instructions. Within the field of data analytics, machine learning is a method used to devise complex models and algorithms that lend themselves to decisions, and probability related prediction. These analytical models enable researchers, data scientists, engineers, and analysts to produce reliable, repeatable decisions and results and to uncover hidden insights through learning from historical relationships and trends in the data. Pattern recognition is a branch of machine learning that focuses on the recognition of patterns and regularities in data. Pattern recognition systems may be trained from labeled “training” data (supervised learning), but when no labeled data are available, other algorithms can be used to discover previously unknown patterns (unsupervised learning). Location histories, like movement histories (e.g., sequences of locations and a corresponding sequence of points in time), of various users may represent training data for supervised learning. From location histories, pattern recognition systems may determine commonly visited locations to classify as relevant location categories and the threshold amount of time relevant to the locations. In some embodiments, smart alert program300may use machine learning and pattern recognition techniques to identify the locations that are regularly visited by a user of target device104while also utilizing a list of enumerated, relevant locations and/or location categories to determine whether or not to send an alert, as described herein.

For the case in which smart alert program300determines the location category is not relevant (step308, “NO” branch), smart alert program300returns to step304to identify the location of the user. In this case, smart alert program300proceeds to identify the location of user at a later time (i.e., a subsequent iteration of step304). For the case in which smart alert program300determines that the location category is relevant (step308, “YES” branch), smart alert program300proceeds to determine the threshold amount of time relevant to the location category (step310), if any. In an embodiment, the threshold amount of time relevant to a location category is the amount of time enumerated within a database and/or determined via pattern recognition techniques. In some cases, the threshold amount of time may be identified based, at least in part, on a time of day associated with the identified location of the user (i.e., a plurality of threshold amounts of time may exist for a location and/or a location category, wherein each threshold amount of time is associated with a specific time of day and/or span of times of day). For example, spending over an hour at a police station can be considered a threshold amount of time relevant to the location category of “police station”. In another embodiment, the threshold amount of time relevant to a location category is an amount of time spent at a relevant location category as enumerated within a database or determined via pattern recognition techniques. For example, spending over an hour at a school can be considered a threshold amount of time relevant to the location category of “school”. In an embodiment, the threshold amounts of time relevant to location categories are inputted to smart alert program300with a device, such as target device104ofFIG. 1. In another embodiment, smart alert program300determines the threshold amounts of time relevant to a location category by detecting patterns of travel of users, with emphasis on the amounts of time spent and/or time of day spent at certain locations. Pattern recognition techniques may be used to determine relevant amount of time to better tailor threshold amount of time relevancy with respect to a user's travel history. For example, a user typically goes to a hospital for 30 minutes to chat with a friend who works there. Smart alert program300may determine that this is not a relevant threshold amount of time spent at a hospital. Smart alert program300, via pattern recognition techniques, may determine that the threshold amount of time for the user is greater than 30 minutes.

Having determined the threshold amount of time relevant to the location category, smart alert program300determines whether the user is continuously present at the location longer than the threshold amount of time relevant to the location category (decision step312). The amount of time the user is continuously present at the present location can be determined by location monitoring. Mobile phone localization, from either multilateration of radio signals between cell towers or by GPS, can pair a device to a location and a time. GPS provides geolocation and time information to a GPS receiver. Smart alert program300determines the amount of time continuously present at a location based on information provided by geolocation system110ofFIG. 1. Smart alert program300calculates the amount of time continuously present at each specific geographic location from start to end from the time information provided to a GPS receiver of target device104. For the case in which smart alert program determines that the user is present at location for shorter than or equal to the threshold amount of time relevant to the location category (step312, “NO” branch), smart alert program300returns to step304to identify the location of the user at a later time (i.e., at a subsequent iteration of step304).

For the case in which smart alert program300determines that the user is present at location for longer than the threshold amount of time relevant to the location category (step312, “YES” branch), smart alert program300proceeds to send an alert and relevant information to the user's list of recipients (step314). An alert may be a text message, automated phone call, and/or email to a desired recipient. The alert can contain information regarding the situation including one or more of the name of the user, the location of the user, information about the location, and the length of time the user was at the location. In an embodiment, smart alert program300may store, in database220, a map of the locations the user's device was located at prior to the alert sent out. The recipient receives the map of locations the user has traveled at in the alert.

In an example, smart alert program300determines whether to send an alert while a user is travelling and resides at a location during the trip. Smart alert program300determines the location and the location category of the user while the user is travelling. Location categories, enumerated within a database or determined via pattern recognition techniques, can include locations on the trip such as roads, as well as commonly visited stopping locations, such as gas stations, rest stops, or restaurants. Smart alert program300determines locations not commonly visited, such as sides of roads away from buildings or attractions, as relevant. Smart alert program300sends an alert to the user's recipient list if user is present at the relevant location for longer than the relevant threshold amount of time. For example, user Abel is travelling on highway ABC when his car malfunctions, forcing Abel to pull over on the side of highway ABC. Smart alert program300determines the threshold relevant threshold amount of time for the side of a highway is 15 minutes. When Abel resides on the side of highway ABC for longer than 15 minutes, smart alert program300sends an alert to Abel's recipient list notifying them of a possible emergency. In another example, Abel is travelling on highway ABC when he stops at gas station DEF. Smart alert program300determines the relevant threshold amount of time for a gas station is 30 minutes. Abel stops at gas station DEF for less than 30 minutes. Smart alert program300does not send an alert to Abel's recipient list since Abel was not present at the gas station for longer than 30 minutes.

In an embodiment, before an alert is sent to designated recipients, smart alert program300notifies the user that an alert is about to be sent via target device104. In this and similar embodiments, the user can advantageously disable the alert, snooze the alert (i.e., add time to the threshold time for the user while at the present location), or change the threshold amount of time relevant to the location category for any instance of the user being at a location that corresponds to the present location category. Smart alert program300may have a period of time for which the user must respond by or else the alert will be sent. For example, user Abel is visiting a friend at a hospital patient room in ABC Medical Center. Abel spends longer than one hour visiting his friend at the hospital patient room. Abel receives a text message from smart alert program300notifying him that an alert will be sent out to his designated recipients. Abel disables the alert so that smart alert program300does not send an alert out.

In another embodiment, smart alert program300determines whether to send an alert on the safe arrival by a user to a destination. Smart alert program300determines the relevant threshold amount of time based on a desired destination location. If a user resides in a desired location for a predetermined threshold amount of time, smart alert program300sends an alert to desired recipients. In an example, Baker is traveling by himself on a bus from bus stop ABC to bus stop DEF. Charlie, Baker's guardian, expects Baker to arrive at bus stop DEF at a specific time. The relevant threshold amount of time for bus stop DEF is 5 minutes. If Baker arrives at bus stop DEF and resides in the location of bus stop DEF for longer than five minutes, smart alert program300sends an alert to Charlie notifying them of Baker's arrival at bus stop DEF. In another example, Baker stays on the bus and passes by bus stop DEF. Smart alert program300determines that Baker resided at bus stop DEF for 30 seconds, since Baker remained on the bus which drove through bus stop DEF. Since Baker did not reside at bus stop DEF for longer than five minutes, no alert is sent to Charlie.

FIG. 4is a block diagram of components of a computing device, generally designated400, in accordance with an embodiment of the present invention. In one embodiment, computing system400is representative of smart alert server112within computing environment100and/or computing environment200, in which case smart alert server112includes smart alert program300.

It should be appreciated thatFIG. 4provides only an illustration of one implementation and does not imply any limitations with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made.

Computing system400includes processor(s)402, cache406, memory404, persistent storage410, input/output (I/O) interface(s)412, communications unit414, and communications fabric408. Communications fabric408provides communications between cache406, memory404, persistent storage410, communications unit414, and input/output (I/O) interface(s)412. Communications fabric408can be implemented with any architecture designed for passing data and/or control information between processors (such as microprocessors, communications and network processors, etc.), system memory, peripheral devices, and any other hardware components within a system. For example, communications fabric408can be implemented with one or more buses or a crossbar switch.

Memory404and persistent storage410are computer readable storage media. In this embodiment, memory404includes random access memory (RAM). In general, memory404can include any suitable volatile or non-volatile computer readable storage media. Cache406is a fast memory that enhances the performance of processor(s)402by holding recently accessed data, and data near recently accessed data, from memory404.

Communications unit414, in these examples, provides for communications with other data processing systems or devices. In these examples, communications unit414includes one or more network interface cards. Communications unit414may provide communications through the use of either or both physical and wireless communications links. Program instructions and data used to practice embodiments of the present invention may be downloaded to persistent storage410through communications unit414.

I/O interface(s)412allows for input and output of data with other devices that may be connected to computer system400. For example, I/O interface(s)412may provide a connection to external device(s)416such as a keyboard, keypad, a touch screen, and/or some other suitable input device. External device(s)416can also include portable computer readable storage media such as, for example, thumb drives, portable optical or magnetic disks, and memory cards. Software and data used to practice embodiments of the present invention can be stored on such portable computer readable storage media and can be loaded onto persistent storage410via I/O interface(s)412. I/O interface(s)412also connect to display418.

Display418provides a mechanism to display or present data to a user and may be, for example, a computer monitor.

As used herein, a list of alternatives such as “at least one of A, B, and C” should be interpreted to mean “at least one A, at least one B, at least one C, or any combination of A, B, and C.”

Additionally, the phrase “based on” should be interpreted to mean “based, at least in part, on.”

The term “exemplary” means of or relating to an example and should not be construed to indicate that any particular embodiment is preferred relative to any other embodiment.