Mini tuto Gladys Nore-red IPX800V5

Bonjour à tous,
Un mini tuto pour mettre en œuvre une liaison entre l’IXP800V5 et une solution domotique open source qui s’appelle Gladys Assistant (Le logiciel de domotique open-source qui respecte votre vie privée | Gladys Assistant). Elle a pour particularité de tourner sur Raspberry PI4 ou sur un NUC (le mien Beelink BT3Pro), ses MAJ sont automatiques. Elle héberge un serveur Mosquitto (MQTT) et Node-red tous dans des dockers . Elle permet via l’option Gladys-plus payante (9,99€/mois) de pouvoir accéder à sa domotique depuis l’extérieur quand c’est nécessaire (vacances) sans modification de la box Gladys Plus | Gladys Assistant ! Voila pour le coté technique, pour le coté pratique c’est maintenant !
Les prérequis sont donc d’avoir un Raspberry ou un nuc avec Gladys/Mosquitto/Node-red installé.

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 »

image

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 »

image

On paramètre le widget comme suit et on valide

image

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

image

puis sur “Edition lien”

image

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)

image

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é”

image

Puis sur sauvegarder et “Retour”

image

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électionnes “Tableau électrique” pour la pièce (créée dans le paramétrage des pièces)
Puis on sélectionne “IPX800V5_Relais-1” et on sauvegarde !

image

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 !
Envoi en cours : image.png(1)…

Le tuto sur le forum de Gladys

9 « J'aime »

Précision :
Il faut penser à renseigner le champ User Password au niveau de la connexion au broker Mosquitto,
image

on trouve ces paramètres dans Gladys dans l’onglet « Integration/ Mqtt »

1 « J'aime »