[NODE-RED] RFXcom und Somfy RTS Rollläden

Nach einigen Stunden, in denen ich mich mit Gladys, Node Red und RFXcom beschäftigt habe, versuche ich, ein Tutorial zu erstellen, um eine Prozedur zu bewahren und vielleicht einigen zu helfen ^^

Was benötigen wir?

  • SOMFY RTS Jalousien (das Tutorial funktioniert auch mit jedem anderen RTS-Gerät)
  • ein RFXcom, das RTS unterstützt (RFX433XL oder RFX433E)
  • eine funktionierende Gladys- und Node-Red-Installation
  • die offizielle RFXcom-Software: RFXmngr, verfügbar hier: Downloads — RFXCOM

Ich persönlich verwende den RFX433E:

Um zu beginnen, starten wir das Programm RFXmngr, um einen Code für die zu bedienenden Jalousien zuzuordnen.
Ich habe keine Lösung gefunden, um die bestehenden Codes abzurufen, daher müssen wir für jedes RTS-Gerät eine Zuordnung hinzufügen, was bedeutet, dass wir einen beliebigen Code den verschiedenen Geräten zuordnen. Dies unterbricht nicht die bestehende Verbindung mit einer Fernbedienung, zum Beispiel.

2 Möglichkeiten:

  • den Dongle an einen PC mit Windows anschließen, auf dem die Anwendung RFXmngr läuft, sehr einfach
  • sich remote verbinden, weniger einfach, aber praktischer für mich, da sich mein Server in meinem Dachboden befindet ^^

Hier ist die Prozedur, um sich remote mit dem Dongle zu verbinden, Manipulation, die auf Ihrer Gladys-Maschine (Raspberry Pi, Docker) im Konsolmodus durchgeführt werden muss:

cd
curl -LO https://github.com/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat
chmod +x socat
./socat file:/dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1K5N6B-if00-port0,raw,echo=0 tcp4-l:3007

Achtung, Ihr RFXcom hat wahrscheinlich eine andere Adresse, Sie können sie mit dem folgenden Befehl abrufen:
ls /dev/serial/by-id/usb-RFXCOM_RFXtrx433_*
und den Pfad Ihres RFXcom entsprechend ändern…

als nächstes, starten Sie das Programm RFXmngr

Klicken Sie auf die Schaltfläche „Verbinden“


Wählen Sie:

  • den USB-Port, wenn der Dongle lokal ist
  • die IP (Gladys-IP) und den Port (3007), wenn Sie remote darauf zugreifen
    und klicken Sie auf OK, RFXmngr wird mit dem RFXcom verbunden

Sobald verbunden, klicken Sie auf die Registerkarte „RFY“, dann müssen Sie eine eindeutige ID in „ID“ und einen eindeutigen Code in „Unit Code“ für Ihr RTS-Gerät generieren, hier verwenden wir die ID „1 01 00“ und den Code „1“). (Verlassen Sie sich nicht nur auf den Screenshot, um die Oberfläche zu präsentieren :wink: )

Es bleibt nur noch, Ihr Tor/Jalousie mit dem Dongle zu paaren, indem Sie Ihr Tor/Jalousie in den Lernmodus versetzen (konsultieren Sie die Dokumentation Ihres Motors) und in der Liste „command“ auf den Befehl „PROGRAMM“ der Anwendung und dann auf „transmit“ klicken, fertig, Ihr Motor ist einem Code zugeordnet, er kann nun gesteuert werden!

In Gladys:
Um zu beginnen, werden wir ein MQTT-Gerät in Gladys einrichten:
Mit einer Funktion „Zustand der Jalousie“ wie folgt konfiguriert:

Mit den Werten min -1 und max 1
Der Wert -1 senkt die Jalousie
Der Wert 0 stoppt die Jalousie
Der Wert 1 hebt die Jalousie

Der Rest wird in Node Red stattfinden:
Zuerst müssen Sie das Palette „node-red-contrib-rfxcom“ installieren, um über die notwendigen Knoten zu verfügen

Hier ist ein Export meines Garagentor-Flusses:
Es reicht, diesen Fluss zu importieren und in den MQTT-In-Einstellungen Ihren Server und das Gladys-Topic anzugeben
und im Knoten rfx-blinds-out das USB-Gerät, das Ihrem Dongle entspricht, und die RFY-Adresse, die über die RFXmngr-Anwendung gegeben wurde:

[
    {
        "id": "c58f505d143ae7e9",
        "type": "tab",
        "label": "Garagentore",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "a9ae1a361b44c464",
        "type": "mqtt in",
        "z": "c58f505d143ae7e9",
        "name": "Motortor",n        "topic": "gladys/device/mqtt:portegaragemoto2/feature/mqtt:porte-moto/state",
        "qos": "2",
        "datatype": "auto-detect",
        "broker": "041d2917313dea6e",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 60,
        "y": 120,
        "wires": [
            [
                "cf1072ce938eb86b",
                "ed1a6590de4a9312"
            ]
        ]
    },
    {
        "id": "cf1072ce938eb86b",
        "type": "switch",
        "z": "c58f505d143ae7e9",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "-1",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "0",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "1",
                "vt": "str"
            }
        ],
        "checkall": "false",
        "repair": false,
        "outputs": 3,
        "x": 230,
        "y": 260,
        "wires": [
            [
                "f1c6dbe6146fde4e"
            ],
            [
                "f9cae6d5f71b1f74"
            ],
            [
                "1783b4006754428c"
            ]
        ]
    },
    {
        "id": "ed1a6590de4a9312",
        "type": "debug",
        "z": "c58f505d143ae7e9",
        "name": "gladys",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 770,
        "y": 120,
        "wires": []
    },
    {
        "id": "f1c6dbe6146fde4e",
        "type": "change",
        "z": "c58f505d143ae7e9",
        "name": "schließen",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "Down",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 430,
        "y": 180,
        "wires": [
            [
                "8de8b0dc91284d7b"
            ]
        ]
    },
    {
        "id": "8de8b0dc91284d7b",
        "type": "rfx-blinds-out",
        "z": "c58f505d143ae7e9",
        "name": "Schließen",
        "port": "16459ba880d0837b",
        "topicSource": "node",
        "topic": "RFY/0x10100/1",
        "x": 780,
        "y": 180,
        "wires": []
    },
    {
        "id": "f9cae6d5f71b1f74",
        "type": "change",
        "z": "c58f505d143ae7e9",
        "name": "stoppen",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "Stop",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 440,
        "y": 260,
        "wires": [
            [
                "3079920a261a7a4d"
            ]
        ]
    },
    {
        "id": "3079920a261a7a4d",
        "type": "rfx-blinds-out",
        "z": "c58f505d143ae7e9",
        "name": "Stopp",
        "port": "16459ba880d0837b",
        "topicSource": "node",
        "topic": "RFY/0x10100/1",
        "x": 770,
        "y": 260,
        "wires": []
    },
    {
        "id": "1783b4006754428c",
        "type": "change",
        "z": "c58f505d143ae7e9",
        "name": "öffnen",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "Up",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 430,
        "y": 340,
        "wires": [
            [
                "b67c7c98c5bcf352"
            ]
        ]
    },
    {
        "id": "b67c7c98c5bcf352",
        "type": "rfx-blinds-out",
        "z": "c58f505d143ae7e9",
        "name": "Öffnen",
        "port": "16459ba880d0837b",
        "topicSource": "node",
        "topic": "RFY/0x10100/1",
        "x": 780,
        "y": 340,
        "wires": []
    },
    {
        "id": "041d2917313dea6e",
        "type": "mqtt-broker",
        "name": "",
        "broker": "mqtt://192.168.0.1",
        "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": "16459ba880d0837b",
        "type": "rfxtrx-port",
        "port": "/dev/ttyUSB0",
        "enableDebug": true,
        "rfyVenetianMode": "EU"
    }
]

Im Prinzip haben Sie alles, was Sie brauchen. Zögern Sie nicht, mir Feedback zu geben. Jede Änderung ist willkommen, um diesen Tutoriel so klar und einfach wie möglich zu gestalten :wink:

Z.

Super Tuto! Vergiss nicht, die JSON/Code-Schnipsel mit Code-Tags im Forum zu markieren, sonst ist es nicht sehr leserlich :slight_smile:

Danke für die Info, ich habe gesucht und nicht gefunden ^^ es ist geändert

Danke für das Tutorial.
Ich habe auch Somfy RTS Rollläden, also werde ich dein Tutorial ausprobieren.
Es ärgert mich trotzdem, 100 Euro in ein RFXcom zu investieren. Aber gut, wenn es der einzige Weg ist.

Ich werde dich wahrscheinlich nerven, wenn ich Probleme habe :smiley:

Super toller Tutorium, ich hatte bereits ein RFX auf Jeedom und fragte mich, wie ich das auf Gwladys integrieren könnte. Ich habe auch auf meinem Jeedom ein kleines Skript, das es ermöglicht, die Rollläden an mehreren bestimmten Positionen basierend auf der Schließzeit zu schließen, aber ich weiß nicht, ob ich das in Gwladys integrieren kann.

Willkommen @scoobidou83 im Forum!

Ich habe auch noch ein Stück Jeedom bei mir zu Hause.
Was die Wartezeiten bei Gladys angeht, wird es ähnlich wie bei Jeedom sein, du musst einfach eine Aktion Warten mit der gewünschten Zeit einrichten (ich öffne, ich warte, ich stoppe):



Du kannst auch eine feste Berechnung für die Wartezeit in Abhängigkeit davon, was du öffnen möchtest, einrichten (volle Öffnung in 20s und ich öffne nur 40% der Zeit):


oder eine Variable (meistens MQTT) abrufen, um etwas „Dynamisches“ zu machen (Achtung beim Namen der Variable, das ist nur ein Beispiel mit dem, was ich hatte):