> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.scorp-io.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Connecteur node-red

## Introduction

La palette `node-red-contrib-scorp-io` permet de connecter **Node-RED** au broker public SCorp-io via MQTTS (MQTT over TLS). Elle gère automatiquement la publication des messages **DBIRTH** (déclaration des métriques) et **DDATA** (valeurs des métriques) dans le format attendu par la plateforme SCorp-io.

circle-info

Cette palette est compatible avec Node-RED ≥ 3.0.0 et Node.js ≥ 18.0.0, en installation locale ou sur FlowFuse.

---
## Prérequis

Avant de commencer, munissez-vous des éléments fournis par SCorp-io lors de la mise en place de votre projet :

* **Client ID** — identifiant unique du client MQTTS
* **Login** — nom d'utilisateur MQTTS
* **Mot de passe** — mot de passe MQTTS
* **Project ID** — identifiant du projet SCorp-io
* **Node ID** — identifiant du nœud MQTT dans votre infrastructure

---
## Installation

1

### Extraire la palette

Décompresser le fichier `node-red-contrib-scorp-io.zip` dans un dossier dédié sur votre machine :

```
node-red-contrib-scorp-io/
├── nodes/
│   ├── scorp-io-config.js
│   ├── scorp-io-config.html
│   ├── scorp-io-device.js
│   └── scorp-io-device.html
├── locales/
├── test/
└── package.json
```

2

### Installer les dépendances

Ouvrir un terminal dans le dossier de la palette et exécuter :

```
cd node-red-contrib-scorp-io
npm install
```

circle-exclamation

Cette étape est **obligatoire** à chaque mise à jour de la palette. Elle installe notamment la librairie `mqtt` nécessaire à la connexion MQTTS.

3

### Démarrer Node-RED

```
node-red
```

Vérifier dans les logs que la palette est bien chargée :

```
[info] Loading palette nodes
[info] Started flows
```

circle-info

Si le message `Waiting for missing types: scorp-io-device` apparaît brièvement au démarrage, c'est normal — Node-RED attend que le nœud de configuration soit enregistré avant de finaliser le nœud device. Il disparaît automatiquement après quelques secondes.

---
## Adresse et port du broker

Paramètre

Valeur

**URL**

`broker-public-prod.scorp-io.com`

**Port**

`8883`

**Protocole**

MQTTS — MQTT over TLS 1.2

circle-info

Le certificat TLS est porté par le broker SCorp-io. Aucun certificat client n'est requis de votre côté.

---
## Nœud de configuration — scorp-io-config

Ce nœud centralise les paramètres de connexion MQTT. Il est partagé par tous les nœuds device de votre flow.

### Accès

Dans la palette Node-RED, glisser un nœud **SCorp-io Device** dans le flow, puis double-cliquer. Cliquer sur l'icône ✏️ à côté du champ **Config** pour créer ou éditer la configuration.

### Paramètres

Champ

Description

Exemple

**Nom**

Nom libre pour identifier la configuration

`SCorp-io Production`

**Mode**

`🧪 Test` (simulation) ou `🟢 Production` (envoi réel)

`Production`

**Client ID**

Identifiant unique du client MQTT

`my-edge-client-01`

**Login**

Nom d'utilisateur fourni par SCorp-io

`user@example.com`

**Mot de passe**

Mot de passe MQTT fourni par SCorp-io

_(masqué)_

**Project ID**

Identifiant du projet SCorp-io

`8a3bbfb2-0a47-4a05-98d2-64807bc4ca27`

**Node ID**

Identifiant unique du nœud MQTT dans l'infrastructure

`automate-s7`

triangle-exclamation

En mode **Production**, les messages MQTT sont transmis en temps réel au broker SCorp-io. Un bandeau d'avertissement orange s'affiche dans l'interface pour le rappeler.

---
## Nœud device — scorp-io-device

Ce nœud gère la publication des messages DBIRTH et DDATA pour un ou plusieurs équipements.

### Section — Devices

Chaque **device** représente un équipement physique (automate, capteur, pompe…). Un seul nœud peut gérer plusieurs devices simultanément.

#### Ajouter un device

Cliquer sur **"Ajouter un device"** et renseigner le **Device ID** — identifiant unique de l'équipement dans le projet.

circle-exclamation

Dans une infrastructure avec plusieurs publishers MQTT, le Device ID doit être un identifiant **unique** dans le projet SCorp-io.

#### Ajouter des métriques

Chaque device contient une liste de métriques. Cliquer sur **"Ajouter une métrique"** dans le bloc du device correspondant.

Colonne

Description

Exemple

**Nom métrique**

Nom de la variable publiée sur SCorp-io

`pompe-1/etats`

**Type**

Type de donnée de la métrique

`Integer`

**Chemin (depuis msg)**

Chemin vers la valeur dans le message Node-RED

`msg.payload.pompe1.etats`

**Types de données disponibles :**

`Int8` · `Int16` · `Int32` · `Int64` · `UInt8` · `UInt16` · `UInt32` · `UInt64` · `Float` · `Double` · `Boolean` · `String` · `DateTime`

**Notation des chemins :**

Les chemins partent de la racine `msg` :

circle-info

Si le chemin ne commence pas par `msg.`, le nœud effectue un fallback automatique sur `msg.payload.<chemin>`.

---
### Section — Émission DBIRTH

Le DBIRTH est le message de configuration envoyé à SCorp-io pour déclarer les métriques disponibles sur un device. Il doit être émis avant toute publication de données.

Option

Description

☑ **Après déploiement / redémarrage**

Envoie automatiquement un DBIRTH dès que la connexion MQTT est établie. **Activé par défaut.**

☐ **Périodiquement**

Réémet un DBIRTH à intervalle régulier : `1h` · `6h` · `12h` · `24h` · `48h`

---
### Section — Actions

Le bouton **"Forcer DBIRTH maintenant"** déclenche manuellement un DBIRTH pour tous les devices du nœud, directement depuis le panneau de configuration, sans modifier le flow.

Un retour visuel indique le résultat :

* ✅ `DBIRTH envoyé : pompe-1, pompe-2`
* ❌ `Erreur : ...` en cas de problème de connexion

circle-info

Ce bouton n'est actif que si le nœud a déjà été déployé au moins une fois.

---
## Entrée et sortie du nœud
### Entrée

Le nœud dispose d'**une seule entrée**. Le comportement dépend du contenu du message reçu :

Condition

Action

`msg.topic === "birth"`

Force l'émission d'un **DBIRTH** pour tous les devices

Tout autre message

**Routage automatique DDATA**

**Routage automatique DDATA**

Le nœud analyse le message et publie un DDATA pour chaque device dont au moins une métrique est résolvable dans le message. Plusieurs devices peuvent être publiés en parallèle depuis un seul message.

**Forcer un DBIRTH depuis le flow**

Utiliser un nœud `inject` configuré ainsi :

### Sortie — debug

La sortie unique émet chaque trame publiée. Connecter un nœud **debug** pour inspecter les messages en temps réel.

Champ

Description

`msg.topic`

Topic MQTT publié

`msg.payload`

Trame JSON publiée (métriques)

`msg._scorp.type`

`DBIRTH` ou `DDATA`

`msg._scorp.device`

Device ID concerné

`msg._scorp.mode`

`test` ou `production`

`msg._scorp.simulated`

`true` en mode test

---
## Format des messages
### DBIRTH — Déclaration des métriques

**Topic**

**QoS :** 1 · **Retained :** oui

**Payload**

---
### DDATA — Publication des valeurs

**Topic**

**Exemple**

**QoS :** 1 · **Retained :** non

**Payload**

circle-info

Le champ `timestamp` est généré automatiquement par le nœud au moment de la publication (`Date.now()`). Il représente le nombre de millisecondes depuis le 1er janvier 1970 (epoch UTC).

---
## Exemple de flow complet
### Objectif

Publier les données de deux pompes vers SCorp-io toutes les 5 secondes.

### Architecture du flow
### Nœud Function — préparer les données
### Configuration du nœud SCorp-io Device

**Device** `**pompe-1**`

Nom métrique

Type

Chemin

`pompe-1/etats`

Integer

`msg.payload.pompe1.etats`

`pompe-1/defaut`

Boolean

`msg.payload.pompe1.defaut`

`pompe-1/status`

Float

`msg.payload.pompe1.status`

**Device** `**pompe-2**`

Nom métrique

Type

Chemin

`pompe-2/etats`

Integer

`msg.payload.pompe2.etats`

`pompe-2/status`

Float

`msg.payload.pompe2.status`

---
## Mode Test vs Production

Mode Test 🧪

Mode Production 🟢

Connexion MQTT

❌ Non établie

✅ Établie

Messages publiés

❌ Simulés

✅ Envoyés au broker

Sortie debug

✅ Alimentée

✅ Alimentée

Badge nœud

Bleu

Vert / Rouge / Jaune

circle-check

Utilisez toujours le mode **Test** pour valider vos chemins de métriques et la structure de vos messages avant de basculer en Production.

---
## Dépannage

Symptôme

Cause probable

Solution

`Cannot find module 'mqtt'`

`node_modules` absent

Exécuter `npm install` dans le dossier palette

`Waiting for missing types: scorp-io-device`

Ordre de chargement

Normal et transitoire — attendre quelques secondes

Badge rouge "Config manquante"

Nœud config non associé

Double-cliquer et sélectionner une configuration

`Aucun device ne correspond au msg`

Chemins de métriques incorrects

Vérifier les chemins `msg.payload.*` dans la configuration

Badge jaune "Connexion..." permanent

Mauvais identifiants ou réseau

Vérifier Client ID / Login / Mot de passe et la connectivité vers le broker

DBIRTH non visible dans SCorp-io

Nœud pas encore déployé ou retained non reçu

Vérifier que le mode Production est actif et utiliser le bouton "Forcer DBIRTH"