ESP8266 Webserver Project

Moderator: Sprite_tm

User avatar
By piperpilot
#21215 OK...so I've been working with the module for a few weeks now. I have successfully built and flashed all 3 varieties of the webserver found here on the forum. They each have their awesomeness and benefits. So the question is...which do I base my project on. This is a long term project and I want to take advantage of any advances/bug fixes that come out. Here's what I like about the different project so far:

esp-httpd - The base for everything! The split making its own library now makes it easier to consume any updates/bug fixes. The code base is simple, but seems to be missing a lot of basics in order for me to implement my user app, including UART and some other flow control pieces in the standard SDK. I will be able to add those things with time, but there is a learning curve. Web pages could use some work.

esp-link - Well thought out implementation. Already some bug fixes for issues users are seeing, seems to be active development and lots of good documentation/info. The OTA update stuff is great and eventually I'd like to modify the uC update to work with a PIC micro, maybe even write in HTTP based POST flash update. The web pages are clean and well built. Has a lot of "extra" stuff that I might not use.

esp-ginx - Very robust implementation with lots of features. Nice clean web pages based on bootstrap. Has all of the SDK stuff I need to get started with my user code. Has extra features that I would turn off (ws server). Doesn't seem as stable as others, noticed in some of my testing a lot of wdt resets happening. Code hasn't been touched in 2 months on github.

So those are the 3 at this point. It would be really great if everyone adopted the library and made improvements there and then just added additional features in their own project...that would ensure the base esp-httpd is very stable and benefits from the improvements of many developers. I'm open for comment/suggestion on how YOU would proceed. The learning curve of ESP programming and C++ is pretty steep for me...but I'm getting there.

Thanks,
Curtis
User avatar
By bjpirt
#21222 If you're going to continue developing your code based on one of these then go for the esp-httpd library because your life will be much easier pulling updates to this library as it improves. Also, its author now works for Espressif, so it's unlikely to languish. That's what I'm doing anyway :-) My project used to be a fork of the original esp-httpd but it was difficult to keep everything synced.

Hope this helps,
Ben
User avatar
By tve
#21257
So those are the 3 at this point. It would be really great if everyone adopted the library and made improvements there and then just added additional features in their own project...


Agreed and I would use the library version if I hadn't started esp-link before the break-out into a library and I've had zero success in getting a pull request even looked at by the author. Plus the author is anti-github, which is OK in principle, but makes life dealing with pull requests, comments on pull requests, and tracking issues so much less pleasant. I've made significant bug fixes to esphttpd at this point and I'm not opposed to "merging in" the reorg, but unless I see reasonable movement around issues and pull requests or significant new features that I need I don't really see the point.

BTW, I assume that esp-nginx is significantly larger than 236 KB, which means no OTA update using 512KB flash size. I believe that most modules in a year or so will have larger flash chips, but there are a lot of esp-01 thru esp-11 modules out there. Is esp-link is approaching the limit I also face this issue (although I just freed up 4KB, LOL).
User avatar
By piperpilot
#21259 Thanks guys! That was my thought too...I also like the "official" but saw that tve has made a bunch of bug fixes and wanted to leverage those as well. I don't want to paint myself into a corner of constantly doing diffs to bring new updates and fixes in. I also don't want to own the httpd part of the code...I want to focus on my own app.

Just to throw one other out there that I have tried...

https://github.com/anakod/Sming

Sming seems to be a very good robust framework as well with lots of support and examples. For the C++ newb like me, it seems to simplify a lot of things and make it more intuitive to the type of programming I am used to (java, groovy, python).