US20210250244A1 - Internet of things system topology generation - Google Patents
Internet of things system topology generation Download PDFInfo
- Publication number
- US20210250244A1 US20210250244A1 US17/242,788 US202117242788A US2021250244A1 US 20210250244 A1 US20210250244 A1 US 20210250244A1 US 202117242788 A US202117242788 A US 202117242788A US 2021250244 A1 US2021250244 A1 US 2021250244A1
- Authority
- US
- United States
- Prior art keywords
- iot
- components
- gateway
- user interface
- component
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000000034 method Methods 0.000 claims description 26
- 230000004048 modification Effects 0.000 claims description 15
- 238000012986 modification Methods 0.000 claims description 15
- 230000002776 aggregation Effects 0.000 claims description 12
- 238000004220 aggregation Methods 0.000 claims description 12
- 238000007726 management method Methods 0.000 description 113
- 238000004891 communication Methods 0.000 description 42
- 230000009466 transformation Effects 0.000 description 24
- 238000000844 transformation Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 13
- 239000012634 fragment Substances 0.000 description 11
- 230000015654 memory Effects 0.000 description 11
- 239000003795 chemical substances by application Substances 0.000 description 9
- 230000006855 networking Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000009434 installation Methods 0.000 description 5
- 238000012800 visualization Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000002452 interceptive effect Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 229910052799 carbon Inorganic materials 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 229910002804 graphite Inorganic materials 0.000 description 1
- 239000010439 graphite Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/22—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks comprising specially adapted graphical user interfaces [GUI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5041—Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/02—Capturing of monitoring data
- H04L43/028—Capturing of monitoring data by filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/566—Grouping or aggregating service requests, e.g. for unified processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/70—Services for machine-to-machine communication [M2M] or machine type communication [MTC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0806—Configuration setting for initial configuration or provisioning, e.g. plug-and-play
Definitions
- IoT Internet-of-Things
- the enterprise can utilize a management service capable of protecting IoT device data, as well as email, corporate documents, and other enterprise data from theft, data loss, and unauthorized access.
- IoT devices can connect through a gateway or another edge device.
- Edge devices can be in communication with multiple IoT devices.
- An edge device can require code or instructions that enable communication with the various IoT devices.
- Different IoT devices can involve a variety of different functionalities and can utilize different communication protocols. It can be difficult to reliably provision instructions for edge devices to communicate with the range of IoT devices. Setting up test systems or manually creating instructions to enable proper communications can cause inefficiencies in time and resources that are frustrating for technicians, administrators, and end users.
- FIG. 1 is a drawing of an example of a networked environment for generating an Internet-of-Things system topology.
- FIG. 2 is an example flow chart illustrating functionality implemented by components of the networked environment.
- FIGS. 3A-3B are drawings illustrating graphical representations of IoT topologies.
- FIGS. 4-6 are drawings illustrating functionality implemented by components of the networked environment and rendered for display.
- the present disclosure relates to generating an Internet-of-Things (IoT) system topology.
- An edge device can require code or instructions that enable communication with the various IoT devices.
- Different IoT devices can involve a variety of different functionalities and can utilize different communication protocols. It can be difficult to reliably provision instructions for edge devices to communicate with the range of IoT devices. Previous methods of manually developing instructions to enable proper communications in an IoT system can be wasteful in time and resources.
- the present disclosure describes systems and methods that can facilitate edge device provisioning by an efficient user interface that is quickly recognizable and usable with a minimum of programming knowledge.
- a process can generate a user interface to include a graphical representation of a number of components.
- the components can be user-selected.
- the components can include a gateway device component, a bus component, an Internet-of-Things (IoT) device component, and other components.
- a relationship between the plurality of components can be determined based on user-defined connections.
- the user-defined connections can be identified between individual components.
- IoT topology code can be generated.
- the IoT topology code can include the relationship between the components, and properties for individual components.
- the IoT topology code can be generated in a data serialization format.
- the IoT topology code can be converted to executable gateway instructions.
- the gateway instructions can include a package that enables a gateway device to communicate with an IoT device.
- the gateway instructions can be transmitted to the gateway device for execution.
- the package can include manufacturer-defined code for communications with the IoT device.
- the components can include a filter component.
- the filter component can specify a metric to collect from the IoT device.
- the metric can include an aggregation size, an interval, and a unit.
- a user selection of a particular component can be identified.
- a user interface element can be generated to include a property of the particular component.
- a user modification of the property can be obtained through the user interface element.
- the IoT topology code can be updated based the user modification.
- the user interface can include a first section and a second section.
- the first section of the user interface can include the graphical representation of the plurality of components
- the second section of the user interface can include the IoT topology code.
- a first section of the user interface can include the graphical representation of the plurality of components
- a second section of the user interface can include a list of pre-defined components.
- the networked environment 100 can include a management system 103 , a client device 109 , a gateway 111 , Internet-of-Things (IoT) devices 113 , and datacenters 115 in communication with one another over a network 112 .
- Internet-of-Things (IoT) devices 113 and other devices can connect to the network 112 through the gateway 111 .
- the gateway 111 can communicate with the management service 120 for management of the IoT devices 113 that connect to the network 112 through the gateway 111 .
- the components of the networked environment 100 can be utilized to generate an IoT system topology and provision the gateway 111 with executable instructions.
- the network 112 can include the Internet, intranets, extranets, wide area networks (WANs), local area networks (LANs), wired networks, wireless networks, other suitable networks, or any combination of two or more such networks.
- the networks can include satellite networks, cable networks, Ethernet networks, telephony networks, and other types of networks.
- the management system 103 can include a server computer or any other system providing computing capability. While referred to in the singular, the management system 103 can include a plurality of computing devices that are arranged in one or more server banks, computer banks, or other arrangements. The management system 103 can include a grid computing resource or any other distributed computing arrangement. The management system 103 can be customer or enterprise-specific. In some embodiments, the management system can be part of a local network, and can be local to at least one of the other components of the networked environment. In other embodiments, the management system 103 can be remote from the other components, or the computing devices of the management system 103 can be located in a single installation or can be distributed among many different geographical locations local and/or remote from the other components.
- the management system 103 can also include or be operated as one or more virtualized computer instances. For purposes of convenience, the management system 103 is referred to herein in the singular. Even though the management system 103 is referred to in the singular, it is understood that a plurality of management systems 106 can be employed in the various arrangements as described above.
- the components executed on the management system 103 can include a management service 120 as well as other applications, services, processes, systems, engines, or functionality not discussed in detail herein.
- the management service 120 can be stored in the data store 123 of the management system 103 .
- the management service 120 can include a topology creator 121 .
- the topology creator 121 can include executable instructions, programs, or processes of the management service 120 .
- the topology creator 121 can include instructions, programs, or processes separate from the management service 120 .
- the topology creator 121 can include functions related to defining and customizing components 128 , generating of IoT topologies 129 , and converting IoT topologies 129 into gateway instructions 130 .
- the topology creator 121 can include an interactive user interface as a tool. This can increase efficiency of using the management system 103 and the client device 109 , for example, to create topologies, generate gateway instructions 130 , and provision gateways 111 .
- the user interface can be accessed through a client application 136 , client management application 139 , or another application of a client device 109 , or can be accessed through a network site or web application.
- the data store 123 can include any storage device or medium that can contain, store, or maintain the instructions, logic, or applications described herein for use by or in connection with the instruction execution system.
- the data store 123 can be a hard drive or disk of a host, server computer, or any other system providing storage capability. While referred to in the singular, the data store 123 can include a plurality of storage devices that are arranged in one or more hosts, server banks, computer banks, or other arrangements.
- the data store 123 can include any one of many physical media, such as magnetic, optical, or semiconductor media. More specific examples include solid-state drives or flash memory.
- the data store 123 can include memory of the management system 103 , mass storage resources of the management system 103 , or any other storage resources on which data can be stored by the management system 103 .
- the data stored in the data store 123 can include, for example, management data including device data 125 , enterprise data 126 , compliance rules 127 , components 128 , IoT topologies 129 , gateway instructions 130 , as well as other data.
- the data stored in the data store 123 can be associated with the operation of the various applications and/or functional entities described.
- Client devices 109 , gateways 111 , and IoT devices 113 can be identified within the device data 125 by one or more of a device identifier, a unique device identifier (UDID), a media access control (MAC) address, an internet protocol (IP) address, or another identifier that uniquely identifies a device with respect to other devices.
- the device data 125 can include gateway data associated with gateways 111 and other edge systems or edge devices through which IoT devices 113 can connect to the network 112 .
- the gateway data can also include specifications, and for each gateway 111 , a type of gateway or a gateway identifier 156 , and other information.
- Specifications for the gateway 111 can include hardware configurations including a chipset utilized by the gateway, a performance or capacity, a model identifier, and software configurations, including an agent application installed on the gateway 111 .
- the configuration can identify an agent such as the gateway enrollment agent 118 , the gateway management application 169 , or a version of the gateway enrollment agent 118 or the gateway management application 169 .
- the gateway data can also include an organizational group.
- Device data 125 can include data associated with a configuration of each client device 109 , gateway 111 , and IoT device 113 and can include an identifier of the client device 109 , gateway 111 , or IoT device 113 .
- the identifier can be a serial number, media access control (MAC) address, other network address, or another device identifier.
- the device data 125 can include an enrollment status indicating whether each client device 109 , gateway 111 , or IoT device 113 is enrolled with or managed by the management service 120 .
- a client device 109 , gateway 111 , or IoT device 113 designated as “enrolled” can be permitted to access the enterprise data 126 , while a client device 109 , gateway 111 , or IoT device 113 designated as “not enrolled,” or having no designation, can be denied access to the enterprise data 126 .
- device data 125 can include indications of the state of devices including the client devices 109 , gateways 111 , and IoT devices 113 .
- these indications can specify applications that are installed on the client devices 109 , gateways 111 , and IoT devices 113 ; configurations or settings that are applied to each of the devices, user accounts, gateway accounts, or service accounts associated with each of the devices; the physical locations of each of the devices; the network to which each of the devices is connected; and other information describing the current state of each of the devices.
- Device data 125 can also include data pertaining to user groups.
- An administrator can specify one or more of the client devices 109 , gateways 111 , and IoT devices 113 as belonging to a user group.
- the user group can refer to a group of user accounts, which can include gateway accounts.
- User groups can be created by an administrator of the management service 120 such that a batch of client devices 109 , gateways 111 , and/or IoT devices 113 can be configured according to common settings.
- an enterprise can create a user group for the marketing department and the sales department, where client devices 109 , gateways 111 , and/or IoT devices 113 in the marketing department are configured differently from the client devices 109 , gateways 111 , and/or IoT devices 113 in the sales department.
- Device data 125 associated with a gateway account can be referred to as gateway data.
- Compliance rules 127 can include, for example, configurable criteria that must be satisfied for an enrolled one of the client devices 109 , gateways 111 , and IoT devices 113 to be in compliance with the management service 120 .
- the compliance rules 127 can be based on a number of factors, including geographical location, activation status, enrollment status, and authentication data including authentication data obtained by a device registration system, time, and date, and network properties, among other factors associated with each device.
- the compliance rules can also be determined based on a user account associated with a user.
- a gateway 111 can be unassociated with a user, but can nevertheless be associated with a service account, a gateway account, or another user account that is unassociated with a user.
- Compliance rules 127 can include predefined constraints that must be met in order for the management service 120 , or other applications, to permit access to the enterprise data 126 or features of the gateway 111 .
- the management service 120 can communicate with gateway management application 169 such as a gateway enrollment agent 118 , gateway management application 169 , or other applications to determine whether states exist on the client device 109 , gateway 111 , or IoT devices 113 that do not satisfy one or more compliance rules 127 .
- States can include, for example, a virus or malware being detected on the device; installation or execution of a blacklisted application; and a device being “rooted” or “jailbroken,” where root access is provided to a user of the device.
- Additional states can include the presence of particular files, questionable device configurations, vulnerable versions of applications, vulnerable states of IoT devices 113 , or other vulnerability, as can be appreciated.
- the components 128 can include devices and device subcomponents, program modules, and functionalities.
- the components 128 can include any physical or logical elements that affect the operation of the gateway 111 .
- Components 128 can include physical devices such as gateways 111 , IoT devices 113 , and datacenters 115 , as well as busses, transformations, northbound communications components, and other components.
- the components 128 can include specifications that can determine an IoT topology 129 of the data flow from an IoT device 113 , through the gateway 111 , to a northbound destination.
- busses can be southbound communications components.
- a bus or southbound communications component can define the communications mechanisms between an IoT device 113 and the gateway 111 .
- a northbound communications component can define communications mechanisms between the gateway 111 and a datacenter 115 , a management service 120 , a client device 109 , or another network destination.
- the northbound communications component can also be referred to as a datacenter communications component.
- a transformation 174 can include a metric to collect from a time-series stream of IoT data 190 from an IoT device 113 to a datacenter 115 .
- An IoT topology 129 can include code that describes a relationship between components 128 .
- the relationship can be a hierarchical relationship, an asymmetrical relationship, a symmetrical relationship, or another ordered relationship.
- the IoT creator 121 can provide an interactive user interface that allows a user to define connections between components 128 .
- the relationship can be determined from the user-defined connections between components 128 , and the IoT topology 129 can be generated using the user-defined connections.
- a relationship can define multiple connections or links between components 128 that are linked or connected.
- a component 128 can be linked to more than one of the other components 128 .
- the IoT topology 129 is utilized in order to provision a gateway 111 or another edge device.
- the IoT topology 129 can include or code or lines expressed in a data serialization format such as JavaScript Object Notation (JSON), eXtensible Markup Language (XML), or YAML.
- JSON JavaScript Object Notation
- Gateway instructions 130 can include executable code for a particular gateway 111 or type of gateway to communicate with a particular set of IoT devices 113 .
- the gateway instructions 130 can be generated based on the IoT topology 129 .
- the topology creator 121 can parse the IoT topology 129 and can convert it into the gateway instructions 130 . The conversion can differ based on the operating system 164 and other processes 165 executing on a particular gateway 111 .
- the topology creator 121 can convert the IoT topology 129 code into Python or Python-based executable code, C or C-based executable code, or executable code in other programming languages. To this end, the topology creator 121 can generate the gateway instructions 130 using various sets of executable code fragments and rules for the various programming languages. The executable code fragments and rules can be stored in the data store 123 . The topology creator 121 can identify a programming language based on an identity of a particular gateway 111 or a software version of the gateway 111 referenced in the IoT topology 129 . The topology creator 121 can convert the IoT topology 129 to executable gateway instructions 130 by referencing the language-specific code fragments and translation rules for the programming language.
- the topology creator 121 can utilize manufacturer-defined code fragments that enable communications with a particular IoT device 113 .
- the manufacturer code fragments can include portions in a particular messaging protocol for the IoT device 113 .
- Messaging protocols can include Message Queuing Telemetry Transport (MQTT), Constrained Application Protocol (CoAP), Simple Text Oriented Messaging Protocol (STOMP), Extensible Messaging and Presence Protocol (XMPP), Advanced Message Queuing Protocol (AMQP), Web Socket, and Representational State Transfer (REST).
- MQTT Message Queuing Telemetry Transport
- CoAP Constrained Application Protocol
- STOMP Simple Text Oriented Messaging Protocol
- XMPP Extensible Messaging and Presence Protocol
- AMQP Advanced Message Queuing Protocol
- Web Socket Web Socket
- Representational State Transfer REST
- the management service 120 can oversee the management of devices including the client devices 109 , gateways 111 , and IoT devices 113 .
- the management service 120 can oversee development of IoT system topologies and gateway instructions for the gateways 111 and the IoT devices 113 .
- the management service 120 can provide functionality using application program interfaces (APIs).
- APIs application program interfaces
- an API of the management service 120 can provide enrollment information regarding a device, such as whether the device is enrolled with the management service 120 .
- APIs or API calls can be provided for other functionalities of the management service 120 as discussed herein.
- the management service 120 can generate and provide an administrative console or user interface for management of the gateway 111 , other edge devices, and IoT devices 113 that are connected through the edge devices.
- the user interface of the management service 120 can be accessed through a client application 136 , client management application 139 or another application of a client device 109 , or can be accessed through a network site provided by the management service 120 .
- the user interface can also be accessed through a web application provided by the management service 120 .
- the user interface can include the IoT topology creator 121 .
- the management service 120 can provide particular users or user accounts with access to the topology creator 121 , the components 128 , the IoT topologies 129 , and the gateway instructions 130 , based on authentication credentials and confirmation that a client device 109 complies with the compliance rules 127 .
- the management service 120 can include a message broker for onboarding and configuration of gateway devices 111 and other edge devices, as well as IoT devices 113 .
- the message broker can utilize Message Queuing Telemetry Transport (MQTT) or another publish-subscribe-based messaging protocol, Advanced Message Queuing Protocol (AMQP), or another messaging protocol.
- MQTT Message Queuing Telemetry Transport
- AQP Advanced Message Queuing Protocol
- the management service 120 can also include an analytics service that provides real-time infrastructure analytics for the gateway 111 , other edge devices, and IoT devices 113 .
- the analytics can be generated based on IoT data 190 provided from the gateway 111 or other edge devices.
- the IoT data 190 can include a stream of at least one tuple including a number and a time stamp.
- the IoT data 190 can include SI units and a prefix that identifies what the numbers of the stream of IoT data 190 represent.
- a user interface can be generated based at least in part on the IoT data 190 .
- the gateway 111 can provide IoT data 190 to the management service 120 based on IoT device 113 communications with the gateway 111 .
- the management service 120 can also request that the gateway 111 , client device 109 , or IoT device 113 check-in using a notification service like APPLE® Push Notification Service (APNS), GOOGLE® Cloud Messaging (GCM), WINDOWS® Push Notification Services (WNS), or AirWatch® Cloud Messaging (AWCM).
- APNS APPLE® Push Notification Service
- GCM GOOGLE® Cloud Messaging
- WTS WINDOWS® Push Notification Services
- AWCM AirWatch® Cloud Messaging
- the management service 120 can transmit a request to the notification service, which requests that the gateway 111 check-in with the management service 120 .
- the notification service can push or otherwise route a notification to the gateway 111 .
- the gateway management application 169 can cause the gateway 111 to check-in with the management service 120 .
- the gateway management application 169 can determine whether a command queue provided by the management service 120 for the respective gateway 111 contains any commands or resources for the gateway 111 , and, if so, can cause the commands or resources to be downloaded and/or implemented on the gateway 111 .
- a client device 109 can likewise be associated with a command queue and can retrieve and implement commands in response to a request from a notification service.
- the client device 109 can be representative of one or more client devices 109 .
- the client device 109 can include a processor-based system, such as a computer system, that can include a desktop computer, a laptop computer, a personal digital assistant, a cellular telephone, a smartphone, a set-top step, a music player, a tablet computer system, a game console, an electronic book reader, a smartwatch, or any other device with like capability.
- the client device 109 can have an operating system that can perform functionalities and execute applications.
- the operating system can be stored in a data store 145 that also includes applications 136 , a client management application 139 , and other data.
- the client device 109 can execute the client management application 139 or client application 136 to access the functionality described for the management service 120 .
- the client device 109 can authenticate with the management service 120 to access the topology creator 121 , and its user interface can be rendered for display on the client device 109 .
- the client device 109 can also be equipped with networking capability or networking interfaces, including a localized networking or communication capability, such as a near-field communication (NFC) capability, radio-frequency identification (RFID) read or write capability, or other localized communication capability.
- a localized networking or communication capability such as a near-field communication (NFC) capability, radio-frequency identification (RFID) read or write capability, or other localized communication capability.
- NFC near-field communication
- RFID radio-frequency identification
- the client device 109 is mobile where the client device 109 is easily portable from one location to another, such as a smart phone, tablet, or laptop computer. In other situations, the client device 109 can be a desktop machine or a kiosk that is not easily portable.
- the operating system of the client device 109 can be configured to execute various applications 136 , such as a client management application 139 , a browser application, or another application.
- the operating system and some applications 136 can access network content served up by the management system 103 , or other servers, thereby rendering a user interface on a display, such as a liquid crystal display (LCD), organic light emitting diode (OLED) display, touch-screen display, or other type of display device.
- LCD liquid crystal display
- OLED organic light emitting diode
- some applications 136 can include a browser or a dedicated application, and a user interface can include a network page, an application screen, or other interface.
- the client device 109 can also access web applications using the browser application.
- other applications 136 can include device management applications, enterprise applications, social networking applications, word processors, spreadsheet applications, media player applications, or other applications.
- the client management application 139 can be an application that performs certain functions in the enrollment of the gateway 111 with the management service 120 .
- the client management application 139 can perform actions as directed by the management service 120 , for instance, by checking in with the management service 120 , retrieving a command from the command queue, and implementing the command as discussed above.
- the gateway 111 can provide network 112 access to the IoT devices 113 as well as gather IoT data 190 based on IoT device 113 communications with the gateway 111 . While referred to as a gateway, the gateway 111 can also be representative of routing switches, integrated access devices (IADs), multiplexers, a variety of metropolitan area network (MAN) and wide area network (WAN) access devices, and other edge devices.
- IADs integrated access devices
- MAN metropolitan area network
- WAN wide area network
- the gateway management application 169 can perform management functionalities including enrollment functionalities, product and application installations, and profile installations. These functionalities can include a number of modules or components that perform actions through the gateway 111 , and the gateway management instructions can be updated, upgraded, or otherwise altered throughout the lifecycle of the gateway 111 .
- the gateway management application 169 can include a number of components including an IoT Agent for management and communication with IoT devices 113 .
- the IoT Agent can include a software development kit (SDK) for gateway 111 communications with IoT devices 113 .
- SDK software development kit
- the SDK can include libraries for applications including processes 165 that connect and orchestrate data and control between IoT devices 113 , gateways 111 , and other network locations.
- the gateway instructions 130 can be generated to include executable instructions that are compatible with the IoT Agent, or compatible with a programming language of the IoT Agent. To this end, in some cases, the gateway instructions 130 include executable instructions in the same programming language.
- the gateway management application 169 can perform the functionalities for the management service 120 , for instance, by checking in, retrieving a command from the command queue, and implementing the command as discussed above.
- the gateway instructions 130 can be instructions received from the management service 120 for communications with northbound destinations such as a datacenter 115 , as well as southbound destinations such as the IoT devices 113 .
- the gateway instructions 130 can include adapters 172 , transformations 174 , and IoT packages 176 .
- the adapters 172 can include instructions that enable the gateway 111 to communicate with northbound destinations.
- the northbound destinations can include datacenters 115 , management services 120 , client devices 109 , or other network locations to which the gateway 111 transmits IoT data 190 , or a transformed version of IoT data 190 .
- the IoT packages 176 can include instructions that enable the gateway 111 to communicate with southbound destinations, including IoT devices 113 .
- the IoT packages 176 can include the manufacturer-defined code fragments for communications with a particular IoT device 113 , as well as additional code for compatibility with the processes 165 and hardware of the gateway 111 .
- the transformations 174 can include filters, triggers, and other transformations of the IoT data 190 .
- the transformations 174 can indicate which IoT data 190 to store in the gateway 111 and which IoT data 190 to transmit to northbound destinations.
- the transformations 174 can include a metric to collect from the IoT device 113 .
- the metric or transformation 174 can include a user defined method (udm), a name, title, or other identifier of the metric, a sampling frequency stating the interval between subsequent executions of the udm, an aggregation size indicating a number of bytes or other data size, and an aggregation count indicating how many executions of the udm to aggregate before sending the IoT data 190 , to the management service 120 , the datacenter 115 , or a client device 109 .
- udm user defined method
- the IoT devices 113 can be appliances, vehicles, sensors, controllers, actuators, and other physical devices including at least: a processor, network communication hardware, and a memory including executable instructions for communicating with a gateway 111 .
- the IoT device 113 can be representative of one or more IoT devices 113 .
- the IoT device 113 can include appliances, vehicles, sensors, controllers, actuators, monitors, phones, tablets, thermostats, speakers, and other devices and can incorporate processor-based systems, such as a computer system or any other device with like capability.
- the IoT device 113 can have an operating system or other software that can perform functionalities and execute applications 187 .
- the operating system can be stored in a data store 183 that also includes IoT Device ID 185 , applications 187 , an IoT management application 189 , and other data.
- the IoT device 113 can execute the IoT management application 189 to perform or access the functionality described for the management service 120 .
- the IoT device 113 can also be equipped with networking capability or networking interfaces, including a localized networking or communication capability, such as a near-field communication (NFC) capability, radio-frequency identification (RFID) read or write capability, or other localized communication capability.
- NFC near-field communication
- RFID radio-frequency identification
- the IoT device 113 is mobile where the IoT device 113 is easily portable from one location to another. In other situations, the IoT device 113 can be a thermostat, fixture, or other device that is not easily portable.
- the IoT management application 189 can perform actions as directed by the management service 120 and/or the gateway 111 .
- the gateway management application 169 and/or the management service 120 can maintain a command queue for the IoT device 113 .
- the command queue for the IoT device 113 can include actions and commands as discussed.
- the gateway management application 169 can determine whether states exist on the IoT device 113 that violate one or more of the compliance rules 127 based on status data received from the IoT device 113 , or pass status data received from the IoT device 113 to the management service 120 to perform the evaluation.
- the gateway management application 169 or the management service 120 can place a command to bring the IoT device 113 into compliance in a command queue for the IoT device 113 .
- the IoT management application 189 can retrieve the command to bring the IoT device 113 into compliance.
- the IoT management application 189 can implement the command.
- the management service 120 can place a command for the IoT device 113 in the command queue for the gateway 111 .
- the gateway management application 169 can retrieve the command and place it in a command queue for the IoT device 113 that is maintained on the gateway 111 .
- FIG. 2 shown is an example flowchart 200 describing steps that can be performed by the management service 120 .
- the flowchart 200 describes how the management service 120 and the topology creator 121 generate an IoT topology 129 and gateway instructions 130 for communications between a gateway 111 and IoT devices 113 .
- the operations of the gateway 111 can include receiving IoT data 190 from a set of IoT devices 113 , transforming the IoT data 190 , and transmitting specified metrics to datacenters 115 or management services 120 .
- the topology creator 121 can identify specifications for the physical and logical components 128 that affect this process and generate the IoT topology 129 and the gateway instructions 130 based on the components 128 and their specific arrangement.
- the topology creator 121 can define components 128 for an IoT topology 129 .
- the components 128 can be stored in the data store 123 .
- the components 128 can include physical devices such as gateways 111 , IoT devices 113 , and datacenters 115 .
- the components 128 can also include device subcomponents for the devices, software modules or processes for the devices, as well as transformations 174 for the gateway 111 to perform, including metrics to collect from IoT data 190 .
- the components 128 can include any physical or logical items that affect the operation of the gateway 111 .
- the components 128 can also include busses of the gateway 111 , such as I2C busses, MQTT busses, Web Socet busses, REST busses, CoAP busses, and busses associated with any messaging protocol discussed.
- the gateway 111 can communicate with a particular IoT device 113 through a particular bus.
- the components 128 can also include transformations 174 .
- the transformations 174 can include filters, triggers, and other transformations of the IoT data 190 .
- the transformations 174 can include a metric to collect based on the IoT data 190 from the IoT device 113 .
- the metric can include a name, title, or other identifier of the metric, a user defined method (udm), a sampling frequency stating the interval between subsequent executions of the udm, and an aggregation count stating how many executions of the udm to aggregate by the gateway 111 .
- the components 128 can also include northbound communications components.
- the gateway 111 can communicate with a particular northbound destination using a northbound communications component or mechanism.
- the topology creator 121 can generate a user interface that facilitates creation of an IoT topology 129 .
- the user interface of the topology creator 121 can be an interactive tool that allows a user to efficiently define components 128 that are utilized for a data flow from an IoT device 113 , through a gateway 111 , and to a northbound destination such as a datacenter 115 or management service 120 .
- the user interface of the topology creator 121 can facilitate creation, storage, and editing of a number of IoT topologies 129 .
- the user interface can include a listing of categories of components 128 .
- the user interface can also include a number of predefined components 128 and blank components 128 for each category.
- the components 128 can include attributes or parameters that are editable or configurable.
- the components 128 can also include or be associated with static or unconfigurable parameters and information.
- the topology creator 121 can allow a user to place and configure components 128 through the user interface.
- a user can look through the categories of components 128 and select a component. Once selected, a graphical representation of the component 128 can appear in an area of the user interface such as a coordinate plane or grid. A user can move the position of the component 128 in the coordinate plane of the user interface.
- the topology creator 121 can also provide a user interface element that shows the parameters of the component 128 . A user can edit the parameters of the component 128 through the user interface. Multiple components 128 can be placed and configured.
- the topology creator 121 can allow a user to obtain user-defined connections through the user interface.
- the graphical representations of the components 128 in the coordinate plane of the user interface can include connection points.
- a user can select a connection point of a first component 128 and then select a connection point of a second component 128 to define a connection between the first and second components 128 .
- a single connection point of a component 128 can be connected to more than one connection point of more than one other components 128 .
- a single bus component 128 can be connected to multiple IoT device components 128 .
- a single gateway component 128 can be connected to multiple bus components 128 .
- the topology creator 121 can track and store the component relationships.
- the topology creator 121 can track the components 128 and all of the connections.
- step 218 the topology creator 121 can obtain additional modifications. If additional modifications are performed, the process can move to step 209 or step 212 . If no additional modifications are performed, the process can move to step 221 .
- the topology creator 121 can generate IoT topology 129 .
- the IoT topology 129 can create the IoT topology 129 that specifies attributes or parameters of the components 128 , as well as the component relationship.
- An IoT topology 129 can include code that describes the relationship between the components 128 .
- the IoT topology 129 can include or code or lines expressed in a data serialization format such as JSON, XML, or YAML.
- the IoT topology 129 can specify the relationships between components 128 , where appropriate. The relationships can be derived from the arrangement of components 128 in the coordinate plane and the user-defined connections.
- the topology creator 121 can save the IoT topology 129 to a repository.
- the repository can be the data store 123 of the management service 120 . In other cases, the repository can be hosted in another network location.
- the IoT topology 129 can be stored in association with a category or type of IoT system for a particular purpose. In this way, the IoT topology 129 can be utilized for multiple instances of the type of IoT system and in multiple locations.
- the IoT topology 129 can also be quickly edited, for example, to change a type of gateway 111 used or the number of IoT devices 113 employed.
- the topology creator 121 can include a panel that allows a user to select a completed IoT topology 129 for further modification.
- the topology creator 121 can generate gateway instructions 130 .
- the gateway instructions 130 can be generated based on the IoT topology code 129 .
- the topology creator 121 can parse the IoT topology 129 and can convert it into the gateway instructions 130 .
- the conversion can be performed based on the operating system 164 and other processes 165 executing on a particular gateway 111 , as specified in the IoT topology 129 .
- the topology creator 121 can convert the IoT topology 129 code into executable code in a particular programming language.
- the topology creator 121 can generate the gateway instructions 130 using a set of executable code fragments and rules for the particular language.
- the executable code fragments and rules can be stored in the data store 123 .
- the topology creator 121 can identify the programming language based on an identity of a particular gateway 111 or a software version of the gateway 111 referenced in the IoT topology 129 .
- the topology creator 121 can convert the IoT topology 129 to executable gateway instructions 130 by referencing the language-specific code fragments and translation rules for the programming language.
- the gateway instructions 130 can include adapters 172 , transformations 174 , and IoT packages 176 .
- the adapters 172 can include instructions that enable the gateway 111 to communicate with northbound destinations specified in the IoT topology 129 .
- the IoT packages 176 can include instructions that enable the gateway 111 to communicate with southbound IoT devices 113 .
- the IoT packages 176 can include the manufacturer-defined code fragments for communications with a particular IoT device 113 , as well as additional code for compatibility with the processes 165 and hardware of the gateway 111 .
- the transformations 174 can include filters, triggers, and other transformation specified in the IoT topology 129 .
- the transformations 174 can include a metric to collect from the IoT device 113 .
- the metric or transformation 174 can include a user defined method (udm), a name, a sampling frequency, and an aggregation count stating how many executions of the udm to aggregate before transmitting the IoT data 190 , to the northbound destinations specified in the IoT topology 129 .
- the topology creator 121 can transmit gateway instructions 130 to gateway(s) 111 .
- the topology creator 121 can transmit the gateway instructions 130 along with a command to install the gateway instructions 130 to a gateway 130 , or a set of gateways 130 that are to be provisioned according to the IoT topology 129 .
- the management service 120 can create a title, tag, or group for gateways 111 to be provisioned with the gateway instructions 130 .
- the gateway management application 169 can receive the command to install the gateway instructions 130 and perform the installation to the gateway 111 .
- FIG. 3A shows a graphical representation of an IoT topology 300 .
- the graphical representation of the IoT topology 300 can be generated in a user interface of the topology creator 121 .
- the IoT topology 300 can include a data lake component 303 , a socket DCCComms component 306 , a gateway component 309 , a filter1 component 312 , a REST bus component 315 , a REST sensor component 318 , a filter2 component 321 , an MQQT bus component 324 , and an MQTT sensor 327 .
- a user can select, place, and configure each of the components of the IoT topology 300 .
- a respective component can specify a unique component identifier that is unique among all of the components of the IoT topology 300 .
- the IoT topology creator 121 or the management service 120 can generate the unique component identifier.
- the respective component can specify a name that is more user friendly, easily recognizable, and can be displayed in association with the respective component within the user interface of the IoT topology creator 121 .
- the respective component can specify a component location within a coordinate plane.
- the respective component can also specify a component category that indicates a type of the component.
- the component location can include an X position and Y position.
- the components can also include other parameters, for example, as indicated below.
- the data lake component 303 can be a northbound destination for specifying metrics collected, by the gateway component 309 , from the REST sensor component 321 and the MQTT sensor component 327 .
- the REST sensor component 321 and the MQTT sensor component 327 can be IoT device components.
- the data lake component 303 can specify parameters including a network address such as an IP address or URL. When selected through a user interface of the topology creator 121 , these properties can be edited through a user interface element of the topology creator 121 .
- the data lake component 303 can be connected to the Socket DCCComms component 306 . In order to create the connection between these components, a user can select a connection point on the bottom of the data lake component 303 and subsequently select the top connection point of the Socket DCCComms component 306 .
- the Socket DCCComms component 306 can be a northbound communications component.
- the Socket DCCComms component 306 can specify parameters including a network address and a port.
- the Socket DCCComms component 306 can be connected to the gateway component 309 .
- the IoT topology 300 indicates that the gateway component 309 can be connected to the data lake component 303 through the SocketDCCComms component 306 .
- the gateway component 309 can be connected to the filter1 component 312 and the filter2 component 315 .
- the filter1 component 312 can be a transformation 174 component.
- the filter1 component 312 can specify parameters including an endpoint or northbound destination, as well as parameters of a metric to collect, including a unit or type of data, an aggregation size, an aggregation count, and an interval or frequency of collection.
- the aggregation size can include a number of bytes or data size.
- the interval can indicate a frequency of collection of a particular metric.
- the aggregation count can indicate a number of times the metric should be collected before transmitting to the endpoint.
- the endpoint can be a particular subsection of the northbound destination such as a temperature collection endpoint of the data lake component 303 .
- the filter2 component 315 can include similar parameters as the filter1 component 312 .
- the filter 1 component 312 can be connected to the REST bus component 318 .
- the REST bus component 318 can be a southbound communications component.
- the REST bus component 318 can specify parameters including a network address.
- the REST bus component 318 can be connected to the REST sensor component 321 .
- the REST sensor component 321 can specify parameters, including a type of IoT device, and a make/model of the IoT device.
- the REST sensor component 321 can also specify or point to the manufacturer-defined code that enables communications with the REST sensor component 321 .
- the REST sensor component 321 and other IoT device components can specify the parameters associated with the metric that is collected, as discussed above regarding the transformation component, filter1.
- FIG. 3B shows a graphical representation of an IoT topology 330 .
- the graphical representation of the IoT topology 330 can be similar in some respects to the IoT topology 300 discussed regarding FIG. 3A .
- the IoT topology 330 can indicate that the Socket DCCComms component 306 is connected to both the data lake component 303 and the visualization component 303 .
- the visualization component 304 can indicate that some of the metrics collected are transmitted to a server that provides a visualization dashboard such as Graphite, or another visualization user interface.
- the filter or transformation components can specify whether a particular metric should be transmitted to the data lake component 303 , the visualization component 304 , or both northbound destinations of the IoT topology 330 .
- the IoT topology 330 can indicate that the MQTT bus component 324 is connected to multiple filters or transformations. In this case, the MQTT bus component 324 is connected to the filter2 component 315 and a filter3 component 333 .
- the filter3 component 333 can indicate parameters that are similar to those discussed regarding the filter1 component 312 .
- the IoT topology 330 also illustrates that the transformation components such as the components 315 and 333 can be connected between a southbound communications component and an IoT device component, rather than between an edge device component and a southbound communications component.
- FIG. 4 shows an example of a user interface 403 generated by the topology creator 121 and rendered for display.
- the user interface 403 can include a panel or section 406 that includes a list of IoT topologies 129 . Multiple IoT topologies 129 can be shown for selection.
- the panel 406 can show “Topology 1 ,” “Topology 2 ,” and “Topology 3 ,” each of which can be an automatically assigned profile identifier, or a user-assigned profile identifier.
- the panel 406 can also include a user interface element that, when selected, causes an additional profile to be created.
- the user interface 403 can also include a panel or section 409 .
- the panel 409 can also include a list of components 128 , arranged in various categories or types. Multiple categories of components 128 can be shown. For example, the panel 409 can show categories including “Bus,” “Transformation,” “IoT Device,” “Edge Device,” “Northbound Destination,” and “Northbound Comm.” A respective category can have predefined components listed in association with the category. For example, “Southbound Comms” can include an “I2C Bus,” “MQTT Bus,” “Web Socket Bus,” and REST Bus.”
- the user interface 403 can also include a panel or section 412 .
- the panel 412 can include a coordinate plane, where a user can build or create a graphical representation of an IoT topology 129 .
- the user interface 403 can also include a code panel or section 415 .
- the panel 412 can include the IoT topology 129 code that can be generated based on the components and connections indicated in the coordinate plane of the panel 412 .
- the IoT topology 129 code can be edited directly through the panel 415 .
- the topology creator 121 can identify changes to the IoT topology 129 code in the panel 415 and automatically update the graphical representation of the IoT topology 129 in the panel 412 .
- the topology creator 121 can identify user modifications to the graphical representation of the IoT topology 129 and automatically update the IoT topology 129 code in the panel 415 .
- the user interface 403 can also include a number of user interface elements that, when selected, provide various additional functionalities.
- the user interface 403 can also include a “code” user interface element that when selected causes the IoT topology 129 to show or hide the code panel 415 .
- the user interface 403 can also include a “save” user interface element that when selected causes the IoT topology 129 to saved, for example, to the management system 103 or a client device 109 .
- the user interface 403 can also include a “commit” user interface element that, when selected, causes the IoT topology 129 to uploaded to a particular repository based on a predefined network location or address.
- the user interface 403 can also include a “run” user interface element that, when selected, causes the IoT topology 129 to generate gateway instructions 130 based on the IoT topology 129 , and run it on an IoT system that include a gateway 111 and an IoT device 113 , which correspond to the components specified in the IoT topology 129 .
- the user interface 403 can also include a “generate gateway instructions” user interface element that, when selected, causes the IoT topology 129 to generate gateway instructions 130 based on the IoT topology 129 .
- FIG. 5 shows an example of a user interface 503 generated by the topology creator 121 and rendered for display.
- the topology creator 121 can generate a “properties” user interface area 506 in response to a user selection of a particular component in the coordinate plane of the user interface 503 .
- the properties user interface element 506 can be generated a pop-up area or section as shown, or in an additional panel.
- the properties user interface area 506 can show various parameters of the selected component.
- the properties user interface area 506 can provide a user interface element for a respective parameter that when selected, allows a user to modify the respective parameter.
- the topology creator 121 can update the graphical representation of the IoT topology 129 and the IoT topology 129 code.
- FIG. 6 shows an example of a user interface 603 generated by a client application 136 or a datacenter 115 and rendered for display.
- the user interface 603 can include a list of IoT devices 606 , including “RESTSENSOR,” “I2CSENSOR,” and “MQTTSENSOR.”
- the “RESTSENSOR” and “MQTTSENSOR” devices can be shown in bold, indicating that a metric received a corresponding IoT device 113 is selected for display.
- the user interface 603 can also include graphs 609 and 612 .
- the graphs 609 and 612 can show IoT data 190 based on the collected metrics from the IoT devices 113 .
- the graphs can show a value plotted across time, where the value can be indicated in an X dimension of the graph, and time is indicated in a Y dimension of the graph.
- the user interface 603 can include a user interface element that allows a user to enter an auto-refresh rate.
- the auto-refresh rate can indicate how often the user interface 603 should be updated based on additional data received from an IoT device 113 through a gateway 111 .
- the user interface 603 can indicate a most recent time that the user interface 603 was refreshed.
- executable means a program file that is in a form that can ultimately be run by the processor.
- executable programs can be, for example, a compiled program that can be translated into machine code in a format that can be loaded into a random access portion of one or more of the memory devices and run by the processor, code that can be expressed in a format such as object code that is capable of being loaded into a random access portion of the one or more memory devices and executed by the processor, or code that can be interpreted by another executable program to generate instructions in a random access portion of the memory devices to be executed by the processor.
- An executable program can be stored in any portion or component of the memory devices including, for example, random access memory (RAM), read-only memory (ROM), hard drive, solid-state drive, USB flash drive, memory card, optical disc such as compact disc (CD) or digital versatile disc (DVD), floppy disk, magnetic tape, or other memory components.
- RAM random access memory
- ROM read-only memory
- hard drive solid-state drive
- USB flash drive USB flash drive
- memory card such as compact disc (CD) or digital versatile disc (DVD), floppy disk, magnetic tape, or other memory components.
- CD compact disc
- DVD digital versatile disc
- Memory can include both volatile and nonvolatile memory and data storage components.
- a processor can represent multiple processors and/or multiple processor cores, and the one or more memory devices can represent multiple memories that operate in parallel processing circuits, respectively.
- Memory devices can also represent a combination of various types of storage devices, such as RAM, mass storage devices, flash memory, or hard disk storage.
- a local interface can be an appropriate network that facilitates communication between any two of the multiple processors or between any processor and any of the memory devices.
- the local interface can include additional systems designed to coordinate this communication, including, for example, performing load balancing.
- the processor can be of electrical or of some other available construction.
- the client devices 109 can include a display upon which a user interface generated by a client application 136 , management service 120 , IoT creator 121 , or another application can be rendered.
- the user interface can be generated with user interface data provided by the management system 103 .
- the client devices 109 can also include one or more input/output devices that can include, for example, a capacitive touchscreen or other type of touch input device, fingerprint reader, or keyboard.
- management service 120 IoT creator 121 , client applications 136 , and other various services and functions described can be embodied in software or code executed by general purpose hardware as discussed above, as an alternative, the same can also be embodied in dedicated hardware or a combination of software/general purpose hardware and dedicated hardware. If embodied in dedicated hardware, each can be implemented as a circuit or state machine that employs any one of or a combination of a number of technologies. These technologies can include discrete logic circuits having logic gates for implementing various logic functions upon an application of one or more data signals, application specific integrated circuits (ASICs) having appropriate logic gates, field-programmable gate arrays (FPGAs), or other components.
- ASICs application specific integrated circuits
- FPGAs field-programmable gate arrays
- each block can represent a module, segment, or portion of code that can include program instructions to implement the specified logical function(s).
- the program instructions can be embodied in the form of source code that can include human-readable statements written in a programming language or machine code that can include numerical instructions recognizable by a suitable execution system such as a processor in a computer system or other system.
- the machine code can be converted from the source code.
- each block can represent a circuit or a number of interconnected circuits to implement the specified logical function(s).
- any logic or application described that includes software or code can be embodied in any non-transitory computer-readable medium for use by or in connection with an instruction execution system such as a processor in a computer system or other system.
- the logic can include, for example, statements including instructions and declarations that can be fetched from the computer-readable medium and executed by the instruction execution system.
- a “computer-readable medium” can be any medium that can contain, store, or maintain the logic or application described for use by or in connection with the instruction execution system.
- the computer-readable medium can include any one of many physical media, such as magnetic, optical, or semiconductor media. More specific examples of a suitable computer-readable medium include solid-state drives or flash memory. Further, any logic or application described can be implemented and structured in a variety of ways. For example, one or more applications can be implemented as modules or components of a single application. Further, one or more applications described can be executed in shared or separate computing devices or a combination thereof. For example, a plurality of the applications described can execute in the same computing device, or in multiple computing devices.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Human Computer Interaction (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Telephonic Communication Services (AREA)
Abstract
Disclosed are various examples for generating an Internet-of-Things (IoT) system topology. A user interface includes a graphical representation of components. A relationship between the plurality of components is determined based on user-defined connections between the components. IoT topology code is generated. The IoT topology code includes the relationship between the plurality of components and properties for individual ones of the components. The IoT topology code is converted to executable gateway instructions that enable a gateway device to communicate with an IoT device. The gateway instructions are transmitted to the gateway device.
Description
- This application is a continuation of and claims the benefit of U.S. patent application Ser. No. 16/215,953, entitled “INTERNET OF THINGS SYSTEM TOPOLOGY GENERATION,” and filed Dec. 11, 2018, which is hereby incorporated by reference in its entirety.
- Appliances, vehicles, sensors, controllers, actuators, and other devices can gather data and interact with the physical world. This network of devices or Internet-of-Things (IoT) can be utilized to improve operations and provide new services. In order to ensure the security and reliability of IoT device connections in an enterprise setting, the enterprise can utilize a management service capable of protecting IoT device data, as well as email, corporate documents, and other enterprise data from theft, data loss, and unauthorized access. In order to access a network, IoT devices can connect through a gateway or another edge device.
- However, providing effective security solutions for IoT devices can be costly in time and effort in an enterprise environment. Edge devices can be in communication with multiple IoT devices. An edge device can require code or instructions that enable communication with the various IoT devices. Different IoT devices can involve a variety of different functionalities and can utilize different communication protocols. It can be difficult to reliably provision instructions for edge devices to communicate with the range of IoT devices. Setting up test systems or manually creating instructions to enable proper communications can cause inefficiencies in time and resources that are frustrating for technicians, administrators, and end users.
- Many aspects of the present disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, with emphasis instead being placed upon clearly illustrating the principles of the disclosure. Moreover, in the drawings, like reference numerals designate corresponding parts throughout the several views.
-
FIG. 1 is a drawing of an example of a networked environment for generating an Internet-of-Things system topology. -
FIG. 2 is an example flow chart illustrating functionality implemented by components of the networked environment. -
FIGS. 3A-3B are drawings illustrating graphical representations of IoT topologies. -
FIGS. 4-6 are drawings illustrating functionality implemented by components of the networked environment and rendered for display. - The present disclosure relates to generating an Internet-of-Things (IoT) system topology. An edge device can require code or instructions that enable communication with the various IoT devices. Different IoT devices can involve a variety of different functionalities and can utilize different communication protocols. It can be difficult to reliably provision instructions for edge devices to communicate with the range of IoT devices. Previous methods of manually developing instructions to enable proper communications in an IoT system can be wasteful in time and resources. However, the present disclosure describes systems and methods that can facilitate edge device provisioning by an efficient user interface that is quickly recognizable and usable with a minimum of programming knowledge.
- In some embodiments, a process can generate a user interface to include a graphical representation of a number of components. The components can be user-selected. The components can include a gateway device component, a bus component, an Internet-of-Things (IoT) device component, and other components. A relationship between the plurality of components can be determined based on user-defined connections. The user-defined connections can be identified between individual components. IoT topology code can be generated. The IoT topology code can include the relationship between the components, and properties for individual components. In some examples, the IoT topology code can be generated in a data serialization format. The IoT topology code can be converted to executable gateway instructions. The gateway instructions can include a package that enables a gateway device to communicate with an IoT device. The gateway instructions can be transmitted to the gateway device for execution.
- The package can include manufacturer-defined code for communications with the IoT device. The components can include a filter component. The filter component can specify a metric to collect from the IoT device. The metric can include an aggregation size, an interval, and a unit.
- A user selection of a particular component can be identified. A user interface element can be generated to include a property of the particular component. A user modification of the property can be obtained through the user interface element. The IoT topology code can be updated based the user modification.
- In some cases, the user interface can include a first section and a second section. The first section of the user interface can include the graphical representation of the plurality of components, and the second section of the user interface can include the IoT topology code. In other examples, a first section of the user interface can include the graphical representation of the plurality of components, and a second section of the user interface can include a list of pre-defined components.
- With reference to
FIG. 1 , shown is an example of anetworked environment 100. Thenetworked environment 100 can include amanagement system 103, aclient device 109, agateway 111, Internet-of-Things (IoT)devices 113, anddatacenters 115 in communication with one another over anetwork 112. Internet-of-Things (IoT)devices 113 and other devices can connect to thenetwork 112 through thegateway 111. Thegateway 111 can communicate with themanagement service 120 for management of theIoT devices 113 that connect to thenetwork 112 through thegateway 111. The components of thenetworked environment 100 can be utilized to generate an IoT system topology and provision thegateway 111 with executable instructions. - The
network 112 can include the Internet, intranets, extranets, wide area networks (WANs), local area networks (LANs), wired networks, wireless networks, other suitable networks, or any combination of two or more such networks. The networks can include satellite networks, cable networks, Ethernet networks, telephony networks, and other types of networks. - The
management system 103 can include a server computer or any other system providing computing capability. While referred to in the singular, themanagement system 103 can include a plurality of computing devices that are arranged in one or more server banks, computer banks, or other arrangements. Themanagement system 103 can include a grid computing resource or any other distributed computing arrangement. Themanagement system 103 can be customer or enterprise-specific. In some embodiments, the management system can be part of a local network, and can be local to at least one of the other components of the networked environment. In other embodiments, themanagement system 103 can be remote from the other components, or the computing devices of themanagement system 103 can be located in a single installation or can be distributed among many different geographical locations local and/or remote from the other components. Themanagement system 103 can also include or be operated as one or more virtualized computer instances. For purposes of convenience, themanagement system 103 is referred to herein in the singular. Even though themanagement system 103 is referred to in the singular, it is understood that a plurality of management systems 106 can be employed in the various arrangements as described above. The components executed on themanagement system 103 can include amanagement service 120 as well as other applications, services, processes, systems, engines, or functionality not discussed in detail herein. Themanagement service 120 can be stored in thedata store 123 of themanagement system 103. - The
management service 120 can include atopology creator 121. Thetopology creator 121 can include executable instructions, programs, or processes of themanagement service 120. Alternatively, thetopology creator 121 can include instructions, programs, or processes separate from themanagement service 120. Thetopology creator 121 can include functions related to defining and customizingcomponents 128, generating ofIoT topologies 129, and convertingIoT topologies 129 intogateway instructions 130. Thetopology creator 121 can include an interactive user interface as a tool. This can increase efficiency of using themanagement system 103 and theclient device 109, for example, to create topologies, generategateway instructions 130, andprovision gateways 111. The user interface can be accessed through aclient application 136,client management application 139, or another application of aclient device 109, or can be accessed through a network site or web application. - The
data store 123 can include any storage device or medium that can contain, store, or maintain the instructions, logic, or applications described herein for use by or in connection with the instruction execution system. Thedata store 123 can be a hard drive or disk of a host, server computer, or any other system providing storage capability. While referred to in the singular, thedata store 123 can include a plurality of storage devices that are arranged in one or more hosts, server banks, computer banks, or other arrangements. Thedata store 123 can include any one of many physical media, such as magnetic, optical, or semiconductor media. More specific examples include solid-state drives or flash memory. - The
data store 123 can include memory of themanagement system 103, mass storage resources of themanagement system 103, or any other storage resources on which data can be stored by themanagement system 103. The data stored in thedata store 123 can include, for example, management data includingdevice data 125,enterprise data 126,compliance rules 127,components 128,IoT topologies 129,gateway instructions 130, as well as other data. - The data stored in the
data store 123 can be associated with the operation of the various applications and/or functional entities described.Client devices 109,gateways 111, andIoT devices 113 can be identified within thedevice data 125 by one or more of a device identifier, a unique device identifier (UDID), a media access control (MAC) address, an internet protocol (IP) address, or another identifier that uniquely identifies a device with respect to other devices. Thedevice data 125 can include gateway data associated withgateways 111 and other edge systems or edge devices through whichIoT devices 113 can connect to thenetwork 112. The gateway data can also include specifications, and for eachgateway 111, a type of gateway or a gateway identifier 156, and other information. Specifications for thegateway 111 can include hardware configurations including a chipset utilized by the gateway, a performance or capacity, a model identifier, and software configurations, including an agent application installed on thegateway 111. For example, the configuration can identify an agent such as the gateway enrollment agent 118, thegateway management application 169, or a version of the gateway enrollment agent 118 or thegateway management application 169. The gateway data can also include an organizational group. -
Device data 125 can include data associated with a configuration of eachclient device 109,gateway 111, andIoT device 113 and can include an identifier of theclient device 109,gateway 111, orIoT device 113. The identifier can be a serial number, media access control (MAC) address, other network address, or another device identifier. In addition, thedevice data 125 can include an enrollment status indicating whether eachclient device 109,gateway 111, orIoT device 113 is enrolled with or managed by themanagement service 120. Aclient device 109,gateway 111, orIoT device 113 designated as “enrolled” can be permitted to access theenterprise data 126, while aclient device 109,gateway 111, orIoT device 113 designated as “not enrolled,” or having no designation, can be denied access to theenterprise data 126. - Additionally,
device data 125 can include indications of the state of devices including theclient devices 109,gateways 111, andIoT devices 113. For instance, these indications can specify applications that are installed on theclient devices 109,gateways 111, andIoT devices 113; configurations or settings that are applied to each of the devices, user accounts, gateway accounts, or service accounts associated with each of the devices; the physical locations of each of the devices; the network to which each of the devices is connected; and other information describing the current state of each of the devices. -
Device data 125 can also include data pertaining to user groups. An administrator can specify one or more of theclient devices 109,gateways 111, andIoT devices 113 as belonging to a user group. The user group can refer to a group of user accounts, which can include gateway accounts. User groups can be created by an administrator of themanagement service 120 such that a batch ofclient devices 109,gateways 111, and/orIoT devices 113 can be configured according to common settings. For instance, an enterprise can create a user group for the marketing department and the sales department, whereclient devices 109,gateways 111, and/orIoT devices 113 in the marketing department are configured differently from theclient devices 109,gateways 111, and/orIoT devices 113 in the sales department.Device data 125 associated with a gateway account can be referred to as gateway data. - Compliance rules 127 can include, for example, configurable criteria that must be satisfied for an enrolled one of the
client devices 109,gateways 111, andIoT devices 113 to be in compliance with themanagement service 120. The compliance rules 127 can be based on a number of factors, including geographical location, activation status, enrollment status, and authentication data including authentication data obtained by a device registration system, time, and date, and network properties, among other factors associated with each device. The compliance rules can also be determined based on a user account associated with a user. In some cases, agateway 111 can be unassociated with a user, but can nevertheless be associated with a service account, a gateway account, or another user account that is unassociated with a user. - Compliance rules 127 can include predefined constraints that must be met in order for the
management service 120, or other applications, to permit access to theenterprise data 126 or features of thegateway 111. Themanagement service 120 can communicate withgateway management application 169 such as a gateway enrollment agent 118,gateway management application 169, or other applications to determine whether states exist on theclient device 109,gateway 111, orIoT devices 113 that do not satisfy one or more compliance rules 127. States can include, for example, a virus or malware being detected on the device; installation or execution of a blacklisted application; and a device being “rooted” or “jailbroken,” where root access is provided to a user of the device. Additional states can include the presence of particular files, questionable device configurations, vulnerable versions of applications, vulnerable states ofIoT devices 113, or other vulnerability, as can be appreciated. - The
components 128 can include devices and device subcomponents, program modules, and functionalities. Thecomponents 128 can include any physical or logical elements that affect the operation of thegateway 111.Components 128 can include physical devices such asgateways 111,IoT devices 113, anddatacenters 115, as well as busses, transformations, northbound communications components, and other components. Thecomponents 128 can include specifications that can determine anIoT topology 129 of the data flow from anIoT device 113, through thegateway 111, to a northbound destination. In some cases, busses can be southbound communications components. A bus or southbound communications component can define the communications mechanisms between anIoT device 113 and thegateway 111. A northbound communications component can define communications mechanisms between thegateway 111 and adatacenter 115, amanagement service 120, aclient device 109, or another network destination. The northbound communications component can also be referred to as a datacenter communications component. Atransformation 174 can include a metric to collect from a time-series stream ofIoT data 190 from anIoT device 113 to adatacenter 115. - An
IoT topology 129 can include code that describes a relationship betweencomponents 128. The relationship can be a hierarchical relationship, an asymmetrical relationship, a symmetrical relationship, or another ordered relationship. TheIoT creator 121 can provide an interactive user interface that allows a user to define connections betweencomponents 128. The relationship can be determined from the user-defined connections betweencomponents 128, and theIoT topology 129 can be generated using the user-defined connections. A relationship can define multiple connections or links betweencomponents 128 that are linked or connected. Acomponent 128 can be linked to more than one of theother components 128. In some cases, theIoT topology 129 is utilized in order to provision agateway 111 or another edge device. TheIoT topology 129 can include or code or lines expressed in a data serialization format such as JavaScript Object Notation (JSON), eXtensible Markup Language (XML), or YAML. -
Gateway instructions 130 can include executable code for aparticular gateway 111 or type of gateway to communicate with a particular set ofIoT devices 113. Thegateway instructions 130 can be generated based on theIoT topology 129. Thetopology creator 121 can parse theIoT topology 129 and can convert it into thegateway instructions 130. The conversion can differ based on theoperating system 164 andother processes 165 executing on aparticular gateway 111. - For example, the
topology creator 121 can convert theIoT topology 129 code into Python or Python-based executable code, C or C-based executable code, or executable code in other programming languages. To this end, thetopology creator 121 can generate thegateway instructions 130 using various sets of executable code fragments and rules for the various programming languages. The executable code fragments and rules can be stored in thedata store 123. Thetopology creator 121 can identify a programming language based on an identity of aparticular gateway 111 or a software version of thegateway 111 referenced in theIoT topology 129. Thetopology creator 121 can convert theIoT topology 129 toexecutable gateway instructions 130 by referencing the language-specific code fragments and translation rules for the programming language. - In addition, the
topology creator 121 can utilize manufacturer-defined code fragments that enable communications with aparticular IoT device 113. The manufacturer code fragments can include portions in a particular messaging protocol for theIoT device 113. Messaging protocols can include Message Queuing Telemetry Transport (MQTT), Constrained Application Protocol (CoAP), Simple Text Oriented Messaging Protocol (STOMP), Extensible Messaging and Presence Protocol (XMPP), Advanced Message Queuing Protocol (AMQP), Web Socket, and Representational State Transfer (REST). Thetopology creator 121 can integrate the manufacturer code fragments into a package, which can include code that enables theparticular gateway 111 to communicate with theparticular IoT device 113. - The
management service 120 can oversee the management of devices including theclient devices 109,gateways 111, andIoT devices 113. Themanagement service 120 can oversee development of IoT system topologies and gateway instructions for thegateways 111 and theIoT devices 113. Themanagement service 120 can provide functionality using application program interfaces (APIs). To this end, an API of themanagement service 120 can provide enrollment information regarding a device, such as whether the device is enrolled with themanagement service 120. APIs or API calls can be provided for other functionalities of themanagement service 120 as discussed herein. Themanagement service 120 can generate and provide an administrative console or user interface for management of thegateway 111, other edge devices, andIoT devices 113 that are connected through the edge devices. The user interface of themanagement service 120 can be accessed through aclient application 136,client management application 139 or another application of aclient device 109, or can be accessed through a network site provided by themanagement service 120. The user interface can also be accessed through a web application provided by themanagement service 120. The user interface can include theIoT topology creator 121. Themanagement service 120 can provide particular users or user accounts with access to thetopology creator 121, thecomponents 128, theIoT topologies 129, and thegateway instructions 130, based on authentication credentials and confirmation that aclient device 109 complies with the compliance rules 127. - The
management service 120 can include a message broker for onboarding and configuration ofgateway devices 111 and other edge devices, as well asIoT devices 113. The message broker can utilize Message Queuing Telemetry Transport (MQTT) or another publish-subscribe-based messaging protocol, Advanced Message Queuing Protocol (AMQP), or another messaging protocol. Themanagement service 120 can also include an analytics service that provides real-time infrastructure analytics for thegateway 111, other edge devices, andIoT devices 113. The analytics can be generated based onIoT data 190 provided from thegateway 111 or other edge devices. - The
IoT data 190 can include a stream of at least one tuple including a number and a time stamp. TheIoT data 190 can include SI units and a prefix that identifies what the numbers of the stream ofIoT data 190 represent. A user interface can be generated based at least in part on theIoT data 190. Thegateway 111 can provideIoT data 190 to themanagement service 120 based onIoT device 113 communications with thegateway 111. - The
management service 120 can also request that thegateway 111,client device 109, orIoT device 113 check-in using a notification service like APPLE® Push Notification Service (APNS), GOOGLE® Cloud Messaging (GCM), WINDOWS® Push Notification Services (WNS), or AirWatch® Cloud Messaging (AWCM). For example, themanagement service 120 can transmit a request to the notification service, which requests that thegateway 111 check-in with themanagement service 120. The notification service can push or otherwise route a notification to thegateway 111. Once the notification is received, thegateway management application 169 can cause thegateway 111 to check-in with themanagement service 120. Thegateway management application 169 can determine whether a command queue provided by themanagement service 120 for therespective gateway 111 contains any commands or resources for thegateway 111, and, if so, can cause the commands or resources to be downloaded and/or implemented on thegateway 111. Aclient device 109 can likewise be associated with a command queue and can retrieve and implement commands in response to a request from a notification service. - The
client device 109 can be representative of one ormore client devices 109. Theclient device 109 can include a processor-based system, such as a computer system, that can include a desktop computer, a laptop computer, a personal digital assistant, a cellular telephone, a smartphone, a set-top step, a music player, a tablet computer system, a game console, an electronic book reader, a smartwatch, or any other device with like capability. Theclient device 109 can have an operating system that can perform functionalities and execute applications. The operating system can be stored in a data store 145 that also includesapplications 136, aclient management application 139, and other data. Theclient device 109 can execute theclient management application 139 orclient application 136 to access the functionality described for themanagement service 120. For example, theclient device 109 can authenticate with themanagement service 120 to access thetopology creator 121, and its user interface can be rendered for display on theclient device 109. - The
client device 109 can also be equipped with networking capability or networking interfaces, including a localized networking or communication capability, such as a near-field communication (NFC) capability, radio-frequency identification (RFID) read or write capability, or other localized communication capability. In some embodiments, theclient device 109 is mobile where theclient device 109 is easily portable from one location to another, such as a smart phone, tablet, or laptop computer. In other situations, theclient device 109 can be a desktop machine or a kiosk that is not easily portable. - The operating system of the
client device 109 can be configured to executevarious applications 136, such as aclient management application 139, a browser application, or another application. The operating system and someapplications 136 can access network content served up by themanagement system 103, or other servers, thereby rendering a user interface on a display, such as a liquid crystal display (LCD), organic light emitting diode (OLED) display, touch-screen display, or other type of display device. - To this end, some
applications 136 can include a browser or a dedicated application, and a user interface can include a network page, an application screen, or other interface. Theclient device 109 can also access web applications using the browser application. Further,other applications 136 can include device management applications, enterprise applications, social networking applications, word processors, spreadsheet applications, media player applications, or other applications. Theclient management application 139 can be an application that performs certain functions in the enrollment of thegateway 111 with themanagement service 120. Theclient management application 139 can perform actions as directed by themanagement service 120, for instance, by checking in with themanagement service 120, retrieving a command from the command queue, and implementing the command as discussed above. - The
gateway 111 can providenetwork 112 access to theIoT devices 113 as well as gatherIoT data 190 based onIoT device 113 communications with thegateway 111. While referred to as a gateway, thegateway 111 can also be representative of routing switches, integrated access devices (IADs), multiplexers, a variety of metropolitan area network (MAN) and wide area network (WAN) access devices, and other edge devices. - The
gateway management application 169 can perform management functionalities including enrollment functionalities, product and application installations, and profile installations. These functionalities can include a number of modules or components that perform actions through thegateway 111, and the gateway management instructions can be updated, upgraded, or otherwise altered throughout the lifecycle of thegateway 111. Thegateway management application 169 can include a number of components including an IoT Agent for management and communication withIoT devices 113. The IoT Agent can include a software development kit (SDK) forgateway 111 communications withIoT devices 113. The SDK can include libraries forapplications including processes 165 that connect and orchestrate data and control betweenIoT devices 113,gateways 111, and other network locations. Thegateway instructions 130 can be generated to include executable instructions that are compatible with the IoT Agent, or compatible with a programming language of the IoT Agent. To this end, in some cases, thegateway instructions 130 include executable instructions in the same programming language. Thegateway management application 169 can perform the functionalities for themanagement service 120, for instance, by checking in, retrieving a command from the command queue, and implementing the command as discussed above. - The
gateway instructions 130 can be instructions received from themanagement service 120 for communications with northbound destinations such as adatacenter 115, as well as southbound destinations such as theIoT devices 113. Thegateway instructions 130 can includeadapters 172,transformations 174, and IoT packages 176. Theadapters 172 can include instructions that enable thegateway 111 to communicate with northbound destinations. The northbound destinations can includedatacenters 115,management services 120,client devices 109, or other network locations to which thegateway 111 transmitsIoT data 190, or a transformed version ofIoT data 190. The IoT packages 176 can include instructions that enable thegateway 111 to communicate with southbound destinations, includingIoT devices 113. The IoT packages 176 can include the manufacturer-defined code fragments for communications with aparticular IoT device 113, as well as additional code for compatibility with theprocesses 165 and hardware of thegateway 111. - The
transformations 174 can include filters, triggers, and other transformations of theIoT data 190. For example, thetransformations 174 can indicate whichIoT data 190 to store in thegateway 111 and whichIoT data 190 to transmit to northbound destinations. Thetransformations 174 can include a metric to collect from theIoT device 113. The metric ortransformation 174 can include a user defined method (udm), a name, title, or other identifier of the metric, a sampling frequency stating the interval between subsequent executions of the udm, an aggregation size indicating a number of bytes or other data size, and an aggregation count indicating how many executions of the udm to aggregate before sending theIoT data 190, to themanagement service 120, thedatacenter 115, or aclient device 109. - The
IoT devices 113 can be appliances, vehicles, sensors, controllers, actuators, and other physical devices including at least: a processor, network communication hardware, and a memory including executable instructions for communicating with agateway 111. TheIoT device 113 can be representative of one or moreIoT devices 113. TheIoT device 113 can include appliances, vehicles, sensors, controllers, actuators, monitors, phones, tablets, thermostats, speakers, and other devices and can incorporate processor-based systems, such as a computer system or any other device with like capability. TheIoT device 113 can have an operating system or other software that can perform functionalities and executeapplications 187. The operating system can be stored in adata store 183 that also includesIoT Device ID 185,applications 187, anIoT management application 189, and other data. TheIoT device 113 can execute theIoT management application 189 to perform or access the functionality described for themanagement service 120. TheIoT device 113 can also be equipped with networking capability or networking interfaces, including a localized networking or communication capability, such as a near-field communication (NFC) capability, radio-frequency identification (RFID) read or write capability, or other localized communication capability. In some embodiments, theIoT device 113 is mobile where theIoT device 113 is easily portable from one location to another. In other situations, theIoT device 113 can be a thermostat, fixture, or other device that is not easily portable. - The
IoT management application 189 can perform actions as directed by themanagement service 120 and/or thegateway 111. Thegateway management application 169 and/or themanagement service 120 can maintain a command queue for theIoT device 113. The command queue for theIoT device 113 can include actions and commands as discussed. Thegateway management application 169 can determine whether states exist on theIoT device 113 that violate one or more of thecompliance rules 127 based on status data received from theIoT device 113, or pass status data received from theIoT device 113 to themanagement service 120 to perform the evaluation. If theIoT device 113 is not in compliance, thegateway management application 169 or themanagement service 120 can place a command to bring theIoT device 113 into compliance in a command queue for theIoT device 113. TheIoT management application 189 can retrieve the command to bring theIoT device 113 into compliance. TheIoT management application 189 can implement the command. Themanagement service 120 can place a command for theIoT device 113 in the command queue for thegateway 111. Thegateway management application 169 can retrieve the command and place it in a command queue for theIoT device 113 that is maintained on thegateway 111. - In
FIG. 2 , shown is anexample flowchart 200 describing steps that can be performed by themanagement service 120. Generally, theflowchart 200 describes how themanagement service 120 and thetopology creator 121 generate anIoT topology 129 andgateway instructions 130 for communications between agateway 111 andIoT devices 113. The operations of thegateway 111 can include receivingIoT data 190 from a set ofIoT devices 113, transforming theIoT data 190, and transmitting specified metrics to datacenters 115 ormanagement services 120. Thetopology creator 121 can identify specifications for the physical andlogical components 128 that affect this process and generate theIoT topology 129 and thegateway instructions 130 based on thecomponents 128 and their specific arrangement. - In
step 203, thetopology creator 121 can definecomponents 128 for anIoT topology 129. Thecomponents 128 can be stored in thedata store 123. Thecomponents 128 can include physical devices such asgateways 111,IoT devices 113, anddatacenters 115. Thecomponents 128 can also include device subcomponents for the devices, software modules or processes for the devices, as well astransformations 174 for thegateway 111 to perform, including metrics to collect fromIoT data 190. Thecomponents 128 can include any physical or logical items that affect the operation of thegateway 111. - The
components 128 can also include busses of thegateway 111, such as I2C busses, MQTT busses, Web Socet busses, REST busses, CoAP busses, and busses associated with any messaging protocol discussed. Thegateway 111 can communicate with aparticular IoT device 113 through a particular bus. Thecomponents 128 can also includetransformations 174. Thetransformations 174 can include filters, triggers, and other transformations of theIoT data 190. For example, thetransformations 174 can include a metric to collect based on theIoT data 190 from theIoT device 113. The metric can include a name, title, or other identifier of the metric, a user defined method (udm), a sampling frequency stating the interval between subsequent executions of the udm, and an aggregation count stating how many executions of the udm to aggregate by thegateway 111. Thecomponents 128 can also include northbound communications components. Thegateway 111 can communicate with a particular northbound destination using a northbound communications component or mechanism. - In
step 206, thetopology creator 121 can generate a user interface that facilitates creation of anIoT topology 129. The user interface of thetopology creator 121 can be an interactive tool that allows a user to efficiently definecomponents 128 that are utilized for a data flow from anIoT device 113, through agateway 111, and to a northbound destination such as adatacenter 115 ormanagement service 120. The user interface of thetopology creator 121 can facilitate creation, storage, and editing of a number ofIoT topologies 129. The user interface can include a listing of categories ofcomponents 128. The user interface can also include a number ofpredefined components 128 andblank components 128 for each category. Thecomponents 128 can include attributes or parameters that are editable or configurable. Thecomponents 128 can also include or be associated with static or unconfigurable parameters and information. - In
step 209, thetopology creator 121 can allow a user to place and configurecomponents 128 through the user interface. A user can look through the categories ofcomponents 128 and select a component. Once selected, a graphical representation of thecomponent 128 can appear in an area of the user interface such as a coordinate plane or grid. A user can move the position of thecomponent 128 in the coordinate plane of the user interface. Thetopology creator 121 can also provide a user interface element that shows the parameters of thecomponent 128. A user can edit the parameters of thecomponent 128 through the user interface.Multiple components 128 can be placed and configured. - In
step 212, thetopology creator 121 can allow a user to obtain user-defined connections through the user interface. The graphical representations of thecomponents 128 in the coordinate plane of the user interface can include connection points. A user can select a connection point of afirst component 128 and then select a connection point of asecond component 128 to define a connection between the first andsecond components 128. A single connection point of acomponent 128 can be connected to more than one connection point of more than oneother components 128. For example, asingle bus component 128 can be connected to multipleIoT device components 128. Asingle gateway component 128 can be connected tomultiple bus components 128. Thetopology creator 121 can track and store the component relationships. Thetopology creator 121 can track thecomponents 128 and all of the connections. - In
step 218, thetopology creator 121 can obtain additional modifications. If additional modifications are performed, the process can move to step 209 orstep 212. If no additional modifications are performed, the process can move to step 221. - In
step 221, thetopology creator 121 can generateIoT topology 129. TheIoT topology 129 can create theIoT topology 129 that specifies attributes or parameters of thecomponents 128, as well as the component relationship. AnIoT topology 129 can include code that describes the relationship between thecomponents 128. TheIoT topology 129 can include or code or lines expressed in a data serialization format such as JSON, XML, or YAML. TheIoT topology 129 can specify the relationships betweencomponents 128, where appropriate. The relationships can be derived from the arrangement ofcomponents 128 in the coordinate plane and the user-defined connections. - In
step 224, thetopology creator 121 can save theIoT topology 129 to a repository. The repository can be thedata store 123 of themanagement service 120. In other cases, the repository can be hosted in another network location. TheIoT topology 129 can be stored in association with a category or type of IoT system for a particular purpose. In this way, theIoT topology 129 can be utilized for multiple instances of the type of IoT system and in multiple locations. TheIoT topology 129 can also be quickly edited, for example, to change a type ofgateway 111 used or the number ofIoT devices 113 employed. Thetopology creator 121 can include a panel that allows a user to select a completedIoT topology 129 for further modification. - In
step 227, thetopology creator 121 can generategateway instructions 130. Thegateway instructions 130 can be generated based on theIoT topology code 129. Thetopology creator 121 can parse theIoT topology 129 and can convert it into thegateway instructions 130. The conversion can be performed based on theoperating system 164 andother processes 165 executing on aparticular gateway 111, as specified in theIoT topology 129. For example, thetopology creator 121 can convert theIoT topology 129 code into executable code in a particular programming language. To this end, thetopology creator 121 can generate thegateway instructions 130 using a set of executable code fragments and rules for the particular language. The executable code fragments and rules can be stored in thedata store 123. Thetopology creator 121 can identify the programming language based on an identity of aparticular gateway 111 or a software version of thegateway 111 referenced in theIoT topology 129. Thetopology creator 121 can convert theIoT topology 129 toexecutable gateway instructions 130 by referencing the language-specific code fragments and translation rules for the programming language. - The
gateway instructions 130 can includeadapters 172,transformations 174, and IoT packages 176. Theadapters 172 can include instructions that enable thegateway 111 to communicate with northbound destinations specified in theIoT topology 129. The IoT packages 176 can include instructions that enable thegateway 111 to communicate with southboundIoT devices 113. The IoT packages 176 can include the manufacturer-defined code fragments for communications with aparticular IoT device 113, as well as additional code for compatibility with theprocesses 165 and hardware of thegateway 111. - The
transformations 174 can include filters, triggers, and other transformation specified in theIoT topology 129. Thetransformations 174 can include a metric to collect from theIoT device 113. The metric ortransformation 174 can include a user defined method (udm), a name, a sampling frequency, and an aggregation count stating how many executions of the udm to aggregate before transmitting theIoT data 190, to the northbound destinations specified in theIoT topology 129. - In
step 230, thetopology creator 121, or themanagement service 120, can transmitgateway instructions 130 to gateway(s) 111. In some cases, thetopology creator 121, or themanagement service 120, can transmit thegateway instructions 130 along with a command to install thegateway instructions 130 to agateway 130, or a set ofgateways 130 that are to be provisioned according to theIoT topology 129. Themanagement service 120 can create a title, tag, or group forgateways 111 to be provisioned with thegateway instructions 130. Thegateway management application 169 can receive the command to install thegateway instructions 130 and perform the installation to thegateway 111. -
FIG. 3A shows a graphical representation of anIoT topology 300. The graphical representation of theIoT topology 300 can be generated in a user interface of thetopology creator 121. TheIoT topology 300 can include adata lake component 303, asocket DCCComms component 306, agateway component 309, afilter1 component 312, aREST bus component 315, aREST sensor component 318, afilter2 component 321, anMQQT bus component 324, and anMQTT sensor 327. A user can select, place, and configure each of the components of theIoT topology 300. - Generally, a respective component can specify a unique component identifier that is unique among all of the components of the
IoT topology 300. TheIoT topology creator 121 or themanagement service 120 can generate the unique component identifier. The respective component can specify a name that is more user friendly, easily recognizable, and can be displayed in association with the respective component within the user interface of theIoT topology creator 121. The respective component can specify a component location within a coordinate plane. The respective component can also specify a component category that indicates a type of the component. The component location can include an X position and Y position. The components can also include other parameters, for example, as indicated below. - The
data lake component 303 can be a northbound destination for specifying metrics collected, by thegateway component 309, from theREST sensor component 321 and theMQTT sensor component 327. TheREST sensor component 321 and theMQTT sensor component 327 can be IoT device components. In addition to those discussed above for all components, thedata lake component 303 can specify parameters including a network address such as an IP address or URL. When selected through a user interface of thetopology creator 121, these properties can be edited through a user interface element of thetopology creator 121. Thedata lake component 303 can be connected to theSocket DCCComms component 306. In order to create the connection between these components, a user can select a connection point on the bottom of thedata lake component 303 and subsequently select the top connection point of theSocket DCCComms component 306. - The
Socket DCCComms component 306 can be a northbound communications component. TheSocket DCCComms component 306 can specify parameters including a network address and a port. TheSocket DCCComms component 306 can be connected to thegateway component 309. TheIoT topology 300 indicates that thegateway component 309 can be connected to thedata lake component 303 through theSocketDCCComms component 306. Thegateway component 309 can be connected to thefilter1 component 312 and thefilter2 component 315. - The
filter1 component 312 can be atransformation 174 component. Thefilter1 component 312 can specify parameters including an endpoint or northbound destination, as well as parameters of a metric to collect, including a unit or type of data, an aggregation size, an aggregation count, and an interval or frequency of collection. The aggregation size can include a number of bytes or data size. The interval can indicate a frequency of collection of a particular metric. The aggregation count can indicate a number of times the metric should be collected before transmitting to the endpoint. In some cases, the endpoint can be a particular subsection of the northbound destination such as a temperature collection endpoint of thedata lake component 303. Thefilter2 component 315 can include similar parameters as thefilter1 component 312. Thefilter 1component 312 can be connected to theREST bus component 318. - The
REST bus component 318 can be a southbound communications component. - The
REST bus component 318 can specify parameters including a network address. TheREST bus component 318 can be connected to theREST sensor component 321. TheREST sensor component 321 can specify parameters, including a type of IoT device, and a make/model of the IoT device. TheREST sensor component 321 can also specify or point to the manufacturer-defined code that enables communications with theREST sensor component 321. In some cases, theREST sensor component 321 and other IoT device components can specify the parameters associated with the metric that is collected, as discussed above regarding the transformation component, filter1. -
FIG. 3B shows a graphical representation of anIoT topology 330. The graphical representation of theIoT topology 330 can be similar in some respects to theIoT topology 300 discussed regardingFIG. 3A . TheIoT topology 330 can indicate that theSocket DCCComms component 306 is connected to both thedata lake component 303 and thevisualization component 303. Thevisualization component 304 can indicate that some of the metrics collected are transmitted to a server that provides a visualization dashboard such as Graphite, or another visualization user interface. The filter or transformation components can specify whether a particular metric should be transmitted to thedata lake component 303, thevisualization component 304, or both northbound destinations of theIoT topology 330. - The
IoT topology 330 can indicate that theMQTT bus component 324 is connected to multiple filters or transformations. In this case, theMQTT bus component 324 is connected to thefilter2 component 315 and afilter3 component 333. Thefilter3 component 333 can indicate parameters that are similar to those discussed regarding thefilter1 component 312. TheIoT topology 330 also illustrates that the transformation components such as thecomponents -
FIG. 4 shows an example of auser interface 403 generated by thetopology creator 121 and rendered for display. Theuser interface 403 can include a panel orsection 406 that includes a list ofIoT topologies 129. MultipleIoT topologies 129 can be shown for selection. For example, thepanel 406 can show “Topology 1,” “Topology 2,” and “Topology 3,” each of which can be an automatically assigned profile identifier, or a user-assigned profile identifier. Thepanel 406 can also include a user interface element that, when selected, causes an additional profile to be created. - The
user interface 403 can also include a panel orsection 409. Thepanel 409 can also include a list ofcomponents 128, arranged in various categories or types. Multiple categories ofcomponents 128 can be shown. For example, thepanel 409 can show categories including “Bus,” “Transformation,” “IoT Device,” “Edge Device,” “Northbound Destination,” and “Northbound Comm.” A respective category can have predefined components listed in association with the category. For example, “Southbound Comms” can include an “I2C Bus,” “MQTT Bus,” “Web Socket Bus,” and REST Bus.” - The
user interface 403 can also include a panel orsection 412. Thepanel 412 can include a coordinate plane, where a user can build or create a graphical representation of anIoT topology 129. Theuser interface 403 can also include a code panel orsection 415. Thepanel 412 can include theIoT topology 129 code that can be generated based on the components and connections indicated in the coordinate plane of thepanel 412. TheIoT topology 129 code can be edited directly through thepanel 415. Thetopology creator 121 can identify changes to theIoT topology 129 code in thepanel 415 and automatically update the graphical representation of theIoT topology 129 in thepanel 412. In addition, thetopology creator 121 can identify user modifications to the graphical representation of theIoT topology 129 and automatically update theIoT topology 129 code in thepanel 415. - The
user interface 403 can also include a number of user interface elements that, when selected, provide various additional functionalities. Theuser interface 403 can also include a “code” user interface element that when selected causes theIoT topology 129 to show or hide thecode panel 415. Theuser interface 403 can also include a “save” user interface element that when selected causes theIoT topology 129 to saved, for example, to themanagement system 103 or aclient device 109. Theuser interface 403 can also include a “commit” user interface element that, when selected, causes theIoT topology 129 to uploaded to a particular repository based on a predefined network location or address. - The
user interface 403 can also include a “run” user interface element that, when selected, causes theIoT topology 129 to generategateway instructions 130 based on theIoT topology 129, and run it on an IoT system that include agateway 111 and anIoT device 113, which correspond to the components specified in theIoT topology 129. In some cases, theuser interface 403 can also include a “generate gateway instructions” user interface element that, when selected, causes theIoT topology 129 to generategateway instructions 130 based on theIoT topology 129. -
FIG. 5 shows an example of auser interface 503 generated by thetopology creator 121 and rendered for display. Thetopology creator 121 can generate a “properties” user interface area 506 in response to a user selection of a particular component in the coordinate plane of theuser interface 503. The properties user interface element 506 can be generated a pop-up area or section as shown, or in an additional panel. The properties user interface area 506 can show various parameters of the selected component. The properties user interface area 506 can provide a user interface element for a respective parameter that when selected, allows a user to modify the respective parameter. Once modified, thetopology creator 121 can update the graphical representation of theIoT topology 129 and theIoT topology 129 code. -
FIG. 6 shows an example of auser interface 603 generated by aclient application 136 or adatacenter 115 and rendered for display. Theuser interface 603 can include a list ofIoT devices 606, including “RESTSENSOR,” “I2CSENSOR,” and “MQTTSENSOR.” The “RESTSENSOR” and “MQTTSENSOR” devices can be shown in bold, indicating that a metric received acorresponding IoT device 113 is selected for display. Theuser interface 603 can also include graphs 609 and 612. The graphs 609 and 612 can showIoT data 190 based on the collected metrics from theIoT devices 113. In some cases, the graphs can show a value plotted across time, where the value can be indicated in an X dimension of the graph, and time is indicated in a Y dimension of the graph. Theuser interface 603 can include a user interface element that allows a user to enter an auto-refresh rate. The auto-refresh rate can indicate how often theuser interface 603 should be updated based on additional data received from anIoT device 113 through agateway 111. Theuser interface 603 can indicate a most recent time that theuser interface 603 was refreshed. - A number of software components are stored in the memory and executable by a processor. In this respect, the term “executable” means a program file that is in a form that can ultimately be run by the processor. Examples of executable programs can be, for example, a compiled program that can be translated into machine code in a format that can be loaded into a random access portion of one or more of the memory devices and run by the processor, code that can be expressed in a format such as object code that is capable of being loaded into a random access portion of the one or more memory devices and executed by the processor, or code that can be interpreted by another executable program to generate instructions in a random access portion of the memory devices to be executed by the processor. An executable program can be stored in any portion or component of the memory devices including, for example, random access memory (RAM), read-only memory (ROM), hard drive, solid-state drive, USB flash drive, memory card, optical disc such as compact disc (CD) or digital versatile disc (DVD), floppy disk, magnetic tape, or other memory components.
- Memory can include both volatile and nonvolatile memory and data storage components. Also, a processor can represent multiple processors and/or multiple processor cores, and the one or more memory devices can represent multiple memories that operate in parallel processing circuits, respectively. Memory devices can also represent a combination of various types of storage devices, such as RAM, mass storage devices, flash memory, or hard disk storage. In such a case, a local interface can be an appropriate network that facilitates communication between any two of the multiple processors or between any processor and any of the memory devices. The local interface can include additional systems designed to coordinate this communication, including, for example, performing load balancing. The processor can be of electrical or of some other available construction.
- The
client devices 109 can include a display upon which a user interface generated by aclient application 136,management service 120,IoT creator 121, or another application can be rendered. In some examples, the user interface can be generated with user interface data provided by themanagement system 103. Theclient devices 109 can also include one or more input/output devices that can include, for example, a capacitive touchscreen or other type of touch input device, fingerprint reader, or keyboard. - Although the
management service 120,IoT creator 121,client applications 136, and other various services and functions described can be embodied in software or code executed by general purpose hardware as discussed above, as an alternative, the same can also be embodied in dedicated hardware or a combination of software/general purpose hardware and dedicated hardware. If embodied in dedicated hardware, each can be implemented as a circuit or state machine that employs any one of or a combination of a number of technologies. These technologies can include discrete logic circuits having logic gates for implementing various logic functions upon an application of one or more data signals, application specific integrated circuits (ASICs) having appropriate logic gates, field-programmable gate arrays (FPGAs), or other components. - The flowcharts show an example of the functionality and operation of an implementation of portions of components described. If embodied in software, each block can represent a module, segment, or portion of code that can include program instructions to implement the specified logical function(s). The program instructions can be embodied in the form of source code that can include human-readable statements written in a programming language or machine code that can include numerical instructions recognizable by a suitable execution system such as a processor in a computer system or other system. The machine code can be converted from the source code. If embodied in hardware, each block can represent a circuit or a number of interconnected circuits to implement the specified logical function(s).
- Although the flowcharts show a specific order of execution, it is understood that the order of execution can differ from that which is depicted. For example, the order of execution of two or more blocks can be scrambled relative to the order shown. In addition, two or more blocks shown in succession can be executed concurrently or with partial concurrence. Further, in some embodiments, one or more of the blocks shown in the drawings can be skipped or omitted.
- Also, any logic or application described that includes software or code can be embodied in any non-transitory computer-readable medium for use by or in connection with an instruction execution system such as a processor in a computer system or other system. In this sense, the logic can include, for example, statements including instructions and declarations that can be fetched from the computer-readable medium and executed by the instruction execution system. In the context of the present disclosure, a “computer-readable medium” can be any medium that can contain, store, or maintain the logic or application described for use by or in connection with the instruction execution system.
- The computer-readable medium can include any one of many physical media, such as magnetic, optical, or semiconductor media. More specific examples of a suitable computer-readable medium include solid-state drives or flash memory. Further, any logic or application described can be implemented and structured in a variety of ways. For example, one or more applications can be implemented as modules or components of a single application. Further, one or more applications described can be executed in shared or separate computing devices or a combination thereof. For example, a plurality of the applications described can execute in the same computing device, or in multiple computing devices.
- It is emphasized that the above-described embodiments of the present disclosure are merely possible examples of implementations described for a clear understanding of the principles of the disclosure. Many variations and modifications can be made to the above-described embodiments without departing substantially from the spirit and principles of the disclosure. All such modifications and variations are intended to be included within the scope of this disclosure.
Claims (20)
1. A system, comprising:
a computing device; and
a data store comprising executable instructions, wherein the instructions, when executed by at least one processor, cause the computing device to at least:
generate a user interface comprising a graphical representation of a plurality of components, the plurality of components comprising: a gateway device component and an Internet-of-Things (IoT) device component;
determine a relationship between the plurality of components based on user-defined connections between individual ones of the plurality of components;
generate IoT topology code comprising: the relationship between the plurality of components, and properties for individual ones of the plurality of components;
convert the IoT topology code to executable gateway instructions, the gateway instructions comprising a package that enables a gateway device to communicate with an IoT device; and
transmit the gateway instructions to the gateway device for execution by the gateway device.
2. The system of claim 1 , wherein the package comprises manufacturer-defined code for communicating with the IoT device.
3. The system of claim 1 , the plurality of components further comprising: a filter component, wherein the filter component specifies a metric to collect from the IoT device, the metric comprising: an aggregation size, an interval, and a unit.
4. The system of claim 1 , wherein the instructions, when executed by the at least one processor, cause the computing device to at least:
identify a user selection of a particular component;
generate a user interface element comprising a property of the particular component;
identify a user modification of the property through the user interface element; and
update the IoT topology code based the user modification of the property.
5. The system of claim 1 , wherein a first section of the user interface comprises the graphical representation of the plurality of components, and a second section of the user interface comprises the IoT topology code.
6. The system of claim 1 , wherein the IoT topology code is generated in a data serialization format.
7. The system of claim 1 , wherein a first section of the user interface comprises the graphical representation of the plurality of components, and a second section of the user interface comprises a list of pre-defined components.
8. A method performed by a computing device, the method comprising:
generating a user interface comprising a graphical representation of a plurality of components, the plurality of components comprising: a gateway device component and an Internet-of-Things (IoT) device component;
determining a relationship between the plurality of components based on user-defined connections between individual ones of the plurality of components;
generating IoT topology code comprising: the relationship between the plurality of components, and properties for individual ones of the plurality of components;
converting the IoT topology code to executable gateway instructions, the gateway instructions comprising a package that enables a gateway device to communicate with an IoT device; and
transmitting the gateway instructions to the gateway device for execution by the gateway device.
9. The method of claim 8 , wherein the package comprises manufacturer-defined code for communicating with the IoT device.
10. The method of claim 8 , the plurality of components further comprising: a filter component, wherein the filter component specifies a metric to collect from the IoT device, the metric comprising: an aggregation size, an interval, and a unit.
11. The method of claim 8 , further comprising:
identifying a user selection of a particular component;
generating a user interface element comprising a property of the particular component;
identifying a user modification of the property through the user interface element; and
updating the IoT topology code based the user modification of the property.
12. The method of claim 8 , wherein a first section of the user interface comprises the graphical representation of the plurality of components, and a second section of the user interface comprises the IoT topology code.
13. The method of claim 8 , wherein the IoT topology code is generated in a data serialization format.
14. The method of claim 8 , further comprising:
transmitting the IoT topology code to a management service.
15. A non-transitory computer-readable medium embodying executable instructions, wherein the instructions, when executed by at least one processor, cause a computing device to at least:
generate a user interface comprising a graphical representation of a plurality of components, the plurality of components comprising: a gateway device component and an Internet-of-Things (IoT) device component;
determine a relationship between the plurality of components based on user-defined connections between individual ones of the plurality of components;
generate IoT topology code comprising: the relationship between the plurality of components, and properties for individual ones of the plurality of components;
convert the IoT topology code to executable gateway instructions, the gateway instructions comprising a package that enables a gateway device to communicate with an IoT device; and
transmit the gateway instructions to the gateway device for execution by the gateway device.
16. The non-transitory computer-readable medium of claim 15 , wherein the package comprises manufacturer-defined code for communicating with the IoT device.
17. The non-transitory computer-readable medium of claim 15 , the plurality of components further comprising: a filter component, wherein the filter component specifies a metric to collect from the IoT device, the metric comprising: an aggregation size, an interval, and a unit.
18. The non-transitory computer-readable medium of claim 15 , wherein the instructions, when executed by the at least one processor, cause the computing device to at least:
identify a user selection of a particular component;
generate a user interface element comprising a property of the particular component;
identify a user modification of the property through the user interface element; and
update the IoT topology code based the user modification of the property.
19. The non-transitory computer-readable medium of claim 15 , wherein a first section of the user interface comprises the graphical representation of the plurality of components, and a second section of the user interface comprises the IoT topology code.
20. The non-transitory computer-readable medium of claim 15 , wherein the IoT topology code is generated in a data serialization format.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/242,788 US20210250244A1 (en) | 2018-12-11 | 2021-04-28 | Internet of things system topology generation |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/215,953 US11005719B2 (en) | 2018-12-11 | 2018-12-11 | Internet of Things system topology generation |
US17/242,788 US20210250244A1 (en) | 2018-12-11 | 2021-04-28 | Internet of things system topology generation |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/215,953 Continuation US11005719B2 (en) | 2018-12-11 | 2018-12-11 | Internet of Things system topology generation |
Publications (1)
Publication Number | Publication Date |
---|---|
US20210250244A1 true US20210250244A1 (en) | 2021-08-12 |
Family
ID=70972094
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/215,953 Active US11005719B2 (en) | 2018-12-11 | 2018-12-11 | Internet of Things system topology generation |
US17/242,788 Abandoned US20210250244A1 (en) | 2018-12-11 | 2021-04-28 | Internet of things system topology generation |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/215,953 Active US11005719B2 (en) | 2018-12-11 | 2018-12-11 | Internet of Things system topology generation |
Country Status (2)
Country | Link |
---|---|
US (2) | US11005719B2 (en) |
WO (1) | WO2020123692A2 (en) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10225161B2 (en) * | 2016-10-31 | 2019-03-05 | Accedian Networks Inc. | Precise statistics computation for communication networks |
CN115134380B (en) * | 2021-03-24 | 2024-07-12 | 京东方科技集团股份有限公司 | Data transmission method, device, electronic equipment and storage medium |
US12074769B2 (en) * | 2022-08-03 | 2024-08-27 | Grow Director LTD | Transmission of telegrams by a network distributor in an automation network |
US12034592B2 (en) * | 2022-12-07 | 2024-07-09 | Cisco Technology, Inc. | Software-defined device tracking in network fabrics |
CN117768510B (en) * | 2024-01-09 | 2024-06-18 | 中科物栖(南京)科技有限公司 | Method, device, equipment and storage medium for graphically generating broadcast communication mechanism |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160128043A1 (en) * | 2014-10-30 | 2016-05-05 | Qualcomm Incorporated | Dynamic mobile ad hoc internet of things (iot) gateway |
US9621428B1 (en) * | 2014-04-09 | 2017-04-11 | Cisco Technology, Inc. | Multi-tiered cloud application topology modeling tool |
US10079691B2 (en) * | 2016-07-29 | 2018-09-18 | American Megatrends, Inc. | System and method for defining interactions between internet of things (IoT) devices using graphic user interface (GUI) based tool |
US10095495B2 (en) * | 2015-05-08 | 2018-10-09 | Ciambella Ltd. | Method and apparatus for automatic software development for a group of controller-based devices |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9712486B2 (en) * | 2006-09-25 | 2017-07-18 | Weaved, Inc. | Techniques for the deployment and management of network connected devices |
US8280978B2 (en) * | 2006-12-29 | 2012-10-02 | Prodea Systems, Inc. | Demarcation between service provider and user in multi-services gateway device at user premises |
US9628329B2 (en) * | 2014-03-21 | 2017-04-18 | Citrix Systems, Inc. | Ubiquitous collaboration in managed applications |
US20160274870A1 (en) * | 2015-03-20 | 2016-09-22 | Arrayent, Inc. | Design framework for an iot system |
US20170019853A1 (en) | 2015-07-14 | 2017-01-19 | Intel Corporation | Power saving architectures and techniques in wireless networks |
US10732969B2 (en) * | 2015-12-21 | 2020-08-04 | Ciambella Ltd. | Method and apparatus for creating and managing controller based remote solutions |
US10064062B2 (en) | 2016-06-07 | 2018-08-28 | Sears Brands, L.L.C. | System and method for automatically and securely registering an internet of things device |
CN112995962B (en) * | 2016-07-01 | 2024-09-03 | 英特尔公司 | Dynamic user interface in machine-to-machine system |
US10798780B2 (en) * | 2016-08-22 | 2020-10-06 | Ciambella Ltd. | Method and apparatus for creating and managing controller based remote solutions |
US10255067B2 (en) * | 2016-11-22 | 2019-04-09 | Sap Se | Development of internet of things (IoT) applications |
US10002526B1 (en) * | 2016-12-20 | 2018-06-19 | Arrayent, Inc. | Internet-of-things systems and methods |
US10491496B2 (en) * | 2016-12-23 | 2019-11-26 | General Electric Company | Determining the health of an IOT application |
US10433134B2 (en) * | 2017-01-24 | 2019-10-01 | Arris Enterprises Llc | Video gateway as an internet of things mesh enhancer apparatus and method |
KR102339857B1 (en) * | 2017-03-29 | 2021-12-16 | 삼성전자주식회사 | Method for Managing and Controling the External IoT Device and the Electronic Device supporting the same |
WO2018190854A1 (en) | 2017-04-14 | 2018-10-18 | Giesecke+Devrient Mobile Security America, Inc. | Device and method for authenticating transport layer security communications |
US10104077B1 (en) | 2017-10-06 | 2018-10-16 | Xage Security, Inc. | Enabling multitenant data access on a single industrial network |
KR101835085B1 (en) * | 2017-12-08 | 2018-03-08 | 엘토브시스템 주식회사 | Smart home network system |
US11190513B2 (en) * | 2018-01-19 | 2021-11-30 | Vmware, Inc. | Gateway enrollment for internet of things device management |
AU2019268345A1 (en) * | 2018-05-15 | 2021-01-07 | Pascale VICAT-BLANC | Systems and methods for modeling and simulating an IoT system |
US10693795B2 (en) * | 2018-06-01 | 2020-06-23 | Fujitsu Limited | Providing access to application program interfaces and Internet of Thing devices |
-
2018
- 2018-12-11 US US16/215,953 patent/US11005719B2/en active Active
-
2019
- 2019-12-11 WO PCT/US2019/065777 patent/WO2020123692A2/en active Application Filing
-
2021
- 2021-04-28 US US17/242,788 patent/US20210250244A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9621428B1 (en) * | 2014-04-09 | 2017-04-11 | Cisco Technology, Inc. | Multi-tiered cloud application topology modeling tool |
US20160128043A1 (en) * | 2014-10-30 | 2016-05-05 | Qualcomm Incorporated | Dynamic mobile ad hoc internet of things (iot) gateway |
US10095495B2 (en) * | 2015-05-08 | 2018-10-09 | Ciambella Ltd. | Method and apparatus for automatic software development for a group of controller-based devices |
US10079691B2 (en) * | 2016-07-29 | 2018-09-18 | American Megatrends, Inc. | System and method for defining interactions between internet of things (IoT) devices using graphic user interface (GUI) based tool |
Also Published As
Publication number | Publication date |
---|---|
WO2020123692A3 (en) | 2021-03-04 |
US11005719B2 (en) | 2021-05-11 |
WO2020123692A2 (en) | 2020-06-18 |
US20200186431A1 (en) | 2020-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210250244A1 (en) | Internet of things system topology generation | |
US20170315782A1 (en) | Application with embedded workflow designer | |
US11190407B2 (en) | Internet of things device discovery and configuration | |
US11924056B2 (en) | User interface tools for device-driven management workflows | |
US10776083B2 (en) | Application builder with connected components | |
CN110799942B (en) | Method, apparatus and computer readable medium for managing network devices and services | |
US8751620B2 (en) | Validating deployment patterns in a networked computing environment | |
US20210083946A1 (en) | Management service migration for managed devices | |
US9143407B2 (en) | Granular client inventory management with conflict resolution | |
US9984087B2 (en) | Performing actions on objects as a result of applying tags to the objects | |
US20180196647A1 (en) | Application Programming Interface Discovery Using Pattern Recognition | |
US11650888B2 (en) | Workflow error handling for device driven management | |
US20150095473A1 (en) | Automatic configuration of applications based on host metadata using application-specific templates | |
US11588688B2 (en) | Device connector service for device and management service integration | |
US9641540B2 (en) | User interface driven translation, comparison, unification, and deployment of device neutral network security policies | |
US20230078733A1 (en) | Firmware password management | |
US11588681B2 (en) | Migration of managed devices to utilize management platform features | |
US11777907B2 (en) | Computer asset discovery for digital transformation | |
US11403577B2 (en) | Assisting and automating workflows using structured log events | |
US10911305B2 (en) | Efficient rule processing for device management data evaluation | |
US11601476B2 (en) | Gateway action framework | |
US11757976B2 (en) | Unified application management for heterogeneous application delivery | |
US20230101738A1 (en) | Management service device platform creation and device configuration | |
US9767134B2 (en) | Distributed CMDB information within a service management ticketing system | |
US11184250B1 (en) | Network integration and workflow generation tools for device-driven management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STPP | Information on status: patent application and granting procedure in general |
Free format text: APPLICATION DISPATCHED FROM PREEXAM, NOT YET DOCKETED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |