A python implementation/abstraction of the Ness D8x / D16x Serial Interface ASCII protocol
- D8X
- D8X_CEL_3G
- D8X_CEL_4G
- D16X
- D16X_CEL_3G
- D16X_CEL_4G
- D32X
- DPLUS8
nessclient is available directly from pip:
pip install nessclientThe full documentation can be found at Read the Docs
This package includes a CLI which uses the library to interface with the Ness Serial Interface. You can read more in the docs
To use the CLI you must install it's dependencies by installing it with extras for cli:
pip install nessclient[cli]
ness-cli --help
The CLI exposes several high level commands:
events– listen for alarm events emitted by a connected panel in a terminal UI with live zone status and event logs.send– send a raw command to the panel.server– run a dummy panel server, useful for local development when an alarm panel isn't available.version– print the installed package version.
Run ness-cli COMMAND --help for full options on each command.
The dummy server can simulate a configurable number of zones independent of the panel model. Use --zones to set the count (1–32):
ness-cli server --zones 24 --panel-model D8X --panel-version 8.7
S00status includes unsealed zones in 1–16 (or fewer if the configured count is < 16).S20always responds: it returns an empty set when the configured count is ≤ 16; otherwise it reports unsealed zones in 17–N.
When reporting issues it can be helpful to provide the raw ASCII packets
exchanged with the panel. The events command accepts a --logfile option that
records each transmitted (TX) and received (RX) packet:
ness-cli events --logfile packets.logInclude the generated log file with bug reports to assist with troubleshooting.
You can find the full API documentation here
Please see Examples section in the docs for examples. These same examples can be found as source in the examples/ directory.
For a quick development setup, install dependencies and tooling with uv:
uv sync --dev --all-extras
Before submitting changes, ensure code is formatted, linted, type-checked and tested:
uv run ruff format .
uv run ruff check .
uv run mypy --strict nessclient
uv run pytest
See the Developing section in the docs for more details on contributing and environment setup.