Interacting with Edgehog

Edgehog's interaction is logically divided amongst two main entities: devices and users.

Devices are the bottom end, and represent the IoT fleet. They can access Astarte and exchange data via Astarte Interfaces which, in turn, also define on a very granular level which kind of data they can exchange. Data exposed by devices are relayed to Edgehog via Astarte Triggers.

Users are actual users, applications or anything else which needs to interact with Edgehog.

User-side Tools

To interact with Edgehog, several options are available:

  • Edgehog's dashboard interface: it provides a built-in UI that can be used for managing Devices, Hardware Types, and System Models. It is meant to be a graphical, user-friendly tool to manage those entities.
  • Edgehog's GraphQL APIs: they are meant as a machine-friendly way to perform operations on Edgehog's entities and for integrating 3rd party applications.

Publishing Device data

Devices can publish any kind of data to Astarte via Astarte Interfaces. However, some standard interfaces are already supported by Edgehog in order to provide useful functionalities, such as device geolocation.

Hence, data that devices send via Edgehog's Astarte Interfaces are automatically understood, collected and reported by Edgehog.

Publishing info about the System

Each Device is supposed to notify Astarte, e.g. on each connection, about its System.

To do so, the Device can use the io.edgehog.devicemanager.SystemInfo Astarte Interface to specify:

  • the Serial Number: a code that uniquely identifies the System
  • the Part Number: a code that uniquely identifies the System Model

When exposing the Part Number, Edgehog can associate the Device to the correct System Model by matching the Device's Part Number with the ones of the registered System Model.

Publishing info about the hardware

Each Device can notify Astarte about the general capabilities of the Device. These info are hardware-related and are usually not intended to change over time.

A Device can expose this set of data via the io.edgehog.devicemanager.HardwareInfo Astarte Interface.

Publishing info about the Device status

To expose info about its current status or measured data, some additional Astarte Interfaces are already defined for Edgehog. Their adoption is optional but recommended.