Collecter, acheminer et transformer les données
Cette page explique ce qu'il advient des données envoyées par vos appareils : comment Fundamentum les collecte, les achemine vers vos propres systèmes et vous permet de les transformer avec votre propre code, sans exploiter de serveur.
Collecter
Les appareils envoient deux types de données, via MQTT 5 sur TLS ou via HTTPS avec la Devices API.
| Type | Description | Ce que fait Fundamentum |
|---|---|---|
| Télémétrie | Lectures dans n'importe quel format : JSON, binaire, votre propre protocole | Les transmet telles quelles au topic de télémétrie de votre projet |
| États | Observations clé/valeur, comme "temperature": 21.5, au format d'états de Fundamentum |
Les publie sur votre topic d'états, et enregistre leur historique et leurs dernières valeurs |
- Les valeurs d'état peuvent être n'importe quelle valeur JSON : nombre, chaîne, booléen, objet ou tableau. Vous ne déclarez pas les clés d'état à l'avance ; une clé existe dès qu'un appareil la signale.
- Le Hub affiche sous forme de graphiques les états de chaque appareil, et la Public API renvoie les dernières valeurs d'un appareil ainsi que son historique d'états.
- L'historique des états est conservé pendant trois mois. Pour une analyse à long terme, envoyez vos données vers Insight.
- Une passerelle peut signaler des états pour le compte de ses sous-appareils et de ses balises.
Acheminer
Utiliser les topics
Chaque projet dispose de ses propres topics sur le bus d'événements :
- des topics par défaut pour la télémétrie, les états et les actions personnalisées, que les registres utilisent sauf si vous en définissez d'autres ;
- vos propres topics, permettant à vos appareils, à vos fonctions cloud ou à vos systèmes d'échanger des messages ;
- des topics Fundamentum : des flux d'événements de la plateforme, tels que les alertes et les modifications d'appareils, que vous activez pour votre projet afin de les consommer comme vos propres topics.
Les topics sont privés à leur projet.
Utiliser les connecteurs : des données poussées vers vos systèmes
Un connecteur livre vos topics à vos propres systèmes à mesure que les données arrivent. Le broker des appareils reste isolé ; vos systèmes ne s'y connectent jamais.
| Connecteur | Livre vers | Sécurité |
|---|---|---|
| MQTT | Votre broker MQTT | Nom d'utilisateur et mot de passe facultatifs |
| MQTTS | Votre broker MQTT, sur TLS | TLS mutuel (CA, certificat client et clé), nom d'utilisateur et mot de passe facultatifs |
| HTTPS | Votre point de terminaison HTTPS (webhook) | En-tête d'authentification personnalisé |
Chaque connecteur possède des liens qui associent l'un des topics de votre projet à une destination sur votre système, et le Hub indique si chaque connecteur est connecté. Les connecteurs WebSocket sont à venir.
Gérer les flux entrants
Les données peuvent aussi circuler vers Fundamentum depuis vos systèmes :
- votre broker publie dans un topic du projet via un lien de connecteur ;
- vos systèmes envoient des messages par POST via HTTPS grâce à la Public API.
À la demande
Vos applications peuvent aussi récupérer les données quand elles en ont besoin : dernières valeurs et historique des états via la Public API, et analyses en SQL via Insight.
Transformer avec les fonctions cloud
Les fonctions cloud exécutent votre propre logique au sein de Fundamentum, sans serveur à gérer.
- Écrites en Go, Rust, JavaScript ou Python.
- Déclenchées par un appel HTTP, ou par un message sur un topic. Une fonction déclenchée par un topic peut publier son résultat sur d'autres topics de son projet.
- Cas d'usage : décoder des charges utiles propriétaires, enrichir des messages, les acheminer vers d'autres topics et encoder des actions pour vos appareils (les fonctions utilisées ainsi sont vos encodeurs).
- Exécution en bac à sable : chaque fonction s'exécute de manière isolée, avec une limite de temps d'exécution, et ne peut publier que sur les topics de son propre projet.
- Historique d'exécution : les journaux et les statistiques de chaque exécution sont conservés et disponibles via l'API.
- Mise à l'échelle : par défaut, une fonction exécute une invocation à la fois ; vous pouvez lui attribuer un pool de workers pour exécuter des invocations en parallèle.
Vous écrivez, téléversez et invoquez des fonctions avec la CLI fun, le Hub ou la Public API.