Method And System For Simulating A Plurality Of Devices
A method and system for simulating a plurality of devices are disclosed. A simulator configured to simulate a plurality of devices may output simulated device data for the plurality of devices, where the output of the simulated device data may be performed based upon execution of commands by the simulator. The commands may be received from a device abstraction layer in response to a request from the simulator for any commands associated with the plurality of devices. Additionally, the simulated device data may be communicated to a component coupled to the simulator, where a result of the processing of the simulated device data by the component may be used to analyze the performance of the component. Further, other commands may be executed by simulator for changing the frequency at which simulated device data is output, for performing another operation defined during configuration of the simulator, etc.
The present application is related to U.S. patent application Ser. No. ______, filed ______, entitled “METHOD, SYSTEM, AND GRAPHICAL USER INTERFACE FOR CONFIGURING A SIMULATOR TO SIMULATE A PLURALITY OF DEVICES,” naming Michael Biltz, Jonathan Hsu, Sean Stauth, and Graeme MacDonald as inventors, assigned to the assignee of the present invention, and having attorney docket number ACNR-D08-062/02006-00/US. That application is incorporated herein by reference in its entirety and for all purposes.
BACKGROUND OF THE INVENTIONSimulation is often used to monitor, debug or otherwise analyze a system or device. For example, a component designed to access an analog signal output by a sensor may be tested using a sensor simulator. The sensor simulator may be coupled to the component or device under test, where a simulated signal voltage may be accessed by the device under test for analysis thereof.
One type of conventional sensor simulator that is commercially available provides for single-sensor simulation. In other words, the software and/or hardware only provides a simulated output for a single sensor, and therefore, is not scalable. Additionally, conventional sensor simulators simulate the signal characteristics of a signal output by a sensor, e.g., a voltage level, etc. Therefore, conventional sensor simulators do not provide for good simulation of a sensor designed to output digital data in packetized formats.
Although systems with few devices may be analyzed using conventional simulators, conventional simulators are not suitable for analyzing systems with a large number of devices. For example, systems for monitoring or tracking data from automobiles, other vehicles, manufacturing sensors, or the like, often involve thousands or even millions of devices.
Accordingly, many instances of a conventional, single-device simulator would have to be individually created and configured to enable simulation of the numerous devices, thereby providing a costly and inefficient solution. Additionally, even if such a solution were implemented, the large amount of information output by the individual simulators would require extensive and costly processing resources. Moreover, given that conventional simulators output a simulated signal voltage which must be converted or otherwise processed to produce usable data, the amount of processing resources is further increased and the existing problems are exacerbated.
SUMMARY OF THE INVENTIONAccordingly, a need exists for a device simulation system which enables a user to more easily and efficiently define a large number of devices for simulation. A need exists for a device simulation system that can simultaneously provide simulated responses, e.g., outputs, for a very large number of simulated sensors so that a real world system designed to interface with the simulated sensors can be adequately tested without needing the physical sensors. A need also exists for a device simulation system which enables a user to more easily and efficiently configure the defined devices, ether individually or in groups. Further, a need exists for such a simulator which generates simulated device data that is easier and less costly to process. Embodiments of the present invention provide novel solutions to these needs and others as described below.
Embodiments of the present invention are directed to a method and system for simulating a plurality of devices. More specifically, a simulator configured to simulate a plurality of devices may output simulated device data for the plurality of devices, where the output of the simulated device data may be performed based upon execution of commands by the simulator. The commands may be received from a device abstraction layer in response to a request from the simulator for any commands associated with the plurality of devices.
The simulated device data may include a data value (e.g., as opposed to a simulated voltage level). Additionally, the simulated device data may be communicated to a component (e.g., of the device abstraction layer, of a business application coupled to the device abstraction layer, etc.) coupled to the simulator, where a result of the processing of the simulated device data by the component may be used to analyze the performance of the component. Further, in one embodiment, other commands may be executed by the simulator for changing the frequency at which simulated device data is output, for performing another operation defined during configuration of the simulator, etc.
In one embodiment, a computer-implemented method of simulating a plurality of devices includes accessing configuration data for the plurality of devices and automatically instantiating the plurality of devices within computer memory based upon the configuration data, wherein the accessing and the automatic instantiation are performed by a simulator operable to be coupled to a system under test. Commands communicated from a device abstraction layer are accessed, wherein the commands are associated with the plurality of devices. The plurality of devices are automatically simulated based upon execution of the commands, wherein the automatic simulation comprises communicating simulated device data from the simulator to the system under test for performance testing thereof. The commands may be requests for simulated device data associated with the plurality of devices, and wherein the automatic simulation of the plurality of devices may further include executing the commands and generating the simulated device data. Alternatively, a command of the commands may be a request to change an output frequency of simulated device data associated with the plurality of devices. And in one embodiment, a command of the commands may be a custom command associated with at least one device of the plurality of devices.
In another embodiment, a method of simulating a plurality of devices includes configuring a simulator to simulate a plurality of devices, wherein the configuring comprises generating configuration data based upon at least one user-defined attribute of the plurality of devices. A device abstraction layer is configured for communication with the simulator, wherein the configuring of the device abstraction layer further comprises downloading the configuration data to a memory accessible to the device abstraction layer, wherein the device abstraction layer is a component of a system under test. Commands communicated from the device abstraction layer are accessed, wherein the commands are associated with the plurality of devices. The method also includes simulating the plurality of devices based upon execution of the commands, wherein the simulation of the plurality of devices further comprises simulating the plurality of devices in accordance with the configuration data. The method may also include generating simulated device data in response to the execution of the commands, communicating the simulated device data to a component of the system under test (e.g., of the device abstraction layer, of a business application coupled to the device abstraction layer, etc.) coupled to the simulator, and analyzing performance of the component based upon a result of processing of the simulated device data by the component.
And in yet another embodiment, a device simulation system includes a simulator for simulating a plurality of devices based upon configuration data associated with the plurality of devices, wherein the configuration data is associated with at least one user-defined attribute of the plurality of devices. A device abstraction layer is coupled to the simulator, wherein the device abstraction layer comprises a memory for storing the configuration data downloaded from the simulator, wherein the device abstraction layer is further operable to implement communication with the simulator, and wherein the device abstraction layer is further operable to communicate commands associated with the plurality of devices to the simulator. The simulator is further operable to simulate the plurality of devices based upon execution of the commands to test a system associated with the device abstraction layer. The system may also include at least one business application coupled to the device abstraction layer, wherein the device abstraction layer is further operable to implement communication between at least one business application and the simulator. Using such a device simulation system as described above, the business application layer can adequately be tested without the need for large numbers of physical devices (e.g., sensors).
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements.
Reference will now be made in detail to embodiments of the present invention, examples of which are illustrated in the accompanying drawings. While the present invention will be discussed in conjunction with the following embodiments, it will be understood that they are not intended to limit the present invention to these embodiments alone. On the contrary, the present invention is intended to cover alternatives, modifications, and equivalents which may be included with the spirit and scope of the present invention as defined by the appended claims. Furthermore, in the following detailed description of the present invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, embodiments of the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the present invention.
Notation and NomenclatureSome regions of the detailed descriptions which follow are presented in terms of procedures, logic blocks, processing and other symbolic representations of operations on data bits within a computer memory. These descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. In the present application, a procedure, logic block, process, or the like, is conceived to be a self-consistent sequence of steps or instructions leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, although not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that throughout the present invention, discussions utilizing the terms such as “aborting,” “accepting,” “accessing,” “adding,” “adjusting,” “analyzing,” “applying,” “assembling,” “assigning,” “balancing,” “blocking,” “calculating,” “capturing,” “combining,” “comparing,” “collecting,” “configuring,” “creating,” “debugging,” “defining,” “delivering,” “depicting,” “detecting,” “determining,” “displaying,” “establishing,” “executing,” “forwarding,” “flipping,” “generating,” “grouping,” “hiding,” “identifying,” “initiating,” “instantiating,” “interacting,” “modifying,” “monitoring,” “moving,” “outputting,” “performing,” “placing,” “presenting,” “processing,” “programming,” “querying,” “removing,” “repeating,” “resuming,” “sampling,” “simulating,” “sorting,” “storing,” “subtracting,” “suspending,” “tracking,” “transcoding,” “transforming,” “unblocking,” “using,” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
Overview of the Simulation PlatformIn one embodiment, system 100 may enable monitoring or tracking of data generated by devices 125a-125d. For example, devices 125a-125d may be sensors, embedded devices, portable electronic devices, or components (e.g., each within a different portion of a manufacturing line, an automobile, etc.) which measure parameters of device environment 120 (e.g., the manufacturing line, automobile, etc.). The devices (e.g., 125a-125d) may output device data based upon those measurements. The device data may be accessed and/or processed by business applications 130 (e.g., accessed via device abstraction layer 110) to enable tracking or monitoring of the device environment (e.g., 120) by a user (e.g., 140) and/or another system (e.g., ERP system 150, other system 160, etc.).
Although only four devices (e.g., 125a-125d) are shown within device environment 120 in
As shown more fully in
During simulation of the devices (e.g., 225a-225d), simulator 220 may output simulated device data for the devices (e.g., 225a-225d), where the simulated device data may represent a data value (e.g., a temperature in degrees Fahrenheit) instead of a signal voltage level (e.g., 1.25 volts) in one embodiment. The simulated device data may be accessed (e.g., via device abstraction layer 110) and/or processed similar to the device data output by devices 125a-125d as explained with respect to
It is appreciated that simulator 220 may be used to perform load testing or otherwise analyze the performance of a component of a system under test (e.g., components of device abstraction layer 110, components of business applications 130, etc.). The analysis may be based upon a result of the component's processing of the simulated device data (e.g., output by simulator 220 for devices 225a-225d). Additionally, such analysis may be advantageously performed without deploying actual hardware (e.g., devices 125a-125d) in one embodiment.
Step 410 involves configuring a simulator to simulate a plurality of devices. As shown in
In one embodiment, step 410 may involve a user defining a device profile (e.g., using GUI 370) with prescribed attributes that define a type or class of devices. The user may also advantageously define a number of devices (e.g., 225a-225d) to be automatically generated (e.g., using GUI 370) based upon the device profile. The devices may be configured individually and/or in groups. Additionally, the communicative coupling of the devices may be defined in step 410 in one embodiment. Further, device configuration data may be generated and/or stored in step 410 based upon the user interaction with the GUI (e.g., 370) for defining the device profile and/or devices (e.g., generated automatically based upon the device profile).
Step 420 of process 400 involves configuring a device abstraction layer (e.g., 110) to implement communication with the simulator (e.g., 220). For example, device configuration management component 312 of device management component 311 may download the configuration data (e.g., generated in step 410) from simulator 220 and store it in database 315 of device abstraction layer 110. Data may be accessed by component 312 via data access layer 314 in one embodiment. Component 312 may configure device abstraction layer 110 based upon the downloaded configuration data (e.g., stored in database 315) to enable communication with simulator 220. For example, component 312 may determine a format, size, etc. (e.g., from the configuration data) of the simulated device data output from simulator 220, thereby enabling device abstraction layer 110 to access, process, communicate, etc., the simulated device data.
As shown in
Step 435 involves initiating simulation of the plurality of instantiated devices (e.g., instantiated in step 430). In one embodiment, the simulation may be initiated in response to an interaction with a button or graphical object (e.g., 1080) of a GUI (e.g., 600 of
Step 440 involves communicating a request to a device abstraction layer for commands associated with the plurality of devices (e.g., 225a-225d). For example, notification client 326 of simulator 220 may communicate a request (e.g., 325) to notification management component 317 of device abstraction layer 110, where the request is for any commands associated with any of the simulated devices (e.g., 225a-225d).
As shown in
As shown in
Simulation in step 460 may only be performed for “enabled” devices in one embodiment. For example, only commands associated with enabled devices (e.g., enabled using button or region 1060 of GUI 600 as shown in
Step 470 involves generating simulated device data during simulation of the plurality of devices (e.g., 225a-225d). As discussed herein, simulator 220 (e.g., simulation engine 322) may generate the simulated device data in response to a command (e.g., 318) from device abstraction layer 110 (e.g., notification management component 317). The simulated device data may be generated in accordance with configuration data (e.g., accessed from database 324), and therefore, the simulated device data may have a format, type, size, arrangement, content, etc., defined by the configuration data.
As shown in
Step 490 involves analyzing the performance of the component based upon a result of the processing of the simulated device data by the component (e.g., of device abstraction layer 110, of business applications 130, etc.). In this manner, the component accessing and/or processing the simulated device data may be load tested to determine or improve processing efficiency of the component, perform debugging operations on the component, or the like. As another example, the number of simulated devices, the arrangement of simulated devices, the format or other characteristics of the simulated device data output by the simulated devices, etc., may be varied to further test the component.
As shown in
Turning to
Column 1530 contains simulated device data for each of the devices identified in columns 1510 and 1520. For example, where each of the devices are simulated temperature sensors, the data listed in column 1530 may be temperature readings (e.g., in degrees Fahrenheit, in degrees Celsius, etc.). Each row of column 1540 may include the date and time at which a respective data value of column 1530 was captured or generated. Additionally, each row of column 1550 may include a battery status of a simulated device (e.g., identified in a respective row of column 1510 and/or 1520). The battery status in column 1550 may be captured or generated at a time identified in a respective row of column 1540 in one embodiment.
The data listed in one or more of columns 1530-1550 may be used to determine if a device is working correctly in one embodiment. For example, where a data range is specified for a plurality of devices (e.g., using region 1160 of GUI 1100), then a data value reported by the simulator (e.g., 220) and listed in column 1530 may indicate a problem with a device reporting a value outside of that range. For example, where a range of 40-90 is specified (e.g., using region 1160), then the data values in rows 1570 and 1580 of column 1530 may indicate that two devices (e.g., “Device C” of row 1570 and “Device H” of row 1580) are not operating properly since they are not within the range of 40-90. Similarly, unexpected data values reported in columns 1540 and/or 1550 may also indicate a problem with a sensor. In this manner, embodiments enable the simulation of faulty or inoperable devices, thereby improving the accuracy and/or realism of the simulation. The data from the faulty or inoperable devices may also enable the analysis of components which access this data, for example, as discussed with respect to step 490 of
In one embodiment, the reliability of the simulated devices may be altered (e.g., by configuring one or more devices using a GUI such as GUI 370, GUI 600, GUI 700, GUI 900, GUI 1100, GUI 1300, etc.) to simulate real-world device failure. In this manner, the simulator (e.g., 220) may simulate one or more faulty or inoperable devices, and therefore, cause one or more devices to report bad data (e.g., outside a predetermined range as discussed herein, etc.). For example, if a device is configured to have a 95% reliability factor or rate, then the device may report good data 95% of the time and report bad data the other 5% of the time.
Although
As shown in
As shown in
Regions 740-770 may be used to define values for predetermined attributes. For example, region 740 may be used to define a profile data range. The profile data range may be an expected range associated with the simulated output data output by a simulator (e.g., 220) for a plurality of devices (e.g., 225a-225d). Additionally, the simulator (e.g., 220) may access the data range entered into region 740 and generate simulated device data for one or more simulated devices (e.g., 225a-225d) which falls within the range entered into region 740.
Region 750 may be used to define a frequency for generating or outputting simulated device data for the plurality of devices. For example, if a value of “2” is entered into region 750, then the simulator (e.g., 220) may output simulated device data for a simulated device (e.g., created based upon the device profile defined using GUI 700) every 2 minutes (e.g., where the unit of frequency associated with region 750 is minutes).
As shown in
Region 770 may be used to define a format for the simulated device data output for simulated devices (e.g., 220a-220d) created based upon a device profile defined using GUI 600. In one embodiment, the format may correspond to how the simulated device data for the plurality of devices (e.g., created based upon the device profile defined using GUI 700) is assembled. Additionally, a format defined using region 770 may include decimal, integer, string, hex, another format, etc.
Interaction with button or region 780 may initiate display of GUI 800 of
Turning back to
Step 520 involves displaying a GUI for creating devices (e.g., to be simulated) based upon the device profile (e.g., created using GUI 700, GUI 800, etc.). The one or more GUIs displayed in step 520 may be presented on a display device for interaction with a user, thereby enabling a user to create a device for simulation by a simulator (e.g., 220). Additionally, the GUI displayed in step 520 may be implemented in accordance with GUI 370 of
Region 940 may enable a user to specify a name or root identifier for one or more of the devices created based upon the selected device profile. Additionally, a description of the one or more devices may be entered in region 950.
Turning back to
Turning to
Region 1140 may be used to change or define a device name (e.g., similar to region 940 of
As shown in
Interaction with button or region 1192 may enable a user to define a custom attribute (e.g., similar to button or region 780 of
As shown in
Turning back to
Step 534 involves accessing grouping information defined for the devices. The grouping information accessed in step 534 may include information about a number of groups into which devices (e.g., those created using GUI 900) are organized, a name of each device grouping, a listing of specific devices in each group, and the like. It is appreciated that the simulator may respond to a command given to a device group. Additionally, the grouping information may include configuration information defined for a group (e.g., a data range applied to all devices of a group, etc.). Information about a communicative coupling of the devices may also be included in the grouping information. For example, information about how the devices are arranged with respect to one another and/or the arrangement of communication channels or paths coupling the devices may be included in the grouping information accessed in step 534. Further, in one embodiment, the grouping information may be accessed based upon interaction with GUI 600 as shown in
As shown in
Once a grouping of devices is created, information or attributes for each device within the grouping may be changed or defined (e.g., using a GUI for configuring a device grouping). For example, changing a data range of the simulated device data for the group of devices may change and/or override a data range entered for individual devices of the group.
Additionally, information about a communicative coupling of the devices may be defined using GUI 600 in one embodiment. For example, the simulator (e.g., 220) may be configured to generate and/or output simulated device data for a single device (e.g., “Device A”) even though the group of device comprise multiple devices (e.g., “Device A,” “Device B,” and “Device C”). As another example, the simulator (e.g., 220) may be configured to generate and/or output simulated device data for a group which represents an average of the respective simulated device data associated with each device of the group.
As shown in
Group object 1312 may be dragged and dropped in region 1320 to create device group (e.g., 1312a), where the device group may be a group of devices for simulation by a simulator. For example, group 1312a may include three devices as indicated by the number “3” within group 1312a. Further, the devices within a device group (e.g., 1312a) may be viewed by interacting with the device group (e.g., the graphical object representing device group 1312a), where
Turning back to
In one embodiment, objects may be placed and/or arranged in region 1320 by dragging and dropping objects from region 1310, by dragging and dropping objects to new locations within region 1320, or the like. Additionally, a communicative coupling may be defined using tools selected from region 1330, where the tools of region 1330 may include a line tool (e.g., for connecting or coupling one object to another, one object to a group of objects, a group of objects to another group of objects, etc.) and/or other tools. In this manner, devices 1311c and 1311 may each be connected or coupled to average component 1314, device group 1312a may be connected or coupled to hub component 1313b, or the like.
Accordingly, GUI 1300 may be used to define how simulated device data is accessed, collected, and communicated. For example, hub component 1313b may access and/or package simulated device data from device group 1312a (e.g., outputting simulated device data for each of the devices of device group 1312a) and average component 1314 (e.g., outputting simulated device data representing an average of the simulated device data from devices 1311c and 1311d). Hub component 1313c may access and/or package simulated device data from select component 1315 (e.g., outputting simulated device data from device 1311e, 1311f, or 1311g), device 1311a, device 1311b, and device group 1312b (e.g., outputting simulated device data for each of the devices of device group 1312b). Further, hub component 1313a may access and/or package simulated device data from hub components 1313b and 1313c. In this manner, embodiments enable a user to define an arrangement and/or communicative coupling of devices which may more accurately represent an arrangement of actual devices (e.g., corresponding to each of the simulated components) in a device environment (e.g., 120 of
Components defined using objects 1311-1315 may be configured using GUI 1300. For example, user interaction with an object representing the component to be configured may display a GUI (e.g., 1100 of
Turning back to
Step 550 involves storing the configuration data for access by the simulator (e.g., 220) and/or enabling simulation of the devices (e.g., 225a-225d). The configuration data may be stored in a memory (e.g., database 324) accessible to the simulator (e.g., 220). Step 550 may be performed in response to interaction with button or region 1080 of GUI 600 in one embodiment.
Computer System PlatformAs shown in
In one embodiment, depicted by dashed lines 1630, computer system platform 1600 may comprise at least one processor 1610 and at least one memory 1620. Processor 1610 may comprise a central processing unit (CPU) or other type of processor. Depending on the configuration and/or type of computer system environment, memory 1620 may comprise volatile memory (e.g., RAM), non-volatile memory (e.g., ROM, flash memory, etc.), or some combination of the two. Additionally, memory 1620 may be removable, non-removable, etc.
In other embodiments, computer system platform 1600 may comprise additional storage (e.g., removable storage 1640, non-removable storage 1645, etc.). Removable storage 1640 and/or non-removable storage 1645 may comprise volatile memory, non-volatile memory, or any combination thereof. Additionally, removable storage 1640 and/or non-removable storage 1645 may comprise CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store information for access by computer system platform 1600.
As shown in
Communication interface 1670 may also couple computer system platform 1600 to one or more input devices (e.g., a keyboard, mouse, pen, voice input device, touch input device, etc.). Additionally, communication interface 1670 may couple computer system platform 1600 to one or more output devices (e.g., a display, speaker, printer, etc.).
As shown in
In the foregoing specification, embodiments of the invention have been described with reference to numerous specific details that may vary from implementation to implementation. Thus, the sole and exclusive indicator of what is, and is intended by the applicant to be, the invention is the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction. Hence, no limitation, element, property, feature, advantage, or attribute that is not expressly recited in a claim should limit the scope of such claim in any way. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.
Claims
1-28. (canceled)
29. A computer-implemented method for simulating a plurality of devices, comprising:
- receiving, by one or more processors, one or more user inputs associated with the plurality of devices;
- generating, by the one or more processors, configuration data for the plurality of devices based on the one or more user inputs;
- automatically instantiating, by the one or more processors, the plurality of devices based on the configuration data;
- receiving, by the one or more processors, commands associated with the plurality of devices;
- automatically simulating, by the one or more processors, the plurality of devices based on the commands, to generate simulated device data; and
- providing, by the one or more processors, the simulated device data to a module for performance testing of at least a portion of the module based on the simulated device data.
30. The computer-implemented method of claim 29, wherein the plurality of devices comprises one or more of a sensor, an embedded device, a portable electronic device, and a data hub for receiving data from a device.
31. The computer-implemented method of claim 29, wherein the commands comprise requests for the simulated device data, and wherein automatically simulating the plurality of devices comprises executing the commands.
32. The computer-implemented method of claim 31, wherein the simulated device data comprises packetized data.
33. The computer-implemented method of claim 31, wherein the configuration data comprises information related to one or more of a format of the simulated device data, a rate at which the simulated device data is provided to the module, a range of values for the simulated device data, an operating parameter of at least one of the plurality of devices, and current device state data for at least one of the plurality of devices.
34. The computer-implemented method of claim 29, wherein the commands comprise one or more of a request to change an output frequency of the simulated device data and a custom command associated with at least one device of the plurality of devices.
35. The computer-implemented method of claim 29, wherein the configuration data is associated with at least one attribute of the plurality of devices.
36. The computer-implemented method of claim 35, wherein the configuration data comprises device profile information.
37. The computer-implemented method of claim 36, wherein the one or more user inputs are received at a graphical user interface, comprising at least one region associated with the device profile information and at least one region associated with attribute information.
38. The computer-implemented method of claim 37, wherein the device profile information comprises at least one of a device identifier indication, a profile identification number indication, a profile type indication, a profile name indication, a profile data range indication, a frequency of data indication, a format of data indication, and a battery life indication, and wherein the attribute information comprises at least one of an attribute name indication, an attribute type indication, a description indication, and a data range indication.
39. The computer-implemented method of claim 29, further comprising providing, by the one or more processors, the configuration data to the module to enable the module to receive the simulated device data.
40. The computer-implemented method of claim 29, wherein the simulated device data is provided to the module such that the module can process the simulated device date to provide an indicator of performance of the module.
41. The computer-implemented method of claim 29, wherein the module comprises a device abstraction layer or a business application.
42. A non-transitory computer-readable storage medium coupled to one or more processors and having instructions stored thereon which, when executed by the one or more processors, cause the one or more processors to perform operations for simulating a plurality of devices, the operations comprising:
- receiving one or more user inputs associated with the plurality of devices;
- generating configuration data for the plurality of devices based on the one or more user inputs;
- automatically instantiating the plurality of devices based on the configuration data;
- receiving commands associated with the plurality of devices;
- automatically simulating the plurality of devices based on the commands, to generate simulated device data; and
- providing the simulated device data to a module for performance testing of at least a portion of the module based on the simulated device data.
43. The non-transitory computer-readable storage medium of claim 42, wherein the plurality of devices comprises one or more of a sensor, an embedded device, a portable electronic device, and a data hub for receiving data from a device.
44. The non-transitory computer-readable storage medium of claim 42, wherein the commands comprise requests for the simulated device data, and wherein automatically simulating the plurality of devices comprises executing the commands.
45. The non-transitory computer-readable storage medium of claim 44, wherein the simulated device data comprises packetized data.
46. The non-transitory computer-readable storage medium of claim 44, wherein the configuration data comprises information related to one or more of a format of the simulated device data, a rate at which the simulated device data is provided to the module, a range of values for the simulated device data, an operating parameter of at least one of the plurality of devices, and current device state data for at least one of the plurality of devices.
47. The non-transitory computer-readable storage medium of claim 42, wherein the commands comprise one or more of a request to change an output frequency of the simulated device data and a custom command associated with at least one device of the plurality of devices.
48. The non-transitory computer-readable storage medium of claim 42, wherein the configuration data is associated with at least one attribute of the plurality of devices.
49. The non-transitory computer-readable storage medium of claim 48, wherein the configuration data comprises device profile information.
50. The non-transitory computer-readable storage medium of claim 49, wherein the one or more user inputs are received at a graphical user interface, comprising at least one region associated with the device profile information and at least one region associated with attribute information.
51. The non-transitory computer-readable storage medium of claim 50, wherein the device profile information comprises at least one of a device identifier indication, a profile identification number indication, a profile type indication, a profile name indication, a profile data range indication, a frequency of data indication, a format of data indication, and a battery life indication, and wherein the attribute information comprises at least one of an attribute name indication, an attribute type indication, a description indication, and a data range indication.
52. The non-transitory computer-readable storage medium of claim 42, wherein the operations further comprise providing the configuration data to the module to enable the module to receive the simulated device data.
53. The non-transitory computer-readable storage medium of claim 42, wherein the simulated device data is provided to the module such that the module can process the simulated device date to provide an indicator of performance of the module.
54. The non-transitory computer-readable storage medium of claim 42, wherein the module comprises a device abstraction layer or a business application.
55. A system, comprising:
- one or more processors; and
- a computer-readable storage device coupled to the one or more processors and having instructions stored thereon which, when executed by the one or more processors, cause the one or more processors to perform operations for simulating a plurality of devices, the operations comprising:
- receiving one or more user inputs associated with the plurality of devices;
- generating configuration data for the plurality of devices based on the one or more user inputs;
- automatically instantiating the plurality of devices based on the configuration data;
- receiving commands associated with the plurality of devices;
- automatically simulating the plurality of devices based on the commands, to generate simulated device data; and
- providing the simulated device data to a module for performance testing of at least a portion of the module based on the simulated device data.
56. The system of claim 55, wherein the plurality of devices comprises one or more of a sensor, an embedded device, a portable electronic device, and a data hub for receiving data from a device.
57. The system of claim 55, wherein the commands comprise requests for the simulated device data, and wherein automatically simulating the plurality of devices comprises executing the commands.
58. The system of claim 57, wherein the simulated device data comprises packetized data.
59. The system of claim 57, wherein the configuration data comprises information related to one or more of a format of the simulated device data, a rate at which the simulated device data is provided to the module, a range of values for the simulated device data, an operating parameter of at least one of the plurality of devices, and current device state data for at least one of the plurality of devices.
60. The system of claim 55, wherein the commands comprise one or more of a request to change an output frequency of the simulated device data and a custom command associated with at least one device of the plurality of devices.
61. The system of claim 55, wherein the configuration data is associated with at least one attribute of the plurality of devices.
62. The system of claim 61, wherein the configuration data comprises device profile information.
63. The system of claim 62, wherein the one or more user inputs are received at a graphical user interface, comprising at least one region associated with the device profile information and at least one region associated with attribute information.
64. The system of claim 63, wherein the device profile information comprises at least one of a device identifier indication, a profile identification number indication, a profile type indication, a profile name indication, a profile data range indication, a frequency of data indication, a format of data indication, and a battery life indication, and wherein the attribute information comprises at least one of an attribute name indication, an attribute type indication, a description indication, and a data range indication.
65. The system of claim 55, wherein the operations further comprise providing the configuration data to the module to enable the module to receive the simulated device data.
66. The system of claim 55, wherein the simulated device data is provided to the module such that the module can process the simulated device date to provide an indicator of performance of the module.
67. The system of claim 55, wherein the module comprises a device abstraction layer or a business application.
Type: Application
Filed: Jul 21, 2014
Publication Date: Nov 13, 2014
Inventors: Michael J. Blitz (San Francisco, CA), Jonathan Hsu (San Jose, CA), Sean Stauth (San Francisco, CA), Graeme D. MacDonald (San Francisco, CA)
Application Number: 14/336,878
International Classification: G06F 17/50 (20060101);