Home Elements Boards Recipes

The HomeDing Library

The HomeDing library was created to implement standalone IoT devices with the Arduino framework easily. Using cloud services or MQTT are options but not required. Connect to your home WiFi using a simple form and then customize using a low code and easy configuration. The built-in web server with a rich user interface allows controlling the device and shows all information of the connected sensors and peripherals. Make your own by using the Arduino development environment.

Making IoT easy

The main goals and the driving reasons for implementing the HomeDing library are simplicity in creating new IoT devices that can run on their own and have no need for cloud services. All you need is a standard browser.

They have all you need built-in:

Home made IoT devices

The HomeDing Library provides the foundation for easy implementation of IoT devices with the Arduino environment.

The core of IoT devices is a microprocessor like an ESP8266 or ESP32 with many features at a low price.

They have many pins that can be used as input and output signals, very useful for attaching sensors, lights, displays or motors.

WiFi is als built in, making it easy to connect using a browser through your home network.

The free Arduino programing environment has all the tools to create and upload the program into the microprocessor, easy to learn for beginners and feature rich for professionals.

What makes HomeDing different ?

1. Configuration

The HomeDing library offers more than just a program including powerful configuration feature.

You can use one of the provided examples without modification to run your device that contains the code required for many use cases. Functionality is activated and orchestrated by configuration. No need to bring your device back to the computer, all can be done from remote:

  • The integrated Web Server enables you to reach and interact with your device using a standard modern browser.
  • The built-in WiFi Manager help you connecting the device to your local WiFi.
  • Changing and enhancing the functionality of your device can be done without reprogramming.
  • All the device can do is based on the Elements of the HomeDing library that implement each a very specific functionality.
  • There are Elements for Sensors, digital and analog Signals, Displays, Time and Timing, Logic and Calculation and more. They all "sleep" inside the code and wait to be configured.
  • A Element can be activated by adding configuration properties to the config files e.g. used pins by a sensor.

2. Automation

To react on sensor values or to handle a specific situation the Elements can interact and rules can be applied:

  • Events occur within Elements when a new value was given by the sensor, when a timing condition is met or by some calculations.
  • Based on events Elements can send Actions to other elements to start processing in the target element.
  • Combining multiple elements this way enables building complex automations and functionality.
  • The Actions based programming model is not limited to a single device but Actions can be sent over the network to other devices to support even more complex scenario.
  • To integrate a device into a Home Automation server Actions can be used to create and send MQTT messages.

3. Accessible by Browser

There is a built-in Web Server that lets you inspect, control and configure the device.

  • The Board shows tiles/cards for all activated Elements including the current state and data like sensor values.
  • The IDE enables accessing and modifying the files in the device especially the configuration of the Element in the device.
  • The LOG can be inspected containing information about the state, problems and progress.
  • The Web Services are used by the Web UI like the dashboard but can also be used from other devices and servers. This allows combining multiple devices exchanging Actions over the network.

IoT devices can be used standalone

Everything for a useful device fits into the memory available on a standard ESP8266 or ESP32 board. There is no need for a central hub or bridge device - ideal for starting with implementing IoT devices.

No Cloud connection

In contrast to many IoT solutions from vendors that rely on some functionality given by a central implementation in the cloud the HomeDing based devices are designed to be used without any cloud support and can run without being connected to the internet.

Using the Arduino Environment

To enable everyone to create IoT devices easily, the HomeDing library is available in the format of an Arduino library.

All you get is OpenSource and a lot of documentation to learn implementing your features.

Easy to be used

Many of the standard problems that need to be solved for building IoT devices have been implemented in the library.

Just use one of the examples as a starting code and upload it to the device.

No programming skills required

One of the powerful features of the HomeDing library is the availability of specialized elements that can be configured to work together and build solutions.

Start by building your first IoT device by using some of the configuration examples from the recipes.

Web enabled

Web interface

Every device based on the Homeding library is connected to the local WiFi network and has a Web Server and a small Web Site built-in to visualize the current functionality or to configure some new functionality using a standard web browser.

The IoT devices all offer a full functional web frontend User Interface (UI) based on the web technologies HTML+CSS+JavaScript.

The build-in Web Server also offers a programmable interface by using REST+JSON based Web-Services.

Again, just using the given implementation is an option to start quickly as there are widgets for many of the elements that allow inspecting, controlling and configuration using a standard browser.

If you like to extend the UI capabilities you can find some documentation in Implementation Details to see how the full functional Web UI is built with the reduced memory available in microprocessor environments.

Processors supported

The library is currently made especially for the ESP8266 and ESP32 based boards like the NodeMCU or ESP32-DevKit or similar ones. The Arduino environments are used for implementation to keep this easy for DIY projects.

Many sensors, displays, input and output functionality is available as elements.

For some boards you can find reviews and summaries with a suitable the configuration of the system.

Open Source

The project is Open Source available on GitHub and all files are licensed under a BSD style license. See http://www.mathertel.de/License.aspx

The full documentation is available at: https://homeding.github.io/

Some text on the concepts and architecture of this library.

Elements

Elements are the functional blocks for building and configuring a device and they interact using actions.

Each element supports a unique feature, e.g. reads a sensor, drives a display, connects some peripheries or implements some internal logic.

The list of the elements already provided within this library, the examples and the recipes show you the available features that can be configured.

It is intentionally easy to implement your own specific elements as you can see in some of the examples.

Configuration

Instead of compiling and uploading a new firmware to the device every time a change is required the library provides configuration possibilities at runtime.

The configuration of the device implemented as a JSON file activates and configures the required elements as well as defining how the interact with each other and to the outer world over network.

See also

Extend and Implement for your needs

From Espressif

General Guides