An App object is a container for a set of utility objects which are useful for assembling an application as a set of modules.
The basic App contains a:
ModuleSystemfor organizingModules, anTasksmodule for running scheduled tasks, and aLoggerobject for logging text messages for monitoring and debugging.
For an application which uses Wifi, a WifiApp adds these modules:
WifiManagerfor configuring and establishing connections access points,Mdnswhich uses mDNS to advertise the device on the local network,OtaManagerto facilitate updating firmware over the network, andConfigInterfacefor persisting configuration settings via flash storage.
For an application with a web interface, WebApp adds a WebServer which manages an AsyncWebServer object.
For an application that supports MQTT, particularly for talking to Home Assistant, a HAApp can be used. This adds a MqttManager to help interfacing with a MQTT broker, a HADiscovery object which assists in declaring Home Assistant Entities from Variables used by the system. An AppStatus module automatically publishes basic application stats to the MQTT broker.