1) Freebox Home
Um diese Rollläden über die Free-API (Node-RED) oder andere zu steuern, müssen Sie zunächst diese Rollläden mit der Freebox Home-App koppeln. Wenn die Rollläden nicht in der Free-App integriert sind, sind sie nicht über Node-RED und damit auch nicht über Gladys zugänglich.
2) Erstellung eines virtuellen Geräts in der MQTT-Integration von Gladys
Voraussetzung: MQTT-Broker in Gladys installieren.
Ein virtuelles Gerät in der MQTT-Integration mit den Funktionen Rollladenposition und Rollladenstatus hinzufügen.
3) Installation in Node-RED
Voraussetzung: Node-RED installiert und MQTT-Broker konfiguriert. Bei Bedarf das Video von @Pierre-Gilles ansehen
Um die Rollläden von Node-RED aus zu steuern, müssen Sie node-red-contrib-freebox installieren.
Dazu im Node-RED-Menü auf Manage palette klicken.
Im Installations-Tab nach freebox suchen und node-red-contrib-freebox installieren.
Sobald installiert, sind die Freebox-Knoten dann im linken Bereich verfügbar.
4) Konfiguration der Verbindung mit der Freebox.
Ein api-Knoten auf Ihrem Node-RED-Flow hinzufügen und doppelt klicken, um die Eigenschaftsseite zu öffnen.
In der Zeile Server auf den Stift klicken, um eine neue Freebox zu erstellen.
Geben Sie die URL Ihrer Freebox und den Port an
Klicken Sie dann auf Add, um die Konfiguration hinzuzufügen.
Zum Testen der Verbindung können Sie einen Inject-Knoten als Eingang und einen Debug-Knoten als Ausgang des API-Knotens hinzufügen.
Im Inject-Knoten die folgende Nachricht senden. Dadurch werden alle verbundenen Geräte Ihrer Freebox sowie deren Status abgerufen. Das Ergebnis dieses Flows ermöglicht es, später die Identifikatoren unserer Rollläden zu ermitteln.
Ein Bild des Flows
Der Code dieses Flows zum direkten Importieren in Node-Red.
[
{
"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"
}
]
Bei der ersten Anfrage müssen Sie die Anwendung direkt auf der Frontseite Ihrer Freebox Delta bestätigen.
Der Name Node-RED wird auf der Frontseite angezeigt.
Achtung: Es gibt eine Frist, um die Anfrage zu akzeptieren. Wenn Sie nicht bestätigen, wird die Freebox die Verbindung mit Node-RED ablehnen.
Das ist noch nicht alles bei der Freebox, Sie müssen auch die Leserechte für das Sicherheitspaket in den Einstellungen der Freebox freigeben.
Dazu gehen Sie zu Freebox OS ( https://mafreebox.freebox.fr), melden Sie sich an und gehen Sie zu Freebox-Einstellungen und Zugriffsverwaltung
In der Zugriffsverwaltung, im Reiter Anwendung, müssen Sie eine Zeile finden, die Node-RED entspricht
Klicken Sie auf den Stift rechts, um die Berechtigungen zu ändern.

Aktivieren Sie das Kontrollkästchen für die Verwaltung von Alarmanlage und Smart Home
![]()
5) Erstellen des Flows zum Lesen der Position eines Rollladens
![]()
Sie müssen diese 3 Knoten konfigurieren und sie entsprechend Ihrer Installation anpassen.
1. Knoten Poll free
Name: Name Ihres Rollladens
URL: URL zum Abfragen der API der Freebox zur Position Ihres Rollladens. Hier müssen Sie nur den Wert 30 ändern und den node_id-Wert Ihres Rollladens angeben. (siehe unten, um den node_id Ihres Rollladens zu finden)
Intervall: Zeitraum in ms für die API-Abfrage. Wenn Sie diesen Wert auf 3000 einstellen, bedeutet das, dass Node-RED alle 3 Sekunden eine Anfrage an die Freebox sendet.
Server: Geben Sie hier Ihre zuvor erstellte Freebox an. Sie sollten diese Auswahl finden, indem Sie auf den Pfeil drücken
Wie finde ich den node_id meines Rollladens?
Um den node_id zu finden, führen Sie einfach den ersten Flow aus und suchen Sie den Wert in der Antwort.
Entfalten Sie die erhaltene Tabelle, bis Sie die Angabe action: « store_slider » finden.
Darunter können Sie die Kennung Ihres Rollladens lesen. In meinem Fall handelt es sich also um die Kennung 30.
2. Funktionsknoten
Der Knoten ‹ Get only the value › muss nicht geändert werden. Die Funktion invertiert den erhaltenen Wert, um ihn korrekt in Gladys anzuzeigen.
3. Knoten MQTT OUT
Geben Sie den Wert des MQTT-Topics Ihres MQTT-Geräts in Topic MQTT zum Veröffentlichen ein.
Das Ergebnis in Gladys: Sie haben eine Anzeige der Position Ihres Rollladens.
Unten der Node-RED-Flow
[
{
"id": "83c677d56359578d",
"type": "poll",
"z": "facf6f6a9a445bc5",
"g": "7a04e315ea806549",
"name": "Volet Bureau",
"url": "/home/tileset/30",
"interval": "3000",
"server": "35b9faf136b9302a",
"x": 1150,
"y": 540,
"wires": [
[
"633f74301050d2f8"
]
]
},
{
"id": "633f74301050d2f8",
"type": "function",
"z": "facf6f6a9a445bc5",
"g": "7a04e315ea806549",
"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": 1750,
"y": 540,
"wires": [
[
"1ab1d89e132c7653"
]
]
},
{
"id": "1ab1d89e132c7653",
"type": "mqtt out",
"z": "facf6f6a9a445bc5",
"g": "7a04e315ea806549",
"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": 2080,
"y": 540,
"wires": []
},
{
"id": "35b9faf136b9302a",
"type": "freebox-server",
"host": "https://mafreebox.freebox.fr",
"port": "443"
},
{
"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": ""
}
]
6) Erstellen des Flows zur Änderung der Position eines Rollladens
![]()
1. MQTT-Eingangsknoten
Server: Ihr MQTT-Broker Gladys
Topic: Das Topic Ihres Slider-Geräts, das Sie in der MQTT-Integration entsprechend der Position Ihres Rollladens erhalten.
2. Funktionsknoten
Der Knoten „Convert to the correct value“ erfordert die Änderung der Identifikatoren in der URL, um die Ihres Rollladens einzugeben. Hier müssen zwei Identifikatoren abgerufen werden: der node_id, der Ihrem Rollladen entspricht, und der ep_id, der der Funktionalität Ihres Rollladens entspricht.
Die URL-Nachricht hat dieses Format « /home/endpoints/node_id/ep_id »
Um diese Identifikatoren abzurufen, verwenden Sie den ersten Flow, den ich Ihnen gegeben habe.
Der node_id ist immer derselbe wie im vorherigen Flow.
Der ep_id befindet sich im Datenabschnitt und bezieht sich auf die Funktionalität der Position. Daher ist hier für meinen Rollladen der Wert 3.
Dieser Wert sollte für alle gleich sein.
3. Freebox-API-Knoten
Geben Sie die URL Ihrer Freebox wie im ersten Flow an.
Unten finden Sie den Flow, der in node-RED importiert werden kann.
[
{
"id": "42f1d4ec5102ed80",
"type": "mqtt in",
"z": "facf6f6a9a445bc5",
"g": "7a04e315ea806549",
"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": 1150,
"y": 660,
"wires": [
[
"3bb82c10f8678d6a"
]
]
},
{
"id": "3bb82c10f8678d6a",
"type": "function",
"z": "facf6f6a9a445bc5",
"g": "7a04e315ea806549",
"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": 1540,
"y": 660,
"wires": [
[
"77d7357b042a5833"
]
]
},
{
"id": "77d7357b042a5833",
"type": "api",
"z": "facf6f6a9a445bc5",
"g": "7a04e315ea806549",
"name": "",
"url": "",
"server": "35b9faf136b9302a",
"x": 1950,
"y": 660,
"wires": [
[
"4efe8217d70b5fe3"
]
]
},
{
"id": "4efe8217d70b5fe3",
"type": "debug",
"z": "facf6f6a9a445bc5",
"g": "7a04e315ea806549",
"name": "debug 26",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 2200,
"y": 660,
"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"
}
]
7) Erstellen eines Flusses zum Ändern der Position eines Rollladens mit einem 3-Zustandsschalter (ÖFFNEN / STOPP / SCHLIESSEN)
1. MQTT-Eingangsknoten
Server: Ihr MQTT-Broker Gladys
Topic: Das Topic Ihres Geräts „Zustand des Rollladens“, das Sie in der MQTT-Integration abrufen.
Die nächsten beiden Knoten (JSON und Switch) müssen nicht verändert werden.
Der Switch ermöglicht die Auswahl der auszuführenden Aktion basierend auf der Betätigung des Buttons in Gladys.
2. Knoten ÖFFNEN STOPP SCHLIESSEN
In diesen drei Knoten müssen Sie die URL-Adresse ändern und die ID Ihres Rollladens anstelle des Werts 30 angeben.
3. Knoten API Free
Geben Sie die URL Ihrer Freebox wie im ersten Fluss an.
Der zweite Teil des Flusses ermöglicht die Auswahl des STOPP-Buttons in Gladys nach 15 Sekunden.
![]()
![]()
Hier sieht man, dass STOPP deaktiviert ist (also ausgewählt). Ich fand es optisch besser, den Zustand des Buttons nach einer bestimmten Zeit wieder auf STOPP zu setzen. Dieser Teil kann entfernt werden.
Sie müssen hier nur den MQTT-Ausgangsknoten mit dem Topic Ihres Buttons konfigurieren. Topic in Gladys abrufen.
Hier ist der zu importierende Flow für node-RED
[
{
"id": "471ec274b89ba7a7",
"type": "mqtt in",
"z": "facf6f6a9a445bc5",
"g": "7a04e315ea806549",
"name": "Gladys-Wert",
"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": 1150,
"y": 320,
"wires": [
[
"79ea0b61e2b9efd3"
]
]
},
{
"id": "79ea0b61e2b9efd3",
"type": "json",
"z": "facf6f6a9a445bc5",
"g": "7a04e315ea806549",
"name": "",
"property": "payload",
"action": "",
"pretty": false,
"x": 1290,
"y": 320,
"wires": [
[
"661245a7f638d8d1"
]
]
},
{
"id": "661245a7f638d8d1",
"type": "switch",
"z": "facf6f6a9a445bc5",
"g": "7a04e315ea806549",
"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": 1410,
"y": 320,
"wires": [
[
"e67eee566c013802",
"06446de47c9607fd"
],
[
"cd893f51cc091045"
],
[
"51d16ab4960719bd",
"06446de47c9607fd"
]
],
"outputLabels": [
"Öffnen",
"Stop",
"Schließen"
]
},
{
"id": "cd893f51cc091045",
"type": "function",
"z": "facf6f6a9a445bc5",
"g": "7a04e315ea806549",
"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": 1710,
"y": 320,
"wires": [
[
"8654a1df5516031e"
]
]
},
{
"id": "e67eee566c013802",
"type": "function",
"z": "facf6f6a9a445bc5",
"g": "7a04e315ea806549",
"name": "ÖFFNEN",
"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": 1710,
"y": 280,
"wires": [
[
"8654a1df5516031e"
]
]
},
{
"id": "51d16ab4960719bd",
"type": "function",
"z": "facf6f6a9a445bc5",
"g": "7a04e315ea806549",
"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": 1720,
"y": 360,
"wires": [
[
"8654a1df5516031e"
]
]
},
{
"id": "06446de47c9607fd",
"type": "trigger",
"z": "facf6f6a9a445bc5",
"g": "7a04e315ea806549",
"name": "Warten auf stabilen Wert",
"op1": "",
"op2": "",
"op1type": "nul",
"op2type": "payl",
"duration": "15",
"extend": true,
"overrideDelay": false,
"units": "s",
"reset": "",
"bytopic": "all",
"topic": "topic",
"outputs": 1,
"x": 1500,
"y": 400,
"wires": [
[
"0714f8d0c789b85c"
]
]
},
{
"id": "534e1350127d6e31",
"type": "mqtt out",
"z": "facf6f6a9a445bc5",
"g": "7a04e315ea806549",
"name": "Gladys-Wert aktualisieren",
"topic": "gladys/master/device/mqtt:volet_bureau/feature/mqtt:cmd_volet_bureau/state",
"qos": "2",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "05eac840560ca08c",
"x": 2080,
"y": 400,
"wires": []
},
{
"id": "0714f8d0c789b85c",
"type": "function",
"z": "facf6f6a9a445bc5",
"g": "7a04e315ea806549",
"name": "Wert auf 0 setzen",
"func": "msg.payload = 0;\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1740,
"y": 400,
"wires": [
[
"534e1350127d6e31"
]
]
},
{
"id": "8654a1df5516031e",
"type": "api",
"z": "facf6f6a9a445bc5",
"g": "7a04e315ea806549",
"name": "",
"url": "",
"server": "35b9faf136b9302a",
"x": 2050,
"y": 300,
"wires": [
[
"d08253b67c85d52f"
]
]
},
{
"id": "d08253b67c85d52f",
"type": "debug",
"z": "facf6f6a9a445bc5",
"g": "7a04e315ea806549",
"name": "debug 23",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 2220,
"y": 300,
"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"
}
]





























