UDP / MQTT -> Raumlüftersteuerung

Node-RED als CCU3/RaspberryMatic Addon, WebApp, HomeKit, ...

Moderator: Co-Administratoren

Antworten
quaker
Beiträge: 44
Registriert: 17.11.2016, 14:24
Danksagung erhalten: 3 Mal

UDP / MQTT -> Raumlüftersteuerung

Beitrag von quaker » 12.11.2023, 20:36

Hallo zusammen,

ich versuche jetzt schon seit einiger Zeit via CCU (Rasperrymatic) einen WLAN Raumlüfter in Abhängigkeit der Luftfeuchte über UDP oder MQTT in den Abluft- oder Wärmerückgewinnungsmodus zu schalten.

Hierzu habe ich die Addons node-red und Mosquitto installiert. Die Lüftfeuchtigkeit aus der CCU darüber auszulesen und dann eine Aktion zu starten klappt soweit. Jedoc hscheitere ich völlig an UDP oder MQTT.

Für den Raumlüfter gibt es eine API Anleitung welche den zu versendenden Code anzeigt.
BDA_Anschluss_SmartHome_RV_V2.pdf
(1.1 MiB) 23-mal heruntergeladen
)
Anhand der Anleitung habe ich mir mal die Pakete angesehen, welche via der App an den Lüfter gesendet werden. Bei Wechsel der Betriebmodie wird, wenn ich das richtig sehe, lediglich ein byte ausgetauscht.
betriebsmodus.png
Ich habe dies mit folgendem Flow versucht.
rednode flow.png
So aber jetzt kommt der Punkt an dem ich komplett scheitere.
Wie bzw. in welcher Form und wo gebe ich dem "sender" die notwendigen Informationen mit das der Befehl verständlich am Gerät ankommt und das Gerät dementsprechend auch den Betriebsmodus wechselt?

Wäre super wenn mir hier jemand helfen könnte.
Danke und Gruß
Sven

Benutzeravatar
Henke
Beiträge: 1538
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 144 Mal
Danksagung erhalten: 312 Mal

Re: UDP / MQTT -> Raumlüftersteuerung

Beitrag von Henke » 12.11.2023, 20:52

Mit Tante google und nach der Anleitung kann ich keinerlei Schnittstelle mit "MQTT" bei Siku erkennen.
Daher MQTT vergessen und den Mosquitto wieder deinstallieren.

nodes/flows für Siku habe ich auch keine gefunden.

Was bleibt ist die Dokumentation in der alle Informationen für die UDP vorhanden sind (hoffe ich).
Die Pakete mit Prüfsumme aufzubauen ist jedoch nicht ganz so simpel.

Ich würde daher erst mal eine UDP Empfang node nehmen und sehen was da so kommt.
Dann einen UDP Befehl zum Auslesen bauen und wenn der läuft anfangen einzelne Parameter zu ändern.

quaker
Beiträge: 44
Registriert: 17.11.2016, 14:24
Danksagung erhalten: 3 Mal

Re: UDP / MQTT -> Raumlüftersteuerung

Beitrag von quaker » 13.11.2023, 10:49

Das klingt grundsätzlich nach einem Plan :)
Aber mir fehlt der Plan von Redmatic, sprich wie kann ich denn überhaupt irgendwelche Infos via UDP an wen auch immer senden?

Wo kann ich diese "Code Kette" eingeben, ich bin da volle neuling mit dem Thema.

Würde mir hier jemand mal einen Beispiel Flow zur verfügung stellen? damit umherbasteln und testen das sollte dann schon klappen,
aber kir fehlt irgendwie schon der Anfang :roll:

Benutzeravatar
Henke
Beiträge: 1538
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 144 Mal
Danksagung erhalten: 312 Mal

Re: UDP / MQTT -> Raumlüftersteuerung

Beitrag von Henke » 13.11.2023, 16:49

Code: Alles auswählen

[
    {
        "id": "0963e33130a08333",
        "type": "inject",
        "z": "3c35a4605498931c",
        "name": "",
        "props": [],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "x": 390,
        "y": 1020,
        "wires": [
            [
                "e65ea7a4885439ed"
            ]
        ]
    },
    {
        "id": "e65ea7a4885439ed",
        "type": "function",
        "z": "3c35a4605498931c",
        "name": "MakeBuffer An",
        "func": "msg.payload = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]);\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 620,
        "y": 1020,
        "wires": [
            [
                "aa64adb434894ec8",
                "874d5c8db8b9b21d"
            ]
        ]
    },
    {
        "id": "aa64adb434894ec8",
        "type": "debug",
        "z": "3c35a4605498931c",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "counter",
        "x": 865,
        "y": 1060,
        "wires": [],
        "l": false
    },
    {
        "id": "874d5c8db8b9b21d",
        "type": "udp out",
        "z": "3c35a4605498931c",
        "name": "",
        "addr": "192.168.178.254",
        "iface": "",
        "port": "4000",
        "ipv": "udp4",
        "outport": "",
        "base64": false,
        "multicast": "false",
        "x": 920,
        "y": 1020,
        "wires": []
    },
    {
        "id": "74c2120575784c1a",
        "type": "udp in",
        "z": "3c35a4605498931c",
        "name": "",
        "iface": "",
        "port": "4000",
        "ipv": "udp4",
        "multicast": "false",
        "group": "",
        "datatype": "buffer",
        "x": 600,
        "y": 960,
        "wires": [
            [
                "3426a237857a68e7"
            ]
        ]
    },
    {
        "id": "3426a237857a68e7",
        "type": "debug",
        "z": "3c35a4605498931c",
        "name": "Hier Buffer kopieren, Tipparbeit sparen",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "counter",
        "x": 735,
        "y": 960,
        "wires": [],
        "l": false
    },
    {
        "id": "a96747489298d71e",
        "type": "inject",
        "z": "3c35a4605498931c",
        "name": "",
        "props": [],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "x": 390,
        "y": 1100,
        "wires": [
            [
                "83b3953f09bf3143"
            ]
        ]
    },
    {
        "id": "83b3953f09bf3143",
        "type": "function",
        "z": "3c35a4605498931c",
        "name": "MakeBuffer Selbstzerstörung",
        "func": "msg.payload = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]);\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 660,
        "y": 1100,
        "wires": [
            [
                "9987fabe433727c6",
                "874d5c8db8b9b21d"
            ]
        ]
    },
    {
        "id": "9987fabe433727c6",
        "type": "debug",
        "z": "3c35a4605498931c",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "counter",
        "x": 875,
        "y": 1140,
        "wires": [],
        "l": false
    }
]
Buffer nur mit Testdaten gefüllt. In die Nodes müssen die Werte der Pakete.
Achtung, die unterscheiden sich nie nur in einem Byte, da eine Checksumme berechnet wird. Achte mal auf das Byte eine Zeile tiefer deiner grünen Markierung.

quaker
Beiträge: 44
Registriert: 17.11.2016, 14:24
Danksagung erhalten: 3 Mal

Re: UDP / MQTT -> Raumlüftersteuerung

Beitrag von quaker » 15.11.2023, 08:11

Hallo Henke,
durch deinen Code bin ich auf die richtige Spur gekommen, das PRoblem war ein falsches Datenpaket.
Korrigiert und jetzt läuft alles so wie gesollt.
Danke + Gruß
Sven

Antworten

Zurück zu „RedMatic“