Enhanced child device support, self-update and Yocto packaging with thin-edge.io release 0.8

☁suɐɥ ɟǝoq☁
thin-edge.io
Published in
4 min readNov 21, 2022

Kindergarten level support for child devices is not suitable for the robust management of critical industrial IoT processes. thin-edge.io release 0.8 provides an open framework to manage multiple groups of devices attached to the local connected edge.

Release 0.8 also includes Over-The-Air (OTA) self-update for worry-free software maintenance, a clean uninstall script and is now packaged to run on Yocto Linux.

For those new to the project, thin-edge.io is the first open-source, cloud-agnostic IoT framework designed for resource constrained edge devices. It’s ready-to-use modular components can be easily deployed on a wide range of PLCs, protocol gateways, and devices using Linux-based operating systems. Check out the latest technical videos on our YouTube channel.

In summary, thin-edge.io release 0.8 gives you:

  • Enhanced child device support: Leverage thin-edge.io as a gateway for child devices such as sensors, actors, PLCs or fieldbus devices.
    - Handling of events and alarms coming from child devices.
    - Configuring child devices remotely.
    - Dynamic provisioning of child devices.
    - Reference integration with Cumulocity IoT device/configuration management.
  • Upgraded OTA update of thin-edge.io : Upgrade all thin-edge.io packages remotely from Cumulocity IoT.
  • Script to delete thin-edge.io from the device: Easily uninstall and remove all thin-edge.io components from the device via a script.
  • thin-edge.io on Yocto Linux distribution: Add thin-edge as a layer to your customized Linux distribution.

In this blog, I will give you a high-level overview of the new features, with more details being available in the documentation on the thin-edge.io Github.

What is a child-device?

thin-edge.io facilitates IoT functionality to the device it is running on, as well as to devices that are connected to that device.

That means that the device that thin-edge.io is running on, is referred to as the main device. This main device establishes and manages all communication to the cloud.

The devices connected to the main device are referred to as external child devices. A child-device object could exist more than once in the inventory. Each child device object represents an external device (e.g. sensor, actuator, PLC, or any other kind of device) that is connected to the thin-edge.io device.

  • Each child device object is associated with a separate individual device in the cloud.
  • Not just external devices, but also processes running on the thin-edge.io device itself, can be represented with a child device object in the inventory to treat them as logical child devices.

Enhanced child device support

The configuration of the child devices is managed from the cloud. This means that the device owner can update from the cloud with the list of files to be managed from.

If you are new to this, please have a look here.

To manage the configuration files for child devices we make use of a plug-in, this is connected to the main thin-edge.io device.

From the cloud point of view, these child devices are configured using the same user interface, with the ability to

  1. monitor a device.
  2. upload the current configuration files.
  3. push configuration updates.
  4. configure the list of configuration files.

The plugin acts as a proxy between the cloud and a child device. However, for that to work, a client referred to as a plugin adapter must be installed on the child device to perform the actual configuration.

The child-device-agent is an MQTT + HTTP client that:

  • interacts with the child device, accessing the actual configuration files
  • connects the main thin-edge.io device over the local MQTT bus,
  • listens over MQTT for configuration snapshots and update requests,
  • downloads and uploads the configuration files on demand,
  • notifies the progress of the configuration operations to the main device via MQTT.

For each kind of child device, such an agent must be implemented and installed on the child device hardware.

OTA thin-edge.io self-update

To update thin-edge.io packages, you can use the software management capabilities in Cumulocity IoT which is described here. This is available from version 0.8.0 onwards.

Delete thin-edge.io from a device

thin-edge.io can be uninstalled using a script, that can be downloaded from below mentioned location.

wget https://raw.githubusercontent.com/thin-edge/thin-edge.io/main/uninstall-thin-edge_io.sh

chmod a+x uninstall-thin-edge_io.sh

The uninstall script provides options as shown below.

USAGE:

./uninstall-thin-edge.io.sh [COMMAND]

COMMANDS:

remove Uninstall thin-edge.io with keeping configuration files
purge Uninstall thin-edge.io and also remove configuration files

Note: The uninstall script removes/purges the core thin-edge.io packages like tedge, tedge_mapper, and tedge_agent as well as thin-edge.io plugins like tedge_apt_plugin, c8y_log_plugin, c8y_configuration_plugin etc.

thin-edge.io on Yocto Linux distribution

Yocto Project enables you to create a customised Linux distribution for your IoT devices. You can select the base image and add layers, containing software that you need on your image. In this tutorial, we will add Thin Edge using the meta-tedge layer.

For more information, see the getting started document on Yocto Project website.

meta-tedge is supported for Yocto version 3.4 “Honister” and 4.0 “Kirkstone”. Additionally, we will depend on meta-openembedded layer for Mosquitto.

If you want to use this functionality, the full instructions are described here.

If you want to know more about thin-edge.io, please visit the website: https://thin-edge.io.

Also visit our YouTube channel for the latest release-demo and other video’s.

--

--

☁suɐɥ ɟǝoq☁
thin-edge.io

#thin-edge.io☁devrel #hackathons #Amsterdam, # #IoT, #startups, # @, #AFCAjax :-) Tweets are my own