rdmtc / node-red-contrib-ccu

Node-RED Nodes for the Homematic CCU
https://flows.nodered.org/node/node-red-contrib-ccu
MIT License
70 stars 13 forks source link

HmIP-BSL 2.0.2 & Signal Node: Color Behaviour missing #177

Open TinkyWonky opened 5 months ago

TinkyWonky commented 5 months ago

Using the Signal node to turn on an LED does no longer it turn.

Sample flow export

[
    {
        "id": "31d7f76a8222d74d",
        "type": "inject",
        "z": "acac681abde14c62",
        "name": "true",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "true",
        "payloadType": "bool",
        "x": 1490,
        "y": 640,
        "wires": [
            [
                "cbba72f66ab52c73"
            ]
        ]
    },
    {
        "id": "cbba72f66ab52c73",
        "type": "ccu-signal",
        "z": "acac681abde14c62",
        "name": "EG Status Außenverbraucher:12",
        "iface": "HmIP-RF",
        "channel": "001A5A4998C688:12",
        "chime": "",
        "length": 108000,
        "repeat": 1,
        "repeatType": "num",
        "volume": 100,
        "volumeType": "num",
        "line1": "",
        "line2": "",
        "line3": "",
        "signal": "",
        "channelType": "BSL_DIMMER_VIRTUAL_RECEIVER",
        "led": "",
        "acousticAlarmSelection": "DISABLE_ACOUSTIC_SIGNAL",
        "durationUnit": "H",
        "durationValue": "512",
        "durationValueType": "num",
        "rampTimeUnit": "S",
        "rampTimeValue": "1",
        "rampTimeValueType": "num",
        "repetitions": 0,
        "dimmerColor": "4",
        "dimmerLevel": "50",
        "dimmerList": [],
        "soundLevel": 50,
        "soundLevelType": "num",
        "soundList": [],
        "opticalAlarmSelection": "DISABLE_OPTICAL_SIGNAL",
        "ccuConfig": "6d082edf457e16b6",
        "x": 1790,
        "y": 680,
        "wires": []
    },
    {
        "id": "6d082edf457e16b6",
        "type": "ccu-connection",
        "name": "Raspberrymatic",
        ...
    }
]

Firmware 2.0.2 introduced a new datapoint "COLOR_BEHAVIOUR", see HomeMatic Forum Thread. dom.GetObject("HmIP-RF.xxxxxxxxxxxxxx:8.COMBINED_PARAMETER").State (if used) shall now contain ,CB=x with x in

0=OFF, 1=ON, 2=BLINKING_SLOW, 3=BLINKING_MIDDLE, 4=BLINKING_FAST, 5=FLASH_SLOW, 6=FLASH_MIDDLE, 7=FLASH_FAST, 8=BILLOW_SLOW, 9=BILLOW_MIDDLE, 10=BILLOW_FAST, 11?=OLD_VALUE, 12?=DO_NOT_CARE

Apparently, the node does not include this parameter and the device understands it as "0/OFF". Even if the behaviour is manually set to !=0, the node's command makes the device switch the LED off.

Switching manually to "1/ON", the device sends a message indicating that the default parameter is indeed "off":

{
"topic":"172.22.1.1/HmIP-RF/EG Status Außenverbraucher:12/COLOR_BEHAVIOUR",
"payload":1,
"ccu":"172.22.1.1",
"iface":"HmIP-RF",
"device":"001A5A4998C688",
"deviceName":"EG Status Außenverbraucher",
"deviceType":"HmIP-BSL",
"channel":"001A5A4998C688:12",
"channelName":"EG Status Außenverbraucher:12",
"channelType":"DIMMER_VIRTUAL_RECEIVER",
"channelIndex":12,
"datapoint":"COLOR_BEHAVIOUR",
"datapointName":"HmIP-RF.001A5A4998C688:12.COLOR_BEHAVIOUR",
"datapointType":"ENUM",
"datapointMin":"OFF",
"datapointMax":"DO_NOT_CARE",
"datapointDefault":"OFF",
"datapointControl":"DIMMER.COLOR_BEHAVIOUR",
"value":1,
"valuePrevious":1,
"valueStable":1,
"rooms":[],
"functions":   [],
"ts":1719253061541,
"tsPrevious":1719253061465,
"lc":1719253061465,
"change":false,
"cache":false,
"uncertain":false,
"stable":true,
"_msgid":"774c9bccb70739bb"
}

andesse commented 5 months ago

Use a combined Parameter in the Node. The picture shows a combined Parameter in change nodes I am using for red. Use it as a reference. To turn it off use the Color Parameter in a seperate Node and Set it to 0.

Does this help with your Problem?

Ps: You can test his a combined Parameter should Look Like in the ccu - new program. Use there also combined Parameter and you get a menue. After you Set it up, it is displayed as Text.

image

TinkyWonky commented 5 months ago

This absolutely helps and is a useful workaround!

Workaround flow

[
    {
        "id": "a3691aa6866b7f2e",
        "type": "change",
        "z": "acac681abde14c62",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "L=50,C=4,DV=31,DU=2,CB=1",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1670,
        "y": 1200,
        "wires": [
            [
                "286bb1510ce00afb"
            ]
        ]
    },
    {
        "id": "f32ea73a5915628b",
        "type": "inject",
        "z": "acac681abde14c62",
        "name": "",
        "props": [],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "x": 1510,
        "y": 1200,
        "wires": [
            [
                "a3691aa6866b7f2e"
            ]
        ]
    },
    {
        "id": "286bb1510ce00afb",
        "type": "ccu-value",
        "z": "acac681abde14c62",
        "name": "",
        "iface": "HmIP-RF",
        "channel": "001A5A4998C688:12 EG Status Außenverbraucher:12",
        "datapoint": "COMBINED_PARAMETER",
        "mode": "",
        "start": true,
        "change": true,
        "cache": false,
        "queue": false,
        "on": 0,
        "onType": "undefined",
        "ramp": 0,
        "rampType": "undefined",
        "working": false,
        "ccuConfig": "6d082edf457e16b6",
        "topic": "${CCU}/${Interface}/${channel}/${datapoint}",
        "x": 1910,
        "y": 1200,
        "wires": [
            []
        ]
    },
    {
        "id": "6d082edf457e16b6",
        "type": "ccu-connection",
        "name": "Raspberrymatic",
        "host": "172.22.1.1",
        "regaEnabled": true,
        "bcrfEnabled": true,
        "iprfEnabled": true,
        "virtEnabled": true,
        "bcwiEnabled": false,
        "cuxdEnabled": true,
        "regaPoll": true,
        "regaInterval": "30",
        "rpcPingTimeout": "60",
        "rpcInitAddress": "",
        "rpcServerHost": "172.22.2.41",
        "rpcBinPort": "2048",
        "rpcXmlPort": "2049",
        "tls": false,
        "inSecure": false,
        "authentication": false,
        "username": "",
        "password": "",
        "queueTimeout": "5000",
        "queuePause": "250",
        "contextStore": "memory"
    }
]

On the other hand, it would be great to achieve this with the dedicated Signal node. ;-)

andesse commented 5 months ago

Try it out, maybe it works.

I did it this way because I also use different brightness Levels at specific day-times and set it with the LEVEL parameter.

So deactivating the color worked for me best cause the brightness can stay at the same level.

But great that it works:)