Mini-Tutorial: EDF Tempo-Wert (+BBR-Tagezahl) in Gladys über Node-RED mit Telegram-Szene abrufen

Erstellen Sie ein virtuelles Gerät wie folgt in Gladys in der MQTT-Integration

Mit den folgenden Funktionen

Importieren Sie diesen Flow in Node-RED

Code des Flow
[
    {
        "id": "2b792c822e8e46f1",
        "type": "tab",
        "label": "TEMPO EDF",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "42d67acc049f7425",
        "type": "group",
        "z": "2b792c822e8e46f1",
        "name": "TEMPO EDF",
        "style": {
            "stroke": "#000000",
            "fill": "#bfdbef",
            "label": true,
            "label-position": "n",
            "color": "#000000"
        },
        "nodes": [
            "3d684dcab20a9914",
            "3645d0bfbb46151e",
            "967e5501fcd58cdd",
            "71a73d70ed628528",
            "e87b67de861c3256",
            "50e0c479b04cb23c",
            "418c3a4174d195aa",
            "e89633a377e594b8",
            "0de6bf94f39e7f8b"
        ],
        "x": 74,
        "y": 39,
        "w": 1052,
        "h": 262
    },
    {
        "id": "02e46bae52d39d3b",
        "type": "group",
        "z": "2b792c822e8e46f1",
        "name": "TEMPO EDF - Nb Tage Weiß Rot Blau",
        "style": {
            "stroke": "#000000",
            "fill": "#bfdbef",
            "label": true,
            "label-position": "n",
            "color": "#000000"
        },
        "nodes": [
            "c930bd12d3f44d91",
            "9c8bd280de70d67b",
            "590aa4f85a232830",
            "6d3c60cbfc8197ad",
            "4c96ef17847a98b3",
            "25f4c2d57f2b9c3d",
            "341b7ddd6a3eb996",
            "25b74b7de9880f61",
            "6c60d01b69c8beda"
        ],
        "x": 74,
        "y": 319,
        "w": 1052,
        "h": 262
    },
    {
        "id": "3d684dcab20a9914",
        "type": "inject",
        "z": "2b792c822e8e46f1",
        "g": "42d67acc049f7425",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "01 13 * * *",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 190,
        "y": 80,
        "wires": [
            [
                "3645d0bfbb46151e"
            ]
        ]
    },
    {
        "id": "3645d0bfbb46151e",
        "type": "function",
        "z": "2b792c822e8e46f1",
        "g": "42d67acc049f7425",
        "name": "Erzeugt Datum ",
        "func": "const date = new Date();\n\nlet day = date.getDate();\nlet month = date.getMonth() + 1;\nlet year = date.getFullYear();\n\nlet currentDate = `${year}-${month}-${day}`;\n\nmsg.query = currentDate;\n\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 190,
        "y": 140,
        "wires": [
            [
                "967e5501fcd58cdd"
            ]
        ]
    },
    {
        "id": "967e5501fcd58cdd",
        "type": "http request",
        "z": "2b792c822e8e46f1",
        "g": "42d67acc049f7425",
        "name": "Couleur_TEMPO",
        "method": "GET",
        "ret": "obj",
        "paytoqs": "ignore",
        "url": "https://particulier.edf.fr/services/rest/referentiel/searchTempoStore?dateRelevant={{{query}}}",
        "tls": "",
        "persist": false,
        "proxy": "",
        "insecureHTTPParser": false,
        "authType": "",
        "senderr": false,
        "headers": [],
        "x": 210,
        "y": 200,
        "wires": [
            [
                "e87b67de861c3256",
                "418c3a4174d195aa",
                "e89633a377e594b8",
                "0de6bf94f39e7f8b"
            ]
        ]
    },
    {
        "id": "71a73d70ed628528",
        "type": "debug",
        "z": "2b792c822e8e46f1",
        "g": "42d67acc049f7425",
        "name": "debug 2",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 940,
        "y": 140,
        "wires": []
    },
    {
        "id": "e87b67de861c3256",
        "type": "debug",
        "z": "2b792c822e8e46f1",
        "g": "42d67acc049f7425",
        "name": "debug 1",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 420,
        "y": 80,
        "wires": []
    },
    {
        "id": "50e0c479b04cb23c",
        "type": "mqtt out",
        "z": "2b792c822e8e46f1",
        "g": "42d67acc049f7425",
        "name": "Broker Mqtt IP Gladys:1883",
        "topic": "",
        "qos": "",
        "retain": "",
        "respTopic": "",
        "contentType": "",
        "userProps": "",
        "correl": "",
        "expiry": "",
        "broker": "f4ab211ed11dc81c",
        "x": 980,
        "y": 200,
        "wires": []
    },
    {
        "id": "418c3a4174d195aa",
        "type": "function",
        "z": "2b792c822e8e46f1",
        "g": "42d67acc049f7425",
        "name": "Sende TEMPO TAG1 => Gladys:MORGEN ...",
        "func": "var tempo = msg.payload.couleurJourJ1;\n\n// ** Anfang Block ***********************************************************************************************\n\n// Name der Geräte in Gladys\nvar nomAppareilGladys = \"TEMPO-EDF\";   // Name des Geräts in Gladys\nvar nomIdAppareilGladys = \"MORGEN\";      // Name der externen ID der Funktion\n\n// Wert Topic und Payload an Gladys zu senden\n//           gladys/master/device/mqtt:\"   TEMPO-EDF            /feature/mqtt:\"   TAG                   /text\nmsg.topic = \"gladys/master/device/mqtt:\" + nomAppareilGladys + \"/feature/mqtt:\" + nomIdAppareilGladys + \"/text\";\n\n// Ändert den Ausgangspayload je nach Wert des von EDF gesendeten Payloads\nif (tempo === \"TEMPO_BLEU\") {\n    msg.payload = \"TEMPO BLEU\";\n    node.status({ fill: \"blue\", shape: \"ring\", text: tempo });\n}\nif (tempo === \"TEMPO_BLANC\") {\n    msg.payload = \"TEMPO WEIß\";\n    node.status({ fill: \"white\", shape: \"ring\", text: tempo });\n}\n\nif (tempo === \"TEMPO_ROUGE\") {\n    msg.payload = \"TEMPO ROT\";\n    node.status({ fill: \"red\", shape: \"ring\", text: tempo });\n}\n\nif (tempo === \"NON_DEFINI\") {\n    msg.payload = \"NOM DEFINI\";\n    node.status({ fill: \"grey\", shape: \"ring\", text: tempo });\n}\n\n// ** Ende Block ************************************************************************************************\n\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 540,
        "y": 200,
        "wires": [
            [
                "50e0c479b04cb23c",
                "71a73d70ed628528"
            ]
        ]
    },
    {
        "id": "e89633a377e594b8",
        "type": "function",
        "z": "2b792c822e8e46f1",
        "g": "42d67acc049f7425",
        "name": "Sende TEMPO TAG => Gladys:TAG ....",
        "func": "var tempo = msg.payload.couleurJourJ;\n\n// ** Anfang Block ***********************************************************************************************\n\n// Name der Geräte in Gladys\nvar nomAppareilGladys = \"TEMPO-EDF\";   // Name des Geräts in Gladys\nvar nomIdAppareilGladys = \"TAG\";      // Name der externen ID der Funktion\n\n// Wert Topic und Payload an Gladys zu senden\n//           gladys/master/device/mqtt:\"   TEMPO-EDF            /feature/mqtt:\"   TAG                   /text\nmsg.topic = \"gladys/master/device/mqtt:\" + nomAppareilGladys + \"/feature/mqtt:\" + nomIdAppareilGladys + \"/text\";\n\n// Ändert den Ausgangspayload je nach Wert des von EDF gesendeten Payloads\nif (tempo === \"TEMPO_BLEU\") {\n    msg.payload = \"TEMPO BLEU\";\n    node.status({ fill: \"blue\", shape: \"ring\", text: tempo });\n}\nif (tempo === \"TEMPO_BLANC\") {\n    msg.payload =  \"TEMPO WEIß\";\n    node.status({ fill: \"white\", shape: \"ring\", text: tempo });\n}\n    \nif (tempo === \"TEMPO_ROUGE\") {\n    msg.payload = \"TEMPO ROUGE\";\n    node.status({ fill: \"red\", shape: \"ring\", text: tempo });\n}\n\nif (tempo === \"NON_DEFINI\") {\n    msg.payload = \"NOM DEFINI\";\n    node.status({ fill: \"grey\", shape: \"ring\", text: tempo });\n}\n\n// ** Fin Bloc ************************************************************************************************\n\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 530,
        "y": 140,
        "wires": [
            [
                "50e0c479b04cb23c",
                "71a73d70ed628528"
            ]
        ]
    },
    {
        "id": "0de6bf94f39e7f8b",
        "type": "function",
        "z": "2b792c822e8e46f1",
        "g": "42d67acc049f7425",
        "name": "Senden TEMPO JOURJ => Gladys:TEMPO-EDF-COULEUR-1-2-3",
        "func": "var tempo = msg.payload.couleurJourJ;\n\n// ** Anfang Block ***********************************************************************************************\n\n// Namen der Geräte in Gladys\nvar nomAppareilGladys = \"TEMPO-EDF\";   // Name des Geräts in Gladys\nvar nomIdAppareilGladys = \"COULEUR-1-2-3\";      // Name der externen ID der Funktion\n\n// Wert Topic und Payload an Gladys senden\n//           gladys/master/device/mqtt:    TEMPO-EDF            /feature/mqtt:    TEMPO-EDF-COULEUR-1-2-3/state\nmsg.topic = \"gladys/master/device/mqtt:\" + nomAppareilGladys + \"/feature/mqtt:\" + nomIdAppareilGladys + \"/state\";\n\n// Ändert den ausgehenden Payload je nach Wert des von EDF gesendeten Payloads\nif (tempo === \"TEMPO_BLEU\") {\n    msg.payload = 1;\n    node.status({ fill: \"blue\", shape: \"ring\", text: tempo });\n}\nif (tempo === \"TEMPO_BLANC\") {\n    msg.payload = 2;\n    node.status({ fill: \"white\", shape: \"ring\", text: tempo });\n}\n\nif (tempo === \"TEMPO_ROUGE\") {\n    msg.payload = 3;\n    node.status({ fill: \"red\", shape: \"ring\", text: tempo });\n}\n\nif (tempo === \"NON_DEFINI\") {\n    msg.payload = 4;\n    node.status({ fill: \"grey\", shape: \"ring\", text: tempo });\n}\n\n// ** Ende Block ************************************************************************************************\n\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 600,
        "y": 260,
        "wires": [
            [
                "50e0c479b04cb23c",
                "71a73d70ed628528"
            ]
        ]
    },
    {
        "id": "c930bd12d3f44d91",
        "type": "inject",
        "z": "2b792c822e8e46f1",
        "g": "02e46bae52d39d3b",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "01 13 * * *",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 190,
        "y": 360,
        "wires": [
            [
                "9c8bd280de70d67b"
            ]
        ]
    },
    {
        "id": "9c8bd280de70d67b",
        "type": "function",
        "z": "2b792c822e8e46f1",
        "g": "02e46bae52d39d3b",
        "name": "Erzeugt Datum ",
        "func": "const date = new Date();\n\nlet day = date.getDate();\nlet month = date.getMonth() + 1;\nlet year = date.getFullYear();\n\nlet currentDate = `${year}-${month}-${day}`;\n\nmsg.query = currentDate;\n\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 190,
        "y": 420,
        "wires": [
            [
                "590aa4f85a232830"
            ]
        ]
    },
    {
        "id": "590aa4f85a232830",
        "type": "http request",
        "z": "2b792c822e8e46f1",
        "g": "02e46bae52d39d3b",
        "name": "Couleur_TEMPO",
        "method": "GET",
        "ret": "obj",
        "paytoqs": "ignore",
        "url": "https://particulier.edf.fr/services/rest/referentiel/getNbTempoDays?TypeAlerte=TEMPO",
        "tls": "",
        "persist": false,
        "proxy": "",
        "insecureHTTPParser": false,
        "authType": "",
        "senderr": false,
        "headers": [],
        "x": 210,
        "y": 480,
        "wires": [
            [
                "4c96ef17847a98b3",
                "341b7ddd6a3eb996",
                "25b74b7de9880f61",
                "6c60d01b69c8beda"
            ]
        ]
    },
    {
        "id": "6d3c60cbfc8197ad",
        "type": "debug",
        "z": "2b792c822e8e46f1",
        "g": "02e46bae52d39d3b",
        "name": "debug 14",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 940,
        "y": 420,
        "wires": []
    },
    {
        "id": "4c96ef17847a98b3",
        "type": "debug",
        "z": "2b792c822e8e46f1",
        "g": "02e46bae52d39d3b",
        "name": "debug 15",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 420,
        "y": 360,
        "wires": []
    },
    {
        "id": "25f4c2d57f2b9c3d",
        "type": "mqtt out",
        "z": "2b792c822e8e46f1",
        "g": "02e46bae52d39d3b",
        "name": "Broker Mqtt IP Gladys:1883",
        "topic": "",
        "qos": "",
        "retain": "",
        "respTopic": "",
        "contentType": "",
        "userProps": "",
        "correl": "",
        "expiry": "",
        "broker": "f4ab211ed11dc81c",
        "x": 980,
        "y": 480,
        "wires": []
    },
    {
        "id": "341b7ddd6a3eb996",
        "type": "function",
        "z": "2b792c822e8e46f1",
        "g": "02e46bae52d39d3b",
        "name": "Senden TEMPO PARAM_NB_J_BLANC",
        "func": "var nbJour = msg.payload.PARAM_NB_J_BLANC;\n\n// ** Anfang Block ***********************************************************************************************\n\n// Namen der Geräte in Gladys\nvar nomAppareilGladys = \"TEMPO-EDF\";   // Name des Geräts in Gladys\nvar nomIdAppareilGladys = \"NbJourBlanc\";      // Name der externen ID der Funktion\n\n// Wert Topic und Payload an Gladys senden\n//           gladys/master/device/mqtt:\"   TEMPO-EDF            /feature/mqtt:\"   JOUR                   /text\nmsg.topic = \"gladys/master/device/mqtt:\" + nomAppareilGladys + \"/feature/mqtt:\" + nomIdAppareilGladys + \"/text\";\n\n// Ändert den ausgehenden Payload je nach Wert des von EDF gesendeten Payloads\nmsg.payload = nbJour;\nnode.status({ fill: \"white\", shape: \"ring\", text: nbJour });\n\n// ** Ende Block ************************************************************************************************\n\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 520,
        "y": 480,
        "wires": [
            [
                "25f4c2d57f2b9c3d",
                "6d3c60cbfc8197ad"
            ]
        ]
    },
    {
        "id": "25b74b7de9880f61",
        "type": "function",
        "z": "2b792c822e8e46f1",
        "g": "02e46bae52d39d3b",
        "name": "Senden TEMPO PARAM_NB_J_BLEU",
        "func": "var nbJour = msg.payload.PARAM_NB_J_BLEU;\n\n// ** Anfang Block ***********************************************************************************************\n\n// Namen der Geräte in Gladys\nvar nomAppareilGladys = \"TEMPO-EDF\";   // Name des Geräts in Gladys\nvar nomIdAppareilGladys = \"NbJourBleu\";      // Name der externen ID der Funktion

// Topic- und Payload-Werte, die an Gladys gesendet werden sollen
//           gladys/master/device/mqtt:\"   TEMPO-EDF            /feature/mqtt:\"   JOUR                   /text
msg.topic = \"gladys/master/device/mqtt:\" + nomAppareilGladys + \"/feature/mqtt:\" + nomIdAppareilGladys + \"/text\";

// Ändert den Ausgangspayload je nach dem von EDF gesendeten Payload
msg.payload =  nbJour;
node.status({ fill: \"white\", shape: \"ring\", text: nbJour });

// ** Ende Block ************************************************************************************************

return msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 510,
        "y": 420,
        "wires": [
            [
                "25f4c2d57f2b9c3d",
                "6d3c60cbfc8197ad"
            ]
        ]
    },
    {
        "id": "6c60d01b69c8beda",
        "type": "function",
        "z": "2b792c822e8e46f1",
        "g": "02e46bae52d39d3b",
        "name": "Senden TEMPO PARAM_NB_J_ROUGE",
        "func": "var nbJour = msg.payload.PARAM_NB_J_ROUGE;

// ** Anfang Block ***********************************************************************************************

// Namen der Geräte in Gladys
var nomAppareilGladys = \"TEMPO-EDF\";   // Name des Geräts in Gladys
var nomIdAppareilGladys = \"NbJourRouge\";      // Name der externen ID der Funktion

// Topic- und Payload-Werte, die an Gladys gesendet werden sollen
//           gladys/master/device/mqtt:\"   TEMPO-EDF            /feature/mqtt:\"   JOUR                   /text
msg.topic = \"gladys/master/device/mqtt:\" + nomAppareilGladys + \"/feature/mqtt:\" + nomIdAppareilGladys + \"/text\";

// Ändert den Ausgangspayload je nach dem von EDF gesendeten Payload
msg.payload =  nbJour;
node.status({ fill: \"white\", shape: \"ring\", text: nbJour });

// ** Ende Block ************************************************************************************************

return msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 520,
        "y": 540,
        "wires": [
            [
                "25f4c2d57f2b9c3d",
                "6d3c60cbfc8197ad"
            ]
        ]
    },
    {
        "id": "f4ab211ed11dc81c",
        "type": "mqtt-broker",
        "name": "192.168.0.125:1883",
        "broker": "192.168.0.125",
        "port": "1883",
        "clientid": "",
        "autoConnect": true,
        "usetls": false,
        "protocolVersion": "4",
        "keepalive": "60",
        "cleansession": true,
        "autoUnsubscribe": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closeQos": "0",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "0",
        "willPayload": "",
        "willMsg": {},
        "userProps": "",
        "sessionExpiry": ""
    }
]

(inspiriert von Couleur EDF TEMPO dans Node Red)

Sie sollten dies jetzt in Node-red haben

Passen Sie die Parameter des Mqtt-Brokers an Ihre Parameter an

Erstellen Sie im Gladys-Dashboard

Jetzt wird TEMPO EDF in Ihrem Dashboard angezeigt.

Um die TEMPO-Farbe per Telegram mit einer Szene zu senden

Sie können eine Szene erstellen

Jetzt können Sie TEMPO EDF jeden Morgen um 8 Uhr über TELEGRAM erhalten. :blush:

Sie können das Senden an den Wert der gesendeten Farbe durch Erstellen einer Aktion « Nur fortsetzen, wenn » bedingen, die vor der Aktion Nachricht senden platziert werden soll

Die Farben sind im Code des Nodes im Payload-Wert angegeben

image

// Ändert den Ausgangspayload je nach dem von EDF gesendeten Payload
if (tempo === "TEMPO_BLEU") {
    msg.payload = 1;
    node.status({ fill: "blue", shape: "ring", text: tempo });
}
if (tempo === "TEMPO_BLANC") {
    msg.payload = 2;
    node.status({ fill: "white", shape: "ring", text: tempo });
}

if (tempo === "TEMPO_ROUGE") {
    msg.payload = 3;
    node.status({ fill: "red", shape: "ring", text: tempo });
}

if (tempo === "NON_DEFINI") {
    msg.payload = 4;
    node.status({ fill: "grey", shape: "ring", text: tempo });
}

Jetzt können Sie weitere Einsparungen erzielen! :fire:

PS: 03/12/23 Aktualisierung mit Hinzufügen der verbleibenden Tage in Blau, Weiß und Rot
Die Abfrage der TEMPO-Infos erfolgt über die Injekt-Knoten um 13:01 Uhr (EDF ändert sie um 13:00 Uhr)

3 „Gefällt mir“