CCU3 NodeRed Zigbee

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

Moderator: Co-Administratoren

Antworten
MaWeWa
Beiträge: 5
Registriert: 06.03.2022, 11:42
System: CCU
Hat sich bedankt: 2 Mal

CCU3 NodeRed Zigbee

Beitrag von MaWeWa » 26.06.2022, 19:27

Hallo Zusamman,

brauche Eure Hilfe.
Nutze:
CCU3 3.63.9
RedMatic Version 7.2.1
node-red-contrib-zigbee 0.20.3

Würde gern über Node Red werte eines Zigbee Sensors in 3 Homematic Sysvariablen speichern.
Sensor ist ein Tuya Zigbee Temperatur und Humidity Sensor.
Er sendet
1. Batterie Wert
2. Temperatur
3. Humidity

Je nachdem wie ich die msg.payload ausgebe kommt forlgendes raus:


Msg.payload.battery Msg.payload.temperature Msg.payload.humidity
Msg payload 1 Gemessener wert Undefined Undefined
Msg payload 2 Undefined Gemessener wert Undefined
Msg payload 3 Undefined Undefined Gemessener wert



Die Drei Nachrichten kommen so schnell hintereinander weg und natürlich sehe ich dann nur den payload der Luftfeuchtigkeit in der Variablen.

Brauch dringen hilfe oder Tips wie ein DAU das berichtigen kann. Weiß echt nicht weiter.

Code: Alles auswählen

[{"id":"3f584ba1.5fbf54","type":"tab","label":"Flow 2","disabled":false,"info":""},{"id":"f9c32a80.0fdeb8","type":"zigbee-converter","z":"3f584ba1.5fbf54","shepherd":"14701c57.c1d804","name":"","topic":"zigbee/${name}","settopic":"zigbee/${name}/set","gettopic":"zigbee/${name}/get","device":"0xa4c138ef12078655","attribute":"","payload":"json","x":420,"y":400,"wires":[["c12a3e67.df648","a8cfe2a.214d42","2b9237c1.3d9278","cfbbbbdd.7b09a8","75eff724.162238"]]},{"id":"c12a3e67.df648","type":"change","z":"3f584ba1.5fbf54","name":"","rules":[{"t":"move","p":"payload.temperature","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":760,"y":340,"wires":[["1fedcbfe.205354","ccbcf785.294fa8"]]},{"id":"a8cfe2a.214d42","type":"change","z":"3f584ba1.5fbf54","name":"","rules":[{"t":"move","p":"payload.humidity","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":750,"y":400,"wires":[["2f5d6d2a.1504e2","5b96132a.2d98ac"]]},{"id":"2b9237c1.3d9278","type":"change","z":"3f584ba1.5fbf54","name":"","rules":[{"t":"move","p":"payload.battery","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":740,"y":460,"wires":[["ce10f6e8.bbbd48","72f5f7cc.4bbbc8"]]},{"id":"cfbbbbdd.7b09a8","type":"function","z":"3f584ba1.5fbf54","name":"","func":"var h = Math.floor(msg.payload.humidity);\nvar t = Math.floor(msg.payload.temperature)|| 0;\nvar b = Math.floor(msg.payload.battery)|| 0;\nvar msg1 = { payload: t };\nvar msg2 = { payload: h };\nvar msg3 = {payload: b};\n   \nreturn [msg1, msg2, msg3];","outputs":3,"noerr":0,"initialize":"","finalize":"","x":780,"y":660,"wires":[[],[],[]]},{"id":"75eff724.162238","type":"function","z":"3f584ba1.5fbf54","name":"","func":"var h = msg.payload.humidity;\nvar t = msg.payload.temperature;\nvar b = msg.payload.battery; \n\nvar msg1 = { payload: t };\nvar msg2 = { payload: h };\nvar msg3 = { payload: b };\n   \nreturn [msg1, msg2, msg3];","outputs":3,"noerr":0,"initialize":"","finalize":"","x":770,"y":800,"wires":[[],[],[]]},{"id":"ce10f6e8.bbbd48","type":"debug","z":"3f584ba1.5fbf54","name":"b","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1270,"y":500,"wires":[]},{"id":"2f5d6d2a.1504e2","type":"debug","z":"3f584ba1.5fbf54","name":"h","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1270,"y":420,"wires":[]},{"id":"1fedcbfe.205354","type":"debug","z":"3f584ba1.5fbf54","name":"temp","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1270,"y":340,"wires":[]},{"id":"ccbcf785.294fa8","type":"ccu-sysvar","z":"3f584ba1.5fbf54","name":"T_HWR","ccuConfig":"38263145.35ea0e","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":1280,"y":300,"wires":[[]]},{"id":"5b96132a.2d98ac","type":"ccu-sysvar","z":"3f584ba1.5fbf54","name":"H_HWR","ccuConfig":"38263145.35ea0e","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":1280,"y":380,"wires":[[]]},{"id":"72f5f7cc.4bbbc8","type":"ccu-sysvar","z":"3f584ba1.5fbf54","name":"B_HWR","ccuConfig":"38263145.35ea0e","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":1280,"y":460,"wires":[[]]},{"id":"14701c57.c1d804","type":"zigbee-shepherd","name":"zigbee_Wohnzimmer","path":"/dev/ttyACM0","baudRate":"115200","rtscts":true,"channelList":[11],"led":"enabled","adapter":"zstack"},{"id":"38263145.35ea0e","type":"ccu-connection","name":"localhost","host":"localhost","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":false,"cuxdEnabled":true,"regaPoll":true,"regaInterval":"30","rpcPingTimeout":"60","rpcInitAddress":"127.0.0.1","rpcServerHost":"127.0.0.1","rpcBinPort":"2047","rpcXmlPort":"2048","tls":false,"inSecure":false,"authentication":false,"username":"","password":"","queueTimeout":"5000","queuePause":"250","contextStore":""}]
Dateianhänge
payload.JPG
_01.JPG

McPan
Beiträge: 222
Registriert: 29.11.2021, 07:04
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 12 Mal
Danksagung erhalten: 44 Mal

Re: CCU3 NodeRed Zigbee

Beitrag von McPan » 27.06.2022, 08:16

Moin,

habe keine ZigBee-Komponenten zum Testen, aber es sieht ja so aus, als wenn die Geräte-Nachrichten mit validen Daten hintereinander ankommen. Du kannst die "Change"-Nodes gegen einen "Switch"-Node tauschen und dort für die payload auf "has key" prüfen und diese auf die entsprechenden Ausgänge bzw. Systemvariablenzuweisungen verteilen.

Zum Testen habe ich hier manuelle Inject-Nodes mit den unterschiedlichen payloads vor den "Switch" gehängt und hinten dran nur "Debug"-Nodes.
flows2.png
flows1.png

Code: Alles auswählen

[
    {
        "id": "832cc6c5.71f24",
        "type": "switch",
        "z": "36e29d55.8c866a",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "hask",
                "v": "temperature",
                "vt": "str"
            },
            {
                "t": "hask",
                "v": "humidity",
                "vt": "str"
            },
            {
                "t": "hask",
                "v": "battery",
                "vt": "str"
            }
        ],
        "checkall": "false",
        "repair": false,
        "outputs": 3,
        "x": 630,
        "y": 1820,
        "wires": [
            [
                "20d1054a.8c8c72"
            ],
            [
                "fa5bbbb2.ee0668"
            ],
            [
                "406481c1.9d4358"
            ]
        ]
    },
    {
        "id": "20d1054a.8c8c72",
        "type": "debug",
        "z": "36e29d55.8c866a",
        "name": "temperature",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 840,
        "y": 1780,
        "wires": []
    },
    {
        "id": "fa5bbbb2.ee0668",
        "type": "debug",
        "z": "36e29d55.8c866a",
        "name": "humidity",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 850,
        "y": 1860,
        "wires": []
    },
    {
        "id": "406481c1.9d4358",
        "type": "debug",
        "z": "36e29d55.8c866a",
        "name": "battery",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 840,
        "y": 1940,
        "wires": []
    },
    {
        "id": "7c8ba918.3052d8",
        "type": "inject",
        "z": "36e29d55.8c866a",
        "name": "payload.temperature",
        "props": [
            {
                "p": "payload.temperature",
                "v": "20.0",
                "vt": "num"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "x": 430,
        "y": 1760,
        "wires": [
            [
                "832cc6c5.71f24"
            ]
        ]
    },
    {
        "id": "cf12c4e2.6b2838",
        "type": "inject",
        "z": "36e29d55.8c866a",
        "name": "payload.humidity",
        "props": [
            {
                "p": "payload.humidity",
                "v": "50.0",
                "vt": "num"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "x": 420,
        "y": 1800,
        "wires": [
            [
                "832cc6c5.71f24"
            ]
        ]
    },
    {
        "id": "5277df89.5427a",
        "type": "inject",
        "z": "36e29d55.8c866a",
        "name": "payload.battery",
        "props": [
            {
                "p": "payload.battery",
                "v": "90.0",
                "vt": "num"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "x": 420,
        "y": 1860,
        "wires": [
            [
                "832cc6c5.71f24"
            ]
        ]
    }
]
Gruß,
Marco
Grüße,
Marco

Elektrische Bauteile funktionieren mit Rauch. Der Beweis: tritt der Rauch aus, funktioniert das Bauteil nicht mehr!
Raspberrymatic @ RPi3b+, HmIP mit RPi-RF-MOD

MaWeWa
Beiträge: 5
Registriert: 06.03.2022, 11:42
System: CCU
Hat sich bedankt: 2 Mal

Re: CCU3 NodeRed Zigbee

Beitrag von MaWeWa » 27.06.2022, 20:31

Hi Marco,

super danke. Habe heute nicht viel Zeit zum Testen, läuft aber schon fast.
Brauche nach der Switch noch eine Change und dann kommen Werte an.
muss am Wochenende mal spielen.

Dann kann ich hier nochmal Infos geben.

Gruß Matt

McPan
Beiträge: 222
Registriert: 29.11.2021, 07:04
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 12 Mal
Danksagung erhalten: 44 Mal

Re: CCU3 NodeRed Zigbee

Beitrag von McPan » 28.06.2022, 19:48

Hallo Matt,

ja du hast natürlich auch recht. Da der SysVar-Node die Wertzuweisung direkt in der msg.payload erwartet, müsstest du die drei einzelnen Payload-Attribute für Temperatur, Feuchte und Batterie via Change-Nodes hinter den Switch-Node-Ausgängen noch umschreiben. Also so, wie du's bereits in deinem Versuch gemacht hast. Das sollte dann funktionieren.

Alternativ geht, statt der Kombination aus einmal Switch und dreimal Change auch ein passender Function-Node, s.u.

Code: Alles auswählen

[
    {
        "id": "e7ecb85c.4e2258",
        "type": "function",
        "z": "126e829d.a58f2d",
        "name": "",
        "func": "if ('temperature' in msg.payload) {\n    msg.payload = msg.payload.temperature;\n    return [msg, null, null];\n}\nif ('humidity' in msg.payload) {\n    msg.payload = msg.payload.humidity;\n    return [null, msg, null];\n}\nif ('battery' in msg.payload) {\n    msg.payload = msg.payload.battery;\n    return [null, null, msg];\n}\nreturn [null, null, null];\n",
        "outputs": 3,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 360,
        "y": 380,
        "wires": [
            [
                "c8fede52.c32b6"
            ],
            [
                "861bea8d.70702"
            ],
            [
                "f2ec0452.939438"
            ]
        ]
    },
    {
        "id": "c8fede52.c32b6",
        "type": "debug",
        "z": "126e829d.a58f2d",
        "name": "temperature",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 550,
        "y": 360,
        "wires": []
    },
    {
        "id": "861bea8d.70702",
        "type": "debug",
        "z": "126e829d.a58f2d",
        "name": "humidity",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 560,
        "y": 440,
        "wires": []
    },
    {
        "id": "f2ec0452.939438",
        "type": "debug",
        "z": "126e829d.a58f2d",
        "name": "battery",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 550,
        "y": 520,
        "wires": []
    },
    {
        "id": "2215b81f.b89438",
        "type": "inject",
        "z": "126e829d.a58f2d",
        "name": "payload.temperature",
        "props": [
            {
                "p": "payload.temperature",
                "v": "20.0",
                "vt": "num"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "x": 150,
        "y": 320,
        "wires": [
            [
                "e7ecb85c.4e2258"
            ]
        ]
    },
    {
        "id": "c7f4467f.4518e",
        "type": "inject",
        "z": "126e829d.a58f2d",
        "name": "payload.humidity",
        "props": [
            {
                "p": "payload.humidity",
                "v": "50.0",
                "vt": "num"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "x": 140,
        "y": 360,
        "wires": [
            [
                "e7ecb85c.4e2258"
            ]
        ]
    },
    {
        "id": "f71d4ee0.235278",
        "type": "inject",
        "z": "126e829d.a58f2d",
        "name": "payload.battery",
        "props": [
            {
                "p": "payload.battery",
                "v": "90.0",
                "vt": "num"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "x": 140,
        "y": 420,
        "wires": [
            [
                "e7ecb85c.4e2258"
            ]
        ]
    }
]


Beispiel wieder nur mit manuellen Inject-Nodes am Eingang und Debug-Nodes am Ausgang.

Gruß,
Marco
Grüße,
Marco

Elektrische Bauteile funktionieren mit Rauch. Der Beweis: tritt der Rauch aus, funktioniert das Bauteil nicht mehr!
Raspberrymatic @ RPi3b+, HmIP mit RPi-RF-MOD

MaWeWa
Beiträge: 5
Registriert: 06.03.2022, 11:42
System: CCU
Hat sich bedankt: 2 Mal

Re: CCU3 NodeRed Zigbee

Beitrag von MaWeWa » 29.06.2022, 20:17

Hi Marco,

Super vielen Dank hat mir gestern keine Ruhe mehr gelassen mit der Switch Node hat es Perfekt geklappt
Musste die aber die Systemvariablen in der CCU einfach nochmal löschen neu erstellen und neu in Node Red einbinden erst danach
klappte es warum auch immer. Gleicher Name der Variable und alles identisch. Mir soll es egal sein jetzt läuft alles

Die Funktion geht auch in meiner Version fehlte "Return [msg, null, null];" deshalb sind auch die zwei undefined durch.

Nochmal Vielen Dank

Antworten

Zurück zu „RedMatic“