Moin,
kannst du im backend einfach umsetzen.
Hab hier noch eine Funktion für einen Taster gebaut, der zwischen lang und kurz unterscheidet.
Damit hab ich 2 Ausgänge, sprich 2 Relays die man schalten kann mit einem Taster.
Bei mir habe ich den Input 2 genommen und gehe mit kurzen druck auf Relay 5 und mit langen druck auf ein Wireless Relay 2. Hier mein Code:
[{"id":"b0d41d4b2b96b160","type":"function","z":"d8be6ba2a43f7c48","g":"6534c8572f823597","name":"input 2 Short/Long Push","func":"let timestamp = Date.now(); // Aktuellen Zeitstempel erhalten\nlet lastPushTime2 = context.get('lastPushTime2') || 0;\n\nlet pressDuration = timestamp - lastPushTime2; //Zeitdifferenz\n\nif (msg.payload.input === 2) { // Input 2\n if (msg.payload.status === true) {\n // Taste gedrückt\n context.set('lastPushTime2', timestamp);\n msg.payload.type = 'Press started'; // Taste gedrückt\n } else if (msg.payload.status === false) {\n // Taste losgelassen\n if (pressDuration <= 1000) {\n // Kurz Push erkannt\n msg.payload.type = 'Short Push';\n return [msg, null]; //ersten Ausgang\n } else if (pressDuration > 1000) {\n // Long Push erkannt\n msg.payload.type = 'Long Push';\n return [null, msg]; //zweiten Ausgang\n }\n }\n}\n\nreturn [null, null];","outputs":2,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":350,"y":1520,"wires":[["834dbdcbfde4673b"],["302991f09b7b3288"]]},{"id":"8a57109ada5726f2","type":"mqtt in","z":"d8be6ba2a43f7c48","g":"6534c8572f823597","name":"","topic":"pkw/tele/input","qos":"2","datatype":"auto-detect","broker":"0ddb07c65cbb68bc","nl":false,"rap":true,"rh":0,"inputs":0,"x":130,"y":1560,"wires":[["762ed117e2f8ec45","1f94cd6a0ee719c5","b0d41d4b2b96b160"]]},{"id":"302991f09b7b3288","type":"http request","z":"d8be6ba2a43f7c48","g":"6534c8572f823597","name":"wRelay 2 (Boiler)","method":"PUT","ret":"txt","paytoqs":"ignore","url":"http://127.0.0.1:1880/toggle/wrelay/2","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":670,"y":1540,"wires":[[]]},{"id":"834dbdcbfde4673b","type":"http request","z":"d8be6ba2a43f7c48","g":"6534c8572f823597","name":"Relay 5 (Pumpe)","method":"PUT","ret":"txt","paytoqs":"ignore","url":"http://127.0.0.1:1880/toggle/relay/5","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":670,"y":1500,"wires":[[]]},{"id":"0ddb07c65cbb68bc","type":"mqtt-broker","name":"","broker":"http://localhost","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"sessionExpiry":""}]
Wenn du das alles in einen Tab machst der userflow heißt, bleibt es bei einem Online Update erhalten