Ubidots accepts HTTP, MQTT, TCP and UDP payloads. To learn how to send data using each one of these protocols, please refer to our Data API documentation.
In theory, you can program a device to act based on changes of an Ubidots variable. This could be done by either polling the cloud at periodic time intervals, or by subscribing to a variable using MQTT.
In practice, we only recommend using downlink commands to push configurations to remote devices, or better said, to perform "Virtual controls". The problem with physical controls is that, even though they are technically possible, they pose a huge risk when communication fails.
See some examples of Virtual vs Physical controls:
👍 Virtual controls
⚠️ Physical controls