The following is based on this example:
I have verified that wireless programming, serving a web page and ESP-NOW all work simultaneously.
You have to change your router to only use Channel 1 or the range is very short.
The high speed control NodeMCU ESP8266 microcontroller can send the data using ESP-NOW and still scan the control program 100X per second.
Up to 250 bytes per message can be sent to up to 10 encryted NodeMCUs or 20 unencrypted NodeMCUs.
Although each NodeMCU has a limited amount of onboard I/O it can be greatly expanded with I2C and OneWire buses to expander chips. Many digital temperature sensors can be connected on one input defined as a OneWire bus.
You could add on each NodeMCU, a Real Time Clock DS3231, 128 digital I/O with MCP23017s (16 per chip), 20 16-bit analog inputs with ADS1115 (4 per board), 32 12-bit analog outputs with MCP4728 (4 per board) and 992 PWM servos with PCA9685 (16 per board) all on only two I2C I/O.
The web page server controller must be programmed to allow for long tasks. If a task is to be executed when time = 5.0 seconds it could be missed. Using time > 2.0 and time < 8.0 instead ensures a task isn't missed.
I currently have 8 NodeMCUs at home saving me $1,000+/year. All are programmed wirelessly and all have a web page HMI. You just click on a different browser tab to access each of the controller HMIs. Examples of some of the HMI web pages are in the gallery. You put in the local IP address of the NodeMCU and it serves the web page. Works on any browser on any device. No app needed. For wireless OTA programming you click on the local IP address of the NodeMCU instead of a COM port number in Arduinio IDE.
Adafruit free MQTT, shown, is much easier than a web page to set up for a local and remote HMI including recording of data but the free version is quite limited.
I also use IFTTT to send data to a cloud spreadsheet that is available to view from anywhere.
There are many power failures where I live. All the devices reboot, reconnect to the internet and continue properly after power is restored. No battery backup needed.
They all have a real time clock that is reset from the internet once per day at 3 a.m. to keep it very accurate and to correct for daylight savings time or not.
The battery backed RTC keeps the time correct in spite of the many power failures. Many tasks are based on time. The RTC is also used to execute code once per second without using delays.
ESP-NOW was used on this project to display data from another microcontroller without any hardware connections.