Configuration MQTTS

Informations sur la configuration à effectuer pour la connexion sur le broker public de SCorp-io

Introduction

Un broker public est disponible pour les utilisateurs équipés d'équipements ou de solutions capables de publier des informations en :

  • MQTT classique

  • MQTT Sparkplug B

Adresse et port

URL du broker

broker-public-prod.scorp-io.com

Port

8883

Identification

Pour la connexion au broker il vous sera nécessaire d'intégrer :

  • Un client ID

  • Un login

  • Un mot de passe

Ces éléments vous seront communiqué par SCorp-io lors de la mise en place du projet.

Certificat

Le broker public de SCorp-io utilise la variante sécurisée du protocole MQTT, le MQTTS qui implique l’utilisation d’un certificat.

Le client MQTT doit donc se connecter en TLS1.2.

Le certificat est porté par le broker SCorp-io

MQTTS : Topic et Messages

Ce paragraphe ne concerne pas les communications en MQTT Sparkplug B

Ce paragraphe décrit les topics et les trames de message MQTT "classiques" (hors norme SparkplugB). La norme SparkplugB, impose en effet des topics et des trames prédéfinies.

Topic et message de configuration

Afin de faciliter le scan des données par la plateforme SCorp-io, nous encourageons nos partenaires à produire un message de configuration permettant de lister les données de l’infrastructure MQTT. Cela permet de fixer une unique source de vérité (l'infrastructure MQTT)

Pour cela, l'utilisateur doit configurer l'envoi d'un message sur un topic spécifique (DBIRTH).

Topic

Le message doit être envoyé sur un topic respectant le format suivant :

mqtts/{PROJECT_ID}/DBIRTH/{EDGE_NODE_ID}/{DEVICE_ID}

Message

Le message doit impérativement être de type retained (uniquement pour le topic DBIRTH)

La trame d’un message se présente sous la forme d’un tableau de métriques :

{
  "metrics": [
    {
      "name": METRIC_NAME,
      "dataType": METRIC_DATA_TYPE
    },
    ...    
  ]
}

Chaque métrique est décrite par les champs suivants :

Nom du champsType Valeurs possibleObligatoire

name

String

-

Oui

dataType

String

Integer | Short | Long | Double | Float | Boolean | String

Oui

Exemple

{
  "metrics": [
    {
      "name": "pompe-1/etats",
      "dataType": "Integer"
    },
    {
      "name": "pompe-1/defaut",
      "dataType": "Boolean"
    },
    {
      "name": "pompe-1/status",
      "dataType": "Float"
    }   
  ]
}

Une fois cette étape terminée, les metrics envoyée sur les topics DBIRTH seront visible après un scan dans le projet SCorp-io associé.

Configuration

QoS : 1

Retain : false

Topic

Les messages doivent être envoyés sur un topic respectant le format suivant :

mqtts/{PROJECT_ID}/DDATA/{EDGE_NODE_ID}/{DEVICE_ID}

La différence avec les messages ci-dessus est DDATA qui remplace DBIRTH

  • PROJECT_ID : l’identifiant unique du projet fourni par SCorp-io à l’inscription

  • EDGE_NODE_ID : l'élément qui identifie de manière unique le nœud MQTT dans l’infrastructure

  • DEVICE_ID : l'élément qui identifie un périphérique connecté au nœud MQTT

Dans le cas ou l'infrastructure est composée de plusieurs publishers MQTT, DEVICE_ID doit être un identifiant unique déterminé par l'utilisateur

Exemple
mqtts/8a3bbfb2-0a47-4a05-98d2-64807bc4ca27/DDATA/automate-s7/automate-z3-1

Dans cet exemple, automate-s7 représente l'infrastructure du site et automate-z3-1 représente l'identifiant unique de l'équipement qui va publier sur le topic MQTT

Message

La trame d’un message se présente sous la forme d’un tableau de métriques :

{
  "metrics": [
    {
      "name": METRIC_NAME,
      "timestamp": METRIC_TIMESTAMP,
      "dataType": METRIC_DATA_TYPE,
      "value": METRIC_VALUE
    },
    ...    
  ]
}

Chaque métrique est décrite par les champs suivants :

Nom du champType Valeurs possiblesObligatoire

name

String

-

Oui

timestamp

Long

Entier représentant des ms

Oui

dataType

String

Integer | Short | Long | Double | Float | Boolean | String

Oui

value

Integer | Short | Long | Double | Float | Boolean | String

Oui

Exemple

{
  "metrics": [
    {
      "name": "pompe-1/etats",
      "timestamp": 1486144502122,
      "dataType": "Integer",
      "value": 0
    },
    {
      "name": "pompe-1/defaut",
      "timestamp": 1486144502122,
      "dataType": "Boolean",
      "value": false
    },
    {
      "name": "pompe-1/status",
      "timestamp": 1486144502122,
      "dataType": "Float",
      "value": 1.23
    }   
  ]
}

Last updated