Home Elements Boards Recipes

Pages marked with a Implementation tag

These pages contain information about the implementation of the HomeDing library and the Web UI to be uploaded into the flash memory based filesystem.

Boards and Processor modules

The HomeDing library can be used with Boards and Processor modules using the the ESP8266 and ESP32 chips from Espressif. In this overview some boards and devices can be found that are supported by the HomeDing library.

Building Connected Things Concepts

The HomeDing library is made to build devices connected to a local WiFi network that deliver a full functional solution without the need to use a central server or external cloud services. Here are the conceptual ideas influencing the design of the HomeDing library.

Building your own connected Things made easy

Class implementation documentation

Beside the Element implementations in the \<type\>Element classes there are some classes that implement common functionality or utilities:

Command Line CLI commands

Hints and details on how to control many devices using a command line approach.

Common Functionality or Elements

Details on the common functionality provided by the Element base class.

Device Discovery

Diag Element

The DiagElement is part of the DevDing Example and offers some additional diagnose information.

Display Classes

The C++ Classes used for displays and their dependencies.

Element Registry

The ElementRegistry is the central class that knows all included and available Element classes to allow further creation and customization of new Elements by name at runtime.

Elements and Actions

Gauge Microchart

HTML Templates for Elements

For displaying elements of a HomeDing device on the config and landing pages of the [Builtin Web server](/concepts/paper04.md) there are is collection of templates by using a card design available.

Implementation Details

Hints and details on how to implement new and extend existing elements using an Arduino programming environment and how to implement new cards for the dashboards.

Line Microchart

Logging

Micro Charts

Micro Dialogs and Forms

Simple User interactions using small forms.

Micro JavaScript Framework

The UI for HomeDing devices is implementation by using a small and specialized clients side framework fousing on a small implementation footprint to make it usable in embedded devices.

Micro Templates

The Template mechanism in the micro framework is used for dynamically assembling the UI as specified in the device configuration by using templates.

Pie Microchart

Sensor Element Implementation

Many Element implementations for sensors require the same functionality regarding timing and using properties and actions. The abstract SensorElement offers a base class that the specific Element implementations can derive from.

Software and Library Architecture

The Startup Sequence

After a reboot or when powering up the network connection needs to be established or configured and the operating mode is chosen based on counting reset cycles.

The Web of Things (WoT)

Using the I2C bus

The I2C bus is used by many components, sensors, displays and other chips to communicate commands and data. A central configuration is supported on the device level.

Using the SPI bus

The SPI bus is used by components that require fast communication like displays and memory. A central configuration is supported on the device level.

Using the deep sleep mode

The deep sleep mode allows saving energy consumption by powering down the device for a defined time to support situations where "always on" is not possible.

Web Manifest for HomeDing based devices

WebServer and Web UI

WiFi Manager Details

The WiFi-Manager is a module in the HomeDing library to register a device in the local network. It is implemented in every device in the board class. When the device has not been connected to the local home network the Wifi-Manager exposes a temporary, unprotected Wifi Network named HomeDingNNNNNN using the 192.168.4.xxx ip range. The device is always available on the URL <http://192.168.4.1/>. Any device like mobile phone or laptop with WLAN can join this network for configuration.

See also