The gateway includes a smoke test harness that connects to a real ENH socket, performs a bus scan, and executes read-only method invocations for each discovered plane.
For the canonical cross-repo smoke order (gateway + add-on + HA integration), see development/end-to-end-smoke.md.
- Binary:
cmd/smoke - Gate: runs only when
EBUS_SMOKE=1is set.
The smoke harness reads AGENT-local.md from the repo root and extracts YAML blocks. Required fields:
enh:
type: unix|tcp
path: /path/to/ebusd.socket # required for unix
host: <EBUS_TCP_HOST> # required for tcp
port: 9999 # required for tcp
timeout_sec: 10
smoke:
profile: enh|ens|ebusd-tcp
verbose_frames: false
scan_timeout_sec: 5
method_timeout_sec: 10
register_dump_tsp: "" # optional; enables device dump
register_dump_target: 0x00 # optional; target address override
expected_devices:
- address: 0x08
description: "ecoTEC BAI"
manufacturer: ""
device_id: ""
sw_version: ""
hw_version: ""smoke.profile notes:
enhandensuse enhanced adapter framing (ensis accepted as compatibility alias of ENH).ebusd-tcproutes requests through ebusd command mode (hexon port8888by default).ebusdis accepted as alias ofebusd-tcpin smoke config normalization.- For
ebusd-tcp,enh.typemust betcp(host/port), notunix.
If EBUS_SMOKE=1 is set and AGENT-local.md is missing or invalid, the test fails with an error.
EBUS_SMOKE=1 go run ./cmd/smokeFor the full 88-topology matrix runner (T01..T88), see development/smoke-matrix.md.
- Build gateway stack (transport → bus → registry → router).
- Scan the bus with a per-device timeout.
- Log discovered devices and compare against
expected_devices. - Start a passive broadcast listener on a separate ENH connection after the scan.
- Run the optional register dump when configured.
- Invoke read-only methods for each discovered plane.
- Log semantic energy totals as B516 broadcasts arrive (if present on the bus).
Notes:
- If
expected_devicesis empty/omitted, the harness performs a full scan over the default address range. - On a multi-initiator bus, arbitration collisions can occur during scan. The scan logic retries collided targets in later passes (bounded) instead of aborting the entire scan.
- Default providers include Vaillant system, heating, and DHW planes; solar is opt-in.
The smoke test never writes to the bus.
If smoke.register_dump_tsp is set, the smoke harness runs a device dump after the scan and writes both a log and a JSON artifact. See development/device-dump.md for the full pipeline, schema, and output path rules.