Repository navigation
tedge-dot 0.0.1
tedge-dot ships as two interchangeable packages, each containing the same
/usr/bin/tedge-dot binary, the same systemd unit and the same
/etc/tedge/plugins/ot/ config layout. They speak the same
OT Connector Contract,
so a config, a flow or a cloud integration built against one works unchanged against
the other. Install one or the other — they declare each other as conflicting.
| Package | Implementation | Pick it when |
|---|---|---|
tedge-dot-rs |
Rust (impl/rust/) |
Default. Richest protocol support, one static binary, no shared-library dependencies. |
tedge-dot-c |
C (impl/c/) |
Small or old devices: ~25x smaller, a glibc 2.17 floor (Debian 8 / RHEL 7 era), and it additionally ships the PROFIBUS-DP connector. |
Install
Download the package for your architecture from the assets below, then:
# Debian / Ubuntu
sudo apt-get install -y ./tedge-dot-rs_*_linux_amd64.deb # or ./tedge-dot-c_*_amd64.deb
sudo systemctl status tedge-dot
# RPM distros
sudo dnf install ./tedge-dot-rs_*_linux_amd64.rpm # or ./tedge-dot-c_*_amd64.rpm
Alpine: the attached
.apkfiles carry a version string apk-tools rejects
(apk version -crefuses both this project's tag format and the snapshot
form), soapk addwill not install them. Use the tarball on Alpine until
that is fixed — see TODO.md.
Or grab a tarball and run the binary directly — it doubles as a one-shot
read/write CLI. The tedge-dot-c tarball carries the default configs to start from:
./tedge-dot read -c config-defaults/modbus.toml --jsonSHA256SUMS covers every asset in this release.
Upgrading from a release before the split
The package formerly called tedge-dot is now tedge-dot-rs. Both packages
Replaces: the old name, so installing either over an existing tedge-dot
works and keeps your /etc/tedge/plugins/ot/ configuration:
sudo apt-get install -y ./tedge-dot-rs_*_linux_amd64.debTwo caveats:
apt install tedge-dotno longer resolves —tedge-dotis now a virtual
package provided by both, so apt cannot choose. Install by the real name.
Scripts and runbooks using the old name need updating.- A plain
apt upgradewill not migrate an existingtedge-dotinstall; it
stays on the old package name and receives no further updates until you
install one of the new ones explicitly.
Notes
- On a fresh install the service starts with no devices configured. Add
[[device]]sections under/etc/tedge/plugins/ot/, or copy a demo config
from/usr/share/tedge-dot/demo/, then restart the service. - The connector is a dumb driver: the device-side flows that map its
envelopes onto the thin-edge data model are deployed active into
/etc/tedge/mappers/c8y/flows/, with the opt-in alarm/event flows in
/usr/share/tedge-dot/flows/. Seeflows/README.md. tedge-dot-cruntime dependencies (Debian/Ubuntu names):libmodbus5,
libmosquitto1,libcjson1; open62541 is statically linked. It is
cross-compiled with zig against the glibc 2.17 floor.tedge-dot-rsomits the PROFIBUS connector: its serial dependency has a
native libudev build script that does not cross-compile. Build from source on
Linux withcargo build --manifest-path impl/rust/Cargo.toml --features profibus, or usetedge-dot-c.- Where the two implementations differ in behaviour, see the parity table in
impl/c/README.md. - On Alpine, the two packages are not mutually exclusive by metadata: apk
expresses conflicts differently and theconflictsfield is not carried into
the.apk. Installing one over the other will collide on
/usr/bin/tedge-dot— remove the first withapk delbefore installing the
second, rather than forcing the overwrite.
What's Changed
- Implement the OT connector conformance suite (ot-conformance) by @reubenmiller in #1
- feat(cli): wildcard selectors, polling reads, stdout output, ts_ms by @reubenmiller in #2
- fix(profibus): deflake tcp_phy_survives_peer_disconnect by @reubenmiller in #3
- ci: run conformance checks for each OT connector by @reubenmiller in #4
- poc: C implementation of tedge-dot (all five OT connectors + native packaging/release) by @reubenmiller in #5
- Cross-compile the C PoC with zig; one runner, three architectures, an old glibc floor by @reubenmiller in #6
- demo: podman-compose stack for real devices, published images only by @reubenmiller in #7
- ci: pull base images from the ECR Public mirror instead of Docker Hub by @reubenmiller in #8
- feat: device parameters — write to OT points from the Cumulocity Parameters tab (RFC 0003) by @reubenmiller in #9
- feat(packaging): ship the OT flows in the device packages by @reubenmiller in #10
- ci: stop registry throttling from failing the e2e suites by @reubenmiller in #11
- feat: elevate the C implementation to a first-class, released peer by @reubenmiller in #12
- feat: point libraries — decouple point lists from the connector target by @reubenmiller in #13
- feat: name parameter sets after the device type by @reubenmiller in #14
- fix!: act on each command in exactly one connector instance by @reubenmiller in #15
- fix: release version in --version; build Rust release on macOS runner by @reubenmiller in #16
New Contributors
- @reubenmiller made their first contribution in #1
Full Changelog: https://github.com/reubenmiller/tedge-dot/commits/0.0.1