Daemon Linux
Le daemon Fundamentum Edge est la solution prête à l'emploi pour connecter un appareil Linux à Fundamentum, au lieu d'écrire votre propre client MQTT. Il gère le provisionnement, les clés, la connexion MQTTS, les heartbeats et les redémarrages, et expose tout le reste à votre application via une interface gRPC locale. Cette page vous montre comment l'installer, provisionner l'appareil et appeler ses services.
Avant de commencer
- Un appareil Linux doté d'une chaîne d'outils Rust (version 1.88 ou ultérieure), de
protocet des bibliothèques de développement OpenSSL. - Le fichier de jeton du registre et l'
asset_type_idde votre appareil. Consultez Self-provisioning. grpcurlpour tester les appels gRPC depuis un shell.
1. Installer le daemon
Le daemon est publié sur crates.io sous le nom fundamentum-edge-daemon (Apache-2.0) :
cargo install fundamentum-edge-daemon
Cette commande installe le binaire fundamentum-edge.
Sur un Linux Yocto construit avec la couche meta-fundamentum, le daemon est déjà inclus et écoute sur le socket Unix /run/fundamentum-edge/grpc.socket.
2. Démarrer le daemon
fundamentum-edge --config /etc/fundamentum-edge/config.toml --state-dir /var/lib/fundamentum-edge
Sans options, le daemon utilise ./config.toml (créé avec les valeurs par défaut s'il n'existe pas), stocke son état dans le répertoire courant et sert gRPC sur 127.0.0.1:8080. Exécutez-le sous votre système d'initialisation (par exemple, un service systemd) afin qu'il démarre au démarrage du système.
| Option | Effet |
|---|---|
-c, --config <path> |
Fichier de configuration |
-s, --state-dir <path> |
Répertoire de l'état de provisionnement et des clés |
--grpc-tcp <addr> |
Servir gRPC sur une adresse TCP |
--grpc-uds <path> |
Servir gRPC sur un socket Unix |
--heartbeat, --no-heartbeat |
Activer ou désactiver les heartbeats automatiques |
--heartbeat-interval <minutes> |
Intervalle des heartbeats |
--pfwd, --no-pfwd |
Activer ou désactiver la redirection de ports |
-v |
Augmenter la verbosité des journaux |
Exécutez fundamentum-edge --help pour obtenir la liste complète. Après une mise à niveau, fundamentum-edge update-config ajoute les nouveaux champs à votre fichier de configuration.
3. Le configurer
Les principaux paramètres de config.toml, avec leurs valeurs par défaut :
| Clé | Valeur par défaut | Description |
|---|---|---|
state_dir |
Répertoire courant | Emplacement des fichiers d'état |
[grpc.server] socket |
TCP 127.0.0.1:8080 |
Adresse TCP ou socket Unix |
[grpc.services.provisioning] default_api_base_url |
https://devices.fundamentum-iot.com |
Devices API utilisée pour le provisionnement |
[heartbeat] enabled |
true |
Heartbeats automatiques |
[heartbeat] interval_min |
15 |
Intervalle des heartbeats, en minutes (décimales autorisées) |
[reboot] enabled |
true |
Gérer la commande de redémarrage |
[pfwd] enabled |
false |
Redirection de ports ; consultez Port-forwarding agent |
[mqtt] keep_alive_sec |
60 |
Keep-alive MQTT |
[mqtt] session_expiry_interval_sec |
300 |
Expiration de session MQTT |
Par exemple, pour servir gRPC sur un socket Unix :
[grpc.server]
socket = { uds = "/run/fundamentum-edge/grpc.socket" }
4. Provisionner l'appareil
Tant que l'appareil n'est pas provisionné, Provisioning.Provision est le seul appel gRPC qui fonctionne. Utilisez les valeurs du fichier de jeton :
grpcurl -plaintext -d '{
"api_base_url": "https://devices.fundamentum-iot.com",
"project_id": <project-id>,
"region_id": 1,
"registry_id": <registry-id>,
"serial_number": "<serial-number>",
"asset_type_id": <asset-type-id>,
"access_token": "<registry-provisioning-token>"
}' \
127.0.0.1:8080 com.fundamentum.edge.v1.Provisioning.Provision
Le daemon génère la paire de clés, enregistre l'appareil et écrit provisioning.json, rsa_public.pem et rsa_private.pem dans le répertoire d'état. Il se connecte ensuite de lui-même via MQTTS.
Avec un socket Unix, remplacez l'adresse par le chemin du socket :
grpcurl -unix -authority localhost -plaintext -d '{}' \
/run/fundamentum-edge/grpc.socket com.fundamentum.edge.v1.Configuration.Get
5. Appeler les services depuis votre application
Tous les services se trouvent dans le package com.fundamentum.edge.v1. Le serveur prend également en charge la réflexion gRPC et les contrôles de santé.
| Service | Appels | Usage |
|---|---|---|
Telemetry |
Publish |
Envoyer de la télémétrie (sub_topic, qos, payload en base64) |
StatesEvent |
PublishJson |
Envoyer des états, éventuellement pour des sub_devices |
Heartbeat |
Send, AttachSubDevice |
Envoyer un heartbeat immédiatement, ou rattacher un sous-appareil au suivant |
Configuration |
Get, UpdateStream |
Lire la configuration de l'appareil et suivre ses modifications |
Actions |
Subscribe, UpdateStatus |
Recevoir des actions et signaler leur statut |
FirmwareUpdate |
Subscribe, UpdateStatus |
Recevoir des mises à jour du micrologiciel et signaler leur progression |
FileTransfer |
Subscribe, DownloadFile, UploadFile, UpdatePreStatus, UpdatePostStatus |
Transferts de fichiers |
Par exemple, pour publier de la télémétrie sur le sous-topic test :
grpcurl -plaintext -d '{"sub_topic": "test", "qos": 0, "payload": "SGVsbG8sIFdvcmxkIQ=="}' \
127.0.0.1:8080 com.fundamentum.edge.v1.Telemetry.Publish
Le daemon gère lui-même la commande de redémarrage.
Liaisons de langage
Les liaisons générées sont publiées sous le nom fundamentum-edge-proto :
| Langage | Package |
|---|---|
| Rust | fundamentum-edge-proto sur crates.io |
| Python | fundamentum-edge-proto sur PyPI |
Pour les autres langages, générez des stubs client à partir des fichiers .proto avec protoc.
Étapes suivantes
- Gateways and sub-devices pour effectuer des signalements au nom de sous-appareils via le daemon.
- Port-forwarding agent pour activer l'accès à distance.
- Send telemetry, states and heartbeats pour connaître ce que le daemon envoie en votre nom.