Patent Publication Number: US-9848063-B2

Title: Facilitating communication between smart object and application provider

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
     This application claims priority to U.S. Application No. 61/950,082, filed on Mar. 8, 2014, titled FACILITATING COMMUNICATION BETWEEN SMART OBJECT AND APPLICATION PROVIDER, the disclosure of which is hereby incorporated by reference in its entirety. 
    
    
     BACKGROUND 
     Many everyday objects now include network capabilities. For example, these objects may connect to a server on the Internet to record status information or measurements that relate to the object. Additionally, the objects can receive information, instructions, and new software from the server as well. For example, using this capability, a manufacturer may deploy a firmware upgrade for some of the objects without requiring any user interaction with the object by its owner. 
     Generally, these network-enabled objects generate machine-to-machine communication. That is, one machine, the object, communicates with another machine, the server. However, this machine-to-machine communication is only possible when the object and the server are able to connect to one another through a network. 
     SUMMARY 
     In general terms, this disclosure is directed to facilitating communication between a smart object and an application provider computing system. In one possible configuration and by non-limiting example, the smart object initially communicates with a first server computing device. The first server computing device identifies for the smart object an application provider computing device that can be used for subsequent communication. Various aspects are described in this disclosure, which include, but are not limited to, the following aspects. 
     One aspect is a method of establishing communication between a smart object and an application provider server computing device, the method comprising: sending a request from the smart object to a first server computing device; receiving, by the smart object, a response from the first server computing device, the response including a first identifier indicating the second server computing device; and establishing communication between the smart object and the second server computing device based upon the first identifier, wherein the second server computing device provides services associated with the smart object. 
     Another aspect is a smart object comprising: a functional object configured to perform a function; a sensor system configured to measure a property of the functional object; and a network communication engine comprising: a central processing unit that is configured to control the network communication engine; a computer readable data storage medium storing software instructions that, when executed by the central processing unit, cause the network communication engine to: send a request to a first server computing device, the request configured for identifying a second server computing device; receive a response from the first server computing device, the response including a first identifier indicating the second server computing device; and establish communication with the second server computing device based upon the first identifier, wherein the second server computing device provides services associated with the smart object. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  illustrates an exemplary embodiment of a system for communicating between a smart object and an application provider server computing device. 
         FIG. 2  illustrates an example architecture of a computing device. 
         FIG. 3  illustrates an example smart object. 
         FIG. 4  is a flowchart illustrating an example method of operating a network communication engine of the smart object of  FIG. 3 . 
         FIG. 5  is a schematic diagram of an example network communication engine of the smart object of  FIG. 3 . 
         FIG. 6  is a schematic diagram of an example manufacturer server communication engine. 
         FIG. 7  is an example identifier transmitted from a manufacturer server computing device to an identifier request engine. 
         FIG. 8  is a schematic diagram of an example application provider server communication engine. 
         FIG. 9  illustrates an example measurement data obtained at the smart object of  FIG. 3 . 
         FIG. 10  illustrates an exemplary manufacturer server computing device. 
         FIG. 11  is a flowchart illustrating an example method of operating an application server reference engine of the manufacturer server computing device of  FIG. 10 . 
         FIG. 12  illustrates an example priority list of application provider server computing devices with different priority. 
         FIG. 13  illustrates an exemplary application provider server computing device. 
         FIG. 14  illustrates an example measurement data stored in the application provider server computing device of  FIG. 13 . 
         FIG. 15  is a schematic view of an example dashboard provided by the application provider server computing device of  FIG. 13 . 
     
    
    
     DETAILED DESCRIPTION 
     Various embodiments will be described in detail with reference to the drawings, wherein like reference numerals represent like parts and assemblies throughout the several views. Reference to various embodiments does not limit the scope of the claims attached hereto. Additionally, any examples set forth in this specification are not intended to be limiting and merely set forth some of the many possible embodiments for the appended claims. 
     In general, the present disclosure describes systems and methods for facilitating communication between a device and an application provider server computing device. In some embodiments a manufacturer server computing device is used to facilitate the communication. In some embodiments, the device is a smart object that provides network-based monitoring or control capabilities. In at least some embodiments, a smart object is an appliance, such as a water heater, furnace, or garage door, that can be monitored or controlled from a network-based application provider server computing device. In at least some other embodiments, a smart object monitors and controls a light or another electronic device that is connected to a power outlet. There are many other embodiments of smart objects as well. 
     In at least some embodiments, a smart object transmits measurements or status information and other data to an application provider server computing device through a network. Additionally, in at least some embodiments, a smart object receives commands or instructions from the application provider server computing device through the network. For example, in at least some embodiments, the application provider server computing device is a cloud server and is connected to the smart object through the Internet. In at least some other embodiments, the smart object connects to a different type of application provider server computing device over a different network or combination of networks. 
     In at least some embodiments, the smart object connects to the network through a secure gateway. In at least some embodiments, the secure gateway is a device that connects two networks (e.g., a local area network and a wide area network). Some example embodiments of the secure gateway include Wi-Fi (IEEE 802.11a/b/g/n) and Bluetooth access points and routers. 
     Further, in some embodiments, the smart object does not initially have an identifier for an application provider server computing device, and, therefore, the smart object is not capable of identifying a desired application provider server computing device. In at least some embodiments, the manufacturer server computing device has an identifier for an application provider server computing device and provides the identifier to the smart object upon request from the smart object. 
     In at least some embodiments, the smart object sends a request to the manufacturer server computing device to obtain an identifier for a predetermined application provider server computing device. In some embodiments, the smart object first sends its serial number to the manufacturer server computing device. In at least some embodiments, the manufacturer server computing device sends back a response including the identifier, and the smart object receives, and stores, the identifier. The smart objects then establishes connection with the application provider server computing device, using the identifier stored therein. In at least some embodiments, the identifier includes a URL and/or API key for an application provider server computing device. 
     In at least some embodiments, the smart object sends a descriptor thereof to the application provider server computing device. In at least some embodiments, the smart object periodically sends the descriptor to the application provider server computing device. In some embodiments, such a descriptor of the smart object includes a list and/or type of sensors, data collected by the sensors, and/or controls available on the application provider server computing device. The application provider server computing device receives, and stores, the descriptor of the smart object. In at least some embodiments, the application provider server computing device replies back and sends a web service descriptor for identifying applications or services that the application provider server computing device provides to consumers. In at least some embodiments, the application provider server computing device uses the smart object descriptor to provide various internet services or applications for consumers. In some embodiments, the consumers are the manufacturer of the smart object and/or consumers of the smart object. 
     In at least some embodiments, the internet services provided by the application provider server computing device include generating a dashboard identifying the smart object, presenting data transmitted from the smart object, and providing control options for interacting with the smart object. In some embodiments, when a consumer manipulates the control options to interact with the smart object, the application provider server computing device translates the consumer&#39;s actions to commands based upon the descriptor of the smart object and sends the commands to the smart object. In at least some embodiments, the commands are implemented by XML. 
     In at least some embodiments, the smart object periodically checks with the manufacturer server computing device and updates the identifier for the application provider server computing device. Thus, by changing the identifier stored in the manufacturer server computing device, it is possible to direct the smart object to refer to a different application provider server computing device. 
     In at least other embodiments, if the current application provider server computing device becomes invalid, thereby disallowing the smart object access thereto, the smart object can send a request to the manufacturer server computing device to obtain another identifier for a different application provider server computing device. Then, the smart object receives a second identifier for a second application provider server computing device from the manufacturer server computing device. In some embodiments, the manufacturer server computing device has a list of application provider server computing devices with different priority. 
       FIG. 1  illustrates an exemplary embodiment of a system  100  for communicating between a smart object and an application provider server computing device. The system  100  includes a smart object  102 , a manufacturer server computing device  104 , an application provider server computing device  106 , a local gateway  108 , and a network  110 . 
     The smart object  102  is a device that operates to perform a predetermined function as well as interact with the application provider server computing device  106 . The manufacturers or distributors that produce a device may want to equip the smart object  102  with various functions, such as remote controlling and remote monitoring. Thus, the manufacturers or distributors may produce a smart object  102  that can interact with the application provider server computing device  106 . 
     The smart object  102  can be of any type. In at least some embodiments, the smart object  102  is used in a residential, commercial, or industrial environment. In at least some other embodiments, the smart object  102  is used in a different environment. Examples of the smart object  102  include, but not limited to, a water heater, furnace, or garage door. 
     In at least some embodiments, the smart object  102  transmits information to and receives information from the application provider server computing device  106  through the network  110 . For example, in at least some embodiments, the smart object  102  transmits measurements or status information to the application provider server computing device  106  and receives instructions from the application provider server computing device  106 . 
     In at least some embodiments, the smart object  102  is also configured to communicate with the manufacturer server computing device  104  through the network  110  to obtain an identifier for a predetermined application provider server computing device  106  with which the smart object  102  will communicate. 
     The manufacturer server computing device  104  operates to identify an application provider server computing device  106  to which the smart object  102  must be connected. In at least some embodiments, the manufacturer server computing device  104  sends an identifier for an application provider server computing device  106  to the smart object  102  upon request from the smart object  102 . 
     In at least some embodiments, the manufacturer server computing device  104  is owned and/or operated by the same manufacturer or distributor that produces or distributes the smart objects  102  to consumers. Ownership and operation of the manufacturer server computing device  104  may also be by an entity other than the manufacturer in some embodiments. In some embodiments, the consumers are the manufacturer or distributor of the smart object. In other embodiments, the consumers are end-users or consumers of the smart object. 
     The application provider server computing device  106  interacts with the smart object  102  and provides one or more internet services and/or applications to the consumers. In at least some embodiments, the application provider server computing device  106  generates a dashboard that allows the consumers to identify the smart object  102 , track data obtained at the smart objects  102 , and instruct different operations of the smart object  102 . In at least some embodiments, the consumers interact with the smart object  102  on personal computers or other computing devices, such as desktop computers, laptops, smartphones, tablets or other hand-held devices. 
     The local gateway  108  is a device that provides access to at least one of the manufacturer server computing device  104  and the application provider server computing device  106  through the network  110 . In at least some embodiments, the local gateway  108  generates a secure wireless local area network and connects that wireless local area network to the network  110 . In at least some embodiments, the local gateway  108  is a wireless router. Examples of wireless routers include the Linksys WRT54GL Wireless-G router from Linksys of Irvine, Calif. Other embodiments of the local gateway  108  are possible as well. For example, the local gateway can include a cellular communication device, an Ethernet communication device, or a variety of other communication devices. Some embodiments include multiple communication devices. 
     The network  110  communicates digital data between one or more computing devices, such as between the manufacturer server computing device  104  and the smart object  102  and between the application provider server computing device  106  and the smart object  102 . Examples of the network  110  include a local area network and a wide area network, such as the Internet. 
     In some embodiments, the network  110  includes a wireless communication system, a wired communication system, or a combination of wireless and wired communication systems. A wired communication system can transmit data using electrical or optical signals in various possible embodiments. Wireless communication systems typically transmit signals via electromagnetic waves, such as in the form of optical signals or radio frequency (RF) signals. A wireless communication system typically includes an optical or RF transmitter for transmitting optical or RF signals, and an optical or RF receiver for receiving optical or RF signals. Examples of wireless communication systems include Wi-Fi communication devices (such as utilizing wireless routers or wireless access points), cellular communication devices (such as utilizing one or more cellular base stations), and other wireless communication devices. 
       FIG. 2  illustrates an exemplary architecture of a computing device that can be used to implement aspects of the present disclosure, including the smart object  102 , the manufacturer server computing device  104 , the application provider server computing device  106 , and the local gateway  108  and will be referred to herein as the computing device  118 . One or more computing devices, such as the type illustrated in  FIG. 2 , are used to execute the operating system, application programs, and software modules (including the software engines) described herein. 
     The computing device  118  includes, in at least some embodiments, at least one processing device  120 , such as a central processing unit (CPU). A variety of processing devices are available from a variety of manufacturers, for example, Intel or Advanced Micro Devices. In this example, the computing device  118  also includes a system memory  122 , and a system bus  124  that couples various system components including the system memory  122  to the processing device  120 . The system bus  124  is one of any number of types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. 
     Examples of computing devices suitable for the computing device  118  include a desktop computer, a laptop computer, a tablet computer, a mobile phone device such as a smart phone, or other devices configured to process digital instructions. 
     The system memory  122  includes read only memory  126  and random access memory  128 . A basic input/output system  130  containing the basic routines that act to transfer information within computing device  118 , such as during start up, is typically stored in the read only memory  126 . 
     The computing device  118  also includes a secondary storage device  132  in some embodiments, such as a hard disk drive, for storing digital data. The secondary storage device  132  is connected to the system bus  124  by a secondary storage interface  134 . The secondary storage devices and their associated computer readable media provide nonvolatile storage of computer readable instructions (including application programs and program modules), data structures, and other data for the computing device  118 . 
     Although the exemplary environment described herein employs a hard disk drive as a secondary storage device, other types of computer readable storage media are used in other embodiments. Examples of these other types of computer readable storage media include magnetic cassettes, flash memory or other solid state memory technology, digital video disks, Bernoulli cartridges, compact disc read only memories, digital versatile disk read only memories, random access memories, or read only memories. Some embodiments include non-transitory media. 
     A number of program modules can be stored in a secondary storage device  132  or a memory  122 , including an operating system  136 , one or more application programs  138 , other program modules  140 , and program data  142 . The data used by the computing device  118  may be stored at any location in the memory  122 , such as the program data  142 , or at the secondary storage device  132 . 
     In some embodiments, computing device  118  includes input devices  144  to enable the caregiver to provide inputs to the computing device  118 . Examples of input devices  144  include a keyboard  146 , pointer input device  148 , microphone  150 , and touch sensor  152 . A touch-sensitive display device is an example of a touch sensor. Other embodiments include other input devices  144 . The input devices are often connected to the processing device  120  through an input/output interface  154  that is coupled to the system bus  124 . These input devices  144  can be connected by any number of input/output interfaces, such as a parallel port, serial port, game port, or a universal serial bus. Wireless communication between input devices  144  and interface  154  is possible as well, and includes infrared, BLUETOOTH® wireless technology, 802.11a/b/g/n, cellular or other radio frequency communication systems in some possible embodiments. 
     In this example embodiment, a touch sensitive display device  156  is also connected to the system bus  124  via an interface, such as a video adapter  158 . In some embodiments, the display device  156  is a touch sensitive display device. A touch sensitive display device includes sensor for receiving input from a user when the user touches the display or, in some embodiments, or gets close to touching the display. Such sensors can be capacitive sensors, pressure sensors, optical sensors, or other touch sensors. The sensors not only detect contact with the display, but also the location of the contact and movement of the contact over time. For example, a user can move a finger or stylus across the screen or near the screen to provide written inputs. The written inputs are evaluated and, in some embodiments, converted into text inputs. 
     In addition to the display device  156 , the computing device  118  can include various other peripheral devices (not shown), such as speakers or a printer. 
     When used in a local area networking environment or a wide area networking environment (such as the Internet), the computing device  118  is typically connected to the network through a network interface, such as a wireless network interface  160 . Other possible embodiments use other communication devices. For example, some embodiments of the computing device  118  include an Ethernet network interface, or a modem for communicating across the network. 
     The computing device  118  typically includes at least some form of computer-readable media. Computer readable media includes any available media that can be accessed by the computing device  118 . By way of example, computer-readable media include computer readable storage media and computer readable communication media. 
     Computer readable storage media includes volatile and nonvolatile, removable and non-removable media implemented in any device configured to store information such as computer readable instructions, data structures, program modules, or other data. Computer readable storage media includes, but is not limited to, random access memory, read only memory, electrically erasable programmable read only memory, flash memory or other memory technology, compact disc read only memory, digital versatile disks or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information and that can be accessed by the computing device  118 . 
     Computer readable communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” refers to a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, computer readable communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency, infrared, and other wireless media. Combinations of any of the above are also included within the scope of computer readable media. 
       FIG. 3  illustrates an exemplary smart object  102 . In at least some embodiments, the smart object  102  includes a functional object  210 , a sensor system  212 , and a network connection device  214 . In at least some embodiments, the network connection device  214  includes a network communication engine  216 , a status device  218  and a control device  220 . 
     The functional object  210  is an object that performs a function. In at least some embodiments, the functional object  210  performs a function in a residential, commercial, industrial, natural, healthcare, or military environment. In at least some other embodiments, the functional object  210  performs in other environments. Examples of functional object  210  include water heaters, furnaces, electrical outlets, garage doors, trash compactors, refrigerators, air conditioners, animal traps, and medical devices. There are many other embodiments of the functional object  210  as well. 
     The sensor system  212  comprises one or more sensors configured to measure a property or status of the functional object  210 . In at least some embodiments, the sensors are a component of the functional object  210 . In at least some other embodiments, the sensors are external to the functional object  210  and measure properties or status that is not normally otherwise measured by the functional object  210 . In at least some embodiments, the sensor system  212  monitors a temperature, humidity, pressure, and/or status (e.g., on/off) of the functional object  210 . Other embodiments of the sensor system  212  are possible as well. 
     The network connection device  214  is a device that is configured to connect to, and communicate with, the manufacturer server computing device  104  and/or the application provider server computing device  106  through the network  110 . In at least some embodiments, the network connection device  214  is a computing device. 
     The network communication engine  216  operates to connect to the network  110  through the local gateway  108  as well as to communicate with the manufacturer server computing device  104  and/or the application provider server computing device  106 . 
     The status device  218  operates to indicate a status of the network connection device  214 . In at least some embodiments, the status device  218  is controlled by the network communication engine  216  to indicate a network communication status. For example, in at least some embodiments, the status device  218  indicates that the network communication engine  216  is connected to the manufacturer server computing device  104  and/or the application provider server computing device  106  through the local gateway  108 . Additionally, in at least some embodiments, the status device  218  operates to indicate an error condition in the network communication engine  216 . 
     In at least some embodiments, the status device  218  comprises one or more devices that emit light. For example, in at least some embodiments, the status device  218  comprises one or more light-emitting diodes (LED). In at least some embodiments, the status device  218  operates to emit light a different character (e.g., a different intensity or different color) depending on whether the network communication engine  216  maintains a valid connection to the application provider server computing device  106 . Additionally, in at least some embodiments, the status device  218  emits light of yet a different character to indicate an error condition in the network communication engine  216 . 
     In at least some other embodiments, the status device  218  emits an audible sound to indicate at least some statuses of the network communication engine  216 . For example, in at least some embodiments, the status device  218  emits a beep to indicate that the network communication engine  216  has successfully connected to the application provider server computing device  106 . As another example, in at least some embodiments, the status device  218  emits multiple beeps to indicate that the network communication engine  216  has lost connection to the application provider server computing device  106 . 
     Other embodiments of the status device  218  indicate a status in other ways as well. However, at least some embodiments of the network connection device  214  do not include the status device  218 . 
     The control device  220  operates to receive an input from external to the network connection device  214 . In at least some embodiments, the network communication engine  216  is configured to perform a certain action in response to the control device  220  receiving an input. For example, in at least some embodiments, the network connection device  214  is configured to communicate with the manufacturer server computing device  104  to obtain the identifier for an application provider server computing device  106  when the control device  220  receives an input. 
     In at least some embodiments, the control device  220  comprises one or more buttons or switches. Other embodiments of the control device  220  receive input in other ways as well. However, at least some embodiments of the network connection device  214  do not include the control device  220 . 
       FIG. 4  is a flowchart illustrating an example method  222  of operating the network communication engine  216 . In this example, the method  222  includes operations  224 ,  226 ,  228 ,  230 ,  232  and  234 . In some embodiments, the method  222  includes operations performed by a processor (such as the processing device  120 , shown in  FIG. 2 ). As used herein, methods include actions or operations that are performed by a user or executed by a computer, or combinations thereof. In some embodiments, information or data in the method  222  is transmitted over a HTTP or HTTPS protocol. For example, in at least some embodiments, such information or data is transmitted over HTTPS as an extensible markup language (XML) file. 
     At the operation  224 , the network communication engine  216  sends a request to the manufacturer server computing device  104  to identify an application provider server computing device  106  with which the smart object  102  will subsequently communicate. In at least some embodiments, the network communication engine  216  establishes communication with the manufacturer server computing device  104  by using an identifier of the manufacturer server computing device  104 . Such an identifier of the manufacturer server computing device  104  is stored in the storage device of the smart object  102 . 
     In at least some embodiments, with the request, the network communication engine  216  transmits an identification number or serial number associated with the smart object  102  to the manufacturer server computing device  104 . In at least some embodiments, the manufacturer server computing device  104  registers the smart object  102  after receiving the identification number. Further, in at least some embodiments, the manufacturer server computing device  104  looks up information, such as an owner and a location, using the identification number. 
     At the operation  226 , the network communication engine  216  receives a response from the manufacturer server computing device  104 . In at least some embodiments, the response includes an identifier for the appropriate application provider server computing device  106 . In at least some embodiments, the identifier is stored in a storage device, such as the memory  122  or the secondary storage device  132 , shown in  FIG. 2 . In at least some embodiments, the network communication engine  216  receives a URL and/or API key, as an identifier, associated with the application provider server computing device  106  to which the smart object  102  must be connected. In at least some embodiments, the API key is unique to each application provider server computing device  106 . In at least some embodiments, the URL and API key are stored in a storage device (such as the memory  122 ) of the smart object  102 . 
     At the operation  228 , in at least some embodiments, it is determined whether the application provider server computing device  106  identified by the manufacturer server computing device  104  is accessible by the smart object  102 . 
     If the smart object  102  attempts, but fails to connect to the application provider server computing device  106 , the method  222  continues to the operation  230 . 
     At the operation  230 , the network communication engine  216  sends another request to the manufacturer server computing device  104  for obtaining an identifier for a different application provider server computing device  106 . Then, the method  222  repeats the operation  226 . 
     If the smart object  102  is able to connect to the application provider server computing device  106  based upon the identifier sent from the manufacturer server computing device  104 , the method  222  continues to the operation  232 . 
     At the operation  232 , the network communication engine  216  establishes connection to the application provider server computing device  106 . In at least some embodiments, the network communication engine  216  transmits measurements or status information and other data to the application provider server computing device  106  through the network  110 . Additionally, in at least some embodiments, the network communication engine  216  receives commands or instructions from the application provider server computing device  106  through the network  110 . 
     In at least some embodiments, the network communication engine  216  sends a smart object descriptor thereof to the application provider server computing device  106 . In some embodiments, such a smart object descriptor includes a list and/or type of sensors, data collected by the sensors, and/or controls available on the application provider server computing device  106 . The application provider server computing device  106  receives the smart object descriptor and refers to it to provide various internet services for consumers. 
     In at least some embodiments, the network communication engine  216  receives a web service descriptor that identifies services that the application provider server computing device provides to consumers. 
     At the operation  234 , in at least some embodiments, the network communication engine  216  checks the validity of the application provider server computing device  106 . In at least some embodiments, the network communication engine  216  checks with the manufacturer server computing device  104  to see if the application provider server computing device  106  needs to be disconnected or replaced and, thus, the smart object  102  should refer to a different application provider server computing device  106 . In at least some embodiments, the network communication engine  216  periodically checks with the manufacturer server computing device  104  and updates the identifier for the application provider server computing device  106 . 
     In at least some embodiments, the network communication engine  216  sends a request to the manufacturer server computing device  104  to check the validity of the application provider server computing device  106 . In some embodiments, the method  222  simply proceeds to the operation  224  and performs subsequent operations  226 ,  228 ,  230 , and  232 . For example, the network communication engine  216  sends a request to the manufacturer server computing device  104 , and the network communication engine  216  receives a new identifier. If the new identifier is the same as the current one, the smart object  102  continues to communicate with the same application provider server computing device  106 . If not, the smart object  102  is connected to a different application provider server computing device  106  associated with the new identifier. 
     If the current application provider server computing device  106  is determined to remain valid (for example, if the new identifier is the same as the current identifier), the network communication engine  216  continues to communicate with the application provider server computing device  106  (the operation  232 ). If not, the network communication engine  216  receives another identifier for a different application provider server computing device  106  (the operation  226 ). 
     In at least other embodiments, if the current application provider server computing device  106  becomes invalid, thereby disallowing the network communication engine  216  to access thereto, the network communication engine  216  can send a request to the manufacturer server computing device  104  to obtain another identifier for a different application provider server computing device  106 . Then, the network communication engine  216  receives a second identifier for a second application provider server computing device  106  from the manufacturer server computing device  104 . In some embodiments, to perform this operation, the manufacturer server computing device  104  has a list of application provider server computing devices with different priority. 
       FIG. 5  is a schematic diagram of the network communication engine  216  of the network connection device  214 . In at least some embodiments, the network communication engine  216  includes a manufacturer server communication engine  240 , an application provider server communication engine  242 , and a storage device  244 . 
     The manufacturer server communication engine  240  operates to communicate with the manufacturer server computing device  104 . In at least some embodiments, the smart object  102  does not initially include an identifier that determines an application provider server computing device  106  with which the smart object  102  will communicate. In these cases, the manufacturer server computing device  104  stores the identifier and provides it to the smart object  102  to allow the smart object  102  to contact the application provider server computing device  106 . Therefore, in at least some embodiments, the manufacturer server communication engine  240  is configured to communicate with the manufacturer server computing device  104  to identify an application provider server computing device  106  to which the smart object  102  will subsequently connect to and communicate with through the network  110 . An example of the manufacturer server communication engine  240  is described in further detail with reference to  FIGS. 6 and 7 . 
     The application provider server communication engine  242  operates to communicate with the application provider server computing device  106 . In at least some embodiments, the application provider server communication engine  242  transmits measurements of status information and/or other data obtained at the smart object  102  to the application provider server computing device  106 . In addition, in at least some embodiments, the application provider server communication engine  242  receives commands or instructions from the application provider server computing device  106 . An example of the application provider server communication engine  242  is described in further detail with reference to  FIG. 8 . 
     The storage device  244  operates to store different pieces of information or data that is either obtained from or sent to the manufacturer server communication engine  240  and/or the application provider server communication engine  242 , and may also store any other data generated by or received by the smart object  102 , such as data from the sensor system  212  ( FIG. 3 ). In at least some embodiments, an example or the storage device  244  is the memory  122  and/or the secondary storage device  132 , as shown in  FIG. 2 . 
     In at least some embodiments, the storage device  244  stores information on the smart object  102 , such as a serial number or identification number, type and/or other properties. In addition, at least some embodiments, the storage device  244  stores data collected by the sensor system  212 . Also, at least some embodiments, the storage device  244  includes an identifier for an application provider server computing device  106 , which is received from the manufacturer server computing device  104  upon request of the smart object  102 . Further, at least some embodiments, the storage device  244  stores a web service descriptor transmitted from the application provider server computing device  106 . An example of data stored in the storage device  244  is described below with reference to  FIG. 9 . 
       FIG. 6  is a schematic diagram of an example manufacturer server communication engine  240  of  FIG. 5 . In at least some embodiments, the manufacturer server communication engine  240  includes an identifier request engine  248 . In at least some embodiments, the identifier request engine  248  includes an identifier checking engine  250 . 
     The identifier request engine  248  operates to send the manufacturer server computing device  104  a request for an identifier for an application provider server computing device  106  with which the smart object  102  will communicate. In addition, in at least some embodiments, the identifier request engine  248  receives a response including the identifier from the manufacturer server computing device  104 . 
     In at least some embodiments, the identifier request engine  248  reads the serial number of the smart object  102  from the storage device  244  and sends the serial number to the manufacturer server computing device  104  with a request for an identifier. In addition, in at least some embodiments, the identifier request engine  248  receives the identifier from the manufacturer server computing device  104  and stores it in the storage device  244 . 
     In at least some embodiments, the identifier includes a URL of the application provider server computing device  106  for the smart object  102 . In addition, or alternatively, in at least some embodiments, the identifier includes an API key for the application provider server computing device  106 . 
     In at least some embodiments, the identifier checking engine  250  of the identifier request engine  248  operates to check with the manufacturer server computing device  104  to update the identifier. Thus, when the identifier stored in the manufacturer server computing device  104  is modified for some reasons, the identifier check engine  250  recognizes the modified identifier, thereby leading the smart object  102  to refer to a different application provider server computing device  106  that is represented by the modified identifier. As such, a consumer, such as the manufacturer or distributor of the smart object  102 , or a consumer or end-user of the smart object  102 , need not modify or update the configuration of the smart object  102  when it is necessary to replace or disconnect the current application provider server computing device  106 . The manufacturer or distributor of the smart object  102  is only required to update the manufacturer server computing device  104  that is controlled or operated by the manufacture or distributor. 
     In at least some embodiments, the identifier checking engine  250  is periodically operated. In at least other embodiments, the identifier checking engine  250  is operated when requested by the consumer, such as a manufacturer, distributor, end-user, and/or consumer of the smart object  102 . 
       FIG. 7  is an example identifier  252  that the identifier request engine  248  receives from the manufacturer server computing device  104 . In at least some embodiments, the identifier  252  includes a Uniform Resource Locator (URL) and an Application Programming Interface (API) key of an application provider server computing device  106  with which the smart object  102  will communicate. In some embodiments the API key is provided for communication involving the HTTP communication protocol. In at least other embodiments, the identifier  252  can be of other types suitable for the smart object  102  to identify a predetermined application provider server computing device  106 . 
     In some embodiments the URL includes an Internet address for the application provider server computing device. An example of a URL is www.example.com. 
     In some embodiments, the API key is provided. As one example, the API key is an identifier, such as an authentication key, for using an application programming interface provided by the application server computing device. In at least some embodiments, the API key also identifies the vendor, model, and serial number of the device that is using it. In at least some embodiments, the API key is temporary and can be regenerated and re-shared between the application provider server computing device, the manufacturer server computing device, and the smart object without disrupting the flow of data. 
       FIG. 8  is a schematic diagram of an example application provider server communication engine  242  of  FIG. 5 . In at least some embodiments, the application provider server communication engine  242  includes an application server search engine  256 , a data interface engine  258 , and an alternative application server search engine  260 . 
     The application server search engine  256  operates to establish connection to the application provider server computing device  106 , using the identifier stored in the storage device  244 . 
     In at least some embodiments, the application server search engine  256  sends a descriptor of the smart object  102  to the application provider server computing device  106 . In at least some embodiments, the descriptor of the smart object includes a list and/or type of sensors, data collected by the sensors, and/or controls available on the application provider server computing device. The smart object descriptor is used at the application provider server computing device  106  to provide various internet services for consumers. In at least some embodiments, the application server search engine  256  periodically sends the descriptor to the application provider server computing device  106 . 
     In at least some embodiments, the application server search engine  256  receives a web service descriptor from the application provider server computing device  106  and stores it in the storage device  244 . In at least some embodiments, the web service descriptor is used at the data interface engine  258  to identify internet services or applications provided by the application provider server computing device  106  and to selectively send data required for the services to the application provider server computing device  106 . 
     The data interface engine  258  operates to transmit measurements and status information to the application provider server computing device  106 . For example, in at least some embodiments, the data interface engine  258  transmits measurements recorded by the sensor system  212  to the application provider server computing device  106 . In at least some embodiments, the data interface engine  258  periodically sends the measurement and status information to the application provider server computing device  106 . 
     Additionally, in at least some embodiments, the data interface engine  258  operates to receive commands or instructions and data from the application provider server computing device  106 . 
     The alternative application server search engine  260  operates to find a different application provider server computing device  106  if the current application provider server computing device  106  becomes invalid and denies access from the smart object  102  for some reasons. In at least some embodiments, the alternative application server search engine  260  communicates with the manufacturer server computing device  104  through the manufacturer server communication engine  240 , which sends a request to the manufacturer server computing device  104  to obtain another identifier for a different application provider server computing device  106 . In at least some embodiments, such an alternative application provider server computing device  106  is determined based upon a list of application provider server computing devices with different priority, which can be stored in the manufacturer server computing device  104  ( FIG. 12 ). 
       FIG. 9  illustrates an example measurement data  262  obtained by the sensor system  212  and stored in the storage device  244  of the smart object  102 . In at least some embodiments, the measurement data  262  is represented by a data table  264 . 
     In a non-limiting example, the data table  264  shows the variation of temperature and humidity of the smart object  102  with respect to time. The type of data detected by the sensor system  212  can be varied according to various factors, such as, but not limited to, the type of the smart object  102  and/or the sensors embedded in the smart object  102 . 
       FIG. 10  illustrates an exemplary manufacturer server computing device  104 . In at least some embodiments, the manufacturer server computing device  104  includes a network communication engine  272  and an application server reference engine  274 . 
     The network communication engine  272  operates to connect to the smart object  102  through the network  110 . In at least some embodiments, the network communication engine  272  is connected to the network communication engine  216  of the smart object  102 . 
     The application server reference engine  274  operates to provide the smart object  102  with the identifier for a proper application provider server computing device  106 . In at least some embodiments, when the smart object  102  sends the manufacturer server computing device  104  a request for an identifier for an application provider server computing device  106 , the application server reference engine  274  returns a response including the identifier for an application provider server computing device  106  with which the smart object  102  will communicate. 
     In at least some embodiments, when the smart object  102  sends its serial number to the manufacturer server computing device  104  with a request for an identifier, the application server reference engine  274  verifies the smart object  102  with the serial number and determines a proper application provider server computing device  106  for the smart object  102 . In at least some embodiments, the manufacturer or distributor of the smart object  102  can access the manufacturer server computing device  104  to modify an identifier that is to be assigned to a particular smart object  102 . 
     In at least some embodiments, the application server reference engine  274  includes a priority list  281  of application provider server computing devices  106  for a particular smart object  102  with different priority. The priority list  281  is described below with reference to  FIG. 12 . 
       FIG. 11  is a flowchart illustrating an example method  275  of operating the application server reference engine  274  of  FIG. 10 . In this example, the method  275  includes operations  276 ,  278  and  280 . In some embodiments, the method includes operations that are performed by a processor (such as the processing device  120 , shown in  FIG. 2 ). As used herein, methods include actions or operations that are performed by a user or executed by a computer, or combinations of these. In some embodiments, information or data in the method  222  is transmitted over a HTTP or HTTPS protocol. For example, in at least some embodiments, such information or data is transmitted over HTTPS as an extensible markup language (XML) file. 
     At the operation  276 , the application server reference engine  274  receives a request from the smart object  102  for identifying an application provider server computing device  106  suitable for the smart object  102 . In at least some embodiments, the smart object  102  sends the ID or serial number to the application server reference engine  274  over using a web service provided by the manufacturer server computing device  104 . For example, in at least some embodiments, the smart object  102  transmits the ID or serial number using a HTTP POST or HTTP GET request. 
     At the operation  278 , the application server reference engine  274  identifies a record associated with the smart object  102  using the ID or serial number that was received in the operation  276 . In at least some embodiments, the application server reference engine  274  identifies the record associated with the smart object  102  by querying a database for smart object records with the specified ID or serial number. However, other embodiments are possible as well. 
     At the operation  280 , the application server reference engine  274  returns a response including the identifier for an application provider server computing device  106  with which the smart object  102  will communicate. In at least some embodiments, the identifier includes a URL and API key of the application provider server computing device  106 . 
       FIG. 12  illustrates an example priority list  281  of application provider server computing devices  106  with different priority. In at least some embodiments, the priority list  281  shows different levels of priority and a plurality of application provider server computing devices  106  associated with each level of priority. 
     The priority list  281  operates to represent the order of application provider server computing devices  106  when a prior application provider server computing device  106  is unavailable or inappropriate for the smart object  102 . For example, if the smart object  102  fails to access application provider server computing device A, the smart object  102  sends a request for another application provider server computing device, and the manufacturer server computing device  104  (for example, the application server reference engine  274 ) determines from the priority list  281  that application provider server computing device B should be assigned to the smart object  102 , and responds to the request with the identifier (such as URL and/or API key) for application provider server computing device B. 
       FIG. 13  illustrates an exemplary application provider server computing device  106 . In at least some embodiments, the application provider server computing device  106  includes a network communication engine  282 , a data interface engine  284  and a service implementation engine  286 . 
     The network communication engine  282  operates to connect to the smart object  102  through the network  110 . In at least some embodiments, the network communication engine  282  is connected to the network communication engine  216  of the smart object  102 . 
     In as least some embodiments, the network communication engine  282  receives a descriptor of the smart object  102  and stores it in the storage device of the application provider server computing device  106 . As described above, the descriptor of the smart object includes a list and/or type of sensors, data collected by the sensors, and/or controls available on the application provider server computing device. In at least some embodiments, the smart object descriptor is used at the service implementation engine  286  to provide various internet services for consumers, such as to generate a dashboard  300  ( FIG. 15 ) identifying the smart object  102  and control interfaces, such as buttons, text inputs and graphs, to allow consumers to interact with the smart object  102 . 
     In addition, in at least some embodiments, the network communication engine  282  sends a web service descriptor to the smart object  102  to inform the smart object  102  of a list, nature, and/or type of internet services provided by the application provider server computing device  106 . In at least some embodiments, based upon the web service descriptor received, the smart object  102  sends measurement and/or status information required for providing the internet services as intended by the application provider server computing device  106 . 
     The data interface engine  284  operates to receive measurements and status information of the smart object  102  from the smart object  102 . In at least some embodiments, the data interface engine  284  communicates with the data interface engine  258  of the smart object  102  and receives measurements recorded by the sensor system  212  of the smart object  102 . In at least some embodiments, the smart object  102  sends measurements or status updates according to the smart object descriptor to the data interface engine  284 . Then, the data interface engine  284  operates to translate the received data based upon the smart object descriptor and uses the translated data for internet services. For example, as discussed below, the service implementation engine  286  can update representations in a dashboard  300  ( FIG. 15 ) to reflect the updated measurements or status. 
     Additionally, in at least some embodiments, the data interface engine  284  operates to send commands or instructions and data from the application provider server computing device  106  to the smart object  102  (for example, the data interface engine  258  of the smart object  102 ). As described below, in at least some embodiments, the application provider server computing device  106  provides a dashboard  300  ( FIG. 15 ) including a user interface for receiving control commands or instructions from a consumer who wants to control the smart object  102 . Thus, in at least some embodiments, when the consumer selects one or more control options on the dashboard  300 , the data interface engine  284  translates the consumer&#39;s action to commands based upon the smart object descriptor and sends the commands to the smart object  102 . In at least some embodiments, the commands are implemented in XML. 
     The service implementation engine  286  operates to provide various internet services to consumers. In providing the internet services, the service implementation engine  286  refers to the smart object descriptor received by the network communication engine  282  and uses the measurement and/or status information associated with the smart object  102 , which is received by the data interface engine  284 . 
     In at least some embodiments, the internet services include a dashboard accessible by a consumer, such as a manufacturer or distributor or a consumer or end-user. An example of the dashboard is described in further detail with reference to  FIG. 15 . 
       FIG. 14  illustrates an example measurement data  290  received from the smart object  102  and stored in a storage device (such as the memory  122  and/or the secondary storage device  132 , shown in  FIG. 2 ) of the application provider server computing device  106 . In at least some embodiments, the measurement data  290  is represented by a plurality of data tables  292  when the application provider server computing device  106  communicates with a plurality of smart objects  102 . 
     In at least some embodiments, each of the data tables  292  represents the measurements from each smart object  102 . By way of example, in a non-limiting example, the data tables  292  show the variation of temperature and humidity of the smart object  102  with respect to time. The type of data detected by the sensor system  212  can be varied according to various factors, such as, but not limited to, the type of the smart object  102  and/or the sensors embedded in the smart object  102 . 
       FIG. 15  is a schematic view of an example dashboard  300  provided by the application provider server computing device  106 . 
     The dashboard  300  is configured to allow consumers to monitor, and/or control, the measurements and/or status of the smart object  102 . In at least some embodiments, the dashboard  300  provides a visual representation of the measurement and/or status associated with the smart object  102 . In at least other embodiments, the dashboard  300  also provides a user interface that allows a consumer to input various instructions to control the smart object  102 . Examples of such control include turning on/off of the smart object  102  or of a particular sensor system  212  thereof. 
     The dashboard  300  can be of any type. For example, the dashboard  300  is implemented as a stand-alone software application, a web-browser based application, or a desktop application. 
     In at least some embodiments, the dashboard  300  includes a parameter display window  302 , a smart object selection window  304 , and a command selection window  306 . 
     In at least some embodiments, the parameter display window  302  operates to display the measurements obtained at the smart object  102  and/or the status of the smart object  102 . In the depicted, non-limiting example, the parameter display window  302  indicates that the status of the smart object  1  is turned on, and displays the visual representations of the temperature and humidity at the smart object  102 . 
     In at least some embodiments, the smart object selection window  304  operates to allow a consumer to select different smart objects with which the consumer wants to interact. 
     In at least some embodiments, the command selection window  306  operates to provide the consumer with various control options for interacting with the smart object  102 . For example, the command selection window  306  provides a user interface that allows the consumer to select commands or instructions as the consumer wants. 
     In at least other embodiments, the dashboard  300  can provide other windows for interacting with the smart object  102 . Further, the arrangement of the windows is not limited to the depicted example herein, and can be varied to meet different technical demands and/or consumer&#39;s needs. 
     The various embodiments described above are provided by way of illustration only and should not be construed to limit the claims attached hereto. Those skilled in the art will readily recognize various modifications and changes that may be made without following the example embodiments and applications illustrated and described herein, and without departing from the true spirit and scope of the following claims.