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 »
Cliquez sur « MQTT »
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)
Ensuite on va dans l’onglet « Liens »
Puis dans le sous-onglet « OBJETS » et on clique sur « MQTT Publish »
et « Ajouter MQTT publish »
Cela crée un objet « Publish » nommé « TOPIC PUB N° » on clique sur « Edition »
On le paramètre comme ci-dessous
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 »
puis « Ajouter MQTT suscribe »
Cela crée un objet « Suscribe » nommé « TOPIC SUB N° » on clique sur « Edition »
On le paramètre comme ci-dessous,
en se référant à l’Api-Deck pour le nom et la clé et on valide.
On clique sur l’onglet à gauche « Dasboard »
On clique sur le cadenas pour passer en mode édition
puis « Ajouter widget »
puis « Edition »
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 »
puis sur “Edition lien”
Puis le « + » à gauche du » [IPX]Relay cmd1"
puis à gauche sur « MQTT Suscribe » qu’on fait glisser sur la zone pointillée
on paramètre comme suit on valide. On obtient
On clique sur « Etat Relais »
et « + » à droite de « [IPX]Relay State 1 »
puis à gauche sur « MQTT Publish » qu’on fait glisser sur la zone pointillée
on paramètre comme suit et on valide.
Ç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 »
[
{
"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”
Puis sur le widget “MQTT”
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”
Puis sur “Nouveau” pour créer un nouveau “Dashboard”
Qu’on va nommer “IPX800V5”
on clique sur “Editer”
Dans la colonne 1 on clique sur “Appareils de la pièce”
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 ! )
Voila fin de ce long tuto…
J’attends vos retours de vos tests pour eventuellement faire des corrections !
Le tuto sur le forum de GCE