Hey,
versuch mal das hier:
[{"id":"ac99b5b05abe5bfe","type":"inject","z":"d7541481519af74d","name":"true","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"true","payloadType":"bool","x":870,"y":660,"wires":[["8b5c7a3c16c40fc2"]]},{"id":"23d87658fb48e428","type":"inject","z":"d7541481519af74d","name":"false","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"false","payloadType":"bool","x":870,"y":700,"wires":[["8b5c7a3c16c40fc2"]]},{"id":"6cec84b33532a098","type":"ui_slider","z":"d7541481519af74d","name":"","label":"slider","tooltip":"","group":"4229bceb.57ece4","order":2,"width":0,"height":0,"passthru":true,"outs":"all","topic":"topic","topicType":"msg","min":0,"max":"100","step":1,"x":1970,"y":700,"wires":[["6799ee9ec22ff987"]]},{"id":"4dbe60385a046c44","type":"trigger","z":"d7541481519af74d","name":"","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"-250","extend":false,"overrideDelay":false,"units":"ms","reset":"false","bytopic":"all","topic":"topic","outputs":1,"x":1630,"y":700,"wires":[["e6435cfb7e32baf5"]]},{"id":"e6435cfb7e32baf5","type":"function","z":"d7541481519af74d","name":"long push","func":"if (flow.get(\"timer\") == \"stop\") {\n return null\n}\n\n//if dimmer > 50 then dim down\nif (flow.get(\"dimmer0_state\") >= 50) {\n if (global.get(\"dimmer0\") <= 0) {\n global.set(\"dimmer0\", 0)\n }\n else { global.set(\"dimmer0\", global.get(\"dimmer0\")-7.5)}\n}\n//if dimmer < 50 then dim up\nelse if (flow.get(\"dimmer0_state\") < 50) {\n if (global.get(\"dimmer0\") >= 100) {\n global.set(\"dimmer0\", 100)\n }\n else { global.set(\"dimmer0\", global.get(\"dimmer0\")+7.5)}\n}\nmsg.payload = global.get(\"dimmer0\")\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1820,"y":700,"wires":[["6cec84b33532a098"]]},{"id":"8b5c7a3c16c40fc2","type":"function","z":"d7541481519af74d","name":"get true/false","func":"flow.set(\"dimmer0_state\", Number(global.get(\"dimmer0\")))\n\nif (msg.payload == true) {\n msg.time = Date.now()\n msg.topic = \"start\"\n flow.set(\"timer\", \"start\")\n}\nif (msg.payload == false) {\n msg.time = Date.now()\n msg.topic = \"stop\"\n flow.set(\"timer\", \"stop\")\n}\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1030,"y":680,"wires":[["8c23a4213e9f3f0c"]]},{"id":"6799ee9ec22ff987","type":"debug","z":"d7541481519af74d","name":"debug 11","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":2120,"y":700,"wires":[]},{"id":"8c23a4213e9f3f0c","type":"join","z":"d7541481519af74d","name":"long/short push?","mode":"custom","build":"object","property":"time","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"1","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":1210,"y":680,"wires":[["b5d31f390e917e80"]]},{"id":"b5d31f390e917e80","type":"function","z":"d7541481519af74d","name":"short/long push","func":"if (msg.time.hasOwnProperty(\"start\") && msg.time.hasOwnProperty(\"stop\") && msg.topic == \"stop\") {\n return [msg, null]\n}\nelse if (msg.topic == \"start\") { \n return [null, msg]\n}\nelse if (msg.topic == \"stop\") { \n msg.payload = false\n return [null, msg]\n}","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1400,"y":680,"wires":[["33ade699c1b8d5f1"],["4dbe60385a046c44"]]},{"id":"33ade699c1b8d5f1","type":"function","z":"d7541481519af74d","name":"short push","func":"msg.payload = (global.get(\"dimmer0\") > 0 ? 0 : 50)\nglobal.set(\"dimmer0\", msg.payload)\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1810,"y":660,"wires":[["6cec84b33532a098"]]},{"id":"4229bceb.57ece4","type":"ui_group","name":"Zigbee","tab":"b128bba3.f99e38","order":5,"disp":true,"width":"6","collapse":false},{"id":"b128bba3.f99e38","type":"ui_tab","name":"Einstellungen","icon":"dashboard","order":6,"disabled":false,"hidden":false}]
Mit den Injects am Anfang hab ich true oder false, das von den MCPs kommt emuliert. Dann wird über die join Node geprüft, ob true und false innerhalb von einer Sekunde gekommen sind, dann gehe ich von einem Short push aus und setze den Slider (Dimmer) entweder auf 0 wenn er an ist, oder auf 50 wenn er aus ist.
Bei einem Long Push, also länger als eine Sekunde, werden dem Dimmerwert alle 250ms 7,5 hinzu addiert oder abgezogen, bis er entweder auf 100 oder auf 0 steht. Oder ein false kommt.
Gut möglich, dass true und false noch getauscht werden müssen. Aber ich denke das könnte ein guter Ansatz sein