Internet of Things application software development platform
By providing an integrated development platform, including source code editors and application builders, users can develop applications that can interact with different types and manufacturers of IoT devices, solving the problem that users cannot effectively utilize IoT device functions in the prior art. It realizes cross-platform IoT application development and extensive device interoperability.
Patent Information
- Application Number
- CN202411092076.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-08-09
- Filing Date
- 2024-08-09
- Publication Date
- 2025-02-18
AI Technical Summary
The prior art is difficult to provide a unified platform that allows users to develop applications that can interact with different types and manufacturers of Internet of Things (IoT) devices, and users cannot effectively utilize the capabilities of IoT devices.
Provides a platform for developing applications that interact with IoT devices, including source code editors and application builders. The source code editor enables users to generate source code for IoT applications, while the application builder generates executable versions suitable for different devices based on the generated source code. The platform also provides simulators, model libraries, model editors, application templates and wizards to help users develop and deploy IoT applications.
Through this platform, users can generate cross-platform IoT applications, which can run on IoT devices of different types and manufacturers. Users can effectively utilize the functions of IoT devices to achieve wider device interoperability and functional expansion.
Smart Images

Figure CN119473241A_ABST
Abstract
Description
Background Art Technical Field
[0001] The present disclosure relates generally to platforms for developing software applications, and more particularly to platforms for developing software applications configured to control or otherwise interact with one or more Internet of Things (IoT) devices. Summary of the invention
[0002] Embodiments of systems, apparatuses, articles of manufacture, methods and / or computer program products, and / or combinations and sub-combinations thereof, are provided herein to provide a platform for developing applications that interact with a group of IoT devices. Embodiments provide a source code editor that enables a user to generate source code for an application, and an application builder that generates an executable version of the application based at least on the generated source code. Enabling a user to generate source code for an application includes enabling a user to define an input or output of the application as an event, and when the application is installed in a first group of IoT devices, the event can be mapped to a first group of IoT devices in a first IoT device network, and when the application is installed in a second group of IoT devices, the event can be mapped to a second group of IoT devices in a second IoT device network, and the first group of IoT devices includes at least one device type that is not included in the second group of IoT devices.
[0003] In one embodiment, the source code editor enables a user to associate a generic IoT device function with an event, and when the application is installed in a first IoT device, the generic IoT device function can be mapped to a first IoT device in a first IoT device network, and when the application is installed in a second IoT device, the generic IoT device function can be mapped to a second IoT device in a second IoT device network.
[0004] In another embodiment, the source code editor enables a user to associate a generic IoT device type with an event, and when the application is installed in the first IoT device, the generic IoT device type can be mapped to a first IoT device in a first IoT device network, and when the application is installed in the second IoT device, the generic IoT device type can be mapped to a second IoT device in a second IoT device network.
[0005] In another embodiment, when the inputs to the application are defined as events, the source code editor enables the user to specify a machine learning model for identifying event occurrences.
[0006] In another embodiment, providing an application builder includes: providing the application builder based at least on source code of a generated application, the application builder generating two or more of the following: an executable version of the application suitable for installation and execution on an IoT device; an executable version of the application suitable for installation and execution on a user device; an executable version of the application suitable for installation and execution on a cloud computing platform; or an executable version of the application suitable for distributed installation and execution on multiple devices.
[0007] In a further embodiment, the source code editor enables a user to selectively generate source code in one of a plurality of programming languages, and the application builder is configured to generate an executable version of the application based at least on the application source code selectively generated in one of the plurality of programming languages.
[0008] In another embodiment, providing a platform for developing applications also includes providing a simulator, which allows a user to install the application to an IoT device simulation network and execute the application thereon. According to this embodiment, providing a platform for developing applications may also include providing a model library, wherein each model in the model library defines a different IoT device simulation network, and the simulator may enable a user to select a model in the model library, and install the application to the IoT device simulation network defined by the selected model and execute the application thereon. According to another embodiment, providing a platform for developing applications may also include providing a model editor, which allows a user to create a new model or modify an existing model in the model library.
[0009] In another embodiment, providing a platform for developing applications further includes providing an application template, wherein the application template can be customized by a user to generate source code of the application.
[0010] In another embodiment, providing a platform for developing an application further comprises providing a wizard, wherein the wizard guides a user through a series of steps to generate source code of the application. BRIEF DESCRIPTION OF THE DRAWINGS
[0011] The accompanying drawings are incorporated herein and constitute a part of this specification.
[0012] Figure 1 A block diagram of a multimedia environment is shown in accordance with some embodiments.
[0013] Figure 2 A block diagram of a streaming media device according to some embodiments is shown.
[0014] Figure 3 A block diagram of a system for developing and distributing IoT applications according to some embodiments is shown.
[0015] Figure 4A block diagram of a platform for developing IoT applications according to some embodiments is shown.
[0016] Figure 5 A flow chart of a method of providing a platform for developing IoT applications according to some embodiments is shown.
[0017] Figure 6 A flow chart of a method for generating different executable versions of an IoT application for installation and execution on a variety of different host devices is shown.
[0018] Figure 7 A flow chart of a method for providing a platform for developing IoT applications that enables users to execute IoT applications on a simulated network of IoT devices is shown.
[0019] Figure 8 An example computer system is shown that can be used to implement various embodiments.
[0020] In the drawings, like reference numbers generally refer to like or similar elements. Additionally, the left-most digit(s) of a reference number generally identifies the drawing in which the reference number first appears. DETAILED DESCRIPTION
[0021] Modern living and working spaces, such as homes, hotels or offices, are increasingly equipped with many devices configured for digital communication. These devices can range from traditional Internet-connected devices such as personal computers, phone systems, security systems, gaming systems and over-the-top (OTT) streaming players to new devices, including "smart home" devices such as connected appliances, utilities, lights, switches, power sockets and speakers, as well as wearable devices such as watches and / or health monitors, among others. These devices are often referred to as "Internet of Things" (IoT) devices.
[0022] Typically, software used to control IoT devices (such as "smart home" devices) is developed by the manufacturer of the IoT device and pre-installed on the IoT device before it is distributed to consumers. Therefore, consumers can only control the IoT device using this software provided by the manufacturer. In addition, the software included with a particular IoT device generally only provides limited functionality directly related to the specific sensors and / or actuators present on that IoT device. Furthermore, other than a set of predefined user-configurable device settings or preferences, there is generally no way for the end user to experiment or creatively exploit the functionality (e.g., hardware features) of the IoT device. Furthermore, a given user may own a set of different IoT devices, but these IoT devices generally cannot function together to perform useful functions unless they are manufactured by the same company and configured from the outset.
[0023] Provided herein are system, apparatus, device, method and / or computer program product embodiments, and / or combinations and sub-combinations thereof, to provide a platform for developing applications that interact with one or more IoT devices ("IoT applications"), and the applications can be distributed, for example, via IoT applications, which address one or more of the above-mentioned issues associated with traditional IoT device installations. Providing a platform for developing IoT applications may include providing a source code editor and an application builder, wherein the source code editor enables a user to generate source code for an IoT application, and the application builder is capable of generating an executable version of the application based at least on the generated source code for the IoT application.
[0024] Allowing a user to generate source code for an IoT application may include, for example, enabling the user to define an input of the IoT application or an output of the IoT application as an event, where the event can be mapped to a first group of IoT devices in a first IoT device network when the IoT application is installed in a first group of IoT devices, and where the event can be mapped to a second group of IoT devices in a second IoT device network when the IoT application is installed in a second group of IoT devices, where the first group of IoT devices includes at least one IoT device whose type is not included in the second group of IoT devices.
[0025] Providing an application builder may include: providing the application builder based at least on source code of a generated application, wherein the application builder generates two or more of the following: an executable version of the IoT application suitable for installation and execution on an IoT device; an executable version of the IoT application suitable for installation and execution on a user device; an executable version of the IoT application suitable for installation and execution on a cloud computing platform; or an executable version of the IoT application suitable for distributed installation and execution on multiple devices.
[0026] Providing a platform for developing IoT applications may include one or more of the following: providing a simulator that allows a user to install an application to a simulated network of IoT devices and execute the application thereon (for example, for testing and debugging IoT applications); providing a model library, wherein each model in the model library defines a different simulated network of IoT devices, and IoT applications can be installed in the simulated network of IoT devices through the simulator; providing a model editor that enables users to create new models or modify existing models in the model library; providing IoT application templates that can be customized by users to generate source code for IoT applications, or providing a wizard that guides users through a series of steps to generate source code for IoT applications.
[0027] These and various other features and advantages of a platform for developing IoT applications provided according to various embodiments will be described in detail herein. Figure 1102. However, it should be noted that the multimedia environment 102 is for illustration purposes only and is not limiting. Embodiments of the present disclosure may be implemented using and / or may be a part of an environment other than the multimedia environment 102 and / or other than the multimedia environment 102, as will be appreciated by one or more persons skilled in the relevant art based on the teachings contained herein. An example of the multimedia environment 102 will now be described.
[0028] Multimedia Environment
[0029] Figure 1 A block diagram of a multimedia environment 102 according to some embodiments is shown. In a non-limiting example, the multimedia environment 102 may refer to streaming media. However, the present disclosure is applicable to any type of media (instead of or in addition to streaming media), and any mechanism, means, protocol, method and / or process for distributing media.
[0030] The multimedia environment 102 may include one or more media systems 104. The media system 104 may represent a family room, kitchen, backyard, home theater, school classroom, library, car, boat, bus, airplane, movie theater, stadium, auditorium, park, bar, restaurant, or any other location or space where it is desirable to receive and play streaming media content. One or more users 132 may operate with the media system 104 to select and consume content.
[0031] Each media system 104 may include one or more media devices 106, each of which is coupled to one or more display devices 108. It should be noted that unless otherwise specified herein, terms such as "coupled," "connected to," "attached," "linked," "combined," and similar terms may refer to physical, electrical, magnetic, logical, and the like connections.
[0032] By way of example only, media device 106 may be a streaming device, a DVD or BLU-RAY device, an audio / video playback device, a cable box, and / or a digital video recording device. For another example, display device 108 may be a monitor, a television (TV), a computer, a smart phone, a tablet computer, a wearable device (such as a watch or glasses), a home appliance, an Internet of Things (IoT) device, and / or a projector. In some embodiments, media device 106 may be part of, integrated with, operably coupled to, and / or connected to its respective display device 108.
[0033] Each media device 106 can be configured to communicate with a network 118 via a communication device 114. The communication device 114 can include, for example, a cable modem or a satellite television transceiver. The media device 106 can communicate with the communication device 114 via a link 116, which can include a wireless (e.g., Wi-Fi) and / or wired connection.
[0034] In various embodiments, the network 118 may include, but is not limited to, a wired and / or wireless intranet, extranet, Internet, cellular, Bluetooth, infrared and / or any other short-range, long-range, local, regional, global communication mechanism, means, method, protocol and / or network, and any one or more combinations thereof.
[0035] The media system 104 may include a remote control 110. By way of example only, the remote control 110 may be any component, part, means, and / or method for controlling the media device 106 and / or the display device 108, such as a remote control, a tablet, a laptop, a smartphone, a wearable device, a screen control, integrated control buttons, audio controls, or any combination thereof. In one embodiment, the remote control 110 communicates wirelessly with the media device 106 and / or the display device 108 using cellular, Bluetooth, infrared, etc., or any combination thereof. The remote control 110 may include a microphone 112, which is further described below.
[0036] The multimedia environment 102 may include a plurality of content servers 120 (also referred to as content providers, channels, or sources 120). Figure 1 Only one content server 120 is shown in the figure, but in practice the multimedia environment 102 may include any number of content servers 120. Each content server 120 may be configured to communicate with the network 118.
[0037] Each content server 120 may store content 122 and metadata 124. Content 122 may include any combination of music, video, movies, television programs, multimedia, images, still pictures, text, graphics, game applications, advertisements, program content, public service content, government content, local community content, software, and / or any other electronic form of content or data objects.
[0038] In some embodiments, metadata 124 includes data about content 122. For example, metadata 124 may include associated or auxiliary information indicating or relating to writers, directors, producers, composers, artists, actors, summaries, chapters, productions, history, years, trailers, alternate versions, related content, applications, and / or any other information related to or associated with content 122. Metadata 124 may also or alternatively include links to any such information related to or associated with content 122. Metadata 124 may also or alternatively include one or more indexes to content 122, such as, but not limited to, a trick mode index.
[0039] The multimedia environment 102 may include one or more system servers 126. The system servers 126 may operate to support the media devices 106 from the cloud. It should be noted that the structural and functional aspects of the system servers 126 may exist in whole or in part in the same or different structural and functional aspects of the system servers 126.
[0040] The media devices 106 may be present in thousands or millions of media systems 104. Thus, the media devices 106 may be suitable for crowdsourcing embodiments, and the system servers 126 may therefore include one or more crowdsourcing servers 128.
[0041] For example, using information received from thousands and millions of media devices 106 in the media system 104, one or more crowdsourcing servers 128 can identify similarities and overlaps between closed captioning requests issued by different users 132 watching a particular movie. Based on this information, one or more crowdsourcing servers 128 can determine that turning on closed captioning can enhance the user's viewing experience at specific parts of the movie (e.g., when the original soundtrack of the movie is difficult to hear) and turning off closed captioning can enhance the user's viewing experience at other parts of the movie (e.g., when displaying closed captioning obstructs key visual aspects of the movie). Therefore, one or more crowdsourcing servers 128 can operate to automatically turn on and / or turn off closed captioning during future streaming of the movie.
[0042] The system server 126 may also include an audio command processing module 130. As described above, the remote control 110 may include a microphone 112. The microphone 112 may receive audio data from a user 132 (as well as other sources, such as a display device 108). In some embodiments, the media device 106 may be audio responsive, and the audio data may represent spoken commands from the user 132 to control the media device 106 as well as other components in the media system 104, such as the display device 108.
[0043] In some embodiments, audio data received by microphone 112 in remote control 110 is transmitted to media device 106 and then forwarded to audio command processing module 130 in system server 126. Audio command processing module 130 may process and analyze the received audio data to identify spoken commands of user 132. Audio command processing module 130 may then forward the spoken commands back to media device 106 for processing.
[0044] In some embodiments, the audio command processing module 216 in the media device 106 may alternatively or additionally process and analyze the audio data (see Figure 2 The media device 106 and the system server 126 may then collaborate to select one of the spoken commands to process (either the spoken command recognized by the audio command processing module 130 in the system server 126 or the spoken command recognized by the audio command processing module 216 in the media device 106).
[0045] Figure 2 A block diagram of a media device 106 according to some embodiments is shown. The media device 106 may include a streaming module 202, a processing module 204, a memory / buffer 208, and a user interface module 206. The user interface module 206 may include an audio command processing module 216, as described above.
[0046] The media device 106 may also include one or more audio decoders 212 and one or more video decoders 214 .
[0047] Each audio decoder 212 can be configured to decode audio in one or more audio formats, such as, but not limited to, AAC, HE-AAC, AC3 (Dolby Digital), EAC3 (Dolby Digital Plus), WMA, WAV, PCM, MP3, OGG GSM, FLAC, AU, AIFF and / or VOX, just as examples.
[0048] Similarly, each video decoder 214 can be configured to decode video in one or more video formats, such as, but not limited to, MP4 (mp4, m4a, m4v, f4v, f4a, m4b, m4r, f4b, mov), 3GP (3gp, 3gp2, 3g2, 3gpp, 3gpp2), OGG (ogg, oga, ogv, ogx), WMV (wmv, wma, asf), WEBM, FLV, AVI, QuickTime, HDV, MXF (OP1a, OP-Atom), MPEG-TS, MPEG-2PS, MPEG-2TS, WAV, Broadcast WAV, LXF, GXF and / or VOB, for example only. Each video decoder 214 may include one or more video codecs, such as but not limited to H.263, H.264, H.265, AVI, HEV, MPEG1, MPEG2, MPEG-TS, MPEG-4, Theora, 3GP, DV, DVCPRO, DVCPRO, DVCProHD, IMX, XDCAM HD, XDCAM HD422 and / or XDCAM EX, for example only.
[0049] See now Figure 1 and Figure 2 In some embodiments, for example, the user 132 may interact with the media device 106 via the remote control 110. For example, the user 132 may interact with the user interface module 206 of the media device 106 using the remote control 110 to select content, such as movies, television programs, music, books, applications, games, etc. The streaming module 202 of the media device 106 may request the selected content from one or more content servers 120 via the network 118. The one or more content servers 120 may transmit the requested content to the streaming module 202. The media device 106 may send the received content to the display device 108 for playback to the user 132.
[0050] In streaming embodiments, the streaming module 202 may transmit the content to the display device 108 in real time or near real time as it receives the content from the one or more content servers 120. In non-streaming embodiments, the media device 106 may store the content received from the one or more content servers 120 in the memory / buffer 208 for later playback on the display device 108.
[0051] IoT application software development platform
[0052] Figure 3 is a block diagram of a system 300 for developing and distributing IoT applications according to some embodiments. Figure 3As shown, system 300 includes premises 302, IoT application store 350, and IoT application development platform 370. Each aspect of system 300 will now be described.
[0053] Location 302
[0054] like Figure 3 As shown, system 300 includes a place 302 in which multiple IoT devices 306, 308, 310, and 312 are present. Place 302 may include, for example but not limited to, a home, office, building, factory, warehouse, bar, restaurant, movie theater, stadium, auditorium, car, bus, ship, or any other structure, location, or space where IoT devices may be present. Although only four IoT devices are shown in place 302 for illustration purposes, it should be understood that place 302 may include any number of IoT devices, including dozens, hundreds, or even thousands of IoT devices.
[0055] As used herein, the term "IoT device" is intended to broadly include any device capable of digitally communicating with another device. For example, a device that can digitally communicate with another device may comprise an IoT device, as the term is used herein, even if such communication does not occur over the Internet.
[0056] Each of the IoT devices 306, 308, 310, and 312 may include a device such as a smartphone, a laptop, a notebook, a tablet, a netbook, a desktop computer, a video game console, a set-top box, or an OTT streaming media player. In addition, each of the IoT devices 306, 308, 310, and 312 may include a so-called "smart home" device, such as a smart light bulb, a smart switch, a smart refrigerator, a smart washing machine, a smart dryer, a smart coffee machine, a smart alarm clock, a smart smoke alarm, a smart carbon monoxide detector, a smart security sensor, a smart doorbell camera, a smart indoor or outdoor camera, a smart door lock, a smart thermostat, a smart plug, a smart TV, a smart speaker, a smart remote control, or a voice controller. In addition, each of the IoT devices 306, 308, 310, and 312 may include a wearable device, such as a watch, a fitness tracker, a health monitor, a smart pacemaker, or an extended reality headset. However, these are just examples and are not limited to them.
[0057] IoT devices 306, 308, 310, and 312 may be communicatively connected to a local area network (LAN) 338 via suitable wired and / or wireless connections. LAN 338 may be implemented using a hub-and-spoke or star topology. For example, according to one embodiment, each of IoT devices 306, 308, 310, and 312 may be connected to a router via a corresponding Ethernet cable, a wireless access point (AP), or an IoT device hub. The router may include a modem that enables the router to act as an interface between entities connected to LAN 338 and an external wide area network (WAN), such as the Internet. Alternatively, LAN 338 may be implemented using a full or partial mesh network topology. According to a full mesh network topology, each IoT device in the group of IoT devices in place 302 may be directly connected to each other IoT device in the place so that it may communicate with it without a router. According to a partial mesh network technique, only some IoT devices in place 302 may be directly connected to other IoT devices, and unconnected IoT device pairs may communicate indirectly through one or more intermediate devices. The mesh network implementation of LAN 338 can also be connected to an external WAN such as the Internet through a router. However, these are merely examples, and other technologies for implementing LAN 338 can be used.
[0058] like Figure 3 As further shown, IoT device 306 may include one or more processors 330, one or more sensors 332, one or more actuators 334, and one or more communication interfaces 336. Processor 330 may include one or more central processing units (CPUs), microcontrollers, microprocessors, signal processors, ASICs (application specific integrated circuits), and / or other physical hardware processor circuits for performing tasks such as program execution, signal encoding, data processing, input / output processing, power control, and / or other functions.
[0059] Sensor 332 may include one or more devices or systems for detecting and responding to (e.g., measuring, recording) objects and events in the physical environment of IoT device 306. By way of example only and not limitation, sensor 332 may include one or more of the following: a camera or other optical sensor, a microphone or other audio sensor, a radar system, a LiDAR system, a Wi-Fi sensing system, a temperature sensor, a pressure sensor, a proximity sensor, an accelerometer, a gyroscope, a magnetometer, an infrared sensor, a gas sensor, or a smoke sensor.
[0060] Actuators 334 may include one or more devices or systems that are operable to effectuate a change in the physical environment of IoT device 306. By way of example only and not limitation, actuators 334 may include components that connect a device to a power source, disconnect a device from a power source, turn a light on or off, adjust the brightness or color of a light, turn an audible alarm on or off, adjust the volume of an audible alarm, initiate a call to a security service, turn a heating or cooling system on or off, adjust a target temperature associated with a heating or cooling system, lock or unlock a door, ring a doorbell, initiate the capture of video or audio, change the channel or configuration of a television, adjust the volume of an audio output device, and the like.
[0061] The communication interface 336 may include components suitable for enabling the IoT device 306 to communicate wirelessly with other devices via corresponding wireless protocols. The communication interface 336 may include, for example, but not limited to, one or more of the following: a Wi-Fi interface that enables the IoT device 306 to communicate wirelessly with an access point or other remote Wi-Fi-enabled device according to one or more wireless network protocols based on the IEEE (Institute of Electrical and Electronics Engineers) 802.11 series of standards; a cellular interface that enables the IoT device 306 to communicate wirelessly with remote devices via one or more cellular networks; a Bluetooth interface that enables the IoT device 306 to communicate wirelessly with other Bluetooth-enabled devices over short distances, or a Zigbee interface that enables the IoT device 306 to communicate wirelessly with other Zigbee-enabled devices.
[0062] The communication interface 336 may additionally or alternatively include components suitable for enabling the IoT device 306 to communicate with other devices via a wired connection via a corresponding wired protocol, such as a universal serial bus (USB) connection and protocol or an Ethernet connection and protocol.
[0063] like Figure 3 As further shown, the IoT device 306 can have an instance of an IoT application 320 or its distributed components installed thereon. As will be discussed herein, a user can select such an IoT application 320 for installation from a plurality of IoT applications presented by a digital market service 352 of an IoT application store 350. When an instance of an IoT application 320 is installed on the IoT device 306, the instance can be executed by one or more processors 330.
[0064] Each of the IoT devices 308, 310, and 312 can include components similar to those shown with respect to the IoT device 306. Thus, for example, each of the IoT devices 308, 310, and 312 can include one or more processors, one or more sensors, one or more actuators, and one or more communication interfaces. Likewise, each of the IoT devices 308, 310, and 312 can have an instance of the IoT application 320 or its distributed components installed thereon.
[0065] User device 304 is intended to represent a personal computing device or media device associated with a user. For example, in an embodiment where a multimedia environment is present in place 302, user device 304 may include media device 106, and a user interface of user device 304 may be presented to the user via display device 108. User device 304 may also include a smartphone, a laptop, a notebook, a tablet, a netbook, a desktop computer, a video game console, or a wearable device (e.g., a smart watch, an extended reality headset). User device 304 may include one or more processors 322, one or more sensors 324, one or more actuators 326, one or more communication interfaces 328, and an IoT application manager 314.
[0066] Processor 322 may include one or more CPUs, microcontrollers, microprocessors, signal processors, ASICs and / or other physical hardware processor circuits for performing tasks such as program execution, signal encoding, data processing, input / output processing, power control and / or other functions.
[0067] Sensor 324 may include one or more devices or systems for detecting and responding to (e.g., measuring, recording) objects and events in the physical environment of user device 304. Sensor 324 may include, for example, one or more of the sensor types described previously with reference to sensor 332 of IoT device 306.
[0068] The actuator 326 may include one or more devices or systems operable to effectuate a change in the physical environment of the user device 304. The actuator 326 may include, for example, one or more of the types of actuators described previously with reference to the actuator 334 of the IoT device 306.
[0069] The communication interface 328 may include components adapted to enable the user device 304 to communicate with other devices over a wired or wireless communication medium using a corresponding wired or wireless communication protocol. The communication interface 328 may include, for example, one or more of the communication interface types described previously with reference to the communication interface 336 of the IoT device 306.
[0070] The IoT application manager 314 may be implemented as processing logic that may include hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executed on a processing device), or a combination thereof. The IoT application manager 314 may include software applications executed by one or more processors 322 of the user device 304. The IoT application manager 314 may enable a user to browse, install, configure, and execute IoT applications that are configured to control or otherwise interact with IoT devices (including one or more of the IoT devices 306, 308, 310, and 312) present in the venue 302. Figure 3 As shown, the IoT application manager 314 may include a digital marketplace user interface (UI) 316 and an IoT application management tool 318 .
[0071] The digital marketplace UI 316 may include a UI that enables a user to browse various IoT applications (described in more detail herein) presented by the digital marketplace service 352 of the IoT application store 350 and select an IoT application to install. In some embodiments or scenarios, selecting an IoT application to install may require purchasing the IoT application. Such IoT applications may be used to control or otherwise interact with IoT devices in the venue 302 (including one or more of the IoT devices 306, 308, 310, and 312). Depending on the implementation, the digital marketplace UI 316 may include a graphical UI (GUI), a menu-driven UI, a touch UI, a voice UI, a form-based UI, a natural language UI, etc.
[0072] The IoT application management tool 318 may include functionality of the IoT application manager 314 that enables a user to manage installed instances of IoT applications. For example, the IoT application management tool 318 may enable a user to configure, execute, or uninstall a previously installed instance of an IoT application. The IoT application management tool 318 may also enable a user to invoke an automatic update service 356 of the IoT application store 350. As will be discussed herein, the automatic update service 356 may automatically reconfigure inputs, outputs, and / or other aspects of an installed instance of an IoT application in response to detected changes to IoT devices in the venue 302, as well as in response to other factors.
[0073] like Figure 3 As further shown, the user device 304 can install an instance of the IoT application 320 or its distributed components thereon. As previously described, the user can select such an IoT application 320 for installation from a plurality of IoT applications presented by the digital market service 352 of the IoT application store 350. When the instance of the IoT application 320 is installed on the user device 304, the instance can be executed by one or more processors 322.
[0074] Although in Figure 3 Only a single user device 304 is shown in FIG. 3 , but it should be understood that multiple user devices may be present in location 302 and each such user device may be configured in a similar manner as user device 304. Figure 3 304, but it should be understood that additional instances of the IoT application manager 314 may be implemented on other devices within the venue 302, including one or more of the IoT devices 306, 308, 310, or 312.
[0075] Furthermore, although for simplicity, Figure 3 Only a single venue 302 is shown with an associated user device 304 and a set of IoT devices 306, 308, 310, and 312, but it should be understood that the system 300 may include any number of venues (including hundreds, thousands, tens of thousands, hundreds of thousands, millions, or hundreds of millions of venues), each venue having its own one or more user devices and IoT devices, and the IoT application store 350 may be used to distribute IoT applications to each such venue for use with the IoT devices deployed therein.
[0076] IoT App Store 350
[0077] like Figure 3 As further shown, the system 300 includes an IoT application store 350. The IoT application store 350 can be implemented as processing logic, which can include hardware (e.g., circuits, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executed on a processing device), or a combination thereof. The IoT application store 350 can be implemented by one or more devices (e.g., one or more servers) that are remote from the site 302 but are communicatively connected to it via one or more networks (e.g., communicatively connected to the LAN 338). However, certain features of the IoT application store 350 described herein can alternatively be implemented by a device within the site 302, such as by a user device 304 or one of the IoT devices 306, 308, 310, 312.
[0078] The IoT application store 350 may include a digital marketplace service 352. The digital marketplace service 352 may enable a user (e.g., a user associated with the place 302) to browse a plurality of IoT applications and select certain IoT applications to install among the plurality of IoT applications. For example, a user may interact with the digital marketplace service 352 via the digital marketplace UI 316 to browse a plurality of IoT applications available for installation and possibly select one or more IoT applications to install.
[0079] The digital marketplace service 352 may support a search function that enables a user to search for IoT applications based on one or more user-provided inputs (e.g., but not limited to keywords or natural language descriptions). The digital marketplace service 352 may organize the available IoT applications into different classes or categories and enable users to browse within these classes or categories. Classes or categories may be defined based on functionality, applicable one or more IoT device types, etc. The digital marketplace service 352 may rank IoT applications based on popularity, cost, user reviews, etc., and may present such rankings for all IoT applications or for IoT applications within a particular class or category.
[0080] The digital marketplace service 352 can access information about the group of IoT devices associated with the user. For example, the digital marketplace service 352 can access information about IoT devices associated with the user in the place 302, including IoT devices 306, 308, 310, and 312. Such information can include, for example, but not limited to, the device type, device manufacturer, device model, device software / firmware version, device functional description, device sensor type description, device actuator type description, etc. associated with each IoT device in the group of IoT devices associated with the user. The digital marketplace service 352 can use this information to filter the group of available IoT applications to identify a subset thereof that can operate with or otherwise be related to a specific IoT device in the group of IoT devices associated with the user, and present the subset of IoT applications to the user.
[0081] The digital marketplace service 352 may enable users to purchase IoT applications as part of selecting IoT applications to install. Any of a variety of well-known digital payment methods may be used to transact for the purchase of IoT applications. The digital marketplace service 352 may also enable users to selectively install IoT applications (free or on a trial basis). The IoT application store 350 may also represent a non-commercial means for distributing IoT applications, in which case all IoT applications provided by the digital marketplace service 352 may be selectively installed free of charge. For example, the IoT application store 350 may be implemented by an enterprise to distribute IoT applications free of charge to various offices, factories, or other locations within the enterprise.
[0082] The IoT applications provided for distribution by the digital market service 352 may include software that, when executed by one or more processors, can control or interact with one or more IoT devices. For example, the IoT application can collect sensor data from one or more sensors of one or more IoT devices and process the collected sensor data for various purposes. For another example, the IoT application can control one or more actuators of one or more IoT devices to perform one or more actions. By way of another example, the IoT application can collect sensor data from one or more sensors of one or more IoT devices, process the collected sensor data, and based on the processing of the collected sensor data, control one or more actuators in one or more IoT devices to perform one or more actions.
[0083] The IoT applications provided for distribution by the digital market service 352 can be configured to execute on a cloud computing platform, a user device (e.g., user device 304), or an IoT device (e.g., any of IoT devices 306, 308, 310, 312). The IoT applications provided for distribution by the digital market service 352 can also be configured to execute on multiple devices in a distributed manner to facilitate one or more of performance, resource sharing, redundancy, or resilience. For example, the IoT application can be configured to execute in a distributed manner across multiple IoT devices, across multiple user devices, or across a combination of one or more IoT devices, one or more user devices, and a cloud server. A given IoT application provided for distribution by the digital market service 352 can also be represented by multiple different code bases or builds, each of which can be configured to execute on different groups of one or more host devices, thereby enabling the IoT application to be selectively installed in a variety of different configurations.
[0084] As will be discussed below with reference to the IoT application development platform 370, IoT applications that may be provided for distribution by the digital marketplace service 352 may be built on and include an application programming interface (API) that converts between relatively high-level operations related to events, general IoT device functions, or general IoT device types and relatively low-level operations related to specific IoT devices or IoT device types. Such an API may be provided to IoT application developers to enable them to easily write IoT applications that can be used with a variety of different IoT devices or IoT device types.
[0085] As will also be discussed below with reference to the IoT application development platform 370, the IoT applications provided for distribution by the digital marketplace service 352 may also be built on and include APIs of third-party services to enable such third-party services to be integrated into the IoT applications. For example, the IoT applications provided for distribution by the digital marketplace service 352 may incorporate APIs associated with social media platform services, microblogging services, video sharing services, email services, streaming services, digital assistant services, etc., so that the functionality of these services can be incorporated into the IoT applications. Some simple and non-limiting examples of IoT applications that may incorporate third-party services include: an IoT application that turns on a smart light bulb or changes a smart light bulb to a specific color in response to a message received via a social media platform, or an IoT application that activates a smart doorbell when an email is received by an email service.
[0086] The digital market service 352 can provide IoT device users with access to a wide variety of IoT applications that go far beyond the manufacturer-provided software that is typically provided with IoT devices. For example, the digital market service 352 can enable IoT device users to access IoT applications developed by IoT device manufacturers, third parties, independent developers, advanced users, etc. These parties can utilize an IoT application development platform (e.g., an IoT application development platform 370) to develop such IoT applications and submit them to the IoT application store 350 for distribution. The digital market service 352 can also provide IoT device users with access to IoT applications that can extend the functionality of their IoT devices beyond the original set of functions supported by these IoT devices at the time of purchase. For example, such IoT applications can enable end users to experiment with or creatively exploit the features of IoT devices in ways that the IoT device manufacturer did not expect. In addition, such IoT applications can enable various IoT devices (e.g., IoT devices of different types and / or manufactured by different companies) to work together to perform useful functions that would be impossible for each IoT device to perform alone.
[0087] Various example IoT applications that may be provided for distribution by the digital market service 352 will now be described. These example IoT applications are presented herein by way of example only and are by no means limiting. Those skilled in the art will readily appreciate that the digital market service 352 may make an almost unlimited variety of IoT applications for distribution.
[0088] An example IoT application that may be distributed by the digital marketplace service 352 may control the color, brightness, and / or on / off status of various smart light bulbs in a venue according to a Christmas theme, a Halloween theme, or other theme.
[0089] Other example IoT applications that may be distributed by the digital marketplace service 352 may include a music visualizer application that controls the color, brightness, and / or on / off state of various smart light bulbs in a venue over time in sync with songs playing in the venue and captured by one or more microphones.
[0090] Another example IoT application that may be distributed by the digital marketplace service 352 may include a "lightstream" application that controls the color, brightness, and / or on / off state of various smart light bulbs over time in a manner that is synchronized with audio content and / or video content streamed to a media playback device ("lightstream"). Further in accordance with this example, the IoT application may include information that specifies how the display is to be performed when installed, such information may be retrieved from the IoT application store 350, or such information may be streamed with the audio content and / or video content and provided to the IoT application when it is played.
[0091] Another example IoT application that may be distributed by the digital marketplace service 352 may utilize a machine learning (ML) model (e.g., a visual ML classifier) to detect deer (or other animals, people, or objects) based on video images captured by a camera (e.g., an outdoor camera) of an IoT device.
[0092] Another example IoT application that may be distributed by the digital marketplace service 352 may utilize an ML model (e.g., an audio ML classifier) to detect a crying baby (or other sound) based on audio captured by a microphone of an IoT device.
[0093] Another example IoT application that may be distributed by the digital marketplace service 352 may enable a smart doorbell to play a custom doorbell tone.
[0094] Another example IoT application that can be distributed by the digital marketplace service 352 can utilize generative artificial intelligence (AI) to control IoT devices to produce various effects (e.g., controlling a group of smart light bulbs to produce a pattern of interest). Such an IoT application can enable a user to provide input (e.g., natural language input) to guide the generative AI. For example, such an IoT application can use a large language model (LLM) to interpret user input (e.g., natural language input) to guide the generative AI.
[0095] Another example IoT application that may be distributed by the digital marketplace service 352 may enable a user to set automation rules that govern how the IoT application responds to certain input actions and / or generates certain outputs. For example, such an automation rule may specify that when a smart security system detects that a homeowner is leaving the house, all smart door locks should be engaged. Such an IoT application may use the LLM to interpret user input (e.g., natural language input) to determine the automation rule. Thus, following the previous example, a user may state "lock the doors when I leave," and the IoT application may use the LLM to determine the above automation rule based on such user input.
[0096] IoT applications distributed by the digital market service 352 may include stand-alone applications as well as plug-in applications that add specific functionality to existing IoT applications. The digital market service 352 may also provide users with custom configurations for certain IoT applications. For example, a user may create a custom configuration for an installed instance of an IoT application, and the digital market service 352 may provide a UI (e.g., digital market UI 316) through which the user may export the custom configuration to the digital market service 352 to share with other users. The custom configuration may be provided free of charge to selected users or all users, or may be available for purchase by other users. A revenue sharing model may be used to compensate users who create custom configurations and entities that operate the IoT application store 350.
[0097] The IoT application store 350 may further include a smart installation service 354. The smart installation service 354 may be run to automatically install IoT applications after the user selects an IoT application to be installed through interaction with the digital market service 352. Figure 3 While the smart installation service 354 is shown as part of the IoT application store 350, in alternative implementations, the smart installation service 354 may be executed on the user device 304 (e.g., as part of the IoT application manager 314) or some other device within the venue 302. The user may interact with the smart installation service 354 through a UI associated therewith. For example, such a UI may include a portion of the digital marketplace UI 316 or the IoT application manager 314.
[0098] The smart installation service 354 can operate to automatically determine one or more target devices on which to install the selected IoT application, and then install an instance of the selected IoT application to one or more of these target devices. The smart installation service 354 can automatically install an instance of the IoT application to a cloud computing platform, a user device, or an IoT device. For example, Figure 3As shown, the smart installation service 354 can install an instance of the IoT application 320 to the cloud computing platform, as part of the cloud deployment 362, to the user device 304, or to the IoT device 306. The smart installation service 354 can also automatically install the instance of the IoT application on multiple devices to achieve its distributed execution to promote one or more improved performance, resource sharing, redundancy, or resilience. For example, the smart installation service 354 can install the instance of the IoT application 320 on multiple IoT devices (e.g., IoT devices 306, 308, 310, 312), multiple user devices (e.g., multiple user devices 304), or a combination or sub-combination of one or more IoT devices, one or more user devices, and cloud servers to achieve its distributed execution.
[0099] As previously described, a given IoT application that may be distributed by the digital market service 352 may be represented by multiple different code libraries or builds, or each code library or build may be configured to execute on a different set of one or more host devices. The smart installation service 354 may utilize such code libraries or builds to selectively install IoT applications of various different configurations.
[0100] The smart installation service 354 may consider various factors associated with each qualified host (e.g., cloud, user device, IoT device) when determining where to install the IoT application. For example, for each qualified host, the smart installation service 354 may consider: available processing power, available storage, available power, type and / or quality of network connection, or the like. The smart installation service 354 may also consider factors associated with the IoT application when determining whether to install the IoT application, such as the processing requirements of the IoT application, the size of the IoT application, the power requirements of the IoT application, the input / output requirements of the IoT application, one or more IoT devices that the IoT application controls or otherwise interacts with, and the like.
[0101] The smart installation service 354 can automatically determine where to install the IoT application without any input from the user, thereby simplifying the installation process for the user. Alternatively or additionally, the smart installation service 354 can enable the user to select from multiple eligible installation locations or configurations. The smart installation service 354 can enable the user to select between a "normal" installation mode, in which the smart installation service 354 automatically determines where to install the IoT application, and an "expert" installation mode, in which the user selects one or more target installation locations.
[0102] The smart installation service 354 may also determine where to install the IoT application based on user-specified preferences. Such preferences may be specified by the user as part of the installation process, as part of registering with the IoT application store 350, or at any other suitable time or through any other suitable channel. For example, if the user specifies that the IoT application should be able to run without an Internet connection, the smart installation service 354 may determine that the IoT application should not be installed to the cloud.
[0103] When installing an IoT application, the smart installation service 354 can determine one or more inputs of the IoT application, one or more outputs of the IoT application, and then map or assign each such input and each output to one or more IoT devices in the IoT device group associated with the user. For example, as discussed below with reference to the description of the IoT application development platform 370, an IoT application input or output can be defined according to the following items: an event that can be mapped to one or more specific IoT devices, a general IoT device function that can be mapped to one or more specific IoT devices, or a general IoT device type that can be mapped to a specific IoT device. For example, a baby monitoring IoT application can define the event "baby crying" as an input, the event "notify user" as an output, and each of these events can be mapped to one or more IoT devices. For another example, a music visualization IoT application can define an audio capture function as an input (e.g., so that music played in a place can be captured), a visualization function as an output (e.g., for displaying a light show that changes according to music), and each such input and output can be mapped to one or more IoT devices.
[0104] The smart installation service 354 can map the inputs and / or outputs of the IoT application to corresponding IoT devices in the IoT device group associated with the user based on the user input. For example, the smart installation service 354 can automatically determine which IoT devices associated with the user can provide a specific input or produce a specific output, and then prompt the user to select from these devices to provide the specific input or produce a specific output. For example, if the input is an audio capture function associated with a music visualization IoT application, the smart installation service 354 can prompt the user to select from a group of IoT devices, each of which is capable of capturing audio (e.g., each includes a microphone). If only one IoT device is capable of providing a specific input or producing a specific output, the smart installation service can automatically select that device on behalf of the user, or can ask the user to confirm the mapping of the input / output to the IoT device.
[0105] The smart installation service 354 can present information associated with each possible IoT device mapping to the user to facilitate the selection process. For example, the smart installation service 354 can inform the user how the mapping of a specific IoT device to a specific input or output of an IoT application affects the performance of the IoT application. The smart installation service 354 can also inform the user how certain combinations of IoT devices for inputs and / or outputs of an IoT application may affect the performance of the application. The user can advantageously use this information to assign one or more inputs and / or one or more outputs of an IoT application to one or more IoT devices that will provide the best performance.
[0106] The smart installation service 354 can identify one or more IoT devices that are not associated with the user (i.e., not owned by the user), but which, if used to provide input or generate output for the IoT application, would improve the performance of the IoT application. The smart installation service 354 can present information about such one or more IoT devices to the user as part of the installation and / or mapping process, and can also include information indicating the extent to which the performance of the IoT application will be improved if the user uses such one or more IoT devices. The smart installation service 354 can also provide the user with a means to purchase or otherwise obtain such one or more IoT devices. For example, the smart installation service 354 can present a link to the digital market service 352 to the user, which the user can use to purchase or otherwise obtain such one or more IoT devices. Alternatively, the smart installation service 354 can provide its own UI for purchasing or obtaining such one or more IoT devices.
[0107] The smart installation service 354 may enable a user to select from a variety of different device types to perform certain functions related to the IoT application, including smart home devices and other device types. For example, the smart installation service 354 may enable a user to select a microphone of a remote control associated with a media device (e.g., microphone 112 of remote control 110 associated with media device 106) as an audio input for the IoT application. Similarly, the smart installation service 354 may enable a user to select speakers associated with a television as an audio output for the IoT application. The smart installation service 354 may enable a user to select from any number of IoT devices in the venue 302 to interact with the IoT application, provided that the installed instance of the IoT application can establish direct or indirect communication links to these devices (e.g., obtain input from them or provide output to them).
[0108] The smart installation service 354 can automatically assign IoT application inputs and outputs to IoT devices in an IoT device group associated with a user without any input from the user. The smart installation service 354 can automatically assign IoT application inputs and outputs to an initial or default IoT device group associated with a user and then provide the user with an opportunity to change the assignment.
[0109] To help perform the above-described mapping / allocation functions, the smart installation service 354 can access information about the group of IoT devices associated with the user. For example, the smart installation service 354 can access information about the IoT devices associated with the user in the venue 302, including IoT devices 306, 308, 310, and 312. Such information can include, for example, but not limited to, the device type, device manufacturer, device model, device software / firmware version, device function description, device sensor type description, device actuator type description, etc. associated with each IoT device in the group of IoT devices associated with the user. The digital market service 352 can use this information to identify eligible IoT devices for allocation of IoT application inputs or outputs.
[0110] The smart installation service 354 can obtain such information about the IoT devices associated with the user in various ways. For example, the smart installation service 354 can prompt the user to provide information about the IoT devices. For another example, the smart installation service 354 can be configured to determine (e.g., automatically or through user input) a device identifier (ID) associated with each IoT device of the user. The smart installation service 354 can then access a database that maps device IDs to device features (e.g., maintained as part of the IoT application store 350) to determine the feature set associated with each IoT device.
[0111] For another example, the smart installation service 354 can obtain information about the IoT device from the IoT device itself using a device discovery protocol supported by the IoT device and the smart installation service 358. For example, such a device discovery protocol can enable the smart installation service 354 to query the IoT device for such information, or enable the IoT device to submit such information through a registration process (e.g., when the device is installed). In addition, according to this example, a bridging device (e.g., an IoT device hub, etc.) can be used to provide information about IoT devices that do not support or cannot support the device discovery protocol to the smart installation service 354. Such a device discovery protocol can be implemented using an API that uses a common schema to represent different IoT devices. For example, such a schema can define a device type "smart white light bulb" with operating states "on", "off", and "brightness", and a device category "smart color light bulb" with operating states "on", "off", "brightness", and "color". According to such an implementation, even so, very different device types (e.g., TVs and light bulbs) may share a common function (e.g., display color), so the same function can be mapped to very different device types.
[0112] The smart installation service 354 can also access a two-dimensional (2D) or three-dimensional (3D) map of IoT devices associated with the user, where the map can represent locations where the IoT devices are installed or otherwise located. Such a map can include information about each of the IoT devices and a corresponding map location (e.g., one or more map coordinates) for each IoT device. Example systems and methods for generating such a map are described in a commonly owned, co-pending U.S. patent application Ser. No. 18 / 141,120, filed on April 28, 2023, and entitled “Map Generator for Map-Based Device Management.” The smart installation service 354 can advantageously utilize such location information about IoT devices when allocating IoT application inputs and / or outputs. For example, the smart installation service 354 can utilize such information to assign inputs and outputs to IoT devices for an IoT application that has location requirements regarding those inputs and outputs (e.g., a security application that requires video inputs from different locations throughout the home to achieve a desired coverage area, a smart light bulb application that illuminates smart light bulbs in a sequence determined by the physical locations of the smart light bulbs to achieve a desired effect (e.g., a "wave"), a music visualizer application that requires the video output to be in the same area or room as the audio input, or a baby monitor application that requires the audio input to be near the baby's room).
[0113] Thus, in accordance with the foregoing, each IoT device associated with a user (e.g., installed in a location associated with the user) may have a known or discoverable (e.g., via an API) set of attributes or features that may enable the smart installation service 354 to determine whether a given IoT application may run on the user's group of IoT devices and map IoT application inputs and outputs to the group of IoT devices.
[0114] The smart installation service 354 may also operate to automatically determine the input and output groups associated with each IoT application that meets the distribution conditions of the digital market service 352. The smart installation service 354 may automatically determine the input and output groups in various ways. For example, the smart installation service 354 may determine the input and output groups associated with the IoT application based on metadata provided by the developer or publisher of the IoT application. For another example, the smart installation service 354 may automatically determine the input and output groups associated with the IoT application by performing automatic (e.g., static and / or dynamic) code analysis on the IoT application. The smart installation service 354 may also use other methods to determine the input and output groups associated with the IoT application.
[0115] The smart installation service 354 can operate to map the input or output of the IoT application to an IoT device that provides a feature set that matches the requirements of the IoT application. However, when no such IoT device is available, the smart installation service 354 can operate to map the input or output of the IoT application to an IoT device that provides some but not all of the functions required by the IoT application, so that the IoT application can still be installed and executed, although at a reduced performance level. For example, an IoT application designed to create a light show using colored light bulbs can still be executed using white light bulbs (e.g., by turning the light bulbs on and off and / or adjusting their brightness), so when no colored light bulbs are available, the smart installation service 354 can map the output of such an IoT application to a group of white light bulbs. As part of this process, the smart installation service 354 can inform the user of the shortcomings associated with its current group of IoT devices and provide the user with a means to purchase or otherwise obtain a more suitable IoT device. For example, the smart installation service 354 can present a link to the digital market service 352 to the user, which the user can use to purchase or otherwise obtain such one or more IoT devices. Alternatively, the smart installation service 354 can provide its own UI for purchasing or obtaining such one or more IoT devices.
[0116] The smart installation service 354 may determine that the IoT device group associated with the user is insufficient to support each input and output associated with the IoT application selected for installation. In this scenario, if the smart installation service 354 determines that the IoT application is still able to perform at an acceptable level, the smart installation service 354 may still install one or more IoT applications that lack inputs or outputs. For example, an IoT application designed to create a light show using 48 colored bulbs can still be executed using 32 colored bulbs and produce acceptable effects, so the smart installation service 354 may install the IoT application even if the number of output devices is less than the ideal number. As part of this process, the smart installation service 354 may inform the user of the shortcomings associated with its current IoT device group and provide the user with a means to purchase or otherwise obtain additional IoT devices. For example, the smart installation service 354 may present a link to the digital market service 352 to the user, and the user may use the link to purchase or otherwise obtain such additional one or more IoT devices. Alternatively, the smart installation service 354 may provide its own UI for purchasing or obtaining such additional one or more IoT devices.
[0117] The smart installation service 354 may also alert the user that the IoT application selected by the user will not perform well on the current set of IoT devices associated with the user, and suggest that the user add or upgrade IoT devices to obtain better performance. In this case, the smart installation service 354 may provide the user with a means to purchase such additional or upgraded IoT devices (e.g., a link to the digital marketplace service 352 or a UI provided by the smart installation service 352 that the user may utilize to obtain such additional or updated IoT devices), or may automatically purchase, order, or obtain such additional or upgraded IoT devices on behalf of the user.
[0118] To perform this function, the smart installation service 354 is able to access data indicating whether and / or how the selected IoT application is executed using different groups of IoT devices and IoT device configurations. The data can be obtained by the smart installation service 354 in various ways. For example, the smart installation service 354 can obtain such data as part of metadata provided by the developer or publisher of the IoT application or by an entity operating the IoT application store 350 (e.g., an entity that can obtain data by testing IoT applications using different groups of IoT devices and IoT device configurations). For another example, the data can be derived from telemetry data generated by installed instances of IoT applications. For another example, the data can be based on explicit or implicit user feedback collected about IoT applications. Examples of explicit user feedback can include ratings and / or comments on IoT applications submitted by users to the digital market service 352 (e.g., through the digital market UI 316). Examples of implicit user feedback can include user-specific IoT application usage statistics.
[0119] The above data indicating how the selected IoT application will perform using different groups of IoT devices and IoT device configurations can be used to train a machine learning (ML) model. The smart installation service 354 can then use this ML model to predict how the inputs / outputs of the selected IoT application should be mapped to the group of IoT devices associated with the user to provide optimal performance. This prediction can then be used to automatically map the inputs / outputs to the IoT devices, or to suggest such a mapping to the user.
[0120] As previously described, the digital market service 352 may enable a first user to share or sell a custom configuration associated with an IoT application. When a second user selects a custom configuration through the digital market service 352, the smart installation service 354 may run to apply the selected custom configuration to the installation of the second user's IoT application. If the first user and the second user have the same IoT device group, it may be relatively simple to apply the selected custom configuration to the second user's installation. However, if the first user and the second user each have different IoT device groups, the smart installation service 354 may automatically modify the custom configuration to account for differences in the type and / or number of IoT devices associated with each user's settings. The smart installation service 354 may utilize a process (e.g., an ML model) that modifies the configuration in a manner that is considered most likely to produce a result or performance level similar to the original configuration but in accordance with the second user's installation constraints. For example, the smart installation service 354 may modify a custom configuration of an array of 200 smart color light bulbs that produces an image of a national flag to generate a custom configuration of an array of 100 smart color lights that produces a lower resolution image of the same national flag. In situations where the positioning / orientation of IoT devices affects IoT application performance, the smart installation service 354 may also modify the configuration to account for the different spatial positioning and orientation of IoT devices.
[0121] The smart installation service 354 may also determine that applying the selected custom configuration to the second user's installation will not be successful unless the second user adds or upgrades one or more IoT devices. In this case, the smart installation service 354 may provide the second user with a means to purchase such additional or upgraded IoT devices (e.g., a link to the digital marketplace service 352 or a UI provided by the smart installation service 354 that the user can utilize to purchase or otherwise obtain such additional or updated IoT devices), or may automatically purchase, order, or obtain such additional or upgraded IoT devices on behalf of the user.
[0122] The IoT application store 350 may further include an automatic update service 356. The automatic update service 356 may run to update an installed instance of an IoT application or its configuration. Figure 3 While the automatic update service 356 is shown as part of the IoT application store, in alternative implementations, the automatic update service 356 may be executed on the user device 304 (e.g., as part of the IoT application manager 314) or some other device within the venue 302. The user may interact with the automatic update service 356 through a UI associated therewith. For example, such a UI may include a portion of the digital marketplace UI 316 or the IoT application manager 314.
[0123] The automatic update service 356 can be configured to run periodically or intermittently and / or in response to one or more events. For example, the automatic update service 356 can be configured to run based on its user invocation (e.g., through the user's interaction with the IoT application management tool 318 of the IoT application manager 314), based on the availability of software updates associated with installed IoT applications, based on the application of software or firmware updates to IoT devices controlled or otherwise interacted with by the installed IoT applications, based on changes in the state or unavailability of the host device (e.g., user device, IoT device, cloud computing platform or server) on which the IoT application is installed, based on changes in the state or invalidity of the IoT device that the installed IoT application is configured to control or otherwise interact with, and / or based on adding a new IoT device or host device to a place (e.g., place 302). However, these are just some examples, and the automatic update service 356 can also be configured to execute based on other events.
[0124] The automatic update service 356 can determine that an event has occurred (e.g., an event that makes it useful or beneficial to update the installed IoT application), and then prompt the user to select whether an automatic update of the installed IoT application should be performed (e.g., immediately or at a later time) based on the occurrence of the event. For example, the automatic update service 356 can prompt the user to select whether an automatic update of the installed IoT application should be performed in response to performing the following determinations: (i) determining that a software update associated with the installed IoT application is available, (ii) determining that a software or firmware upgrade has been applied to an IoT device controlled or otherwise interacted with by the installed IoT application, (iii) determining that a host device (e.g., a user device, IoT device, cloud computing platform, or server) on which the IoT application is installed has undergone a state change or is unavailable, (iv) determining that an IoT device that the installed IoT application is configured to control or otherwise interact with has undergone a state change or is unavailable, and / or (v) determining that a new IoT device or host device has been added to a place (e.g., place 302). However, these are just some examples, and the automatic update service 356 may be configured to prompt the user to select whether automatic updates of installed IoT applications should also be performed in response to other determinations.
[0125] The automatic update service 356 may be configured to update an installed IoT application by applying software modifications (eg, patches, updates, upgrades, support packages, hotfixes, etc.) to the installed IoT application.
[0126] The automatic update service 356 can also be configured to update the installed IoT application by uninstalling the IoT application from the first set of host devices and reinstalling the IoT application on the second set of host devices. For example, if one or more of the host devices in the first set of host devices are underperforming, resource-constrained (e.g., processor, storage, or power-constrained), or unavailable, the automatic update service 356 can uninstall the IoT application from them and reinstall it on the second set of host devices. By way of example only and not limitation, this may mean uninstalling the IoT application from the cloud and reinstalling it on one or more user devices or IoT devices, uninstalling the IoT application from one or more user devices or IoT devices and reinstalling it on the cloud, uninstalling the IoT application from one or more user devices and reinstalling it on one or more IoT devices, or uninstalling the IoT application from one or more IoT devices and reinstalling it on one or more user devices.
[0127] The automatic update service 356 may also be configured to update an installed IoT application by reallocating or remapping its input or output from a first IoT device to a second IoT device. For example, the automatic update service 356 may determine that a change has been made to the IoT device group associated with the user. Further in accordance with this example, the automatic update service 356 may determine that a first IoT device previously assigned to an input or output of an installed IoT application is no longer running or unavailable (e.g., the user may have uninstalled the first IoT device, the first IoT device may have been powered off or powered off, or the first IoT device may have lost network connectivity). In response to at least this determination, the automatic update service 356 may selectively assign a second IoT device in the IoT device group associated with the user to the input or output, and configure the installed IoT application to obtain the input or provide the output to the second IoT device. Thus, when the associated IoT device is no longer running or unavailable, the automatic update service 356 can automatically “self-heal” the deployment of the IoT application.
[0128] Alternatively, the automatic update service 356 can present to the user a list of eligible replacement IoT devices for the first IoT device in the IoT device group and allow the user to select the replacement IoT device from it. In addition, the automatic update service 356 can enable the user to obtain (e.g., purchase) a new IoT device from which input can be obtained or to which output can be provided. For example, the automatic update service 356 can provide the user with a means to purchase such a new IoT device (e.g., a link to the digital marketplace service 352 or a UI provided by the automatic update service 352, which the user can use to purchase or otherwise obtain a new IoT device), or can automatically purchase, order, or obtain a new IoT device on behalf of the user. Thus, the automatic update service 356 can enable users to easily replace faulty IoT devices that their IoT applications rely on.
[0129] As another example, the automatic update service 356 may determine that a new IoT device has been added to the IoT device group associated with the user, and that the new IoT device may be mapped to an input or output of an installed IoT application. In this case, the automatic update service 356 may automatically remap the input / output assigned from the old IoT device to the new IoT device, or map the currently unassigned input / output to the new IoT device. The automatic update service 356 may be configured to perform such remapping or mapping, for example, in response to determining that such remapping or mapping will result in improved performance of the IoT application. The automatic update service 356 may also enable the user to select whether such remapping or mapping should be performed.
[0130] In order to enable the automatic update service 356 to remap the input / output of the IoT application from the first IoT device to the second IoT device as described above, or to map the unassigned input / output of the IoT application to the new IoT device as described above. The automatic update service 356 can be configured to access information related to each IoT device, which may include attribute groups or feature groups associated therewith. A more detailed description of such information and how to obtain such information is provided above with reference to the smart installation service 354, so for the sake of brevity, such description will not be repeated here.
[0131] The automatic update service 356 is able to access a continuously updated 2D or 3D map of a group of IoT devices associated with a user. As previously mentioned, an example system and method for generating such a map is described in U.S. patent application No. 18 / 141,120, co-owned and co-pending, entitled “Map Generator for Map-Based Device Management,” filed on April 28, 2023. In this case, the automatic update service 356 can be configured to update the installed IoT application based on detecting a change in the position or orientation of an IoT device controlled by or interacting with the IoT application. This may be particularly beneficial in cases where the location or orientation of the IoT device is important to or affects the performance of the IoT application. For example, if the IoT application is a baby monitor that relies on an audio input positioned relatively close to a baby's room, and the IoT device providing such audio input is moved to a different location in the house, the automatic update service 356 can operate to switch the audio input to a new IoT device that is now closer to the baby's room. As another example, if the IoT application is a home security application that relies on a video feed that provides a view of the front door, and the IoT device that provides such a video feed is moved so that it can no longer provide the required view, the automatic update service 356 can operate to switch to a different IoT device to provide the necessary video feed (if available). The automatic update service 356 can also notify the user if the change in the position or orientation of the IoT device affects the performance of the IoT application. The automatic update service 356 can also prompt the user to confirm the suggested change to the input or output before implementing the change.
[0132] The IoT application store 350 may also include a virtual deployment service 358. The virtual deployment service 358 may enable a user to deploy an instance of a selected IoT application (e.g., IoT application 320) to a virtual environment 364, where the instance of the selected IoT application may interact with one or more simulated IoT devices. The virtual environment 364 may be executed by one or more servers of a cloud computing platform, such as Figure 3 362, although the virtual environment 364 may also be hosted on other devices (e.g., user device 304). A user may interact with the virtual deployment service 358 via a UI associated therewith. Such a UI may include, for example, a portion of the digital marketplace UI 316 or the IoT application manager 314.
[0133] The virtual deployment service 358 may enable a user to deploy an IoT application that the user has selected via interaction with the digital marketplace service 352 but has not yet purchased or installed on any physical device associated with the user to the virtual environment 364. This may enable the user to observe the performance of the selected IoT application, determine whether the selected IoT application is suitable for installation on the user's IoT device, and / or test various configurations of the IoT application without first purchasing the IoT application or installing it on a physical device associated with the user.
[0134] For example, before purchasing the IoT application or installing the selected IoT application for use with his / her own physical IoT device, the virtual deployment service 358 may enable the user to configure and execute an instance of the selected IoT application in the virtual environment 364. Then, when the IoT application is configured to the user's satisfaction and successfully runs in the virtual environment 364, the user may purchase the IoT application and / or initiate its installation for use with his / her own physical IoT device. The smart installation service 354 may then install the IoT application onto one or more physical devices associated with the user in the manner described above, and transfer the user-created configuration of the IoT application instance installed in the virtual environment 364 to the real-world installation of the IoT application.
[0135] The virtual deployment service 358 may also enable a user to deploy an instance of an IoT application that the user has installed to one or more physical devices associated therewith to the virtual environment 364. This functionality may enable a user to test various changes to the IoT application after installing the IoT application in the virtual environment 364 without disrupting or affecting the current (physical) setup.
[0136] As described above, the virtual deployment service 358 can enable an instance of an IoT application deployed to the virtual environment 364 to interact with one or more simulated IoT devices. The simulated IoT devices may represent the group of IoT devices currently owned by the user. For example, the virtual deployment service 358 can use any of the techniques previously described with reference to the smart installation service 354 to collect information about the user's IoT devices and use this information to instantiate software simulations of these IoT devices. Further in accordance with this embodiment, the virtual deployment service 358 can automatically map IoT application inputs and outputs to simulated IoT devices using the techniques described above with reference to the smart installation service 354.
[0137] Alternatively, the virtual deployment service 358 can instantiate a software simulation of the user's IoT device based on information provided by the user about the user's IoT device. For example, the virtual deployment service 358 can present a GUI to the user that enables the user to select his / her IoT device from a group of IoT devices displayed in the GUI, and then create a simulated IoT device based on the user's selection. The simulated IoT device may represent a generic IoT device type or a real-world brand / type of a specific IoT device. The simulated IoT device may also represent an IoT device that the user does not currently own but may acquire in the future. Each simulated IoT device can be configured to interact with an IoT application instance installed in the virtual environment 364 in a manner similar to how a corresponding real-world (physical or hardware-based) version of the IoT device would interact with the IoT application.
[0138] The virtual deployment service 358 may enable a user to add any number of simulated IoT devices to a virtual deployment. For example, the virtual deployment service 358 may enable a user to deploy a music visualizer IoT application (e.g., an IoT application that changes the color, brightness, and / or on / off state of various smart light bulbs over time in a manner synchronized with or based on a song) to a virtual environment 364, and then add any number of simulated smart light bulbs to the deployment to visualize how the IoT application controls the virtual smart light bulbs over time based on a particular song.
[0139] Virtual deployment service 358 can help users obtain or purchase real-world versions of simulated IoT devices that the user has added to the virtual deployment but that the user does not currently own. For example, virtual deployment service 358 can automatically determine the cost associated with obtaining such IoT devices and present the cost to the user. In addition, virtual deployment service 358 can provide a UI through which the user can order some or all of the IoT devices that the user has added to the virtual deployment but does not currently own.
[0140] In embodiments where the virtual deployment service 358 has access to a 2D or 3D map of the real-world locations of the user's IoT devices, the virtual deployment service 356 can position the simulated IoT devices in the simulated 2D or 3D space in a manner that conforms to or is based on their current real-world locations. As part of the simulation, the virtual deployment service 358 can also enable the user to adjust the position and / or orientation of the simulated IoT devices in the simulated 2D or 3D space. Thus, for example, as part of testing a music visualization IoT application, the user can rearrange the positions of various simulated smart light bulbs in the simulated 3D space.
[0141] The virtual deployment service 358 may also enable a user to connect an instance of a selected IoT application deployed to the virtual environment 364 to one or more physical IoT devices associated with the user, so that the user can observe how the IoT application performs with these physical IoT devices. Thus, a user can create a hybrid deployment in which some IoT application inputs or outputs are assigned to physical IoT devices associated with the user, while other IoT application inputs or outputs are assigned to simulated IoT devices. For example, a user can create such a hybrid deployment to determine how the IoT application will perform if the user's existing physical IoT device network is expanded to include one or more additional IoT devices (where the additional one or more IoT devices can be represented as one or more simulated IoT devices), or to determine how the IoT application will perform using the user's existing physical device network if one or more physical IoT devices are upgraded (where the upgraded one or more IoT devices can be represented as one or more simulated IoT devices).
[0142] The IoT application store 350 may also include an IoT application submission service 360. The IoT application submission service 360 may enable users (e.g., software developers) to submit IoT applications for distribution via the IoT application store 350. For example, as will be described below with reference to Figure 4 As discussed, the IoT application submission service 360 may accept uploads of IoT applications from an IoT application submission client 410, which comprises a portion of the IoT application development platform 370. The IoT applications submitted to the IoT application submission service 360 may include a plurality of different code bases or builds, each of which may be configured to execute on a different set of one or more host devices, thereby enabling the IoT application to be selectively installed in a variety of different configurations.
[0143] The IoT application submission service 360 may also provide a testing service that enables users to test IoT applications under development. Additionally, the IoT application submission service 360 may require users to prove that the IoT application has met certain testing requirements before the IoT application is eligible for distribution. The IoT application submission service 360 may also require manual and / or automatic review of submitted IoT applications in order to be eligible for distribution.
[0144] The IoT application submission service 360 may enable (and may require) a user to provide metadata about the IoT application being submitted. As previously described, such metadata includes a set of inputs and outputs associated with the IoT application, and / or data indicating whether the IoT application will be executed using different IoT device groups and IoT device configurations, and / or data indicating how the IoT application will be executed using different IoT device groups and IoT device configurations, among other information.
[0145] Developers of IoT applications submitted to and distributed by the IoT application store 350 may receive revenue from the entity that owns and operates the IoT application store 350. For example, in an embodiment where IoT applications are provided for purchase by the IoT application store 350, the developer of the IoT application may receive a share of the payment or subscription fee associated with each instance of the IoT application distributed by the IoT application store 350. As another example, as part of the process of installing an IoT application through the IoT application store 350, the developer of the IoT application may receive payment from the IoT device manufacturer or seller each time a user purchases an IoT device manufactured or sold thereby. Such payment may be made in currency, digital credits, etc.
[0146] It should be understood that although Figure 3 Only a single IoT application store 350 is shown in the figure, but the system 300 may include multiple instances of the IoT application store 350 that can be executed concurrently to distribute IoT applications. For example, for load balancing purposes, different instances of the IoT application store 350 can be executed simultaneously to provide redundancy and / or resilience to distribute IoT applications to different geographic regions or different organizations, etc.
[0147] IoT Application Development Platform 370
[0148] Figure 4A block diagram of an IoT application development platform 370 according to some embodiments is shown. The IoT application development platform 370 can be implemented as processing logic, which can include hardware (e.g., circuits, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executed on a processing device), or a combination thereof. The IoT application development platform 370 can be implemented on one or more computing devices associated with a user (e.g., a software developer), which are remote from the IoT application store 350 but are connected to it via one or more networks (e.g., via the Internet). Alternatively, the IoT application development platform 370 can be implemented on one or more servers (e.g., a cloud computing platform) and accessed via a suitable client (e.g., a web browser or other Internet-enabled application). In addition, the IoT application development platform 370 can be implemented partially on one or more computing devices associated with a user, and partially on one or more servers (e.g., a cloud computing platform).
[0149] exist Figure 3 , the IoT application development platform 370 is shown as being separate from the IoT application store 350. However, in another embodiment, some or all components of the IoT application development platform may include a portion of the IoT application store 350.
[0150] Some or all components of the IoT application development platform 370 may be included in a software development kit (SDK), which a user may obtain from the IoT application store 350, an online code repository, or other suitable data source (e.g., via download). Such an SDK may include, be accompanied by, or be associated with an installer that, when executed on a computing device, causes the components of the IoT application development platform 370 to be installed thereon. Installing the components of the IoT application development platform 370 to a computing device may include decompressing compressed representations of the components, decrypting encrypted representations of the components, storing certain components in certain folders within a file system of the computing device, registering certain executable components with an operating system of the computing device, and the like.
[0151] like Figure 4As shown, the IoT application development platform 370 may include an integrated development environment (IDE) 402. The IDE 402 may include one or more tools that enable users (e.g., developers) of the IoT application development platform 370 to develop one or more IoT applications, such as the IoT application 320. The IDE 402 may include a source code editor 412, a set of wizards 414, an application builder 416, a simulator 418, an IoT device network model editor 420, and a documentation / API reference viewer 422. Each of these components of the IDE 402 will now be described.
[0152] The source code editor 412 may include a component of the IDE 402 that enables a user of the IoT application development platform 370 to generate (e.g., write or edit) source code for an IoT application. The source code editor 412 may include a text editor that enables a user to generate source code by typing or otherwise entering text into the editor's UI. The source code editor 412 may also include a visual editor that enables a user to generate source code in a GUI by selecting, dragging, and / or interconnecting various visual representations of source code elements. The source code editor 412 may also include a natural language processing model or other algorithm that can generate source code based on natural language input from a user (e.g., via a UI prompt or microphone).
[0153] The source code editor 412 can enable a user to develop source code for an IoT application by specifying one or more inputs, one or more processing steps (e.g., to be performed based on the one or more inputs), and one or more outputs (e.g., to be generated based on the one or more processing steps). For example, in an embodiment where the source code editor 412 includes a visual editor, a user can interact with the GUI to select visual elements representing inputs, processing steps, and outputs from a menu of these elements and drag and drop these elements into the workspace to be included in the source code. The way in which the user interconnects these visual elements within the workspace can define the process flow of the source code. In addition, each visual element can expose configurable aspects of the source code represented thereby so that the user can easily customize the corresponding source code of the visual element.
[0154] The source code editor 412 may enable a user to generate source code for an IoT application by defining inputs to the IoT application in terms of events and / or by defining outputs of the IoT application in terms of events. For example, the source code editor 412 may enable a user to specify the event "baby cries" as an input to the IoT application and the event "notify user" as an output of the IoT application. The source code editor 412 may also enable a user to specify logic that acts on inputs to produce outputs, for example: if "baby cries", then "notify user".
[0155] When developing an application, the above events do not need to be associated with any specific IoT device. Instead, as described above with reference to the IoT application store 350, the smart installation service 354 can map each event to an appropriate IoT device group during the installation of the IoT application to a specific IoT device network (e.g., the network of IoT devices 306, 308, 310, and 312 in the house 302). For example, in a first IoT device network, the event "baby crying" can be mapped to a digital assistant that includes a microphone to capture the audio required to detect the baby crying, while in a second IoT device network, the event "baby crying" can be mapped to a security device (e.g., a glass break detector) that includes a microphone to capture such audio. As another example, in a first IoT device network, the event "notify user" can be mapped to a smart doorbell that can emit a special ringtone to notify the user of the baby crying, while in a second IoT device network, the event "notify user" can be mapped to the above-mentioned digital assistant so that the digital assistant can verbally notify the user. This feature can greatly simplify the development of IoT applications while ensuring that IoT applications can be used in a variety of different IoT device networks.
[0156] The IoT application development platform 370 can support any number of predefined event types, which users can incorporate into the source code being developed using the source code editor 412. As an example and not a limitation, predefined input event types may include "someone at the door", "package at the door", "glass breaking", "dog barking", "fire", "sunrise", "sunset", "movie", "work from home", "sleep", etc., while predefined output event types may include "remind user", "remind agency", "cool down home", "dim lights", "reduce noise", "lock door", etc. The predefined event types may be defined as part of the API 424, which is included in the code base 404 and incorporated into the source code by reference. The API for a particular event may specify the type of IoT device that can be used to implement the event, and how to detect or execute the event. The IoT application development platform 370 may also enable users to define custom events by modifying existing event types or generating entirely new event types.
[0157] The source code editor 412 may enable a user to specify any number of input events and / or any number of output events associated with the IoT application being developed. For example, the source code editor 412 may enable a user to specify multiple parallel input events such that the occurrence of any one input event triggers a particular process step or output event. As another example, the source code editor 412 may enable a user to specify serial input events such that all input events in the serial input event must occur (optionally in a particular order) before a particular process step or output event is triggered. In a visual editor implementation of the source code editor 412, a user may create such a parallel or serial arrangement of input events by arranging visual elements representing the input events in a workspace of the GUI.
[0158] The source code editor 412 may enable a user to specify a machine learning (ML) model for identifying or establishing the occurrence of an input event for an IoT application. For example, the source code editor 412 may enable a user to specify an ML model for analyzing audio captured by an IoT application to detect a crying baby, or an ML model for analyzing a video captured by an IoT application to classify a person as a known person or an unknown person. In this regard, the IoT application development platform 370 may include a set of ML models 432 as part of the code library 404, and each such ML model in the ML model 432 may be incorporated into the source code of the IoT application being developed by reference. The IoT application development platform 370 may also provide a facility by which developers can train specific ML models used in IoT applications. In addition, the ML model incorporated into the IoT application may provide functionality that enables end users of the IoT application to train the ML model at runtime. For example, end users of the IoT application may provide their own audio clips of a crying baby to train the ML model at runtime.
[0159] The source code editor 412 may also enable a user to generate source code for an IoT application by defining inputs to the IoT application in terms of generic IoT device functions and / or by defining outputs of the IoT application in terms of generic IoT device functions. For example, the source code editor 412 may enable a user to develop a music visualizer IoT application to associate a generic IoT device function "capture audio" with an input to the application and associate a generic IoT device function "visualize music" with an output of the application.
[0160] During application development, the above-mentioned general IoT device functions do not need to be associated with any specific IoT device. Instead, as discussed above with reference to the IoT application store 350, the smart installation service 354 can map each general IoT device function to an appropriate IoT device group during the installation of the IoT application to a specific IoT device network (e.g., the network of IoT devices 306, 308, 310, and 312 in the house 302). For example, in a first IoT device network, the general IoT device function "capture audio" can be mapped to a digital assistant including a microphone to capture audio, while in a second IoT device network, the general IoT device function "capture audio" can be mapped to a remote control for a media device including a microphone. As another example, in a first IoT device network, the general IoT device function "visualize audio" can be mapped to an array of 500 smart light bulbs, while in a second IoT device network, the general IoT device function can be mapped to an array of 100 smart light bulbs. This functionality can also greatly simplify the development of IoT applications while ensuring that IoT applications can be used in a variety of different IoT device networks.
[0161] The IoT application development platform 370 can support any number of predefined generic IoT device functions, which users can incorporate into the source code being developed using the source code editor 412. The predefined generic IoT device functions can be defined as part of the API 424, which is included in the code base 404 and incorporated into the source code by reference. The API for a particular generic IoT device function can specify the type of IoT device that can be used to implement the generic IoT device function. The IoT application development platform 370 can also enable users to define custom generic IoT device functions by modifying existing generic IoT device functions or by generating entirely new generic IoT device functions.
[0162] The source code editor 412 may also enable a user to generate source code for an IoT application by defining inputs to the IoT application in terms of generic IoT device types and / or by defining outputs of the IoT application in terms of generic IoT device types. For example, the source code editor 412 may enable a user to develop an IoT application that turns on a light when a package is observed at the front door, thereby associating the generic IoT device type "doorbell camera" with the input of the application and associating the generic IoT device type "smart light bulb" with the output of the application.
[0163] At the time of application development, the above-mentioned generic IoT device types do not need to be associated with any specific IoT device. Instead, as discussed above with reference to the IoT application store 350, the smart installation service 354 can map each generic IoT device type to a specific IoT device during the installation of the IoT application to a specific IoT device network (e.g., the network of IoT devices 306, 308, 310, and 312 in the house 302). For example, in a first IoT device network, the generic IoT device type "doorbell camera" can be mapped to a first doorbell camera model, while in a second IoT network, the generic IoT device type "doorbell camera" can be mapped to a second doorbell camera model (e.g., a model different from the first model from the same or different manufacturer). As another example, in a first IoT device network, the generic IoT device type "smart light bulb" can be mapped to a first smart light bulb model, while in a second IoT system, the generic IoT device type can be mapped to a second smart light bulb model. This functionality can also greatly simplify the development of IoT applications while ensuring that IoT applications can be used in a variety of different IoT device networks.
[0164] The IoT application development platform 370 may support any number of predefined generic IoT device types that a user may incorporate into the source code being developed using the source code editor 412. The predefined generic IoT device types may be defined as part of an API 424 that is included in the code base 404 and incorporated into the source code by reference. The IoT application development platform 370 may also enable a user to define a custom generic IoT device type by modifying an existing generic IoT device type or generating an entirely new generic IoT device type.
[0165] The source code editor 412 can enable a user to generate source code for an IoT application by defining the input or output of the IoT application as a combination or sub-combination of events, generic IoT device functions, generic IoT device types, or specific IoT device types. For example, a user can specify an input as an event "detect package" and then assign the generic IoT device type "video doorbell camera" to the event. As another example, a user can specify an output as an event "lock the door" and then assign a specific smart door lock manufacturer / model to the event. Thus, inputs and outputs can be defined at different levels of granularity. According to this embodiment, the smart installation service 354 can take such input / output definitions into account when determining whether the input / output of a particular IoT application can be mapped to an IoT device of a particular IoT device network, and if so, how to perform such mapping.
[0166] As described above, the source code editor 412 may include a natural language processing model or other algorithm capable of generating source code based on natural language input from a user. For example, such an algorithm may be configured to parse the user's natural language input to identify one or more IoT application inputs, one or more IoT application outputs, and logic that relates one or more inputs to one or more outputs, and generate source code for the IoT application based on these identified elements. For example, a user of the source code editor 412 may provide a natural language input "Please remind me when the baby cries", and the source code editor 412 may generate source code for an IoT application based on such input, which has an input event "baby crying", an output event "notify user", and processing logic: if "baby crying", then "notify user".
[0167] Source code editor 412 can support a variety of different programming languages, so that the user can selectively generate source code in any of a variety of different programming languages. Such a feature can advantageously enable the user to generate source code in the programming language he or she likes. For example, source code editor 412 can enable the user to generate source code in two or more of Python, Rust, C, C++, Visual Basic, JavaScript, or ladder logic. However, these are just examples, and source code editor 412 can support any number of different or additional programming languages.
[0168] As described above, IDE 402 may also include a set of wizards 414. Each wizard 414 may provide a guided development experience to help users generate source code for IoT applications. For example, wizard 414 may utilize a series of dialog boxes or other UI elements to request information from the user about how the IoT application should operate, and then utilize this information to generate source code for the IoT application. For example, wizard 414 may utilize such UI elements to request information from the user about one or more inputs, one or more outputs, and processing logic of the IoT application. IDE 402 may include different wizards 414 for generating different types of IoT applications, respectively.
[0169] IDE 402 may also include an application builder 416. Application builder 416 may generate an executable version of the IoT application, referred to as a build, based at least on source code (e.g., one or more source code files) of the IoT application generated by the user. Generating a build may require performing different operations depending on the programming language used to implement the source code. In some cases, generating a build may include compiling the source code to generate object code, and then linking the object code with a library to generate an executable version of the IoT application. Generating a build may also require packaging the components of the IoT application (e.g., executable files, libraries, resource files, folder structures, etc.) into a form suitable for deployment.
[0170] As described above, source code editor 412 can enable a user to generate source code in a variety of different programming languages. Further according to this embodiment, application builder 416 can include a function that can create a build from source code generated in a variety of different programming languages. For example, application builder 416 can include multiple compilers, each compiler is configured to compile source code in different programming languages. As another example, application builder 416 can include a single multi-language compiler that can compile the generated source code using a variety of different programming languages. As yet another example, application builder 416 can include a translator that converts source code from a first programming language to a second programming language, and a compiler that compiles source code in a second programming language.
[0171] The application builder 416 can generate multiple different builds of the IoT application, each of which is configured to be installed and executed on a different host device or group of host devices. For example, the application builder 416 can generate two or more of the following items: a build suitable for installation and execution on an IoT device (e.g., any one of the IoT devices 306, 308, 310, 312); a build suitable for installation and execution on a user device (e.g., user device 304); a build suitable for installation and execution on a cloud computing platform (e.g., cloud deployment 362); or a build suitable for distributed installation and execution across multiple devices (e.g., across multiple IoT devices, across multiple user devices, or across a combination of one or more IoT devices, one or more user devices, and a cloud server). Multiple builds of IoT applications generated in this manner can be submitted to the IoT application store 350, so that the end users of the smart installation service 354 and / or the IoT application store 350 can choose from multiple different installation options when installing the IoT application. For example, as previously described, the smart installation service 354 can consider various factors associated with each eligible host (e.g., cloud, user device, IoT device) and / or IoT application when determining where to install the IoT application.
[0172] IDE 402 may also include simulator 418. Simulator 418 may enable a user to install an IoT application being developed to a simulated network of IoT devices (e.g., a simulated network of IoT devices 306, 308, 310, 312) and execute the IoT application thereon. For example, a simulated network of IoT devices may include one or more simulated IoT devices and a simulated hosting platform for IoT applications (which itself may include one or more simulated IoT devices, user devices, or cloud computing devices). The simulated IoT devices may represent generic IoT device types or real-world brands / models of specific IoT devices.
[0173] Thus, simulator 418 can enable developers of IoT applications to determine how the IoT application will run when installed on different hosting platforms (e.g., cloud, user device, IoT device, distributed) and when interacting with different IoT devices (e.g., different in device manufacturer and model and different in location / orientation). Such features can enable developers to debug IoT applications, optimize IoT applications, ensure that IoT applications will work with certain IoT devices, ensure that IoT applications will work under different installation configurations, etc.
[0174] The IoT application development platform 370 may include a library of IoT device network models 406. Each such model 406 may define a different simulated IoT device network. The simulator 418 may enable developers of IoT applications to select a model from the library of IoT device network models 406, install the IoT application to the simulated IoT device network defined by the selected model, and execute the IoT application on the network. In situations where different end users may have different groups of IoT devices, this feature can advantageously enable developers to test IoT applications across a variety of different IoT device groups. For example, each model 406 may represent a different IoT device combination and / or configuration, and developers can then use each model to test IoT applications.
[0175] In addition to enabling users to install IoT applications being developed to a network of simulated IoT devices, simulator 418 may also enable users to install IoT applications being developed to an IoT device network consisting entirely of physical IoT devices or an IoT device network that includes a combination of both simulated IoT devices and physical IoT devices. For example, the library of IoT device network models 406 may include models consisting entirely of simulated IoT devices, models consisting entirely of physical IoT devices, and models consisting of a combination of simulated IoT devices and physical IoT devices. Thus, developers of IoT applications can test applications in conjunction with a network of simulated IoT devices, a network of physical IoT devices, or a hybrid network of simulated IoT devices and physical IoT devices.
[0176] The simulator 418 can incorporate features of the smart installation service 354 and utilize these features to determine how to map the inputs and / or outputs of the IoT application to simulated IoT devices of the simulated IoT device network. This can help developers determine, for example, how the IoT application will run if the inputs or outputs of the IoT application cannot be mapped to the IoT device, or if the inputs or outputs of the IoT application are mapped to an IoT device that lacks one or more features required to implement the IoT application. For example, this feature can enable developers to determine whether the IoT application will not run at all in this case, or whether the performance of the IoT application will be moderately degraded in this case.
[0177] The simulator 418 may enable developers to replace the corresponding inputs or outputs of the IoT application being executed on the simulated IoT device network with the inputs or outputs of the computing device installed with the IoT application development platform 370. For example, the simulator 418 may enable developers to: (i) use the microphone of the computing device to provide audio input to the IoT application being executed on the simulated IoT device network, (ii) use the camera of the computing device to provide video input to the IoT application being executed on the simulated IoT device network, (iii) use the speaker of the computing device to play back the audio output of the IoT application being executed on the simulated IoT device network, or (iv) use the display of the computing device to present the video output of the IoT application being executed on the simulated IoT device network. The simulator 418 may also enable developers to connect physical IoT devices to the computing device installed with the IoT application development platform 370 so that these physical IoT devices can provide real-world inputs or outputs to the IoT application being executed on the simulated IoT device network.
[0178] The IDE 402 may also include an IoT device network model editor 420. The IoT device network model editor 420 may enable a user to create a new model from scratch or modify an existing model in a library of IoT device network models 406. For example, a user may use the IoT device network model editor 420 to create or modify a network model consisting entirely of simulated IoT devices, a network model consisting entirely of physical IoT devices, or a network model consisting partially of simulated IoT devices and physical IoT devices. As another example, a user may use the IoT device network model editor 420 to add / remove / modify simulated IoT devices contained in an existing model. For example, modifying a simulated IoT device may include changing a model or feature group associated with a simulated IoT device or changing the location or orientation of a simulated IoT device. Upon installation, the IoT application development platform 370 may include a set of default IoT device network models 406, and a user may use the IoT device network model editor 420 to view and selectively modify any of the default models to create a new model. Newly created or modified models may be saved and optionally shared with other users.
[0179] The models contained in the library of IoT device network models 406 can be generated in a variety of ways. For example, such models can be developed using the IoT device network model editor 420. The model can also be based on or derived from a virtual deployment generated by the virtual deployment service 358. The model can also be based on or derived from a 2D or 3D map of IoT devices associated with a user, which can be generated according to the methods described in commonly owned, co-pending U.S. patent application Ser. No. 18 / 141,120, filed on April 28, 2023, entitled “Map Generator for Map-Based Device Management”.
[0180] IDE 402 may also include a document / API reference viewer 422. This component can be used to view the documentation and / or API reference 408 contained in the IoT application development platform 370. The documents and API reference 408 may include (i) a set of supporting documents associated with the IoT application development platform 370 and (ii) an API reference associated with the IoT application development platform. The set of supporting documents may provide information about how to install the components of the IoT application development platform 370 and how these components can be used to develop IoT applications. The set of supporting documents may include information such as tutorials, code snippets, installation guides, etc. The API reference may contain information about the APIs supported by the IoT application development platform 370.
[0181] In addition to the IDE 402 , the IoT application development platform 370 may also include a code library 404 , an IoT device network model 406 , documentation and API reference 408 , and an IoT application submission client 410 .
[0182] Code library 404 includes code that can be incorporated into the source code of the IoT application being developed. Figure 4 As shown, code base 404 may include API 424, third-party API 426, templates 428, AI tools 430, and ML models 432. API 424 may define programming interfaces for interacting with various code bases, host devices, and / or IoT devices. API 424 may be incorporated into source code (e.g., source code generated using source code editor 412) to implement features of IoT applications. As described above, API 424 may include definitions of certain events, common IoT device functions, and common IoT device types that may be incorporated into such source code.
[0183] The third-party API 426 may define programming interfaces for third-party services to enable such third-party services to be integrated into the IoT application being developed. For example, the third-party API 426 may include APIs associated with social media platform services, microblogging services, video sharing services, email services, streaming services, digital assistant services, etc., and such APIs may be incorporated into the IoT application being developed to call features of such services.
[0184] Templates 428 may include example source code files or modules that a user may access (e.g., via source code editor 412 or other UI) and optionally customize to implement a particular IoT application or feature. For example, IoT application development platform 370 may include (e.g., upon installation) any number of templates 428 that a user may access and optionally modify to facilitate programming of a particular IoT application or IoT application feature. Templates 428 may make application development easier and provide useful examples of how an IoT application or feature should be implemented. Templates may include comments that may help users determine how specific aspects of the template can or should be modified to achieve specific implementation goals.
[0185] The AI tools 430 may include modular AI components that a user may incorporate into an IoT application being developed. For example, a generative AI tool may be incorporated into an IoT application to control one or more IoT devices to produce various effects (e.g., controlling a group of smart light bulbs to produce interesting patterns). Such an IoT application may allow a user to provide input (e.g., natural language input) to guide the generative AI. For example, such an IoT application may use a large language model (LLM) to interpret user input (e.g., natural language input) to guide the generative AI.
[0186] ML models 432 may include ML models that can be incorporated into IoT applications to implement certain features of IoT applications. For example, ML models can be used to determine whether a specific input event (e.g., "baby crying") has occurred based on sensor input (e.g., audio input stream) obtained from one or more IoT devices. IoT application development platform 370 can also provide facilities through which developers can train ML models for use in IoT applications. In addition, ML models can provide features that enable end users of IoT applications to train ML models while the IoT application is running.
[0187] The IoT device network model 406 was previously described with reference to the simulator 418, and the documentation and API reference 408 was previously described with reference to the documentation / API reference viewer 422. Therefore, for the sake of brevity, these components will not be described again here.
[0188] The IoT application submission client 410 may enable a user to submit an IoT application developed on the IoT application development platform 370 to an IoT application store, such as the IoT application store 350, for distribution therefrom. For example, the IoT application submission client 410 may enable a user to upload an IoT application to an IoT application submission service 360 that constitutes a part of the IoT application store 350. As described above, the IoT application submitted to the IoT application submission service 360 may include a plurality of different code bases or builds, each of which may be configured for execution on one or more host devices of a different group, thereby enabling the IoT application to be selectively installed in a variety of different configurations. The IoT application submitted to the IoT application submission service 360 may also include source code for the IoT application, and the IoT application store 350 may be operated to generate one or more builds from the source code (e.g., by compiling the source code), wherein each build may be configured for execution on one or more host devices of a different group. In this case, the IoT application store 350 may perform one or more operations originating from the application builder 416, as described above.
[0189] Figure 5 A flow chart of a method 500 for providing a platform for developing IoT applications according to some embodiments is shown. The method 500 can be performed by processing logic, which can include hardware (e.g., circuits, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executed on a processing device), or a combination of hardware and software. It should be understood that not all steps may be required to perform the disclosure provided herein. In addition, a person of ordinary skill in the art will understand that some steps may be performed simultaneously or in parallel. Figure 5The order shown in the figure is different from the order in which it is executed.
[0190] Method 500 will refer to Figure 4 However, method 500 is not limited to this example embodiment.
[0191] In 502, a source code editor 412 is provided that enables a user to generate source code of an IoT application, wherein the source code editor 412 enables the user to generate source code of the IoT application by defining an input or output of the IoT application as an event, which event can be mapped to a first group of IoT devices in the first IoT device network when the IoT application is installed in the first IoT device network, and can be mapped to a second group of IoT devices in the second IoT device network when the IoT application is installed in the second IoT device network. The first group of IoT devices may include at least one IoT device whose type is not included in the second group of IoT devices.
[0192] For example, providing source code editor 412 may include publishing a version of source code editor 412 in a form suitable for downloading to a computing device for installation and / or execution thereon (e.g., as part of an SDK). Providing source code editor 412 may also include providing a computer-readable medium having stored thereon a version of source code editor 412 that may be installed and / or executed on a computing device. Providing source code editor 412 may also be performed by IDE 402 (or any other software development tool / platform in which source code editor 412 is a feature) during execution of IDE 402.
[0193] The source code editor 412 provided in 502 may also enable a user to associate a generic IoT device function with an event, wherein the generic IoT device function may be mapped to a first IoT device in a first IoT device network when the application is installed to the first IoT device network, and may be mapped to a second IoT device in a second IoT device network when the application is installed to the second IoT device network.
[0194] The source code editor 412 provided in 502 may also enable a user to associate a generic IoT device type with an event, wherein the generic IoT device type may be mapped to a first IoT device in a first IoT device network when the application is installed to the first IoT device network, and may be mapped to a second IoT device in a second IoT device network when the application is installed to the second IoT device network.
[0195] The source code editor 412 provided in 502 may also enable a user to specify an ML model (eg, one of the ML models 432 ) to be used to identify occurrences of events when an input of an application is defined as an event.
[0196] In 504 , an IoT application builder 416 is provided for generating an executable version of the IoT application based on at least the source code of the IoT application generated in 502 .
[0197] For example, providing the IoT application builder 416 may include publishing a version of the IoT application builder 416 in a form suitable for downloading to a computing device for installation and / or execution thereon (e.g., as part of an SDK). Providing the IoT application builder 416 may also include providing a computer-readable medium storing a version of the IoT application builder 416 that may be installed and / or executed on a computing device. Providing the IoT application builder 416 may also be performed by the IDE 402 (or any other software development tool / platform that the source code editor 412 is a feature of) during execution of the IDE 402.
[0198] The source code editor 412 provided in 502 may also enable a user to selectively generate source code in one of a plurality of programming languages, and the IoT application builder 416 provided in 504 may be configured to generate an executable version of the application based at least on the source code of the application selectively generated in one of a plurality of programming languages.
[0199] Method 500 may also include one or more of: providing a template (e.g., one of templates 428) that can be customized by a user to generate source code for an application; or providing a wizard (e.g., one of wizards 414) that guides a user through a series of steps to generate source code for an application.
[0200] Figure 6 A flow chart of a method 600 for generating different executable versions of an IoT application for installation and execution on a variety of different host devices according to some embodiments is shown. The method 600 can be performed by processing logic, which can include hardware (e.g., circuits, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executed on a processing device), or a combination of hardware and software. It should be understood that not all steps may be required to perform the disclosure provided herein. In addition, a person of ordinary skill in the art will understand that some steps may be performed simultaneously or in parallel. Figure 6 The order shown in the figure is different from the order in which it is executed.
[0201] Method 600 will refer to Figure 4 However, method 600 is not limited to this example embodiment.
[0202] In 602, the IoT application builder 416 receives the source code of the generated IoT application. For example, the IoT application builder 416 can receive the source code of the IoT application generated using the source code editor 412, the wizard 414, the template 428, or in some other way. The source code of the generated IoT application can also include source code from one or more code libraries 404.
[0203] In 604 , the IoT application builder 416 generates an executable version of the IoT application suitable for installation and execution on an IoT device (e.g., any one of the IoT device 306 , the IoT device 308 , the IoT device 310 , and the IoT device 312 ) based at least on the generated source code of the IoT application.
[0204] In 606 , the IoT application builder 416 generates an executable version of the IoT application suitable for installation and execution on a user device (eg, the user device 304 ) based at least on the generated source code of the IoT application.
[0205] In 608 , the IoT application builder 416 generates an executable version of the IoT application suitable for installation and execution on a cloud computing platform (eg, the cloud deployment 362 ) based at least on the generated source code of the IoT application.
[0206] In 610, the IoT application builder 416 generates an executable version of the IoT application suitable for distributed installation and execution across multiple devices (e.g., across multiple IoT devices, across multiple user devices, or across a combination of one or more IoT devices, one or more user devices, and a cloud server) based at least on the source code of the generated IoT application.
[0207] Figure 7 A flow chart of a method 700 for providing a platform for developing IoT applications according to some embodiments is shown, which enables users of the platform to execute IoT applications on a simulated IoT device network. The method 700 can be performed by processing logic, which can include hardware (e.g., circuits, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executed on a processing device), or a combination of hardware and software. It should be understood that not all steps may be required to perform the disclosure provided herein. In addition, a person of ordinary skill in the art will understand that some steps can be performed simultaneously or in parallel. Figure 7 The order shown in the figure is different from the order in which it is executed.
[0208] Method 700 will refer to Figure 4 However, method 700 is not limited to this example embodiment.
[0209] At 702 , a library of IoT device network models 406 is provided, wherein each model in the library of IoT device network models defines a different simulated IoT device network.
[0210] For example, providing a library of IoT device network models 406 may include publishing the library of IoT device network models 406 in a form suitable for downloading to a computing device (e.g., as part of an SDK), or providing a computer-readable medium storing the library of IoT device network models 406. The library providing IoT device network models 406 may also be executed by the IoT application development platform 370 (or any other software development tool / platform featuring a source library of IoT device network models 406) during execution of the IoT application development platform 370.
[0211] In 704 , a simulator 418 is provided that enables a user to select a model in the library of IoT device network models 406 and install an IoT application to a simulated IoT device network defined by the selected model and execute the IoT application on the network.
[0212] For example, providing simulator 418 may include publishing a version of simulator 418 in a form suitable for downloading to a computing device for installation and / or execution thereon (e.g., as part of an SDK). Providing simulator 418 may also include providing a computer-readable medium having stored thereon a version of simulator 418 that may be installed and / or executed on a computing device. Providing simulator 418 may also be performed by IDE 402 (or any other software development tool / platform that features simulator 418) during execution of IDE 402.
[0213] In 706, an IoT device network model editor 420 is provided that enables a user to create a new model or modify an existing model in the library of IoT device network models 406. As described above, the device network model editor 420 can enable a user to create a new model or modify an existing model that is composed entirely of simulated IoT devices, entirely of physical IoT devices, or partially of simulated IoT devices and partially of physical IoT devices. All of these model types can be incorporated into the library of IoT device network models 406, can be simulated by the simulator 418, can be modified by the IoT device network model editor 420, and can be operated by any or all of the IoT device network model facilities described herein.
[0214] For example, providing the IoT device network model editor 420 may include publishing a version of the IoT device network model editor 420 in a form suitable for downloading to a computing device for installation and / or execution thereon (e.g., as part of an SDK). Providing the IoT device network model editor 420 may also include providing a computer-readable medium storing a version of the IoT device network model editor 420 that may be installed and / or executed on a computing device. Providing the IoT device network model editor 420 may also be performed by the IDE 402 (or any other software development tool / platform featuring the IoT device network model editor 420) during execution of the IDE 402.
[0215] Example Computer System
[0216] For example, one or more well-known computer systems (such as Figure 8 800) to implement various embodiments. For example, a combination or sub-combination of computer systems 800 can be used to implement one or more of user device 304, IoT device 306, IoT device 308, IoT device 310, IoT device 312, IoT application store 350, digital market service 352, smart installation service 354, automatic update service 356, virtual deployment service 358, IoT application submission service 360, cloud deployment 362, IoT application development platform 370, IDE 402, or IoT application submission client 410. In addition or alternatively, for example, one or more computer systems 800 and combinations and sub-combinations thereof can be used to implement any of the embodiments discussed herein.
[0217] Computer system 800 may include one or more processors (also referred to as central processing units or CPUs), such as processor 804. Processor 804 may be connected to a communication infrastructure or bus 806.
[0218] The computer system 800 may also include one or more user input / output devices 803 such as a monitor, a keyboard, and a pointing device, which may communicate with the communication infrastructure 806 via one or more user input / output interfaces 802 .
[0219] One or more of the processors 804 may be a graphics processing unit (GPU). In an embodiment, a GPU may be an electronic circuit processor specifically designed to process mathematically intensive applications. A GPU may have a parallel structure that can efficiently process large blocks of data in parallel, such as mathematically intensive data commonly found in computer graphics applications, images, videos, etc.
[0220] The computer system 800 may also include a main memory or primary storage 808, such as a random access memory (RAM). The main memory 808 may include one or more levels of cache. The main memory 808 may store control logic (ie, computer software) and / or data.
[0221] The computer system 800 may also include one or more secondary storage devices or memories 810. The secondary storage 810 may include, for example, a hard disk drive 812 and / or a removable storage device or drive 814. The removable storage drive 814 may be a floppy disk drive, a tape drive, an optical drive, an optical storage device, a tape backup device, and / or any other storage device / drive.
[0222] The removable storage drive 814 can interact with a removable storage unit 818. The removable storage unit 818 may include a computer usable or readable storage device having computer software (control logic) and / or data stored thereon. The removable storage unit 818 may be a floppy disk, a magnetic tape, a compact disk, a DVD, an optical storage disk, and / or any other computer data storage device. The removable storage drive 814 can read from and / or write to the removable storage unit 818.
[0223] Auxiliary memory 810 may be used to allow computer system 800 to access computer programs and / or other instructions and / or data including other devices, equipment, components, tools or other methods. For example, such devices, equipment, components, tools or other methods may include a removable storage unit 822 and an interface 820. Examples of removable storage unit 822 and interface 820 may include a program cartridge and a cartridge interface (e.g., a program cartridge interface and a cartridge interface in a video game device), a removable storage chip (e.g., an EPROM or PROM) and an associated slot, a memory stick and a USB or other port, a memory card and an associated memory card slot, and / or any other removable storage unit and an associated interface.
[0224] The computer system 800 may also include a communication or network interface 824. The communication interface 824 may enable the computer system 800 to communicate and interact with any combination of external devices, external networks, external entities, and the like (singly and collectively referenced by reference numeral 828). For example, the communication interface 824 may allow the computer system 800 to communicate with an external or remote device 828 via a communication path 826, which may be wired and / or wireless (or a combination of both) and may include any combination of a LAN, a WAN, the Internet, and the like. Control logic and / or data may be transmitted to and from the computer system 800 via the communication path 826.
[0225] The computer system 800 may also be a personal digital assistant (PDA), a desktop workstation, a laptop or notebook computer, a netbook, a tablet computer, a smartphone, a smart watch or other wearable device, an appliance, part of the IoT, and / or an embedded system, to name a few non-limiting examples, or any combination thereof.
[0226] The computer system 800 can be a client or server, accessing or hosting any applications and / or data through any delivery paradigm (including but not limited to remote or distributed cloud computing solutions); local or on-premises software ("on-premises" cloud-based solutions); "as a service" models (e.g., content as a service (CaaS), digital content as a service (DCaaS), software as a service (SaaS), hosted software as a service (MSaaS), platform as a service (PaaS), desktop as a service (DaaS), framework as a service (FaaS), backend as a service (BaaS), mobile backend as a service (MBaaS), infrastructure as a service (IaaS), etc.); and / or a hybrid model including any combination of the foregoing examples or other services or delivery paradigms.
[0227] Any suitable data structures, file formats, and schemas in computer system 800 may be obtained from standards including, but not limited to, JavaScript Object Notation (JSON), Extensible Markup Language (XML), Yet Another Markup Language (YAML), Extensible Hypertext Markup Language (XHTML), Wireless Markup Language (WML), MessagePack, XML User Interface Language (XUL), or any other functionally similar representation standards, alone or in combination. Alternatively, proprietary data structures, formats, or schemas may be used alone or in combination with known or open standards.
[0228] In some embodiments, a tangible, non-transitory device or article of manufacture including a tangible, non-transitory computer usable or readable medium having control logic (software) stored thereon may also be referred to herein as a computer program product or program storage device. The tangible, non-transitory device or article of manufacture includes, but is not limited to, computer system 800, main memory 808, auxiliary memory 810, and removable storage unit 818 and removable storage unit 822, and tangible articles of manufacture embodying any combination of the foregoing. When such control logic is executed by one or more data processing devices (e.g., computer system 800 or one or more processors 804), the control logic may cause such data processing devices to operate as described herein.
[0229] Based on the teachings contained in this disclosure, it will be apparent to those skilled in the relevant art how to use the Figure 8 The embodiments of the present disclosure may be made and used with data processing devices, computer systems, and / or computer architectures other than those shown. In particular, the embodiments may operate with software, hardware, and / or operating system implementations other than those described herein.
[0230] in conclusion
[0231] It should be understood that the detailed description section (but not any other section) is intended to be used to interpret the claims. The other sections may set forth one or more but not all exemplary embodiments contemplated by the inventors, and therefore, the other sections are not intended to limit the present disclosure or the appended claims in any way.
[0232] Although the present disclosure describes exemplary embodiments of exemplary fields and applications, it should be understood that the present disclosure is not limited thereto. Other embodiments and modifications thereof are also possible and fall within the scope and spirit of the present disclosure. For example, without limiting the generality of this paragraph, the embodiments are not limited to the software, hardware, firmware, and / or entities shown in the drawings and / or described herein. In addition, the embodiments (whether or not explicitly described herein) have important utility for fields and applications other than the examples described herein.
[0233] Embodiments are described herein with the aid of functional building blocks that illustrate implementations of specified functions and relationships thereof. For ease of description, the boundaries of these functional building blocks are arbitrarily defined herein. Alternative boundaries may be defined as long as the specified functions and relationships (or their equivalents) are properly performed. In addition, alternative embodiments may perform functional blocks, steps, operations, methods, etc., in a different order than described herein.
[0234] References to "one embodiment," "embodiment," "example embodiment," or similar phrases herein illustrate that the embodiments may include specific features, structures, or characteristics, but each embodiment does not necessarily include specific features, structures, or characteristics. In addition, these phrases do not necessarily refer to the same embodiment. In addition, when describing specific features, structures, or characteristics in conjunction with an embodiment, a person skilled in the relevant art will incorporate such features, structures, or characteristics into other embodiments, regardless of whether or not explicitly mentioned or described herein. In addition, some embodiments may be described using the expressions "coupled" and "connected" and their derivatives. These terms are not necessarily synonymous with each other. For example, some embodiments may be described using the terms "connected" and / or "coupled" to illustrate that two or more elements are in direct physical or electrical contact with each other. However, the term "coupled" may also mean that two or more elements are not in direct contact with each other, but still cooperate or interact with each other.
[0235] The breadth and scope of the present disclosure should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
Claims
1. A computer-implemented method for providing a platform for developing applications that interact with a set of Internet of Things (IoT) devices, the method comprising: Providing a source code editor by at least one computer processor, the source code editor enabling a user to generate source code for the application, wherein enabling the user to generate source code for the application includes: enabling the user to define an input of the application or an output of the application as an event, the event being mappable to a first group of IoT devices in a first IoT device network when the application is installed in the first IoT device network, and being mappable to a second group of IoT devices in the second IoT device network when the application is installed in a second IoT device network, the first group of IoT devices including at least one IoT device whose type is not included in the second group of IoT devices; and An application builder is provided, which generates an executable version of the application based at least on the generated source code of the application.
2. The computer-implemented method of claim 1 , wherein: The source code editor enables a user to associate a generic IoT device function with the event, and wherein the generic IoT device function is mappable to a first IoT device in the first IoT device network when the application is installed to the first IoT device network, and is mappable to a second IoT device in the second IoT device network when the application is installed to the second IoT device network.
3. The computer-implemented method of claim 1 , wherein: The source code editor enables a user to associate a generic IoT device type with the event, and wherein the generic IoT device type is mappable to a first IoT device in the first IoT device network when the application is installed to the first IoT device network, and is mappable to a second IoT device in the second IoT device network when the application is installed to the second IoT device network.
4. The computer-implemented method of claim 1 , wherein: The source code editor enables a user to specify a machine learning model to be used to identify occurrences of events when inputs to the application are defined as events.
5. The computer-implemented method of claim 1 , wherein: Providing an application builder includes providing an application builder that generates two or more of the following based at least on source code of the generated application: An executable version of the application suitable for installation and execution on an IoT device; an executable version of the application suitable for installation and execution on a user device; an executable version of the application suitable for installation and execution on a cloud computing platform; or An executable version of an application suitable for distributed installation and execution across multiple devices.
6. The computer-implemented method of claim 1 , wherein: The source code editor enables a user to selectively generate the source code in one of a plurality of programming languages, and wherein the application builder is configured to generate an executable version of the application based at least on the source code of the application selectively generated in one of a plurality of programming languages.
7. The computer-implemented method of claim 1 , further comprising: A simulator is provided that enables a user to install the application to a simulated IoT device network and execute the application on the simulated IoT device network.
8. The computer-implemented method of claim 7, further comprising: Providing a model library, wherein each model in the model library defines a different simulated IoT device network; The simulator enables a user to select a model from the model library, install the application to a simulated IoT device network defined by the selected model, and execute the application on the simulated IoT device network defined by the selected model.
9. The computer-implemented method of claim 8, further comprising: A model editor is provided that enables a user to create new models or modify existing models in the model library.
10. A system for providing a platform for developing applications that interact with a group of Internet of Things (IoT) devices, the system comprising: one or more memories; and at least one processor, each processor coupled to at least one of the memories and configured to perform operations comprising: providing a source code editor that enables a user to generate source code of the application, wherein enabling the user to generate source code of the application includes: enabling the user to define an input of the application or an output of the application as an event, wherein the event is mappable to a first group of IoT devices in a first IoT device network when the application is installed in the first IoT device network, and is mappable to a second group of IoT devices in the second IoT device network when the application is installed in a second IoT device network, wherein the first group of IoT devices includes at least one IoT device whose type is not included in the second group of IoT devices; and An application builder is provided, which generates an executable version of the application based at least on the generated source code of the application.
11. The system according to claim 10, wherein: The source code editor enables a user to associate a generic IoT device function with the event, and wherein the generic IoT device function is mappable to a first IoT device in the first IoT device network when the application is installed to the first IoT device network, and is mappable to a second IoT device in the second IoT device network when the application is installed to the second IoT device network.
12. The system according to claim 10, wherein: The source code editor enables a user to associate a generic IoT device type with the event, and wherein the generic IoT device type is mappable to a first IoT device in the first IoT device network when the application is installed to the first IoT device network, and is mappable to a second IoT device in the second IoT device network when the application is installed to the second IoT device network.
13. The system according to claim 10, wherein: The source code editor enables a user to specify a machine learning model to be used to identify occurrences of events when inputs to the application are defined as events.
14. The system according to claim 10, wherein: Providing an application builder includes providing an application builder that generates two or more of the following based at least on source code of the generated application: An executable version of the application suitable for installation and execution on an IoT device; an executable version of the application suitable for installation and execution on a user device; an executable version of the application suitable for installation and execution on a cloud computing platform; or An executable version of an application suitable for distributed installation and execution across multiple devices.
15. The system according to claim 10, wherein: The source code editor enables a user to selectively generate the source code in one of a plurality of programming languages, and wherein the application builder is configured to generate an executable version of the application based at least on the source code of the application selectively generated in one of a plurality of programming languages.
16. The system of claim 10, wherein: The operations also include: A simulator is provided that enables a user to install the application to a simulated IoT device network and execute the application on the simulated IoT device network.
17. The system of claim 16, wherein: The operations also include: Providing a model library, wherein each model in the model library defines a different simulated IoT device network; The simulator enables a user to select a model from the model library, install the application to a simulated IoT device network defined by the selected model, and execute the application on the simulated IoT device network defined by the selected model.
18. The system of claim 17, wherein: The operations also include: A model editor is provided that enables a user to create new models or modify existing models in the model library.
19. A non-transitory computer-readable medium having stored thereon instructions that, when executed by at least one computing device, cause the at least one computing device to perform operations comprising: A source code editor is provided, the source code editor enabling a user to generate source code of an application that interacts with a group of Internet of Things (IoT) devices, wherein enabling the user to generate the source code of the application includes: enabling the user to define the input of the application or the output of the application as an event, the event being mappable to a first group of IoT devices in a first IoT device network when the application is installed in the first IoT device network, and being mappable to a second group of IoT devices in the second IoT device network when the application is installed in a second IoT device network, the first group of IoT devices including at least one IoT device whose type is not included in the second group of IoT devices; and An application builder is provided, which generates an executable version of the application based at least on the generated source code of the application.
20. The non-transitory computer readable medium of claim 19, wherein: The operations also include: A simulator is provided that enables a user to install the application to a simulated IoT device network and execute the application on the simulated IoT device network.
Citation Information
Patent Citations
Map generator for map-based device management
US20240365083A1