Mini Tuto - Interaction Gladys - IPX800V5 via node-red

Le but de ce tuto est de montrer comment piloter des relais de la plate-forme domotique IPX800V5 de GCE avec Gladys

Allez dans l’onglet « Système »
image

Cliquez sur « MQTT »
image

Paramétrez comme suit, avec pour « Serveur: " l’ip du broker mosquito (IP du raspberry ou du Nuc sur lequel est installé Gladys, en « Client ID » le nom que vous voudrez (j’ai mis ici IPX800V5 c’est important pour les paramétrage des Topic dans Node-red)
image

Ensuite on va dans l’onglet « Liens »
image

Puis dans le sous-onglet « OBJETS » et on clique sur « MQTT Publish »

et « Ajouter MQTT publish »

image

Cela crée un objet « Publish » nommé « TOPIC PUB N° » on clique sur « Edition »

image

On le paramètre comme ci-dessous

image

Le « Nom: » c’est le nom que l’on retrouves dans l’Api-Deck de GCE et pointe vers le nom du « Relais 1 » si on édite ce nom dans l’IPX il se met à jour dans l’Api-Deck (il sera le même pour les appels API et http je suppose) « URL » correspond à « Client-ID » paramétré dans « Système » « MQTT » (on peut aussi mettre directement la valeur _id soit pour le relais 1 : 65536 etc, comme cela quel que soit le nom donné à l’instance du relais 1on est tranquille !)
On active « JSON » et on met en clé la même valeur que le nom et on valide.

Ensuite on va créer l’objet « Suscribe ». On clique sur « MQTT suscribe »

image

puis « Ajouter MQTT suscribe »

image

Cela crée un objet « Suscribe » nommé « TOPIC SUB N° » on clique sur « Edition »

On le paramètre comme ci-dessous,

image

en se référant à l’Api-Deck pour le nom et la clé et on valide.

On clique sur l’onglet à gauche « Dasboard »

image

On clique sur le cadenas pour passer en mode édition

image

puis « Ajouter widget »

image

puis « Edition »

image

On paramètre comme suit et on sélectionne « Contrôle » « Bouton poussoir » et « Valider »

On paramètre le widget comme suit et on valide

Maintenant on va crée les liens en cliquant à gauche sur l’onglet « Liens »

image

puis sur “Edition lien”

image

Puis le « + » à gauche du » [IPX]Relay cmd1"

image

puis à gauche sur « MQTT Suscribe » qu’on fait glisser sur la zone pointillée

image

on paramètre comme suit on valide. On obtient

image

On clique sur « Etat Relais »

image

et « + » à droite de « [IPX]Relay State 1 »

image

puis à gauche sur « MQTT Publish » qu’on fait glisser sur la zone pointillée

image

on paramètre comme suit et on valide.

image

Ça y est on a fait toute la partie « IPX800V5 » on va attaquer la
partie NodeRed… !

Voila le flow à importer dans node-red de « Gladys » :wink:
image

[
    {
        "id": "bd5facfbf1ab26d3",
        "type": "tab",
        "label": "IPX800V5 - Gladys Via Node-rec",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "8f7e7262bc6bf978",
        "type": "mqtt out",
        "z": "bd5facfbf1ab26d3",
        "name": "IPX800V5",
        "topic": "",
        "qos": "1",
        "retain": "false",
        "respTopic": "",
        "contentType": "",
        "userProps": "",
        "correl": "",
        "expiry": "",
        "broker": "291914c5c9c68f02",
        "x": 1020,
        "y": 300,
        "wires": []
    },
    {
        "id": "4c607c3838172c89",
        "type": "function",
        "z": "bd5facfbf1ab26d3",
        "name": "switch [IPX]Relay state x true/false => \"1\" \"0\"  ",
        "func": "var msg1, varNoRelais, varStateRelais;\n\nmsg1 = msg.payload\nvarNoRelais = msg1.substring(msg1.indexOf('state',1) + 6, msg1.indexOf('state',1) + 7);\nvarStateRelais = msg1.substring(msg1.indexOf(':',1) + 1, msg1.indexOf(':',1) + 2);\n\nswitch (varStateRelais) {\n  case \"t\": msg = {payload:\"1\"}; break;\n  case \"f\": msg = {payload:\"0\"}; break;\n  default: \n    break;\n}\n\nmsg.topic = \"gladys/master/device/mqtt:IPX800V5_Relais-\" + varNoRelais + \"/feature/mqtt:IPX800V5_Relais-\" + varNoRelais + \"/state\";\n\nreturn msg;\n\n",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 530,
        "y": 180,
        "wires": [
            [
                "f7ebc07a077abf6c"
            ]
        ]
    },
    {
        "id": "f7ebc07a077abf6c",
        "type": "mqtt out",
        "z": "bd5facfbf1ab26d3",
        "name": "gladys/master/device/....",
        "topic": "",
        "qos": "1",
        "retain": "false",
        "respTopic": "",
        "contentType": "",
        "userProps": "",
        "correl": "",
        "expiry": "",
        "broker": "291914c5c9c68f02",
        "x": 970,
        "y": 180,
        "wires": []
    },
    {
        "id": "f490302139729ca3",
        "type": "mqtt in",
        "z": "bd5facfbf1ab26d3",
        "name": "gladys/device/#",
        "topic": "gladys/device/#",
        "qos": "1",
        "datatype": "auto",
        "broker": "291914c5c9c68f02",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 120,
        "y": 300,
        "wires": [
            [
                "ea9d791fe72e3274"
            ]
        ]
    },
    {
        "id": "78bd795f15c0ddd0",
        "type": "mqtt in",
        "z": "bd5facfbf1ab26d3",
        "name": "IPX800V5",
        "topic": "IPX800V5",
        "qos": "2",
        "datatype": "auto",
        "broker": "291914c5c9c68f02",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 100,
        "y": 180,
        "wires": [
            [
                "4c607c3838172c89"
            ]
        ]
    },
    {
        "id": "7b3539772604e4c6",
        "type": "mqtt in",
        "z": "bd5facfbf1ab26d3",
        "d": true,
        "name": "Capture tout #",
        "topic": "#",
        "qos": "0",
        "datatype": "auto",
        "broker": "291914c5c9c68f02",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 120,
        "y": 60,
        "wires": [
            [
                "e40c2829b14d2289"
            ]
        ]
    },
    {
        "id": "e40c2829b14d2289",
        "type": "debug",
        "z": "bd5facfbf1ab26d3",
        "d": true,
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 340,
        "y": 60,
        "wires": []
    },
    {
        "id": "ea9d791fe72e3274",
        "type": "function",
        "z": "bd5facfbf1ab26d3",
        "name": "switch  \"1\" \"0\"  => [IPX]Relay state x true/false",
        "func": "var msg1;\n\nmsg1 = msg.topic\n\n/* gladys/device/mqtt:IPX800V5_Relais-1/feature/mqtt:IPX800V5_Relais-1/state */\nvar varNoRelais = msg1.substring(35,36);\nvar varStateRelais = msg.payload;\n\nswitch (varStateRelais) {\n  case \"1\":\n    msg = {payload:\"{\\\"[IPX]Relay cmd \" + varNoRelais + \"\\\":true}\"}; break;\n  case \"0\":\n    msg = {payload:\"{\\\"[IPX]Relay cmd \" + varNoRelais + \"\\\":false}\"}; break;\n  default: \n    break;\n}\n\nmsg.topic = \"IPX800V5\";\n\nreturn msg;\n",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 530,
        "y": 300,
        "wires": [
            [
                "8f7e7262bc6bf978"
            ]
        ]
    },
    {
        "id": "49d3fe656e3c55b0",
        "type": "comment",
        "z": "bd5facfbf1ab26d3",
        "name": "gladys/device/#  <=> switch  \"1\" \"0\"  => [IPX]Relay state x true/false <=> IPX800V5",
        "info": "",
        "x": 320,
        "y": 260,
        "wires": []
    },
    {
        "id": "b3606a34a3565c0a",
        "type": "comment",
        "z": "bd5facfbf1ab26d3",
        "name": "IPX800V5 <=> switch [IPX]Relay state X true/false <=> 0/1 <=> gladys/master/device/mqtt:IPX800V5_Relais-\" X \"/feature/mqtt:IPX800V5_Relais-\" X \"/state\"",
        "info": "",
        "x": 550,
        "y": 140,
        "wires": []
    },
    {
        "id": "291914c5c9c68f02",
        "type": "mqtt-broker",
        "name": "mqtt://localhost",
        "broker": "mqtt://localhost",
        "port": "1883",
        "clientid": "",
        "autoConnect": true,
        "usetls": false,
        "protocolVersion": "4",
        "keepalive": "60",
        "cleansession": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closeQos": "0",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "0",
        "willPayload": "",
        "willMsg": {},
        "sessionExpiry": ""
    }
]

On clique sur « New flow » et on colle dans la zone en rose

Vous aurez le flow suivant (La partie débug est désactivée)

La partie Node-red est terminée, on passe à la partie “Gladys”

Dans Gladys on clique sur “Intégrations”

image

Puis sur le widget “MQTT”

image

On clique sur nouveau

On paramètre comme suit et on clique sur “Ajouter une fonctionnalité”

Puis sur sauvegarder et “Retour”

On clique sur “Accueil”

image

Puis sur “Nouveau” pour créer un nouveau “Dashboard”

image

Qu’on va nommer “IPX800V5”

image

on clique sur “Editer”

image

Dans la colonne 1 on clique sur “Appareils de la pièce”

image

On séléctionnes “Tableau electrique” pour la pièce (créée dans le paramètrage des pièces)
Puis on sélectionne “IPX800V5_Relais-1” et on sauvegarde !

Vous avez maintenant, il n’y a plus qu’a cliquer pour commander le relais 1 de l’IPX800V5 (vous pouvez commander tous les autres en répétant et en adaptant ! :wink:)

image

Voila fin de ce long tuto… :sweat:

J’attends vos retours de vos tests pour eventuellement faire des corrections ! :+1:

Le tuto sur le forum de GCE

2 Likes