IP Library › Granted Patent US 10,338,895
Granted Patent B2
US 10,338,895 · App. 15/176,746 · Granted Jul 2, 2019

Integrated developer environment for internet of things applications

Inventors: Yajun Zhang (Santa Clara, CA); Haihua Xiao (Shanghai, CN); Rizhi Chen (Shanghai, CN); Ashutosh A. Malegaonkar (Milpitas, CA); Wael Kamel (San Jose, CA); Aikepaer Abuduweili (San Jose, CA); Susie Wee (Palo Alto, CA)
Assignee: Cisco Technology, Inc.
G06F8/34G06F8/60G06F9/455
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,338,895
App. No.
15/176,746
Filed
Jun 8, 2016
Granted
Jul 2, 2019
Kind
B2
Art Unit
2196
USPC
717/109
Abstract

In one embodiment, a graphical user interface (GUI) is established for an Internet of Things (IoT) integrated developer environment (IDE) with one or more visual developer tools. Real and/or virtual nodes are provided within the IoT IDE having connectivity and functionality, and a plurality are connected as a logical and executable graph for a flow-based programming framework virtualized across one or more IoT layers. The nodes may then be programmed based on respective connectivity and functionality, such that the logical and executable graph has real and/or virtual inputs, real and/or virtual processing functions, and real and/or virtual actions. Upon deploying the node programming to one or more corresponding platform emulators configured to execute the node programming, the logical and executable graph may be simulated by executing the node programming to produce the one or more actions based on the one or more inputs and the one or more processing functions.

Claims (49)

1. A method, comprising:

establishing, on a computer, a graphical user interface (GUI) for an Internet of Things (IoT) integrated developer environment (IDE) with one or more visual developer tools;

providing, by the IoT IDE on the computer, nodes within the IoT IDE having connectivity and functionality, the nodes selected from a) discovered real nodes in communication with the IoT IDE or b) virtual nodes within the IoT IDE;

connecting a plurality of the nodes, by the IoT IDE on the computer, as a logical and executable graph for a flow-based programming framework virtualized across one or more IoT layers that are undeveloped;

programming nodes of at least one IoT layer of the one or more IoT layers, by the IoT IDE on the computer, based on respective connectivity and functionality, such that the logical and executable graph has one or more real and/or virtual inputs, one or more real and/or virtual processing functions, and one or more real and/or virtual actions;

deploying, by the IoT IDE on the computer, the node programming to one or more corresponding platform emulators configured to execute the node programming; and

simulating, by the IoT IDE on the computer, the logical and executable graph by executing the node programming to produce the one or more actions based on the one or more inputs and the one or more processing functions, the simulating including abstracting one or more of the IoT layers that are different than the at least one IoT layer by emulating functionality to produce an outcome necessary for remaining developed IoT layers.

2. The method as in claim 1 , further comprising:

scaling-up the graph into a larger graph.

3. The method as in claim 1 , further comprising:

deploying the graph into a real-world platform for operation of node programming on one or more real-world devices.

4. The method as in claim 3 , further comprising:

providing maintenance and service access to the deployed graph in a real-time, real-world environment.

5. The method as in claim 1 , wherein platform emulators are selected from a group consisting of: thing emulators; fog emulators; cloud emulators; and end-user emulators.

6. The method as in claim 1 , wherein simulating comprises:

emulating protocol-level connectivity and/or logical connectivity between nodes.

7. The method as in claim 1 , wherein actions are selected from a group consisting of:

output; visualization; actuation; notification; and cloud-connected processing.

8. The method as in claim 1 , wherein virtual nodes are selected from a group consisting of: virtual nodes in a library of the IoT IDE; and virtual nodes defined by a developer operating the IoT IDE.

9. The method as in claim 1 , further comprising:

checking for input/output (I/O) compliance between two of the nodes prior to allowing a logical connection between those two nodes.

10. The method as in claim 1 , further comprising:

providing visual programming options within the GUI based on the connectivity and functionality of the nodes.

11. The method as in claim 1 , further comprising:

auto-placing and auto-connecting two or more nodes within the IoT IDE based on proximity of the two or more nodes to each other and based on their respective connectivity.

12. The method as in claim 1 , further comprising:

populating the GUI with generically connectable and functional nodes selected from a group consisting of: sensors; actuators; actors; and cloud-based processors.

13. A tangible, non-transitory computer-readable media comprising program instructions, which when executed on a processor are configured to:

establish a graphical user interface (GUI) for an Internet of Things (IoT) integrated developer environment (IDE) with one or more visual developer tools;

provide nodes within the IoT IDE having connectivity and functionality, the nodes selected from a) discovered real nodes in communication with the IoT IDE or b) virtual nodes within the IoT IDE;

connect a plurality of the nodes within the IoT IDE as a logical and executable graph for a flow-based programming framework virtualized across one or more IoT layers that are undeveloped;

program nodes of at least one IoT layer of the one or more IoT layers based on respective connectivity and functionality, such that the logical and executable graph has one or more real and/or virtual inputs, one or more real and/or virtual processing functions, and one or more real and/or virtual actions;

deploy the node programming to one or more corresponding platform emulators configured to execute the node programming; and

simulate the logical and executable graph by executing the node programming to produce the one or more actions based on the one or more inputs and the one or more processing functions, the simulation including an abstraction of one or more of the IoT layers that are different than the at least one IoT layer by emulating functionality to produce an outcome necessary for remaining developed IoT layers.

14. The computer-readable media as in claim 13 , wherein the program instructions are further configured to:

scale-up the graph into a larger graph.

15. The computer-readable media as in claim 13 , wherein the program instructions are further configured to:

deploying the graph into a real-world platform for operation of node programming on one or more real-world devices.

16. The computer-readable media as in claim 15 , wherein the program instructions are further configured to:

provide maintenance and service access to the deployed graph in a real-time, real-world environment.

17. An apparatus, comprising:

a processor adapted to execute one or more processes; and

a memory configured to store a process executable by the processor, the process when executed operable to:

establish a graphical user interface (GUI) for an Internet of Things (IoT) integrated developer environment (IDE) with one or more visual developer tools;

provide nodes within the IoT IDE having connectivity and functionality, the nodes selected from a) discovered real nodes in communication with the IoT IDE or b) virtual nodes within the IoT IDE;

connect a plurality of the nodes within the IoT IDE as a logical and executable graph for a flow-based programming framework virtualized across one or more IoT layers that are undeveloped;

program nodes of at least one IoT layer of the one or more IoT layers based on respective connectivity and functionality, such that the logical and executable graph has one or more real and/or virtual inputs, one or more real and/or virtual processing functions, and one or more real and/or virtual actions;

deploy the node programming to one or more corresponding platform emulators configured to execute the node programming; and

simulate the logical and executable graph by executing the node programming to produce the one or more actions based on the one or more inputs and the one or more processing functions, the simulation including an abstraction of one or more of the IoT layers that are different than the at least one IoT layer by emulating functionality to produce an outcome necessary for remaining developed IoT layers.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 8, 2016
From: ZHANG, YAJUN; XIAO, HAIHUA; CHEN, RIZHI; MALEGAONKAR, ASHUTOSH A.; KAMEL, WAEL; ABUDUWEILI, AIKEPAER; WEE, SUSIE
To: CISCO TECHNOLOGY, INC.
Reel/Frame 039290/0667 →
Continuity (2)
Provisional Application 62172464 · Jun 8, 2015
Related Publication 20160357521A1 · Dec 8, 2016
Cited By (109)
US 12,206,696 US 12,244,621 US 12,261,866 US 12,267,345 US 12,284,197 US 12,309,181 US 12,309,182 US 12,309,185 US 12,309,236 US 12,323,449 US 12,335,286 US 12,335,348 US 12,341,797 US 12,348,545 US 12,355,626 US 12,355,787 US 12,355,793 US 12,363,148 US 12,368,745 US 12,368,746 US 12,368,747 US 12,375,573 US 12,381,901 US 12,395,573 US 12,401,669 US 12,405,849 US 12,407,701 US 12,407,702 US 12,418,552 US 12,418,555 US 12,425,428 US 12,425,430 US 12,445,474 US 12,452,272 US 12,452,279 US 12,457,231 US 12,463,994 US 12,463,995 US 12,463,996 US 12,463,997 US 12,464,003 US 12,470,577 US 12,470,578 US 12,483,576 US 12,489,770 US 12,489,771 US 12,495,052 US 12,500,910 US 12,500,911 US 12,500,912 US 12,505,126 US 12,506,762 US 12,511,110 US 12,513,221 US 12,526,297 US 12,537,836 US 12,537,837 US 12,537,839 US 12,537,840 US 12,537,884 US 12,549,575 US 12,549,577 US 12,556,548 US 12,556,559 US 12,563,060 US 12,563,064 US 12,563,071 US 12,563,072 US 12,580,932 US 12,580,934 US 12,580,935 US 12,580,936 US 12,580,937 US 12,587,553 US 12,592,950 US 12,598,205 US 12,613,930 US 12,615,271 US 12,621,324 US 12,621,329 US 12,627,686 US 12,627,687 US 12,627,690 US 12,634,312 US 12,634,376 US 12,652,302 US 12,659,325 US 12,659,326 US 12,659,327 US 12,659,333 US 12,676,874 US 12,689,638 US 12,689,640 US 12,695,768 US 12,706,931 US 12,706,932 US 12,706,933 US 12,706,980 US 12,712,897 US 12,719,896 US 12,726,495 US 12,730,899 US 12,739,266 US 12,739,267 US 12,744,799 US 12,744,800 US 12,744,802 US 12,750,382 US 12,750,383