I have created a client / server architecture to manage IoT devices that is based on Node-Red and the ZeeBe workflow engine for microservices. Everything is running in docker containers on kube.
The IoT Gateways (clients) are running node-red in headless mode and I use the Admin API to push the flows.json file to each client using ZeeBe worker microservices. The node-red IDE (server) is used to create the flows, but I cannot identify a way to trigger the update configuration workflow. When a configuration is changed then I will use the Admin API to get the configuration, save it in an s3 object store and then push it to the gateways.
I have thought of creating a file system watcher on the IDE server to monitor for change events and then use a HTTP post method to start the update configuration workflow.
I am interested in your ideas to help solve this challenge and appreciate any help that you can provide.
Well that sounds like a bit of a Rube Goldberg device...
config change -> get /flows -> save in S3 -> file watcher -> http post -> generate new flows -> post /flows to iot devices
Can you describe in detail what the "configuration change" event is, who or what is making the change, where the changed config data lives, and what technology you want to use to detect that the change occurred?
I've used node-red flows to generate flows for worker devices -- very cool when it all works! So yes, it should indeed be possible. The devil will be in the details, I'm afraid.
I sat down this morning and looked a way to simplify the design, so I no longer need to trigger an event when a new node-red flow is created. Instead, we decided the the Node-Red IDE as a standalone modeller, which will be used to create the base IoT flows using environment variables. We will use the projects feature to commit these to our source code repository.
The ZeeBe workflows will be used to onboard IoT devices to the gateways and part of the sequence will be to replace the variables in the Node-red flows for example; the device details IP, Name, credentials or token etc. I have over 250k devices to manage, so needed to invest in automation as much as possible, but integrating a designer was too much.