US20090327879A1 - Appliance development toolkit with editor to create usable network message data - Google Patents
Appliance development toolkit with editor to create usable network message data Download PDFInfo
- Publication number
- US20090327879A1 US20090327879A1 US12/556,617 US55661709A US2009327879A1 US 20090327879 A1 US20090327879 A1 US 20090327879A1 US 55661709 A US55661709 A US 55661709A US 2009327879 A1 US2009327879 A1 US 2009327879A1
- Authority
- US
- United States
- Prior art keywords
- development toolkit
- message
- editor
- appliance
- toolkit
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/2803—Home automation networks
- H04L12/2807—Exchanging configuration information on appliance services in a home automation network
- H04L12/2814—Exchanging control software or macros for controlling appliance services in a home automation network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/263—Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- 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
- H04L67/125—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/2803—Home automation networks
- H04L2012/2847—Home automation networks characterised by the type of home appliance used
- H04L2012/285—Generic home appliances, e.g. refrigerators
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S715/00—Data processing: presentation processing of document, operator interface processing, and screen saver display processing
- Y10S715/961—Operator interface with visual structure or function dictated by intended use
- Y10S715/965—Operator interface with visual structure or function dictated by intended use for process control and configuration
Definitions
- the invention relates to tools for editing software associated with the network messages.
- Household appliances typically comprise one or more components responsible for the electromechanical operations of the appliance.
- an oven can include an appliance management component having a printed circuit board (PCB) with memory, as well as a user-interface component, such as a control panel or keypad, for a user to issue commands to the oven.
- a washing machine can include an appliance management component, a user-interface component, and a motor control component that controls a motor of the washing machine.
- discrete circuits couple the internal components of an appliance, with each discrete circuit responsible for individual communication between related components.
- the circuits communicate with each other over an internal network that traditionally is implemented by hard-wired ribbon cables or other connectors or harnesses between the components.
- the hard-wired connectors form a closed system or network that is difficult or not possible to modify.
- the closed network relies on hard-coded or hard-wired network solutions, it is not practical to couple additional external components or additional internal components to the appliance to expand the capability or function of the appliance.
- the closed network cannot easily be adapted for communication with the additional external/internal components and therefore limits the potential of the appliance.
- service personnel can access the interior of an appliance and connect an external device to the internal network in order to modify the operation of or otherwise interact with the internal components of the appliance.
- scheduling appointments with service personnel can be inconvenient, and accessing the interior of the appliance can require the use of specialized tools and can potentially damage the appliance in the process.
- the user of the appliance is unable to thoroughly personalize the operation of the appliance in order to tailor the appliance to his or her particular needs.
- a development toolkit for creating a message data payload for use on a communications network having rules for data representation.
- the development toolkit includes an editor configured to create a first portion of a message data payload having usable data for transmission over the communications network, and to create a second portion of the message data payload having information to describe the usable data.
- the editor includes constraints that limit the manner in which creating the first and second portions and the association occurs. The constraints are defined in part by the rules for data representation.
- the toolkit also includes a user interface to display a visualization of the message data payload from the editor. With this configuration, a user can conveniently create a message data payload for immediate use and see a graphical representation of the message data payload as it is created.
- FIG. 1 is a schematic diagram showing the environment of an appliance development toolkit according to the invention.
- FIG. 2 is a schematic diagram showing elements of an appliance development toolkit according to the invention.
- FIG. 3 is a schematic diagram showing relationships among elements of the system configurator in the appliance development toolkit of FIGS. 1 and 2 .
- FIG. 4 is a diagram showing the functional relationship among some of the elements of FIG. 3 .
- FIG. 5 is a screen shot of an editor and a content viewer of an appliance development toolkit according to the invention.
- FIG. 6A shows a first embodiment of a user interface as a result of using an appliance development toolkit according to the invention.
- FIG. 6B shows a second embodiment of a user interface as a result of using an appliance development toolkit according to the invention.
- FIG. 6C shows a third embodiment of a user interface as a result of using an appliance development toolkit according to the invention.
- FIG. 7 is a screen shot of two editor windows in an appliance development toolkit according to the invention and a cycle structure for an appliance.
- FIG. 8 is a schematic diagram showing the flow of information between an appliance and the system configurator in an appliance development toolkit according to the invention.
- FIG. 9 is a schematic diagram showing the relationships of the control structure of an appliance to the system configurator of FIG. 8 .
- FIG. 10 is a screen shot of an editor in an appliance development toolkit according to the invention with a sequence model instance for a fault tree being created.
- FIG. 10A is a screen shot of an attribute editor in an appliance development toolkit according to the invention showing the creation of a portion of the instance of FIG. 10 .
- FIG. 11 is a screen shot of an editor in an appliance development toolkit according to the invention with a sequence model instance for a fault tree being created.
- FIG. 11A is a screen shot of a viewer in an appliance development toolkit according to the invention showing how the content resulting from the editor will appear.
- FIG. 12 is a screen shot of the editor of FIGS. 10 and 11 , and a screen shot of a graphical user interface in an appliance displaying a portion of the content from the editor.
- FIG. 13A is a screen shot of the editor of FIGS. 10 and 11 , and a screen shot of a graphical user interface in an appliance displaying another portion of the content from the editor in a query.
- FIG. 13B is a screen shot of the editor of FIGS. 10 and 11 , and a screen shot of a graphical user interface in an appliance displaying related portion of the content from the editor responsive to the query of FIG. 13A .
- FIG. 14 is a screen shot of a viewer in an appliance development toolkit according to the invention showing a flow chart of the content in FIGS. 12-13B .
- FIG. 15 illustrates an interaction between the content of FIGS. 12-13B and a user.
- FIG. 16 is a screen shot of an editor in an appliance development toolkit according to the invention with a message data payload model instance being created
- FIG. 17 is a schematic diagram showing the use of the message data payload model instance of FIG. 16 in an appliance.
- FIG. 18 is a screen shot of a viewer in a target application showing the message traffic of the message data payload model instance of FIG. 16
- FIG. 19 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing a step in the creation of a message data payload.
- FIG. 20 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing another step in the creation of a message data payload.
- FIG. 21 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing another step in the creation of a message data payload.
- FIG. 22 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing another step in the creation of a message data payload.
- FIG. 23 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing another step in the creation of a message data payload.
- FIG. 24 is a schematic diagram showing a binding between appliance user domain data and control system domain data created by an editor in an appliance development toolkit according to the invention.
- FIG. 25 is a schematic diagram showing use of a constrained appliance development toolkit according to the invention.
- FIG. 26 is a schematic diagram showing a constrained appliance development toolkit according to the invention.
- FIG. 27 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing aspects of a message data payload.
- FIG. 28 is a schematic diagram showing elements of an appliance development toolkit according to the invention and an appliance that uses content from the appliance development toolkit in creating themes and animations.
- FIG. 29 is a schematic diagram showing multiple bindings created by an appliance development toolkit according to the invention for user interface controls in an appliance.
- FIG. 30 is a schematic diagram showing the message structure of forking elements in an appliance development toolkit according to the invention.
- FIG. 31 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing a step in the creation of a message data payload with a forking element.
- FIG. 32 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing another step in the creation of a message data payload with a forking element.
- FIG. 33 is a screen shot of a model instance editor in an appliance development toolkit according to the invention with a properties viewer and information about it.
- FIG. 34 is a screen shot of a model instance editor in an appliance development toolkit according to the invention with information about it.
- FIG. 35 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing a step in the creation of a message data payload using holders.
- FIG. 36 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing another step in the creation of a message data payload using holders.
- FIG. 37 is a schematic diagram showing the use of holders in different a variable model according to the invention.
- FIG. 38 is a schematic diagram showing a first scenario showing the relationships of variables.
- FIG. 39 is a schematic diagram showing a second scenario showing the use and relationships of holders.
- FIG. 40 is a schematic diagram showing a third scenario showing the use and relationships of holders.
- FIG. 41 is a schematic diagram showing the use of paired elements in stain treatment in an appliance according to the invention.
- FIG. 42 is a schematic diagram showing the use of development toolkits according to the invention with an appliance in the creation of cycle instances for the appliance.
- FIG. 43 is a schematic diagram of a substitution model instance created according to the invention.
- FIG. 44 is a schematic diagram showing the relationship between a cycle outcome model instance and sequence model instance according to the invention.
- FIG. 45 is a schematic diagram showing the relationship among instance variants, user interface controls, and models according to the invention.
- FIG. 46 is a schematic diagram showing a dynamic rendering of a graphical user interface in response an appliance receiving data from a sender according to the invention.
- FIG. 47 is a schematic diagram showing the use of a test engine to diagnose an appliance according to the invention.
- FIG. 48 is a schematic diagram showing the use of sequence model instances and cycle outcome model instances in meal planning according to the invention.
- FIG. 48A illustrates a sequence model instance for recipes in FIG. 48 .
- FIG. 48B illustrates a sequence model instance for substitutions in FIG. 48 .
- an appliance development toolkit 10 which will be referred to hereinafter as the toolkit 10 , is configured to enable the creation and modification of content 20 to affect and/or effect operation of one or more components associated with an appliance 12 so as to affect and/or effect interaction between a user 14 and the appliance 12 and/or a cycle of operation of the appliance 12 .
- the toolkit 10 can be used with different appliances 12 without requiring the recoding of software of the toolkit 10 .
- the user 14 can be a consumer, a salesperson, a manufacturer 14 A (see FIG. 25 ), a product engineer, or any other individual capable of using the appliance 12 and/or the toolkit 10 .
- the appliance 12 can be any suitable appliance, such as a household appliance.
- household appliances include, but are not limited to, clothes washing machines, clothes dryers, ovens, dishwashers, refrigerators, freezers, microwave ovens, trash compactors, and countertop appliances, such as waffle makers, toasters, blenders, mixers, food processors, coffee makers, and the like.
- the appliance 12 can be configured to perform a cycle of operation to complete a physical domestic operation on an article.
- the physical domestic operations include a food preparation operation, a food preservation operation, a fluid treatment operation, a cleaning operation, a personal care operation, a fabric treatment operation, an air treatment operation, and a hard surface treatment operation.
- the air treatment operation can comprise, for example, air purification, air humidification, air dehumidification, air heating, and air cooling.
- the food preparation operation can comprise, for example, food cleaning, food chopping, food mixing, food heating, food peeling, and food cooling.
- the food preservation operation can comprise, for example, food cooling, food freezing, and food storage in a specialized atmosphere.
- the fluid treatment operation can comprise, for example, fluid heating, fluid boiling, fluid cooling, fluid freezing, fluid mixing, fluid whipping, fluid dispensing, fluid filtering, and fluid separation.
- the cleaning operation can comprise, for example, dishwashing, fabric washing, fabric treatment, fabric drying, hard surface cleaning, hard surface treatment, hard surface drying, carpet cleaning, carpet treatment, and carpet drying.
- the personal care operation can comprise, for example, hair treatment, nail treatment, body massaging, teeth cleaning, body cleaning, and shaving.
- the components associated with the appliance 12 can include any devices, parts, software, and the like that participate in the operation of the appliance 12 , either directly or indirectly. Some of the components have a corresponding controller (main controller, motor controller, user interface, etc.), which can be a simple microprocessor mounted on a printed circuit board (a control board), while other components can have no controller.
- the components can comprise one or more devices that are controlled by the controller. Typically, the controller components in cooperation, either directly or indirectly, through other components, control the operation of all of the components and the associated devices to implement a cycle of operation for the appliance 12 .
- the one or more components affected/effected by the toolkit 10 can comprise another appliance 12 , one or more components on the appliance 12 or in another appliance 12 , or an accessory device or component thereof for use with the appliance 12 .
- another appliance 12 one or more components on the appliance 12 or in another appliance 12
- an accessory device or component thereof for use with the appliance 12 .
- the appliance 12 can be communicatively coupled to the toolkit 10 via a communications network 18 existing at least partially within the appliance 12 and/or at least partially external to the appliance 12 as appropriate.
- the communications network 18 comprises all of the coupling elements communicatively linking the various parts of the toolkit 10 and the appliance 12 , as well as any coupling elements communicatively linking additional devices or resources to the toolkit 10 and/or appliance 12 (e.g. a coupling element connecting the appliance 12 with an accessory).
- the communications network 18 can comprise an internal communications network of the appliance 12 enabling communication between the various components within the appliance 12 , an external communications network connected to the toolkit 10 , and a coupler for communicatively coupling the two networks.
- the coupler can comprise a communication driver configured to establish a communications link between the toolkit 10 and the appliance 12 .
- the communication driver can be a smart driver 54 having expanded functionality enabling the smart driver 54 to create, modify, and/or interpret content 20 .
- the communications network 18 can further comprises an additional communications connection between the appliance 12 and/or toolkit 10 and one or more additional devices, such as the accessory, an external network, a second appliance 12 or accessory, or one or more components thereof.
- the additional communications connection can be to the Internet.
- the communications network 18 can comprise, at least in part, a smart coupler 56 as is disclosed in International Patent Application Publication No. 2009/058770, which is incorporated by reference herein in its entirety.
- the smart coupler 56 can incorporate the communications driver, which can be the smart driver 54 .
- the toolkit 10 enables a user 14 to create content 20 that can be provided to or otherwise obtained by one or more content targets 22 to affect the functionalities of the appliance 12 .
- Content 20 can be formatted as at least one of a relational database, XML document, CSV file, binary file, data collection, memory structure, object structure, object graph, object tree, memory heap, machine code, source code, and text file, images, text, data elements, or other type of information associated with the toolkit 10 that can be interpreted, converted, propagated, created, modified, or otherwise used for some purpose by the toolkit 10 , the appliance 12 , or an associated device or component.
- Examples of content 20 include but are not limited to a cycle structure, a custom cycle, a branded cycle, user-attached data about appliance control functionality, a fault tree, a diagnostic test, an appliance user interface 64 (see FIG. 6A for example), appliance network communication, routing tables for appliance network communication, stain treatment, cooking, cooking algorithms, cooking vessels, meal preparation, dish preparation, recipes, units conversion, ingredients, ingredient substitution, dietary needs, appliance use and care, appliance FAQ, consumables meta data, and information associated with consumable, a cycle definition, cycle structure information, a paired element, source identification information, a message data payload structure, an electronic document that is human-readable, machine-readable, a communications specification/protocol, and information about a consumable.
- Appliance user domain data 180 includes information related to a user's 14 use of an appliance 12 . It includes such things as washing and cooking preferences, recipes, user demographics, choices and selections that user makes, and the like.
- Control system domain data 182 includes information related to the control and operation of an appliance. It includes such things as cycle structures, cycle definitions, message payloads, communication protocols, and the like.
- Source identification domain data 186 includes information related to the sources of goods and services and includes things such as trademarks, brand names, service marks, jingles, and the like.
- User interface domain data includes information related to interacting with a user interface 64 , which is preferably a graphical user interface 68 . It includes such things as widgets, animation definitions, buttons, bars, sliders, knobs, and the like, whether real or virtual.
- a content target 22 comprises any entity that receives content 20 .
- Non-limiting examples of different content targets 22 include the toolkit 10 , the appliance 12 , the communications network 18 , a system configurator 28 , editors 30 and 32 , converters 34 , viewers 38 , an appliance control system 90 , a user interface 64 and graphical user interface 68 , a web browser or web page, a personal computer 70 , an application 50 , a computer program, a handheld device, a remote client 72 such as a cell phone, a printer, and any hardware or software components or devices associated therewith or included therein.
- the toolkit 10 comprises system configurator 28 having a model editor 30 , a model instance editor 32 , and one or more converters 34 configured to enable a user 14 to create, modify, and/or propagate content 20 , such as models 40 , model instances 42 , and model instance variants 44 , respectively.
- the toolkit 10 can further comprise one or more viewers 38 that function as content targets 22 and provide a visual display corresponding to the received content 20 .
- viewers 38 can produce one or more of a variety of different displays or views ranging from schematic diagrams to code to images.
- the communications network 18 is configured to establish a communicative link between the system configurator 28 and at least one component associated with the appliance 12 .
- a model instance editor 32 that receives content 20 in the form of a model instance 42 can provide a visual diagram of the model instance 42 and enable the user 14 to edit the model instance 42 .
- the appliance 12 can be enabled with new operational capabilities, such as new cycles of operation.
- the appliance 12 can receive the model instance 42 from the model instance editor 32 and provide the model instance 42 to a graphical user interface 68 of the appliance 12 in order to cause the graphical user interface 68 to display certain images and text.
- Converters 34 can enable the flexible usage of content 20 by converting data elements or content 20 created by one of the editors 30 , 32 into content 20 of a form suitable for use by a particular content target 22 .
- a type of converter 34 called a model instance converter is configured to produce a model instance variant 44 based on a model instance 42 .
- Another type of converter 34 called a simple converter can simply propagate data elements or a file stored in memory and comprising data elements created by the toolkit 10 without having to substantially convert the data elements.
- Simple converters are best used when the content target 22 can operate directly on the data elements created by editors 30 , 32 , such as a content target 22 in the form of a viewer 38 included in the system configurator 28 .
- Converters 34 are typically used to enable the transfer of data elements amongst the various entities of the toolkit 10 and appliance 12 .
- a converter 34 can potentially also act as an exporter, which functions similarly to the propagating function described previously.
- the toolkit 10 can also include a converter 34 in the form of an encoder to encode content 20 onto a consumable information holder or other component.
- the system configurator 28 can optionally further comprise one or more applications 50 , which can also include one or more viewers 38 and can use content 20 provided by the system configurator 28 .
- One or more applications 50 can also be communicatively coupled to but not included within the system configurator 28 .
- Content 20 provided by the system configurator 28 can optionally be supplemented by content 20 provided by or created using resources 46 , which can include any entities capable of producing content 20 or being used by another entity to generate content 20 .
- a link can be established between the system configurator 28 and a content target simulator 52 ( FIG. 2 ).
- the content target simulator 52 typically comprises software and is intended to provide a realistic simulation of the operation of the appliance 12 .
- the toolkit 10 thus comprises software configured to enable a user 14 to effectively command operation of the appliance 12 or of an appliance simulator and to create data or data elements for display to a user 14 as content 20 in a viewer 38 of the toolkit 10 based on the operation of the appliance 12 .
- the user 14 can observe the content 20 in the viewer 38 and create or modify the content 20 using the toolkit 10 in response to communication over the communications network 18 and link.
- a model 40 is a very robust, thorough, and thoroughly-vetted collection of data elements or structures equivalent to a UML class diagram.
- a model 40 consists of a plurality of class definitions where each class has a plurality of properties and each class can reference other classes a minimum and maximum number of times, which may be infinite. Classes can reference other classes via a named property. Classes can also, in effect, serve as extensions of other classes in order to inherit their functionalities, property definitions, and references. Classes can implement interfaces, which are definitions of collections of functions each having a set of arguments, wherein each argument can be set to one of a set of valid values.
- the purpose of the class definition is to provide rules or constraints for creating model instances 42 and model instance variants 44 , which are, in essence, runtime instances of the model 40 .
- the toolkit 10 in effect, enables users 14 to create runtime instances of a class diagram and is configured to create, manage, and/or edit models 40 , model instances 42 , and model instance variants 44 , as well as data elements or information associated therewith, that are configured to effect the functionality of one or more components associated with the appliance 12 .
- the model editor 40 is typically used by a user 14 associated with the manufacturer 14 A of the toolkit 10 or of the appliance 12 , such as an engineer or software developer, to refine and constrain models 40 prior to the models 40 being made available to users 14 external to the manufacturer 14 A.
- The provides the manufacturer 14 A with the ability to control the specific toolkit 10 functionalities available to users 14 outside the company, and, in doing so, provides the ability for the manufacturer 14 A to offer and sell licenses for the toolkit 10 that enable users 14 access to only certain levels of functionality.
- Each particular model 40 in essence is a template or a plurality of constraints defining at least part of the functionality of the system configurator 28 .
- Each model 40 enables at least one model instance editor 42 and defines the functionalities of the model instance editor 42 .
- n models 40 can be used with the toolkit 10 to generate n instances of data elements derived therefrom.
- An exemplary data element can comprise at least one representation of a portion of a message data payload to be sent across the communications network 18 .
- the model instance editor 42 creates instances of data elements that comprise a model instance 42 and that are related to appliance 12 functionality and derived from the appliance user domain data 180 model.
- the model instance editor 42 is configured at least in part by the appliance user domain data 180 model irrespective of the appliance 12 so that the toolkit 10 can be used with different appliances 12 .
- Validation rules which essentially comprise a communications protocol, for the content 20 can be derived from the appliance user domain model.
- the model instance 42 can comprise a hierarchical data structure, a graph, a fault tree, or a relational database and can be configured or developed by a user 14 interacting with the user interface 64 .
- models 40 can be grouped into a variety of types based on the function of the model 40 and model instances 42 created therefrom.
- a user interface domain data model 40 A can be used to create user interface domain data model instances 42 A, such as that illustrated in FIGS. 5 and 7 , which are used to control the functionality of a user interface 64 of the appliance 12 , which can be a graphical user interface 68 .
- the user interface domain data model instance 42 A includes user interface control objects 60 A-C displayed in the model instance editor 32 and corresponding to each of three user interface controls 62 A-C to be displayed on the user interface 64 of the appliance 12 .
- the user interface control objects 60 A-C are converted or propagated by a converter 34 included in the system configurator 28 into content 20 , which is sent to a content target 22 of the system configurator 28 , the viewer 38 .
- the viewer 38 then creates a rendering of the graphical user interface 68 as it would appear on the appliance 12 once the user interface domain data model instance 42 A has been sent to the appliance 12 as content 20 .
- This simulation enables the user 14 to observe and, if desired, modify the appearance of the graphical user interface 68 without having to repeatedly reprogram the appliance 12 itself. As illustrated in FIGS.
- the user interface domain data model instance 42 A can also be sent to other content targets 22 , such as a personal computer 70 or a remote client 72 , as content 20 to enable the user 14 to visualize the user interface 64 and tailor the user interface 64 to his or her particular needs and tastes.
- content targets 22 such as a personal computer 70 or a remote client 72 , as content 20 to enable the user 14 to visualize the user interface 64 and tailor the user interface 64 to his or her particular needs and tastes.
- a sequence model 40 B as shown in FIG. 7 is another type of model 40 that can be used to create cycles, fault trees, recipes, and tests (see also FIG. 47 ). As described herein, the same sequence model 40 B can be used to generate a variety of different types of sequence model instances (e.g. instances for a cycle, a fault tree, a recipe, or a test). In some alternative embodiments, multiple sequence models can be required to generate the different types of sequence model instances.
- a sequence model instance for a cycle 42 B that is derived from the sequence model 40 B is illustrated as a content target 22 of the user interface domain data model instance 42 A.
- an object 60 A of the sequence model instance for a cycle 42 B corresponding to a user interface control 62 A for dispensing ice is propagated or, if necessary, converted by a converter 34 associated with the user interface domain data model instance 42 A or sequence model instance for a cycle 42 B into the appropriate format and is provided to the sequence model instance for a cycle 42 B.
- Objects can be composed of a plurality of other objects according to the objects field definitions. If an object comprises a method which has executable software to set the value of a field defined to hold an object, then that object can be reconfigured by changing the value of the a field from a first object to a second object. This reconfiguration can then result in a different composite or overall appliance control system 90 behavior.
- an appliance control system 90 whose behavior can be changed by changing the values in a first objects field to a third object from a second object.
- a cycle accessory could use this technique to change a cycle structure 80 .
- both a consumables reader and a recipe book wand could use these techniques to customize the behavior of the appliance control system 90 according to appliance user domain data 180 , source identification domain data 186 , user interface domain data the data about the cycle, data about a consumable, and the like.
- FIG. 7 illustrates several ways that the appliance 12 can obtain information necessary to carry out appliance 12 operation, including information about cycles of operation, and generate a cycle structure to perform a cycle of operation.
- cycle structure information 82 represents information about or associated with a cycle structure 80 to be produced by the cycle engine 88 .
- Cycle structure information 82 can include modifications to be made to an existing cycle structure 80 , information to be used to create a new cycle structure 80 , or a cycle structure requiring conversion or some sort of manipulation into a cycle structure 80 suitable for use with the particular appliance 12 .
- Cycle structure 80 represents a set of instructions for use by the appliance control system 90 of the appliance 12 for carrying out a cycle of operation.
- An exemplary appliance control system 90 is illustrated in FIG. 9 and is described in detail by International Patent Application Publication No.
- the cycle structure 80 can be created by using messaging for communicating the cycle structure information 82 to the cycle architecture 86 via the communications network 18 , at which point the cycle engine 88 can discover information for creating or modifying cycle structure 80 for use by the appliance control system 90 .
- the cycle engine 88 then proceeds to build a new or modified functional cycle structure 80 .
- all messages can be routed through an embedded virtual router (EVR) 92 , which results in the cycle engine 88 using its own configuration API for building the new or modified cycle structure 80 .
- EVR embedded virtual router
- An arbitrary software component 94 in communication with the cycle engine 88 or in communication with the cycle architecture 86 can also be used to create a new or modified cycle structure 80 .
- the arbitrary software component 94 can reside in a variety of locations with respect to a controller component comprising the cycle architecture 86 .
- all messages between the arbitrary software component 94 and the cycle architecture 86 can be optionally routed through an EVR 92 across the communications network 18 .
- the cycle architecture 86 can optionally communicate with the appliance control system 90 through an EVR 92 .
- an operational cycle accessory such as the toolkit 10
- the operational cycle accessory would typically include a combination of software and data to accomplish the configuration of the cycle architecture 86 .
- the aforementioned cycle architecture might send a discovery message seeking identification of all sources of the cycle structure 80 .
- Sources of the cycle structure may be in ROM, Flash, EE Prom, an operational cycle component, and/or an external source connected to the communications network 18 .
- the converters 34 associated with the cycle structure information 82 and the cycle structure 80 read the sequence model instance for a cycle 42 B
- the converter 34 associated with the cycle structure information converts the sequence model instance for a cycle 42 B into cycle structure information 82
- the converter 34 associated with the cycle structure converts the sequence model instance for a cycle 42 B directly into a cycle structure 80
- Both the cycle structure information 82 and the cycle structure 80 generated by the associated converters 34 are generated based on the same content 20 comprising the sequence model instance for a cycle 42 B.
- a first portion of the cycle structure information 82 is compiled and a second portion is made available at runtime.
- the second portion can include a plurality of cycle structure data, either in direct or indirect form, which can be combined with the first portion such that the cycle engine 88 operates on the aggregate of the first and second portions to create operational cycle execution software.
- the second portion can represent differences in the first portion where differences may be additions, deletions, or modifications to elements, their relative orders, or their relative relationships within the cycle structure 80 .
- the cycle engine 88 can appropriately apply the differences represented in the second portion by looking at the identifiers of the elements of the first portion of the cycle structure information 82 and the identifiers of the elements of the second portion of the cycle structure information 82 .
- the advantage of this embodiment of a cycle architecture 86 is that changes to the aggregate cycle structure 80 can be made while preserving the first portion such that subsequent corruption or absence of the second portion would not effect the integrity of the first portion, thus enabling the operation cycle execution software to revert to compiled default state, such as might be supplied at the factory.
- a second advantage of this embodiment is that specialized variants of the first portion can be designed which can accommodate the constraints presented by the appliance control system 90 and more specifically the controlling components of the appliance 12 such as limited memory and also provide capability for receiving and adapting to a second portion, providing flexibility and configurability within the constraints for the cost of the specialized variants. For appliances 12 , this can be an important requirement in some cases.
- an operation cycle accessory when disconnected from the cycle engine 88 , the data of the second portion can be optionally removed by the cycle engine 88 , causing a reversion to the factory default state.
- This is a form of anti-piracy protection in that the operation cycle accessory must be present for the additional functionality represented by the accessory to be available to the appliance 12 .
- the connection between the appliance 12 and the operation cycle accessory can include a transfer of the first portion into a memory in the appliance 12 . In this case, additional operation cycles can be retained without the permanent presence of the operational cycle accessory.
- an operation cycle accessory can be virtual in that the software and data and ability to communicate with the cycle engine 88 can reside on an external device connected to the cycle engine 88 via communications network 18 , and not physically attached to the containing appliance 12 .
- an operational cycle component can have other elements that are not the aforementioned operation cycles or constituent data and complied portions.
- the operational cycle component can include software code to configure a cycle engine 88 for communication and other functions or code to put software architecture into an alternate mode for the purpose of diagnostics or changing memory.
- An appliance cycle of operation performed by the appliance control system 90 can be optimized by information associated with consumables on which the appliance is operating.
- the cycle structure 80 could be built specifically to accommodate some properties or attributes of the consumable or to accommodate some properties or attributes of a consumable holder.
- the body or bodies that comprise information, identifiers of functionalities, properties, attributes, and property and attribute values related to consumables can be referred to as sources of information about a consumable or “consumable information holders.” Examples of consumable information holders include the consumable itself, a data pod, the consumable holder, a user interface, and a tag.
- the consumable holder can be a sensing consumable holder that might use a lid sensor, for example, for sensing attributes about the consumable contained therein.
- a lid with an amount sensor could be configured with an analog circuit coupled to the appliance 12 to provide a level or volume feedback so that the appliance 12 can dispense exactly 2 ounces rather than a time-based approximation.
- Information associated with a consumable can include amount and/or composition or other attributes that would characterize the magnitude of the usefulness of the consumable.
- the cycle architecture 86 may adapt itself based on the information. For example, if the consumable were a dishwashing rinse aid and the consumable holder had only 90% of the standard dose, the cycle architecture 86 might adapt itself to this condition by increasing the time of the rinse phase to compensate for the lack of rinse aid.
- Information associated with a consumable can also include parameters of an operating cycle such as personal preferences of a user 14 (e.g., doneness or crispiness preferences), and data about the consumable holder, the appliance 12 , or other accessories or components thereof.
- the appliance control system 90 may provide information to the cycle architecture 86 about process variables like soil level, load size, soil type, etc. Based on this information associated with a consumable, including the process variable information, the cycle architecture 86 or an arbitrary software component 94 in conjunction with a cycle engine 88 can reconfigure the cycle structure 80 to adapt to the process variable information.
- the consumable holder may comprise the arbitrary software component 94 and be able to reconfigure the cycle structure 80 to adapt to the process variable information.
- Reconfiguration can be accomplished in at least two ways. In one way, the arbitrary software component 94 can read the cycle structure 80 and communicate with the cycle engine 88 . In a second way, an arbitrary software component 94 can be preconfigured and communicate that configuration to or instruct the cycle engine 88 about the configuration.
- commands associated with an operating cycle is a collection of key value pairs.
- Keys comprise parameter names having a meaning, wherein the meaning is known by the cycle engine 88 such that values associated with the keys are thereby associated with the meanings. This enables the values to be used in the contexts of the meanings to modify and/or control the cycle of operation of the appliance 12 .
- commands associated with an operating cycle is a byte array representing a message packet for a network.
- the byte array could be arranged according to the packet definition disclosed in WO2006135726 comprising a functional identifier, an op code, and a message data payload, wherein the identifier and op code relate to an executable function or method implemented by the cycle engine 88 and or cycle engine API. Further, the arguments or parameters of the function or method correspond to the data elements contained in the payload of the message packet.
- a consumable holder therefore, can contain all the functionality of and participate in all the embodiments that an operational cycle accessory in communication with an appliance 12 having a cycle architecture 86 can. Therefore in one embodiment, a consumable holder is an operation cycle accessory that further physically contains and can also further be enabled to directly actuate the introduction of a consumable into an appliance 12 .
- content 20 can be derived from or provided by components or resources 46 outside the appliance 12 (external content 20 ) or from memory or other information contained within the appliance 12 (internal content 20 ) and acquired by a content 20 acquisitioner 102 .
- Appliance software framework 104 which includes the cycle architecture 86 of FIG. 7 , receives the content 20 and creates appliance control functionality 100 .
- the appliance control functionality 100 provides and controls the user interface 64 and user interaction, as well as provides and controls the appliance control system 90 .
- FIG. 9 also illustrates the appliance control system 90 disclosed in International Patent Application Publication No. 2006/135758 and further includes the system configurator 28 for managing the functionality thereof.
- sequence model 40 B can also be used to generate a sequence model instance for a fault tree 42 C.
- Appliances 12 are often diagnosed and serviced using an appliance fault tree 110 , and the sequence model instance for a fault tree 42 C serves to present a user 14 with various displays or views on the user interface 64 informing the user 14 of possible problems and solutions associated with the appliance 12 .
- the initial step of an appliance fault tree 110 will normally be associated with a symptom of failure or state of the appliance 12 .
- the exemplary initial step is performed upon determination of a state of the appliance 12 in which the user 14 is experiencing slow or no water dispensing.
- Each step of the appliance fault tree 110 including the initial step can have one or more associated actions.
- Actions can be various tasks or checks performed at each step.
- Exemplary actions can comprise, but are not limited to, taking a measurement, asking a question, requesting user input, describing an observation, and the like.
- the exemplary action associated with the initial step is to ask a question, “Is the refrigerator connected to a water supply?”
- the action can also comprise obtaining the answer, which can be “Yes” or “No.”
- Transitions are paths to other steps in the fault tree 110 and that are normally conditional on the result of a given step or action.
- an action can be performed comprising asking a question regarding operation of the appliance 12 , and the question can be presented on the user interface 64 .
- the sequence model instance for a fault tree 42 C will perform a transition to another step in the appliance fault tree 110 .
- each question will also have corresponding content 20 that is displayed on the user interface 64 .
- question-based content 20 will include buttons or other user interface controls 62 D, 62 E that will enable the user 14 to input an answer to the question.
- the appliance 12 can automatically determine the answer to the question using various components, such as sensors.
- an answer can be obtained either via user interaction with the appliance 12 via the user interface controls 62 , or an associated device, or automatically by the components of the appliance 12 or an associated device.
- the appliance fault tree 110 can transition to the next step.
- the question and answer function as arguments that, in combination, form a conditional statement in the appliance fault tree 110 .
- the specific steps, actions, and transitions are performed based on whether the various conditional statements in the appliance fault tree 110 are true or false. If a conditional statement is false, no transition will occur, and the appliance fault tree 110 will proceed in order. If a conditional statement is true, then a transition can be performed, which can act as a path to a particular step, action, and/or transition. In some cases, the action can be displaying a solution on the user interface 64 .
- an answer determination attribute editor 120 which is also a component of the model instance editor 32 , can be used to edit the content 20 displayed to the user 14 at a given transition corresponding to a given question and answer conditional statement.
- the answer determination attribute editor 120 is illustrated as having a number of well-known elements frequently included in computer-based editing applications, such as clickable buttons 122 , a display window or viewer 38 , and a text entry box 124 .
- the sequence model instance for a fault tree 42 C can also be used to present a use and care guide 130 to the user 14 via the user interface 64 of the appliance 12 , which can comprise the GUI 68 .
- Content 20 comprising text to be displayed to the user 14 can be created using a document model instance 42 G ( FIG. 43 ) for a use and care guide 130 , which specifies content 20 can be displayed on the user interface 64 that enables a user 14 to select a symptom 132 included in the use and care guide 130 .
- the selection of a symptom 132 can automatically bias the user 14 to an entry or starting point in the sequence model instance for a fault tree 42 C so that the user 14 does not have to waste time looking through irrelevant symptoms.
- a given appliance 12 can have more than one fault tree 110 associated with it.
- a transition is not limited to transitioning to a sequential step within the same fault tree 110 . For example, a transition from a first step on a fault tree 110 can lead to a second step on another fault tree 110 .
- the fault tree 110 and/or use and care guide 130 provided by the sequence model instance for a fault tree 42 C can also be presented in a viewer 38 as content 20 in the form of a diagram 140 as shown in FIGS. 14 and 15 .
- the user 14 can troubleshoot problems by simply using a content target 22 capable of presenting the content 20 .
- a user 14 can use the personal computer 70 to view a web page including the information, or the user can use a printer 142 to print out a copy of the diagram 140 .
- the sequence model instance for a fault tree 42 C can be used to diagnose problems and potentially find a solution without requiring a visit from a serviceperson.
- a message data payload model instance 42 D is used to manage message data payloads 150 comprising a first portion 152 having usable data and a second portion 154 having information to describe the usable data.
- the first and second portions 152 , 154 can comprise an ordered collection of message elements 156 or at least one message element 156 .
- One of the first and second portions 152 , 154 can have a direct or indirect reference to the other of the first and second portions 152 , 154 , which can effectively bind the portions.
- the constraints defined by the model 40 can be used within the model instance editor 32 to create the association between the first and second portions 152 , 154 .
- Various message elements 156 can be compiled to create a portion 152 , 154 using the model instance editor 32 during creation of the message data payload 150 and can comprise meaningful text describing the meaning of the message element 156 .
- Usable data from the communications network 18 can be combined with non-usable data describing the usable data wherein the user 14 can understand the meaning of the usable data.
- a viewer 38 Based on the message data payload model instance 42 D and the properties 158 thereof, a viewer 38 can display a complete specification 160 that updates in real time as the user 14 edits the message data payload model instance 42 D and properties thereof.
- FIGS. 16-18 show the creation and advantages of useable data in the inventive appliance development toolkit 10 .
- the system configurator 28 displays the message data model instance 42 D in the model instance editor 32 , a viewer 38 showing properties 158 , and a viewer 38 showing the specification 160 .
- Elements and choices of a command structure or sequence are created in the model instance editor 32 as an instance of a message data payload 150 .
- a first portion 152 of a message element 156 comprises useable data and is set in byte 1 .
- a second portion 154 identifies the first portion 152 and is set in thus example in byte 0 .
- the model instance editor 32 can have constraints that limit or guide what a use can do in creating message payloads 150 . In any event, the model instance editor 32 creates an association between the first and second portions 152 , 154 where rules for data representation provided by the communications network 18 over which the message payload 150 is to be sent provide the constraints.
- a user interface 64 or viewer 3 can display a visualization of the message data payload 150 from the model instance editor 32 so that a user 14 can conveniently create the message data payload 150 for immediate use and see a graphical representation of the message data payload 150 as it is created.
- An example of that display is seen in FIGS. 17 and 18 .
- a viewer associated with an application 50 can display relevant data including the identifiers (second portion). As shown in FIG.
- a specialized viewer 38 associated with an application 50 or, alternatively, incorporated directly into the system configurator 28 can also be associated with a command generator 170 such that the associated viewer 38 displays the various message elements 156 of the message data payload 150 and the command generator 170 enables the user 14 to define and initiate the sending of a message data payload 150 to affect the operation of the appliance 12 .
- the command generator 17 can include one or more buttons 122 for initiating the sending of a defined message data payload 150 .
- FIGS. 19-23 show in steps the creation of a message data payload model instance 42 D using variables, values, and value holders, which will be described in more detail hereinafter in FIG. 37 . See the description of holders, infra.
- FIG. 20 shows the use of menus 174 and forms 176 for guiding or limiting a user 14 in selecting and inputting information according to the constraints.
- An error message 172 can be displayed if a property 158 or parameter associated therewith is incorrect or improper according to the constraints.
- a model instance editor 32 which includes constraints as will be discussed in more detail hereinafter, is constrained by a model 40 . In FIG.
- an API object has been selected and the user 14 has right clicked the object, bringing up menu 174 having an “Insert New” feature.
- an API is allowed to have a minimum of zero relationships with a message data payload 150 and a maximum of n or infinite relationships with a message data payload 150 . Therefore, if the user selects the “Insert New” item on the menu 174 , a sub-menu (not shown) or form 176 can appear, enabling the user 14 to choose to create a message data payload object.
- the model instance editor 32 reads the model 40 such that it is informed by the model 40 what the possible relationships between each current and potential objects are so that the model instance editor 32 editor can configure its functionality from the information in the model 40 so as to constrain itself according to the model 40 .
- a constrained appliance development toolkit 10 constrained by a model 40 can limit the types of objects created and the available relationships between objects which in turn limits the ability to create content 20 , which in turn limits the appliance control functionality.
- FIG. 24 illustrates types of model instances 42 that can be associated or bound by the model instance editor 32 of the appliance development toolkit 10 . Essentially anything in the different domains of data can be bound for later use. Although appliance user domain data 180 and control system domain data 182 are here shown, it will be understood that binding among other domains is equally within the scope of the invention, e.g., user interface domain data 184 and/or source identification domain 186 data.
- FIG. 25 illustrates the benefit of constraining the development toolkit 10 for use by users who want to create content 20 for effecting the cycle of operation of the user interaction of an appliance 12 but do not have all the engineering skills or knowledge to do so.
- the constrained development toolkit 10 enables a user 14 that has less than all the required knowledge or skills to create content 20 that effects the cycle of operation or the user interaction of an appliance 12 wherein the effect is less than the full effect that content 20 from an unconstrained appliance development toolkit 10 can create.
- the constraints used to constrain use of the toolkit 10 can be specified within a model 40 . It is to be understood that for the purposes of describing the invention, unless otherwise specified, reference to the toolkit 10 herein can be understood as a reference to a constrained toolkit and/or an unconstrained toolkit.
- Appliance manufactures build appliances for a competitive market and compete with one another in the areas of cost and innovation. Accordingly, manufacturers 14 A must continuously invest in new products, new technologies, and new innovations while simultaneously reducing cost and improving quality. The ability of an appliance manufacturer 14 A to develop a means by which to engage thousands of additional persons for the purpose of creating new product innovation without raising costs would be a disruptive competitive advantage for that manufacturer 14 A. However, because only highly trained and specialized engineers can successfully and properly create appliance control functionality, previous attempts by manufacturers 14 A to engage the thousands of additional persons in an uncontrolled manner have not resulted in the production of functional and properly-engineered appliance control functionality.
- appliance control functionality plays a critical role in a person's everyday life, such as by affecting the clothes people wear, the food they eat, and the air they breathe, proper implementation of appliance control functionality is a necessity.
- Many appliance control functionalities are also potentially dangerous and must be precisely managed by the specialized and intricately engineered appliance control system, such as appliance control functionalities associated with high voltage sources, high heat sources, gases, liquids, and chemicals.
- constraints to contain the appliance development toolkit 10 enables the thousands of additional persons to create content 20 that effects and/or the cycle of operation or the user interaction of an appliance by providing guidelines and rules for innovation.
- the constraints can enable users 14 to create content 20 that effects/affects only certain appliance control functionalities deemed appropriate for manipulation by the manufacturer 14 A while preventing users 14 from creating content 20 that effects/affects the appliance control functionalities associated with critical systems and components of the appliance 12 .
- This enables the manufacturer 14 A to ensure that the appliance 12 is safe for use by maintaining the integrity of the core appliance control functionalities.
- the manufacturer 14 A would constrain the toolkit 10 so as to prevent users 14 from manipulating precision controls, such as those for high heat, electricity, or harmful substances, so that the food, clothing, air, or other article or elements is properly operated upon by the appliance 12 .
- constraints define at least a portion of the functionality of the constrained appliance development toolkit 10 . It is generally the model instance editor 32 of the system configurator 28 which uses the constraints to partially limit and partially control the functionality and therefore the content 20 which the system configurator 28 is able to create.
- appliance control functionality can be created from content 20 generated from an appliance development toolkit 10 . This is also shown in FIG. 25 via first content 20 and second content 20 created by the appliance manufacturer 14 A and a user 14 respectively.
- the appliance manufacturer 14 A may provide a constrained development toolkit 10 which is hard-coded.
- the appliance manufacturer 14 A can also use an unconstrained toolkit 10 to create the third content 20 , which can include a constraining model 40 , a constraining model instance 42 , or both.
- the constrained appliance development toolkit 10 uses the third content 20 to define at least a portion of the constraints.
- model instance editor 32 of the system configurator 28 which uses the constraints to partially limit and partially control the functionality and therefore the content 20 which the system configurator 28 is able to create.
- the message data payload 150 instance may have been created by an unconstrained model instance editor 32 or by a constrained model instance editor 32 .
- the system configurator 28 of the appliance development toolkit 10 (unconstrained and constrained) is able to load multiple model instance 42 files in model instance editors 32 for the creation of and associations between objects.
- a constrained model instance editor 32 constrained by hard-code is shown in FIG. 26 .
- This approach can achieve the same results as the other two approaches, but at a higher development cost over time because each new model 40 or each new model instance 42 interaction needs to be hard-coded.
- the previous two approaches rely on a data driven approach with is lower cost over time.
- FIG. 27 includes an illustration of using a constraining model instance 42 .
- a sequence model instance for a cycle 42 B for a washing machine On the right side of the model instance editor is a sequence model instance for a cycle 42 B for a washing machine.
- the model instance editor 32 is being used to create a custom cycle with the sequence model instance for a cycle.
- the custom cycle includes a transition from the idle state to the fill tub state wherein the action object for the fill tub state is responsible for the exact control actions to be taken when the fill tub state is entered.
- the user 14 can specify any control action from the universe of control actions as the action to be taken in the fill tub state.
- the constrained toolkit 10 includes an message data payload model instance 42 D which provides a set of control actions less than the universe of control actions such that the user can associate at least one command from the message data payload model instance 42 D with the fill tub action object of the sequence model instance for a cycle 42 B in order to define the control action to be taken when the fill tub state is entered.
- the level limit on the fill level message element 156 is between 20 and 80%. This prevents the user 14 from specifying a value for fill level either above 80% or below 20%.
- FIG. 28 depicts the appliance development toolkit 10 interacting with an appliance 12 via its appliance software framework 104 by way of content 20 created by the toolkit.
- the content 20 is created by one or more model instance converters 34 and includes a builder file 190 and a plurality of resources 192 , which can comprise one or more resources 46 .
- a resource 192 can be a data set containing data.
- a resource 192 can be a file or collection thereof, a database, a stream of streaming data, an event source, a network connection for communicating data and the like.
- the nature of the data for a resource 192 ranges from images and videos to XML, relational databases, language conversions, and animation definitions.
- Themes 194 are collections of resources 192 which can be applied to the components or controls of a multi-media user interface 68 through a mapping at runtime. Themeing is the application of themes 194 to the multi-media user interface 64 at runtime such that that the user interface 64 transforms dynamically in response to the application 50 .
- An animation framework 196 includes animation execution software and animation definitions connected to other components of the appliance software framework 104 , including properties of the UI controls 62 so that the rendering of the UI controls 62 is affected by the animation execution software operating on the animation definition.
- the appliance development toolkit of FIG. 28 is configured to create the necessary object representations and associations therebetween in order to generate the content 20 necessary for the appliance software framework 104 to build the objects at runtime, including UI controls 62 , animation definitions (i.e. objects), data objects from resources, and objects which associate or bind the aforementioned together to achieve the dynamic graphical and multi-media user interface 68 for the appliance 12 .
- the main output of the toolkit 10 in this embodiment is a builder file 190 .
- the builder file 190 contains information including object identifiers, object type (class) identifiers, and relationships between identifiers so that a builder 200 in the appliance 12 can read the file at startup or on demand and create the runtime object collections, hierarchies, graphs that control the dynamic graphical and multi-media user interface 68 for the appliance 12 .
- the builder file 190 is generated by a model instance converter 34 that traverses the model instance objects resident in the toolkit 10 memory and exports the builder file 190 content 20 in response.
- the user interface domain data model instance 42 A includes instances of objects from the user interface domain data model 40 A, which includes class definitions for pages and user interface controls 62 and the relationship definitions therebetween.
- a view or page 202 contains one or more pages, and a user interface control (UI control) 62 contains one or more UI controls 62 .
- Pages are objects that display a plurality of user interface components and are generally designed to be navigated to and navigated from.
- UI controls 62 are generally reusable templates of components that must be combined with data at runtime to create a useful control.
- UI controls 62 are things like buttons, knobs, slider bars, select boxes, text boxes, check boxes, image frames, movie frames, input windows, and the like.
- UI controls 62 have a plurality of properties which are named components of the UI control 62 which either receive or emit data.
- UI control property As a variable wherein the identifier of the variable would be UI control identifier, property identifier (i.e., UI control identifier, control property identifier).
- UI control properties are font, color, style, size, data, shrinkable, hideable, hide, and the like.
- UI controls 62 can also emit data which can also be associated with a property. Examples of properties include current data, state 246 , current size, current state of visibility and the like.
- properties include current data, state 246 , current size, current state of visibility and the like.
- a tactile animation can be listening to a pressed property of a UI control 62 so that when the press property is true, the tactile animation executes.
- the aforementioned UI controls 62 , their properties, representations of variables, binding and actors objects, and the relationships therebetween are created by the builder 200 in response to the builder file 190 .
- the appliance development toolkit 10 creates a representational hierarchy of objects which can be exported to the builder file 190 and read by the builder 200 to create the aforementioned runtime objects of the appliance software framework 104 .
- First the toolkit 10 is configured to create objects representing runtime UI controls 62 and to associate a data source identifier 206 with certain properties of the created UI controls 62 wherein the data source identifier 206 is later associated with a resource identifier 210 to create a first binding map, binding map 1 .
- a set of resource dictionaries 212 are created each having a plurality of resource identifiers 210 and where each resource identifier 210 is associated with a file identifier 214 , which can comprise an address to a resource 192 .
- the file identifiers 214 can be in the form of a URI, URL, URN, path, and the like.
- Different resource dictionaries 212 can contain the same resource identifier 210 associated with a different file identifier 214 , thereby creating the basis for themeing.
- the toolkit 10 can also be configured to enable the user 14 to associate a plurality of theme identifiers 216 each with one or more resource dictionary identifiers 218 in a second binding map, binding map 2 , so that when a theme 194 is selected at runtime, data for application to a property of a UI control 62 can be acquired by finding the address of the data through the use of the information contained in binding map 2 , binding map 1 and the resource dictionary 212 .
- the builder 200 reads the builder file 190 and creates the UI control objects and associates them as shown in FIG. 29 with data sources 204 .
- Binding objects/data sources 204 are created for each unique data source identifier 206 in the builder file 190 and locator objects or resource binding objects 220 are created for each unique resource identifier 210 in the builder file 190 .
- the binding objects 204 are associated with the properties of the UI control objects according to the builder file 190 and associated with the resource binding objects 220 according to the builder file 190
- the addresses of file identifiers 214 associated with the resource identifiers 210 in the resource dictionaries 212 corresponding to the currently selected theme 194 are set into the resource binding objects 220 so that the resource binding objects 220 can acquire the data from the resources 192 when requested.
- a theme manager 222 applies a newly selected theme 194 by creating new resource binding objects 220 and associating them with the appropriate binding objects 204 according to the information in the builder file 190 .
- a user 14 of the toolkit 10 can construct multiple mappings between resource data, UI control properties, data streams, animations, and media files, such that changing a the mappings results in a dynamic transformation to the graphical or multi-media interface 68 of an appliance 12 .
- An SQL binding object will know how to execute SQL against a database found at the address of its associated locator resource binding object 220 .
- a media binding object may know how to un-marshal a binary media file of a certain type.
- binding objects pointing to control system domain data 182 associated with the cycle of operation enabling either the UI control objects and or the animation definitions to interact with the appliance control system 90 , appliance software framework 104 , and cycle of operation.
- a special type of resource 192 is a language resource.
- the graphical user interface 68 can transform between a first and second language.
- a theme 194 can have resources 192 supporting a Spanish Christmas, and another theme 194 could have resources 192 supporting a Spanish victory in the soccer World Cup, wherein there can be one resource dictionary 212 for the Spanish language, one for Christmas, and one for Soccer.
- Animations 198 work the same way as do other resources 192 .
- Animations 198 can have two binding points, an input and output.
- the output of an animation 198 is a function of its input value determined by its binding and its f(x) function, which can be any mathematical function.
- the binding to an animation is depicted in FIG. 28 wherein the animation is bound to two data sources 204 in the form of resource binding objects 220 , as well as to an animation binding object.
- the animation 198 acts like a resource 192 of FIG. 29 having its input connected to one resource binding object and its output connect to another resource binding object.
- the theme manager 222 changes themed animations 198 , it creates two new resource binding objects, sets an address of the new animation definitions (either input or output) into each of the new resource binding objects, and optionally loads the animation 198 into memory for execution.
- the toolkit 10 can construct resources 192 for access by the appliance software framework 104 .
- the appliance 12 can also have an interface for receiving a new builder file 190 and/or new resources 192 and can either combine or interchange the new and the existing files so that the appliance 12 can be updated over time with new pages 202 , new themes 194 , new animations 198 , and new resources 192 .
- a hierarchy of objects starts with a single root object that we can call “root.”
- the root object has 0 to n children and the children may be of different types (i.e., type 1 and type 2). In turn, the 0 to n children may also have children. Therefore, an object A that is a child of root and has children of B and C is considered to be both a child and a parent and can be referred to either as a child or a parent depending on the context. Except for the root, all objects in a hierarchy are a child and those with children are also parents. The root is a parent unless it has no children.
- the first embodiment is a simple example of an implementation of a hierarchy wherein the parent child relationships are direct relationships.
- the parent In a direct parent child relationship, the parent includes an identifier identifying each of its children. Therefore, the parent cannot be decoupled from its children because it comprises the identifiers of its children.
- a second embodiment exemplifies an indirect parent child relationship wherein neither the parents nor the children include identifiers of the other. Instead, a holder object contains the identifiers of both.
- object Q is a holder and contains an identifier of object A, object B, and object C, wherein object A is of type 1, object B is of type 2 and object C is of type 3.
- Objects A, B, and C do not have access to the identifiers of one another.
- the primary responsibility of object Q is to contain identifiers for objects A, B, and C thereby establishing that there is some type of relationship between objects A, B, and C. There are a number of ways that the nature of the relationship between A, B, and C can be ascertained.
- object Q has access to information defining the possible relationships between objects of type 1, 2, and 3.
- the information would define a first relationship definition between objects of type 1 and type 2 as being a parent-child relationship wherein type 1 must be the parent and type 2 must be the child.
- the information would also define a second relationship definition between objects of type 1 and objects of type 3 as being a parent-child relationship wherein type 1 must be the parent and type 3 must be the child.
- object Q can interpret the relationship between object A, B, and C as a parent with two children wherein A is the parent of children B and C.
- a third embodiment exemplifies an alternate approach for creating an indirect parent child relationship wherein neither the parents nor the children include identifiers of the other.
- multiple holders are used to create a holder hierarchy.
- object Q is a holder and contains an identifier for object A.
- Object Q also contains an identifier for a second holder object X.
- Object X contains an identifier for object B.
- Holder object Q is a parent holder with respect to holder object X because holder object Q contains the identifier to holder object X. Therefore the relationship between object A and object B be can be inferred as a parent child relationship when observed from the perspective of holder object Q and holder object X because holder object Q are in a direct parent child relationship. In this case, object A and object B are in an indirect parent-child relationship.
- a forking element includes a hierarchy having a first parent object with at least two children where at least one of the two children has one or more second children and where the one or more second children have one or more third children.
- An interpreter of the first parent, the one of the two children, the one or more second children, and the one or more third children interprets the two children as valid values of the parent and interprets that the one or more second children is applicable to the hierarchy when the first parent is paired with the at least one of the two children that is the parent of the one or more second children
- FIG. 30 illustrates a set of direct parent child relationships having an example of a forking element as part of a message data payload model instance 42 D.
- the First Element of Byte 0 has two valid values, First Choice and Second Choice.
- Second Element is a child of First Choice and
- Third Element is a child of Second Choice.
- the Second Element also has two children Third and Forth Choice respectively each having a child Forth and Fifth element respectively.
- an interpreter or user of the network message could ascertain the meaning of Byte 2 by looking at the useable data found in Byte 1 and associating the useable data of Byte 1 with corresponding second portion of Byte 2 .
- an interpreter could then determine that the meaning of the useable data found in Byte 2 would correspond to the second portion of the Forth Element.
- a forking element comprising at least one additional forking element creates a nested forking element.
- FIG. 37 shows a plurality of models 40 that form a simplified UML class diagram that includes examples of relationship definitions including both direct and indirect parent child relationships.
- a UML class diagram defines possible relationships between future instances of objects derived from at least one class definition by depicting an arrangement of relationship definitions used to define relationships between class definitions where the possible relationships are a function of the relationship definitions.
- a UML class diagram is useful because the arrangement of and relationships between each of the future instances of objects derived from at least one class definition may be verified and or at least partially predicted using the UML diagram.
- variables 230 are identifiers which have an associated value 232 where different actors in the runtime system set the value 232 of the variable 230 .
- FIG. 37 depicts additional possibilities for expanded use of variables 230 and their values 232 and illustrates the benefit of holders.
- a variable 230 can have a relationship with a value 232 where, for example, the relationship depicts a request for the variable 230 to be set to the value 232 at a future time.
- a variable 230 could be associated with a plurality of values 232 in order to depict the possible values 232 of a variable 230 at some future time.
- values 232 are parents of other variables 230 . Relationships like this are useful to express hierarchies of choices 234 , variable validation, payload validation, command validation, user interface behavior, etc.
- a hierarchy of choices 234 might have a root of question 1 with choices A and B as children, where choice A has a child of question 2 having choices of C and D as children.
- This hierarchy could be used to drive a wizard, such as the use and care guide 130 , such that the answer to question 1 would dictate if another question would need to be asked. For example, if the answer to question 1 was choice A, then question 2 would need to be asked to get an answer of either choice C or choice D. However, if choice B were the answer of question 1 , then no further questions would be necessary.
- the behavior of the wizard could be controlled by the capability definition and an answer sheet comprising the list of questions asked and the answers given could be validated using the capability definition.
- FIG. 37 the previous example illustrated by FIG. 30 can be understood in the context of the message data payload model 40 C shown in FIG. 37 . Also shown is that components of the message data payload model 40 C extend or inherit from class definitions in variable model 40 D.
- a message element 156 can be a variable 232 or it can be a variable holder 236 .
- choices 234 and variable definitions 238 extend a value abstract class 240 .
- a forking can occur when an abstract value 242 , such as a choice 234 , has a child of a variable 230 , like a message element 156 , which is shown to be a potential arrangement in that a choice 234 extends an abstract value 242 via abstract value class 240 , and that abstract value 242 can have a variable 230 as a child, and that message element 156 extends or is a message element 156 .
- These relationship definitions as shown in the simplified UML class diagram define the possibility to have message elements 156 having children of choices 234 with those choices 234 having children of other message elements 156 as shown in FIG. 30 , which shows an instance of the message data payload model 40 C of FIG. 37 .
- a variable holder 236 can include a reference to a variable 230 and a value 232 .
- an indirect parent child relationship can be formed as described in the second embodiment exemplifying an indirect parent child relationship (above) and as shown in the first and second occurrences of FIG. 39 , where a first holder 236 holds a reference to a first parent variable 230 and a first child value 232 and a second holder 236 holds a reference to the first parent variable 230 and a second child value 232 .
- FIG. 39 shows that by using the first and second holder objects, the first parent variable can participate in two different indirect parent child relationships; one with the first child value 232 and the other with the second child value 232 .
- an instance of a variable holder 236 can also include a reference to an instance of an object that derives from the abstract value class 240 , which includes value holder 244 , value 232 , variable definition 238 , and choice 234 .
- an instance of value holder 244 can include a reference to an instance of an object that derives from value abstract class 240 .
- FIG. 40 illustrates a variable 230 participating in two indirect parent child relationships where each relationship involves a different child by using variable holders 236 and value holders 244 as prescribed by the variable model 40 D of FIG. 37 .
- FIG. 37 also illustrates the model 40 for the capabilities model 40 F of an appliance 12 .
- FIG. 38 illustrates a capabilities model instance 40 F comprising a hierarchy of variables 230 to values 232 and variables 230 to variable definitions 238 in repeating direct parent child relationships.
- This hierarchy known as a capabilities tree is a child of the state 246 object idle, meaning that when the appliance 12 is in an idle state, the hierarchy contained by state object idle represents the operational capabilities of the appliance 12 from a command and control perspective. From the command perspective, all valid commands can be derived by observing and interpreting the hierarchy.
- a command in its simplest form, is a message that results in one appliance variable 230 being set to a value 232 .
- variable 230 and the value 232 together are referred to as a paired element 252 (also shown in FIG. 41 ).
- a valid command to an appliance 12 includes a plurality of interdependent variables 230 each having a value 232 selected from a plurality of valid values 232 and wherein the selection of the values 232 determines a portion of the other interdependent variables 230 that also must be specified with a value 232 to form a well formed command or command container 250 .
- the appliance capabilities model 40 F can be used to determine what additional interdependent variables 230 must be included in a command container 250 based on the selected value 232 of each variable 230 .
- Command containers 250 have at least one paired element 252 .
- a command container 250 may be validated by traversing the capability tree to observe and verify that each of the variables 230 or variable holders 236 in the command container 250 is one of a root of the tree and a parent in the tree wherein the parent is a value 232 or value holder 244 as part of the plurality of paired elements 252 , to observe and verify that each paired element 252 is located at one of the root or a direct descendent of another paired element 252 connected to the root, and to observe and verify that at least one paired element 252 comprises a value 232 or value holder 244 as a leaf node of the tree. As shown in FIGS.
- a cycle definition includes a command container 250 wherein the content 20 of the command container 250 affects the cycle of operation of the appliance 12 when the appliance 12 runtime sets the variables 230 specified by the command container 250 to the values 232 specified in the command container 250 .
- Other information included in the cycle definition can be used for graphical user interface 68 rendering and other non-control system domain purposes.
- the capabilities model instance 42 F of FIG. 38 is an example of using only direct parent child relationships between variables 230 and values 232 .
- a different embodiment using variable holders 236 and value holders 244 can be constructed (similar to FIG. 40 ) where the capabilities model instance 42 F would comprise variable holders 236 , variables 230 , value holders 244 , and values 232 .
- variable model 40 D provides some common base classes for use by the message data payload model 40 C and the capabilities model 40
- Content 20 includes variables 230 and values 232 arranged in a nested repeating hierarchy of alternate levels of variables 230 having values 232 and value having variables 230 .
- scenario 1 because direct parent child relationships are used in the model instances 42 D, 42 F, herein referred to as scenario 1 , there is less reuse than could be accomplished if variable holder 236 and/or value holders 244 were used as in scenario 2 and scenario 3 of FIGS. 39 and 40 , respectively.
- the elements refer to the memory variable 230 in the appliance runtime which corresponds to one of the selected, request, and active cycle of the appliance 12 .
- the capabilities model instance 42 F contains a complete validation hierarchy as exemplified by the ‘Delay’ variable 230 underneath the ‘Wool’ value 232 .
- the message data payload model instance 42 D on the right has two hierarchies, one for the ‘cycle’ and one for the ‘Delay’ because the designer of this context made a choice to arrange the information into separate hierarchies. Therefore, because the information is in multiple hierarchies and is partitioned and organized differently, the information must be duplicated in separate information elements as shown in Scenario 1 .
- the information elements or identifiers thereof i.e. variables 230 , values 232 , message elements 156 , choices 234 , variable definitions 238 , etc.
- the multiple contexts can leverage information from the multiple contexts because there are common or shared objects within those contexts which can be used to gather information across multiple contexts by using the shared objects as navigation objects for jumping from and jumping to different contexts. This is further explained and exemplified by FIG. 40 and the description thereof.
- an appliance 12 can communicate its operational capabilities to a client by sending a capabilities model instance 42 F to the client.
- the client can then form a command container 250 and send that command container 250 back to the appliance 12 .
- the appliance 12 can take the variables 230 from the paired elements 252 of the command container 250 and validate the command container 250 by traversing the capabilities tree as previously described. Once validated, the appliance 12 can automatically convert the command container 250 into one or more message data payloads 150 for constructing network messages to execute the command container 250 across multiple control boards communicating on the communications network 18 .
- This automatic conversion and validation is enabled by using variable holders 236 and value holders 244 to construct the capabilities and message data payload model instances, 42 F and 42 D, respectively.
- the UML class diagram of FIG. 37 depicts a variable model 40 D wherein a user 14 can use either of the at least one variable holder 236 and the at least one value holder 244 in creating at least one hierarchy of elements for content 20 independent of any relationship that may otherwise exist between the variable 230 and other elements and between the value 232 and other elements so that the variable 230 and the value 232 can be used in different contexts with different relationships while maintaining their relationship with each other via the at least one variable holder 236 and the at least one value holder 244 .
- FIG. 42 depicts the use of an appliance development toolkit 10 a first set of constraints creating a first set of content 20 with which a second user 14 using an appliance development toolkit 10 having a second set of constraints could use to create a cycle definition 262 .
- a cycle definition 262 includes a command container 250 with at least one pair element 252 derived from a collection of appliance variables 230 and values 232 .
- the appliance namespace includes a collection of uniquely identifiable and meaningful variables 230 for an appliance 12 . Therefore the user 14 of the toolkit 10 with the second set of constraints could create a cycle definition 262 by selecting data from the appliance model instance 42 J shown in FIG. 42 , which comprises a plurality of model instances 42 used by the appliance 12 , and specifically from the appliance namespace 260 .
- the toolkit 10 can validate the cycle definition 262 using the capabilities model instance 42 F.
- the user 14 can associate data about the cycle definition 262 including source identification domain data 186 which includes brand emblems and other licensable data or other data including usage text, help, and one or more identifiers of persons, consumables, and articles, and the like.
- FIG. 43 illustrates the use of a document model instance 42 G within a domain model instance 42 H interacting with a converter 34 to create content 20 for display in a viewer 38 .
- the purpose of a document model (not shown) is to enable a user 14 to use the model instance editor 32 to create and view content 20 associated with a domain model instance 42 H within the system configurator 28 before final export to a content target 22 .
- the viewer 38 is a content target simulator 52 .
- a domain model (not shown) is an abstraction or model 40 associated with real world constructs like cars, buildings, trees, law, language, media, finance, and just about any topical concept imaginable without respect to non-domain concerns like formatting, language, style, persistence form and the like.
- the domain model instance 42 H is an ingredient substitution model and the non-domain model instance is the contained document model instance 42 G shown in the dashed box.
- the document model instance 42 G is an arrangement of objects (shown under the UIText object) including markup objects for formatting, special objects for creating spaces or punctuation, text objects for creating static content 20 , and domain objects able to contribute content 20 based on their properties, functionality, and composition.
- a converter 34 traverses the arrangement to create html content 20 for the internet browser based viewer 38 on the right.
- a user 14 can specify the behavior of the content target 22 with respect to the content 20 by creating data for simulation of the content target 22 .
- viewing the content 20 aids the user 14 in understanding the meaning of the domain model 40 H in that a portion of the viewable content 20 is a function of the domain model 40 H. Therefore the content 20 and viewer 38 together help the user 14 validate and verify the composition of the domain model 40 H.
- FIG. 44 depicts binding between appliance user domain data 180 and appliance control system domain data 182 .
- a cycle outcome model instance 42 I for cooking comprising a food identifier, a vessel identifier and a doneness identifier is bound to a cycle structure 80 identified by SCF5 wherein when the content 20 is generated for the appliance 12 from the cycle outcome model instance 42 I and the sequence model instance for a cycle 42 B, and appliance control functionality of FIG. 8 is created by the appliance software framework 104 of FIG. 7 and FIG. 28 .
- a user 14 can affect the cycle of operation by selecting elements of the user interface domain data 184 rendered on the user interface 68 and bound to the cycle structure 80 identified by SCF5.
- the graphical user interface 68 of FIG. 46 can display the source identification domain data 186 and other data on the user interface 64 of the appliance 12 in response to the identifiers either sensed from a sensor like a scanner or selected via the appliance user interface 64 .
- the cycle definition 262 can be automatically translated into transmittable network messages 266 by a message generator 264 of FIG. 45 using the message data payload model instance 42 D of FIG. 42 and FIG. 45 .
- FIG. 47 shows an example of how an appliance development toolkit 10 according to the invention is used in interaction with a user 14 and an appliance 12 to diagnose an appliance 12 . It further shows additional examples of the use of a constrained toolkit 10 using model instances 42 as the constraining component.
- the toolkit 10 is configured to create one or more test scripts 270 having at least two steps, each step being separated from its adjacent steps by a transition condition that includes a logic expression resolvable to a Boolean transition value, at least one command statement associated with one of the at least two steps that instructs what should happen when the at least one step is the current step so that a test engine can execute the at least one command statement contemporaneous with the transition of the at least one step from the current step to the next step.
- the toolkit 10 also provides information associated with at least one message element 156 in a message data payload 50 so that the message data payload 50 is uniquely identifiable within a universe of pre-defined message data payloads 50 for the appliance 12 . (See the foregoing discussion of identifiers.)
- a converter 34 will place the test script 270 into a form to be readable or at least useable in diagnosing an appliance 12 .
- Command statements will include such things as questions to a user such as shown in FIGS. 11-15 .
- Holders 236 , 244 as discussed elsewhere are useful tools for the editor 10 to effect flexibility in creating command sequences for the test script 270 .
- the test engine application 50 A is configured to observe subsequent network messages 266 and relate those to a transition logic in the test script 270 , and to evaluate the logic for transition to the next step as it traverses a hierarchy in the test script 270 .
- a second a communications driver can be configured to establish a communication link with the test engine application 50 A, and a fault tree tool application 50 B is configured to access one or more fault trees 110 to construct a command container 250 on instructions in the fault tree(s) 110 and to convey the command container 250 to the test engine application 50 A via the second communication link during execution of a command statement in the fault tree 110 .
- a model instance editor 32 can use the message data payload model instance 42 D to create the data that a model instance editor 32 uses, along with a sequence model instance for tests 42 K, to create the test script (which is a sequence model instance variant).
- the test engine application 50 A uses the test script 270 in communication with a smart coupler 56 , such as a smart cable, to communicate with the appliance 12 and with the user 14 .
- a model instance editor 32 uses a sequence model instance for a fault tree 42 C to create a sequence model instance variant, such as a fault tree, that a fault tree tool application 50 B uses in interaction with the user 14 .
- a sequence model instance for tests 42 K is similar to other instances using the sequence model 40 B in that it allows the user 14 to create a set of steps separated by transition conditions having logic to drive the condition where each step has an associated action specifying the tasks to be done in that step.
- a sequence model instance for tests 42 K can use message data payload model instances 42 D as constraining elements for the actions in each step. This is accomplished in a similar fashion previously described for FIG. 27 wherein the message data payload model instance 42 D is used to constrain a sequence model instance for a cycle 42 B.
- the sequence model instance for a fault tree 42 C is constrained as well using the sequence model instance for tests 42 K wherein each test in the sequence model instance for tests 42 K might have an identifier or an identifying test object that can be bound to the action of a step in the sequence model instance for a fault tree 42 C at tool time such that when the fault tree tool application 50 B reaches a step wherein a test script 270 should be executed, it can communicate with the test engine application 50 A to invoke the test script 270 corresponding to the identification of the test object at runtime.
- test engine application 50 A having been previously constrained by elements from the message data payload model instance 42 D and having actions of steps bound to message data payload model instances 42 D can use the binding to automatically construct and transmit useable messages 266 from the test engine application 50 A to the appliance 12 using the method as previously described for cycle definition 262 translation to message data payloads 150 .
- FIGS. 48 , 48 A, and 48 B illustrate binding between multiple instances of user domain data 180 to control system domain data 182 , which is illustrated at a high level in FIG. 23 .
- the control system domain data 182 comprises a cycle outcome model instance 42 I, 42 B and a sequence model instance for a cycle 4 B that can be used for a cycle structure 80 for a cooking appliance 12 .
- a set of cooking profiles ( FIG. 44 ) are created each having multiple components specifying various parameters associated with the cooking cycle.
- the profiles in FIG. 44 indicate that the user 14 needs to use an iron skillet in a 30 ′′ cavity, and in the other case we have a glass crock pot in a 27 ′′ cavity; thus, a user 14 can cook those donuts differently to achieve the same outcome, and the desired cycle outcome will point to the specific sequence for the cycle.
- Different profiles and different cycle structures 80 can therefore achieve the same outcome given a set of appliance user domain data 180 elements like the food type, cavity size, and the pan.
- the user 14 Using the recipe specified by one of the sequence model instance for a recipe with a first set of portions 42 L and the sequence model instance for a recipe with a second set of portions 42 M, the selection of which is based on the cooking profiles, the user 14 first gets the ingredients.
- the user 14 is using the sequence model instance for a recipe with a first set of portions 42 L: get 5 ounces of flour, 2 ounces of sugar.
- the sequence model instance for a recipe with a first set of portions 42 L then transitions to the next state 246 called mix.
- the user 14 then mixes the ingredients and transitions to the next state to cook.
- the user 14 puts the mix in the pan and forms the dough, gets a pan, places the dough in the donut forms in the pan, and then transitions into state cook, where the user 14 places the pan in the appliance 12 and uses the user interface 46 to select the food pan and doneness to select the cycle.
- the ingredients substitution model 40 N and instance 42 N thereof are both appliance user domain data 180 .
- a substitution object in the ingredients substitution model instance 42 N holds the primary and alternate portion and enables a user 14 to substitute one for the other and still complete the desired cooking cycle.
- the alternate portion can also have nutritional information associated therewith so that as sequence model instance for recipes call for certain portion substitutions, the nutritional information is derived from the portions and then compared that to the constraints from the meal planner discussed below, allowing the meal planner to then actually achieve the substitutions based on nutritional constraints.
- this ability to transform and suggest a recipe comprises a meal planner that can query other smart agents of information to figure out how to best plan the meal.
- the meal can also be a combination of multiple recipes, such as a lasagna followed by donuts for dessert.
- the meal planner will thus query for the participants in the meal, each person's schedules, the profiles of the participates to note food preferences, allergies, diets, and doctor's orders that would create constraints on the meal planner.
- the meal planner will then use the information garnered from these queries to select either certain recipes or certain ingredients for recipes to conform to the preferences of the people, the schedules of the people, or the nutritional constraints that people might have based on their diets, allergies, etc.
- the other constraint that a meal planner could look at would be an inventory system constraint where an inventory system actually knows the available portions that are in the house and then the meal planner could take that and select recipes or do ingredient substitutions or recipes based on the inventory at hand. It could also populate a shopping list if there were certain things that it highlighted as not being available or being in conflict with a preference of a person or a diet of a person, then it could kind of spit out a shopping list and say to the user of the meal planner, hey, we better get this. And of course it could automate that transaction by having it ordered, delivered, etc.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Automation & Control Theory (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Stored Programmes (AREA)
Abstract
A development toolkit can create a message data payload for use on a communications network having rules for data representation. The development toolkit includes an editor configured to create a first portion of a message data payload having usable data for transmission over the communications network, and to create a second portion of the message data payload having information to describe the usable data. The editor includes constraints that limit the manner in which creating the first and second portions and the association occurs. The constraints are defined in part by the rules for data representation. The toolkit also includes a user interface to display a visualization of the message data payload from the editor. With this configuration, a user can conveniently create a message data payload for immediate use and see a graphical representation of the message data payload as it is created.
Description
- This application is a continuation of PCT/US2009/046186 filed Jun. 3, 2009, which claims priority from U.S. Application Ser. No. 61/058,440 filed Jun. 3, 2008.
- The invention relates to tools for editing software associated with the network messages.
- Household appliances typically comprise one or more components responsible for the electromechanical operations of the appliance. For example, an oven can include an appliance management component having a printed circuit board (PCB) with memory, as well as a user-interface component, such as a control panel or keypad, for a user to issue commands to the oven. As another example, a washing machine can include an appliance management component, a user-interface component, and a motor control component that controls a motor of the washing machine.
- Typically, discrete circuits couple the internal components of an appliance, with each discrete circuit responsible for individual communication between related components. The circuits communicate with each other over an internal network that traditionally is implemented by hard-wired ribbon cables or other connectors or harnesses between the components. The hard-wired connectors form a closed system or network that is difficult or not possible to modify. For example, because the closed network relies on hard-coded or hard-wired network solutions, it is not practical to couple additional external components or additional internal components to the appliance to expand the capability or function of the appliance. The closed network cannot easily be adapted for communication with the additional external/internal components and therefore limits the potential of the appliance.
- In some instances, service personnel can access the interior of an appliance and connect an external device to the internal network in order to modify the operation of or otherwise interact with the internal components of the appliance. However, scheduling appointments with service personnel can be inconvenient, and accessing the interior of the appliance can require the use of specialized tools and can potentially damage the appliance in the process. In addition, due to the limited potential of the internal components, the user of the appliance is unable to thoroughly personalize the operation of the appliance in order to tailor the appliance to his or her particular needs.
- According to the invention, a development toolkit is provided for creating a message data payload for use on a communications network having rules for data representation. The development toolkit includes an editor configured to create a first portion of a message data payload having usable data for transmission over the communications network, and to create a second portion of the message data payload having information to describe the usable data. The editor includes constraints that limit the manner in which creating the first and second portions and the association occurs. The constraints are defined in part by the rules for data representation. The toolkit also includes a user interface to display a visualization of the message data payload from the editor. With this configuration, a user can conveniently create a message data payload for immediate use and see a graphical representation of the message data payload as it is created.
- In the drawings:
-
FIG. 1 is a schematic diagram showing the environment of an appliance development toolkit according to the invention. -
FIG. 2 is a schematic diagram showing elements of an appliance development toolkit according to the invention. -
FIG. 3 is a schematic diagram showing relationships among elements of the system configurator in the appliance development toolkit ofFIGS. 1 and 2 . -
FIG. 4 is a diagram showing the functional relationship among some of the elements ofFIG. 3 . -
FIG. 5 is a screen shot of an editor and a content viewer of an appliance development toolkit according to the invention. -
FIG. 6A shows a first embodiment of a user interface as a result of using an appliance development toolkit according to the invention. -
FIG. 6B shows a second embodiment of a user interface as a result of using an appliance development toolkit according to the invention. -
FIG. 6C shows a third embodiment of a user interface as a result of using an appliance development toolkit according to the invention. -
FIG. 7 is a screen shot of two editor windows in an appliance development toolkit according to the invention and a cycle structure for an appliance. -
FIG. 8 is a schematic diagram showing the flow of information between an appliance and the system configurator in an appliance development toolkit according to the invention. -
FIG. 9 is a schematic diagram showing the relationships of the control structure of an appliance to the system configurator ofFIG. 8 . -
FIG. 10 is a screen shot of an editor in an appliance development toolkit according to the invention with a sequence model instance for a fault tree being created. -
FIG. 10A is a screen shot of an attribute editor in an appliance development toolkit according to the invention showing the creation of a portion of the instance ofFIG. 10 . -
FIG. 11 is a screen shot of an editor in an appliance development toolkit according to the invention with a sequence model instance for a fault tree being created. -
FIG. 11A is a screen shot of a viewer in an appliance development toolkit according to the invention showing how the content resulting from the editor will appear. -
FIG. 12 is a screen shot of the editor ofFIGS. 10 and 11 , and a screen shot of a graphical user interface in an appliance displaying a portion of the content from the editor. -
FIG. 13A is a screen shot of the editor ofFIGS. 10 and 11 , and a screen shot of a graphical user interface in an appliance displaying another portion of the content from the editor in a query. -
FIG. 13B is a screen shot of the editor ofFIGS. 10 and 11 , and a screen shot of a graphical user interface in an appliance displaying related portion of the content from the editor responsive to the query ofFIG. 13A . -
FIG. 14 is a screen shot of a viewer in an appliance development toolkit according to the invention showing a flow chart of the content inFIGS. 12-13B . -
FIG. 15 illustrates an interaction between the content ofFIGS. 12-13B and a user. -
FIG. 16 is a screen shot of an editor in an appliance development toolkit according to the invention with a message data payload model instance being created -
FIG. 17 is a schematic diagram showing the use of the message data payload model instance ofFIG. 16 in an appliance. -
FIG. 18 is a screen shot of a viewer in a target application showing the message traffic of the message data payload model instance ofFIG. 16 -
FIG. 19 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing a step in the creation of a message data payload. -
FIG. 20 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing another step in the creation of a message data payload. -
FIG. 21 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing another step in the creation of a message data payload. -
FIG. 22 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing another step in the creation of a message data payload. -
FIG. 23 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing another step in the creation of a message data payload. -
FIG. 24 is a schematic diagram showing a binding between appliance user domain data and control system domain data created by an editor in an appliance development toolkit according to the invention. -
FIG. 25 is a schematic diagram showing use of a constrained appliance development toolkit according to the invention. -
FIG. 26 is a schematic diagram showing a constrained appliance development toolkit according to the invention. -
FIG. 27 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing aspects of a message data payload. -
FIG. 28 is a schematic diagram showing elements of an appliance development toolkit according to the invention and an appliance that uses content from the appliance development toolkit in creating themes and animations. -
FIG. 29 is a schematic diagram showing multiple bindings created by an appliance development toolkit according to the invention for user interface controls in an appliance. -
FIG. 30 is a schematic diagram showing the message structure of forking elements in an appliance development toolkit according to the invention. -
FIG. 31 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing a step in the creation of a message data payload with a forking element. -
FIG. 32 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing another step in the creation of a message data payload with a forking element. -
FIG. 33 is a screen shot of a model instance editor in an appliance development toolkit according to the invention with a properties viewer and information about it. -
FIG. 34 is a screen shot of a model instance editor in an appliance development toolkit according to the invention with information about it. -
FIG. 35 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing a step in the creation of a message data payload using holders. -
FIG. 36 is a screen shot of a model instance editor in an appliance development toolkit according to the invention showing another step in the creation of a message data payload using holders. -
FIG. 37 is a schematic diagram showing the use of holders in different a variable model according to the invention. -
FIG. 38 is a schematic diagram showing a first scenario showing the relationships of variables. -
FIG. 39 is a schematic diagram showing a second scenario showing the use and relationships of holders. -
FIG. 40 is a schematic diagram showing a third scenario showing the use and relationships of holders. -
FIG. 41 is a schematic diagram showing the use of paired elements in stain treatment in an appliance according to the invention. -
FIG. 42 is a schematic diagram showing the use of development toolkits according to the invention with an appliance in the creation of cycle instances for the appliance. -
FIG. 43 is a schematic diagram of a substitution model instance created according to the invention. -
FIG. 44 is a schematic diagram showing the relationship between a cycle outcome model instance and sequence model instance according to the invention. -
FIG. 45 is a schematic diagram showing the relationship among instance variants, user interface controls, and models according to the invention. -
FIG. 46 is a schematic diagram showing a dynamic rendering of a graphical user interface in response an appliance receiving data from a sender according to the invention. -
FIG. 47 is a schematic diagram showing the use of a test engine to diagnose an appliance according to the invention. -
FIG. 48 is a schematic diagram showing the use of sequence model instances and cycle outcome model instances in meal planning according to the invention. -
FIG. 48A illustrates a sequence model instance for recipes inFIG. 48 . -
FIG. 48B illustrates a sequence model instance for substitutions inFIG. 48 . - Referring to the drawings and to
FIG. 1 in particular, anappliance development toolkit 10 according to the invention, which will be referred to hereinafter as thetoolkit 10, is configured to enable the creation and modification ofcontent 20 to affect and/or effect operation of one or more components associated with anappliance 12 so as to affect and/or effect interaction between auser 14 and theappliance 12 and/or a cycle of operation of theappliance 12. Thetoolkit 10 can be used withdifferent appliances 12 without requiring the recoding of software of thetoolkit 10. Theuser 14 can be a consumer, a salesperson, amanufacturer 14A (seeFIG. 25 ), a product engineer, or any other individual capable of using theappliance 12 and/or thetoolkit 10. - The
appliance 12 can be any suitable appliance, such as a household appliance. Examples of household appliances include, but are not limited to, clothes washing machines, clothes dryers, ovens, dishwashers, refrigerators, freezers, microwave ovens, trash compactors, and countertop appliances, such as waffle makers, toasters, blenders, mixers, food processors, coffee makers, and the like. - The
appliance 12 can be configured to perform a cycle of operation to complete a physical domestic operation on an article. Examples of the physical domestic operations include a food preparation operation, a food preservation operation, a fluid treatment operation, a cleaning operation, a personal care operation, a fabric treatment operation, an air treatment operation, and a hard surface treatment operation. The air treatment operation can comprise, for example, air purification, air humidification, air dehumidification, air heating, and air cooling. The food preparation operation can comprise, for example, food cleaning, food chopping, food mixing, food heating, food peeling, and food cooling. The food preservation operation can comprise, for example, food cooling, food freezing, and food storage in a specialized atmosphere. The fluid treatment operation can comprise, for example, fluid heating, fluid boiling, fluid cooling, fluid freezing, fluid mixing, fluid whipping, fluid dispensing, fluid filtering, and fluid separation. The cleaning operation can comprise, for example, dishwashing, fabric washing, fabric treatment, fabric drying, hard surface cleaning, hard surface treatment, hard surface drying, carpet cleaning, carpet treatment, and carpet drying. The personal care operation can comprise, for example, hair treatment, nail treatment, body massaging, teeth cleaning, body cleaning, and shaving. - The components associated with the
appliance 12 can include any devices, parts, software, and the like that participate in the operation of theappliance 12, either directly or indirectly. Some of the components have a corresponding controller (main controller, motor controller, user interface, etc.), which can be a simple microprocessor mounted on a printed circuit board (a control board), while other components can have no controller. The components can comprise one or more devices that are controlled by the controller. Typically, the controller components in cooperation, either directly or indirectly, through other components, control the operation of all of the components and the associated devices to implement a cycle of operation for theappliance 12. - The one or more components affected/effected by the
toolkit 10 can comprise anotherappliance 12, one or more components on theappliance 12 or in anotherappliance 12, or an accessory device or component thereof for use with theappliance 12. For purposes of describing the invention, it will be understood that when reference is made herein to the use of thetoolkit 10 in conjunction with theappliance 12, the same applies to the use of thetoolkit 10 in conjunction with anotherappliance 12, with one or more components of theappliance 12 or of anotherappliance 12, and with an accessory device or component(s) thereof for use with theappliance 12. - The
appliance 12 can be communicatively coupled to thetoolkit 10 via acommunications network 18 existing at least partially within theappliance 12 and/or at least partially external to theappliance 12 as appropriate. Thecommunications network 18 comprises all of the coupling elements communicatively linking the various parts of thetoolkit 10 and theappliance 12, as well as any coupling elements communicatively linking additional devices or resources to thetoolkit 10 and/or appliance 12 (e.g. a coupling element connecting theappliance 12 with an accessory). For example, thecommunications network 18 can comprise an internal communications network of theappliance 12 enabling communication between the various components within theappliance 12, an external communications network connected to thetoolkit 10, and a coupler for communicatively coupling the two networks. The coupler can comprise a communication driver configured to establish a communications link between thetoolkit 10 and theappliance 12. Looking also atFIG. 2 , the communication driver can be asmart driver 54 having expanded functionality enabling thesmart driver 54 to create, modify, and/or interpretcontent 20. Thecommunications network 18 can further comprises an additional communications connection between theappliance 12 and/ortoolkit 10 and one or more additional devices, such as the accessory, an external network, asecond appliance 12 or accessory, or one or more components thereof. As a non-limiting example, the additional communications connection can be to the Internet. Thecommunications network 18 can comprise, at least in part, asmart coupler 56 as is disclosed in International Patent Application Publication No. 2009/058770, which is incorporated by reference herein in its entirety. Thesmart coupler 56 can incorporate the communications driver, which can be thesmart driver 54. - The
toolkit 10 enables auser 14 to createcontent 20 that can be provided to or otherwise obtained by one ormore content targets 22 to affect the functionalities of theappliance 12.Content 20 can be formatted as at least one of a relational database, XML document, CSV file, binary file, data collection, memory structure, object structure, object graph, object tree, memory heap, machine code, source code, and text file, images, text, data elements, or other type of information associated with thetoolkit 10 that can be interpreted, converted, propagated, created, modified, or otherwise used for some purpose by thetoolkit 10, theappliance 12, or an associated device or component. Examples ofcontent 20 include but are not limited to a cycle structure, a custom cycle, a branded cycle, user-attached data about appliance control functionality, a fault tree, a diagnostic test, an appliance user interface 64 (seeFIG. 6A for example), appliance network communication, routing tables for appliance network communication, stain treatment, cooking, cooking algorithms, cooking vessels, meal preparation, dish preparation, recipes, units conversion, ingredients, ingredient substitution, dietary needs, appliance use and care, appliance FAQ, consumables meta data, and information associated with consumable, a cycle definition, cycle structure information, a paired element, source identification information, a message data payload structure, an electronic document that is human-readable, machine-readable, a communications specification/protocol, and information about a consumable. -
Content 20 can comprise various forms of data or data elements, including appliance user domain data 180 (seeFIG. 24 ), control system domain data 182 (seeFIG. 24 ), and source identification domain data 186 (seeFIG. 46 ). Appliance user domain data 180 includes information related to a user's 14 use of anappliance 12. It includes such things as washing and cooking preferences, recipes, user demographics, choices and selections that user makes, and the like. Controlsystem domain data 182 includes information related to the control and operation of an appliance. It includes such things as cycle structures, cycle definitions, message payloads, communication protocols, and the like. Sourceidentification domain data 186 includes information related to the sources of goods and services and includes things such as trademarks, brand names, service marks, jingles, and the like. User interface domain data includes information related to interacting with auser interface 64, which is preferably agraphical user interface 68. It includes such things as widgets, animation definitions, buttons, bars, sliders, knobs, and the like, whether real or virtual. - A
content target 22 comprises any entity that receivescontent 20. Non-limiting examples ofdifferent content targets 22 include thetoolkit 10, theappliance 12, thecommunications network 18, asystem configurator 28,editors converters 34,viewers 38, anappliance control system 90, auser interface 64 andgraphical user interface 68, a web browser or web page, apersonal computer 70, anapplication 50, a computer program, a handheld device, a remote client 72 such as a cell phone, a printer, and any hardware or software components or devices associated therewith or included therein. - As shown in
FIGS. 2-4 , thetoolkit 10 comprisessystem configurator 28 having amodel editor 30, amodel instance editor 32, and one ormore converters 34 configured to enable auser 14 to create, modify, and/or propagatecontent 20, such asmodels 40,model instances 42, andmodel instance variants 44, respectively. Thetoolkit 10 can further comprise one ormore viewers 38 that function as content targets 22 and provide a visual display corresponding to the receivedcontent 20. Depending on the particular type ofviewer 38 being used,viewers 38 can produce one or more of a variety of different displays or views ranging from schematic diagrams to code to images. Thecommunications network 18 is configured to establish a communicative link between thesystem configurator 28 and at least one component associated with theappliance 12. - Different content targets 22 can use the
same content 20 for different purposes. For example, amodel instance editor 32 that receivescontent 20 in the form of amodel instance 42 can provide a visual diagram of themodel instance 42 and enable theuser 14 to edit themodel instance 42. However, if thesame model instance 42 is sent to theappliance 12, theappliance 12 can be enabled with new operational capabilities, such as new cycles of operation. In another example shown inFIGS. 5 and 6A , theappliance 12 can receive themodel instance 42 from themodel instance editor 32 and provide themodel instance 42 to agraphical user interface 68 of theappliance 12 in order to cause thegraphical user interface 68 to display certain images and text. -
Converters 34 can enable the flexible usage ofcontent 20 by converting data elements orcontent 20 created by one of theeditors content 20 of a form suitable for use by aparticular content target 22. For example, a type ofconverter 34 called a model instance converter is configured to produce amodel instance variant 44 based on amodel instance 42. Another type ofconverter 34 called a simple converter can simply propagate data elements or a file stored in memory and comprising data elements created by thetoolkit 10 without having to substantially convert the data elements. Simple converters are best used when thecontent target 22 can operate directly on the data elements created byeditors content target 22 in the form of aviewer 38 included in thesystem configurator 28.Converters 34 are typically used to enable the transfer of data elements amongst the various entities of thetoolkit 10 andappliance 12. Aconverter 34 can potentially also act as an exporter, which functions similarly to the propagating function described previously. Thetoolkit 10 can also include aconverter 34 in the form of an encoder to encodecontent 20 onto a consumable information holder or other component. - The system configurator 28 can optionally further comprise one or
more applications 50, which can also include one ormore viewers 38 and can usecontent 20 provided by thesystem configurator 28. One ormore applications 50 can also be communicatively coupled to but not included within thesystem configurator 28.Content 20 provided by thesystem configurator 28 can optionally be supplemented bycontent 20 provided by or created usingresources 46, which can include any entities capable of producingcontent 20 or being used by another entity to generatecontent 20. - For testing, diagnostic, and engineering purposes, a link can be established between the
system configurator 28 and a content target simulator 52 (FIG. 2 ). Thecontent target simulator 52 typically comprises software and is intended to provide a realistic simulation of the operation of theappliance 12. Thetoolkit 10 thus comprises software configured to enable auser 14 to effectively command operation of theappliance 12 or of an appliance simulator and to create data or data elements for display to auser 14 ascontent 20 in aviewer 38 of thetoolkit 10 based on the operation of theappliance 12. Theuser 14 can observe thecontent 20 in theviewer 38 and create or modify thecontent 20 using thetoolkit 10 in response to communication over thecommunications network 18 and link. - A
model 40 is a very robust, thorough, and thoroughly-vetted collection of data elements or structures equivalent to a UML class diagram. Amodel 40 consists of a plurality of class definitions where each class has a plurality of properties and each class can reference other classes a minimum and maximum number of times, which may be infinite. Classes can reference other classes via a named property. Classes can also, in effect, serve as extensions of other classes in order to inherit their functionalities, property definitions, and references. Classes can implement interfaces, which are definitions of collections of functions each having a set of arguments, wherein each argument can be set to one of a set of valid values. The purpose of the class definition is to provide rules or constraints for creatingmodel instances 42 andmodel instance variants 44, which are, in essence, runtime instances of themodel 40. Thus, thetoolkit 10, in effect, enablesusers 14 to create runtime instances of a class diagram and is configured to create, manage, and/or editmodels 40,model instances 42, andmodel instance variants 44, as well as data elements or information associated therewith, that are configured to effect the functionality of one or more components associated with theappliance 12. - As described in more detail hereinafter with respect to
FIGS. 25 and 26 , themodel editor 40 is typically used by auser 14 associated with themanufacturer 14A of thetoolkit 10 or of theappliance 12, such as an engineer or software developer, to refine and constrainmodels 40 prior to themodels 40 being made available tousers 14 external to themanufacturer 14A. The provides themanufacturer 14A with the ability to control thespecific toolkit 10 functionalities available tousers 14 outside the company, and, in doing so, provides the ability for themanufacturer 14A to offer and sell licenses for thetoolkit 10 that enableusers 14 access to only certain levels of functionality. Eachparticular model 40 in essence is a template or a plurality of constraints defining at least part of the functionality of thesystem configurator 28. Eachmodel 40 enables at least onemodel instance editor 42 and defines the functionalities of themodel instance editor 42. Thus,n models 40 can be used with thetoolkit 10 to generate n instances of data elements derived therefrom. An exemplary data element can comprise at least one representation of a portion of a message data payload to be sent across thecommunications network 18. - The
model instance editor 42 creates instances of data elements that comprise amodel instance 42 and that are related toappliance 12 functionality and derived from the appliance user domain data 180 model. Themodel instance editor 42 is configured at least in part by the appliance user domain data 180 model irrespective of theappliance 12 so that thetoolkit 10 can be used withdifferent appliances 12. Validation rules, which essentially comprise a communications protocol, for thecontent 20 can be derived from the appliance user domain model. Themodel instance 42 can comprise a hierarchical data structure, a graph, a fault tree, or a relational database and can be configured or developed by auser 14 interacting with theuser interface 64. - Referring now to
FIGS. 5-7 ,models 40 can be grouped into a variety of types based on the function of themodel 40 andmodel instances 42 created therefrom. A user interfacedomain data model 40A can be used to create user interface domaindata model instances 42A, such as that illustrated inFIGS. 5 and 7 , which are used to control the functionality of auser interface 64 of theappliance 12, which can be agraphical user interface 68. In this example, the user interface domaindata model instance 42A includes user interface control objects 60A-C displayed in themodel instance editor 32 and corresponding to each of three user interface controls 62A-C to be displayed on theuser interface 64 of theappliance 12. The user interface control objects 60A-C are converted or propagated by aconverter 34 included in thesystem configurator 28 intocontent 20, which is sent to acontent target 22 of thesystem configurator 28, theviewer 38. Looking now toFIG. 6A , theviewer 38 then creates a rendering of thegraphical user interface 68 as it would appear on theappliance 12 once the user interface domaindata model instance 42A has been sent to theappliance 12 ascontent 20. This simulation enables theuser 14 to observe and, if desired, modify the appearance of thegraphical user interface 68 without having to repeatedly reprogram theappliance 12 itself. As illustrated inFIGS. 6B and 6C , the user interface domaindata model instance 42A can also be sent toother content targets 22, such as apersonal computer 70 or a remote client 72, ascontent 20 to enable theuser 14 to visualize theuser interface 64 and tailor theuser interface 64 to his or her particular needs and tastes. - A
sequence model 40B as shown inFIG. 7 is another type ofmodel 40 that can be used to create cycles, fault trees, recipes, and tests (see alsoFIG. 47 ). As described herein, thesame sequence model 40B can be used to generate a variety of different types of sequence model instances (e.g. instances for a cycle, a fault tree, a recipe, or a test). In some alternative embodiments, multiple sequence models can be required to generate the different types of sequence model instances. A sequence model instance for acycle 42B that is derived from thesequence model 40B is illustrated as acontent target 22 of the user interface domaindata model instance 42A. In this example, anobject 60A of the sequence model instance for acycle 42B corresponding to auser interface control 62A for dispensing ice is propagated or, if necessary, converted by aconverter 34 associated with the user interface domaindata model instance 42A or sequence model instance for acycle 42B into the appropriate format and is provided to the sequence model instance for acycle 42B. - Due to this binding of user interface domain data of the user interface domain
data model instance 42A and controlsystem domain data 182 of the sequence model instance for acycle 42B, when auser 14 actuates theuser interface control 62A, the transition will be initiated, and the cycle specified by the sequence model instance for acycle 42B and created in the manner explained below will be carried out to produce ice. - Objects can be composed of a plurality of other objects according to the objects field definitions. If an object comprises a method which has executable software to set the value of a field defined to hold an object, then that object can be reconfigured by changing the value of the a field from a first object to a second object. This reconfiguration can then result in a different composite or overall
appliance control system 90 behavior. There are many useful purposes for anappliance control system 90 whose behavior can be changed by changing the values in a first objects field to a third object from a second object. For example, a cycle accessory could use this technique to change acycle structure 80. Likewise, both a consumables reader and a recipe book wand could use these techniques to customize the behavior of theappliance control system 90 according to appliance user domain data 180, sourceidentification domain data 186, user interface domain data the data about the cycle, data about a consumable, and the like. - There are many mechanisms which can initiate and manage the dynamic configuration of an
appliance control system 90. However, these mechanisms (seeFIG. 34 ) will need a common design framework with which to accomplish the dynamic configuration. Some portions of the dynamic configuration can be accomplished during the compile process, while other portions may be accomplished at post-compile time (also known as runtime). -
FIG. 7 illustrates several ways that theappliance 12 can obtain information necessary to carry outappliance 12 operation, including information about cycles of operation, and generate a cycle structure to perform a cycle of operation. Here,cycle structure information 82 represents information about or associated with acycle structure 80 to be produced by thecycle engine 88.Cycle structure information 82 can include modifications to be made to an existingcycle structure 80, information to be used to create anew cycle structure 80, or a cycle structure requiring conversion or some sort of manipulation into acycle structure 80 suitable for use with theparticular appliance 12.Cycle structure 80 represents a set of instructions for use by theappliance control system 90 of theappliance 12 for carrying out a cycle of operation. An exemplaryappliance control system 90 is illustrated inFIG. 9 and is described in detail by International Patent Application Publication No. 2006/135758, which is incorporated by reference herein in its entirety. In one embodiment, thecycle structure 80 can be created by using messaging for communicating thecycle structure information 82 to thecycle architecture 86 via thecommunications network 18, at which point thecycle engine 88 can discover information for creating or modifyingcycle structure 80 for use by theappliance control system 90. Thecycle engine 88 then proceeds to build a new or modifiedfunctional cycle structure 80. Optionally all messages can be routed through an embedded virtual router (EVR) 92, which results in thecycle engine 88 using its own configuration API for building the new or modifiedcycle structure 80. The execution by thecycle engine 88 to create or modify thecycle structure 80 can also be accomplished through theEVR 92. - An
arbitrary software component 94 in communication with thecycle engine 88 or in communication with thecycle architecture 86 can also be used to create a new or modifiedcycle structure 80. Thearbitrary software component 94 can reside in a variety of locations with respect to a controller component comprising thecycle architecture 86. Hence, all messages between thearbitrary software component 94 and thecycle architecture 86 can be optionally routed through anEVR 92 across thecommunications network 18. As well, thecycle architecture 86 can optionally communicate with theappliance control system 90 through anEVR 92. - In another scenario, an operational cycle accessory, such as the
toolkit 10, can be communicatively coupled to thecommunications network 18, discover thecycle architecture 86, and send thecycle architecture 86 messages to affect its structure and, ultimately, its execution. In this case, the operational cycle accessory would typically include a combination of software and data to accomplish the configuration of thecycle architecture 86. Alternately, the aforementioned cycle architecture might send a discovery message seeking identification of all sources of thecycle structure 80. Sources of the cycle structure may be in ROM, Flash, EE Prom, an operational cycle component, and/or an external source connected to thecommunications network 18. Once thecycle structure information 82 located and retrieved, thecycle engine 88 can commence modifying itsown cycle structures 80 according to the new cycle structure data. As shown inFIG. 7 , when theconverters 34 associated with thecycle structure information 82 and thecycle structure 80, read the sequence model instance for acycle 42B, theconverter 34 associated with the cycle structure information converts the sequence model instance for acycle 42B intocycle structure information 82, and theconverter 34 associated with the cycle structure converts the sequence model instance for acycle 42B directly into acycle structure 80. Both thecycle structure information 82 and thecycle structure 80 generated by the associatedconverters 34 are generated based on thesame content 20 comprising the sequence model instance for acycle 42B. - In another embodiment of a
cycle architecture 86, a first portion of thecycle structure information 82 is compiled and a second portion is made available at runtime. The second portion can include a plurality of cycle structure data, either in direct or indirect form, which can be combined with the first portion such that thecycle engine 88 operates on the aggregate of the first and second portions to create operational cycle execution software. The second portion can represent differences in the first portion where differences may be additions, deletions, or modifications to elements, their relative orders, or their relative relationships within thecycle structure 80. Thecycle engine 88 can appropriately apply the differences represented in the second portion by looking at the identifiers of the elements of the first portion of thecycle structure information 82 and the identifiers of the elements of the second portion of thecycle structure information 82. The advantage of this embodiment of acycle architecture 86 is that changes to theaggregate cycle structure 80 can be made while preserving the first portion such that subsequent corruption or absence of the second portion would not effect the integrity of the first portion, thus enabling the operation cycle execution software to revert to compiled default state, such as might be supplied at the factory. A second advantage of this embodiment is that specialized variants of the first portion can be designed which can accommodate the constraints presented by theappliance control system 90 and more specifically the controlling components of theappliance 12 such as limited memory and also provide capability for receiving and adapting to a second portion, providing flexibility and configurability within the constraints for the cost of the specialized variants. Forappliances 12, this can be an important requirement in some cases. - Alternatively, when an operation cycle accessory is disconnected from the
cycle engine 88, the data of the second portion can be optionally removed by thecycle engine 88, causing a reversion to the factory default state. This is a form of anti-piracy protection in that the operation cycle accessory must be present for the additional functionality represented by the accessory to be available to theappliance 12. Optionally, the connection between theappliance 12 and the operation cycle accessory can include a transfer of the first portion into a memory in theappliance 12. In this case, additional operation cycles can be retained without the permanent presence of the operational cycle accessory. It should also be noted that an operation cycle accessory can be virtual in that the software and data and ability to communicate with thecycle engine 88 can reside on an external device connected to thecycle engine 88 viacommunications network 18, and not physically attached to the containingappliance 12. - It is to be noted that an operational cycle component can have other elements that are not the aforementioned operation cycles or constituent data and complied portions. For example, the operational cycle component can include software code to configure a
cycle engine 88 for communication and other functions or code to put software architecture into an alternate mode for the purpose of diagnostics or changing memory. - An appliance cycle of operation performed by the
appliance control system 90 can be optimized by information associated with consumables on which the appliance is operating. For example, thecycle structure 80 could be built specifically to accommodate some properties or attributes of the consumable or to accommodate some properties or attributes of a consumable holder. The body or bodies that comprise information, identifiers of functionalities, properties, attributes, and property and attribute values related to consumables can be referred to as sources of information about a consumable or “consumable information holders.” Examples of consumable information holders include the consumable itself, a data pod, the consumable holder, a user interface, and a tag. The consumable holder can be a sensing consumable holder that might use a lid sensor, for example, for sensing attributes about the consumable contained therein. These attributes could then be used by theappliance 12 to further refine operation of the consumable holder. For example, if a particular consumable holder is supposed to dispense 2 ounces, a lid with an amount sensor could be configured with an analog circuit coupled to theappliance 12 to provide a level or volume feedback so that theappliance 12 can dispense exactly 2 ounces rather than a time-based approximation. - Information associated with a consumable can include amount and/or composition or other attributes that would characterize the magnitude of the usefulness of the consumable. In this case, the
cycle architecture 86 may adapt itself based on the information. For example, if the consumable were a dishwashing rinse aid and the consumable holder had only 90% of the standard dose, thecycle architecture 86 might adapt itself to this condition by increasing the time of the rinse phase to compensate for the lack of rinse aid. Information associated with a consumable can also include parameters of an operating cycle such as personal preferences of a user 14 (e.g., doneness or crispiness preferences), and data about the consumable holder, theappliance 12, or other accessories or components thereof. - In a laundry example, the
appliance control system 90 may provide information to thecycle architecture 86 about process variables like soil level, load size, soil type, etc. Based on this information associated with a consumable, including the process variable information, thecycle architecture 86 or anarbitrary software component 94 in conjunction with acycle engine 88 can reconfigure thecycle structure 80 to adapt to the process variable information. The consumable holder may comprise thearbitrary software component 94 and be able to reconfigure thecycle structure 80 to adapt to the process variable information. Reconfiguration can be accomplished in at least two ways. In one way, thearbitrary software component 94 can read thecycle structure 80 and communicate with thecycle engine 88. In a second way, anarbitrary software component 94 can be preconfigured and communicate that configuration to or instruct thecycle engine 88 about the configuration. - One example of commands associated with an operating cycle is a collection of key value pairs. Keys comprise parameter names having a meaning, wherein the meaning is known by the
cycle engine 88 such that values associated with the keys are thereby associated with the meanings. This enables the values to be used in the contexts of the meanings to modify and/or control the cycle of operation of theappliance 12. - Another example of commands associated with an operating cycle is a byte array representing a message packet for a network. In one embodiment of this example, the byte array could be arranged according to the packet definition disclosed in WO2006135726 comprising a functional identifier, an op code, and a message data payload, wherein the identifier and op code relate to an executable function or method implemented by the
cycle engine 88 and or cycle engine API. Further, the arguments or parameters of the function or method correspond to the data elements contained in the payload of the message packet. - The consumable holder, therefore, can contain all the functionality of and participate in all the embodiments that an operational cycle accessory in communication with an
appliance 12 having acycle architecture 86 can. Therefore in one embodiment, a consumable holder is an operation cycle accessory that further physically contains and can also further be enabled to directly actuate the introduction of a consumable into anappliance 12. - As seen in
FIG. 8 ,content 20 can be derived from or provided by components orresources 46 outside the appliance 12 (external content 20) or from memory or other information contained within the appliance 12 (internal content 20) and acquired by acontent 20acquisitioner 102.Appliance software framework 104, which includes thecycle architecture 86 ofFIG. 7 , receives thecontent 20 and creates appliance control functionality 100. The appliance control functionality 100 provides and controls theuser interface 64 and user interaction, as well as provides and controls theappliance control system 90. As an example,FIG. 9 also illustrates theappliance control system 90 disclosed in International Patent Application Publication No. 2006/135758 and further includes thesystem configurator 28 for managing the functionality thereof. - As shown in
FIGS. 10-15 ,sequence model 40B can also be used to generate a sequence model instance for afault tree 42C.Appliances 12 are often diagnosed and serviced using anappliance fault tree 110, and the sequence model instance for afault tree 42C serves to present auser 14 with various displays or views on theuser interface 64 informing theuser 14 of possible problems and solutions associated with theappliance 12. The initial step of anappliance fault tree 110 will normally be associated with a symptom of failure or state of theappliance 12. - With continued reference to
FIGS. 10-15 , the exemplary initial step is performed upon determination of a state of theappliance 12 in which theuser 14 is experiencing slow or no water dispensing. Each step of theappliance fault tree 110 including the initial step can have one or more associated actions. Actions can be various tasks or checks performed at each step. Exemplary actions can comprise, but are not limited to, taking a measurement, asking a question, requesting user input, describing an observation, and the like. The exemplary action associated with the initial step is to ask a question, “Is the refrigerator connected to a water supply?” The action can also comprise obtaining the answer, which can be “Yes” or “No.” - Transitions are paths to other steps in the
fault tree 110 and that are normally conditional on the result of a given step or action. At each step of the sequence model instance for afault tree 42C, an action can be performed comprising asking a question regarding operation of theappliance 12, and the question can be presented on theuser interface 64. Once an answer to the question has been obtained, the sequence model instance for afault tree 42C will perform a transition to another step in theappliance fault tree 110. As shown inFIG. 11A , each question will also have correspondingcontent 20 that is displayed on theuser interface 64. Typically, question-basedcontent 20 will include buttons or other user interface controls 62D, 62E that will enable theuser 14 to input an answer to the question. Alternatively, theappliance 12 can automatically determine the answer to the question using various components, such as sensors. Thus, an answer can be obtained either via user interaction with theappliance 12 via the user interface controls 62, or an associated device, or automatically by the components of theappliance 12 or an associated device. - As shown in
FIG. 10 , when an answer of “Yes” is obtained when the initial step is carried out, theappliance fault tree 110 can transition to the next step. Thus, the question and answer function as arguments that, in combination, form a conditional statement in theappliance fault tree 110. While proceeding through theappliance fault tree 110, the specific steps, actions, and transitions are performed based on whether the various conditional statements in theappliance fault tree 110 are true or false. If a conditional statement is false, no transition will occur, and theappliance fault tree 110 will proceed in order. If a conditional statement is true, then a transition can be performed, which can act as a path to a particular step, action, and/or transition. In some cases, the action can be displaying a solution on theuser interface 64. - As shown in
FIG. 10A , an answerdetermination attribute editor 120, which is also a component of themodel instance editor 32, can be used to edit thecontent 20 displayed to theuser 14 at a given transition corresponding to a given question and answer conditional statement. The answerdetermination attribute editor 120 is illustrated as having a number of well-known elements frequently included in computer-based editing applications, such asclickable buttons 122, a display window orviewer 38, and atext entry box 124. - As shown in
FIGS. 12-15 , the sequence model instance for afault tree 42C can also be used to present a use andcare guide 130 to theuser 14 via theuser interface 64 of theappliance 12, which can comprise theGUI 68.Content 20 comprising text to be displayed to theuser 14 can be created using adocument model instance 42G (FIG. 43 ) for a use andcare guide 130, which specifiescontent 20 can be displayed on theuser interface 64 that enables auser 14 to select asymptom 132 included in the use andcare guide 130. The selection of asymptom 132 can automatically bias theuser 14 to an entry or starting point in the sequence model instance for afault tree 42C so that theuser 14 does not have to waste time looking through irrelevant symptoms. In addition, a givenappliance 12 can have more than onefault tree 110 associated with it. For example, there can be afault tree 110 associated with different components or different subsystems in theappliance 12. There can also bedifferent fault trees 110 associated with accessories connected to theappliance 12, and eachfault tree 110 can have an initial step A that would normally serve as the starting point for entry into therespective fault tree 110. It may be, and often is the case, that any givenfault tree 110 for anappliance 12 might have multiple entry points. Further, a transition, as discussed previously with respect toFIGS. 10-15 , is not limited to transitioning to a sequential step within thesame fault tree 110. For example, a transition from a first step on afault tree 110 can lead to a second step on anotherfault tree 110. - The
fault tree 110 and/or use andcare guide 130 provided by the sequence model instance for afault tree 42C can also be presented in aviewer 38 ascontent 20 in the form of a diagram 140 as shown inFIGS. 14 and 15 . Theuser 14 can troubleshoot problems by simply using acontent target 22 capable of presenting thecontent 20. For example, as shown, auser 14 can use thepersonal computer 70 to view a web page including the information, or the user can use aprinter 142 to print out a copy of the diagram 140. In either instance, the sequence model instance for afault tree 42C can be used to diagnose problems and potentially find a solution without requiring a visit from a serviceperson. - Looking now to
FIGS. 16-23 , a message datapayload model instance 42D is used to managemessage data payloads 150 comprising afirst portion 152 having usable data and a second portion 154 having information to describe the usable data. The first andsecond portions 152, 154 can comprise an ordered collection ofmessage elements 156 or at least onemessage element 156. One of the first andsecond portions 152, 154 can have a direct or indirect reference to the other of the first andsecond portions 152, 154, which can effectively bind the portions. The constraints defined by themodel 40 can be used within themodel instance editor 32 to create the association between the first andsecond portions 152, 154.Various message elements 156 can be compiled to create aportion 152, 154 using themodel instance editor 32 during creation of themessage data payload 150 and can comprise meaningful text describing the meaning of themessage element 156. Usable data from thecommunications network 18 can be combined with non-usable data describing the usable data wherein theuser 14 can understand the meaning of the usable data. Based on the message datapayload model instance 42D and theproperties 158 thereof, aviewer 38 can display acomplete specification 160 that updates in real time as theuser 14 edits the message datapayload model instance 42D and properties thereof. - Specifically,
FIGS. 16-18 show the creation and advantages of useable data in the inventiveappliance development toolkit 10. The system configurator 28 displays the messagedata model instance 42D in themodel instance editor 32, aviewer 38 showingproperties 158, and aviewer 38 showing thespecification 160. Elements and choices of a command structure or sequence are created in themodel instance editor 32 as an instance of amessage data payload 150. Afirst portion 152 of amessage element 156 comprises useable data and is set inbyte 1. A second portion 154 identifies thefirst portion 152 and is set in thus example inbyte 0. Themodel instance editor 32 can have constraints that limit or guide what a use can do in creatingmessage payloads 150. In any event, themodel instance editor 32 creates an association between the first andsecond portions 152, 154 where rules for data representation provided by thecommunications network 18 over which themessage payload 150 is to be sent provide the constraints. - A
user interface 64 orviewer 3 can display a visualization of themessage data payload 150 from themodel instance editor 32 so that auser 14 can conveniently create themessage data payload 150 for immediate use and see a graphical representation of themessage data payload 150 as it is created. An example of that display is seen inFIGS. 17 and 18 . InFIG. 17 , a viewer associated with anapplication 50 can display relevant data including the identifiers (second portion). As shown inFIG. 18 , aspecialized viewer 38 associated with anapplication 50 or, alternatively, incorporated directly into thesystem configurator 28 can also be associated with acommand generator 170 such that the associatedviewer 38 displays thevarious message elements 156 of themessage data payload 150 and thecommand generator 170 enables theuser 14 to define and initiate the sending of amessage data payload 150 to affect the operation of theappliance 12. Thecommand generator 17 can include one ormore buttons 122 for initiating the sending of a definedmessage data payload 150. -
FIGS. 19-23 show in steps the creation of a message datapayload model instance 42D using variables, values, and value holders, which will be described in more detail hereinafter inFIG. 37 . See the description of holders, infra. As well,FIG. 20 shows the use ofmenus 174 andforms 176 for guiding or limiting auser 14 in selecting and inputting information according to the constraints. Anerror message 172 can be displayed if aproperty 158 or parameter associated therewith is incorrect or improper according to the constraints. Amodel instance editor 32, which includes constraints as will be discussed in more detail hereinafter, is constrained by amodel 40. InFIG. 20 , an API object has been selected and theuser 14 has right clicked the object, bringing upmenu 174 having an “Insert New” feature. Referring to a message data payload model 40C ofFIG. 37 , an API is allowed to have a minimum of zero relationships with amessage data payload 150 and a maximum of n or infinite relationships with amessage data payload 150. Therefore, if the user selects the “Insert New” item on themenu 174, a sub-menu (not shown) orform 176 can appear, enabling theuser 14 to choose to create a message data payload object. In this case, themodel instance editor 32 reads themodel 40 such that it is informed by themodel 40 what the possible relationships between each current and potential objects are so that themodel instance editor 32 editor can configure its functionality from the information in themodel 40 so as to constrain itself according to themodel 40. In this way, a constrainedappliance development toolkit 10 constrained by amodel 40 can limit the types of objects created and the available relationships between objects which in turn limits the ability to createcontent 20, which in turn limits the appliance control functionality. -
FIG. 24 illustrates types ofmodel instances 42 that can be associated or bound by themodel instance editor 32 of theappliance development toolkit 10. Essentially anything in the different domains of data can be bound for later use. Although appliance user domain data 180 and controlsystem domain data 182 are here shown, it will be understood that binding among other domains is equally within the scope of the invention, e.g., user interface domain data 184 and/orsource identification domain 186 data. -
FIG. 25 illustrates the benefit of constraining thedevelopment toolkit 10 for use by users who want to createcontent 20 for effecting the cycle of operation of the user interaction of anappliance 12 but do not have all the engineering skills or knowledge to do so. The constraineddevelopment toolkit 10 enables auser 14 that has less than all the required knowledge or skills to createcontent 20 that effects the cycle of operation or the user interaction of anappliance 12 wherein the effect is less than the full effect thatcontent 20 from an unconstrainedappliance development toolkit 10 can create. The constraints used to constrain use of thetoolkit 10 can be specified within amodel 40. It is to be understood that for the purposes of describing the invention, unless otherwise specified, reference to thetoolkit 10 herein can be understood as a reference to a constrained toolkit and/or an unconstrained toolkit. - Appliance manufactures build appliances for a competitive market and compete with one another in the areas of cost and innovation. Accordingly,
manufacturers 14A must continuously invest in new products, new technologies, and new innovations while simultaneously reducing cost and improving quality. The ability of anappliance manufacturer 14A to develop a means by which to engage thousands of additional persons for the purpose of creating new product innovation without raising costs would be a disruptive competitive advantage for thatmanufacturer 14A. However, because only highly trained and specialized engineers can successfully and properly create appliance control functionality, previous attempts bymanufacturers 14A to engage the thousands of additional persons in an uncontrolled manner have not resulted in the production of functional and properly-engineered appliance control functionality. As appliance control functionality plays a critical role in a person's everyday life, such as by affecting the clothes people wear, the food they eat, and the air they breathe, proper implementation of appliance control functionality is a necessity. Many appliance control functionalities are also potentially dangerous and must be precisely managed by the specialized and intricately engineered appliance control system, such as appliance control functionalities associated with high voltage sources, high heat sources, gases, liquids, and chemicals. - The use of constraints to contain the
appliance development toolkit 10 enables the thousands of additional persons to createcontent 20 that effects and/or the cycle of operation or the user interaction of an appliance by providing guidelines and rules for innovation. In particular, the constraints can enableusers 14 to createcontent 20 that effects/affects only certain appliance control functionalities deemed appropriate for manipulation by themanufacturer 14A while preventingusers 14 from creatingcontent 20 that effects/affects the appliance control functionalities associated with critical systems and components of theappliance 12. This enables themanufacturer 14A to ensure that theappliance 12 is safe for use by maintaining the integrity of the core appliance control functionalities. For example, themanufacturer 14A would constrain thetoolkit 10 so as to preventusers 14 from manipulating precision controls, such as those for high heat, electricity, or harmful substances, so that the food, clothing, air, or other article or elements is properly operated upon by theappliance 12. - As shown in
FIG. 26 , there are three approaches to providing a constrainedappliance development toolkit 10. They are through a constrainingmodel 40, a constrainingmodel instance 42, and hard-coded constraints, which can comprisecontent 20 as previously described. Constraints define at least a portion of the functionality of the constrainedappliance development toolkit 10. It is generally themodel instance editor 32 of thesystem configurator 28 which uses the constraints to partially limit and partially control the functionality and therefore thecontent 20 which thesystem configurator 28 is able to create. - As shown in
FIG. 28 and inFIGS. 7 and 8 , appliance control functionality can be created fromcontent 20 generated from anappliance development toolkit 10. This is also shown inFIG. 25 viafirst content 20 andsecond content 20 created by theappliance manufacturer 14A and auser 14 respectively. - Referring back to
FIG. 25 , theappliance manufacturer 14A may provide a constraineddevelopment toolkit 10 which is hard-coded. Theappliance manufacturer 14A can also use anunconstrained toolkit 10 to create thethird content 20, which can include a constrainingmodel 40, a constrainingmodel instance 42, or both. In the latter two cases, the constrainedappliance development toolkit 10 uses thethird content 20 to define at least a portion of the constraints. - Referring back to
FIG. 26 , it is generally themodel instance editor 32 of thesystem configurator 28 which uses the constraints to partially limit and partially control the functionality and therefore thecontent 20 which thesystem configurator 28 is able to create. Themessage data payload 150 instance may have been created by an unconstrainedmodel instance editor 32 or by a constrainedmodel instance editor 32. The system configurator 28 of the appliance development toolkit 10 (unconstrained and constrained) is able to loadmultiple model instance 42 files inmodel instance editors 32 for the creation of and associations between objects. - A constrained
model instance editor 32 constrained by hard-code is shown inFIG. 26 . This approach can achieve the same results as the other two approaches, but at a higher development cost over time because eachnew model 40 or eachnew model instance 42 interaction needs to be hard-coded. The previous two approaches rely on a data driven approach with is lower cost over time. -
FIG. 27 includes an illustration of using a constrainingmodel instance 42. On the right side of the model instance editor is a sequence model instance for acycle 42B for a washing machine. Themodel instance editor 32 is being used to create a custom cycle with the sequence model instance for a cycle. As shown, the custom cycle includes a transition from the idle state to the fill tub state wherein the action object for the fill tub state is responsible for the exact control actions to be taken when the fill tub state is entered. In anunconstrained toolkit 10, theuser 14 can specify any control action from the universe of control actions as the action to be taken in the fill tub state. However, the constrainedtoolkit 10 includes an message datapayload model instance 42D which provides a set of control actions less than the universe of control actions such that the user can associate at least one command from the message datapayload model instance 42D with the fill tub action object of the sequence model instance for acycle 42B in order to define the control action to be taken when the fill tub state is entered. Note that the level limit on the filllevel message element 156 is between 20 and 80%. This prevents theuser 14 from specifying a value for fill level either above 80% or below 20%. -
FIG. 28 depicts theappliance development toolkit 10 interacting with anappliance 12 via itsappliance software framework 104 by way ofcontent 20 created by the toolkit. In this embodiment, thecontent 20 is created by one or moremodel instance converters 34 and includes abuilder file 190 and a plurality ofresources 192, which can comprise one ormore resources 46. Aresource 192 can be a data set containing data. Aresource 192 can be a file or collection thereof, a database, a stream of streaming data, an event source, a network connection for communicating data and the like. In all cases, the nature of the data for aresource 192 ranges from images and videos to XML, relational databases, language conversions, and animation definitions. - Consumers/
users 14 enjoydynamic user interfaces 64, especiallygraphical user interfaces 68. Even better are multi-media interfaces that combine audio, visual, and tactile stimuli to create the ultimate user experience. However,users 14 keep their appliances for 10-12 years, and as such it is desirable to provide a variety of user experiences over time to keep theuser 14 engaged and excited about the user experience of theappliance 12. The capability to update and transform amulti-media user interface 68 on anappliance 12 is desirable.Themes 194 are collections ofresources 192 which can be applied to the components or controls of amulti-media user interface 68 through a mapping at runtime. Themeing is the application ofthemes 194 to themulti-media user interface 64 at runtime such that that theuser interface 64 transforms dynamically in response to theapplication 50. - Similarly, the capability to create a very dynamic user experience wherein a plurality of user interface controls or stimuli cause other plurality of user interface stimuli to trigger is desirable. Moreover, an additional feature is to have the different pluralities of user interface stimuli related through a mapping so that when the mapping changes, the user experience also changes. An
animation framework 196 includes animation execution software and animation definitions connected to other components of theappliance software framework 104, including properties of the UI controls 62 so that the rendering of the UI controls 62 is affected by the animation execution software operating on the animation definition. - In both cases of themeing and
animations 198, creating associations betweenresources 192, animations,themes 194, and user interface controls 62 is essential and complex. The appliance development toolkit ofFIG. 28 is configured to create the necessary object representations and associations therebetween in order to generate thecontent 20 necessary for theappliance software framework 104 to build the objects at runtime, including UI controls 62, animation definitions (i.e. objects), data objects from resources, and objects which associate or bind the aforementioned together to achieve the dynamic graphical andmulti-media user interface 68 for theappliance 12. - The main output of the
toolkit 10 in this embodiment is abuilder file 190. Thebuilder file 190 contains information including object identifiers, object type (class) identifiers, and relationships between identifiers so that abuilder 200 in theappliance 12 can read the file at startup or on demand and create the runtime object collections, hierarchies, graphs that control the dynamic graphical andmulti-media user interface 68 for theappliance 12. Thebuilder file 190 is generated by amodel instance converter 34 that traverses the model instance objects resident in thetoolkit 10 memory and exports thebuilder file 190content 20 in response. The user interface domaindata model instance 42A includes instances of objects from the user interfacedomain data model 40A, which includes class definitions for pages and user interface controls 62 and the relationship definitions therebetween. - A view or
page 202 contains one or more pages, and a user interface control (UI control) 62 contains one or more UI controls 62. Pages are objects that display a plurality of user interface components and are generally designed to be navigated to and navigated from. UI controls 62 are generally reusable templates of components that must be combined with data at runtime to create a useful control. UI controls 62 are things like buttons, knobs, slider bars, select boxes, text boxes, check boxes, image frames, movie frames, input windows, and the like. UI controls 62 have a plurality of properties which are named components of theUI control 62 which either receive or emit data. It is also possible to think of a UI control property as a variable wherein the identifier of the variable would be UI control identifier, property identifier (i.e., UI control identifier, control property identifier). Examples of UI control properties are font, color, style, size, data, shrinkable, hideable, hide, and the like. - The behavior, rendering, visualization and functionally of a
UI control 62 is affected by its properties. UI controls 62 can also emit data which can also be associated with a property. Examples of properties include current data,state 246, current size, current state of visibility and the like. By connecting or associating UI control properties to representations of variables known as data sources orbinding objects 204 at runtime, theUI control 62 is able to be affected by other actors in theappliance software framework 104 and to be effectively rendered. Additionally, the connection to properties is able to affect other actors in theappliance software framework 104 which are connected to or are listening to property values of aUI control 62. For example, a tactile animation can be listening to a pressed property of aUI control 62 so that when the press property is true, the tactile animation executes. The aforementioned UI controls 62, their properties, representations of variables, binding and actors objects, and the relationships therebetween are created by thebuilder 200 in response to thebuilder file 190. - To accomplish both themeing and animations, the
appliance development toolkit 10 creates a representational hierarchy of objects which can be exported to thebuilder file 190 and read by thebuilder 200 to create the aforementioned runtime objects of theappliance software framework 104. First thetoolkit 10 is configured to create objects representing runtime UI controls 62 and to associate adata source identifier 206 with certain properties of the created UI controls 62 wherein thedata source identifier 206 is later associated with aresource identifier 210 to create a first binding map, bindingmap 1. Next, a set ofresource dictionaries 212 are created each having a plurality ofresource identifiers 210 and where eachresource identifier 210 is associated with afile identifier 214, which can comprise an address to aresource 192. Thefile identifiers 214 can be in the form of a URI, URL, URN, path, and the like.Different resource dictionaries 212 can contain thesame resource identifier 210 associated with adifferent file identifier 214, thereby creating the basis for themeing. - The
toolkit 10 can also be configured to enable theuser 14 to associate a plurality of theme identifiers 216 each with one or more resource dictionary identifiers 218 in a second binding map, bindingmap 2, so that when atheme 194 is selected at runtime, data for application to a property of aUI control 62 can be acquired by finding the address of the data through the use of the information contained in bindingmap 2, bindingmap 1 and theresource dictionary 212. - Referring still to
FIG. 28 , at runtime, thebuilder 200 reads thebuilder file 190 and creates the UI control objects and associates them as shown inFIG. 29 withdata sources 204. Binding objects/data sources 204 are created for each uniquedata source identifier 206 in thebuilder file 190 and locator objects orresource binding objects 220 are created for eachunique resource identifier 210 in thebuilder file 190. Thebinding objects 204 are associated with the properties of the UI control objects according to thebuilder file 190 and associated with theresource binding objects 220 according to thebuilder file 190 The addresses offile identifiers 214 associated with theresource identifiers 210 in theresource dictionaries 212 corresponding to the currently selectedtheme 194 are set into theresource binding objects 220 so that theresource binding objects 220 can acquire the data from theresources 192 when requested. - Using this arrangement, a
theme manager 222 applies a newly selectedtheme 194 by creating newresource binding objects 220 and associating them with the appropriatebinding objects 204 according to the information in thebuilder file 190. In this manner, auser 14 of thetoolkit 10 can construct multiple mappings between resource data, UI control properties, data streams, animations, and media files, such that changing a the mappings results in a dynamic transformation to the graphical ormulti-media interface 68 of anappliance 12. - There can be multiple types of resource binding objects 220. An SQL binding object will know how to execute SQL against a database found at the address of its associated locator
resource binding object 220. A media binding object may know how to un-marshal a binary media file of a certain type. There can also be binding objects pointing to controlsystem domain data 182 associated with the cycle of operation enabling either the UI control objects and or the animation definitions to interact with theappliance control system 90,appliance software framework 104, and cycle of operation. - A special type of
resource 192 is a language resource. By choosing atheme 194, thegraphical user interface 68 can transform between a first and second language. Also because of the many to many relationships between two or more of the theme identifiers 216,resource dictionaries 212, andresources identifiers 210 are composable, atheme 194 can haveresources 192 supporting a Spanish Christmas, and anothertheme 194 could haveresources 192 supporting a Spanish victory in the soccer World Cup, wherein there can be oneresource dictionary 212 for the Spanish language, one for Christmas, and one for Soccer. -
Animations 198 work the same way as doother resources 192.Animations 198 can have two binding points, an input and output. The output of ananimation 198 is a function of its input value determined by its binding and its f(x) function, which can be any mathematical function. The binding to an animation is depicted inFIG. 28 wherein the animation is bound to twodata sources 204 in the form ofresource binding objects 220, as well as to an animation binding object. In effect, theanimation 198 acts like aresource 192 ofFIG. 29 having its input connected to one resource binding object and its output connect to another resource binding object. When thetheme manager 222 changes themedanimations 198, it creates two new resource binding objects, sets an address of the new animation definitions (either input or output) into each of the new resource binding objects, and optionally loads theanimation 198 into memory for execution. - Additionally, the
toolkit 10 can constructresources 192 for access by theappliance software framework 104. Theappliance 12 can also have an interface for receiving anew builder file 190 and/ornew resources 192 and can either combine or interchange the new and the existing files so that theappliance 12 can be updated over time withnew pages 202,new themes 194,new animations 198, andnew resources 192. - Looking now to
FIGS. 30-42 , in a first embodiment, a hierarchy of objects starts with a single root object that we can call “root.” The root object has 0 to n children and the children may be of different types (i.e.,type 1 and type 2). In turn, the 0 to n children may also have children. Therefore, an object A that is a child of root and has children of B and C is considered to be both a child and a parent and can be referred to either as a child or a parent depending on the context. Except for the root, all objects in a hierarchy are a child and those with children are also parents. The root is a parent unless it has no children. - The first embodiment is a simple example of an implementation of a hierarchy wherein the parent child relationships are direct relationships. In a direct parent child relationship, the parent includes an identifier identifying each of its children. Therefore, the parent cannot be decoupled from its children because it comprises the identifiers of its children.
- A second embodiment exemplifies an indirect parent child relationship wherein neither the parents nor the children include identifiers of the other. Instead, a holder object contains the identifiers of both. For example, object Q is a holder and contains an identifier of object A, object B, and object C, wherein object A is of
type 1, object B is oftype 2 and object C is oftype 3. Objects A, B, and C do not have access to the identifiers of one another. The primary responsibility of object Q is to contain identifiers for objects A, B, and C thereby establishing that there is some type of relationship between objects A, B, and C. There are a number of ways that the nature of the relationship between A, B, and C can be ascertained. In a first example, object Q has access to information defining the possible relationships between objects oftype type 1 andtype 2 as being a parent-child relationship whereintype 1 must be the parent andtype 2 must be the child. The information would also define a second relationship definition between objects oftype 1 and objects oftype 3 as being a parent-child relationship whereintype 1 must be the parent andtype 3 must be the child. With the information, object Q can interpret the relationship between object A, B, and C as a parent with two children wherein A is the parent of children B and C. - A third embodiment exemplifies an alternate approach for creating an indirect parent child relationship wherein neither the parents nor the children include identifiers of the other. In this embodiment, multiple holders are used to create a holder hierarchy. For example, object Q is a holder and contains an identifier for object A. Object Q also contains an identifier for a second holder object X. Object X contains an identifier for object B. Holder object Q is a parent holder with respect to holder object X because holder object Q contains the identifier to holder object X. Therefore the relationship between object A and object B be can be inferred as a parent child relationship when observed from the perspective of holder object Q and holder object X because holder object Q are in a direct parent child relationship. In this case, object A and object B are in an indirect parent-child relationship.
- A forking element includes a hierarchy having a first parent object with at least two children where at least one of the two children has one or more second children and where the one or more second children have one or more third children. An interpreter of the first parent, the one of the two children, the one or more second children, and the one or more third children interprets the two children as valid values of the parent and interprets that the one or more second children is applicable to the hierarchy when the first parent is paired with the at least one of the two children that is the parent of the one or more second children
-
FIG. 30 illustrates a set of direct parent child relationships having an example of a forking element as part of a message datapayload model instance 42D. The First Element ofByte 0 has two valid values, First Choice and Second Choice. Second Element is a child of First Choice and Third Element is a child of Second Choice. Given this arrangement, when amessage data payload 150 corresponding to the illustrated message datapayload model instance 42D is transmitted on a network as part of a network message, the value ofByte 0 would determine the meaning ofByte 1. For example, if the useable data transmitted inByte 0 corresponded to the first portion of useable data associated with First Choice, then an interpreter or user of the network message could ascertain thatByte 1 contained useable data associated with the second portion of the Second Element rather than Third Element. - In an extension of the first example exemplifying a nested forking element, the Second Element also has two children Third and Forth Choice respectively each having a child Forth and Fifth element respectively. Here an interpreter or user of the network message could ascertain the meaning of
Byte 2 by looking at the useable data found inByte 1 and associating the useable data ofByte 1 with corresponding second portion ofByte 2. For example if the useable data ofByte 1 corresponded to the useable data of Third Choice, an interpreter could then determine that the meaning of the useable data found inByte 2 would correspond to the second portion of the Forth Element. A forking element comprising at least one additional forking element creates a nested forking element. -
FIG. 37 shows a plurality ofmodels 40 that form a simplified UML class diagram that includes examples of relationship definitions including both direct and indirect parent child relationships. It should be noted that a UML class diagram defines possible relationships between future instances of objects derived from at least one class definition by depicting an arrangement of relationship definitions used to define relationships between class definitions where the possible relationships are a function of the relationship definitions. A UML class diagram is useful because the arrangement of and relationships between each of the future instances of objects derived from at least one class definition may be verified and or at least partially predicted using the UML diagram. - Generally, in an appliance runtime environment,
variables 230 are identifiers which have an associatedvalue 232 where different actors in the runtime system set thevalue 232 of the variable 230. However,FIG. 37 depicts additional possibilities for expanded use ofvariables 230 and theirvalues 232 and illustrates the benefit of holders. - In some cases, a variable 230 can have a relationship with a
value 232 where, for example, the relationship depicts a request for the variable 230 to be set to thevalue 232 at a future time. In other cases, a variable 230 could be associated with a plurality ofvalues 232 in order to depict thepossible values 232 of a variable 230 at some future time. - Yet in other cases, as in forking elements within a
message data payload 150 or a capabilities definition, values 232 are parents ofother variables 230. Relationships like this are useful to express hierarchies ofchoices 234, variable validation, payload validation, command validation, user interface behavior, etc. For example a hierarchy ofchoices 234 might have a root ofquestion 1 with choices A and B as children, where choice A has a child ofquestion 2 having choices of C and D as children. This hierarchy could be used to drive a wizard, such as the use andcare guide 130, such that the answer toquestion 1 would dictate if another question would need to be asked. For example, if the answer toquestion 1 was choice A, then question 2 would need to be asked to get an answer of either choice C or choice D. However, if choice B were the answer ofquestion 1, then no further questions would be necessary. Using this technique, the behavior of the wizard could be controlled by the capability definition and an answer sheet comprising the list of questions asked and the answers given could be validated using the capability definition. - Looking again at
FIG. 37 , the previous example illustrated byFIG. 30 can be understood in the context of the message data payload model 40C shown inFIG. 37 . Also shown is that components of the message data payload model 40C extend or inherit from class definitions invariable model 40D. Amessage element 156 can be a variable 232 or it can be avariable holder 236. Also,choices 234 andvariable definitions 238 extend a valueabstract class 240. - Using the previous example of
FIG. 30 and applying it the model ofFIG. 37 , a forking can occur when anabstract value 242, such as achoice 234, has a child of a variable 230, like amessage element 156, which is shown to be a potential arrangement in that achoice 234 extends anabstract value 242 viaabstract value class 240, and thatabstract value 242 can have a variable 230 as a child, and thatmessage element 156 extends or is amessage element 156. These relationship definitions as shown in the simplified UML class diagram define the possibility to havemessage elements 156 having children ofchoices 234 with thosechoices 234 having children ofother message elements 156 as shown inFIG. 30 , which shows an instance of the message data payload model 40C ofFIG. 37 . - However, it can be undesirable to have direct parent child relationships between
variables 230 and theirvalues 232 as shown inFIG. 30 and as allowed by themodel 40D ofFIG. 37 . As shown inFIG. 37 , avariable holder 236 can include a reference to a variable 230 and avalue 232. In this way, an indirect parent child relationship can be formed as described in the second embodiment exemplifying an indirect parent child relationship (above) and as shown in the first and second occurrences ofFIG. 39 , where afirst holder 236 holds a reference to afirst parent variable 230 and afirst child value 232 and asecond holder 236 holds a reference to thefirst parent variable 230 and asecond child value 232.FIG. 39 shows that by using the first and second holder objects, the first parent variable can participate in two different indirect parent child relationships; one with thefirst child value 232 and the other with thesecond child value 232. - Additionally, as shown in
FIG. 37 , another embodiment shows how an indirect parent child relationship can be formed. According to the figure, an instance of avariable holder 236 can also include a reference to an instance of an object that derives from theabstract value class 240, which includesvalue holder 244,value 232,variable definition 238, andchoice 234. And an instance ofvalue holder 244 can include a reference to an instance of an object that derives from valueabstract class 240. In this way, an indirect parent-child relationship can be formed as described in the third embodiment exemplifying an indirect parent child relationship (above) and as shown in the third and forth occurrences of the third and second hierarchies inFIG. 40 , respectively, where in the third occurrence, a first variable holder has a reference to or holds afirst parent variable 230 and has a reference to or holds asecond value holder 244 which then has a reference to or holds afirst child value 232. In this way an indirect parent child relationship is formed between thefirst parent variable 230 and thefirst child value 232 via the direct parent child relationship between the firstvariable holder 236 and thesecond value holder 244. Likewise in the 2nd hierarchy, thefirst parent variable 230 is shown for a forth time in the forth occurrence (first and second occurrences fromFIG. 39 ) in a similar indirect parent child relationship as is shown in the third hierarchy but with asecond child value 232.FIG. 40 illustrates a variable 230 participating in two indirect parent child relationships where each relationship involves a different child by usingvariable holders 236 andvalue holders 244 as prescribed by thevariable model 40D ofFIG. 37 . - Additionally, as shown in
FIG. 37 , the valueabstract class 240 is defined as having a direct parent child relationship withvariable holders 236 or variable 230. This is the enabling model relationship definition that supports the forking element ofFIG. 30 as well as the relationship between Value: Wool: 4 and Attribute: Delay: Default=0 ofFIG. 38 . -
FIG. 37 also illustrates themodel 40 for thecapabilities model 40F of anappliance 12.FIG. 38 illustrates acapabilities model instance 40F comprising a hierarchy ofvariables 230 tovalues 232 andvariables 230 tovariable definitions 238 in repeating direct parent child relationships. This hierarchy known as a capabilities tree is a child of thestate 246 object idle, meaning that when theappliance 12 is in an idle state, the hierarchy contained by state object idle represents the operational capabilities of theappliance 12 from a command and control perspective. From the command perspective, all valid commands can be derived by observing and interpreting the hierarchy. A command, in its simplest form, is a message that results in oneappliance variable 230 being set to avalue 232. The variable 230 and thevalue 232 together are referred to as a paired element 252 (also shown inFIG. 41 ). In many cases however, a valid command to anappliance 12 includes a plurality ofinterdependent variables 230 each having avalue 232 selected from a plurality ofvalid values 232 and wherein the selection of thevalues 232 determines a portion of the otherinterdependent variables 230 that also must be specified with avalue 232 to form a well formed command orcommand container 250. - As previously described in the hierarchy of
choices 234 example, theappliance capabilities model 40F can be used to determine what additionalinterdependent variables 230 must be included in acommand container 250 based on the selectedvalue 232 of each variable 230.Command containers 250 have at least one pairedelement 252. Acommand container 250 may be validated by traversing the capability tree to observe and verify that each of thevariables 230 orvariable holders 236 in thecommand container 250 is one of a root of the tree and a parent in the tree wherein the parent is avalue 232 orvalue holder 244 as part of the plurality of pairedelements 252, to observe and verify that each pairedelement 252 is located at one of the root or a direct descendent of another pairedelement 252 connected to the root, and to observe and verify that at least one pairedelement 252 comprises avalue 232 orvalue holder 244 as a leaf node of the tree. As shown inFIGS. 41 and 42 , a cycle definition, then, includes acommand container 250 wherein thecontent 20 of thecommand container 250 affects the cycle of operation of theappliance 12 when theappliance 12 runtime sets thevariables 230 specified by thecommand container 250 to thevalues 232 specified in thecommand container 250. Other information included in the cycle definition can be used forgraphical user interface 68 rendering and other non-control system domain purposes. - The
capabilities model instance 42F ofFIG. 38 is an example of using only direct parent child relationships betweenvariables 230 and values 232. However, according toFIG. 37 , a different embodiment usingvariable holders 236 andvalue holders 244 can be constructed (similar toFIG. 40 ) where thecapabilities model instance 42F would comprisevariable holders 236,variables 230,value holders 244, and values 232. - It is apparent, by observing
FIG. 38 , howvalue holders 244 andvariable holders 236 could provide improvement to the compatibility of the twomodel instances FIG. 37 , thevariable model 40D provides some common base classes for use by the message data payload model 40C and thecapabilities model 40,Content 20 includesvariables 230 andvalues 232 arranged in a nested repeating hierarchy of alternate levels ofvariables 230 havingvalues 232 andvalue having variables 230. However, because direct parent child relationships are used in themodel instances scenario 1, there is less reuse than could be accomplished ifvariable holder 236 and/orvalue holders 244 were used as inscenario 2 andscenario 3 ofFIGS. 39 and 40 , respectively. Referring the variable ‘Cycle’ in thecapabilities model instance 42F and the element ‘cycle’ in the message datapayload model instance 42D, it can be observed that these two information elements are the same logical entity. In both cases, the elements refer to thememory variable 230 in the appliance runtime which corresponds to one of the selected, request, and active cycle of theappliance 12. However, thecapabilities model instance 42F contains a complete validation hierarchy as exemplified by the ‘Delay’ variable 230 underneath the ‘Wool’value 232. By contrast, the message datapayload model instance 42D on the right has two hierarchies, one for the ‘cycle’ and one for the ‘Delay’ because the designer of this context made a choice to arrange the information into separate hierarchies. Therefore, because the information is in multiple hierarchies and is partitioned and organized differently, the information must be duplicated in separate information elements as shown inScenario 1. - However, if the information were created using the previously described technique of
Scenario 3 ofFIG. 40 , the information would not require duplication and the information elements or identifiers thereof (i.e.variables 230,values 232,message elements 156,choices 234,variable definitions 238, etc.) could be re-used throughout multiple hierarchies each have a different context. Using this approach then, the multiple contexts can leverage information from the multiple contexts because there are common or shared objects within those contexts which can be used to gather information across multiple contexts by using the shared objects as navigation objects for jumping from and jumping to different contexts. This is further explained and exemplified byFIG. 40 and the description thereof. - For example, an
appliance 12 can communicate its operational capabilities to a client by sending acapabilities model instance 42F to the client. The client can then form acommand container 250 and send thatcommand container 250 back to theappliance 12. Theappliance 12 can take thevariables 230 from the pairedelements 252 of thecommand container 250 and validate thecommand container 250 by traversing the capabilities tree as previously described. Once validated, theappliance 12 can automatically convert thecommand container 250 into one or moremessage data payloads 150 for constructing network messages to execute thecommand container 250 across multiple control boards communicating on thecommunications network 18. This automatic conversion and validation is enabled by usingvariable holders 236 andvalue holders 244 to construct the capabilities and message data payload model instances, 42F and 42D, respectively. - When
variables 230 andvalues 232 participate in more than one hierarchy, wherein each hierarchy has a context different from the other hierarchies, it is difficult to only use direct parent child relationships. For this reason, the UML class diagram ofFIG. 37 depicts avariable model 40D wherein auser 14 can use either of the at least onevariable holder 236 and the at least onevalue holder 244 in creating at least one hierarchy of elements forcontent 20 independent of any relationship that may otherwise exist between the variable 230 and other elements and between thevalue 232 and other elements so that the variable 230 and thevalue 232 can be used in different contexts with different relationships while maintaining their relationship with each other via the at least onevariable holder 236 and the at least onevalue holder 244. -
FIG. 42 depicts the use of an appliance development toolkit 10 a first set of constraints creating a first set ofcontent 20 with which asecond user 14 using anappliance development toolkit 10 having a second set of constraints could use to create acycle definition 262. As previously described acycle definition 262 includes acommand container 250 with at least onepair element 252 derived from a collection ofappliance variables 230 and values 232. The appliance namespace includes a collection of uniquely identifiable andmeaningful variables 230 for anappliance 12. Therefore theuser 14 of thetoolkit 10 with the second set of constraints could create acycle definition 262 by selecting data from theappliance model instance 42J shown inFIG. 42 , which comprises a plurality ofmodel instances 42 used by theappliance 12, and specifically from theappliance namespace 260. As theuser 14 constructs thecycle definition 262, thetoolkit 10 can validate thecycle definition 262 using thecapabilities model instance 42F. Theuser 14 can associate data about thecycle definition 262 including sourceidentification domain data 186 which includes brand emblems and other licensable data or other data including usage text, help, and one or more identifiers of persons, consumables, and articles, and the like. -
FIG. 43 illustrates the use of adocument model instance 42G within adomain model instance 42H interacting with aconverter 34 to createcontent 20 for display in aviewer 38. The purpose of a document model (not shown) is to enable auser 14 to use themodel instance editor 32 to create andview content 20 associated with adomain model instance 42H within thesystem configurator 28 before final export to acontent target 22. In a sense, theviewer 38 is acontent target simulator 52. - A domain model (not shown) is an abstraction or
model 40 associated with real world constructs like cars, buildings, trees, law, language, media, finance, and just about any topical concept imaginable without respect to non-domain concerns like formatting, language, style, persistence form and the like. - In
FIG. 43 thedomain model instance 42H is an ingredient substitution model and the non-domain model instance is the containeddocument model instance 42G shown in the dashed box. As shown, thedocument model instance 42G is an arrangement of objects (shown under the UIText object) including markup objects for formatting, special objects for creating spaces or punctuation, text objects for creatingstatic content 20, and domain objects able to contributecontent 20 based on their properties, functionality, and composition. - A
converter 34 traverses the arrangement to createhtml content 20 for the internet browser basedviewer 38 on the right. In this way, auser 14 can specify the behavior of thecontent target 22 with respect to thecontent 20 by creating data for simulation of thecontent target 22. Additionally, viewing thecontent 20 aids theuser 14 in understanding the meaning of the domain model 40H in that a portion of theviewable content 20 is a function of the domain model 40H. Therefore thecontent 20 andviewer 38 together help theuser 14 validate and verify the composition of the domain model 40H. -
FIG. 44 depicts binding between appliance user domain data 180 and appliance controlsystem domain data 182. As shown, a cycle outcome model instance 42I for cooking comprising a food identifier, a vessel identifier and a doneness identifier is bound to acycle structure 80 identified by SCF5 wherein when thecontent 20 is generated for theappliance 12 from the cycle outcome model instance 42I and the sequence model instance for acycle 42B, and appliance control functionality ofFIG. 8 is created by theappliance software framework 104 ofFIG. 7 andFIG. 28 . Auser 14 can affect the cycle of operation by selecting elements of the user interface domain data 184 rendered on theuser interface 68 and bound to thecycle structure 80 identified by SCF5. - In this way, the
graphical user interface 68 ofFIG. 46 can display the sourceidentification domain data 186 and other data on theuser interface 64 of theappliance 12 in response to the identifiers either sensed from a sensor like a scanner or selected via theappliance user interface 64. Moreover, as previously discussed, thecycle definition 262 can be automatically translated intotransmittable network messages 266 by a message generator 264 ofFIG. 45 using the message datapayload model instance 42D ofFIG. 42 andFIG. 45 . -
FIG. 47 shows an example of how anappliance development toolkit 10 according to the invention is used in interaction with auser 14 and anappliance 12 to diagnose anappliance 12. It further shows additional examples of the use of a constrainedtoolkit 10 usingmodel instances 42 as the constraining component. Thetoolkit 10 is configured to create one ormore test scripts 270 having at least two steps, each step being separated from its adjacent steps by a transition condition that includes a logic expression resolvable to a Boolean transition value, at least one command statement associated with one of the at least two steps that instructs what should happen when the at least one step is the current step so that a test engine can execute the at least one command statement contemporaneous with the transition of the at least one step from the current step to the next step. Thetoolkit 10 also provides information associated with at least onemessage element 156 in amessage data payload 50 so that themessage data payload 50 is uniquely identifiable within a universe of pre-definedmessage data payloads 50 for theappliance 12. (See the foregoing discussion of identifiers.) Aconverter 34 will place thetest script 270 into a form to be readable or at least useable in diagnosing anappliance 12. - There will be associations of command statements and
message elements 156 created by thetoolkit 10 so that atest engine application 50A can create acommand container 250 based on the test script. Command statements will include such things as questions to a user such as shown inFIGS. 11-15 .Holders editor 10 to effect flexibility in creating command sequences for thetest script 270. Thetest engine application 50A is configured to observesubsequent network messages 266 and relate those to a transition logic in thetest script 270, and to evaluate the logic for transition to the next step as it traverses a hierarchy in thetest script 270. - In one embodiment, a second a communications driver can be configured to establish a communication link with the
test engine application 50A, and a faulttree tool application 50B is configured to access one ormore fault trees 110 to construct acommand container 250 on instructions in the fault tree(s) 110 and to convey thecommand container 250 to thetest engine application 50A via the second communication link during execution of a command statement in thefault tree 110. - So it can be seen that a
model instance editor 32 can use the message datapayload model instance 42D to create the data that amodel instance editor 32 uses, along with a sequence model instance fortests 42K, to create the test script (which is a sequence model instance variant). Thetest engine application 50A uses thetest script 270 in communication with asmart coupler 56, such as a smart cable, to communicate with theappliance 12 and with theuser 14. Meanwhile amodel instance editor 32 uses a sequence model instance for afault tree 42C to create a sequence model instance variant, such as a fault tree, that a faulttree tool application 50B uses in interaction with theuser 14. - A sequence model instance for
tests 42K is similar to other instances using thesequence model 40B in that it allows theuser 14 to create a set of steps separated by transition conditions having logic to drive the condition where each step has an associated action specifying the tasks to be done in that step. A sequence model instance fortests 42K can use message datapayload model instances 42D as constraining elements for the actions in each step. This is accomplished in a similar fashion previously described forFIG. 27 wherein the message datapayload model instance 42D is used to constrain a sequence model instance for acycle 42B. - Referring back to
FIG. 47 , the sequence model instance for afault tree 42C is constrained as well using the sequence model instance fortests 42K wherein each test in the sequence model instance fortests 42K might have an identifier or an identifying test object that can be bound to the action of a step in the sequence model instance for afault tree 42C at tool time such that when the faulttree tool application 50B reaches a step wherein atest script 270 should be executed, it can communicate with thetest engine application 50A to invoke thetest script 270 corresponding to the identification of the test object at runtime. - The
test engine application 50A, having been previously constrained by elements from the message datapayload model instance 42D and having actions of steps bound to message datapayload model instances 42D can use the binding to automatically construct and transmituseable messages 266 from thetest engine application 50A to theappliance 12 using the method as previously described forcycle definition 262 translation tomessage data payloads 150. -
FIGS. 48 , 48A, and 48B illustrate binding between multiple instances of user domain data 180 to controlsystem domain data 182, which is illustrated at a high level inFIG. 23 . The controlsystem domain data 182 comprises a cycleoutcome model instance 42I, 42B and a sequence model instance for a cycle 4B that can be used for acycle structure 80 for acooking appliance 12. To achieve a desired outcome, a set of cooking profiles (FIG. 44 ) are created each having multiple components specifying various parameters associated with the cooking cycle. - To get the doneness of crispy donuts, the profiles in
FIG. 44 indicate that theuser 14 needs to use an iron skillet in a 30″ cavity, and in the other case we have a glass crock pot in a 27″ cavity; thus, auser 14 can cook those donuts differently to achieve the same outcome, and the desired cycle outcome will point to the specific sequence for the cycle. Different profiles anddifferent cycle structures 80 can therefore achieve the same outcome given a set of appliance user domain data 180 elements like the food type, cavity size, and the pan. - Using the recipe specified by one of the sequence model instance for a recipe with a first set of
portions 42L and the sequence model instance for a recipe with a second set ofportions 42M, the selection of which is based on the cooking profiles, theuser 14 first gets the ingredients. In this example, theuser 14 is using the sequence model instance for a recipe with a first set ofportions 42L: get 5 ounces of flour, 2 ounces of sugar. The sequence model instance for a recipe with a first set ofportions 42L then transitions to thenext state 246 called mix. Theuser 14 then mixes the ingredients and transitions to the next state to cook. Theuser 14 puts the mix in the pan and forms the dough, gets a pan, places the dough in the donut forms in the pan, and then transitions into state cook, where theuser 14 places the pan in theappliance 12 and uses theuser interface 46 to select the food pan and doneness to select the cycle. - The ingredients substitution model 40N and
instance 42N thereof are both appliance user domain data 180. For a portion of flour, there is an alternate portion of crushed seaweed, and a substitution object in the ingredientssubstitution model instance 42N holds the primary and alternate portion and enables auser 14 to substitute one for the other and still complete the desired cooking cycle. - Likewise, we have a second substitution that shows a substitution between sugar and Splenda. So the arrows between the ingredients and the alternate portions and the substitution window point up to both the sequence model instance for a recipe with a first set of
portions 42L and the sequence model instance for a recipe with a second set ofportions 42M, and as seen in the sequence model instance for a recipe with a second set ofportions 42M, the ingredients automatically changed out the ingredients from 5 ounces of flour to 60 ounces of crushed seaweed and from 2 ounces of sugar to 4 ounces of Splenda. This relationship between these models/model instances enables theuser 14 to fluidly accommodate issues that arise during cooking. - The alternate portion can also have nutritional information associated therewith so that as sequence model instance for recipes call for certain portion substitutions, the nutritional information is derived from the portions and then compared that to the constraints from the meal planner discussed below, allowing the meal planner to then actually achieve the substitutions based on nutritional constraints.
- As shown in
FIG. 48 , this ability to transform and suggest a recipe comprises a meal planner that can query other smart agents of information to figure out how to best plan the meal. The meal can also be a combination of multiple recipes, such as a lasagna followed by donuts for dessert. The meal planner will thus query for the participants in the meal, each person's schedules, the profiles of the participates to note food preferences, allergies, diets, and doctor's orders that would create constraints on the meal planner. The meal planner will then use the information garnered from these queries to select either certain recipes or certain ingredients for recipes to conform to the preferences of the people, the schedules of the people, or the nutritional constraints that people might have based on their diets, allergies, etc. - The other constraint that a meal planner could look at would be an inventory system constraint where an inventory system actually knows the available portions that are in the house and then the meal planner could take that and select recipes or do ingredient substitutions or recipes based on the inventory at hand. It could also populate a shopping list if there were certain things that it highlighted as not being available or being in conflict with a preference of a person or a diet of a person, then it could kind of spit out a shopping list and say to the user of the meal planner, hey, we better get this. And of course it could automate that transaction by having it ordered, delivered, etc.
- While the invention has been specifically described in connection with certain specific embodiments thereof, it is to be understood that this is by way of illustration and not of limitation, and the scope of the appended claims should be construed as broadly as the prior art will permit.
Claims (70)
1. A development toolkit for creating a message data payload for use on a communications network having rules for data representation, the development toolkit comprising:
an editor configured to create a first portion of a message data payload having usable data for transmission over the communications network, and to create a second portion of the message data payload having information to describe the usable data, wherein the editor comprises constraints that limit the manner in which creating the first and second portions and the association occurs, the constraints being defined in part by the rules for data representation, and
a user interface to display a visualization of the message data payload from the editor whereby a user can conveniently create a message data payload for immediate use and see a graphical representation of the message data payload as it is created.
2. The development toolkit of claim 1 wherein the editor is further configured to create the first and second portions in a first form selected from one of a hierarchical tree structure, an object graph structure, an xml structure, a text structure, and a rows and columns cell structure, and a second form where the message data payload is arranged as at least a portion of a network message packet.
3. The development toolkit of claim 1 further comprising a model wherein one of the constraints and the rules for data representation are partially derived from the model.
4. The development toolkit of claim 3 wherein the model is one of a UML class diagram, an EMF Ecore model, a database schema, an XML schema, data in a database, and data in an XML file.
5. The development toolkit of claim 3 wherein the editor is configured to create an instance of at least a portion of the message data payload from the model.
6. The development toolkit of claim 1 wherein the rules for data representation are included in a data file and the constraints are derived from the data file.
7. The development toolkit of claim 1 wherein the references of the one of the first and second portions to the other of the first and second portions is one of direct and indirect.
8. The development toolkit of claim 1 further comprising a converter to generate content using the message data payload from the editor, and a second user interface to display the content derived from the message data payload.
9. The development toolkit of claim 8 wherein the content is a document.
10. The development toolkit of claim 9 wherein the document is one of human readable, machine readable, and a communications specification.
11. The development toolkit of claim 9 wherein the document includes a portion of the message data payload.
12. The development toolkit of claim 8 wherein the first portion is at least one bit and the second portion is scaling data.
13. The development toolkit of claim 12 wherein the at least one bit is converted into a numeric value by reference to the scaling data.
14. The development toolkit of claim 13 wherein the numeric value is one of signed and unsigned.
15. The development toolkit of claim 13 wherein the numeric value comprises engineering units having a value different from the value of the at least one bit directly converted to a signed or unsigned value.
16. The development toolkit of claim 1 wherein first portion is at least one bit and the second portion is a descriptor of the at least one bit.
17. The development toolkit of claim 1 wherein the constraints allow the editor to create a message object comprising first and second portions, to create at least one message element comprising first and second portions, and to associate the at least one message element with the message object
18. The development toolkit of claim 17 wherein when the editor creates at least two message elements and associates the at least two message elements to the message object, the constraints allow the editor to arrange the at least two message elements into an ordered collection so that the message data payload includes at least one message object and at least two message elements.
19. The development toolkit of claim 17 wherein the constraints allow the editor to create at least one value object having a value and to associate the at least one value object with the at least one message element wherein the usable data includes the value.
20. The development toolkit of claim 19 wherein the constraints allow the editor to create a forking element where at least one value object comprises a second message element different from the at least one message element wherein the second message element is applicable to the message data payload when the at least one message element has a value equal to the value of the at least one value object.
21. The development toolkit of claim 18 further comprising a converter to generate content using the message data payload from the editor, wherein the content is an electronic document and the converter is configured to arrange first and second portions of the electronic document to show the ordered collection.
22. The development toolkit of claim 18 wherein the content is an electronic document and the converter is configured to arrange the first and second portions of the electronic document to show the ordered collection of the at least one message element and each of the at least one message elements' valid values and each valid values another message element.
23. The development toolkit of claim 9 wherein the document includes data used for the construction of an electronic message for the network.
24. The development toolkit of claim 9 wherein the document further comprises data not used for the construction of an electronic message for the network.
25. The development toolkit of claim 24 wherein the data not used is documentation data describing the data used.
26. The development toolkit of claim 5 wherein the at least one model instance comprises one of a hierarchical data structure, a graph, a tree, and a relational database.
27. The development toolkit of claim 5 wherein the user interface includes gestures by which a user can build up the model instance.
28. The development toolkit of claim 5 wherein the model instance comprises at least one representation of a portion of a network message.
29. The development toolkit of claim 17 wherein the at least one message element comprises meaningful text describing the meaning of the message element.
30. The development toolkit of claim 20 wherein the constraints allow the editor to repeat the addition of value objects to elements and other elements to value objects infinitely to define nested forking elements.
31. The development toolkit of claim 5 further comprising a converter to generate content using the message data payload from the editor, and a second user interface to display the content derived from the message data payload.
32. The development toolkit of claim 31 wherein the content presented by the second user interface changes in response to the editor changing the model instance.
33. The development toolkit of claim 31 wherein the content is a human readable electronic document comprising a protocol specification having a plurality of message definitions.
34. The development toolkit of claim 31 wherein content comprises and illustrates a message definition having at least one forking element.
35. The development toolkit of claim 34 wherein the illustration includes a visual indication of sets of message elements belonging to the same forking element wherein one of the set can be included in the message data payload wherein the inclusion is a result of the value of the previous message element.
36. The development toolkit of claim 8 wherein the content is configured by the converter for a predetermined content target to use the content with an appliance when the content target is in communication with the appliance.
37. The development toolkit of claim 33 wherein the content target is the appliance.
38. The development toolkit of claim 1 further comprising an identifier assigner.
39. The development toolkit of claim 1 further comprising a data analyzer.
40. The development toolkit of claim 1 wherein the second portion is not useable on the network.
41. The development toolkit of claim 1 wherein the editor further comprises
a first graphical user interface having a means to create the first and second portions in a first form wherein the first form is selected from one of a hierarchical tree structure, an object graph structure, an xml structure, a text structure, and a rows and columns cell structure;
a first interface for saving the at least one instance;
a second interface for loading the at least one instance into the editor;
at least one third interface for changing a portion of at least one instance;
wherein the converter creates an alternate representation of a portion of the at least one instance in a second form having information arranged as at least a portion of a network message packet; and
a second graphical user interface for displaying the second form.
42. The development toolkit of claim 41 wherein the converter is configured to observe the operation of the editor and update display of the second form.
43. The development toolkit of claim 42 wherein the editor is configured to command the converter to update the display of the second form.
44. The development toolkit of claim 1 wherein the useable data includes one of a literal value and a position indicator for the literal value within the message data payload.
45. The development toolkit of claim 18 wherein the editor includes a command enabling a user to change the order of the ordered collection.
46. The development toolkit of claim 18 wherein the editor automatically determines the location within the message data payload of at least one element in the ordered collection.
47. The development toolkit of claim 18 wherein the editor automatically determines the location within the useable data of at least one element in the ordered collection.
48. The development toolkit of claim 47 wherein the location is one of the starting position and ending position wherein position is one of a bit count, a byte count, and a word count.
49. The development toolkit of claim 46 further comprising a converter to generate content using the message data payload from the editor, and a second user interface to display the content derived from the message data payload wherein the editor automatically determines the location within the content of at least one element in the collection.
50. The development toolkit of claim 49 wherein the content is a document and wherein the document illustrates the order of the ordered collection.
51. The development toolkit of claim 50 wherein one of the editor and the converter automatically determine the location within the message data payload of at least one element in the collection
52. The development toolkit of claim 49 wherein the content is a document.
53. The development toolkit of claim 52 wherein the editor comprises a component that can create an occurrence definition for an element within the ordered collection wherein elements within the ordered collection can be configured to one of repeat, have a maximum number of occurrences, have a minimum number of occurrences, be optional, and occur a specified number of times in response to the occurrence definition.
54. The development toolkit of claim 53 wherein the occurrence definition is determined by at least 2 properties and their respective values associated with the at least one message element.
55. The development toolkit of claim 53 wherein the document illustrates the occurrence definitions.
56. The development toolkit of claim 9 wherein the converter formats the document to illustrate the number of network messages required to get the useable data within the message data payload transmitted.
57. The development toolkit of claim 17 wherein the editor is configured to define a length parameter of the at least one message element.
58. The development toolkit of claim 57 wherein the length parameter is defined using units of bit count.
59. The development toolkit of claim 57 further comprising a converter for converting the first and second portions into a document wherein the document illustrates the length of one of the message data payload and the useable data.
60. The development toolkit of claim 59 wherein the document illustrates a message element spanning a byte boundary.
61. The development toolkit of claim 59 wherein the document illustrates a message element occupying less than a total byte.
62. The development toolkit of claim 1 wherein the user interface includes an indication describing a level of compatibility between the message data payload and the constraints.
63. The development toolkit of claim 62 wherein the indication is a message describing an incompatibility between the message data payload and the constraints.
64. The development toolkit of claim 1 further comprising a converter for converting the first and second portions into a document wherein the document illustrates an incompatibility between the message data payload and the constraints.
65. The development toolkit of claim 17 further comprising a converter for converting the first and second portions into a document wherein the document illustrates an incompatibility between the message data payload and the constraints wherein the incompatibility indicates at least two message elements having occurrence definitions which are incompatible.
66. The development toolkit of claim 65 wherein the first of the two message definitions is configured by the editor to repeat infinitely.
67. The development toolkit of claim 8 wherein the second user interface also displays information about communications in response to the transmission of the useable data over the communications network.
68. The development toolkit of claim 67 wherein the information includes the second portion.
69. The development toolkit of claim 8 wherein the second user interface also displays a command window for sending commands from the development toolkit over the communications network.
70. The development toolkit of claim 69 wherein the command window is configured to receive information included in the first portion and wherein the development toolkit automatically converts the received information into a network message including the second portion.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/556,617 US20090327879A1 (en) | 2008-06-03 | 2009-09-10 | Appliance development toolkit with editor to create usable network message data |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US5844008P | 2008-06-03 | 2008-06-03 | |
PCT/US2009/046186 WO2009149219A2 (en) | 2008-06-03 | 2009-06-03 | Appliance development toolkit |
US12/556,617 US20090327879A1 (en) | 2008-06-03 | 2009-09-10 | Appliance development toolkit with editor to create usable network message data |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2009/046186 Continuation WO2009149219A2 (en) | 2008-06-03 | 2009-06-03 | Appliance development toolkit |
Publications (1)
Publication Number | Publication Date |
---|---|
US20090327879A1 true US20090327879A1 (en) | 2009-12-31 |
Family
ID=41398855
Family Applications (17)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/531,165 Abandoned US20110185342A1 (en) | 2008-06-03 | 2009-06-03 | Appliance development toolkit |
US12/556,738 Expired - Fee Related US7937171B2 (en) | 2008-06-03 | 2009-09-10 | Appliance with user interface behavioral model |
US12/556,713 Abandoned US20090327932A1 (en) | 2008-06-03 | 2009-09-10 | Appliance development toolkit for creating a dynamic user interface for an appliance |
US12/556,723 Expired - Fee Related US8402376B2 (en) | 2008-06-03 | 2009-09-10 | Appliance development toolkit for creating a themeable dynamic user interface for an appliance |
US12/556,650 Active 2031-11-01 US8434063B2 (en) | 2008-06-03 | 2009-09-10 | Appliance development toolkit with editor to create shared variable namespace |
US12/556,774 Active 2031-12-06 US8442794B2 (en) | 2008-06-03 | 2009-09-10 | Toolkit for creating appliance diagnostics |
US12/556,697 Active 2031-12-23 US8484571B2 (en) | 2008-06-03 | 2009-09-10 | Appliance with theme selection |
US12/556,617 Abandoned US20090327879A1 (en) | 2008-06-03 | 2009-09-10 | Appliance development toolkit with editor to create usable network message data |
US12/556,753 Abandoned US20090326687A1 (en) | 2008-06-03 | 2009-09-10 | Meal planning and preparation system |
US12/556,628 Abandoned US20090327998A1 (en) | 2008-06-03 | 2009-09-10 | Constrained appliance development toolkit |
US12/556,803 Abandoned US20100005405A1 (en) | 2008-06-03 | 2009-09-10 | Appliance development toolkit with universal editor |
US12/556,669 Active 2030-06-08 US8136039B2 (en) | 2008-06-03 | 2009-09-10 | Appliance with animation framework |
US12/556,623 Abandoned US20090327929A1 (en) | 2008-06-03 | 2009-09-10 | Appliance development toolkit with editor for namespace allocation |
US12/556,634 Abandoned US20090327930A1 (en) | 2008-06-03 | 2009-09-10 | Appliance development toolkit with editor for binding data |
US12/556,646 Abandoned US20100005445A1 (en) | 2008-06-03 | 2009-09-10 | Appliance development toolkit with multiple converters |
US12/556,761 Active 2029-10-12 US7996176B2 (en) | 2008-06-03 | 2009-09-10 | Toolkit for executing diagnostics in an appliance |
US15/863,073 Abandoned US20180131536A1 (en) | 2008-06-03 | 2018-01-05 | Meal planning and preparation system |
Family Applications Before (7)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/531,165 Abandoned US20110185342A1 (en) | 2008-06-03 | 2009-06-03 | Appliance development toolkit |
US12/556,738 Expired - Fee Related US7937171B2 (en) | 2008-06-03 | 2009-09-10 | Appliance with user interface behavioral model |
US12/556,713 Abandoned US20090327932A1 (en) | 2008-06-03 | 2009-09-10 | Appliance development toolkit for creating a dynamic user interface for an appliance |
US12/556,723 Expired - Fee Related US8402376B2 (en) | 2008-06-03 | 2009-09-10 | Appliance development toolkit for creating a themeable dynamic user interface for an appliance |
US12/556,650 Active 2031-11-01 US8434063B2 (en) | 2008-06-03 | 2009-09-10 | Appliance development toolkit with editor to create shared variable namespace |
US12/556,774 Active 2031-12-06 US8442794B2 (en) | 2008-06-03 | 2009-09-10 | Toolkit for creating appliance diagnostics |
US12/556,697 Active 2031-12-23 US8484571B2 (en) | 2008-06-03 | 2009-09-10 | Appliance with theme selection |
Family Applications After (9)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/556,753 Abandoned US20090326687A1 (en) | 2008-06-03 | 2009-09-10 | Meal planning and preparation system |
US12/556,628 Abandoned US20090327998A1 (en) | 2008-06-03 | 2009-09-10 | Constrained appliance development toolkit |
US12/556,803 Abandoned US20100005405A1 (en) | 2008-06-03 | 2009-09-10 | Appliance development toolkit with universal editor |
US12/556,669 Active 2030-06-08 US8136039B2 (en) | 2008-06-03 | 2009-09-10 | Appliance with animation framework |
US12/556,623 Abandoned US20090327929A1 (en) | 2008-06-03 | 2009-09-10 | Appliance development toolkit with editor for namespace allocation |
US12/556,634 Abandoned US20090327930A1 (en) | 2008-06-03 | 2009-09-10 | Appliance development toolkit with editor for binding data |
US12/556,646 Abandoned US20100005445A1 (en) | 2008-06-03 | 2009-09-10 | Appliance development toolkit with multiple converters |
US12/556,761 Active 2029-10-12 US7996176B2 (en) | 2008-06-03 | 2009-09-10 | Toolkit for executing diagnostics in an appliance |
US15/863,073 Abandoned US20180131536A1 (en) | 2008-06-03 | 2018-01-05 | Meal planning and preparation system |
Country Status (3)
Country | Link |
---|---|
US (17) | US20110185342A1 (en) |
EP (2) | EP2286356A4 (en) |
WO (1) | WO2009149219A2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8982129B1 (en) * | 2010-04-23 | 2015-03-17 | Crimson Corporation | Mapping graph data to a tree structure on a computing device |
US9268883B2 (en) * | 2010-02-26 | 2016-02-23 | The Boeing Company | User interface for presenting information about a product structure for a product |
US9377346B2 (en) | 2013-09-11 | 2016-06-28 | Illinois Tool Works Inc. | Food product scale |
Families Citing this family (123)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9207917B2 (en) * | 2005-12-20 | 2015-12-08 | Oralce International Corporation | Application generator for data transformation applications |
US8082538B2 (en) * | 2006-05-15 | 2011-12-20 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Systems, methods and apparatus for developing and maintaining evolving systems with software product lines |
US8281287B2 (en) * | 2007-11-12 | 2012-10-02 | Finocchio Mark J | Compact, portable, and efficient representation of a user interface control tree |
JP5014187B2 (en) * | 2008-02-07 | 2012-08-29 | 株式会社リコー | Device driver and user interface layout customization method |
WO2009108203A1 (en) * | 2008-02-29 | 2009-09-03 | Hewlett-Packard Development Company, L.P. | Identification of elements of currently-executing component script |
US20090234839A1 (en) * | 2008-03-17 | 2009-09-17 | International Business Machines Corporation | Smart sensor based environment for optimizing a selection of meal plans |
EP2286356A4 (en) * | 2008-06-03 | 2013-03-06 | Whirlpool Co | Appliance development toolkit |
CA2644885C (en) | 2008-11-25 | 2017-01-03 | Electrolux Home Products, Inc. | Enterprise wide system and methods for configuring, diagnosing, and updating appliances |
US20100169712A1 (en) * | 2008-12-30 | 2010-07-01 | Whirlpool Corporation | Method of diagnosing an appliance fault |
US20100169713A1 (en) * | 2008-12-30 | 2010-07-01 | Whirlpool Corporation | Method of customizing a fault tree for an appliance |
EP2204707A3 (en) * | 2008-12-30 | 2012-03-28 | Whirlpool Corporation | Method of diagnosing an appliance fault |
JP4486155B1 (en) * | 2009-03-24 | 2010-06-23 | 尚士 橋本 | Cooking support system, program, recording medium, and method for supporting stocking and inventory management of cooking ingredients |
US8595697B2 (en) * | 2009-07-01 | 2013-11-26 | International Business Machines Corporation | Serializing a templated markup language representation of test artifacts |
US8275586B2 (en) * | 2009-07-08 | 2012-09-25 | International Business Machines Corporation | Enabling end-to-end testing of applications across networks |
US10198935B2 (en) * | 2009-12-08 | 2019-02-05 | Universal Electronics Inc. | System and method for simplified activity based setup of a controlling device |
US8707250B2 (en) * | 2009-12-22 | 2014-04-22 | Board Of Regents, The University Of Texas System | Automation support for domain modeling |
US9513882B2 (en) | 2010-04-15 | 2016-12-06 | Microsoft Technology Licensing, Llc | Platform independent presentation composition |
US8250145B2 (en) | 2010-04-21 | 2012-08-21 | Facebook, Inc. | Personalizing a web page outside of a social networking system with content from the social networking system |
US20110307083A1 (en) * | 2010-06-10 | 2011-12-15 | Siemens Product Lifecycle Management Software Inc. | System and Method for Physics-Oriented System Configuration |
US20120166946A1 (en) * | 2010-12-22 | 2012-06-28 | Jens Bombolowsky | Dynamic handling of instructional feedback elements based on usage statistics |
US9258379B2 (en) | 2010-12-29 | 2016-02-09 | Oracle International Corporation | Session initiation protocol adapter system and method providing stateless node mapping to a stateful server node hosting a communication session for an actor |
US8819631B2 (en) * | 2011-01-13 | 2014-08-26 | Hewlett-Packard Development Company, L.P. | System and method for self dependent web automation |
US8887074B2 (en) * | 2011-02-16 | 2014-11-11 | Apple Inc. | Rigging parameters to create effects and animation |
US10162604B2 (en) * | 2011-06-16 | 2018-12-25 | Microsoft Technology Licensing, Llc | Navigation history visualization in integrated development environment |
US20130063446A1 (en) * | 2011-09-10 | 2013-03-14 | Microsoft Corporation | Scenario Based Animation Library |
CN103890720B (en) * | 2011-10-13 | 2017-07-11 | 伊莱克斯家用产品股份有限公司 | The screen Instant Help with context shortcut on utensil |
US9286589B2 (en) | 2011-10-14 | 2016-03-15 | Caelo Media, Llc | Method and system for customizing a project |
US9055125B2 (en) * | 2011-12-13 | 2015-06-09 | Honeywell International Inc. | System and method of monitoring, control and configuration of security and lifestyle devices |
US8930758B2 (en) * | 2012-01-16 | 2015-01-06 | Siemens Aktiengesellschaft | Automated testing of mechatronic systems |
CA2864758A1 (en) * | 2012-01-20 | 2013-08-25 | Energy Aware Technology Inc. | System and method of compiling and organizing power consumption data and converting such data into one or more user actionable formats |
US8918885B2 (en) * | 2012-02-09 | 2014-12-23 | International Business Machines Corporation | Automatic discovery of system integrity exposures in system code |
JP5238895B1 (en) * | 2012-04-26 | 2013-07-17 | 楽天株式会社 | Information processing apparatus, information processing method, information processing program, and recording medium |
USD713419S1 (en) * | 2012-04-30 | 2014-09-16 | Huawei Technologies Co., Ltd. | Display screen or portion thereof with a graphical user interface |
US20140006867A1 (en) * | 2012-06-29 | 2014-01-02 | National Instruments Corporation | Test Executive System With Process Model Plug-ins |
JP6195617B2 (en) | 2012-07-05 | 2017-09-13 | ピー.シー.オー.エー. デバイシズ エルティーディー.P.C.O.A. Devices Ltd. | Drug dispenser |
ES2649142T3 (en) | 2012-07-30 | 2018-01-10 | P.C.O.A. Devices Ltd. | Container for containing and dispensing solid medicinal pills |
US20140122184A1 (en) | 2012-10-29 | 2014-05-01 | Elwha Llc | Food Supply Chain Automation Grocery Information System And Method |
US20140122168A1 (en) * | 2012-10-29 | 2014-05-01 | Elwha Llc | Food Supply Chain Automation Residential Information System And Method |
US20140122262A1 (en) * | 2012-10-29 | 2014-05-01 | Elwha Llc | Food Supply Chain Automation Residential Food Management Interface Information System And Method |
US20140121807A1 (en) | 2012-10-29 | 2014-05-01 | Elwha Llc | Food Supply Chain Automation Farm Tracking System and Method |
US10719853B2 (en) * | 2012-10-26 | 2020-07-21 | Panasonic Intellectual Property Corporation Of America | Advertisement distribution method and advertisement distribution system |
US10976713B2 (en) | 2013-03-15 | 2021-04-13 | Hayward Industries, Inc. | Modular pool/spa control system |
USD736821S1 (en) * | 2013-03-15 | 2015-08-18 | Pepsico, Inc. | Display screen with graphical user interface |
USD786887S1 (en) * | 2013-04-19 | 2017-05-16 | Samsung Electronics Co., Ltd. | Display screen or portion thereof with graphical user interface |
US20140337753A1 (en) * | 2013-05-07 | 2014-11-13 | Brian McKellar | System and method for editing the appearance of a user interface |
USD774057S1 (en) * | 2013-06-17 | 2016-12-13 | Covidien Lp | Display screen with a graphical user interface for compliance monitoring |
US9864490B2 (en) * | 2013-08-12 | 2018-01-09 | Home Box Office, Inc. | Coordinating user interface elements across screen spaces |
US9507609B2 (en) | 2013-09-29 | 2016-11-29 | Taplytics Inc. | System and method for developing an application |
CN104580079A (en) * | 2013-10-16 | 2015-04-29 | 宇宙互联有限公司 | Remote control system and method |
US10466872B1 (en) | 2013-12-20 | 2019-11-05 | Open Text Corporation | Composable events for dynamic user interface composition |
US9170786B1 (en) * | 2013-12-20 | 2015-10-27 | Emc Corporation | Composable context menus |
USD760783S1 (en) * | 2014-01-03 | 2016-07-05 | Samsung Electronics Co., Ltd. | Display screen or portion thereof with icon |
USD753153S1 (en) * | 2014-01-03 | 2016-04-05 | Samsung Electronics Co., Ltd. | Display screen or portion thereof with animated graphical user interface |
USD762657S1 (en) * | 2014-01-03 | 2016-08-02 | Samsung Electronics Co., Ltd. | Display screen or portion thereof with animated graphical user interface |
USD753679S1 (en) * | 2014-01-03 | 2016-04-12 | Samsung Electronics Co., Ltd. | Display screen or portion thereof with graphical user interface |
IL233295B (en) | 2014-06-22 | 2019-11-28 | Ilan Paz | A controlled pill-dispensing system |
USD754175S1 (en) | 2014-06-30 | 2016-04-19 | Aliphcom | Display screen or portion thereof with graphical user interface |
USD757073S1 (en) | 2014-06-30 | 2016-05-24 | Aliphcom | Display screen or portion thereof with graphical user interface |
USD773503S1 (en) | 2014-06-30 | 2016-12-06 | Aliphcom | Display screen or portion thereof with graphical user interface |
USD753694S1 (en) | 2014-06-30 | 2016-04-12 | Aliphcom | Display screen or portion thereof with graphical user interface |
USD753169S1 (en) | 2014-06-30 | 2016-04-05 | Aliphcom | Display screen or portion thereof with graphical user interface |
JP6336864B2 (en) * | 2014-09-05 | 2018-06-06 | シャープ株式会社 | Cooking system |
WO2016040878A1 (en) * | 2014-09-12 | 2016-03-17 | Comsol Ab | Systems and methods for creating user interfaces for guiding the creation of modeling applications for forming and solving problems in a multiphysics modeling system |
USD778318S1 (en) * | 2015-02-05 | 2017-02-07 | Samsung Electronics Co., Ltd. | Display screen or portion thereof with animated icon |
USD777783S1 (en) * | 2015-02-05 | 2017-01-31 | Samsung Electronics Co., Ltd. | Display screen or portion thereof with icon |
USD776156S1 (en) * | 2015-02-27 | 2017-01-10 | Samsung Electronics Co., Ltd. | Display screen or portion thereof with graphical user interface |
USD777208S1 (en) * | 2015-02-27 | 2017-01-24 | Samsung Electronics Co., Ltd. | Display screen or portion thereof with graphical user interface |
PT3069643T (en) * | 2015-03-19 | 2021-06-02 | Vorwerk Co Interholding | Method for operating an electric motorised kitchen appliance |
CN104714826B (en) * | 2015-03-23 | 2018-10-26 | 小米科技有限责任公司 | Using the loading method and device of theme |
IL238387B (en) | 2015-04-20 | 2019-01-31 | Paz Ilan | Medication dispenser depilling mechanism |
CN106319839B (en) * | 2015-06-30 | 2018-10-19 | 无锡飞翎电子有限公司 | Washing machine and its capacity self-identifying method and the controller identified for capacity |
KR102362654B1 (en) | 2015-07-03 | 2022-02-15 | 삼성전자주식회사 | Oven |
ES2964750T3 (en) | 2015-10-15 | 2024-04-09 | DosentRX Ltd | Image recognition-based dosage form dispensers |
US20170111503A1 (en) * | 2015-10-19 | 2017-04-20 | Genesys Telecommunications Laboratories, Inc. | Optimized routing of interactions to contact center agents based on agent preferences |
WO2017077529A1 (en) | 2015-11-02 | 2017-05-11 | P.C.O.A. | Lockable advanceable oral dosage form dispenser containers |
US11720085B2 (en) | 2016-01-22 | 2023-08-08 | Hayward Industries, Inc. | Systems and methods for providing network connectivity and remote monitoring, optimization, and control of pool/spa equipment |
AU2017210106B2 (en) | 2016-01-22 | 2022-09-22 | Hayward Industries, Inc. | Systems and methods for providing network connectivity and remote monitoring, optimization, and control of pool/spa equipment |
US9519620B1 (en) * | 2016-01-29 | 2016-12-13 | International Business Machines Corporation | Identifying substitute ingredients using a natural language processing system |
USD823326S1 (en) * | 2016-02-08 | 2018-07-17 | Bizagi Group Ltd. | Display screen with graphical user interface |
US10270815B1 (en) * | 2016-06-07 | 2019-04-23 | Amazon Technologies, Inc. | Enabling communications between a controlling device and a network-controlled device via a network-connected device service over a mobile communications network |
IT201600094683A1 (en) * | 2016-09-21 | 2018-03-21 | Cesare Fantuzzi | EQUIPMENT AND METHOD FOR MONITORING AUTOMATIC MACHINES |
US20180150919A1 (en) * | 2016-11-29 | 2018-05-31 | Benjamin Robert Drolet | Method and apparatus for Meal Planning and Optimization |
USD847308S1 (en) * | 2016-12-15 | 2019-04-30 | Spectrum Brands, Inc. | Faucet with a set of icons |
US20180335907A1 (en) * | 2017-05-22 | 2018-11-22 | General Electric Company | Extensible graphical editor for asset modeling |
US10782963B2 (en) * | 2017-09-11 | 2020-09-22 | Siemens Industry Software GmbH | Introducing artifact information system and method |
US10791001B2 (en) | 2018-01-25 | 2020-09-29 | Haier Us Appliance Solutions, Inc. | Diagnostic tools and methods of servicing consumer appliances |
US10506019B2 (en) | 2018-01-25 | 2019-12-10 | Haier Us Appliance Solutions, Inc. | Methods of servicing one or more consumer appliances |
JP6891838B2 (en) * | 2018-03-15 | 2021-06-18 | オムロン株式会社 | Development support equipment, development support methods, and development support programs |
USD877193S1 (en) * | 2018-08-24 | 2020-03-03 | One App Limited | Display screen or portion thereof with graphical user interface |
US10881266B2 (en) | 2018-09-25 | 2021-01-05 | Whirlpool Corporation | Dishwasher and method of operation with settings influenced by food preparation |
US10996948B2 (en) | 2018-11-12 | 2021-05-04 | Bank Of America Corporation | Software code mining system for assimilating legacy system functionalities |
US11631010B1 (en) | 2019-01-06 | 2023-04-18 | Adaptics Limited | System and method for use with connected kitchen appliances |
US11673788B2 (en) | 2019-02-01 | 2023-06-13 | Lab2Fab, Llc | Beverage dispensing and monitoring system |
US10846059B2 (en) | 2019-02-05 | 2020-11-24 | Simply Inspired Software, Inc. | Automated generation of software bindings |
USD913313S1 (en) | 2019-04-22 | 2021-03-16 | Facebook, Inc. | Display screen with an animated graphical user interface |
USD930695S1 (en) | 2019-04-22 | 2021-09-14 | Facebook, Inc. | Display screen with a graphical user interface |
USD914051S1 (en) | 2019-04-22 | 2021-03-23 | Facebook, Inc. | Display screen with an animated graphical user interface |
USD914058S1 (en) | 2019-04-22 | 2021-03-23 | Facebook, Inc. | Display screen with a graphical user interface |
USD913314S1 (en) | 2019-04-22 | 2021-03-16 | Facebook, Inc. | Display screen with an animated graphical user interface |
USD912697S1 (en) | 2019-04-22 | 2021-03-09 | Facebook, Inc. | Display screen with a graphical user interface |
USD914049S1 (en) | 2019-04-22 | 2021-03-23 | Facebook, Inc. | Display screen with an animated graphical user interface |
USD912693S1 (en) | 2019-04-22 | 2021-03-09 | Facebook, Inc. | Display screen with a graphical user interface |
US10817142B1 (en) | 2019-05-20 | 2020-10-27 | Facebook, Inc. | Macro-navigation within a digital story framework |
US11388132B1 (en) | 2019-05-29 | 2022-07-12 | Meta Platforms, Inc. | Automated social media replies |
US10757054B1 (en) | 2019-05-29 | 2020-08-25 | Facebook, Inc. | Systems and methods for digital privacy controls |
DE102019003904A1 (en) * | 2019-06-03 | 2020-12-03 | Daimler Ag | System for generating cryptographic material |
USD924255S1 (en) | 2019-06-05 | 2021-07-06 | Facebook, Inc. | Display screen with a graphical user interface |
USD914739S1 (en) * | 2019-06-05 | 2021-03-30 | Facebook, Inc. | Display screen with an animated graphical user interface |
USD912700S1 (en) | 2019-06-05 | 2021-03-09 | Facebook, Inc. | Display screen with an animated graphical user interface |
USD914705S1 (en) * | 2019-06-05 | 2021-03-30 | Facebook, Inc. | Display screen with an animated graphical user interface |
USD918264S1 (en) | 2019-06-06 | 2021-05-04 | Facebook, Inc. | Display screen with a graphical user interface |
USD914757S1 (en) | 2019-06-06 | 2021-03-30 | Facebook, Inc. | Display screen with an animated graphical user interface |
USD916915S1 (en) | 2019-06-06 | 2021-04-20 | Facebook, Inc. | Display screen with a graphical user interface |
USD917533S1 (en) | 2019-06-06 | 2021-04-27 | Facebook, Inc. | Display screen with a graphical user interface |
US11212384B2 (en) | 2019-12-20 | 2021-12-28 | Capital One Services, Llc | Cross-channel configurable navigation |
JP7541442B2 (en) * | 2020-03-19 | 2024-08-28 | Lineヤフー株式会社 | GENERATION APPARATUS, GENERATION METHOD, AND GENERATION PROGRAM |
USD959480S1 (en) * | 2020-10-01 | 2022-08-02 | Botrista Technology, Inc. | Display screen or portion thereof with animated graphical user interface |
USD959481S1 (en) * | 2020-10-01 | 2022-08-02 | Botrista Technology, Inc. | Display screen or portion thereof with graphical user interface |
USD938475S1 (en) * | 2020-10-01 | 2021-12-14 | Botrista Technology, Inc. | Display screen or portion thereof with graphical user interface |
USD949919S1 (en) * | 2021-04-12 | 2022-04-26 | Xiamen Sienluo Trading Co., Ltd. | Display screen or portion thereof with graphical user interface |
USD1015373S1 (en) | 2021-05-20 | 2024-02-20 | Novadelta—Comércio E Indústria De Cafés, Lda | Display screen with icon |
USD1023031S1 (en) * | 2022-03-18 | 2024-04-16 | Wisewell Holdings | Display screen or portion thereof with graphical user interface |
US12067348B1 (en) | 2023-08-04 | 2024-08-20 | Bank Of America Corporation | Intelligent webpage UI optimization leveraging UI and viewer extraction telemetry |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6584439B1 (en) * | 1999-05-21 | 2003-06-24 | Winbond Electronics Corporation | Method and apparatus for controlling voice controlled devices |
WO2006135726A2 (en) * | 2005-06-09 | 2006-12-21 | Whirlpool Corporation | Software architecture system and method for communication with, and management of, at least one component within a household appliance |
US20070156882A1 (en) * | 2005-06-09 | 2007-07-05 | Whirlpool Corporation | Data acquisition engine and system for an appliance |
US20070168486A1 (en) * | 2005-06-09 | 2007-07-19 | Whirlpool Corporation | Software architecture system and method for operating an appliance exposing key press functionality to a network |
US20070240173A1 (en) * | 2005-06-09 | 2007-10-11 | Whirlpool Corporation | Data acquisition engine and system for an appliance |
US20080125911A1 (en) * | 2005-06-09 | 2008-05-29 | Whirlpool Corporation | Appliance and accessory for controlling a cycle of operation |
US20090021486A1 (en) * | 2007-07-19 | 2009-01-22 | Apple Inc. | Dashboard Surfaces |
US20090138579A1 (en) * | 2007-11-26 | 2009-05-28 | Emtrace Technologies, Inc. | Remote configuration of electronic device with user interface provided from electronic device |
US20100305722A1 (en) * | 2007-11-27 | 2010-12-02 | Samsung Electronics Co., Ltd. | Method for controlling home network device using universal web application and apparatus thereof |
Family Cites Families (110)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7131070B1 (en) * | 1999-05-13 | 2006-10-31 | Ricoh Company, Ltd. | Application unit monitoring and reporting system and method |
US6400996B1 (en) * | 1999-02-01 | 2002-06-04 | Steven M. Hoffberg | Adaptive pattern recognition based control system and method |
US7006881B1 (en) * | 1991-12-23 | 2006-02-28 | Steven Hoffberg | Media recording device with remote graphic user interface |
US6418424B1 (en) * | 1991-12-23 | 2002-07-09 | Steven M. Hoffberg | Ergonomic man-machine interface incorporating adaptive pattern recognition based control system |
US5611059A (en) * | 1994-09-02 | 1997-03-11 | Square D Company | Prelinked parameter configuration, automatic graphical linking, and distributed database configuration for devices within an automated monitoring/control system |
US5960440A (en) * | 1996-01-16 | 1999-09-28 | Brother International Corporation | Kitchen information and database management method and apparatus |
US5812393A (en) * | 1996-05-14 | 1998-09-22 | Microwave Science, Llc | Interpretive BIOS machine and method of use thereof |
DK0932398T3 (en) * | 1996-06-28 | 2006-09-25 | Ortho Mcneil Pharm Inc | Use of topiramate or derivatives thereof for the manufacture of a medicament for the treatment of manic depressive bipolar disorders |
US5983200A (en) * | 1996-10-09 | 1999-11-09 | Slotznick; Benjamin | Intelligent agent for executing delegated tasks |
US6137805A (en) * | 1997-02-10 | 2000-10-24 | International Business Machines Corporation | Method and apparatus to remotely configure a data processing system |
US7092988B1 (en) * | 1997-05-27 | 2006-08-15 | Jeffrey Bogatin | Rapid cooking oven with broadband communication capability to increase ease of use |
CA2449643C (en) * | 1997-06-25 | 2012-04-03 | Samsung Electronics Co., Ltd. | Method and apparatus for a home network auto-tree builder |
US6370569B1 (en) * | 1997-11-14 | 2002-04-09 | National Instruments Corporation | Data socket system and method for accessing data sources using URLs |
US6370141B1 (en) * | 1998-04-29 | 2002-04-09 | Cisco Technology, Inc. | Method and apparatus for configuring an internet appliance |
WO2000021073A1 (en) * | 1998-10-02 | 2000-04-13 | International Business Machines Corporation | Structure skeletons for efficient voice navigation through generic hierarchical objects |
EP1120016A1 (en) * | 1998-10-09 | 2001-08-01 | Microwave Science, LLC | Interpretive language architecture for controlling the attributes of a physical, chemical, or thermodynamic process |
US6801223B1 (en) * | 1998-12-18 | 2004-10-05 | Tangis Corporation | Managing interactions between computer users' context models |
US6405103B1 (en) * | 1998-12-18 | 2002-06-11 | Comfort Systems, Inc. | Building control system |
US7225229B1 (en) * | 1998-12-18 | 2007-05-29 | Tangis Corporation | Automated pushing of computer user's context data to clients |
US7080383B1 (en) * | 1999-01-29 | 2006-07-18 | Microsoft Corporation | System and method for extending functionality of a class object |
US6466234B1 (en) * | 1999-02-03 | 2002-10-15 | Microsoft Corporation | Method and system for controlling environmental conditions |
US6910068B2 (en) * | 1999-06-11 | 2005-06-21 | Microsoft Corporation | XML-based template language for devices and services |
US7424677B2 (en) * | 1999-09-16 | 2008-09-09 | Sharp Laboratories Of America, Inc. | Audiovisual information management system with usage preferences |
US6700590B1 (en) * | 1999-11-01 | 2004-03-02 | Indx Software Corporation | System and method for retrieving and presenting data using class-based component and view model |
US6772393B1 (en) * | 2000-01-04 | 2004-08-03 | International Business Machines Corporation | System and method for room decoration and inheritance |
AU2001249768A1 (en) * | 2000-04-02 | 2001-10-15 | Tangis Corporation | Soliciting information based on a computer user's context |
EP1334427A2 (en) * | 2000-04-19 | 2003-08-13 | Koninklijke Philips Electronics N.V. | Method and apparatus for adapting a graphical user interface |
US7523302B1 (en) * | 2000-04-28 | 2009-04-21 | International Business Machines Corporation | Electronic recipe management |
US7065501B1 (en) * | 2000-04-28 | 2006-06-20 | International Business Machines Corporation | Managing home inventory |
US6665384B2 (en) * | 2000-06-19 | 2003-12-16 | General Electric Company | Methods and apparatus for appliance communication interface |
DE10038562B4 (en) * | 2000-08-03 | 2005-12-15 | Siemens Ag | System and method for transmitting data over data networks with data conversion by a COM car sounder |
US7254779B1 (en) * | 2000-09-06 | 2007-08-07 | Xanboo Inc. | Customizable presentation environment |
US6587739B1 (en) * | 2000-09-29 | 2003-07-01 | Sunbeam Products, Inc. | Appliance communication and control system and appliances for use in same |
US6704032B1 (en) * | 2000-10-27 | 2004-03-09 | Microsoft Corporation | Methods and arrangements for interacting with controllable objects within a graphical user interface environment using various input mechanisms |
US7895530B2 (en) * | 2000-11-09 | 2011-02-22 | Change Tools, Inc. | User definable interface system, method, support tools, and computer program product |
US7818249B2 (en) * | 2001-01-02 | 2010-10-19 | Verizon Patent And Licensing Inc. | Object-oriented method, system and medium for risk management by creating inter-dependency between objects, criteria and metrics |
US6802186B2 (en) * | 2001-01-05 | 2004-10-12 | General Electric Company | Refrigerator system and software architecture |
US7174534B2 (en) * | 2001-01-22 | 2007-02-06 | Symbol Technologies, Inc. | Efficient system and method for running and analyzing multi-channel, multi-modal applications |
US7113074B2 (en) * | 2001-03-30 | 2006-09-26 | Koninklijke Philips Electronics N.V. | Method and system for automatically controlling a personalized networked environment |
US6519871B2 (en) * | 2001-05-25 | 2003-02-18 | Maytag Corporation | Self programming clothes dryer system |
WO2002099597A2 (en) * | 2001-06-07 | 2002-12-12 | Unwired Express, Inc. | Method and system for providing context awareness |
CA2453606C (en) * | 2001-07-16 | 2007-01-09 | Maytag Corporation | Electronic message center for a refrigerator |
JP2003050716A (en) * | 2001-08-06 | 2003-02-21 | Matsushita Electric Ind Co Ltd | Software debugger and software development support system |
US7062718B2 (en) * | 2001-08-14 | 2006-06-13 | National Instruments Corporation | Configuration diagram which graphically displays program relationship |
US7013232B2 (en) * | 2001-08-15 | 2006-03-14 | National Insurance Corporation | Network-based system for configuring a measurement system using configuration information generated based on a user specification |
US7159208B2 (en) * | 2001-10-25 | 2007-01-02 | Keeley Thomas M | Programming toolkit for use in the development of knowledge enhanced electronic logic programs |
US7133739B2 (en) * | 2001-11-01 | 2006-11-07 | Salton, Inc. | Intelligent microwave oven |
US7151968B2 (en) * | 2001-11-01 | 2006-12-19 | Salton, Inc. | Intelligent coffeemaker appliance |
US20030105778A1 (en) * | 2001-11-30 | 2003-06-05 | Intel Corporation | File generation apparatus and method |
KR100437042B1 (en) * | 2002-03-20 | 2004-06-23 | 엘지전자 주식회사 | Home Appliance Network System and Controlling Method for the Same |
US6941521B2 (en) * | 2002-03-29 | 2005-09-06 | Intel Corporation | Method for dynamically generating a user interface from XML-based documents |
US8335796B2 (en) * | 2002-06-13 | 2012-12-18 | Panasonic Corporation | Recipe providing system and method thereof |
WO2004004276A1 (en) * | 2002-06-28 | 2004-01-08 | Nokia Corporation | Method and device for retrieving data store access information |
TWI236853B (en) * | 2002-10-02 | 2005-07-21 | Mitsubishi Electric Corp | Communication adapter device, communication adapter, method for writing into nonvolatile memory, electric apparatus used for the same, and ROM writer |
US7506302B2 (en) * | 2002-10-22 | 2009-03-17 | The Boeing Company | System and methods for business process modeling |
US7797141B2 (en) * | 2002-10-22 | 2010-09-14 | The Boeing Company | Predictive analysis of availability of systems and/or system components |
US20050021361A1 (en) * | 2003-01-31 | 2005-01-27 | Huang Sharon S.H. | System for facilitating weight control embodied on hand-held computing device |
US6672097B1 (en) * | 2003-02-28 | 2004-01-06 | Josh Ashley | Flavored ice cartridge dispenser for ice maker |
US20040204950A1 (en) * | 2003-04-11 | 2004-10-14 | Stephanie Vlahos | System and method for online meal customization and reporting |
US7779114B2 (en) * | 2003-04-17 | 2010-08-17 | International Business Machines Corporation | Method and system for administering devices with multiple user metric spaces |
US7500198B2 (en) * | 2003-04-25 | 2009-03-03 | Motorola, Inc. | Method and apparatus for modifying skin and theme screens on a communication product |
US7792795B1 (en) * | 2003-06-17 | 2010-09-07 | Microsoft Corporation | Context service system |
US7640496B1 (en) * | 2003-10-31 | 2009-12-29 | Emc Corporation | Method and apparatus for generating report views |
US7349758B2 (en) * | 2003-12-18 | 2008-03-25 | Matsushita Electric Industrial Co., Ltd. | Interactive personalized robot for home use |
US7752608B1 (en) * | 2003-12-22 | 2010-07-06 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Systems, methods and apparatus for verification of knowledge-based systems |
US7900228B2 (en) * | 2004-04-30 | 2011-03-01 | Vulcan Inc. | Maintaining a graphical user interface state that is based on a selected piece of content |
JP2007536634A (en) * | 2004-05-04 | 2007-12-13 | フィッシャー−ローズマウント・システムズ・インコーポレーテッド | Service-oriented architecture for process control systems |
US20060036755A1 (en) * | 2004-05-07 | 2006-02-16 | Abdullah Ibrahim S | Meta-protocol |
US7310893B2 (en) * | 2004-05-19 | 2007-12-25 | Whirlpool Corporation | Household appliance with user selected default settings |
US20060041854A1 (en) | 2004-07-22 | 2006-02-23 | Steven Schlanger | Devices and methods for programming microcontrollers |
US20060020910A1 (en) * | 2004-07-22 | 2006-01-26 | Steven Schlanger | Devices and methods for communicating with a microcontroller |
US20060026522A1 (en) * | 2004-07-27 | 2006-02-02 | Microsoft Corporation | Method and apparatus for revising data models and maps by example |
US7360608B2 (en) * | 2004-09-09 | 2008-04-22 | Baker Hughes Incorporated | Rotary drill bits including at least one substantially helically extending feature and methods of operation |
US20060074763A1 (en) * | 2004-09-27 | 2006-04-06 | Matthew Schmid | Culinary display kiosk |
US7926027B2 (en) * | 2004-10-19 | 2011-04-12 | Microsoft Corporation | Binding to business objects and web services |
US20060095551A1 (en) * | 2004-10-29 | 2006-05-04 | Leung John C K | Extensible service processor architecture |
US7818682B2 (en) * | 2004-11-29 | 2010-10-19 | Sap Ag | Modeling editor |
WO2006075513A1 (en) * | 2005-01-13 | 2006-07-20 | Matsushita Electric Industrial Co., Ltd. | Device operation control device and method thereof |
KR100631755B1 (en) * | 2005-01-25 | 2006-10-11 | 삼성전자주식회사 | Apparatus and method for switching the look of a Java application in real time |
US7529543B2 (en) * | 2005-01-31 | 2009-05-05 | Fujitsu Limited | Configuring a device using a configuration manager |
US7681176B2 (en) * | 2005-03-04 | 2010-03-16 | Microsoft Corporation | Generating a graphical designer application for developing graphical models |
US7958454B2 (en) | 2005-04-19 | 2011-06-07 | The Mathworks, Inc. | Graphical state machine based programming for a graphical user interface |
US8155120B2 (en) * | 2005-06-09 | 2012-04-10 | Whirlpool Corporation | Software architecture system and method for discovering components within an appliance using fuctionality identifiers |
US8005780B2 (en) * | 2005-06-09 | 2011-08-23 | Whirlpool Corporation | Taxonomy engine and dataset for operating an appliance |
US7813831B2 (en) * | 2005-06-09 | 2010-10-12 | Whirlpool Corporation | Software architecture system and method for operating an appliance in multiple operating modes |
US8250163B2 (en) | 2005-06-09 | 2012-08-21 | Whirlpool Corporation | Smart coupling device |
US8816828B2 (en) * | 2005-06-09 | 2014-08-26 | Whirlpool Corporation | Recipe wand and recipe book for use with a networked appliance |
US7831918B2 (en) * | 2005-09-12 | 2010-11-09 | Microsoft Corporation | Content based user interface design |
US7844396B2 (en) * | 2005-09-13 | 2010-11-30 | Deere & Company | Method and system for modular data processing for a vehicle control system |
US8042048B2 (en) * | 2005-11-17 | 2011-10-18 | Att Knowledge Ventures, L.P. | System and method for home automation |
JP5148504B2 (en) * | 2005-12-09 | 2013-02-20 | テゴ,インコーポレイテッド | Multiple radio frequency network node RFID tag |
US7775056B2 (en) * | 2006-01-18 | 2010-08-17 | Merck Sharp & Dohme Corp. | Intelligent refrigerator for storing pharmaceutical product containers |
US20080109093A1 (en) * | 2006-02-27 | 2008-05-08 | Yasutaka Maeda | Control Device, Device Control System, Device Control Program, Computer-Readable Recording Medium Containing the Device Control Program, and Setting Check Data Creation Method |
US8103389B2 (en) * | 2006-05-18 | 2012-01-24 | Gridpoint, Inc. | Modular energy control system |
US20080178143A1 (en) * | 2006-10-05 | 2008-07-24 | Cort Dougan | System, Method and Computer Program Product for Developing, Configuring, Installing and Testing Software |
WO2008086112A1 (en) * | 2007-01-04 | 2008-07-17 | Sound Id | Personalized sound system hearing profile selection process |
US7729630B2 (en) * | 2007-01-24 | 2010-06-01 | Kabushiki Kaisha Toshiba | System and method for generating a user customizable default user interface for a document processing device |
US7649456B2 (en) * | 2007-01-26 | 2010-01-19 | Sony Ericsson Mobile Communications Ab | User interface for an electronic device used as a home controller |
US7843333B2 (en) * | 2007-01-26 | 2010-11-30 | Sony Ericsson Mobile Communication Ab | System, methods, devices and computer program products for controlling electronic appliances within a local area |
US8752011B2 (en) * | 2007-03-20 | 2014-06-10 | The University Of North Carolina At Chapel Hill | Methods, systems, and computer readable media for automatically generating customizable user interfaces using programming patterns |
US8001519B2 (en) * | 2007-06-27 | 2011-08-16 | International Business Machines Corporation | Model driven development including aspect integration tool |
US20090144081A1 (en) * | 2007-10-08 | 2009-06-04 | Harlan Timothy S | Methods and systems for dynamic meal plan generation |
US7506259B1 (en) * | 2008-02-14 | 2009-03-17 | International Business Machines Corporation | System and method for dynamic mapping of abstract user interface to a mobile device at run time |
WO2009106081A1 (en) * | 2008-02-29 | 2009-09-03 | Dako Denmark A/S | Systems and methods for tracking and providing workflow information |
US20090234839A1 (en) * | 2008-03-17 | 2009-09-17 | International Business Machines Corporation | Smart sensor based environment for optimizing a selection of meal plans |
EP2286356A4 (en) * | 2008-06-03 | 2013-03-06 | Whirlpool Co | Appliance development toolkit |
US8965881B2 (en) * | 2008-08-15 | 2015-02-24 | Athena A. Smyros | Systems and methods for searching an index |
US7996383B2 (en) * | 2008-08-15 | 2011-08-09 | Athena A. Smyros | Systems and methods for a search engine having runtime components |
US8051381B2 (en) * | 2008-12-22 | 2011-11-01 | Whirlpool Corporation | Appliance with a graphical user interface for configuring an accessory |
US8010211B2 (en) * | 2008-10-23 | 2011-08-30 | Whirlpool Corporation | Appliance with a service interface for communicating with a consumable holder |
-
2009
- 2009-06-03 EP EP09759378A patent/EP2286356A4/en not_active Withdrawn
- 2009-06-03 WO PCT/US2009/046186 patent/WO2009149219A2/en active Application Filing
- 2009-06-03 EP EP17181180.5A patent/EP3249893A1/en not_active Withdrawn
- 2009-06-03 US US12/531,165 patent/US20110185342A1/en not_active Abandoned
- 2009-09-10 US US12/556,738 patent/US7937171B2/en not_active Expired - Fee Related
- 2009-09-10 US US12/556,713 patent/US20090327932A1/en not_active Abandoned
- 2009-09-10 US US12/556,723 patent/US8402376B2/en not_active Expired - Fee Related
- 2009-09-10 US US12/556,650 patent/US8434063B2/en active Active
- 2009-09-10 US US12/556,774 patent/US8442794B2/en active Active
- 2009-09-10 US US12/556,697 patent/US8484571B2/en active Active
- 2009-09-10 US US12/556,617 patent/US20090327879A1/en not_active Abandoned
- 2009-09-10 US US12/556,753 patent/US20090326687A1/en not_active Abandoned
- 2009-09-10 US US12/556,628 patent/US20090327998A1/en not_active Abandoned
- 2009-09-10 US US12/556,803 patent/US20100005405A1/en not_active Abandoned
- 2009-09-10 US US12/556,669 patent/US8136039B2/en active Active
- 2009-09-10 US US12/556,623 patent/US20090327929A1/en not_active Abandoned
- 2009-09-10 US US12/556,634 patent/US20090327930A1/en not_active Abandoned
- 2009-09-10 US US12/556,646 patent/US20100005445A1/en not_active Abandoned
- 2009-09-10 US US12/556,761 patent/US7996176B2/en active Active
-
2018
- 2018-01-05 US US15/863,073 patent/US20180131536A1/en not_active Abandoned
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6584439B1 (en) * | 1999-05-21 | 2003-06-24 | Winbond Electronics Corporation | Method and apparatus for controlling voice controlled devices |
WO2006135726A2 (en) * | 2005-06-09 | 2006-12-21 | Whirlpool Corporation | Software architecture system and method for communication with, and management of, at least one component within a household appliance |
US20070156882A1 (en) * | 2005-06-09 | 2007-07-05 | Whirlpool Corporation | Data acquisition engine and system for an appliance |
US20070168486A1 (en) * | 2005-06-09 | 2007-07-19 | Whirlpool Corporation | Software architecture system and method for operating an appliance exposing key press functionality to a network |
US20070240173A1 (en) * | 2005-06-09 | 2007-10-11 | Whirlpool Corporation | Data acquisition engine and system for an appliance |
US20080125911A1 (en) * | 2005-06-09 | 2008-05-29 | Whirlpool Corporation | Appliance and accessory for controlling a cycle of operation |
US7917914B2 (en) * | 2005-06-09 | 2011-03-29 | Whirlpool Corporation | Event notification system for an appliance |
US20090021486A1 (en) * | 2007-07-19 | 2009-01-22 | Apple Inc. | Dashboard Surfaces |
US20090138579A1 (en) * | 2007-11-26 | 2009-05-28 | Emtrace Technologies, Inc. | Remote configuration of electronic device with user interface provided from electronic device |
US20100305722A1 (en) * | 2007-11-27 | 2010-12-02 | Samsung Electronics Co., Ltd. | Method for controlling home network device using universal web application and apparatus thereof |
Non-Patent Citations (1)
Title |
---|
Brosz, "Welcome to the 453 QT Designer Tutorial", 09/23/2003, from: http://pages.cpsc.ucalgary.ca/~brosz/TA/453/designer/index.html * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9268883B2 (en) * | 2010-02-26 | 2016-02-23 | The Boeing Company | User interface for presenting information about a product structure for a product |
US8982129B1 (en) * | 2010-04-23 | 2015-03-17 | Crimson Corporation | Mapping graph data to a tree structure on a computing device |
US9377346B2 (en) | 2013-09-11 | 2016-06-28 | Illinois Tool Works Inc. | Food product scale |
US9377345B2 (en) | 2013-09-11 | 2016-06-28 | Illinois Tool Works Inc. | Food product scale |
US9494460B2 (en) | 2013-09-11 | 2016-11-15 | Illinois Tool Works Inc. | Food product scale |
US9562806B2 (en) | 2013-09-11 | 2017-02-07 | Illinois Tool Works Inc. | Food product scale |
US9810572B2 (en) | 2013-09-11 | 2017-11-07 | Illinois Tool Works Inc. | Food product scale |
US11041751B2 (en) | 2013-09-11 | 2021-06-22 | Illinois Tool Works Inc. | Food product scale |
Also Published As
Publication number | Publication date |
---|---|
US20100005405A1 (en) | 2010-01-07 |
US8484571B2 (en) | 2013-07-09 |
US8442794B2 (en) | 2013-05-14 |
US20090327932A1 (en) | 2009-12-31 |
EP2286356A2 (en) | 2011-02-23 |
US20100004764A1 (en) | 2010-01-07 |
US20100005445A1 (en) | 2010-01-07 |
US20090327887A1 (en) | 2009-12-31 |
US20090327998A1 (en) | 2009-12-31 |
US7996176B2 (en) | 2011-08-09 |
US20090327930A1 (en) | 2009-12-31 |
WO2009149219A2 (en) | 2009-12-10 |
WO2009149219A3 (en) | 2010-03-11 |
US8402376B2 (en) | 2013-03-19 |
US20100005447A1 (en) | 2010-01-07 |
US7937171B2 (en) | 2011-05-03 |
US20090327931A1 (en) | 2009-12-31 |
US20090326687A1 (en) | 2009-12-31 |
US20100005453A1 (en) | 2010-01-07 |
US8434063B2 (en) | 2013-04-30 |
US20180131536A1 (en) | 2018-05-10 |
US20110185342A1 (en) | 2011-07-28 |
US8136039B2 (en) | 2012-03-13 |
EP3249893A1 (en) | 2017-11-29 |
US20100005404A1 (en) | 2010-01-07 |
US20090327929A1 (en) | 2009-12-31 |
US20090326856A1 (en) | 2009-12-31 |
EP2286356A4 (en) | 2013-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8442794B2 (en) | Toolkit for creating appliance diagnostics | |
US11025447B2 (en) | User controllable filter system for an appliance | |
US8051381B2 (en) | Appliance with a graphical user interface for configuring an accessory | |
US8118997B2 (en) | Smart filter for an appliance | |
US8461959B2 (en) | Consumable holder with process control apparatus | |
US8010211B2 (en) | Appliance with a service interface for communicating with a consumable holder | |
US8442042B2 (en) | Appliance and a consumable holder with an embedded virtual router | |
US8264318B2 (en) | Consumable holder with converter | |
US8477007B2 (en) | Appliance and a consumable holder in a network | |
US20090044137A1 (en) | Consumable holder with user interface data | |
US20090044129A1 (en) | Graphical user interface to control interactions between an appliance and a consumable holder | |
US20100102051A1 (en) | Consumable holder with electronics to communicate with an appliance | |
KR100772344B1 (en) | Fully functional remote control editor and emulator | |
US20090045926A1 (en) | Consumable holder with taxonomy | |
US20090040012A1 (en) | Consumable holder with a cycle structure for an appliance | |
CN105432093B (en) | System and method for universal control of electronic devices | |
US20090040066A1 (en) | Consumable holder with routable data packet for an appliance | |
Wang et al. | HolonCraft–an architecture for dynamic construction of smart home workflows |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: WHIRLPOOL CORPORATION, MICHIGAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:FERRAGUT, NELSON J., II;GLOTZBACH, MARK E.;MCCOY, RICHARD A.;AND OTHERS;REEL/FRAME:023211/0030;SIGNING DATES FROM 20090819 TO 20090901 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION |