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.