Hoppa till huvudinnehåll

Läsa och skriva värden med Node-RED och MQTT

I den här handledningen använder vi Node-RED och MQTT för att skriva värden till logiccloud och läsa bearbetade värden.

Krav

  • Node-RED
  • logiccloud-projekt med CaaS-körtid

Skapa logiccloud Runtime

Först och främst bör vi ha ett befintligt logiccloud-projekt med runtime. Om inte måste vi skapa ett nytt projekt, skriva programkoden och publicera den som en runtime. Därefter kan vi parametrisera MQTT-anslutningen.

Vi använder ett litet projekt för detta, där vi läser av tidsstämpeln, visar den i HMI, kopierar den i programkoden och skriver tillbaka den till Node-RED.

För POU MyPou deklarerar vi följande variabler och programkod:

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;

Vi deklarerar också de två variablerna som Access-variabler så att vi kan använda dem i HMI.

Vi skapar en enkel HMI med två output element som vi kopplar till variablerna.

Därefter kan vi bygga projektet och skapa en runtime.

Slutligen måste vi skapa en ny MQTT-anslutning och parametrisera den.

Parametrisera Node-RED

I Node-RED skapar vi ett nytt flöde med noderna inject och mqtt out samt mqtt in och debug .

Vi ställer in noden inject till repeat, interval every 1 second och aktiverar inject once after 0.1 seconds.

För MQTT-noderna måste vi skapa en ny anslutning. För att göra detta väljer vi en av de två och lägger till en ny MQTT-broker med inställningarna från logiccloud MQTT-anslutningen:

  • Server: Värdnamn
  • Port: Port
  • Anslut automatiskt: True
  • TLS: True
    • TLS-konfiguration: Här anger du de certifikat som visas i logicclouds anslutningsinställningar.
  • Client ID: Kan lämnas tomt eller så kan du tilldela ett eget värde, t.ex. enhetens ID.

Under Säkerhet kan du ange användarnamn och lösenord från logiccloud-inställningarna.

Som ämne väljer du ämnet från inställningarna för payload i logiccloud för de två variablerna In och Out.

När du har gjort alla inställningar kan du distribuera flödet.

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": "045415b18bbb3690",
"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",
"045415b18bbb3690"
]
]
},
{
{ "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": ""
}
]