Skip to content

General Layout

A driver is a YAML file. Below is the full structure with all supported fields.

id: <string>                  # (required) unique identifier for this driver

# Optional metadata
vendor: <string>              # equipment vendor / manufacturer
model: <string>               # device model name
version: <int>                # driver version
type: <string>                # standard device type (e.g. thermostat, awhp, weather_sensor)

transport: <protocol>         # (required)

env:                          # (optional) driver-scoped constants, reusable across attributes
  BASE_URL: "http://example.com/api"

device_config:                # (optional) parameters the user must supply per device instance
  - name: ip                  # e.g. IP address, device ID — interpolated as ${ip} in addresses

update_strategy:              # (optional) controls how often attributes are polled
  period: 30s

attributes:                   # (required) list of attribute drivers
  - name: temperature         # attribute identifier
    data_type: float          # float | int | bool | str
    read: ...                 # transport address for reading — see Transport Addresses
    write: ...                # transport address for writing — omit if read-only
    # or:
    read_write: ...           # shorthand when read and write share the same address

    # Codecs (optional) — applied in order on read, reversed on write, if reversible
    codecs:
      - json_pointer: /path       # extract a value from a JSON payload
      - byte_convert: float32 big_endian

Field reference

Field Required Description
id yes Unique driver identifier
transport yes Protocol used to communicate with the device
vendor no Equipment vendor name
model no Device model name
version no Driver version number
type no Standard device type — enables schema validation and built-in UI. See Standard Devices
env no Driver-scoped constants
device_config no Per-instance parameters (e.g. ip, device_id)
update_strategy no Polling frequency configuration
attributes yes List of readable/writable device attributes
discovery no Auto-discovery configuration (protocol-dependent)

Each attribute under attributes must declare a name, a data_type, and at least one of read, write, or read_write. See Attribute Drivers for full details.