HMITiles Custom Pages Framework

In this subforum you can show projects you have made, or you are busy with. Please create your own topic.

Moderator: leecollings

Post Reply
rwblinn
Posts: 76
Joined: Wednesday 10 June 2015 21:36
Target OS: Raspberry Pi / ODroid
Domoticz version: 4
Location: Hamburg (Germany)/Middelburg (NL)
Contact:

HMITiles Custom Pages Framework

Post by rwblinn »

Hi everyone,

I’d like to share an open-source framework that might be useful as inspiration or a blueprint for building Domoticz custom pages.

HMITiles Custom Pages Framework is a lightweight, decoupled HTML/CSS/JS framework designed to visualize and control your smart home devices using structured, high-density tiles.

This framework brings High-Performance Human Machine Interface (HMI) principles to the smart home. The focus is clarity, situational awareness, and disciplined layout—not visual special effects or decorative UI clutter.

Screenshots
Blueprint Framework Workbench (Development & Testing Area)
Image

Example Solar Dashboard (live data)
Image

Experimental Dark Theme
Image

Design Philosophy
This framework bypasses typical flashy smart-home trends to strictly mirror modern industrial HMI standards - using muted baselines (flat 4px rounded shapes) to reduce eye strain and reserving high-contrast colors exclusively for active process alarms.

Core Architecture
  • High-Performance HMI: Muted charcoal baselines with color shifts and alert symbols reserved strictly for active alarm thresholds.
  • Decoupled Engine Loop: Visual presentation parameters are isolated completely from back-end server data fetches using a fast registry map lookup.
  • Declarative DOM Injection: Hardware registries bind instantly to HTML tags via standard data-device-idx attributes, now supported by an adaptive, overflow-proof CSS Grid panel layout.
  • Ecosystem Extension Hooks: Central callback intercepts data to inject text inputs or multiple semicolon-separated device indices without extra loops.
  • Generic State Validation: Automated alarm handlers evaluate limits natively based on embedded metadata tags.
It is an experimental framework shared as-is for developers, which originally grew out of my B4X HMITiles project.

Included Page Blueprints & Widget Engines (Selected & Updated)
  • Alarm: Consolidates thresholds, labels, warning symbols (! and ▲), and severity borders into a single loop. Removes full background fills to lock cleanly into muted theme baselines.
  • Dimmer Sliders & Progress Bars: Linear horizontal fill indicators and range tracks with fully configurable min, max, step, and minimalist scales.
  • Gauge: Renders real-time sensor metrics using high-contrast vector arc indicators, 90-degree needles, or compass tracks.
  • Info: Displays explicit textual log data sourced natively from a device string or defined directly inside the HTML layout container.
  • Inputs Text, Number & Color types: Fields supporting strings, decimals, and #RRGGBB hex wheels for color/WW hardware that temporarily lock focus during edits to block background refresh interference.
  • Logmonitor: A full-page high-density component for real-time tracking of the server log database, featuring level filter menus, clearing, and dark-theme keyword color-matching.
  • Switches & Selectors: Manages binary or multi-level control arrays using grid-aligned buttons defined as responsive badges. The core engine scans elements and attaches hardware command click handlers to nodes with `data-action` tokens (supporting Toggle, Blinds, and Pulse/Push On).
  • Set-point Steppers with PV: Dual-variable panels pairing step buttons directly next to live sensor feedback, guarded safely by infinity bounding constraints.
  • Trends: Renders telemetry logs as high-density, full-width single-line SVG sparkline vector graphs. Calculates internal coordinates natively to map baseline indicators and stats without distortion.
  • Theme Dark: An experimental dark mode theme optimizing text contrast, hardware-accelerated rendering, and custom component layout visibility.
  • Values: Dynamically scales to support high-density metric rows, ranging from a single value up to 7 horizontal layout columns (multi-values).

Source Code & Documentation

The complete core system tree along with step-by-step setup tutorials, self-contained ready-to-run dashboard files, and the new standalone RailYard train control testing dashboard client are hosted on GitHub:

👉 GitHub Repository

Notes
  • The repository folder blueprints is a good place to start as each HMITile is described with examples.
  • This project is under continuous development. Updates, tweaks, and optimizations are pushed directly to GitHub as they happen, without separate forum announcements. Check the repository for the latest code revisions.
Best regards,
Robert
Last edited by rwblinn on Friday 07 August 2026 11:35, edited 11 times in total.
User avatar
waltervl
Posts: 7020
Joined: Monday 28 January 2019 18:48
Target OS: Linux
Domoticz version: 2026.3
Location: NL
Contact:

Re: HMITiles

Post by waltervl »

Thanks, but have you seen the work that has been done on the dynamic dashboard function that has been released in 2026.2?
It seems to be doing just the same (unfortunately...)
Domoticz running on Udoo X86 (on Ubuntu)
Devices/plugins: ZigbeeforDomoticz (with Xiaomi, Ikea, Tuya devices), Nefit Easy, Midea Airco, Omnik Solar, Goodwe Solar
rwblinn
Posts: 76
Joined: Wednesday 10 June 2015 21:36
Target OS: Raspberry Pi / ODroid
Domoticz version: 4
Location: Hamburg (Germany)/Middelburg (NL)
Contact:

Re: HMITiles

Post by rwblinn »

Thanks for the info.
Yes I have and the dynamic dashboard it is a very good framework ... but my focus was more on creating HMI dashboards based on earlier developments done using B4X (desktop Windows & Linux).
The HMITiles for Domoticz is a personal project but thought to share with the community.
User avatar
waltervl
Posts: 7020
Joined: Monday 28 January 2019 18:48
Target OS: Linux
Domoticz version: 2026.3
Location: NL
Contact:

Re: HMITiles

Post by waltervl »

I see, it has a retro look indeed (working 45 years with desktop computers now :) ).
Domoticz running on Udoo X86 (on Ubuntu)
Devices/plugins: ZigbeeforDomoticz (with Xiaomi, Ikea, Tuya devices), Nefit Easy, Midea Airco, Omnik Solar, Goodwe Solar
rwblinn
Posts: 76
Joined: Wednesday 10 June 2015 21:36
Target OS: Raspberry Pi / ODroid
Domoticz version: 4
Location: Hamburg (Germany)/Middelburg (NL)
Contact:

Re: HMITiles Custom Pages Framework

Post by rwblinn »

Update 2.0.0 (2026-07-13) (see post #1)

Major framework core engineering rewrite

Summary
Engine completely re-engineered from the ground up to achieve a purely declarative, decoupled, low-cognitive-load architecture.
This release eliminates inline script blocks from layout files, centralizes event lifecycle boundaries, updates structural typography for high-density industrial environments, introduces a unified multi-column data model, and launches an experimental standalone dark theme workspace profile.

New screenshots in post #1 and see Changelog.
Last edited by rwblinn on Saturday 25 July 2026 18:13, edited 1 time in total.
rwblinn
Posts: 76
Joined: Wednesday 10 June 2015 21:36
Target OS: Raspberry Pi / ODroid
Domoticz version: 4
Location: Hamburg (Germany)/Middelburg (NL)
Contact:

Re: HMITiles Custom Pages Framework

Post by rwblinn »

Update 2.1.0 (2026-07-25) (see post #1)

Rewrite core engine for industry dashboard compliance and multi-device support

Summary
  • Refactored core execution logic from hmitiles.js into hmitiles-processor.js.
  • Implemented a high-performance dictionary lookup map (deviceRegistry) to eliminate slow DOM/array loops.
  • Expanded the 'value' tile blueprint type to handle up to 7 dynamic columns from multi-device configurations.
  • Modularized hmitiles-preparser.js into isolated handlers mapped by Domoticz Type, SubType, and SwitchType.
  • Flattened the DOM scanner to seamlessly process parent hmi-pack-tiles alongside nested hmi-pack-innertiles.
  • Enforced strict high-performance HMI visual rules by silencing ambient background alert colors.
  • Integrated accessibility text symbols ([!], [▲]) and normalized value/unit typographic spacing.
  • Fixed dark mode CSS specificity collisions on text fields.
Updated screenshots in post #1 and see Changelog.

Example Multi-Device
Image
  • Display solar battery charge, discharge and state of charge (data-type="value", data-device-idx="43;44;45").
  • Display solar production, export to grid, import from grid, house consumption (data-type="value", data-device-idx="39;41;40;42").
Example RailYard
Image
About the RailYard Project
RailYard is a standalone LEGO® train automation system built with an ESP32 HubController handling trackside elements (signals, switches, sensors) over serial and locomotives via BLE. While the platform already supports B4A, B4J, and Python PySide6 clients, this release introduces a brand-new client track utilizing a custom HMITiles-for-Domoticz dashboard frontend.

Note: The frontend client layout is fully operational and included in this release for demonstration purposes. The matching backend Domoticz Python Plugin and hardware system documentation are currently finalizing development and will be shared in an upcoming repository update.
Disclaimer: LEGO® is a trademark of the LEGO Group of companies, and TrixBrix® is a trademark of Trixbrix Sp. z o.o., neither of which sponsor, authorize, or endorse this project. This is an independent, non-commercial hobbyist development built solely for educational purposes.

Thank You,
Robert
Post Reply