A universal webserver for Arduino, capable of delivering dynamic contents
C++ C
Switch branches/tags
Nothing to show
Latest commit e37fc89 Jun 1, 2017 @SukkoPera Remove leftover #define

README.md

Webbino

Webbino is a webserver for Arduino. I originally wrote it for my SmartStrip project, which required several unique features which were not present in other webservers that were available at the time:

  • Compatible with many network interfaces:
  • HTML pages and other data can be embedded in the code. This avoids the need of an SD card for simple sites.
  • If you prefer, HTML pages can also be stored on an SD card (long file names are supported!)
  • Tags like "#WHATEVER#" in HTML pages can be replaced at page request time, allowing the delivery of dynamic contents.
  • Arbitrary functions can be associated to a page, to perform any needed actions.

To switch between the supported chipsets, and to configure various working aspects of the webserver, have a look at the webbino_config.h file: the WEBBINO_USE_* #defines will enable support for the chosen network interface.

Included with Webbino are a lot of examples showing how to use all the different features.

Supported boards

WizNet W5100

Support for this chip is included in the standard distribution of the Arduino IDE, so it can be used stright away.

WizNet W5500

This chip is used on the Ethernet Shield 2 by arduino.org. It is supported through the Ethernet 2 library which (I suppose, as I don't use it) is included in the standard distribution of the arduino.org IDE (1.7.x), but it can also be installed through the Library Manager in the arduino.cc IDE (1.6.x).

ENC28J60

The ENC28J60 Ethernet Controller is supported it through the EtherCard library.

When ENC28J60 support is enabled, a lot of RAM is used for the packet buffer, as EtherCard currently needs it to be allocated in the main RAM. It is currently set at 800 bytes, which include TCP/IP headers, leaving about 750 bytes for data to be sent to the client. Since the library also forces all communications to be single-packet, about 750 bytes is the maximum size of any data that is exchanged between server and client (i.e.: of webpages).

WINC1500

WINC1500 support is obtained through the WiFi101 library that can be installed through the Library Manager.

ESP8266

ESP8266 is supported either as an add-on to Arduino or standalone:

Storing pages

Web pages can be stored in Arduino's flash memory (where code is stored) and/or on an SD card.

Flash memory

If you only need to serve one or a few pages, storing them together with the code is a great idea, as you will spare your SD card for some better job.

Any file that must be available on the webserver can be converted to a C header file throught a Python script that is available in the "tools" directory. It will also produce some code that you need to include in your sketch. Please have a look at the examples if you need help.

SD card

If flash space is an issue or if you just prefer to store your pages on an SD card (to make them easily editable, for instance), you are welcome to do so. You will need to enable SD support by uncommenting one of two #defines in webbino_config.h:

  • WEBBINO_ENABLE_SD: This will use Arduino's SD library, which only allows DOS-style (i.e. 8+3 characters) file names. This implies that you will have to name your pages with a .htm extension, instead of .html.
  • WEBBINO_ENABLE_SDFAT: This will use the SDFat library, which allows access to files with long names (LFNs), if properly configured (see SdFatConfig.h in the library sources).

Replacement Tags

Webbino allows easy embedding of small pieces of dynamic content in webpages. If, for instance, all you have to do is show some instant weather data in an otherwise static page, just use the Tag feature: put placeholders like #TEMPERATURE#, #HUMIDITY# and such in your HTML page, and have Webbino replace them with actual data measured when the page is loaded! Have a look at the ReplacementTags example to get started.

License

Webbino is free software: you can redistribute it and/or modify it under the terms of version 3 of the GNU General Public License as published by the Free Software Foundation.

Webbino is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Webbino. If not, see http://www.gnu.org/licenses/.

Support

Please use the official github page to report issues, suggestions and such.