About DeviceLink
Device Link
A DeviceLink consists of 3 parts: Adaptor, Model, and Device spec:
- The
Adaptordefines which adaptor to use and the node that the real-world device should be connected to. Modeldescribes the model of a device, it is the TypeMeta of the device model CRD.Device specdescribes how to connect to the device and its desired properties or status of the device, those parameters are defined by the device model CRD.
Example of Devicelink YAML:
apiVersion: edge.cattle.io/v1alpha1
kind: DeviceLink
metadata:
name: living-room-fan
namespace: default
spec:
adaptor:
node: edge-worker # select the node that the device will be connected on
name: adaptors.edge.cattle.io/dummy
model:
apiVersion: "devices.edge.cattle.io/v1alpha1"
kind: "DummySpecialDevice"
template:
metadata:
labels:
device: living-room-fan
spec: # specify device specs
protocol:
location: "living_room"
gear: slow
"on": true
Workflow
The image below indicates how the device is connected using DeviceLink and its connections between the device model and adaptors.
│ metadata │ edge node │ devices │
─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
│ │ │ │
│
┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ ┌───────────┐ │
<<Device Model>> ┌─▶│ adaptor ├┐ 6
┌──│ CRD │ 4 │ └┬──────────┘│◀──┐ │
│ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ └───────────┘ │
│ │ │ . │
1│ │ └───▶( ) user
│ ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ │ 5 ' │
│ DeviceLink │
│ ├───────────────────┤ │ │
└─▷│ Model │ │
├───────────────────┤ │ │
│ Adaptor │ │
├───────────────────┤ │ │
│ Template │─────────────┬─────────────────┐ │
└───────────────────┘ 2│ 3│ │ │
│ │ │ ─ ─
▼ │ └─────┐ │
┌───────────────────┐ │ │
│ brain │ │ │ │
└───────────────────┘ │ │
│ │ │ │
├─▣ node existed? │ │
│ ──────────────── │ │ │
│ │ │
└─▣ model existed? │ │ │
──────────────── │ │
│ │ │
│ │ octopus
▼ │ │
┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ ┌───────────────────┐ │
<<Device Model>> ┌──────────│ limb ├┐ │ 7 │
│ Instance │ │ └┬──────────────────┘│◀─┘
┌───────────────────┐ 8 │ └┬──────────────────┘ │
│ Spec │◀─────────┘ │
├───────────────────┤ ├─▣ adaptor existed? │
│ Status │ │ ─────────────────
└───────────────────┘ │ │
├─▣ device created?
│ ───────────────── │
│
└─▣ device connected? │
───────────────── ─ ─
│