openhab-docs/_addons_bindings/matter/code-gen
openHAB Build Server 38dd3ce74a Updated external content (Jenkins build 2727) 2025-07-27 06:03:11 +00:00
..
README.md Updated external content (Jenkins build 2727) 2025-07-27 06:03:11 +00:00

README.md

Matter Code Generator

This system generates Java classes for Matter clusters, device types, and related functionality. It uses Handlebars templates to transform Matter.js protocol definitions into Java code suitable for serialization.

Overview

The code generator consists of:

  • app.ts: Main generator script that processes Matter.js definitions and generates Java code
  • Template files in src/templates/:
    • cluster-class.hbs: Template for individual cluster classes
    • base-cluster.hbs: Template for the base cluster class
    • cluster-constants.hbs: Template for cluster constants
    • cluster-registry.hbs: Template for cluster registry
    • device-types-class.hbs: Template for device type definitions
    • data-types-class.hbs: Template for data type definitions

Main Generator (app.ts)

The generator script:

  1. Imports Matter.js protocol definitions
  2. Maps Matter.js data types to Java types
  3. Processes cluster inheritance and references between clusters
  4. Compiles Handlebars templates
  5. Generates Java code files in the out/ directory

Templates

cluster-class.hbs

Generates individual cluster classes with:

  • Cluster attributes
  • Struct definitions
  • Enum definitions
  • Command methods
  • toString() implementation

base-cluster.hbs

Generates the base cluster class with:

  • Common fields and methods
  • Global struct/enum definitions

cluster-constants.hbs

Generates constants for:

  • Channel names
  • Channel labels
  • Channel IDs
  • Channel type UIDs

note this is not currently used yet in the binding

cluster-registry.hbs

Generates a registry mapping cluster IDs to cluster classes

device-types-class.hbs

Generates device type definitions and mappings

Usage

  1. Install dependencies:
  2. Run the generator:
  3. Generated Java files will be in the out/ directory
npm install && npm run start

Note the the maven pom.xml will execute these steps when building the project, including linting the generated files and moving them from the out directory to the primary addon src directory.

Handlebars Helpers

The generator includes several Handlebars helpers for string manipulation to assist in Java naming conventions:

  • asUpperCase: Convert to uppercase
  • asLowerCase: Convert to lowercase
  • asUpperCamelCase: Convert to UpperCamelCase
  • asLowerCamelCase: Convert to lowerCamelCase
  • asTitleCase: Convert to Title Case
  • asEnumField: Convert to ENUM_FIELD format
  • asHex: Convert number to hex string
  • and many others