An open, vendor-neutral, machine-readable device contract for Modbus: what a device exposes, how values are encoded and scaled, what they mean, what may be written, and which constraints a client must respect. Think OpenAPI, but for Modbus devices.
Status: v0.1.0 draft, not yet agreed. Start with
docs/PROPOSAL.md.
| Path | What |
|---|---|
docs/PROPOSAL.md |
Goals, prior art, the 16 decisions to agree, tooling plan, roadmap, risks. |
spec/openmodbus-0.1-draft.md |
Draft specification: addressing, decoding/encoding, conversion, validity, constraints, writes, validation rules. |
schema/0.1/contract.schema.json |
JSON Schema 2020-12 for the document structure. |
examples/ |
Three complete contracts for fictional devices (power meter, inverter with scale factors, I/O module). |
conformance/decode-vectors.yaml |
Language-neutral decode/encode test vectors. |
devices/ |
Reviewed vendor and device contracts. |
corpus/ |
Source URLs, provenance, checksum lock and checks against vendor data. |
openmodbus: 0.1.0
info: { id: acme/pm100, title: Acme PM-100 power meter, version: 0.1.0 }
device: { manufacturer: Acme Metering, model: PM-100 }
defaults: { table: input_register, wordOrder: little, byteOrder: big }
points:
- { id: frequency, address: 20, type: f32, unit: Hz }
- id: power_factor
address: 30
type: i16
conversion: { multiplier: 0.001 }
invalid: [-32768]A contract describes the device, not the deployment: no IP addresses, serial settings, polling schedules or credentials.
Tooling lives in separate repositories (see the proposal, §4): go-openmodbus (model, validator, runtime, omb CLI),
py-openmodbus and openmodbus-studio (editor).
The device catalog lives here. Run make corpus CORPUS_SET=all to rebuild every contract from its original vendor
source. The corpus guide describes source links, checksums, extractors and the temporary cache.
Roster coverage lists the mapped, needs-check and blocked models per device class, and the
corpus work items list the open questions, including spec-gap candidates.
MIT for the specification, schema, vectors, tools and the device catalog (decision D15, maintainer): see LICENSE. Catalog contracts carry their vendor source link, checksum and attribution.