Repository navigation
tedge-dot 0.0.10
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
Both packages are published to the thin-edge.io community repository, which
also carries their tedge-parameter-plugin dependency (it maps the Cumulocity
Parameters tab onto point writes). With that repository set up
(instructions):
# Debian / Ubuntu
sudo apt-get install -y tedge-dot-rs # or tedge-dot-c
sudo systemctl status tedge-dot
# RPM distros
sudo dnf install tedge-dot-rs # or tedge-dot-cOr download the package for your architecture from the assets below. The
package manager still resolves tedge-parameter-plugin from the community
repository, so set that up first:
sudo apt-get install -y ./tedge-dot-rs_*_linux_amd64.deb # or ./tedge-dot-c_*_amd64.deb
sudo dnf install ./tedge-dot-rs_*_linux_amd64.rpm # or ./tedge-dot-c_*_amd64.rpmAlpine: 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.
Report by exception (report)
A point, a device or [connector] can now declare a reporting policy, applied by the
connector itself for every protocol before a sample is published: on_change, deadband
(absolute, or a percentage such as "2%"), min_interval (a change held back is published
when the interval ends), max_interval (a heartbeat that publishes a fresh reading of a flat
signal, reading a subscribed OPC UA node on demand) and debounce. See
doc/reducing-data-volume.md.
- The packaged Modbus, OPC UA, CANopen and PROFIBUS configs set
[connector] report = { max_interval = "30m" }, so a device whose values never change stays
available in Cumulocity. This applies to fresh installs only: an existing
/etc/tedge/plugins/ot/*.tomlis kept on upgrade. To opt in, add that line to its
[connector]section and reload the service. Without areportanywhere, every reading is
published as before. - The
ot-measurementflow'son_change,deadband,min_intervalanddebouncesettings,
and the same keys in a point'smeta, are deprecated. They keep working; move them to
the point'sreporttable, and do not use both. tedge-dot-c, CAN bus: a signal is now published once per received frame, as in
tedge-dot-rs, instead of republishing the last frame on every poll.
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
- fix(snmp): don't bind the trap port for CLI read/write by @reubenmiller in #53
- fix(sdk): apply the inverse point transform on writes by @reubenmiller in #56
- test(opcua): validate the connector against the UA-.NETStandard reference server by @reubenmiller in #54
- feat: report by exception in the SDK runtime (on_change / deadband / heartbeat) by @reubenmiller in #55
Full Changelog: 0.0.9...0.0.10