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:
A firmware that knows how to interact with a lot of possible sensors and chips
A web server to host the UI files and the api.
A editor for configuration
A page to view data and control the device.
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.
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.