Explicit interaction contracts for network connected devices

A computer system is provided 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. The one or more processors are configured to execute a plurality of software services. Each software service defines one or more software interfaces operated on by that 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 on by the plurality of software services, and process data received from the network connected device using the selected software services.

BACKGROUND

Typically, software solution backend development for internet of things (IoT) devices may be performed by different teams, organizations or vendors. Interoperability issues between the device code and the software solution backend can increase development times and increase workload for the developers. Additionally, software solutions developed for one IoT device type may typically only be applicable to that device type, and are not quickly adaptable to other IoT device types.

SUMMARY

A computer system is provided 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. The one or more processors are configured to execute a plurality of software services. Each software service defines one or more software interfaces operated on by that software service. The one or more processors are configured to receive, from a network connected device, an indication 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 on by the plurality of software services, and process data received from the network connected device or send a command to the network connected device using the selected software services according to the explicit interaction contracts of the one or more software interfaces.

DETAILED DESCRIPTION

To address these issues, a computer system10is provided.FIG. 1illustrates a computer system10that includes a cloud platform12configured to store and manage a plurality of software interfaces14. In one example, the plurality of software interfaces14may include platform software interfaces15that are provided and controlled by the cloud platform12. The plurality of software interfaces14may further include custom software interfaces16that are created by manufacturers of network connected devices18, developers of software services20, or other users of the cloud platform12. Each software interface14defines explicit interaction contracts between network connected devices18operated by customers and users of the cloud platform12and software services20created by developers. The software services20may be developed by the manufacturers of the network connected devices18, by third party developers unrelated to the manufacturers of the network connected devices18, by the users of the network connected devices18, and by other users of the cloud platform12. An explicit interaction contract is a data file that defines the schemas and protocols according to which data should be sent and received between a client and server, for example.

In one example, the cloud platform12comprises one or more processors22configured to execute the processes and functions of the cloud platform12described herein. The cloud platform may include one or more server devices configured to operate in a cloud computing configuration. As illustrated inFIG. 1, the cloud platform12is configured to execute a plurality of software services20, each software service defining one or more software interfaces14operated on by that software service20. In one example, the plurality of software services20are configured to process data according to the explicit interaction contracts of the one or more software interfaces14that the software service20has been developed to utilize. These software services20may be developed by first or third parties, and uploaded to the cloud platform12. In one example, the cloud platform12may perform testing, authentication, and certification processes on each uploaded software service before making those software services available on the cloud platform12. For example, the cloud platform12may be configured to test whether each software service20correctly implements one or more software interfaces14. These software services20may then be stored and executed on the cloud platform12to process data from network connected devices18operated by users of the cloud platform12.

FIG. 2illustrates an example of a plurality of network connected devices18distributed around an example physical environment, namely, a house of a user. The network connected devices may be configured to connect to a wide area network (WAN) via a router24. As a specific example, the router24may take the form of a wireless network device mediating a wireless network that may be utilized by the plurality of network connected devices18in the physical environment. In another example, the plurality of network connected devices18may be configured to communicate with a user computing device26configured to connect to the WAN via the router24.

The plurality of network connected devices18may take different forms and may perform different processes and functions. In the specific example illustrated inFIG. 2, the network connected devices18include a thermostat28, a fireplace thermometer30, a body thermometer32, and a pet food measuring device34. It should be appreciated that the specific example network connected devices18illustrated inFIG. 2are merely exemplary, and that the network connected devices may take other suitable forms. As a few other non-limiting examples, the network connected devices18may take the form of a GPS unit, a vibration/movement sensor, printer, router, lights, HVAC unit, robot, smart speaker, smart watch, asset tracker, a speaker, a smart coffee machine, a refrigerator sensor, other types of sensors and measurement devices, other type of consumer or industrial IoT device, etc. that include processors, memory, stored programs, and communications interfaces that are able to connect to remote servers via computer networks. In the example illustrated inFIG. 2, each network connected device18is configured to measure a physical parameter, such as a temperature or a pet food level. However, it should be appreciated that the network connected devices18may take other forms that do not necessarily measure physical parameters, such as, for example, a network connected output device such a printer or display.

In one example, each network connected device18may include a processor or another type of hardware-logic component such as, for example, field-programmable gate arrays (FPGAs), program- and application-specific integrated circuits (PASIC/ASICs), program- and application-specific standard products (PSSP/ASSPs), system-on-a-chip (SOC), complex programmable logic devices (CPLDs), etc. The processor of each network connected device18may be configured to collect measured physical values via a sensor, perform a process or output, etc. The processor of each network connected device18may be further configured to send messages36from the network connected device18to the computing system12via the wireless network mediated by the router24and/or via the user computing device26. In the illustrated example, the user computing device26takes 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 appreciated that the client computer device26may take other suitable forms, such as, for example, a desktop computer device, a laptop computer device, smartphone, tablet computer device, etc.

Turning back toFIG. 1, in one example, when first connecting to a network, each network connected device18may be configured to communicate with a provisioning service38to perform an initialization process40. The initialization process40may include checking whether any updates to the firmware/software of the network connected device18are available. The initialization process40may also include initializing the network connected device18with an address of a gateway42for the cloud platform12. After receiving the address of the gateway42for the cloud platform12, each network connected device18may be configured to communicate with the cloud platform12via a WAN. In this example, the internet protocol address of the provisioning service38may be provided to each network connected device18by the manufacturer or seller of that network connected device18. In another example, the internet protocol address of the gateway42for the cloud platform12may be directly provided to the network connected device18A by the manufacturer or seller of the network connected device18.

As illustrated inFIG. 1, each network connected device18may be configured to send an indication of software interfaces14to the cloud platform12implemented by that network connected device18. The indication may take the form, for example of a list44. In one example, each network connected device18may be manufactured to implement one or more software interfaces14, such as, for example, platform software interfaces15or custom software interfaces16indexed by the cloud platform12. For example, the software/firmware of the network connected device18may be developed to conform to the explicit interaction contracts of the one or more software interfaces14the network connected device18is implementing. In one example, the list44of software interfaces may sent to the cloud platform12by the provisioning service38, such as, for example, during the initialization process40. In another example, an edge computing device60, such as an edge gateway, may be configured to communicate with the network connected device18, and forward the list44of software interfaces to the cloud platform12.

In another example, the one or more software interfaces14for a network connected device18may be implemented by a network connected device associated software program19executed by a cloud computer device17. The network connected device associated software program19may be configured to command and control one or more associated network connected devices18. In the example illustrated inFIG. 1, the network connected device associated software program19is configured to communicate with the example network connected device18B. The network connected device associated software program19is further configured to perform the functions and processes of the network connected devices18described herein. For example, the network connected device associated software program19may be configured to send the list of software interfaces44to the cloud platform12as well as send and received messages36with software services20executed on the cloud platform12. The cloud computer device17executing the network connected device associated software program19may be a cloud server of the cloud platform12, or may be a computer device separate from the cloud platform12. In another example, an edge computing device60may implement the network connected device associated software program19, and may similarly be configured to command and control one or more associated network connected devices18, and send and received messages with the cloud platform12.

As a specific example, the network connected device associated software program19may take the form of a software-controlled conference room. The network connected devices18associated with the network connected device associated software program19may include network connected lights that may be turned on/off by the network connected device associated software program19, occupancy sensors that may send occupancy data to the network connected device associated software program19, network connected air conditioning devices, etc. Further in this example, the network connected device associated software program19may be configured to implement one or more software interfaces14, and may send/receive messages with software services20on the cloud platform. For example, a software service on the cloud platform may include code to command the network connected device associated software program19to turn the network connected light devices of the conference room on or off based on occupancy data received from an occupancy sensor network connected device.

In one example, each software interface14includes a semantic description of one or more capabilities and descriptive attributes of the network connected device18accessible by the plurality of software services20. As a specific example, the semantic descriptions of the software interfaces14may be described using JavaScript Object Notation for Linked Data (JSON-LD). JSON-LD is designed to be usable directly as JSON as well as usable in Resource Description Framework (RDF) systems that provides a standard for describing resources in a distributed, extensible way. The semantic descriptions of the software interfaces14provide semantic type annotations of the one or more capabilities and descriptive attributes of the network connected devices18, so that analytics, machine learning, user interfaces, and other computation can reason about the semantics of data received from that network connected device18. It will be understood that semantic type annotations are human readable and machine readable, and can form the basis for downstream searching and data analytics of human readable and machine readable categories of data. For example, physical values measured by the thermostat28, the fireplace thermometer30, and/or the body thermometer32example networked connected devices18ofFIG. 2may be semantically annotated as “temperature”. In this manner, the measured physical values sent to the cloud platform12by the these example network connected devices18can be reasoned about as temperature (charted together, compared, converted to like units, etc.).

FIG. 3illustrates an example software interface14. The one or more capabilities and descriptive attributes of the network connected devices18may include device property data46, telemetry data48, software commands50, and audio and/or video streaming capabilities51implemented by the network connected device, as a few non-limiting examples. However, it should be appreciated that other types of capabilities and descriptive attributes not described herein may also be included in the software interfaces14. These capabilities describe related sets of functionalities utilized by the particular type of network connected device18, such as, for example, the capabilities of a thermometer, a pet food measurement unit, an asset tracker, etc. In one example, the semantic description of the software interface14includes a network connected device property46selected from the group consisting of a network connected device model, a network connected device serial number, a network connected device manufacturer, a network connected device operating system, a network connected device memory property, and a network connected device type. The network connected device model may be a model number or identification set by a manufacturer of that network connected device18. The network connected device serial number may be a serial number set by a manufacturer of that network connected device18. The network connected device manufacturer may be a name of a manufacturer of that network connected device18. The network connected device memory property may be a total memory size, a memory type, a manufacturer of the network connected device's memory, etc. The network connected device type may be a semantic description of the networked connected device, such as, for example, “thermometer”, “asset tracker”, etc. However, it should be appreciated that other types of read-only or read/write properties of a network connected device18may also be included in the software interface14for the network connected device property data46.

In another example, the semantic description of the software interface14includes one or more defined events that can be generated by the network connected device18and emitted as telemetry data48. The one or more defined events are selected from the group consisting of a physical property measured by the network connected device, a device state event, a device alert event, and a device error event. The semantic description for the physical property measured by the network connected device18may describe the physical property being measured and a data type for the property. For example, the semantic description for a thermometer network connected device18may indicate that the physical property being measured is a temperature, and that the value sent by the thermometer network connected device18is a double data type. The semantic description for the device state events may indicate how the network connected device18will be configured to emit device state information that may be captured by the software services20. The semantic description for the network connected device alert and error events may indicate what type of alerts and events that the network connected device18is configured to emit, and a type for those alerts and errors. It should be appreciated that the defined events described above are merely exemplary, and that other types of events may be semantically described in the software interfaces14.

In another example, the semantic description of the software interfaces14includes one or more software commands implemented by the network connected device18. The semantic description may describe the functions and operations that the network connected device18can be instructed to execute by the software services20. For example, the semantic description may describe a function name for the available commands, a developer comment describing what that command will do, a type of command execution such as synchronous or asynchronous, a data type for an input to the command, and a data type for an output of the command.

FIG. 4illustrates a specific example of a software interface14. The example software interface14includes a semantic description52of one or more capabilities and descriptive attributes of the network connected devices18. In the illustrated example, the semantic description52includes a defined telemetry event54for physical property data measured by the network connected device. As illustrated inFIG. 4, the defined telemetry event54further includes an additional semantic type “Temperature”, which may be used to indicate that the telemetry data can be reasoned about as both telemetry and temperature. The semantic description52also indicates that the physical property measured by the associated network connected device18will be emitted as a double data type. Thus, any software service20configured for the illustrated software interface14can expect that the data emitted by the network connected device is a temperature value of the double data type, and may process that data accordingly. In this manner, the data emitted by the network connected device can be reasoned about as temperature (charted together, compared, converted to like units, etc.) by those software services20. As another specific example, a body thermometer network connected device may implement a software interface14that includes a defined telemetry event54that further includes a BodyTemperature semantic type (e.g. {“@type”: [“Telemetry”, “Temperature”, “BodyTemperature” ], “name”: “temp”, “schema”: “double” }), which may be used to indicate that the telemetry data can be reasoned about as telemetry, temperature, and body temperature. It should be appreciated that while the examples illustrated inFIG. 4and described above are based on the JSON-LD way of expressing semantic types, the software interfaces14are not limited to the JSON-LD. The software interfaces14may utilize any other suitable programming language, and may express semantic type via other suitable means.

In the illustrated example, the software interface further includes a semantic description for an example network connected device property56. However, it should be appreciated that software interfaces14may include semantic descriptions for any suitable number of capabilities and attributes of network connected devices, such as, for example, one, three, seven, etc. As illustrated, the semantic description52for the example network connected device property56indicates that the network connected device includes a SETPOINTTEMP property that is writable with a double data type value. Similarly as described above with the defined telemetry event54, the SETPOINTTEMP writable property may include a temperature semantic type (e.g. {“@type”: [“Property”, “Temperature” ],) Thus, software services20configured to operate on the software interface illustrated inFIG. 4may reason that the SETPOINTTEMP is both a property and a temperature, and may send instructions to the thermostat network connected device to set its SETPOINTTEMP value to particular temperature value. As both the thermostat network connected device and the particular software service20are configured for the example software interface illustrated inFIG. 4, both the manufacturer of the thermostat network connected device and the developer of the particular software service20may have a common understanding of how the SETPOINTTEMP value of the thermostat network connected device may be manipulated. Further, in this manner, the software service20implementing the software interface will also be compatible with other network connected devices which may take other forms or created by other manufacturers, if those other network connected devices are implanting the software interface14illustrated inFIG. 4.

Turning back toFIG. 1, each network connected device18may be configured to implement one or more of the software interfaces14. The cloud platform12is configured to receive, from a network connected device18, an indication such as a list44of the one or more software interfaces14implemented by the network connected device18. In one example, the one or more software interfaces14includes one or more platform software interfaces15managed by the cloud platform12and/or one or more custom software interfaces16created by manufacturers and developers. The platform software interfaces15may include, for example, software interfaces14for device information, application management, certification management, diagnostic logs, factory reset functions, reboot management, etc. However, it should be appreciated that developers and manufacturers may create and manage their own custom software interfaces16that may be implemented by the software services20and network connected devices18.

After receiving the list44of software interfaces from the network connected device18, the cloud platform12may be configured to select one or more software services20based on a match between the one or more software interfaces14implemented by the network connected device18and the one or more software interfaces14operated on by the plurality of software services20. In the example illustrated inFIG. 1, the network connected device18A is configured to implement the software interfaces A and software interface B of the plurality of software interfaces14. After receiving the list44of software interface44from the network connected device18A, which, in this specific example, includes software interface A and software interface B, the cloud platform12is configured to compare the receive list44of software interfaces to the software services20known to the cloud platform12. In particular, the cloud platform12may be configured to filter the plurality of cloud services20based on the list44of software interfaces44received from the network connected device18A. In the illustrated example, the software service20A is configured to operate on the software interface A, and the software service20B is configured to operate on the software interface B. Thus, the cloud platform12may be configured to select the software services20A and20B to process data and operate the network connected device18A.

In one example, the software services20are executed by one or more server devices of the cloud platform12, and the cloud platform12is configured to process data received from the network connected device18using the selected software services20according to the explicit interaction contracts of the one or more software interfaces14. As a specific example, messages36received from and sent to the network connected device18may include a software interface tag58which indicates a particular software interface14that the data in the message36is associated with or otherwise conforms to. As a specific example, the thermostat network connected device may be configured to tag each message36that includes measured values for temperature data with a software interface tag58indicating the example software interface14ofFIG. 4.

After receiving a message36, the cloud platform12may be configured to route the message36to the selected software service20configured for the software interface14indicated in the software interface tag58of that message36. In this manner, each message36may be routed to and processed by the appropriate software service20. Messages36sent by software services20, such as, for example, software commands50, may also be tagged with the appropriate software interface tag58and sent to the network connected device18over the WAN.

In another example, the cloud platform12may be configured to identify an edge computing device60that may be configured to execute one or more software services20managed by the cloud platform12, and is logically located on the same side of a WAN as the network connected device18relative to the cloud platform12. As illustrated inFIG. 1, after identifying an edge computing device60, the cloud platform12may be configured to send one or more of the selected software services20to the edge computing device60, which may be configured to execute those software services20. The cloud platform12may configure the network connected device18to route messages processed by the selected software service20to the edge computing device60. Additionally, commands and messages from the cloud platform12to the network connected device18may also be routed through the edge computing device60. In this example, the traffic from the cloud platform12may be processed by the edge computing device60, which may send further commands and/or messages to the network connected device18. The edge computing device60may be configured to process the messages36with the selected software service20as described herein, and perform and functions or processes of the selected software service20. In this manner, the one or more selected software services20are executed by the edge computing device60that is separate from the cloud platform12configured to store the one or more software services20. In the example illustrated inFIG. 1, software service20B has been sent to the edge computing device60. Thus, the example network connected device18A may be instructed to route messages36associated with the software interface B to the edge computing device60. On the other hand, messages36associated with the software interface A may be routed to the cloud platform12, which is configured to execute the software service20A configured to operate on the software interface A.

In one example, the cloud platform12is further configured to match the one or more software services20to the network connected devices18based on a ranking factor62for the software services62. For example, if more than one software service20operates on the one or more software interfaces14implemented by the network connected device18, the cloud platform12may be configured to select a preferred software service from the more than one software service20based on a ranking factor62. The preferred software service20may subsequently be used to process data from the network connected device18as described above. In one example, the ranking factor62may include a popularity metric, a user score metric, an association factor, and a match score. The popularity metric may track how often that particular software service20is selected compared to other similar software services20that operate on similar software interfaces. The user score metric may track a user input of a score for each software service, such as a score of 1-10. The association factor may track whether the developer of a software service20is associated with the manufacturer of a network connected device, such that software services and network connected devices created by the same or associated parties may be selected together. The match score may indicate how closely the software interfaces14of the software service20matches the software interfaces of the network connected device.

In the example illustrated inFIG. 1, while both the software service20A and the software service20D operate on software interface A implemented by the network connected device18A, the software service20D also operates on software interface B which is also implemented by the network connected device18A. Thus, based on the ranking factor62of a match score factor, the cloud platform12may be configured to select the software service20D to match with the network connected device18A.

In these examples, the cloud platform12has been described as selecting and matching software services20to the network connected devices18automatically. In another example, the cloud platform12may be further configured to present a list of selected software services20that match with the network connected device18to the user of the network connected device18. As a specific example, the user may access a user account on the cloud platform12via a computing device, such as, for example, the user computing device26illustrated inFIG. 2. The user may control their selected software services20for operating their network connected devices through their user account on the cloud platform12. In this example, the list of selected software services20may be presented to the user via an interface of the cloud platform12shown on a display of the user computing device26. The list of selected software services20may be ranked based on the ranking factor for software services62. The user may then select one or more software services20from the list. The user selected software services20may then be used to process data and operate the network connected device18as described herein.

In one example, the plurality of software interfaces14and the plurality of software services20are extensible. For example, users may select a software interface14, and add additional semantic description and/or additional interaction contracts to the selected software interface14. After extending the selected software interface, the extended software interface may be uploaded to the cloud platform12.

Similarly, the software services20are extensible. Users may select one or more software services20stored on the cloud platform12, and add additional code to the selected software service. The extended software service20may then be uploaded to the cloud platform12and used to process data from a network connected device18of that user. In this manner, users may utilize already existing software interfaces14and software services20available on the cloud platform12to generate their own software solutions by extending those existing software interfaces14and software services20to meet their specific needs.

As another example, the software interface ofFIG. 4may be applied to the thermostat28, the fireplace thermometer30, and the body thermometer32network connected devices illustrated inFIG. 2. However, while all three network connected devices measure the physical property of temperature, the ranges of expected temperatures for each network connected device may be different. For example, the thermostat network connected device28may expect temperature ranges between 60-80 degrees Fahrenheit, the fireplace thermometer network connected device30may expect temperature ranges between 400-800 degrees Fahrenheit, and the body thermometer network connected device32may expect temperature ranges at around 97-100 degrees Fahrenheit. Thus, the user may extend the example software interfaces ofFIG. 4to semantically describe the temperature measured by the specific network connected device. For example, the software interface for the thermostat network connected device28may be extended to semantically describe its measurements as “ROOM TEMP” while the software interface for the body thermometer network connected device may be extended to semantically describe its measurements as ‘BODY TEMP”. Further, the user may extend the example software interfaces ofFIG. 4to add additional data and capabilities to the software interfaces. For example, the user may add an operational range to a temperature value, such as, for example, 400-800 degrees Fahrenheit for the fireplace thermometer network connected device30. The operational range may control the range of temperatures that the network connected device will be configured to detect. Once the example software interface ofFIG. 4has been extended with an operational range capability, software services20on the cloud platform12may then be configured to send commands to a network connected device to set and manage its operational range according to the extended software interface.

FIG. 5illustrates an example extended software interface64. In this example, the user has selected the example software interface14illustrated inFIG. 4, and has added a new telemetry capability66to the software interface14. As illustrated, the extended software interface64includes a telemetry capability with a semantic description identifying that the physical value being measured is a “GPS” value that is provided in the double data type. The extended software interface64may then be uploaded by the user to the cloud platform12. The user may further select a software service stored on the cloud platform12, and add additional code to the selected software service to appropriately process the user's extended software interface64. In another example, the extension to the software interface14may be authored and stored separately from the original software interface. In the specific example illustrated inFIG. 5, rather than adding the new telemetry capability66to the code of the original software interface14, the new telemetry capability66could be authored and stored separately from the original interface, and uploaded to the cloud platform12with an indication that the new telemetry capability66is an extension to the original software interface stored on the cloud platform12.

FIG. 6is a flow chart of a method600implemented at a computer system including one or more processors. Method600may be executed using the systems described above or utilizing other suitable hardware and software elements.

At602, the method600may include, at a computer system including one or more processors, storing 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 descriptions of the software interfaces14may be described using JSON-LD. JSON-LD is designed to be usable directly as JSON as well as usable in Resource Description Framework (RDF) systems that provides a standard for describing resources in a distributed, extensible way. A specific example of extending a software interface is illustrated inFIG. 5.

In one example, each software interface includes a semantic description of one or more capabilities and descriptive attributes of the network connected device accessible by the plurality of software services. The semantic descriptions of the software interfaces14provide semantic type annotations of the one or more capabilities and descriptive attributes of the network connected devices18, so that analytics, machine learning, user interfaces, and other computation can reason about the semantics of data received from that network connected device18.

In this example, the semantic description may include a network connected device property selected from the group consisting of a network connected device model, a network connected device serial number, and a network connected device type. The network connected device model may be a model number or identification set by a manufacturer of that network connected device18. The network connected device serial number may be a serial number set by a manufacturer of that network connected device18. The network connected device type may be a semantic description of the networked connected device, such as, for example, “thermometer”, “asset tracker”, etc.

In another example, the semantic description may include one or more defined events that can be generated by the network connected device. In this example, the one or more events are selected from the group consisting of a physical property measured by the network connected device, a device state event, a device alert event, and a device error event. The semantic description for the physical property measured by the network connected device18may describe the physical property being measured and a data type for the property. For example, the semantic description for a thermometer network connected device18may indicate that the physical property being measured is a temperature, and that the value sent by the thermometer network connected device18is a double data type.

In another example, the semantic description includes one or more software commands implemented by the network connected device. The semantic description may describe the functions and operations that the network connected device18can be instructed to execute by the software services20. For example, the semantic description may describe a function name for the available commands, a developer comment describing what that command will do, a type of command execution such as synchronous or asynchronous, a data type for an input to the command, and a data type for an output of the command.

At604, the method600may include, at the computer system, executing a plurality of software services, each software service defining one or more software interfaces operated on by that software service. The software services may be developed by first or third parties, and uploaded to the computer system. Each software service specifies one or more software interfaces that the software service is configured to interact with.

At606, the method600may include, at a network connected device, sending an indication, such as a list, of one or more software interfaces implemented by the network connected device. The list indicates each of the software interfaces that the network connected device was manufactured to comply with. These software interfaces may be selected from a plurality of platform software interfaces and/or custom software interfaces.

At608, the method600may include, at the computer system, receiving the list of one or more software interfaces implemented by the network connected device.

At610, the method600may include, at the computer system, 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 on by the plurality of software services. For example, if more than one software service20operates on the one or more software interfaces14implemented by the network connected device18, step610may further include selecting a preferred software service from the more than one software service20based on a ranking factor62. In one example, the ranking factor62may include a popularity metric, a user score metric, an association factor, and a match score.

At612, the method600may include, at the network connected device18, sending data to the computer system. The sent data may include various events, such as, for example, a measured physical property, a device state event, a device error or alert event, etc. The measured physical properties may, for example, include sensor data measured by sensors of the network connected device. Sent messages may further include a software interface tag58which indicates a particular software interface that the data in the message36is associated with or otherwise conforms to.

At614, the method600may include, at the network connected device18, processing data received from the network connected device using the selected software services according to the explicit interaction contracts of the one or more software interfaces. In one example, the selected one or more software services may be executed by an edge computing device of the computer system separate from a cloud platform of the computer system configured for storing the one or more software services, as illustrated inFIG. 1.

At616, the method600may include, at the computer system10, sending a command to the network connected device according to the explicit interaction contracts of the one or more software interfaces. The commands that the software service executed by the computer system may send to the network connected device are defined in the implemented one or more software interfaces. The one or more software interfaces may further define arguments for the commands, return values for the commands, etc. In examples where the 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 appreciated that steps614and616may be enacted any suitable number of times and in any order.

At618, the method600may include, at the network connected device18, receiving the command from the computer system10. The network connected device18may then process and enact the command, and return one or more values to the computer system10if applicable.

FIG. 7schematically shows a non-limiting embodiment of a computing system700that can enact one or more of the methods and processes described above. Computing system700is shown in simplified form. Computing system700may embody the computer system10, the network connected devices18, the edge computing device60, the client computing device26, and other computing devices described above and illustrated inFIG. 1andFIG. 2. Computing system700may 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 phone), and/or other computing devices such as industrial devices (e.g. industrial equipment, robots, etc.) and consumer devices (e.g. cars, coffee machines, appliances, etc.), and wearable computing devices such as smart wristwatches and head mounted augmented reality devices.

Computing system700includes a logic processor702volatile memory704, and a non-volatile storage device706. Computing system700may optionally include a display subsystem708, input subsystem710, communication subsystem712, and/or other components not shown inFIG. 7.

Non-volatile storage device706includes one or more physical devices configured to hold instructions executable by the logic processors to implement the methods and processes described herein. When such methods and processes are implemented, the state of non-volatile storage device706may be transformed—e.g., to hold different data.

Volatile memory704may include physical devices that include random access memory. Volatile memory704is typically utilized by logic processor702to temporarily store information during processing of software instructions. It will be appreciated that volatile memory704typically does not continue to store instructions when power is cut to the volatile memory704.

Aspects of logic processor702, volatile memory704, and non-volatile storage device706may be integrated together into 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-a-chip (SOC), and complex programmable logic devices (CPLDs), for example.

When included, display subsystem708may be used to present a visual representation of data held by non-volatile storage device706. The visual representation may take the form of a graphical user interface (GUI). As the herein described methods and processes change the data held by the non-volatile storage device, and thus transform the state of the non-volatile storage device, the state of display subsystem708may likewise be transformed to visually represent changes in the underlying data. Display subsystem708may include one or more display devices utilizing virtually any type of technology. Such display devices may be combined with logic processor702, volatile memory704, and/or non-volatile storage device706in a shared enclosure, or such display devices may be peripheral display devices.

The following paragraphs provide additional support for the claims of the subject application. One aspect provides a computer system comprising 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 on by that software service, receive, from a network connected device, an indication 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 on by the plurality of software services, and process data received from the network connected device or send a command to the network connected device using the selected software services according to the explicit interaction contracts of the one or more software interfaces. In this aspect, additionally or alternatively, each software interface may include a semantic description of one or more capabilities and descriptive attributes of the network connected device accessible by the plurality of software services. In this aspect, additionally or alternatively, the semantic description may include a network connected device property of the network connected device. In this aspect, additionally or alternatively, the network connected device property may be selected from the group consisting of a network connected device model, a network connected device serial number, a network connected device manufacturer, a network connected device operating system, a network connected device memory property, a network connected device type, and a read-write property. 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 consisting of a physical property measured by the network connected device, a device state event, a device alert event, and a device error event. 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 consisting of a popularity metric, a user score metric, an association factor, and a 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 user with a list of software services based on the indication of one or more software interfaces implemented by the network connected device, and receive a user 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 a cloud platform configured to store the one or more software services.

Another aspect provides a method comprising, at a computer system including one or more processors, storing a plurality of software interfaces that define explicit interaction contracts between network connected devices and software services, executing a plurality of software services, each software service defining one or more software interfaces operated on by that software service, receiving, from a 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 on by the plurality of software services, and processing data received from the network connected device or sending a command to the network connected device using the selected software services according to the explicit interaction contracts of the one or more software interfaces. In this aspect, additionally or alternatively, each software interface may include a semantic description of one or more capabilities and descriptive attributes of the network connected device accessible by 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 consisting of a physical property measured by the network connected device, a device state event, a device alert event, and a device error event. 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 the computer system separate from a cloud platform of the computer system configured for storing the one or more software services.

Another aspect provides a computer system comprising one or more processors configured to store a plurality of software interfaces that define explicit interaction contracts between software programs associated with network connected devices and software services, store a plurality of software services, each software service defining one or more software interfaces operated on by that software service, receive, from a software program associated with a network connected device, an indication of one or more software interfaces implemented by the software program, wherein 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 on by the plurality of software services, and process data received from the software program associated with the network connected device or send a command to the software program associated with the network connected device using the selected software services according to the explicit interaction contracts of the one or more software interfaces.