Patent Publication Number: US-2022232116-A1

Title: Mobile application for controlling outdoor grill

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of U.S. patent application Ser. No. 16/947,366, filed Jul. 29, 2020, which is a continuation of U.S. patent application Ser. No. 16/432,798, filed Jun. 5, 2019, now U.S. Pat. No. 10,791,208, issued Sep. 29, 2020, which is a continuation-in-part of U.S. patent application Ser. No. 16/193,235, filed Nov. 16, 2018, now U.S. Pat. No. 10,951,751, issued Mar. 16, 2021, which is a continuation of U.S. patent application Ser. No. 15/510,996 entitled “MOBILE APPLICATION FOR CONTROLLING OUTDOOR GRILL,” filed Mar. 13, 2017, which application is a 35 U.S.C. § 371 U.S. National Stage of PCT Application No. PCT/US16/24737, filed on Mar. 29, 2016, which claims the benefit of priority to U.S. Provisional Application No. 62/245,535, filed Oct. 23, 2015, the disclosure of each of which is hereby incorporated herein in its entirety by this reference. U.S. Pat. No. 10,951,751 is also a continuation-in-part of U.S. patent application Ser. No. 15/114,744, filed Jul. 27, 2016, which is a U.S. National Stage of PCT Application No. PCT/US16/39271, filed on Jun. 24, 2016, which claims the benefit of priority to U.S. Provisional Application No. 62/245,530, filed on Oct. 23, 2015. U.S. Pat. No. 10,951,751 is also a continuation-in-part of U.S. patent application Ser. No. 15/511,319, filed Mar. 15, 2017, which is a U.S. National Stage of PCT Application No. PCT/US2016/26736, filed on Apr. 8, 2016, which claims the benefit of priority to the U.S. Provisional Application No. 62/245,549, filed Oct. 23, 2015. The entire content of each of the aforementioned patent applications is incorporated herein by reference. 
    
    
     TECHNICAL FIELD 
     Systems and methods for controlling operation of a smoker remotely. 
     BACKGROUND 
     Outdoor appliances have long been used to prepare food and perform other tasks. For example, outdoor appliances such as grills and smokers are often used to prepare meats, vegetables, fruits, and other types of food. These grills and smokers are typically operated using manual controls that are integrated into the frame of the grill or smoker. For example, many such outdoor appliances have an ignition button that, when pressed, generates a spark near a gas outlet on a burner. The spark ignites the gas and the burner begins to create heat. The amount of heat is generally controlled using a dial or nob that allows more or less gas to be introduced at the burner. 
     In some cases, the outdoor appliances may have electronic controls. Thus, instead of having a manual dial to adjust the amount of gas being introduced at the burner, an electrical control is set or adjusted by the user. The electrical control then interacts with a solenoid or other electro-mechanical component to regulate the flow of gas to the burner. Still, however, as is the case with manual dials and nobs, the user of the outdoor appliance has to be present at the grill to make changes to settings on the grill. 
     To overcome this problem, some newly-manufactured outdoor appliances have been equipped with BLUETOOTH® radios. These BLUETOOTH® radios allow communication with nearby electronic devices including cell phones or tablets of the appliance&#39;s owner. Range limitations to the BLUETOOTH® radio, however, necessitate that the user of the appliance still be within a certain proximity of the appliance. Once outside this proximity, the user no longer has any communication with the appliance, and thus cannot control any functionality related to the appliance. Moreover, even when connected to a mobile device, the appliance has very limited options as to what can be controlled over BLUETOOTH®. Indeed, the appliance has no access to any information or control signals beyond the user&#39;s mobile device. 
     BRIEF SUMMARY 
     Embodiments described herein are directed to controlling an electronically-controlled appliance using a software application and to providing a user interface for controlling an electronically-controlled appliance. In one embodiment, a computer system receives an indication from a remote computing system indicating that an electronically-controlled appliance is communicably connected to the remote computing system. The computer system provides a notification in the software application indicating that the electronically-controlled appliance is available to receive instructions, and receives a user input at the software application indicating that certain functions are to be performed by the electronically-controlled appliance. 
     The computer system further generates instructions configured to control the electronically-controlled appliance based on the functions specified in the received user input, and sends the generated instructions to the electronically-controlled appliance to perform the specified functions. These functions are then interpreted and carried out on the electronically-controlled appliance via the hardware controller. 
     In another embodiment, a computer system provides a user interface for controlling an electronically-controlled appliance. The user interface (UI) includes the following: a first input field configured to receive input indicating whether an electronically-controlled appliance is permitted to communicate with remote computing systems, a notification field configured to indicate whether the electronically-controlled appliance is communicably connected to the remote computing systems, and to further provide notifications indicating that the electronically-controlled appliance is available to receive instructions, and a second input field configured to receive input indicating that specified functions are to be performed by the electronically-controlled appliance. 
     The UI further includes an instruction generating indicator configured to indicate that instructions configured to control the electronically-controlled appliance are being generated based on the functions specified in the received user input, and a transmission indicator configured to indicate that the instructions are being sent to the electronically-controlled appliance for performance of the specified functions, where the functions are interpreted and carried out by a hardware controller on the electronically-controlled appliance. 
     This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. 
     Additional features and advantages will be set forth in the description which follows, and in part will be apparent to one of ordinary skill in the art from the description, or may be learned by the practice of the teachings herein. Features and advantages of embodiments described herein may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. Features of the embodiments described herein will become more fully apparent from the following description and appended claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       To further clarify the above and other features of the embodiments described herein, a more particular description will be rendered by reference to the appended drawings. It is appreciated that these drawings depict only examples of the embodiments described herein and are therefore not to be considered limiting of its scope. The embodiments will be described and explained with additional specificity and detail through the use of the accompanying drawings which are briefly described below. 
         FIG. 1A  illustrates a computer architecture in which embodiments described herein may operate including controlling an electronically-controlled appliance using a software application and providing a user interface for controlling an electronically-controlled appliance. 
         FIG. 1B  illustrates a computer architecture in which embodiments described herein may operate including smoking food in an outdoor grill using a customized smoking routine. 
         FIG. 2  illustrates an embodiment in which an electronically-controlled appliance is in communication with a cloud service and a mobile electronic device. 
         FIG. 3  illustrates an embodiment in which an electronically-controlled appliance is in communication with a cloud service and a mobile electronic device, and is further in communication with analytics, social media or other third party systems. 
         FIG. 4  illustrates an embodiment of a software application functionality hierarchy. 
         FIG. 5  illustrates a flowchart of an example method for controlling an electronically-controlled appliance using a software application. 
         FIG. 6  illustrates a user interface for controlling an electronically-controlled appliance. 
     
    
    
     DETAILED DESCRIPTION 
     Embodiments described herein are directed to controlling an electronically-controlled appliance using a software application and to providing a user interface for controlling an electronically-controlled appliance. In one embodiment, a computer system receives an indication from a remote computing system indicating that an electronically-controlled appliance is communicably connected to the remote computing system. The computer system provides a notification in the software application indicating that the electronically-controlled appliance is available to receive instructions, and receives a user input at the software application indicating that certain functions are to be performed by the electronically-controlled appliance. 
     The computer system further generates instructions configured to control the electronically-controlled appliance based on the functions specified in the received user input, and sends the generated instructions to the electronically-controlled appliance to perform the specified functions. These functions are then interpreted and carried out on the electronically-controlled appliance via the hardware controller. 
     In another embodiment, a computer system provides a user interface for controlling an electronically-controlled appliance. The user interface (UI) includes the following: a first input field configured to receive input indicating whether an electronically-controlled appliance is permitted to communicate with remote computing systems, a notification field configured to indicate whether the electronically-controlled appliance is communicably connected to the remote computing systems, and to further provide notifications indicating that the electronically-controlled appliance is available to receive instructions, and a second input field configured to receive input indicating that specified functions are to be performed by the electronically-controlled appliance. 
     Embodiments described herein may implement various types of computing systems. These computing systems are now increasingly taking a wide variety of forms. Computing systems may, for example, be mobile phones, electronic appliances, laptop computers, tablet computers, wearable devices, desktop computers, mainframes, and the like. As used herein, the term “computing system” includes any device, system, or combination thereof that includes at least one processor, and a physical and tangible computer-readable memory capable of having thereon computer-executable instructions that are executable by the processor. A computing system may be distributed over a network environment and may include multiple constituent computing systems. 
     A computing system typically includes at least one processing unit and memory. The memory may be physical system memory, which may be volatile, non-volatile, or some combination of the two. The term “memory” may also be used herein to refer to non-volatile mass storage such as physical storage media or physical storage devices. If the computing system is distributed, the processing, memory and/or storage capability may be distributed as well. 
     As used herein, the term “executable module” or “executable component” can refer to software objects, routines, methods, or similar computer-executable instructions that may be executed on the computing system. The different components, modules, engines, and services described herein may be implemented as objects or processes that execute on the computing system (e.g., as separate threads). As described herein, a computing system may also contain communication channels that allow the computing system to communicate with other message processors over a wired or wireless network. Such communication channels may include hardware-based receivers, transmitters or transceivers, which are configured to receive data, transmit data or perform both. 
     Embodiments described herein also include physical computer-readable media for carrying or storing computer-executable instructions and/or data structures. Such computer-readable media can be any available physical media that can be accessed by a general-purpose or special-purpose computing system. 
     Computer storage media are physical hardware storage media that store computer-executable instructions and/or data structures. Physical hardware storage media include computer hardware, such as RAM, ROM, EEPROM, solid state drives (“SSDs”), flash memory, phase-change memory (“PCM”), optical disk storage, magnetic disk storage or other magnetic storage devices, or any other hardware storage device(s) which can be used to store program code in the form of computer-executable instructions or data structures, which can be accessed and executed by a general-purpose or special-purpose computing system to implement the disclosed functionality of the embodiments described herein. The data structures may include primitive types (e.g., character, double, floating-point), composite types (e.g., array, record, union, etc.), abstract data types (e.g., container, list, set, stack, tree, etc.), hashes, graphs or any other types of data structures. 
     As used herein, computer-executable instructions comprise instructions and data which, when executed at one or more processors, cause a general-purpose computing system, special-purpose computing system, or special-purpose processing device to perform a certain function or group of functions. Computer-executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or even source code. 
     Those skilled in the art will appreciate that the principles described herein may be practiced in network computing environments with many types of computing system configurations, including, personal computers, desktop computers, laptop computers, message processors, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, tablets, pagers, routers, switches, and the like. The embodiments herein may also be practiced in distributed system environments where local and remote computing systems, which are linked (either by hardwired data links, wireless data links, or by a combination of hardwired and wireless data links) through a network, both perform tasks. As such, in a distributed system environment, a computing system may include a plurality of constituent computing systems. In a distributed system environment, program modules may be located in both local and remote memory storage devices. 
     Those skilled in the art will also appreciate that the embodiments herein may be practiced in a cloud computing environment. Cloud computing environments may be distributed, although this is not required. When distributed, cloud computing environments may be distributed internationally within an organization and/or have components possessed across multiple organizations. In this description and the following claims, “cloud computing” is defined as a model for enabling on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services). The definition of “cloud computing” is not limited to any of the other numerous advantages that can be obtained from such a model when properly deployed. 
     Still further, system architectures described herein can include a plurality of independent components that each contribute to the functionality of the system as a whole. This modularity allows for increased flexibility when approaching issues of platform scalability and, to this end, provides a variety of advantages. System complexity and growth can be managed more easily through the use of smaller-scale parts with limited functional scope. Platform fault tolerance is enhanced through the use of these loosely coupled modules. Individual components can be grown incrementally as business needs dictate. Modular development also translates to decreased time to market for new functionality. New functionality can be added or removed without impacting the core system. 
     Referring to the figures,  FIG. 1A  illustrates an environment  100  in which at least one embodiment described herein may be employed. The environment  100  includes a computer system  101 . The computer system  101  may be any type of local or distributed computer system, including a cloud computer system. The computer system  101  includes a hardware processor  102  and physical system memory  103 . The computer system  101  further includes modules for performing a variety of different functions. 
     For instance, the communications module  104  may be configured to communicate with other computing systems (e.g., remote computing systems  113 ). The communications module  104  may include any wired or wireless communication means that can receive and/or transmit data to or from other computing systems such as wired or wireless network interface cards. The communications module  104  may be configured to interact with databases, mobile computing devices (such as mobile phones or tablets), electronically-controlled appliances (e.g.,  115 ), embedded computing systems or other types of computing systems. 
     Indeed, in one embodiment, the computer system  101  may be a mobile computer system, and may be configured to communicate with remote computing systems  113  (e.g., cloud computing systems) and/or with electronically-controlled appliance  115 . The remote computing systems  113  may also be able to communicate with the electronically-controlled appliance  115 , either directly or through the (mobile) computer system  101 . The electronically-controlled appliance  115  may be any type of appliance or device that is electronically-controlled. For example, any device that is controlled by an electronic hardware controller  116  would be an electronically-controlled appliance  115 . The electronic hardware controller  116  may include computer memory that has instructions stored thereon for controlling the appliance or device. 
     In one example embodiment, the electronically-controlled appliance  115  is a grill or smoking appliance, although the embodiments described herein are not limited to such. The grill/smoker may be operated by the electronic hardware controller  116 . The controller  116  may be configured to control temperature, control cooking cycles, control fuel burn rate, monitor ambient temperature, or perform other functions. In some cases, the electronic hardware controller  116  may include or be communicatively connected to a radio such as a BLUETOOTH® or Wi-Fi radio that can wirelessly communicate with other computing systems (e.g.,  101  and  113 ). The electronic hardware controller  116  may control these communications, and may present a display  125   b  to a user. The display  125   b  may include a variety of information, including a graphical user interface (GUI) that allows interaction from an appliance user. 
     The computer system  101  may be configured to interact with the electronically-controlled appliance  115  through the communications module  104 . The computer system  101  further includes a software application instantiating module  105  that instantiates software application  106  on the computer system. The software application  106  may include a GUI for controlling the electronically-controlled appliance  115 . The GUI may provide various notifications, alerts, buttons, fields, prompts or other elements that allow monitoring and control of the electronically-controlled appliance  115 . 
     In one embodiment, the software application  106  provides a notification of availability  107 . The notification of availability  107  may indicate that the electronically-controlled appliance  115  is available to receive control instructions. These control instructions  109  may include, for example, an indication that a certain amount of fuel pellets is to be added to a smoker&#39;s combustion area, or that a specified amount of fuel (such as propane) is to be burned by a grill, or that a specified internal temperature is to be reached and maintained. The notification of availability  107  may indicate whether the electronically-controlled appliance  115  is available or not to receive such control instructions  109 . 
     If the notification of availability  107  indicates that the electronically-controlled appliance  115  is currently available to receive instructions, the user interface  118  may be displayed so that a user  111  may provide input  112 , indicating how the user wants to control the appliance. The user interface  118  may provide many different functions  110  that are controllable using the user interface. As mentioned above, these functions  110  may include substantially any function that the electronically-controlled appliance  115  is capable of (or is modified to be capable of) performing. For grill and smokers, this may include controlling burn rate, temperature, cooking cycle, fuel dispensing, controlling timers, accessing recipes, displaying probe temperatures or alerts, turning the device on or off, or other functions. 
     Other electronically-controlled appliances  115  such as ovens, refrigerators, blenders, toasters, dishwashers, coffee machines, mixers, bread makers, washers and dryers or other appliances may also be controlled using the software application  106  in a manner that is the same as or similar to that used to control a grill or smoker. The software application  106  may provide a notification of availability for the appliance, and the application may display a user interface for controlling functions of that appliance. As the input  112  are received from the user  111 , the instruction generator  108  may generate instructions that are specific to that device, and that are interpretable and understandable by the electronically-controlled appliance  115 . These control instructions  109  are then sent to the electronically-controlled appliance  115  to control the functions  110  specified by the user  111 . 
     In some cases, a user may control whether the electronically-controlled appliance  115  is permitted to communicate with other computing systems such as remote computing systems  113 . The electronically-controlled appliance  115  may send an indication  117  to the (mobile) computer system  101 , indicating that it wishes to communicate with one or more remote computing systems  113  (for example, to download a recipe). The user  111  may provide input  112  indicating whether the electronically-controlled appliance  115  is permitted to communicate with the remote computing systems  113  or not. If such communication is permitted by the user, the electronically-controlled appliance  115  may communicate with an access point (such as a router) that permits flow of data between the electronically-controlled appliance  115  and the remote computing systems  113 . 
       FIG. 1B  illustrates an environment  100   b  in which at least one embodiment described herein may be employed. The environment  100   b  includes an outdoor grill  101   b . For example, the outdoor grill  101   b  may comprise an electronically-controlled appliance  115 , as described above in regard to  FIG. 1A . As used herein, the term “outdoor grill” means outdoor cooking apparatus, including barbecue grills, smokers, and/or barbecue smokers. Barbecue smokers, in turn, refers to outdoor cooking apparatus that are configured to cook food at least in part through generated smoke, such as smoke generated through wood combustion. Accordingly, the outdoor grill  101   b  illustrated or otherwise described herein may be any type of cooking appliance including a conventional barbecue grill, smoker or other device. 
     In general, the outdoor grill  101   b  includes hardware and other modules for performing a variety of different functions. For instance, the outdoor grill  101   b  includes an electronic controller  102   b . The electronic controller may be any type of microcontroller, microprocessor, or other processing means capable of processing software code. The software code may be stored on computer-readable media including memory  103   b  or other data storage  105   b . The data storage may be flash or other non-volatile memory. As such, the outdoor grill  101   b  may have sufficient processing power and memory to be considered a computing system, or at least as having an attached computing system. 
       FIG. 1B  further shows that the outdoor grill  101   b  can include a communications module  104   b . The communications module  104   b  may be configured to communicate with other computing systems such as mobile device  120   b  used by user  119   b , or remote computer systems  122   b . As understood herein, a “mobile device” ( 120   b ) means any computing system (including but not limited to a smart phone) that enables a user to provide remote inputs, selections, and other controls that are communicated with outdoor grill  101   b  from a remote location. The communication between mobile device and outdoor grill  101   b  can occur over a network comprising a combination of wireless and hardwired connections. For example, mobile device  120   b  may be wirelessly connected to a network, or may be connected to the network over a network cable, such as a cable employing an Ethernet, USB, or other appropriate connection interface. 
     Thus, mobile device  120   b  can comprise a mobile phone, a tablet device, or may comprise another form of a remote control display, such as a digital remote control, including a network-enabled tablet-style touch screen having a graphical user interface displayed thereon. In one implementation, for example, mobile device  120   b  comprises an LCD screen having one or more controls (e.g., touch screen controls or physical push-button controls) that are used primarily within an indoor environment, and in any event remote from the outdoor grill  101   b.    
     For example, the mobile device  120   b  may comprise a remote screen that is positioned or mounted on or about a kitchen countertop, but is nevertheless connected over a network (BLUETOOTH®, Wi-Fi, or network cable) to outdoor grill  101   b  and/or remote computer systems  122   b  over a network. Specifically, the communications module  104   b  may include any wired or wireless communication means that can receive and/or transmit data to or from other computing systems. The communications module  104   b  may be configured to interact with databases, mobile computing devices (such as mobile phones or tablets), embedded or other types of computing systems. In some cases, the mobile device  120   b  and/or the remote computer systems  122   b  may be configured to provide inputs to the outdoor grill  101   b . For instance, the mobile device  120   b  may provide input  121   b  to the outdoor grill  101   b , such as by providing a “cooking profile” for a food item. This input may specify a recipe that is to be used, which in turn may specify a custom smoking pattern (or other temperature or flavor profile pattern involving operation of multiple components on outdoor grill  101   b ) that is to be used when preparing a certain portion of food. These recipes  106   b  and custom smoke generation patterns may be stored in data store  105   b  and accessed by the electronic controller  102   b.    
     The remote computer systems  122   b  may also provide inputs  123   b  to the outdoor grill  101   b . These inputs may likewise be recipes or custom grilling or smoking pattern controls, including fan (on/off, speed or RPM) and/or hopper/auger adjustments, but may also be advertisements or other data pertinent to the grill owner. For example, as will be explained further below, the remote computer systems  122   b  may provide remote diagnostics or analytic information to the grill owner, displayable on a grill  101   b  display. 
       FIG. 1B  further shows that the outdoor grill  101   b  includes a smoke generator  108   b . In at least one embodiment, the smoke generator  108   b  includes hardware including a hopper  110   b  for loading combustible pellets  109   b  into the combustion area  111   b . In some embodiments, the outdoor grill  101   b  may be a smoker that is fueled by combustible pellets  109   b  (such as wood pellets, or other appropriate combustion precursor). The hopper  110   b  may supply the fuel to the combustion area  111   b  at a specified rate so as to maintain a specific internal temperature  113   b . The internal temperature may be measured by an internal thermometer  112   b  that is inside grill  101   b . The determining module  116   b  of the smoke generator  108   b  may, for example, determine that the current internal temperature  113   b  is too low, and may cause the hopper  110   b  to load more pellets/fuel  109  into the combustion area  111   b , and/or to adjust a fan or other components to help increase temperature. Conversely, if the internal temperature is too high, the loading of pellets/fuel into the combustion area  111   b  may be halted for a time until the temperature has cooled, and similarly to adjust a fan up/down or on/off to assist in cooling. 
     At least in some embodiments, the outdoor grill  101   b  may be controlled by user  119   b  via the mobile device  120   b . The mobile device  120   b  may be configured to run an application that allows the user  119   b  to control functionality of the outdoor grill  101   b . Using the software application, for example, the user  119   b  may cause the outdoor grill  101   b  to ignite and begin a specified “cooking profile” assigned to the food item, such as a recipe employing a particular smoking pattern geared toward a particular end result in the food item. For instance, the user  119   b  may direct use of a particular cooking profile for a food item by selecting one of the stored recipes  106   b  or smoke generation patterns  107   b  stored on the grill&#39;s data store  105   b , wherein the selected recipes  106   b  comprise one or more flavor, smoke, temperature or other cooking profile features for a particular food item. 
     Thus, the “cooking profile” in at least one embodiment comprises a set of values contained in one or more files associated with a food item, such as files contained in a downloadable recipe (from remote computer systems  122   b ), which are intended to produce a particular end result in the food item. For example, a cooking profile for a particular type of beef may include specifications that the final product be “medium rare,” or reddish pink in terms of internal color, and/or may specify an internal temperature for the food item, such as 135° F. (57° C.). The cooking profile may alternatively indicate that the meat needs to be tender enough to shred, or contain a certain amount of smoke flavor in the meat. 
     Each of these end results may be driven in part by a downloaded recipe, or by manual inputs by a user at grill  101   b  or via mobile device  120   b . The recipe may include such values as cooking time, amount of smoke applied and when, internal grill temperature, and so on. The cooking profile, in at least one implementation, may be used to adjust certain recipe steps in accordance with other variables that occur during a cooking cycle to ensure the overall end result. In general, therefore, a cooking profile can be understood as overall characteristics of a food item based on an intended end result for the particular food item, whereas a “recipe” refers to the generally modifiable steps used to achieve the end result. 
     Accordingly, embodiments of the present invention provide a grill system that enables the user to automatically control various aspects of a cooking process for different performance levels. In particular, embodiments of the present invention enable a user to automatically or manually monitor and adjust a grill temperature, to change or start a timer, to adjust a smoking pattern, to set the grill to a “keep warm,” or to adjust other state, or to perform other controls specifically geared toward a particular flavor or other desired end result. 
     Embodiments of the present invention allow the user to be as involved or uninvolved as desired, and to handle grilling procedures from a remote location. In particular, embodiments of the present invention enable a user to have part or full control over cooking a food item, and thus operation of multiple components of the outdoor grill in general accordance with multiple user preferences to whatever extent the user desires to be involved in controlling the operation or outcome, and regardless whether the user is away on travel, or at home in a living room. 
       FIG. 2  illustrates an embodiment in which a smoker  202  is controlled via a smart phone  203  (or rather via a software application running on the smart phone). The smart phone  203  may communicate with a cloud service  201  which, in turn, communicates with the smoker  202 . The cloud service  201  may provide data storage along with other features. The data storage may store, for example, recipes used by the smoker  202  to smoke meats, vegetables, fruits or other food items. Using the cloud service  201 , a customer or user may use their smart phone  203 , tablet, laptop, desktop or other computer system to control the functions of the smoker  202 . 
     The functionality may include smoker/grill monitoring including monitoring of the internal temperature, external ambient air temperature, probe temperature (e.g., from probes that communicate wirelessly), and alerts that may be raised by the grill or smoker. Other controls may include adjusting the temperature by adding more fuel, or allowing the existing fuel (such as pellets) to burn down so as to reduce the temperature, turning the device on or off or turning certain components on or off, controlling the timer or custom cooking cycles, or monitoring probe temperature alerts. Many more controls may be provided on the smart phone  203 , and the amount and type of controls may be updated over time to add new functionality. 
     As control inputs are received at the smart phone  203  (or other electronic device), they are passed to the cloud service  201  via a wired or wireless data transmission. The control inputs are then passed to the smoker  202  directly or via an access point such as a Wi-Fi router. In this manner, a user may be able to control their smoker/grill from substantially any location that has internet access. In some cases, the user may even be able to ignite the smoker  202  remotely, while in other cases, such functionality may be disabled unless the user is within a specified distance of the grill, as determined by a GPS or BLUETOOTH® geofence. 
       FIG. 3  illustrates an environment similar to that of  FIG. 2  in which a cloud service  301  links various devices including a smoker/grill  302  and a smart phone  303  or other electronic computing device  304 . The cloud service  301  is also connected to various other services and systems including, but not limited to, data analytics, third party advertising, remote diagnostic services, eCommerce services, social media, customer service assistance and others. For example, usage data for the smoker/grill  302  may be uploaded to the cloud service  301  and stored in the global data storage. 
     This usage data (such as when the smoker was turned on, how long was it turned on, what temperature did it reach, what was the average internal temperature, what was the average external temperature, what cooking/smoking recipe was used, what controls were used and when or other operational usage data) may be analyzed by an analytics engine in combination with data from other users. As such, usage data from many different users may be logged and analyzed to identify broad patterns of use. These analytics may then be used to refine and improve future smokers or grills, or may be used for other purposes such as providing advertising. 
     In one example, the cloud service may track users&#39; usage of the smoker/grill and may determine which products or recipes may be of interest to a given user based on similarities between their usage of the grill and other&#39;s usage. The usage data may also be used to perform remote diagnostics of the smoker/grill  302 . For instance, the usage data may indicate that a user&#39;s grill temperature exceeded a normal operating temperature (e.g., due to a grease fire). As such, certain parts may have failed or may be likely to fail due to the extreme heat. Other usage data may indicate different problems that may be likely to occur as a result of how the user is using their grill. Usage data may also be sent to social media announcing successful implementation of a recipe, or announcing to party guests that a specified meat is smoking and will be ready at a certain time. Many other social media implementations may also be used as provided by the cloud service  301 . 
       FIG. 4  illustrates an application workflow  400  for a software application such as software application  106  of  FIG. 1 . The application may run on a mobile device such as a phone or tablet or wearable device, or may be run on a desktop computing system or may be run through a web browser. It will be understood that the application workflow  400  is one example of an application workflow, and other embodiments and implementations are possible. 
     The application workflow  400  includes a home menu  401  that, on launch, shows the status of the grill (or other electronically-controlled appliance), the status of any probes in use, the status of any timers in use and any alerts. A first-time setup may walk a user through connecting the grill to an access point (such as a Wi-Fi access point), and linking the mobile device to the grill. The first-time setup may also take the user through a tutorial on how to use the grill, or at least certain components of the grill. The home menu  401  may show any or all of the following: grill temperature, probe temperature, timer (if running), active alerts (e.g., a low pellet alert or an empty hopper alert), current cook cycle, current cook time-to-completion, startup delay time, or other information. 
     The application may have many different tabs and menus, including one or more of the following: a control menu  402  that allows users to control the grill&#39;s target temperature, control the grill&#39;s target probe temperatures, set or restart timers, set startup delays, remotely start or turn grill off, set alerts or perform other functionality. A cook cycles menu  403  may be provided which allows users to select from different cooking cycles (i.e., pre-programmed cooking routines that control temperature for a specified amount of time to cook or smoke the food item in a certain manner), save cooking cycles, upload cooking cycles to a cloud service (e.g.,  301  of  FIG. 3 ), provide the user a play-by-play indicator of what is occurring during a cooking cycle, implement a certain cook cycle for a given food, browse and download recipes and/or cook cycles, provide access to a food warming cycle that keeps the food at a certain temperature for a specified time, or perform other functions. 
     The cook cycles menu  403  may have one or more submenus including a cook cycle creation menu  409 . The cook cycle creation menu  409  may allow a user to create his or her own custom cooking cycle. The custom cooking cycle can specify a given time to begin and end, a certain temperature to hold or change to throughout the cycle, various customizable triggers or conditions that may cause changes to the cooking cycle such as shortening or lengthening the cooking time, or increasing or decreasing internal grill temperature for a given length of time. The cook cycle creation menu  409  may allow a user to push the customized cooking cycle to the grill and have the grill begin implementation of the cycle. This customized cooking cycle may also be saved directly on the grill or in the cloud service  301 . 
     Other menus provided on the application workflow may include a settings menu  404 . The settings menu may allow a user to set up Wi-Fi, BLUETOOTH® or communication means on the grill. The settings menu  404  may also allow configuration settings to be accessed and changed. The settings menu  404  may further provide tutorial as well as other appliance- or application-specific settings that may be changed using the settings menu. A map menu  405  or tab may be provided which gives access to local retailers including pellet sellers or distributors, local butchers or farms for meat or vegetables, local events including barbeques or tailgate parties, or locations of nearby grill distributors. The map menu  405  may also provide other information that is specific to the appliance, such as a repair shop that specializes in repairs for that appliance. 
     A social media menu  406  may be provided which allows users to upload photos, recipes, videos or other media which may be of interest to other users. The social media tab may allow the user to post images or status updates to social media websites, including location pins, updates from the grill itself or other information. As such, the social media menu  406  allows users to share their grilling/smoking experience with others. 
     A recipes menu  407  allows users to browse recipes available online or through the cloud service  301 . When browsing these recipes, the user may select to download the recipes to their phone or other device. These recipes can be collected in a library and shared via social media. Users can sort the recipes, add their own recipes, add pictures to others&#39; recipes or otherwise interact with the recipe database. A store menu  408  allows a user to purchase pellets, propane or other fuel, purchase sauces, rubs, grill accessories, grill parts or full grills/smokers. The store may be expanded to allow the purchase of food items or other items that may be used in conjunction with the grill. The concepts described above will be explained further below with regard to method  500  of  FIG. 5 . 
     In view of the systems and architectures described above, methodologies that may be implemented in accordance with the disclosed subject matter will be better appreciated with reference to the flow chart of  FIG. 5 . For purposes of simplicity of explanation, the methodologies are shown and described as a series of blocks. However, it should be understood and appreciated that the claimed subject matter is not limited by the order of the blocks, as some blocks may occur in different orders and/or concurrently with other blocks from what is depicted and described herein. Moreover, not all illustrated blocks may be required to implement the methodologies described hereinafter. 
       FIG. 5  illustrates a flowchart of a method  500  for controlling an electronically-controlled appliance using a software application. The method  500  will now be described with frequent reference to the components and data of environment  100  of  FIG. 1 . 
     In some embodiments, method  500  may begin with the act of receiving an initiation input that indicates that the software application is to be instantiated on a mobile device ( 510 ) and instantiating the software application on the mobile device ( 520 ). For example, a user  111  may provide input  112  at the (mobile) computer system  101  indicating that software application  106  is to be instantiated. The software application may be implemented to control functionality of the electronically-controlled appliance  115 . Once such an input is received, the computer system  101  may instantiate the software application, making it available for use by the user  111 . 
     Method  500  may further include receiving an indication at the software application indicating that the electronically-controlled appliance is attempting to communicate with one or more remote computing systems ( 530 ) and further receiving a user input at the software application indicating that the electronically-controlled appliance is permitted to communicate with the one or more remote computing systems ( 540 ). For instance, computer system  101  may receive indication  114  from remote computing systems  113  (e.g., from a cloud service) indicating that the electronically-controlled appliance  115  is attempting to communicate with them. The communication attempt may be for the purposes of downloading a recipe, for example. The software application  106  may provide a notification to the user indicating that the electronically-controlled appliance  115  is attempting communication with the remote computing systems  113 . The user  111  may then indicate whether such communication is permissible or not. 
     If so, then the electronically-controlled appliance, which is communicably connected to the remote computing systems  113  via a wired or wireless connection (such as through an access point) may begin communication with the remote computing systems. This permission may be valid for a given session, for a given period of time, or for a given purpose (e.g., downloading a recipe). Method  500  next includes receiving an indication from one or more remote computing systems indicating that the electronically-controlled appliance is communicably connected to the one or more remote computing systems ( 550 ). 
     One or more of the remote computing systems  113  may send an indication  114  to the computer system  101  indicating that the electronically-controlled appliance  115  communicably connected to the remote systems, after which the software application  106  may provide a notification of availability  107  indicating that the electronically-controlled appliance is available to receive instructions ( 560 ). In some cases, the notification of availability  107  may be color-coded to indicate at a glance whether the electronically-controlled appliance  115  is available to receive instructions. For instance, if it is available, the notification of availability  107  may be illustrated in green, while if the electronically-controlled appliance  115  is not available, the notification of availability  107  may be illustrated in red or in some other manner that clearly indicates the communication status. 
     Method  500  further includes receiving a user input at the software application indicating that one or more specified functions are to be performed by the electronically-controlled appliance ( 570 ). For example, user  111  may provide user input  112  that specifies various functions  110  that are to be performed by the electronically-controlled appliance  115 . The inputs may specify new instructions to the electronically-controlled appliance  115 , or changes to existing instructions. 
     The user&#39;s input  112  may cause the instruction generator  108  of the software application  106  to generate one or more control instructions  109  configured to control the electronically-controlled appliance based on the functions  110  specified in the received user input ( 580 ). These control instructions  109  are then sent to the electronically-controlled appliance  115  to perform the functions. The electronic hardware controller  116  of the electronically-controlled appliance  115  then interprets and carries out the specified functions ( 590 ). 
     The software application  106  may be configured to display a user interface  118  that prompts the user  111  to provide demographic information such as name, age, address, gender, grilling preferences, grill serial number and/or other similar information. This demographic information may then be sent to a cloud platform (e.g., cloud service  301  of  FIG. 3 ) configured to register the electronically-controlled appliance to an account associated with the user. The account may store the user&#39;s information, appliances that are registered to the account, recipes associated with the user (e.g., recipes the user has uploaded, downloaded or “liked”), or other information associated with the user. 
     The software application  106  may be configured to receive information from the one or more remote computing systems  113  and may be in continuous or continual communication with such systems. The received information may include data regarding the electronically-controlled appliance. This information associated with the electronically-controlled appliance  115  may include usage information, analytics data, remote diagnostic information or other types of data. The data may be displayed in the user interface  118 . The user interface  118  allows functions of the electronically-controlled appliance  115  to be monitored by a user and/or controlled by a user. Indeed, the user can use various buttons or input fields of the user interface to control functionality or establish monitors on the electronically-controlled appliance  115 . 
     In some cases, for example, the user interface  118  of the software application  106  allows recipes to be downloaded onto the computer system  101  and then provided to the electronically-controlled appliance  115 . The user interface  118  may additionally or alternatively provide alerts for timers, probes or temperature, or may allow the user to program or make changes to a custom smoking/cooking cycle. The custom cooking cycle may specify, for example, that a meat is to be smoked at a certain temperature (e.g., low) for nine hours, then at a different temperature (e.g., high) for two hours, and then kept warm until served. Many different cooking or smoking cycles may be established and stored on the grill/smoker itself, or on the cloud service. 
     A user (e.g.,  111 ) may send a customized smoking cycle to the electronically-controlled appliance  115  from anywhere in the world where the user has an internet connection. The electronically-controlled appliance  115  may receive the customized smoking cycle and begin initiating it by igniting the smoker and adding wood pellets from the hopper to the combustion area. The electronic hardware controller  116  on the electronically-controlled appliance  115  may receive the custom smoking cycle, interpret its associated instructions, and carry them out by activating an ignition switch or solenoid, by activating the hopper, or by performing other functions as necessary to carry out the customized smoking cycle. 
     The software application may provide a user interface  118  feature that allows the user  111  to save the customized smoking cycle to a data store on the remote computing systems  113 , to the electronically-controlled appliance  115  or to data storage on the (mobile) computer system  101 . The user interface  118  may further provide a feature that allows a user to initiate a recipe on the electronically-controlled appliance. The recipe may include a custom smoking/grilling cycle or may use a pre-programmed cooking cycle. The recipe may include specified smoking/grilling settings that are to be carried out by the electronically-controlled appliance  115  when preparing food according to that recipe. 
     The software application  106  facilitates communication between the remote computing systems  113  and the electronically-controlled appliance  115 . The software application  106  transmits data packets to and receives data packets from the remote computing systems  113 , and further transmits data packets to and receives data packets from the electronically-controlled appliance. The software application  106  thus enables communication between, for example, an internet site and a grill/smoker. A user using the application can select a chicken recipe on the application, and the application will communicate with the grill to run the correct cooking program. As such, the user  111  can control their electronically-controlled appliance  115  from anywhere in the world, and can allow that appliance to access internet- or cloud-provided functions directly, such as downloading or uploading recipes or custom cooking cycles. 
     In one embodiment, a computer program product is provided which includes one or more computer storage media having thereon computer-executable instructions that, when executed by one or more processors of the computing system, cause the computing system to instantiate a user interface. One embodiment of this user interface is shown in  FIG. 6 . 
     A mobile computing device  601  such as a smart phone, tablet, laptop or wearable device may be configured to run software application  602  (which may be the same as or different than software application  106  of  FIG. 1A ). The software application  602  may include user interface  603 . The user interface may include a first input field  604  that is configured to receive input indicating whether an electronically-controlled appliance (e.g.,  115  of  FIG. 1A ) is permitted to communicate with one or more remote computing systems (e.g.,  113 ). The first input field  604  may prompt the user to provide an indication whether they allow the electronically-controlled appliance  115  to communicate with the remote computing systems  113  (“Yes”  605 ) or not (“No”  606 ). 
     The user interface  603  of software application  602  may further include a notification field  607  configured to indicate whether the electronically-controlled appliance  115  is communicably connected to the one or more remote computing systems  113  (e.g., in connection status field  608 ). The user interface  603  may further provide notifications indicating that the electronically-controlled appliance  115  is available to receive instructions (e.g., in input status field  609 ). The instructions may come from user input at the mobile computing device  601  or may come from the remote computing systems  113 . 
     The user interface  603  may also include a second input field  610  configured to receive input indicating that one or more specified functions (e.g.,  611 A,  611 B, custom function  611 C, etc.) are to be performed by the electronically-controlled appliance  115 . The functions may include temperature monitoring and control, gas burn rate, hopper control for feeding pellets into the combustion area, timer control, or other functions. The user interface  603  may further provide an instruction generating indicator  612  configured to indicate that control instructions configured to control the electronically-controlled appliance  115  are being generated based on the functions (e.g.,  611 A) specified in the received user input. A transmission indicator  613  may indicate that the instructions are being sent to the electronically-controlled appliance  115  for performance of the specified functions. These functions are interpreted and carried out by the electronic hardware controller  116  on the electronically-controlled appliance. 
     The user interface  603  may also provide real-time additions or changes to custom cook cycles on the electronically-controlled appliance. As such, once a user has initiated a cooking/smoking cycle, the user may update that cooking cycle throughout the process and customize each part of the cooking if desired using the software application  602 . In some cases, the software application  602  may receive temperature updates from a wireless cooking instrument (such as a wireless digital probe) implemented in conjunction with the electronically-controlled appliance. The user interface  603  may display these updates or alerts and may request the user to perform an action such as turning the smoker to a keep warm state so as not to overcook the food. 
     Accordingly, methods, systems and computer program products are provided which control an electronically-controlled appliance using a software application. Moreover, methods, systems and computer program products are provided which provide a user interface for controlling an electronically-controlled appliance. 
     The concepts and features described herein may be embodied in other specific forms without departing from their spirit or descriptive characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the disclosure is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.