@gaelbillon, I did a test with the security pack remote but no information is being reported to the API.
Yet I can detect it correctly but no value changes in the data

![
[quote=« _Will_71, post:23, topic:7820 »]
It would require either push
Yes, I found it yesterday, but for now I donât think Iâll add much. Iâm just getting started, so I donât want to do too much at once and end up writing a lot of nonsense in the code.
I was already thinking of opening a PR (pull request) with what I manage to get working (shutters, open and motion sensors) and with the current Gladys components, and then look into adding a 3-state component adapter for the alarms. Besides, that could also be useful for your development on the alarms.
Hi @_Will_71,
Already a great job, and since Iâm not taking part in the coding I wonât allow myself to be too demanding!
Having the shutters plus open and motion sensors is already a good
Yes youâre right, itâs better to make small PRs that get merged quickly rather than huge PRs that are impossible to review ![]()
To be honest I only use it for controlling the shutters, which for now is reported to Gladys thanks to Node-RED and MQTT.
Hi @_Will_71,
If you
Hi,
Iâll try to do that for you tonight
@gaelbillon voila des explications pour le module Freebox de Node-RED
Dans un premier temps il faut créer un device MQTT avec les features Position du Volet et Etat du volet
Dans Node-RED il faut installer le module node-red-contrib-freebox et bien sûr créer la connexion avec le broker MQTT Gladys.
Lors de la premiĂšre requĂȘte il faudra valider lâutilisation de Node-RED avec la Freebox.
Pour cela il faudra valider sur la façade de ta Freebox.
Ensuite il faudra donner lâautorisation Ă Node-RED de lire les infos du pack sĂ©curitĂ© dans les paramĂštres de la Freebox.
Pour cela aller sur Freebox-OS, paramĂštres / gestion des accĂšs


Dans Gestion des accĂšs, dans lâonglet Application, tu dois retrouver une ligne correspondant Ă Node-RED

Cocher la case Gestion de lâalarme et maison connectĂ©e
![]()
Ci dessous un premier Flow pour tester la connexion et avoir le retour de tout tes devices du pack sécurité.

[
{
"id": "1d67dee27a16208d",
"type": "group",
"z": "d7c3929073ea7b03",
"name": "Call API Freebox",
"style": {
"fill": "#dbcbe7",
"label": true,
"color": "#000000"
},
"nodes": [
"4f8f16965ae54f50",
"72e75292b4cb21f9",
"7dd73ca182891c1b"
],
"x": 1254,
"y": 699,
"w": 552,
"h": 82
},
{
"id": "4f8f16965ae54f50",
"type": "api",
"z": "d7c3929073ea7b03",
"g": "1d67dee27a16208d",
"name": "",
"url": "",
"server": "35b9faf136b9302a",
"x": 1530,
"y": 740,
"wires": [
[
"72e75292b4cb21f9"
]
]
},
{
"id": "72e75292b4cb21f9",
"type": "debug",
"z": "d7c3929073ea7b03",
"g": "1d67dee27a16208d",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1690,
"y": 740,
"wires": []
},
{
"id": "7dd73ca182891c1b",
"type": "inject",
"z": "d7c3929073ea7b03",
"g": "1d67dee27a16208d",
"name": "/home/tileset",
"props": [
{
"p": "url",
"v": "/home/tileset/all",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"x": 1370,
"y": 740,
"wires": [
[
"4f8f16965ae54f50"
]
]
},
{
"id": "35b9faf136b9302a",
"type": "freebox-server",
"host": "https://mafreebox.freebox.fr",
"port": "443"
}
]
Ci dessous le flow dâun volet
[
{
"id": "18e154108b13c26c",
"type": "group",
"z": "d7c3929073ea7b03",
"name": "Volet bureau",
"style": {
"stroke": "#7fb7df",
"label": true,
"fill": "#92d04f",
"color": "#000000"
},
"nodes": [
"3e15afd9376757c9",
"a49eaa136556eee7",
"a748fcd15020c73e",
"10b39b8328881bdb",
"1ecb5525b3ad37c6",
"a7c2664d98109c89",
"fd923244d0fb66d2",
"2a32a9e720ae58f3",
"31a13ffcc844be3f",
"26f4754086a73f61",
"768a96d8a1add8e5",
"3bdfec7e2be1d3cb",
"3dab952dd0a739a3",
"83331d58417a9467",
"30d53f3a1ed9df4c",
"277875ed0aa28e4b"
],
"x": 54,
"y": 1179,
"w": 1512,
"h": 342
},
{
"id": "3e15afd9376757c9",
"type": "mqtt in",
"z": "d7c3929073ea7b03",
"g": "18e154108b13c26c",
"name": "Gladys value",
"topic": "gladys/device/mqtt:volet_bureau/feature/mqtt:position_volet_bureau/state",
"qos": "2",
"datatype": "auto-detect",
"broker": "05eac840560ca08c",
"nl": false,
"rap": true,
"rh": 0,
"inputs": 0,
"x": 150,
"y": 1220,
"wires": [
[
"83331d58417a9467"
]
]
},
{
"id": "a49eaa136556eee7",
"type": "mqtt out",
"z": "d7c3929073ea7b03",
"g": "18e154108b13c26c",
"name": "Update Gladys value",
"topic": "gladys/master/device/mqtt:volet_bureau/feature/mqtt:position_volet_bureau/state",
"qos": "2",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "05eac840560ca08c",
"x": 1080,
"y": 1480,
"wires": []
},
{
"id": "a748fcd15020c73e",
"type": "mqtt in",
"z": "d7c3929073ea7b03",
"g": "18e154108b13c26c",
"name": "Gladys value",
"topic": "gladys/device/mqtt:volet_bureau/feature/mqtt:cmd_volet_bureau/state",
"qos": "2",
"datatype": "auto-detect",
"broker": "05eac840560ca08c",
"nl": false,
"rap": true,
"rh": 0,
"inputs": 0,
"x": 150,
"y": 1320,
"wires": [
[
"10b39b8328881bdb"
]
]
},
{
"id": "10b39b8328881bdb",
"type": "json",
"z": "d7c3929073ea7b03",
"g": "18e154108b13c26c",
"name": "",
"property": "payload",
"action": "",
"pretty": false,
"x": 290,
"y": 1320,
"wires": [
[
"1ecb5525b3ad37c6"
]
]
},
{
"id": "1ecb5525b3ad37c6",
"type": "switch",
"z": "d7c3929073ea7b03",
"g": "18e154108b13c26c",
"name": "",
"property": "payload",
"propertyType": "msg",
"rules": [
{
"t": "eq",
"v": "1",
"vt": "num"
},
{
"t": "eq",
"v": "0",
"vt": "num"
},
{
"t": "eq",
"v": "-1",
"vt": "num"
}
],
"checkall": "true",
"repair": false,
"outputs": 3,
"x": 410,
"y": 1320,
"wires": [
[
"fd923244d0fb66d2",
"31a13ffcc844be3f"
],
[
"a7c2664d98109c89"
],
[
"2a32a9e720ae58f3",
"31a13ffcc844be3f"
]
],
"outputLabels": [
"Open",
"Stop",
"Close"
]
},
{
"id": "a7c2664d98109c89",
"type": "function",
"z": "d7c3929073ea7b03",
"g": "18e154108b13c26c",
"name": "STOP",
"func": "msg.url = \"/home/endpoints/30/1\"\nmsg.method = \"PUT\"\nmsg.payload = {\n \"value\": null\n}\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 710,
"y": 1320,
"wires": [
[
"30d53f3a1ed9df4c"
]
]
},
{
"id": "fd923244d0fb66d2",
"type": "function",
"z": "d7c3929073ea7b03",
"g": "18e154108b13c26c",
"name": "OPEN",
"func": "msg.url = \"/home/endpoints/30/3\"\nmsg.method = \"PUT\"\nmsg.payload = {\n \"value\": 0\n}\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 710,
"y": 1280,
"wires": [
[
"30d53f3a1ed9df4c"
]
]
},
{
"id": "2a32a9e720ae58f3",
"type": "function",
"z": "d7c3929073ea7b03",
"g": "18e154108b13c26c",
"name": "CLOSE",
"func": "msg.url = \"/home/endpoints/30/3\"\nmsg.method = \"PUT\"\nmsg.payload = {\n \"value\": 100\n}\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 720,
"y": 1360,
"wires": [
[
"30d53f3a1ed9df4c"
]
]
},
{
"id": "31a13ffcc844be3f",
"type": "trigger",
"z": "d7c3929073ea7b03",
"g": "18e154108b13c26c",
"name": "Wait for stable value",
"op1": "",
"op2": "",
"op1type": "nul",
"op2type": "payl",
"duration": "15",
"extend": true,
"overrideDelay": false,
"units": "s",
"reset": "",
"bytopic": "all",
"topic": "topic",
"outputs": 1,
"x": 500,
"y": 1400,
"wires": [
[
"3dab952dd0a739a3"
]
]
},
{
"id": "26f4754086a73f61",
"type": "poll",
"z": "d7c3929073ea7b03",
"g": "18e154108b13c26c",
"name": "Volet Bureau",
"url": "/home/tileset/30",
"interval": "3000",
"server": "35b9faf136b9302a",
"x": 150,
"y": 1480,
"wires": [
[
"768a96d8a1add8e5"
]
]
},
{
"id": "768a96d8a1add8e5",
"type": "function",
"z": "d7c3929073ea7b03",
"g": "18e154108b13c26c",
"name": "Get only the value",
"func": "msg.payload = 100 - msg.payload[0].data[0].value;\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 750,
"y": 1480,
"wires": [
[
"a49eaa136556eee7"
]
]
},
{
"id": "3bdfec7e2be1d3cb",
"type": "mqtt out",
"z": "d7c3929073ea7b03",
"g": "18e154108b13c26c",
"name": "Update Gladys value",
"topic": "gladys/master/device/mqtt:volet_bureau/feature/mqtt:cmd_volet_bureau/state",
"qos": "2",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "05eac840560ca08c",
"x": 1080,
"y": 1400,
"wires": []
},
{
"id": "3dab952dd0a739a3",
"type": "function",
"z": "d7c3929073ea7b03",
"g": "18e154108b13c26c",
"name": "Set value to 0",
"func": "msg.payload = 0;\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 740,
"y": 1400,
"wires": [
[
"3bdfec7e2be1d3cb"
]
]
},
{
"id": "83331d58417a9467",
"type": "function",
"z": "d7c3929073ea7b03",
"g": "18e154108b13c26c",
"name": "Convert to the correct value",
"func": "msg.url = \"/home/endpoints/30/3\"\nmsg.method = \"PUT\"\nmsg.payload = {\n \"value\": 100 - msg.payload\n}\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 780,
"y": 1220,
"wires": [
[
"30d53f3a1ed9df4c"
]
]
},
{
"id": "30d53f3a1ed9df4c",
"type": "api",
"z": "d7c3929073ea7b03",
"g": "18e154108b13c26c",
"name": "",
"url": "",
"server": "35b9faf136b9302a",
"x": 1250,
"y": 1320,
"wires": [
[
"277875ed0aa28e4b"
]
]
},
{
"id": "277875ed0aa28e4b",
"type": "debug",
"z": "d7c3929073ea7b03",
"g": "18e154108b13c26c",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1450,
"y": 1320,
"wires": []
},
{
"id": "05eac840560ca08c",
"type": "mqtt-broker",
"name": "GladysMQTT",
"broker": "192.168.*.***",
"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": {},
"userProps": "",
"sessionExpiry": ""
},
{
"id": "35b9faf136b9302a",
"type": "freebox-server",
"host": "https://mafreebox.freebox.fr",
"port": "443"
}
]
Ce que tu obtiendras dans Gladys

Si tu as des questions nâhĂ©sites pas.
Hi @_Will_71 ,
Thank you very much, I will start looking at that tomorrow and yes I think there will be questions.
Have a good evening
@_Will_71 Thanks for sharing! Great job!
Wouldnât you put that in a specific tutorial so it doesnât get lost?
That can be done. Iâll try to do it tomorrow
Hi @_Will_71,
Iâve started looking and already have questions; for info Iâm not a developer.
On the 1st Flow, could you please show me what you put?
Thanks
Hi @gaelbillon,
What exactly do you want to see? Because if you import the flow I added, youâll have everything in it.
Just one thing: where does the value msg.url = « /home/endpoints/30/3 » come from?
I must be stupid but I canât find it.
Yes I see why because actually I forgot to mention it and you need to adapt this line according to your shutters.
For that the first flow I gave you will let you find these values.
If you run the flow hereâs what youâll get
If you expand it youâll find all your devices
My example shutter is at value 7 in the table
Hereâs how to form the msg.url
/home/endpoints/node_id/ep_id
With node_id the identifier of your shutter â here my shutter is 30 => value to retrieve from the payload obtained above. So you must modify it according to the value you have for your shutter.
And ep_id the identifier of your function â here I use the position feature which has the identifier 3 => this value normally doesnât need to be changed; on my 6 shutters this identifier is the same.
I donât know if Iâll have time tonight but at the same time Iâm rewriting the tutorial as requested.
Thanks for asking me â Iâll add it.