[HELP] online monitoring of a switch

As expected the problem is caused by your use of the delay() function

A suggestion. Write down how many states the system can be in and give each a number starting at 0

For instance :

0 dry soil
1 wet soil
2 soggy soil
3 watering in progress
etc

Add the actions that take place in each state to the list

Perhaps
0 dry soil - add water for 10 seconds
1 wet soil - add water for 5 seconds
2 soggy soil - no action required
3 watering in progress for z seconds (millis() timing)

NOTE that I have invented the states and actions but you will know what is needed.

Add other states such as
4 display message x for s seconds

List any actions that must happen regardless of the current state such as
read soil humidity
read backlight button and change backlight state if it becomes pressed

Now you can structure your program using switch/case to execute only the code for the current state and still read inputs each time through loop()

You can do this with if/els but personally I find switch/case easy to read, particularly if you give each state a meaningful name.