# Technical FAQs

### How to send data to Ubidots?

Ubidots accepts [HTTP](https://docs.ubidots.com/v1.6/reference/http), [MQTT](https://docs.ubidots.com/v1.6/reference/mqtt), [TCP](https://docs.ubidots.com/v1.6/reference/tcp-udp), and [UDP](https://docs.ubidots.com/v1.6/reference/tcp-udp) payloads. To learn how to send data using each of these protocols, refer to our [Data API documentation](https://docs.ubidots.com/v1.6/reference/welcome).

{% embed url="<https://docs.ubidots.com/v1.6/reference/welcome>" %}

### Can I control a device using Ubidots?

In theory, you can program a device to act based on changes to an Ubidots variable. You can do this either by polling the cloud at regular intervals or by [subscribing to a variable using MQTT](https://docs.ubidots.com/v1.6/reference/subscribe).

In practice, we only recommend using downlink commands to push configurations to remote devices, or, put differently, to perform "virtual controls." Physical controls are technically possible, but they pose a major risk when communication fails.

See some examples of virtual versus physical controls:

| Control Type         | Examples                                                                                                                                                                                                                                                                                        |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 👍 Virtual controls  | <ul><li>Change the update frequency of a device.</li><li>Reboot a device remotely.</li><li>Command a device to download new firmware from a specific URL.</li></ul>                                                                                                                             |
| ⚠️ Physical controls | <ul><li>Open or close a water valve. <strong>DANGER: If the "close" command is not received, a flood might occur.</strong></li><li>Start or stop a production line. <strong>DANGER: If the "start" command is received during a maintenance window, an accident might occur.</strong></li></ul> |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dev.ubidots.com/getting-started/technical-faqs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
