As Node-RED is accessing the data layer, just send the corresponding project ID, like mentioned above, to the path "smartfunctionkit/communication/cmd/changeprogram".
See Node-RED example code:
[{"id":"17a3602f8f96374c","type":"ctrlx-datalayer-request","z":"a4ae14cc47a2173c","device":"2739e1940fb53718","method":"WRITE","path":"smartfunctionkit/communication/cmd/changeprogram","payloadFormat":"value_type","name":"","x":900,"y":280,"wires":[[]]},{"id":"6a87077de3d35b10","type":"inject","z":"a4ae14cc47a2173c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":400,"y":280,"wires":[["10bf744b5b089955"]]},{"id":"10bf744b5b089955","type":"function","z":"a4ae14cc47a2173c","name":"","func":"var newMsg = {}\nnewMsg.payload = { \"type\": \"string\", \"value\": \"ea073ff6-181d-4fa9-9de2-5b65f4226cd6\" }\nreturn newMsg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":560,"y":280,"wires":[["17a3602f8f96374c"]]},{"id":"2739e1940fb53718","type":"ctrlx-config","name":"boschrexroth","hostname":"localhost","debug":false}]
For further examples you can have a look to the node-red-contrib-ctrlx-automation pallette on github. It is also included in the ctrlX OS - Node-RED app.
... View more