Trying to reduce the use of SRAM

You have a very complex system of progmem character arrays, the string table (also in progmem) and copying to a buffer. Why don't you just use the F() macro and leave the strings where they are used:

e.print(F("<h1><a href='/?valve=off'>Greenhouse Arduino</a></h1>"));

This way the character array stays in the progmem but is directly in the code where you use it and you don't have to copy it to a temporary buffer (saves some RAM additionally).

The biggest win you get is readability of your program.