Giter VIP home page Giter VIP logo

edgehog-device-runtime's Introduction

Edgehog Device Runtime

CI codecov

Edgehog Device Runtime is a portable middleware written in Rust, that enables remote device management using Edgehog.

Supported Operating System

At the moment only Linux-based systems are supported.

See also OS requirements for further information.

Implemented Features

The following information are sent to remote Edgehog instance:

  • OS info (data is read from /etc/os-release)
  • Hardware info
  • System status (data is read from proc filesystem)
  • Runtime info and compiler version
  • OTA update using RAUC
  • Edgehog Device Runtime status changes via systemd.
  • Network interface info
  • Base image (data is read from /etc/os-release)
  • Battery status data

How it Works

Edgehog Device Runtime relies on Astarte in order to communicate with the remote Edgehog instance.

Edgehog Device Runtime is a reference implementation of Edgehog Astarte Interfaces. Astarte interfaces describe how data are exchanged with the remote instance, and what kind of features are implemented.

Configuration

Edgehog Device Runtime can be configured using a TOML file located either in $PWD/edgehog-config.toml or /etc/edgehog/config.toml, or in a custom path, run cargo run -- --help for more information.

Supported Astarte transport libraries

Edgehog Device Runtime supports the following libraries to communicate with the remote Edgehog instance:

  1. astarte-device-sdk
  2. astarte-message-hub

The Astarte Device SDK for Rust is a ready to use library that provides communication and pairing primitives to an Astarte Cluster.

Example configuration:

astarte_library = "astarte-device-sdk"
interfaces_directory = "/usr/share/edgehog/astarte-interfaces/"
store_directory = "/var/lib/edgehog/"
download_directory = "/var/tmp/edgehog-updates/"
[astarte_device_sdk]
credentials_secret = "YOUR_CREDENTIAL_SECRET"
device_id = "YOUR_UNIQUE_DEVICE_ID"
pairing_url = "https://api.astarte.EXAMPLE.COM/pairing"
realm = "examplerealm"
[[telemetry_config]]
interface_name = "io.edgehog.devicemanager.SystemStatus"
enabled = true
period = 60

A central service that runs on (Linux) devices for collecting and delivering messages from N apps using 1 MQTT connection to Astarte.

N.B. When using this option, the Astarte Message Hub should already be installed and running on your system.

Example configuration:

astarte_library = "astarte-message-hub"
interfaces_directory = "/usr/share/edgehog/astarte-interfaces/"
store_directory = "/var/lib/edgehog/"
download_directory = "/var/tmp/edgehog-updates/"
[astarte_message_hub]
endpoint = "http://[::1]:50051"
[[telemetry_config]]
interface_name = "io.edgehog.devicemanager.SystemStatus"
enabled = true
period = 60

Telemetry

Edgehog Device Runtime sends telemetry data from interfaces defined in the edgehog-astarte-interfaces repository. Here's how to configure some key values.

Image ID and Version

The device runtime extracts the image name and version from the /etc/os-release file. Example:

# /etc/os-release
IMAGE_ID="..."
IMAGE_VERSION="..."

Serial and Part Number

Set the model and part number as environment variables:

  • EDGEHOG_SYSTEM_SERIAL_NUMBER
  • EDGEHOG_SYSTEM_PART_NUMBER

For example, in a systemd service file, refer to this buildroot package.

Contributing

We are open to any contribution: pull requests, bug reports and feature requests are welcome.

License

Edgehog Device Runtime source code is released under the Apache 2.0 License.

Check the LICENSE file for more information.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.