This is an older post, however I started with ESP8266 day's ago and - of course - struggled with my freshly received ESP-01S relay boards.
The suggestion to add a 10k resistor between GPIO0 and 3.3v does not work for two reasons:
- first, a 2k resistor is connected between GPIO0 and a NPN transistor base with emitter to ground
- second, a 10k resistor is connected between GPIO0 and ground
thus, a 10k resistor is not small enough to reach a "high input" level.
What worked for me was to remove R2 by simply desoldering it. On my PCB it was marked R2,
This will leave GPIO open during boot, and inspite of the remainig base connection it works.
Only disadvantage: the relay will switch on during boot until the ESP8266 programm set it low.