Help Center link on how to control file transfers from the edge client using the EdgeControlled ThingShape.
The EdgeControlled ThingShape is a default entity included with ThingWorx that allows you to manage the amount of egress being sent from the platform to the Edge.
At the time of writing this post, the available 'When Disconnected' settings for a remotely bound property in ThingWorx are 'Fold' and 'Ignore'. Setting a property to 'Fold' while using this EdgeControlled ThingShape is necessary whether the device is connected all the time or only for brief updates.
To use this ThingShape in a real world scenario you might code your edge client to invoke the DequeueEgress REST API function available through this ThingShape. The parameter you pass in is then the number of messages you would like the client to receive. The result of this function is how many messages the platform then actually sent.
A quick setup:
1. Create a RemoteThing entity in ThingWorx
2. Create an ApplicationKey entity in ThingWorx
3. Setup an edge client to bind to that RemoteThing using the specified ApplicationKey
4. Manage Bindings on the Properties page of the RemoteThing, and pull in a few properties you would like to send property updates to
5. Set the 'When Disconnected' value to 'Fold' for each property you want to queue messages for
5a. Set any other settings on the properties you'd like; ie. persistence, logged
6. Save the Thing
7. Add the EdgeControlled ThingShape to the Thing
8. Save the Thing
9. Update property values, see exceptions thrown, but the value will be queued
10. Invoke DequeueEgress on the RemoteThing, with the number of messages to send to the edge client passed in as the parameter value
10a. Notice 'Fold' means only the last value set for a property will be sent to the edge client. There is currently no retention available for any values previously set to the property and stored as the message to be sent. Those values are lost upon a new value coming in before it's dequeued.
11. Verify the edge client has received the expected egress, and the return result of the DequeueEgress function was the expected # of messages sent.