Avoid using D3 with relays as it will latch on at boot and your wifi will not connect until you remove the GPIO connection from the relay.
D8 Will also latch on and cause conflict do not use this.
D0 can be switched on to reset the device so if you are using an application where a reset may be helpful point to D0 and turn it on to reset the device.
D4 is tied to the LED light there is no conflict here though it is perfectly fine to use D4 for ON/OFF without issue!
This was tested without power applied to the relay board however once power is applied there may be just a quick on then off.
RX and TX should not be used for relays as well they are specific purpose.
GPIO 9 is fair game works for relays just fine I believe it must be flashed in DIO mode to use though!!!
GPIO 10 works on some models Amica models are the only models that I have tested and it works on must be flashed in DIO mode. - See more at: viewtopic.php?f=40&t=6732#sthash.lLM90C3k.dpuf
Remove your heater from 16 and place it on 14 for starters. Turning your heater on will likely reset your unit if using a nodemcu variant .
Some elements do not need a closing (/>) tag - in particular empty elements (those that do not have content). Examples are <hr> and <br>. These can also be self closing (<hr /> and <br />, respectively). This self closing is equivalent to having a close tag immediately after the open tag.
For XML, such a non closing tag is not valid - it must be closed, either self closing or have a closing tag. So <hr> is not valid XML, but <hr /> and <hr></hr> are.
HTML is not XML, but for better compatibility some tools try to emit as much XML like HTML as possible.
This is just good practice imho...
What are you printing on the second line???
Print "ESP8266 WiFi Thermostat "
print
Textbox variable is setp I would try a different variable possibly setp seems like a variable that they may use for basic possibly somewhere try something like:
textbox onofftmp
HTML good practice use <br> </br> opening and closing tags instead of just <br> alone.
This line:
wprint "CurrTemp="
change to:
wprint "| CurrTemp= |"
Same with this line:
wprint "Heater="
change to:
wprint "| Heater= |"
Don't know what all the serialprintln is for likely debugging ?
Have you tried simpler code to be sure that it is not code error?
Have you tried accessing from a computer or laptop to make sure it was not your phone?
I am going to go out on a limb here without testing and predict it is likely that it is a bug as suspected I wouldn't mind checking some simpler code that did not need a temp sensor and a fan connected just to see if the elements you speak of are working or not working.
If you want to code up something simplistic to perhaps turn D4 or the LED on and off and have a text box etc I would gladly test it for you. However at the time I do not have a temp sensor or extra relay readily available for testing.
The last lines of your code to print a link to the menu also make no since why not get the link instead and then end the program but I have not tested this method maybe it is fine IDK... Anyhow just seems incorrect while I am not saying that 100% that it is as I have not tested nor thought of doing things this way.
Hrmmm hopefully at some point bugs are hashed out for now it is great that you are finding and reporting these things ....
These are just all suggestions to ensure that they are indeed bugs and not user, interface, or network induced. Thanks for the reporting if you want to help investigate this further and do the simple code as suggested I would be more than happy to confirm that it is indeed a bug.
Where I buy my ESP8266 boards from... (Banggood)