The open edge framework for lightweight IoT devices
Retry internal id lookup when not found #2533 by @albinsuresh in https://github.com/thin-edge/thin-edge.io/pull/2690
Fix missing supported operations #2689 by @albinsuresh in https://github.com/thin-edge/thin-edge.io/pull/2695
Log memory usage of the agent and the mapper by @didier-wenzek in https://github.com/thin-edge/thin-edge.io/pull/2693
chore: remove deprecated and unused plugins by @reubenmiller in https://github.com/thin-edge/thin-edge.io/pull/2709
Notes
The release artifacts are no longer uploaded to the Github release as these were less useful, however you can download all of the artifacts directly from our cloudsmith.io repositories (for all the linux packages and the tarballs):
Full Changelog: https://github.com/thin-edge/thin-edge.io/compare/1.0.0...1.0.1
:tada: thin-edge.io 1.0.0 is here :rocket:
Thanks to everyone for contributing to the project, as this is the result of a lot of hard work from many people. And whilst 1.0.0 is a massive milestone in the project, we're still committed to continuing implementing new features, so stay tuned.
The documentation has been improved focussing on consistency and readability. Below are some notable links to highlight some of the features that thin-edge.io provides out of the box:
And if you don't find what you want then you can check out our the new Community Plugins page, to explore the ever growing list of plugins.
Need help upgrading to 1.0.0? Then check out the Legacy Guide.
You no longer need to prefix software versions in Cumulocity IoT using the ::<type>
syntax! We now support the of official software type as defined in the Cumulocity IoT Device Library. This enables users to also filter for software types in the UI.
Check out the user docs for Software Management for more details.
Implemented by @rina23q in https://github.com/thin-edge/thin-edge.io/pull/2613
The Cumulocity operations are now received via the c8y/devicecontrol/operations
MQTT topic instead of the c8y/s/ds
SmartREST topic. This lays the groundwork for a future features.
Implemented by @rina23q in https://github.com/thin-edge/thin-edge.io/pull/2596
The mosquitto bridges are automatically recreated when upgrading thin-edge.io, and only the bridges which are configured will be recreated.
You can manually refresh the bridge configuration by running:
tedge refresh-bridges
Implemented by @Bravo555 in https://github.com/thin-edge/thin-edge.io/pull/2573
Note If you are upgrading from anything prior to 1.0.0, you will still need to restart the tedge-agent
(or just restart the whole device). All future self updates of thin-edge.io will not require this step.
Implemented by @albinsuresh in https://github.com/thin-edge/thin-edge.io/pull/2587
enable.sudo
to sudo.enable
by @Ruadhri17 in https://github.com/thin-edge/thin-edge.io/pull/2571
refresh-bridges
command by @Bravo555 in https://github.com/thin-edge/thin-edge.io/pull/2573
tedge config list --doc
by @didier-wenzek in https://github.com/thin-edge/thin-edge.io/pull/2583
@id
field by @reubenmiller in https://github.com/thin-edge/thin-edge.io/pull/2657
stdsimd
" error by @Bravo555 in https://github.com/thin-edge/thin-edge.io/pull/2687
Full Changelog: https://github.com/thin-edge/thin-edge.io/compare/1.0.0-rc.1...1.0.0
We made it :tada: thin-edge.io 1.0.0 (Release Candidate 1) is here :rocket:
We wanted to publicly communicate our commitment to bringing the production ready thin-edge.io to the community. We're using the release candidate to enable users to try it out and provide some feedback before the 1.0.0 release. We're still updating some of the documentation around some of the new features, but this will be done before the release candidate phase has ended.
You can monitor the progress of the 1.0.0 release, but the goal is to finalize the 1.0.0 release in January 2024, so please provide feedback as soon as possible.
With the help of the workflows feature, thin-edge.io now supports integrating with OS A/B update solutions such as:
We have included instructions and examples to build two types of images, however the methodology demonstrated can be used to create other integrations like:
Please reach out to use to assist in adding new integrations.
The tedge-log-plugin and tedge-configuration-plugin are now deprecated, and their functionality has been rolled into the tedge-agent. This makes it much easier to manage as you only have a single service. You can still deactivate the log or configuration functionality via the tedge.toml.
A public container image is now published to the Github Container Registry (ghcr.io). The containers are ideal for running thin-edge.io under a true single-process container setup. The image contains all of the thin-edge.io binaries which can be called.
The image is a multi-platform image which supports the following Platforms/Architectures:
Two different images are available which are based on our release cycle:
1.0.0-rc.1
)We're still working on the documentation, however we've added the following demos under the tedge-demo-container repository for working examples on how to use it:
Telemetry data can now be published either using the previous ISO-8601 format, or unix timestamps (e.g. seconds since 1970-01-01). The unix timestamps accepts floats, so you can also provide the fraction of a second (e.g. 1703083945.123567
). Unix timestamps are much easier for machines to parse, and for user's to write their own parsers in plugins.
Below shows a simple example how to use the unix timestamp when creating an event (in the past):
tedge mqtt pub \
te/device/main///e/example \
'{"text":"Unix timestamps","time":1703083945.123567}'
HTTPS/TLS support has been added to the File Transfer Service (included in the tedge-agent
service), and the Cumulocity Auth Proxy Service (included in the tedge-mapper-c8y
service). Users with certificate knowledge (e.g. how to create both server and client services)
The configuration of certificates still requires advanced certificate knowledge, as the correct server and client certificates need to be generated etc. We will look at improving the configuration story for beginners in 2024.
config_update
file download from tedge-mapper-c8y to tedge-agent by @Bravo555 in https://github.com/thin-edge/thin-edge.io/pull/2511
tedge-log-plugin
and tedge-configuration-plugin
on file reload by @Bravo555 in https://github.com/thin-edge/thin-edge.io/pull/2454, https://github.com/thin-edge/thin-edge.io/pull/2536
tedge-log-plugin
and tedge-configuration-plugin
on file reload by @Bravo555 in https://github.com/thin-edge/thin-edge.io/pull/2454
config_update
file download from tedge-mapper-c8y to tedge-agent by @Bravo555 in https://github.com/thin-edge/thin-edge.io/pull/2511
Full Changelog: https://github.com/thin-edge/thin-edge.io/compare/0.13.1...1.0.0-rc.1
default(value = ...)
in define_tedge_config!
by @jarhodes314 in https://github.com/thin-edge/thin-edge.io/pull/2401
log_upload
and config_snapshot
operations by @Bravo555 in https://github.com/thin-edge/thin-edge.io/pull/2440
Full Changelog: https://github.com/thin-edge/thin-edge.io/compare/0.13.0...0.13.1
A lot of hard work has gone into supporting thin-edge.io on any linux distribution. A new revamped installation script will automatically detect your linux distribution whether it is Ubuntu/Debian, Rocky Linux, Alpine or Poky (yocto), we have you covered.
thin-edge.io now publishes packages on cloudsmith in the following formats:
The documentation has been updated to included the new simplified instructions so that you can deploy thin-edge.io in a simple memorable one-liner on your preferred linux distribution.
The support for additional service managers has been extended (via the community) allowing thin-edge.io to run seamlessly on linux distributions that don't have systemd installed.
The following service managers are provided along with an easy to use install script which will auto detect the correct system manager for your system (if you don't really know or care about which service manager to use):
Check out the documentation for more details.
The new thin-edge.io MQTT API has been implemented to provide a consistent interface across the entire topic.
This release marks the transition from the now deprecated tedge/#
topics to the new te/#
topics. The new te/#
topics implement the same features as the legacy interface plus much more.
The new MQTT API documents the full interface and brings the following functionality:
te/
topicte/
with a custom prefix)twin
)te/errors
topic (replacing tedge/errors
):warning: Notes
Services are now registered in Cumulocity IoT under new external identities, which will result in duplicated services in the cloud. The renaming was done so that the external identities would be consistent across all entities (child devices, services etc.). If you don't want to see the older services, then you they can be deleted by using the Cumulocity API or using tools such as go-c8y-cli, for example:
c8y devices list --query "c8y_Agent.name eq 'thin-edge.io'" --includeAll \
| c8y devices services list --includeAll \
| c8y identity list --filter "externalId notlike '*:*'" \
| c8y inventory delete
If you are having trouble with removing the old services then please reach out to us and we can offer assistance!
A local Cumulocity IoT API proxy is provided by default to simplify accessing the Cumulocity IoT REST api from 3rd party components which makes requesting a local JWT token a thing of the past!
Check out the documentation for more details.
The c8y-configuration-plugin
and c8y-log-plugin
plugins have been refactored to be cloud agnostic. The plugins now only rely on the thin-edge.io interface (both local MQTT and API).
The table below shows the package names which are deprecated and their replacements:
Deprecated Package | New Package |
---|---|
c8y-configuration-plugin | tedge-configuration-plugin |
c8y-log-plugin | tedge-log-plugin |
Note: In the near future, the c8y-firmware-plugin
will also be refactored, but it didn't make it into this release.
:warning: Notes
Since the plugins are now cloud agnostic, the configuration files used by the plugins have been relocated to the following paths, but don't worry this happens automatically during initialization of each plugin.
/etc/tedge/c8y/c8y-configuration-plugin.toml
:arrow_right: /etc/tedge/plugins/tedge-configuration-plugin.toml
/etc/tedge/c8y/c8y-log-plugin.toml
:arrow_right: /etc/tedge/plugins/tedge-log-plugin.toml
With the changes to the thin-edge.io MQTT API and the rewriting of the generic plugins, it enabled us to be able to run the same plugins either on the main device (e.g. the current/default setup) or on a child device. This allows you to reduce the amount of could you have to write even further.
The following plugins can be run either in main or child device mode:
Detailed documentation and examples are not yet available, however they will be updated in the next coming weeks. However below shows a brief example how to run the tedge-agent on a child device to provide software management on child devices:
tedge-agent --mqtt-device-topic-id "device/child1//"
thin-edge.io installation size has dramatically decreased from ~40MB down to 8MB by packaging the binaries as a single "multi-call" binary. This is a significant step forward to reducing the overall footprint to allow running thin-edge.io on even smaller devices.
config-dir
flag to c8y-remote-access-plugin by @Ruadhri17 in https://github.com/thin-edge/thin-edge.io/pull/2211
Include references to the tedge-demo-container to help users get started quickly without requiring a physical device
Document the agent and the device management API by @didier-wenzek in https://github.com/thin-edge/thin-edge.io/pull/2235
te
measurements by @didier-wenzek in https://github.com/thin-edge/thin-edge.io/pull/2169
download
crate unit tests not terminating by @Bravo555 in https://github.com/thin-edge/thin-edge.io/pull/2210
-
present in field name by @Bravo555 in https://github.com/thin-edge/thin-edge.io/pull/2220
config-dir
flag by @Ruadhri17 in https://github.com/thin-edge/thin-edge.io/pull/2211
mqtt.topic_root
and mqtt.device_topic_id
options by @Bravo555 in https://github.com/thin-edge/thin-edge.io/pull/2231
Arc<str>
for fields in tedge_config
by @jarhodes314 in https://github.com/thin-edge/thin-edge.io/pull/2325
c8y_auth_proxy
by @jarhodes314 in https://github.com/thin-edge/thin-edge.io/pull/2330
self
instead of &mut self
by @jarhodes314 in https://github.com/thin-edge/thin-edge.io/pull/2329
te/.../cmd/health/check
by @Bravo555 in https://github.com/thin-edge/thin-edge.io/pull/2358
Full Changelog: https://github.com/thin-edge/thin-edge.io/compare/0.12.0...0.13.0
Full Changelog: https://github.com/thin-edge/thin-edge.io/compare/0.11.0...0.12.0
This release marks a significant milestone in thin-edges's history. The thin-edge.io components have been refactored to use an Actor model which improves the internal project structure and lays the ground work for even faster releases, with even more features in the future (and not to mention even easier to test features :100:).
Functionally, everything will work as it did before, however you may notice that the traceability of each component has improved significantly, allowing you to better reason with what is going on.
A big thanks to the core team who worked very hard over the last few months to make this happen :heart:
per_listener_settings
first by @Bravo555 in https://github.com/thin-edge/thin-edge.io/pull/1919
c8y_firmware_manager
by @rina23q in https://github.com/thin-edge/thin-edge.io/pull/1830
per_listener_settings
first by @Bravo555 in https://github.com/thin-edge/thin-edge.io/pull/1919
cargo update
to pass cargo audit
by @Bravo555 in https://github.com/thin-edge/thin-edge.io/pull/1925
Full Changelog: https://github.com/thin-edge/thin-edge.io/compare/0.10.0...0.11.0
c8y-remote-access-plugin
) by @jarhodes314 in https://github.com/thin-edge/thin-edge.io/pull/1694
flock
preventing to launch a daemon even if not con… by @didier-wenzek in https://github.com/thin-edge/thin-edge.io/pull/1740
tedge reconnect aws
by @Bravo555 in https://github.com/thin-edge/thin-edge.io/pull/1737
flock
preventing to launch a daemon even if not con… by @didier-wenzek in https://github.com/thin-edge/thin-edge.io/pull/1740
Full Changelog: https://github.com/thin-edge/thin-edge.io/compare/0.9.0...0.10.0
Device Management
Commands (CLI)
tedge cert create
and tedge cert remove
commands by @Bravo555 in https://github.com/thin-edge/thin-edge.io/pull/1654
Custom operation handler
Child Configuration Management
MQTT Topics
alarm/alarms/create
topic to c8y_bridge configuration by @rina23q in https://github.com/thin-edge/thin-edge.io/pull/1590
Software Management
latest
version keyword by @6367f766 in https://github.com/thin-edge/thin-edge.io/pull/1615
Misc. Improvements
alarm/alarms/create
topic to c8y_bridge configuration by @rina23q in https://github.com/thin-edge/thin-edge.io/pull/1590
tedge_config
crate by @6367f766 in https://github.com/thin-edge/thin-edge.io/pull/1612
latest
version keyword by @6367f766 in https://github.com/thin-edge/thin-edge.io/pull/1615
thin_edge_json
and agent_interface
into new tedge api
crate by @6367f766 in https://github.com/thin-edge/thin-edge.io/pull/1620
tedge cert create
and tedge cert remove
commands by @Bravo555 in https://github.com/thin-edge/thin-edge.io/pull/1654
Full Changelog: https://github.com/thin-edge/thin-edge.io/compare/0.8.1...0.9.0
notify
event extension - fix tedge mapper child device create events by @initard in https://github.com/thin-edge/thin-edge.io/pull/1538
Full Changelog: https://github.com/thin-edge/thin-edge.io/compare/0.8.0...0.8.1