Explicit Interaction Contract for Network-Connected Devices

By introducing explicit interactive contracts and software service matching mechanisms in computer systems, the interoperability problem between IoT devices and software solutions backends is solved, and the ability to adapt to different device types is achieved faster, reducing development time and workload.

CN113039768BActive Publication Date: 2025-06-10MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN201980075504.0
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2018-11-15
Filing Date
2019-11-05
Publication Date
2025-06-10
Estimated Expiration
2039-11-05

AI Technical Summary

Technical Problem

In the prior art, the development of software solution backends for Internet of Things (IoT) devices has interoperability problems between device code and software solution backend, resulting in increased development time and increased workload. At the same time, existing software solutions are usually only applicable to specific device types, making it difficult to quickly adapt to other IoT device types.

Method used

A computer system is provided, including a processor, which is configured to store multiple software interfaces that define an explicit interaction contract between a network connection device and a software service. The processor executes multiple software services, each software service defining one or more software interfaces operated by the software service. According to the instructions of the software interface implemented by the network-connected device, the appropriate software service is selected and the selected software service is used to process the data or send commands according to the explicit interaction contract.

Benefits of technology

Through the matching mechanism of explicit interactive contracts and software services, interoperability between IoT devices and software services is simplified, development time and workload is reduced, and software solutions can adapt to different types of IoT devices more quickly.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113039768B_ABST
    Figure CN113039768B_ABST
Patent Text Reader

Abstract

A computer system is provided. The computer system includes one or more processors configured to store a plurality of software interfaces that define explicit interaction contracts between network-connected devices and software services. The one or more processors are configured to execute a plurality of software services. Each software service defines one or more software interfaces operated by the software service. The one or more processors are configured to receive, from a network-connected device, a list of one or more software interfaces implemented by the network-connected device, select one or more software services based on a match between the one or more software interfaces implemented by the network-connected device and the one or more software interfaces operated by the plurality of software services, and use the selected software services to process data received from the network-connected device.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] Typically, the backend development of software solutions for Internet of Things (IoT) devices can be performed by different teams, organizations, or vendors. The interoperability issues between the device code and the software solution backend may increase the development time and the workload of developers. Additionally, software solutions developed for one IoT device type may generally be applicable only to that device type and cannot be quickly adapted to other IoT device types. Summary of the Invention

[0002] A computer system is provided. The computer system includes one or more processors configured to store a plurality of software interfaces that define explicit interaction contracts between network-connected devices and software services. The one or more processors are configured to execute a plurality of software services. Each software service defines one or more software interfaces operated by the software service. The one or more processors are configured to receive an indication of one or more software interfaces implemented by a network-connected device, select one or more software services based on a match between the one or more software interfaces implemented by the network-connected device and the one or more software interfaces operated by the plurality of software services, and use the selected software services to process data received from the network-connected device or send commands to the network-connected device according to the explicit interaction contracts of the one or more software interfaces.

[0003] This Summary of the Invention is provided to introduce some concepts in a simplified form that will be further described in the Detailed Description below. This Summary of the Invention is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Additionally, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure. Brief Description of the Drawings

[0004] Figure 1 An example computer system is shown that is used to process data from a network-connected device using a software service according to an explicit interaction contract of a software interface.

[0005] Figure 2 Shows Figure 1 an example of a plurality of network-connected devices.

[0006] Figure 3 Shows Figure 1 a schematic diagram of a software interface.

[0007] Figure 4 Shows Figure 1 an example of a software interface.

[0008] Figure 5 Shows Figure 1 an example of an extensible software interface.

[0009] Figure 6 Shows a flowchart of an explicit interaction contract for a software interface implemented according to a computer system of Figure 1 and a method of using a software service to process data from a network-connected device.

[0010] Figure 7 Shows Figure 1 a schematic diagram of an example computing environment in which a computer system of Detailed Description

[0011] To address these issues, a computer system 10 is provided. Figure 1 Illustrated is a computer system 10 that includes a cloud platform 12 configured to store and manage a plurality of software interfaces 14. In one example, the plurality of software interfaces 14 can include a platform software interface 15 provided and controlled by the cloud platform 12. The plurality of software interfaces 14 can also include custom software interfaces 16 created by the manufacturer of the network-connected device 18, the developer of the software service 20, or other users of the cloud platform 12. Each software interface 14 defines an explicit interaction contract between the network-connected device 18 operated by the customers and users of the cloud platform 12 and the software service 20 created by the developer. The software service 20 can be developed by the manufacturer of the network-connected device 18, a third-party developer independent of the manufacturer of the network-connected device 18, the user of the network-connected device 18, and other users of the cloud platform 12. The explicit interaction contract is a data file that defines the schemes and protocols, e.g., according to which data should be sent and received between the client and the server.

[0012] In one example, the cloud platform 12 includes one or more processors 22 configured to execute the processes and functions of the cloud platform 12 described herein. The cloud platform can include one or more server devices configured to operate in a cloud computing configuration. As Figure 1As shown, the cloud platform 12 is configured to execute multiple software services 20, and each software service defines one or more software interfaces 14 operated by the software service 20. In one example, the multiple software services 20 are configured to process data according to an explicit interaction contract of one or more software interfaces 14 that the software service 20 has been developed to utilize. These software services 20 can be developed by a first party or a third party and uploaded to the cloud platform 12. In one example, the cloud platform 12 can perform testing, authentication, and certification processes on each uploaded software service before making these software services available on the cloud platform 12. For example, the cloud platform 12 can be configured to test whether each software service 20 correctly implements one or more software interfaces 14. These software services 20 can then be stored and executed on the cloud platform 12 to process data from network-connected devices 18 operated by users of the cloud platform 12.

[0013] Figure 2 An example of multiple network-connected devices 18 distributed around an example physical environment (i.e., a user's house) is illustrated. The network-connected devices can be configured to connect to a wide area network (WAN) via a router 24. As a specific example, the router 24 can take the form of a wireless network device for mediating a wireless network that can be utilized by multiple network-connected devices 18 in the physical environment. In another example, the multiple network-connected devices 18 can be configured to communicate with a user computing device 26 configured to connect to the WAN via the router 24.

[0014] The multiple network-connected devices 18 can take different forms and can perform different processes and functions. In Figure 2 the specific example shown, the network-connected devices 18 include a thermometer 28, a fireplace thermometer 30, a body thermometer 32, and a pet food measuring device 34. It should be understood that Figure 2 the specific example network-connected devices 18 illustrated in Figure 2 are merely exemplary, and the network-connected devices can take other suitable forms. As some other non-limiting examples, the network-connected devices 18 can take the form of a GPS unit, a vibration / motion sensor, a printer, a router, a light, an HVAC unit, a robot, a smart speaker, a smart watch, an asset tracker, a speaker, a smart coffee maker, a refrigerator sensor, other types of sensors and measuring devices, other types of consumer or industrial IoT devices, etc., including a processor, a memory, a stored program, and a communication interface capable of connecting to a remote server via a computer network. In

[0015] In one example, each network-connected device 18 may include a processor or another type of hardware logic component, such as, for example, a field programmable gate array (FPGA), a programmed and application specific integrated circuit (PASIC / ASIC), a programmed and application specific standard product (PSSP / ASSP), a system on a chip (SOC), a complex programmable logic device (CPLD), etc. The processor of each network-connected device 18 may be configured to collect measured physical values via sensors, perform processes or outputs, etc. The processor of each network-connected device 18 may further be configured to send a message 36 from the network-connected device 18 to the computing system 12 via a wireless network mediated by the router 24 and / or via the user computing device 26. In the example shown, the user computing device 26 takes the form of a large format display and may include its own processor, non-volatile storage, volatile storage, and other suitable computer components. However, it will be understood that the client computer device 26 may take other suitable forms, such as, for example, a desktop computer device, a laptop computer device, a smart phone, a tablet computer device, etc.

[0016] Returning to Figure 1 , in one example, when first connected to the network, each network-connected device 18 may be configured to communicate with the provisioning service 38 to perform an initialization process 40. The initialization process 40 may include checking whether any updates to the firmware / software of the network-connected device 18 are available. The initialization process 40 may also include initializing the network-connected device 18 using the address of the gateway 42 for the cloud platform 12. After receiving the address of the gateway 42 for the cloud platform 12, each network-connected device 18 may be configured to communicate with the cloud platform 12 via the WAN. In this example, the Internet protocol address of the provisioning service 38 may be provided to each network-connected device 18 by the manufacturer or seller of the network-connected device 18. In another example, the Internet protocol address of the gateway 42 for the cloud platform 12 may be provided directly to the network-connected device 18A by the manufacturer or seller of the network-connected device 18.

[0017] As Figure 1As shown, each network connection device 18 can be configured to send an indication of the software interface 14 to the cloud platform 12 implemented by the network connection device 18. The indication can take the form of, for example, a list 44. In one example, each network connection device 18 can be manufactured to implement one or more software interfaces 14, such as, for example, a platform software interface 15 or a custom software interface 16 indexed by the cloud platform 12. For example, the software / firmware of the network connection device 18 can be developed to conform to an explicit interaction contract of one or more software interfaces 14 being implemented by the network connection device 18. In one example, the list 44 of software interfaces can be sent to the cloud platform 12 by a provisioning service 38, such as, for example, during an initialization process 40. In another example, an edge computing device 60, such as an edge gateway, can be configured to communicate with the network connection device 18 and forward the software interface list 44 to the cloud platform 12.

[0018] In another example, one or more software interfaces 14 for the network connection device 18 can be implemented by a network connection device-related software program 19 executed by a cloud computing device 17. The network connection device-related software program 19 can be configured to command and control one or more associated network connection devices 18. In Figure 1 the example shown, the network connection device-related software program 19 is configured to communicate with an example network connection device 18B. The network connection device-related software program 19 is also configured to perform the functions and processes of the network connection device 18 described herein. For example, the network connection device-related software program 19 can be configured to send the software interface list 44 to the cloud platform 12 and utilize software services 20 executed on the cloud platform 12 to send and receive messages 36. The cloud computing device 17 executing the network connection device-related software program 19 can be a cloud server of the cloud platform 12 or can be a computer device separate from the cloud platform 12. In another example, the edge computing device 60 can implement the network connection device associated with the software program 19 and can similarly be configured to command and control one or more associated network connection devices 18 and utilize the cloud platform 12 to send and receive messages.

[0019] As a specific example, the software program 19 related to the network-connected device can take the form of a software-controlled meeting room. The network-connected device 18 associated with the software program 19 related to the network-connected device can include networked lighting devices that can be turned on / off by the software program 19 related to the network-connected device, occupancy sensors that can send occupancy data to the software program 19 related to the network-connected device, networked air-conditioning devices, and the like. Further in this example, the software program 19 related to the network-connected device can be configured to implement one or more software interfaces 14, and can utilize software services 20 on the cloud platform to send / receive messages. For example, the software services on the cloud platform can include code that commands the software program 19 related to the network-connected device to turn on or off the networked lighting devices in the meeting room based on the occupancy data received from the occupancy sensor network-connected device.

[0020] In one example, each software interface 14 includes a semantic description of one or more functions and descriptive attributes of the network-connected device 18 that are accessible by multiple software services 20. As a specific example, the semantic description of the software interface 14 can be described using JavaScript Object Notation for Linked Data (JSON-LD). JSON-LD is designed to be used directly as JSON or in a Resource Description Framework (RDF) system, which provides a standard for describing resources in a distributed and extensible manner. The semantic description of the software interface 14 provides semantic type annotations for one or more functions and descriptive attributes of the network-connected device 18, enabling analysis, machine learning, user interfaces, and other computations to infer the semantics of the data received from the network-connected device 18. It should be understood that the semantic type annotations are human-readable and machine-readable and can form the basis for downstream search and data analysis of human-readable and machine-readable data categories. For example, by Figure 2 example network-connected device 18, the physical values measured by the thermometer 28, the fireplace thermometer 30, and / or the thermometer 32 can be semantically annotated as "temperature". In this way, the measured physical values sent by these example network-connected devices 18 to the cloud platform 12 can be inferred as temperature (plotted together, compared, converted to similar units, etc.).

[0021] Figure 3The figure illustrates the example software interface 14. As some non-limiting examples, one or more functions and descriptive features of the network-connected device 18 may include device property data 46, telemetry data 48, software commands 50, and audio and / or video streaming capabilities 51 implemented by the network-connected device. However, it should be understood that other types of functions and descriptive features not described herein may also be included in the software interface 14. These functions describe the relevant functional sets utilized by a particular type of network-connected device 18, such as, for example, the functions of a thermometer, a pet temperature measurement unit, an asset tracker, etc. In one example, the semantic description of the software interface 14 includes network-connected device properties 46 selected from the following: network-connected device model, network-connected device serial number, network-connected device manufacturer, network-connected device operating system, network-connected device memory properties, and network-connected device type. The network-connected device model may be the model or identification set by the manufacturer of the network-connected device 18. The network-connected device serial number may be the serial number set by the manufacturer of the network-connected device 18. The network-connected device manufacturer may be the name of the manufacturer of the network-connected device 18. The network-connected device memory properties may be the total memory size, memory type, manufacturer of the memory of the network-connected device, etc. The network-connected device type may be the semantic description of the network-connected device, such as, for example, "thermometer", "asset tracker", etc. However, it should be understood that other types of read-only or read / write properties of the network-connected device 18 may also be included in the software interface 14 for the network-connected device property data 46.

[0022] In another example, the semantic description of the software interface 14 includes one or more defined events that may be generated by the network-connected device 18 and emitted as telemetry data 48. The one or more defined events are selected from the group including the following: physical properties measured by the network-connected device, device status events, device alert events, and device error events. The semantic description of the physical properties measured by the network-connected device 18 may describe the physical properties being measured and the data type of the properties. For example, the semantic description for a thermometer network-connected device 18 may indicate that the physical property being measured is temperature, and the value sent by the thermometer network-connected device 18 is of double data type. The semantic description for a device status event may indicate how the network-connected device 18 is configured to emit device status information that can be captured by the software service 20. The semantic description for network-connected device alert and error events may indicate what types of alerts and events the network-connected device 18 is configured to emit, and the types of those alerts and errors. It should be understood that the above-defined events are merely illustrative, and other types of events may be semantically described in the software interface 14.

[0023] In another example, the semantic description of the software interface 14 includes one or more software commands implemented by the network-connected device 18. The semantic description can describe the functions and operations that the network-connected device 18 can be instructed to perform by the software service 20. For example, the semantic description can describe the function name of the available command, the developer notes describing the operation that the command will perform, the type of command execution (such as synchronous or asynchronous), the data type for the command input, and the data type of the command output.

[0024] Figure 4 Illustrates a specific example of the software interface 14. The example software interface 14 includes a semantic description 52 of one or more functions and descriptive features of the network-connected device 18. In the example shown, the semantic description 52 includes a telemetry event 54 defined for physical property data measured by the network-connected device. As Figure 4 shown, the defined telemetry event 54 also includes an additional semantic type "temperature", and the additional semantic type "temperature" can be used to indicate that the telemetry data can be inferred as both telemetry and temperature. The semantic description 52 also indicates that the physical property measured by the associated network-connected device 18 will be emitted as a double data type. Thus, any software service 20 configured for the shown software interface 14 can expect the data emitted by the network-connected device to be temperature values of the double data type and can process the data accordingly. In this way, the data emitted by the network-connected device can be inferred as temperature (plotted together, compared, converted to similar units, etc.) by those software services 20. As another specific example, a thermometer network-connected device can implement a software interface 14 that includes the defined telemetry event 54, and the defined telemetry event 54 also includes a BodyTemperature semantic type (e.g., {"@type": ["Telemetry", "Temperature", "BodyTemperature"], "name": "temp", "schema": "double"}), and the BodyTemperature semantic type can be used to indicate that the telemetry data can be inferred as telemetry, temperature, and body temperature. It should be understood that although Figure 4 the examples shown and described above are based on the JSON-LD way of expressing semantic types, the software interface 14 is not limited to JSON-LD. The software interface 14 can utilize any other suitable programming language and can express semantic types via other suitable means.

[0025] In the example shown, the software interface also includes a semantic description for the example network connection device property 56. However, it should be understood that the software interface 14 can include semantic descriptions for any suitable number of functions and features of the network connection device, such as, for example, one, three, seven, etc. As shown, the semantic description 52 for the example network connection device property 56 indicates that the network connection device includes a SETPOINTTEMP property, and the SETPOINTTEMP property can be written using a double data type value. Similarly, as described above with respect to the defined telemetry event 54, the SETPOINTTEMP writable property can include a temperature semantic type (e.g., {"@type": ["Property", "Temperature"]}). Thus, the software service 20 configured to operate on the Figure 4 software interface shown can infer that SETPOINTTEMP is both a property and a temperature, and can send an instruction to the thermostat network connection device to set its SETPOINTTEMP value to a specific temperature value. Since both the thermostat network connection device and the specific software service 20 are configured for the Figure 4 example software interface shown, both the manufacturer of the thermostat network connection device and the developer of the specific software service 20 can have a common understanding of how to manipulate the SETPOINTTEMP value of the thermostat network connection device. Additionally, in this way, if those other network connection devices are implanted with the Figure 4 software interface 14 shown, the software service 20 implementing the software interface will also be compatible with the other network connection devices, which can take other forms or be created by other manufacturers.

[0026] Return Figure 1 , each network connection device 18 can be configured to implement one or more software interfaces 14. The cloud platform 12 is configured to receive an indication of a list 44 of one or more software interfaces 14, such as those implemented by the network connection device 18, from the network connection device 18. In one example, the one or more software interfaces 14 include one or more platform software interfaces 15 managed by the cloud platform 12 and / or one or more custom software interfaces 16 created by manufacturers and developers. The platform software interfaces 15 can include, for example, software interfaces 14 for device information, application management, authentication management, diagnostic logging, factory reset functionality, reboot management, etc. However, it should be understood that developers and manufacturers can create and manage their own custom software interfaces 16 that can be implemented by the software service 20 and the network connection device 18.

[0027] After receiving a list 44 of software interfaces from the network-connected device 18, the cloud platform 12 can be configured to select one or more software services 20 based on a match between one or more software interfaces 14 implemented by the network-connected device 18 and one or more software interfaces 14 operated by the plurality of software services 20. In Figure 1 In the example shown, the network-connected device 18A is configured to implement software interface A and software interface B among the plurality of software interfaces 14. After receiving the list 44 of software interfaces 14 from the network-connected device 18A, in this particular example, the software interfaces 14 include software interface A and software interface B, and the cloud platform 12 is configured to compare the received list 44 of software interfaces with the software services 20 known to the cloud platform 12. Specifically, the cloud platform 12 can be configured to filter the plurality of cloud services 20 based on the list 44 of software interfaces 14 received from the network-connected device 18A. In the example shown, the software service 20A is configured to operate on software interface A, and the software service 20B is configured to operate on software interface B. Thus, the cloud platform 12 can be configured to select software services 20A and 20B to process data and operate the network-connected device 18A.

[0028] In one example, the software service 20 is executed by one or more server devices of the cloud platform 12, and the cloud platform 12 is configured to use the selected software service 20 to process data received from the network-connected device 18 according to an explicit interaction contract of one or more software interfaces 14. As a specific example, a message 36 received from and sent to the network-connected device 18 may include a software interface tag 58 that indicates the specific software interface 14 with which the data 36 in the message is associated or otherwise conforms. As a specific example, a thermostat network-connected device can be configured to utilize a software interface tag 58 indicating Figure 4 the example software interface 14 to label each message 36 that includes a measured value of temperature data.

[0029] After receiving the message 36, the cloud platform 12 can be configured to route the message 36 to the selected software service 20 configured for the software interface 14 indicated in the software interface tag 58 of the message 36. In this way, the message 36 can be routed to the appropriate software service 20 and processed by the appropriate software service 20. Messages 36 sent by the software service 20, such as, for example, a software command 50, can also be labeled with an appropriate software interface tag 58 and sent to the network-connected device 18 via the WAM.

[0030] In another example, the cloud platform 12 may be configured to identify an edge computing device 60, which may be configured to execute one or more software services 20 managed by the cloud platform 12 and logically located on the same side of the WAN as the network connection device 18 relative to the cloud platform 12. As Figure 1 shown, after identifying the edge computing device 60, the cloud platform 12 may be configured to send one or more of the selected software services 20 to the edge computing device 60, which may be configured to execute those software services 20. The cloud platform 12 may configure the network connection device 18 to route messages processed by the selected software services 20 to the edge computing device 60. Additionally, commands and messages from the cloud platform 12 to the network connection device 18 may also be routed via the edge computing device 60. In this example, traffic from the cloud platform 12 may be processed by the edge computing device 60, which may send further commands and / or messages to the network connection device 18. The edge computing device 60 may be configured to process messages 36 using the selected software services 20 as described herein and perform the functions and processes of the selected software services 20. In this way, one or more of the selected software services 20 are executed by the edge computing device 60, which is separate from the cloud platform 12 configured to store the one or more software services 20. In Figure 1 the example shown, software service 20B has been sent to the edge computing device 60. Thus, the example network connection device 18A may be instructed to route messages 36 associated with software interface B to the edge computing device 60. On the other hand, messages 36 associated with software interface A may be routed to the cloud platform 12, which is configured to execute software service 20A, which is configured to operate on software interface A.

[0031] In one example, the cloud platform 12 is also configured to match one or more software services 20 to the network-connected device 18 based on the ranking factor 62 of the software service 62. For example, if more than one software service 20 operates on one or more software interfaces 14 implemented by the network-connected device 18, the cloud platform 12 can be configured to select a preferred software service from more than one software service 20 based on the ranking factor 62. As described above, the preferred software service 20 can then be used to process data from the network-connected device 18. In one example, the ranking factor 62 can include a popularity metric, a user score metric, an association factor, and a matching score. The popularity metric can track the frequency with which the particular software service 20 is selected compared to other similar software services 20 operating on similar software interfaces. The user score metric can track user input of the score (such as a score from 1 to 10) for each software service. The association factor can track whether the developer of the software service 20 is associated with the manufacturer of the network-connected device, such that software services and network-connected devices created by the same or associated parties can be selected together. The matching score can indicate the closeness of the match between the software interface 14 of the software service 20 and the software interface of the network-connected device.

[0032] In Figure 1 the example shown, although both software service 20A and software service 20D operate on software interface A implemented by network-connected device 18A, software service 20D also operates on software interface B implemented by network-connected device 18A. Thus, based on the ranking factor 62 of the matching score factor, the cloud platform 12 can be configured to select software service 20D to match with network-connected device 18A.

[0033] In these examples, the cloud platform 12 has been described as automatically selecting a software service 20 and matching it to the network-connected device 18. In another example, the cloud platform 12 can be further configured to present a list of selected software services 20 that match the network-connected device 18 to the user of the network-connected device 18. As a specific example, the user can access a user account on the cloud platform 12 via a computing device (such as, for example, Figure 2 the user computing device 26 shown). The user can control the software service 20 they select to operate their network-connected device with their user account on the cloud platform 12. In this example, the list of selected software services 20 can be presented to the user via an interface of the cloud platform 12 and displayed on the display of the user computing device 26. The list of selected software services 20 can be ranked based on the ranking factor of the software service 62. The user can then select one or more software services 20 from the list. As described herein, the software service 20 selected by the user can then be used to process data and operate the network-connected device 18.

[0034] In one example, the plurality of software interfaces 14 and the plurality of software services 20 are extensible. For example, a user may select a software interface 14 and add additional semantic descriptions and / or additional interaction contracts to the selected software interface 14. After extending the selected software interface, the extended software interface may be uploaded to the cloud platform 12.

[0035] Similarly, the software services 20 are extensible. A user may select one or more software services 20 stored on the cloud platform 12 and add additional code to the selected software service. The extended software service 20 may then be uploaded to the cloud platform 12 and be used to process data from the user's network-connected device 18. In this way, users can generate their own software solutions by extending those existing software interfaces 14 and software services 20, leveraging the existing software interfaces 14 and software services 20 available on the cloud platform 12 to meet their specific needs.

[0036] As another example, Figure 4 the software interface of Figure 2 can be applied to the network-connected devices such as the thermometer 28, the fireplace thermometer 30, and the thermometer 32 shown in Figure 4 . However, although all three network-connected devices measure the physical property of temperature, the expected temperature ranges for each network-connected device may be different. For example, the thermometer network-connected device 28 may expect a temperature range between 60 - 80 degrees Fahrenheit, the fireplace thermometer network-connected device 30 may expect a temperature range between 400 - 800 degrees Fahrenheit, and the thermometer network-connected device may expect a range between 97 - 100 degrees Fahrenheit. Thus, a user can extend the Figure 4 example software interface to semantically describe the temperature measured by a specific network-connected device. For example, the software interface for the thermometer network-connected device 28 can be extended to semantically describe its measured value as "room temperature", while the software interface for the thermometer network-connected device can be extended to semantically describe its measured value as "body temperature". Additionally, a user can extend the Figure 4 example software interface to add additional data and functionality to the software interface. For example, a user can add an operating range to the temperature value, such as 400 - 800 degrees Fahrenheit for the fireplace thermometer network-connected device 30. The operating range can control the temperature range that the network-connected device will be configured to detect. Once the Figure 4 example software interface of Figure 4 is extended with the operating range functionality, the software service 20 on the cloud platform 12 can be configured to send commands to the network-connected device to set and manage its operating range according to the extended software interface.

[0037] Figure 5Illustrates an example of an extended software interface 64. In this example, the user has selected the Figure 4 example software interface 14 illustrated in, and has added a new telemetry function 66 to the software interface 14. As shown, the extended software interface 64 includes a telemetry function with a semantic description that identifies that the measured physical value is a "GPS" value provided in a double data type. The extended software interface 64 can then be uploaded by the user to the cloud platform 12. The user can further select a software service stored on the cloud platform 12 and add additional code to the selected software service to appropriately process the user's extended software interface 64. In another example, the extension of the software interface 14 can be authored and stored separately from the original software interface. In Figure 5 the specific example shown, rather than adding the new telemetry function 66 to the code of the original software interface 14, the new telemetry function 66 can be authored and stored separately from the original interface and uploaded to the cloud platform 12 along with an indication that the new telemetry function 66 is an extension of the original software interface stored on the cloud platform 12.

[0038] Figure 6 is a flowchart of a method 600 implemented on a computer system including one or more processors. The method 600 can be executed using the above system or by utilizing other suitable hardware and software elements.

[0039] At 602, the method 600 can include storing, at a computer system including one or more processors, a plurality of software interfaces that define explicit interaction contracts between network-connected devices and software services. In one example, the plurality of software interfaces and the plurality of software services are extensible. As a specific example, the semantic description of the software interface 14 can be described using JSON-LD. JSON-LD is designed to be used directly as JSON or in a Resource Description Framework (RDF) system, which provides a standard for describing resources in a distributed, extensible manner. A specific example of extending a software interface is illustrated in Figure 5 shown.

[0040] In one example, each software interface includes a semantic description of one or more functions and descriptive characteristics of a network-connected device accessible to a plurality of software services. The semantic description of the software interface 14 provides semantic type annotations of one or more functions and descriptive characteristics of the network-connected device 18, enabling analysis, machine learning, user interfaces, and other computations to infer the semantics of data received from the network-connected device 18.

[0041] In this example, the semantic description may include network connection device attributes selected from the group consisting of a network connection device model number, a network connection device serial number, and a network connection device type. The network connection device model number may be a model number or identifier set by the manufacturer of the network connection device 18. The network connection device serial number may be a serial number set by the manufacturer of the network connection device 18. The network connection device type may be a semantic description of the network connection device, for example, "thermometer", "asset tracker", etc.

[0042] In another example, the semantic description may include one or more defined events that can be generated by the network connection device. In this example, the one or more events are selected from the group including: physical attributes measured by the network connection device, device status events, device alert events, and device error events. The semantic description of the physical attributes measured by the network connection device 18 may describe the measured physical attributes and the data type of the attributes. For example, the semantic description for the thermometer network connection device 18 may indicate that the measured physical attribute is temperature, and the value sent by the thermometer network connection device 18 is of double data type.

[0043] In another example, the semantic description includes one or more software commands implemented by the network connection device. The semantic description may describe the functions and operations that the software service 20 may instruct the network connection device 18 to perform. For example, the semantic description may describe the function name of the available command, the developer notes describing the operation to be performed by the command, the type of command execution (such as synchronous or asynchronous), the data type for command input, and the data type for command output.

[0044] At 604, the method 600 may include executing a plurality of software services at a computer system, each software service defining one or more software interfaces operated by the software service. The software services may be developed by a first party or a third party and uploaded to the computer system. Each software service specifies one or more software interfaces with which the software service is configured to interact.

[0045] At 606, the method 600 may include: at the network connection device, sending an indication of one or more software interfaces implemented by the network connection device, such as a list. The list indicates each software interface that the manufacturing network connection device is to follow. These software interfaces may be selected from a plurality of platform software interfaces and / or custom software interfaces.

[0046] At 608, the method 600 may include receiving, at the computer system, a list of one or more software interfaces implemented by the network connection device.

[0047] At 610, method 600 may include, at a computer system, selecting one or more software services based on a match between one or more software interfaces implemented by a network-connected device and one or more software interfaces operating on a plurality of software services. For example, if more than one software service 20 operates on one or more software interfaces 14 implemented by a network-connected device 18, step 610 may further include selecting a preferred software service from the more than one software service 20 based on ranking factors 62. In one example, the ranking factors 62 may include popularity metrics, user score metrics, correlation factors, and match scores.

[0048] At 612, method 600 may include sending data from the network-connected device 18 to the computer system. The data sent may include various events such as, for example, measured physical properties, device status events, device error or alert events, etc. The measured physical properties may include, for example, sensor data measured by sensors of the network-connected device. The message sent may further include a software interface tag 58 that indicates the specific software interface to which the data in the message 36 relates or otherwise conforms.

[0049] At 614, method 600 may include, at the network-connected device 18, using the selected software service to process data received from the network-connected device according to an explicit interaction contract of one or more software interfaces. In one example, as Figure 1 shown, the selected one or more software services may be executed by an edge computing device of a computer system separate from a cloud platform of the computer system configured to store the one or more software services.

[0050] At 616, method 600 may include, at the computer system 10, sending commands to the network-connected device according to an explicit interaction contract of one or more software interfaces. The commands sent by the software services executed by the computer system are defined in the one or more software interfaces implemented. The one or more software interfaces may further define the arguments of the commands, the return values of the commands, etc. In an example where one or more software services are executed on an edge computing device, the commands may be sent from the edge computing device to the associated network-connected device. It should be understood that steps 614 and 616 may be executed any suitable number of times and in any order.

[0051] At 618, method 600 may include receiving commands at the network-connected device 18 from the computer system 10. The network-connected device 18 may then process and implement the commands and return one or more values to the computer system 10 (if applicable).

[0052] In some embodiments, the methods and processes described herein can be associated with a computing system of one or more computing devices. In particular, such methods and processes can be implemented as a computer application or service, an application programming interface (API), a library, and / or other computer program products.

[0053] Figure 7 FIG. schematically shows a non-limiting embodiment of a computing system 700 that can implement one or more of the above methods and processes. The computing system 700 is shown in a simplified form. The computing system 700 can be embodied as a computer system 10, a network-connected device 18, an edge computing device 60, a client computing device 26, and Figure 1 and Figure 2 other computing devices shown above and in

[0054] The computing system 700 can take the form of one or more personal computers, server computers, tablet computers, home entertainment computers, network computing devices, gaming devices, mobile computing devices, mobile communication devices (e.g., smart phones), and / or other computing devices, such as industrial devices (e.g., industrial facilities, robots, etc.) and consumer devices (e.g., cars, coffee makers, home appliances, etc.), as well as wearable computing devices, such as smart watches and head-mounted augmented reality devices.

[0054] The computing system 700 includes a logical processor 702, a volatile memory 704, and a non-volatile storage device 706. The computing system 700 can optionally include a display subsystem 708, an input subsystem 710, a communication subsystem 712, and / or Figure 7 other components not shown in

[0055] The logical processor 702 includes one or more physical devices configured to execute instructions. For example, the logical processor can be configured to execute instructions that are part of one or more applications, programs, routines, libraries, objects, components, data structures, or other logical constructs. Such instructions can be implemented to perform tasks, implement data types, transform the state of one or more components, achieve a technical effect, or otherwise achieve a desired result.

[0056] A logical processor may include one or more physical processors (hardware) configured to execute software instructions. Additionally or alternatively, a logical processor may include one or more hardware logic circuits or firmware devices configured to execute hardware-implemented logic or firmware instructions. The processors of the logical processor 702 may be single-core or multi-core, and the instructions executed thereon may be configured for sequential, parallel, and / or distributed processing. The various components of the logical processor may optionally be distributed among two or more separate devices, which may be located remotely and / or configured to coordinate processing. Aspects of the logical processor may be virtualized and executed by a remotely accessible networked computing device configured in a cloud computing configuration. In such a case, it will be understood that these virtualized aspects run on different physical logical processors of various different machines.

[0057] The non-volatile storage device 706 includes one or more physical devices configured to store instructions that may be executed by the logical processor to implement the methods and processes described herein. When such methods and processes are implemented, the state of the non-volatile storage device 706 may be transformed to store, for example, different data.

[0058] The non-volatile storage device 706 may include removable and / or built-in physical devices. The non-volatile storage device 706 may include optical memory (e.g., CD, DVD, HD-DVD, Blu-ray Disc, etc.), semiconductor memory (e.g., ROM, EPROM, EEPROM, FLASH memory, etc.), and / or magnetic memory (e.g., hard disk drive, floppy disk drive, tape drive, MRAM, etc.) or other mass storage device technologies. The non-volatile storage device 706 may include non-volatile, dynamic, static, read / write, read-only, sequential access, location-addressable, file-addressable, and / or content-addressable devices. It will be understood that the non-volatile storage device 706 is configured to store instructions even when the power to the non-volatile storage device 706 is turned off.

[0059] The volatile memory 704 may include a physical device having random access memory. The volatile memory 704 is typically used by the logical processor 702 to temporarily store information during the processing of software instructions. It will be understood that the volatile memory 704 generally does not continue to store instructions when the power to the volatile memory 704 is turned off.

[0060] Aspects of the logic processor 702, volatile memory 704, and non-volatile storage device 706 may be integrated together in one or more hardware logic components. Such hardware logic components may include field programmable gate arrays (FPGAs), program and application specific integrated circuits (PASIC / ASICs), program and application specific standard products (PSSP / ASSPs), system on chips (SOCs), and complex programmable logic devices (CPLDs).

[0061] The terms "module", "program", and "engine" may be used to describe an aspect of the computing system 700, which is typically implemented in software by a processor to perform a specific function using portions of the volatile memory, the function involving processing that can transform the processor to be configured to perform the function. Thus, a module, program, or engine may use portions of the volatile memory 704 and be instantiated by the logic processor 702 executing instructions stored by the non-volatile storage device 706. It will be understood that different modules, programs, and / or engines may be instantiated from the same application, service, code block, object, library, routine, API, function, etc. Also, the same module, program, and / or engine may be instantiated by different applications, services, code blocks, objects, routines, APIs, functions, etc. The terms "module", "program", and "engine" may encompass individuals or groups of executable files, data files, libraries, drivers, scripts, database records, etc.

[0062] When included, the display subsystem 708 may be used to present a visual representation of data stored by the non-volatile storage device 706. The visual representation may take the form of a graphical user interface (GUI). When the methods and processes described herein change the data stored by the non-volatile storage device and thus transform the state of the non-volatile storage device, the state of the display subsystem 708 may likewise be transformed to visually represent the changes in the underlying data. The display subsystem 708 may include one or more display devices that actually utilize any type of technology. Such display devices may be combined with the logic processor 702, volatile memory 704, and / or non-volatile storage device 706 in a shared enclosure, or such display devices may be peripheral display devices.

[0063] When included, the input subsystem 710 may include or interface with one or more user input devices such as a keyboard, mouse, touch screen, or game controller. In some embodiments, the input subsystem may include or interact with selected natural user input (NUI) components. Such components may be integrated or peripheral, and the transduction and / or processing of input actions may be handled on-board or off-board. Example NUI components may include a microphone for voice and / or sound recognition; infrared, color, stereo, and / or depth cameras for machine vision and / or gesture recognition; a head tracker, eye tracker, accelerometer, and / or gyroscope for motion detection and / or intent recognition; and an electric field sensing component for evaluating brain activity; and / or any other suitable sensors.

[0064] When included, the communication subsystem 712 may be configured to communicatively couple the various computing devices described herein to each other and to other devices. The communication subsystem 712 may include wired and / or wireless communication devices compatible with one or more different communication protocols. As a non-limiting example, the communication subsystem may be configured to communicate via a wireless telephone network or a wired or wireless local or wide area network such as HDMI over Wi-Fi. In some embodiments, the communication subsystem may allow the computing system 700 to send messages to and / or receive messages from other devices via a network such as the Internet.

[0065] The following paragraphs provide additional support for the claims of the subject application. One aspect provides a computer system that includes one or more processors configured to: store a plurality of software interfaces that define explicit interaction contracts between network-connected devices and software services; execute a plurality of software services, each software service defining one or more software interfaces operated by the software service; receive an indication of one or more software interfaces implemented by a network-connected device from the network-connected device; select one or more software services based on a match between the one or more software interfaces implemented by the network-connected device and the one or more software interfaces operated by the plurality of software services; and process data received from the network-connected device or send commands to the network-connected device using the selected software services according to the explicit interaction contracts of the one or more software services. In this aspect, additionally or alternatively, each software interface may include a semantic description of one or more functions and descriptive characteristics of the network-connected device accessible to the plurality of software services. In this aspect, additionally or alternatively, the semantic description may include network-connected device attributes of the network-connected device. In this aspect, additionally or alternatively, the network-connected device attributes may be selected from the group including: network-connected device model, network-connected device serial number, network-connected device manufacturer, network-connected device operating system, network-connected device memory attributes, network-connected device type, read / write attributes. In this aspect, additionally or alternatively, the semantic description may include one or more defined events that can be generated by the network-connected device. In this aspect, additionally or alternatively, the one or more events may be selected from the group including: physical attributes measured by the network-connected device, device status events, device alert events, and device error events. In this aspect, additionally or alternatively, the semantic description may include one or more software commands implemented by the network-connected device. In this aspect, additionally or alternatively, the plurality of software interfaces and the plurality of software services may be extensible. In this aspect, additionally or alternatively, if more than one software service operates on the one or more software interfaces implemented by the network-connected device, the one or more processors may be configured to select a preferred software service from the more than one software service based on a ranking factor. In this aspect, additionally or alternatively, the ranking factor may be selected from the group including: popularity metric, user score metric, association factor, and match score. In this aspect, additionally or alternatively, to select one or more software services, the one or more processors may be configured to present a list of software services to the user based on an indication of the one or more software interfaces implemented by the network-connected device and receive the user's selection of one or more software services from the list of software services. In this aspect, additionally or alternatively, the selected one or more software services may be executed by an edge computing device separate from the cloud platform configured to store the one or more software services.

[0066] On the other hand, a method is provided. The method includes: at a computer system including one or more processors, storing a plurality of software interfaces, where the plurality of software interfaces define an explicit interaction contract between a network-connected device and software services; executing a plurality of software services, where each software service defines one or more software interfaces operated by the software service; receiving, from the network-connected device, an indication of one or more software interfaces implemented by the network-connected device; selecting one or more software services based on a match between the one or more software interfaces implemented by the network-connected device and the one or more software interfaces operated by the plurality of software services; and processing data received from the network-connected device or sending commands to the network-connected device using the selected software services according to the explicit interaction contract of the one or more software services. In this aspect, additionally or alternatively, each software interface may include a semantic description of one or more functions and descriptive characteristics of the network-connected device accessible to the plurality of software services. In this aspect, additionally or alternatively, the semantic description may include one or more defined events that can be generated by the network-connected device. In this aspect, additionally or alternatively, the one or more events may be selected from the group including: physical properties measured by the network-connected device, device status events, device alert events, and device error events. In this aspect, additionally or alternatively, the semantic description may include one or more software commands implemented by the network-connected device. In this aspect, additionally or alternatively, the plurality of software interfaces and the plurality of software services may be extensible. In this aspect, additionally or alternatively, the selected one or more software services may be executed by an edge computing device of a computer system separate from the cloud platform of the computer system configured to store the one or more software services.

[0067] On the other hand, a computer system is provided. The computer system includes one or more processors configured to: store a plurality of software interfaces that define an explicit interaction contract between software programs associated with a network-connected device and software services; store a plurality of software services, where each software service defines one or more software interfaces operated by the software service; receive, from a software program associated with the network-connected device, an indication of one or more software interfaces implemented by the software program, where the software program is configured to control the associated network-connected device; select one or more software services based on a match between the one or more software interfaces implemented by the software program associated with the network-connected device and the one or more software interfaces operated by the plurality of software services; and process data received from the software program associated with the network-connected device or send commands to the software program associated with the network-connected device using the selected software services according to the explicit interaction contract of the one or more software interfaces.

[0068] It will be understood that the configurations and / or methods described herein are exemplary in nature, and these specific embodiments or examples should not be considered restrictive as there can be various variations. The specific routines or methods described herein can represent one or more of any number of processing strategies. As such, the various acts illustrated and / or described can be performed in the order illustrated and / or described, in other orders, in parallel, or omitted. Similarly, the order of the above processes can be changed.

[0069] The subject matter of the present disclosure includes all novel and non-obvious combinations and sub-combinations of the various processes, systems, and configurations and other features, functions, acts, and / or properties disclosed herein, as well as all equivalents thereof.

Claims

1. A computer system, comprising: one or more processors of one or more server devices of a cloud platform, configured to: store a plurality of software interfaces at the cloud platform, the plurality of software interfaces being implemented by network connection devices and cloud-based software services, wherein each software interface defines an explicit interaction contract between the network connection device implementing the software interface and the cloud-based software service, and wherein each software interface includes a semantic description of one or more functions and descriptive features of the network connection device implementing the software interface, the one or more functions and descriptive features being accessible to the cloud-based software service implementing the software interface; execute a plurality of cloud-based software services on the cloud platform, each cloud-based software service being configured to implement a corresponding subset of the plurality of software interfaces and being configured to interact with the one or more functions and descriptive features of the network connection device, the network connection device implementing the corresponding subset of the plurality of software interfaces; receive an indication of one or more software interfaces implemented at the target network connection device from the target network connection device; compare the one or more software interfaces implemented at the target network connection device with the corresponding subsets of the plurality of software interfaces implemented by each of the plurality of cloud-based software services; identify a match between the one or more software interfaces implemented at the target network connection device and a matching subset of the plurality of software interfaces implemented by one or more matching cloud-based software services, wherein the match indicates that the one or more matching cloud-based software services are configured to interact with the one or more functions and descriptive features of the target network connection device; select one or more cloud-based software services from the one or more matching cloud-based software services; and process data received from the target network connection device or send commands to the target network connection device using the selected cloud-based software services according to the explicit interaction contract of the one or more software interfaces implemented by the target network connection device, the selected cloud-based software services being executed at the cloud platform.

2. The computer system according to claim 1, wherein the semantic description includes network connection device attributes of the network connection device.

3. The computer system according to claim 2, wherein the network connection device attributes are selected from the group consisting of: network connection device model, network connection device serial number, network connection device manufacturer, network connection device operating system, network connection device memory attributes, network connection device type, and read / write attributes.

4. The computer system according to claim 1, wherein the semantic description includes one or more defined events that can be generated by the network connection device.

5. The computer system according to claim 4, wherein the one or more events are selected from the group consisting of: physical attributes measured by the network connection device, device status events, device alert events, and device error events.

6. The computer system according to claim 1, wherein the semantic description includes one or more software commands implemented by the network-connected device.

7. The computer system according to claim 1, wherein the plurality of software interfaces and the plurality of cloud-based software services are scalable.

8. The computer system according to claim 1, wherein the one or more processors are configured to select the one or more cloud-based software services from the one or more matching cloud-based software services based on ranking factors.

9. The computer system according to claim 8, wherein the ranking factors are selected from the group including: popularity metrics, user score metrics, correlation factors, and matching scores.

10. The computer system according to claim 1, wherein, in order to select one or more cloud-based software services from the one or more matching cloud-based software services, the one or more processors are configured to present a list of the one or more matching cloud-based software services to a user and receive the user's selection of one or more cloud-based software services from the list of the one or more matching cloud-based software services.

11. The computer system according to claim 1, wherein the selected one or more cloud-based software services are executed by an edge computing device separated from the cloud platform, and the edge computing device is configured to store the one or more cloud-based software services.

12. A method for interacting with a target network-connected device, comprising: at a cloud platform including one or more server devices, the one or more server devices including one or more processors: storing a plurality of software interfaces at the cloud platform, the plurality of software interfaces being implemented by network-connected devices and cloud-based software services, wherein each software interface defines an explicit interaction contract between the network-connected device implementing the software interface and the cloud-based software service, and wherein each software interface includes a semantic description of one or more functions and descriptive features of the network-connected device implementing the software interface, the one or more functions and descriptive features being accessible by the cloud-based software service implementing the software interface; executing a plurality of cloud-based software services on the cloud platform, each cloud-based software service being configured to implement a corresponding subset of the plurality of software interfaces and being configured to interact with the one or more functions and descriptive features of the network-connected device, the network-connected device implementing the corresponding subset of the plurality of software interfaces; receiving an indication of one or more software interfaces implemented at the target network-connected device; comparing the one or more software interfaces implemented at the target network-connected device with the corresponding subsets of the plurality of software interfaces implemented by each of the plurality of cloud-based software services; Identify a match between the one or more software interfaces implemented at the target network-connected device and a matching subset of the multiple software interfaces implemented by one or more matching cloud-based software services, where the match indicates that the one or more matching cloud-based software services are configured to interact with the one or more functions and descriptive characteristics of the target network-connected device; Select one or more cloud-based software services from the one or more matching cloud-based software services; And According to the explicit interaction contract of the one or more software interfaces implemented by the target network-connected device, use the selected cloud-based software service to process data received from the target network-connected device or send commands to the target network-connected device, and the selected cloud-based software service is executed at the cloud platform.

13. The method according to claim 12, wherein the semantic description includes one or more defined events that can be generated by the network-connected device.

14. The method according to claim 13, wherein the one or more events are selected from the group consisting of: physical properties measured by the network-connected device, device status events, device alert events, and device error events.

15. The method according to claim 12, wherein the semantic description includes one or more software commands implemented by the network-connected device.

16. The method according to claim 12, wherein the multiple software interfaces and the multiple cloud-based software services are extensible.

17. The method according to claim 12, wherein the selected one or more cloud-based software services are executed by an edge computing device separate from the cloud platform, and the edge computing device is configured to store the one or more cloud-based software services.

18. A computer system, Comprising: One or more processors of one or more server devices of a cloud platform, configured to: Store multiple software interfaces at the cloud platform, the multiple software interfaces being implemented by software programs associated with network-connected devices and cloud-based software services, where each software interface defines an explicit interaction contract between the software program associated with the network-connected device and the cloud-based software service that implements the software interface, and where each software interface includes a semantic description of one or more functions and descriptive characteristics of the network-connected device and the associated software program that implements the software interface, and the one or more functions and descriptive characteristics are accessible to the cloud-based software service that implements the software interface; Store multiple cloud-based software services on the cloud platform, each cloud-based software service being configured to implement a corresponding subset of the multiple software interfaces and being configured to interact with the one or more functions and descriptive characteristics of the network-connected device and the associated software program, and the associated software program implements the corresponding subset of the multiple software interfaces; Receive an indication of one or more software interfaces implemented at the target software program associated with the target network-connected device, where the target software program is configured to control the associated target network-connected device; Compare the one or more software interfaces implemented at the target software program configured to control the associated target network-connected device with the corresponding subsets of the multiple software interfaces implemented by each of the multiple cloud-based software services; Identify a match between the one or more software interfaces implemented at the target software program configured to control the associated target network-connected device and the matching subset of the multiple software interfaces implemented by one or more matching cloud-based software services, where the match indicates that the one or more matching cloud-based software services are configured to interact with one or more functions and descriptive characteristics of the target software program associated with the target network-connected device; Select one or more cloud-based software services from the one or more matching cloud-based software services; And Process data received from or send commands to the target software program associated with the target network-connected device using the selected cloud-based software services according to the explicit interaction contract of the one or more software interfaces implemented by the target software program.

Citation Information

Patent Citations

  • Discovering cloud-based services for IoT devices in an IoT network associated with a user

    US20150156266A1