This project can be used as a learning tool or as a template for starting a new ESP8266 project. It contains many of the components to build a ESP8266 project with web interface.
This demo includes:


I purchased several ESPixelSticks from Amazon for my synchronized LED Christmas light display. After using the ESPixelSticks, I became interested in how the ESP8266 worked and how to program it. So I began to review the ESPixelStick source code and the specifications of the ESP8266. It didn't take long to find out there is an add-on for the Arduino IDE that allows you to program the ESP8266 using the Arduino IDE and its programming language. A few years back, I had created some simple projects using Arduino UNO R3 and programmed using the Arduino IDE. Since I was already familiar with the Arduino IDE, I started by modifying some of the simple examples and playing with different libraries. I wasn't very interested in the low level hardware or interfacing to a sensor/module but I was more interested in an interactive UI and different ways to communicate with this device. I didn't have a particular project in mind so I created ESP8266-MyWidget; A project template for ESP8266.

ESP8266-MyWidget can be used as a learning tool or as a template for starting a new ESP8266 project. I tried to incorporate many APIs that may be useful for a ESP8266 project with a web interface.


Along with the Arduino IDE, you'll need the following software to build this project:
The following libraries are required:
Extract the folder in each of these zip files and place it in the "library" folder under your arduino environment


mDNS - multicast DNS

Web Services

Web Server

User Interface


File System

This project is implmented using the LittleFS file system. All data is placed in a 'data' directory.
Here is the directory and files associated with this project:
If you modify a file locally, you must upload to device using Arduino ESP8266 LittleFS Filesystem Uploader.
The LittleFS implementation for the ESP8266 supports filenames of up to 31 characters + terminating zero (i.e. char filename[32]), and as many subdirectories as space permits.
Keep your filenames + directories names short!

MQTT (Message Queuing Telemetry Transport) - IoT messaging

MQTT is implemented when a subscribe message is received, a corresponding publish message is sent.