Configuration
Étape 1 : Importer le template
Deux flows sont fournis, un pour chaque méthode d'envoi (HTTPS ou MQTTS) — téléchargez celui qui correspond à votre choix (voir l'étape 4) :
| Transport | Flow à importer | Particularité |
|---|---|---|
| HTTPS (recommandé) | ddruid-node-red-https.json | Un seul nœud http request, aucun broker |
| MQTTS | ddruid-node-red-mqtts.json | Broker MQTT sécurisé, QoS 2 |
Les deux partagent le même nœud function Build dDruid stream : seul le nœud d'envoi change.
- Ouvrez l'éditeur Node-RED (généralement accessible sur
http://<hôte>:1880) - Menu ☰ → Import
- Collez le contenu du fichier
.json, puis cliquez sur Import

Ne cliquez pas encore sur Deploy : renseignez d'abord vos identifiants dDruid.
Étape 2 : Récupérer les identifiants dDruid
Le template a besoin de deux informations issues de IoT magic Builder, quel que soit le transport. Elles sont disponibles au même endroit, dans la section Connect de l'équipement :
| Information | Où la trouver |
|---|---|
| Clé API | Application Administration → Équipements → l'équipement concerné → section Connect |
| Device developer ID | Application Administration → Équipements → l'équipement concerné → section Connect |

Étape 3 : Construire le stream
Toute la logique tient dans le nœud function Build dDruid stream (identique dans les deux flows). Ouvrez-le, renseignez votre clé API et votre Device developer ID, puis adaptez le mapping de vos valeurs :
// === Configuration ===
const API_KEY = 'VOTRE_CLE_API_DDRUID'; // clé API (section Connect de l'équipement)
const DEVICE = 'DEVICE_DEVELOPER_ID'; // Device developer ID (UUID) de l'équipement
// Horodatage Unix (secondes)
const at = Math.floor(Date.now() / 1000);
// === Mapping : vos valeurs -> variables dDruid ===
// ref = itemType|itemIndex|serviceId (ex. Global|0|temperature)
const src = msg.payload || {};
const dataset = [];
if (src.temperature != null)
dataset.push({ at, ref: 'Global|0|temperature', value: src.temperature });
if (src.humidity != null) dataset.push({ at, ref: 'Global|0|humidity', value: src.humidity });
if (dataset.length === 0) return null; // rien à envoyer
msg.payload = {
protocol: 'v2',
device: DEVICE,
at,
data: { ver: 'S1', dataset },
};
// … puis, selon le flow importé :
// HTTPS : authentification par header apikey
msg.headers = { apikey: API_KEY, 'content-type': 'application/json' };
// MQTTS : la clé API sert de topic de publication
msg.topic = API_KEY + '/streams';
return msg;
La fin du nœud diffère selon le flow importé : le flow HTTPS positionne msg.headers, le flow MQTTS positionne msg.topic. Le reste est identique.
| Élément | Rôle |
|---|---|
API_KEY | Clé API dDruid (header apikey en HTTPS, topic en MQTTS) |
DEVICE | Device developer ID de l'équipement dDruid destinataire |
dataset[].ref | Référence de la variable, au format itemType|itemIndex|serviceId |
dataset[].value | La valeur à transmettre, extraite de votre msg.payload |
Adaptez uniquement le bloc Mapping pour l'aligner sur la structure de votre msg.payload. Une variable est créée automatiquement côté dDruid dès qu'une référence inconnue est reçue. Voir la page Format des données.
Étape 4 : Publier vers dDruid
Choisissez votre transport — le stream envoyé est identique dans les deux cas.
- HTTPS (recommandé)
- MQTTS
Dans le flow dDruid — HTTPS, le nœud http request dDruid (HTTPS) envoie le stream. Vérifiez sa configuration :
| Champ | Valeur |
|---|---|
| Method | POST |
| URL | https://streams-api.magicbuilder.io/streams |
| Return | a parsed JSON object |
L'authentification passe par le header apikey, déjà positionné par le nœud Build dDruid stream (msg.headers). Aucun broker ni certificat à configurer.
En cas de succès, dDruid répond {"response":"OK"} (visible dans le nœud debug).

Dans le flow dDruid — MQTTS, le nœud mqtt out publie vers un broker MQTT sécurisé. Double-cliquez dessus, puis sur l'icône crayon du champ Server.
Onglet Connexion :
| Champ | Valeur |
|---|---|
| Server | streams-mqtt.magicbuilder.io |
| Port | 8883 |
| Enable secure connection (TLS) | Activé |
| Verify server certificate | Activé (servername = streams-mqtt.magicbuilder.io) |
| Protocol | MQTT V3.1.1 |
Onglet Sécurité (indispensable) :
| Champ | Valeur |
|---|---|
| Username | votre clé API dDruid |
| Password | (laisser vide) |

Vérifiez enfin que le nœud mqtt out utilise QoS 2. L'authentification MQTTS repose donc à la fois sur le Username = clé API et sur le topic {API_KEY}/streams (positionné dans msg.topic).

QoS 2 (exactly once) garantit que chaque mesure est livrée exactement une fois : ni perte (contrairement au QoS 0), ni doublon (contrairement au QoS 1). C'est le niveau d'échange prévu par le connecteur standard dDruid.
Node-RED n'exporte jamais les identifiants d'un broker : après import du template, le champ Username est vide. Le nœud affichera alors « Connecté » (la connexion TLS aboutit) mais dDruid ignore silencieusement la donnée. Pensez donc bien à renseigner le Username dans l'onglet Sécurité.
L'instance Node-RED doit pouvoir établir une connexion sortante vers streams-mqtt.magicbuilder.io:8883. Si le nœud MQTT reste bloqué sur connecting, vérifiez le pare-feu / la connectivité réseau de l'hôte.
Étape 5 : Brancher votre source
Le template fournit un nœud inject en guise de source d'exemple (il émet { "temperature": 22.6, "humidity": 45.5 }). Remplacez-le par votre véritable source, par exemple :
- un nœud mqtt in abonné à votre broker ;
- un nœud http in ou un appel http request ;
- un nœud Modbus / OPC-UA ;
- tout autre nœud produisant un
msg.payload.
Reliez la sortie de votre source à l'entrée du nœud Build dDruid stream.
Étape 6 : Déployer
Cliquez sur Deploy (Déployer) en haut à droite de l'éditeur.

- en HTTPS : chaque message reçu déclenche un
POSTet le nœud debug affiche la réponse{"response":"OK"}; - en MQTTS : le nœud mqtt out se connecte au broker (indicateur vert connected) et publie à chaque message.
