Flow Wired Dimmer - rdmtc/RedMatic GitHub Wiki
Title: Wired Dimmer mit RF Tasten steuern Category: Beispiel Flows
Bidcos-Wired Dimmer mit Bidcos-RF Tasten steuern
Da sich Bidcos-Wired Dimmer nicht mit Funk-Fernbedienungen/Tastern Verknüpfen lassen ist es von Haus aus nicht möglich über langen Tastendruck auf und ab zu dimmen. Eine Lösung für dieses Problem ist die Verwendung von Direktverknüpfungen zwischen virtuellen Wired Tasten und den Dimmern die dann über die PRESS_CONT
Events von Bidcos-RF Tasten angesteuert werden. Sollte es sich bei dem Taster bzw. der Fernbedienung um ein HmIP Gerät handeln ist zu beachten dass es kein PRESS_CONT
Event mehr gibt, HmIP sendet aber den PRESS_LONG
Event wiederholt, also einfach PRESS_LONG
anstelle PRESS_CONT
verwenden.
Weitere wichtige Informationen zu den PRESS_CONT
Events siehe: https://github.com/rdmtc/RedMatic/wiki/Faq#Tastendruck-erzeugt-keine-Events
Direktverknüpfungen mit virtuellen Tasten
Zuerst müssen entsprechende Direktverknüpfungen angelegt werden, es ist jeweils eine virtuelle Taste für das hoch- und eine für das runter-dimmen notwendig:
In den Verknüpfungsprofil ist auf kurzen Tastendruck das an- bzw ausschalten konfiguriert, ein langer Tastendruck Dimmt um 3% hoch bzw. runter:
Node-RED Flow
Der Flow der nun diese virtuellen Tasten "bedient" besteht aus 4 Nodes, einem RPC Event
Node der alle BidCos-RF PRESS_*
Events abonniert, einem Function
Node der die Zuordnung der RF-Tasten zu den Wired-Verknüpfungen beinhaltet, einem Throttle
Node (muss nachinstalliert werden: https://flows.nodered.org/node/node-red-contrib-throttle) der die Anzahl der Tastendrücke auf ~3 pro Sekunde limitiert und einem Value
Node der schlussendlich den Tastendruck an den Wired-Schnittstellenprozess sendet.
CCU RPC Event Node
Es wird eine Filterung des Datenpunkts über einen Regulären Ausdruck vorgenommen um Events aller Datenpunkte zu erhalten die mit PRESS_
beginnen
Function Node
const map = {
'Displaytaster Säule:7': 'Licht Esstisch DimDown',
'Displaytaster Säule:8': 'Licht Esstisch DimUp',
'Displaytaster Säule:9': 'Licht Küche DimDown',
'Displaytaster Säule:10': 'Licht Küche DimUp',
"Displaytaster Säule:11": "Licht Wohnzimmer DimDown",
"Displaytaster Säule:12": "Licht Wohnzimmer DimUp",
"RC19:3": "Licht Wohnzimmer DimDown",
"RC19:4": "Licht Wohnzimmer DimUp",
'RC19:5': 'Licht Esstisch DimDown',
'RC19:6': 'Licht Esstisch DimUp',
'RC19:7': 'Licht Küche DimDown',
'RC19:8': 'Licht Küche DimUp',
'RC19:11': 'Licht Treppenhaus DimDown',
'RC19:12': 'Licht Treppenhaus DimUp'
};
if (map[msg.channelName] && msg.datapoint.startsWith('PRESS_')) {
let datapoint = msg.datapoint;
if (datapoint === 'PRESS_CONT') {
datapoint = 'PRESS_LONG';
}
msg = Object.assign({datapoint, payload: true}, {channelName: map[msg.channelName]});
return msg;
}
Throttle Node
CCU Value Node
Flow JSON
[{"id":"58073bb7.f13654","type":"tab","label":"Wired Dimmer","disabled":false,"info":""},{"id":"4e9d1e2e.351c2","type":"function","z":"58073bb7.f13654","name":"Mapping","func":"const map = {\n 'Displaytaster Säule:7': 'Licht Esstisch DimDown',\n 'Displaytaster Säule:8': 'Licht Esstisch DimUp',\n 'Displaytaster Säule:9': 'Licht Küche DimDown',\n 'Displaytaster Säule:10': 'Licht Küche DimUp',\n \"Displaytaster Säule:11\": \"Licht Wohnzimmer DimDown\",\n \"Displaytaster Säule:12\": \"Licht Wohnzimmer DimUp\",\n \"RC19:3\": \"Licht Wohnzimmer DimDown\",\n \"RC19:4\": \"Licht Wohnzimmer DimUp\",\n 'RC19:5': 'Licht Esstisch DimDown',\n 'RC19:6': 'Licht Esstisch DimUp',\n 'RC19:7': 'Licht Küche DimDown',\n 'RC19:8': 'Licht Küche DimUp',\n 'RC19:11': 'Licht Treppenhaus DimDown',\n 'RC19:12': 'Licht Treppenhaus DimUp'\n};\n \nif (map[msg.channelName] && msg.datapoint.startsWith('PRESS_')) {\n let datapoint = msg.datapoint;\n if (datapoint === 'PRESS_CONT') {\n datapoint = 'PRESS_LONG';\n }\n if (msg.deviceType === 'HM-RC-19-SW' && datapoint === 'PRESS_LONG_RELEASE') {\n datapoint = 'PRESS_LONG';\n }\n\n msg = Object.assign({datapoint, payload: true}, {channelName: map[msg.channelName]});\n\n \n return msg;\n}\n\n","outputs":1,"noerr":0,"x":380,"y":200,"wires":["9b70f0e3.0fd94"](/rdmtc/RedMatic/wiki/"9b70f0e3.0fd94")},{"id":"3a48b857.604a68","type":"ccu-rpc-event","z":"58073bb7.f13654","name":"BidCos-RF PRESS_*","iface":"BidCos-RF","ccuConfig":"38263145.35ea0e","rooms":"","roomsRx":"str","functions":"","functionsRx":"str","device":"","deviceRx":"str","deviceName":"","deviceNameRx":"str","deviceType":"","deviceTypeRx":"str","channel":"","channelRx":"str","channelName":"","channelNameRx":"str","channelType":"","channelTypeRx":"str","datapoint":"^PRESS_.*","datapointRx":"re","change":false,"working":false,"cache":false,"topic":"${CCU}/${Interface}/${channelName}/${datapoint}","x":250,"y":140,"wires":["4e9d1e2e.351c2"](/rdmtc/RedMatic/wiki/"4e9d1e2e.351c2")},{"id":"8477b989.505c08","type":"ccu-value","z":"58073bb7.f13654","name":"BidCos-Wired","iface":"BidCos-Wired","channel":"","datapoint":"","mode":"","start":true,"change":true,"cache":false,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":false,"ccuConfig":"38263145.35ea0e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":620,"y":320,"wires":[](/rdmtc/RedMatic/wiki/)},{"id":"9b70f0e3.0fd94","type":"_throttle","z":"58073bb7.f13654","name":"","nbWaitUnits":"300","waitUnits":"milliseconds","leading":true,"trailing":false,"x":490,"y":260,"wires":["8477b989.505c08"](/rdmtc/RedMatic/wiki/"8477b989.505c08")},{"id":"38263145.35ea0e","type":"ccu-connection","z":"","name":"localhost","host":"localhost","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":true,"cuxdEnabled":false,"regaPoll":true,"regaInterval":"30","rpcPingTimeout":"60","rpcInitAddress":"127.0.0.1","rpcServerHost":"127.0.0.1","rpcBinPort":"2047","rpcXmlPort":"2048","contextStore":""}]