Aller au contenu principal

Lecture et écriture de valeurs avec Node-RED et MQTT

Pour ce tutoriel, nous utilisons Node-RED et MQTT pour écrire des valeurs à logiccloud et lire les valeurs traitées.

Conditions préalables

  • Node-RED
  • Projet logiccloud avec CaaS Runtime

Créer un runtime logiccloud

Tout d'abord, nous devrions avoir un projet logiccloud existant avec un runtime. Si ce n'est pas le cas, nous devons créer un nouveau projet, écrire le code du programme et le publier en tant que runtime. Ensuite, nous pouvons paramétrer la connexion MQTT.

Nous utilisons pour cela un petit projet dans lequel nous lisons l'horodatage, l'affichons dans l'IHM, le doublons dans le code du programme, et le réinscrivons dans Node-RED.

Pour la POU MyPou , nous déclarons les variables et le code de programme suivants :

Variablen
VAR_INPUT
In1 : REAL ;
END_VAR

VAR_OUTPUT
Out1 : REAL ;
END_VAR

VAR_IN_OUT
END_VAR

VAR_EXTERNAL
END_VAR

VAR
END_VAR

VAR_TEMP
END_VAR
POU Code
Out1 := In1 * 2 ;

Nous déclarons également les deux variables comme variables d'accès afin de pouvoir les utiliser dans l'IHM.

Nous créons une IHM simple avec deux Output éléments que nous relions aux variables.

Ensuite, nous pouvons construire le projet et créer un runtime.

Enfin, nous devons encore créer une nouvelle connexion MQTT et la paramétrer.

Paramétrer Node-RED

Dans Node-RED, nous créons un nouveau flux avec les nœuds inject et mqtt out ainsi que mqtt in et debug .

Nous réglons le nœud inject sur Répétition, intervalle toutes les 1 seconde et activons Injecter une fois après 0,1 seconde.

Pour les nœuds MQTT, nous devons créer une nouvelle connexion. Pour cela, nous sélectionnons l'un des deux et ajoutons un nouveau broker MQTT avec les paramètres de la connexion logiccloud MQTT :

  • Serveur: Nom d'hôte
  • Port: Port
  • Connect automatically: Vrai
  • TLS: Vrai
    • Configuration TLS: Vous liez ici les certificats qui vous sont indiqués dans les paramètres de connexion logiccloud.
  • Client-ID: peut rester vide ou vous pouvez attribuer votre propre valeur, par exemple le Device ID

Sous Sécurité, vous pouvez saisir nom d'utilisateur et mot de passe à partir des paramètres logiccloud.

Comme topic, choisissez respectivement le topic des réglages Payload dans logiccloud pour les deux variables In et Out.

Après avoir effectué tous les réglages, vous pouvez déployer le flux.

Gesamter Node-RED flow
[
{
"id" : "28d78d934035030c",
"type" : "tab",
"label" : "Flow 5",
"disabled" : false,
"info" : "",
"env" : []
},
{
"id" : "710cd5bf5bda2ec9",
"type" : "inject",
"z" : "28d78d934035030c",
"name" : "",
"props" : [
{
"p" : "payload"
},
{
"p" : "topic",
"vt" : "str"
}
],
"repeat" : "1",
"crontab" : "",
"once" : true,
"onceDelay" : 0.1,
"topic" : "",
"payload" : "",
"payloadType" : "date",
"x" : 190,
"y" : 100,
"wires" : [
[
"219d19439e1997ec"
]
]
},
{
"id" : "045415b18bb3690",
"type" : "mqtt out",
"z" : "28d78d934035030c",
"name" : "Topic \"in\"",
"topic" : " 6384b486f6beade45b0946f0-MQTT-Node-RED/in",
"qos" : "",
"retain" : "",
"respTopic" : "",
"contentType" : "",
"userProps" : "",
"correl" : "",
"expiry" : "",
"broker" : "4b234810b153a4b3",
"x" : 600,
"y" : 120,
"wires" : []
},
{
"id" : "9263edd981836417",
"type" : "mqtt in",
"z" : "28d78d934035030c",
"name" : "Topic \"out\"",
"topic" : " 6384b486f6beade45b0946f0-MQTT-Node-RED/out",
"qos" : "2",
"datatype" : "auto",
"broker" : "4b234810b153a4b3",
"nl" : false,
"rap" : true,
"rh" : 0,
"inputs" : 0,
"x" : 160,
"y" : 180,
"wires" : [
[
"d6b36f380580f041"
]
]
},
{
"id" : "d6b36f380580f041",
"type" : "debug",
"z" : "28d78d934035030c",
"name" : "",
"active" : true,
"tosidebar" : true,
"console" : false,
"tostatus" : false,
"complete" : "false",
"statusVal" : "",
"statusType" : "auto",
"x" : 450,
"y" : 180,
"wires" : []
},
{
"id" : "871457c106c9554a",
"type" : "debug",
"z" : "28d78d934035030c",
"name" : "",
"active" : true,
"tosidebar" : true,
"console" : false,
"tostatus" : false,
"complete" : "false",
"statusVal" : "",
"statusType" : "auto",
"x" : 750,
"y" : 60,
"wires" : []
},
{
"id" : "219d19439e1997ec",
"type" : "template",
"z" : "28d78d934035030c",
"name" : "",
"field" : "payload",
"fieldType" : "msg",
"format" : "handlebars",
"syntax" : "mustache",
"template" : "{\"value\" : {{payload}}}",
"output" : "str",
"x" : 400,
"y" : 120,
"wires" : [
[
"e9ef763d1b303b51"
]
]
},
{
"id" : "e9ef763d1b303b51",
"type" : "json",
"z" : "28d78d934035030c",
"name" : "",
"property" : "payload",
"action" : "",
"pretty" : false,
"x" : 570,
"y" : 60,
"wires" : [
[
"871457c106c9554a",
"045415b18bb3690"
]
]
},
{
"id" : "4b234810b153a4b3",
"type" : "mqtt-broker",
"name" : "logiccloud Staging",
"broker" : "staging.logiccloud.io",
"port" : "9883",
"tls" : "e7c04b3f6d1a0243",
"clientid" : "test-node-red",
"autoConnect" : true,
"usetls" : true,
"protocolVersion" : "4",
"keepalive" : "60",
"cleansession" : true,
"birthTopic" : "",
"birthQos" : "0",
"birthRetain" : "false",
"birthPayload" : "",
"birthMsg" : {},
"closeTopic" : "",
"closeQos" : "0",
"closeRetain" : "false",
"closePayload" : "",
"closeMsg" : {},
"willTopic" : "",
"willQos" : "0",
"willRetain" : "false",
"willPayload" : "",
"willMsg" : {},
"sessionExpiry" : ""
},
{
"id" : "e7c04b3f6d1a0243",
"type" : "tls-config",
"name" : "",
"cert" : "",
"key" : "",
"ca" : "",
"certname" : "client.crt",
"keyname" : "client.key",
"caname" : "ca.crt",
"servername" : "",
"verifyservercert" : false,
"alpnprotocol" : ""
}
]