## 2 State of the Art
### Examples of Framework Implementations with Dynamic Configurations
#### 2.4.2 Ewings Framework  
The Ewings ESP8266 Framework is an advanced software package designed to simplify the development of IoT applications using the ESP8266 microcontroller. This framework builds on Arduino ESP8266 libraries, providing a user environment where the full capabilities of the ESP8266, especially its WiFi functionalities and various service integrations, can be fully utilized. At its core, the Ewings Framework leverages the ESP8266 EX chip, which features a 32-bit Tensilica L106 processor along with integrated WiFi capabilities. The framework is conceptualized as an operating system-less development tool that provides basic APIs for tasks such as data transmission, TCP/IP functions, and hardware communication. By using existing Arduino libraries, the Ewings Framework aims to make IoT application development more accessible to developers already familiar with the Arduino IDE [24]. Upon initialization, the ESP8266 device creates a local WiFi network, allowing users to connect and configure settings through a web interface. Default access credentials are provided so that users can change configurations such as WiFi settings and access point parameters. This setup process is designed to be simple, ensuring that development teams can quickly deploy their devices. The Ewings Framework offers a variety of services that significantly simplify the development of IoT applications. The HTTP Service extends the Arduino HTTP client, allowing applications to easily make RESTful HTTP requests. The NTP Service provides network time synchronization, ensuring that applications always have accurate time data. The MQTT Service implements the MQTT messaging protocol, facilitating device-to-device communication and sensor monitoring, while the Event Service registers event listeners for specific tasks triggered by events, thereby supporting responsive application behaviour. The framework also supports OTA firmware updates through its OTA service, offering remote device management and updates without needing physical access to the device. The ESPNOW Service enables mesh networking and broadcasting capabilities, using the ESPNOW feature of ESP8266 for efficient device communication. The WiFi Service provides simplified APIs for dynamic interaction with WiFi devices, including support for internet  
Figure 5: Configuration definition and persistence using EEPROM library functions (authors’ contribution). connections and dynamic subnetting. The PING Service extends basic ping functionality, allowing developers to check active internet connections, and the GPIO Service interacts with GPIO pins for sensor reading and device control, while the MAIL Service uses SMTP to send emails directly from the device, requiring SMTP configuration details. Additionally, the GPIO Alerts Service provides a mechanism for sending alerts based on specific GPIO conditions. All available services, libraries, and utilities are presented in Figure 6[24]. The Ewings Framework includes an embedded local HTTP server that operates in both station and access point modes. This server facilitates user interactions through a web interface for configuration and device monitoring. Key components of the server include controllers that manage client requests and handle user input, middleware providing request filtering capabilities, and a session manager for user sessions that can expire after a predefined duration. The routing module manages the definition of web routes and authenticates requests, while the EEPROM database uses flash memory to persistently store configuration data. Views and View Helpers assist in dynamically generating HTML content for the web, enhancing user experience [24].