# Режим OTA

* ## ОТА <a href="#ota" id="ota"></a>

  Blynk поддерживает беспроводные обновления для таких плат как: ESP8266, NodeMCU и SparkFun Blynk. OTA пока поддерживается только для локальных серверов.

### Как это работает? <a href="#ota-how-does-it-work" id="ota-how-does-it-work"></a>

* Вам нужно использовать [обычный скетч для экспортированных приложений](https://github.com/blynkkk/blynk-library/tree/v0.6.1/examples/Blynk.Inject/Template_ESP8266) ;
* После того, как вы запустили свое оборудование, вы готовы к OTA;
* Вы можете запустить обновление прошивки для конкретного оборудования с помощью его [токена ](https://wiki.blynk.su/blynk-legacy/pages/S74rTuiYke9cWffAcOPm#4.-token-avtorizacii)или для всего оборудования.

#### Поток <a href="#ota-how-does-it-work-flow" id="ota-how-does-it-work-flow"></a>

1. Пользователь с правами администратора запускает OTA с помощью одного из HTTPS-запросов;
2. Пользователь предоставляет в HTTPS-запросе учетные данные администратора и двоичный файл встроенного ПО для обновления оборудования;
3. Когда оборудование подключается к серверу - сервер проверяет его прошивку. В случае, если дата сборки прошивки оборудования отличается от загруженной прошивки, сервер отправляет аппаратному обеспечению специальную команду с URL-адресом новой прошивки;
4. Получение URL-адреса новой версии прошивки с помощью [обработчика](https://github.com/blynkkk/blynk-library/blob/v0.6.1/examples/Blynk.Inject/Template_ESP8266/OTA.h): &#x20;

   ```clike
      BLYNK_WRITE(InternalPinOTA) {
       // Получение ссылки на файл прошивки
       // Пример: http://localhost:8080/static/ota/FUp_2441873656843727242_upload.bin
       overTheAirURL = param.asString();
       ...
     }
   ```
5. Оборудование загружает новую прошивку и начинает обновление

### Примеры команд <a href="#ota-trigger-update-for-the-specific-hardware" id="ota-trigger-update-for-the-specific-hardware"></a>

#### Запустить обновление для конкретного оборудования <a href="#ota-trigger-update-for-the-specific-hardware" id="ota-trigger-update-for-the-specific-hardware"></a>

```
curl -v -F file=@Template_ESP8266.ino.nodemcu.bin --insecure -u admin@blynk.cc:admin https://localhost:9443/admin/ota/start?token=123
```

* `Template_ESP8266.ino.nodemcu.bin`- относительный (или полный) путь к вашей прошивке;
* `--insecure`флаг для серверов с самогенерируемыми сертификатами. Вам не нужен этот флаг, если вы использовали Let's Encrypt или другие доверенные сертификаты;
* `admin@blynk.cc:admin`учетные данные администратора на вашем сервере. Это значения по умолчанию. Формат `username:password`. Вы можете изменить его в `server.properties`файле;
* [`token`](https://wiki.blynk.su/blynk-legacy/pages/S74rTuiYke9cWffAcOPm#4.-token-avtorizacii)— это идентификатор вашего оборудования, к которому вы хотите применить обновление прошивки. [Обновление прошивки будет запущено только в том случае, если устройство находится в сети](#user-content-fn-1)[^1];

#### Запустить обновление всех устройств  <a href="#ota-trigger-ota-for-all-devices" id="ota-trigger-ota-for-all-devices"></a>

Обновление для всех устройств будет запущено только при их подключении к локальному серверу.&#x20;

```
curl -v -F file=@Template_ESP8266.ino.nodemcu.bin --insecure -u admin@blynk.cc:admin https://localhost:9443/admin/ota/start
```

В этом случае OTA сработает сразу после подключения устройства к серверу. Если устройство подключено к сети, обновление прошивки будет инициировано только после повторного подключения устройства.

#### Запустить обновление для конкретного пользователя <a href="#ota-trigger-ota-for-the-specific-user" id="ota-trigger-ota-for-the-specific-user"></a>

В этом случае обновление прошивки будет запущено для всех устройств указанного пользователя.

```
curl -v -F file=@Template_ESP8266.ino.nodemcu.bin --insecure -u admin@blynk.cc:admin https://localhost:9443/admin/ota/start?user=pupkin@gmail.com
```

#### Запустить обновление для конкретного проекта пользователя <a href="#ota-trigger-ota-for-specific-user-and-project" id="ota-trigger-ota-for-specific-user-and-project"></a>

В этом случае обновление прошивки будет запущено для всех устройств указанного пользователя в рамках указанного проекта.

```
curl -v -F file=@Template_ESP8266.ino.nodemcu.bin --insecure -u admin@blynk.cc:admin https://localhost:9443/admin/ota/start?user=pupkin@gmail.com&project=123
```

#### Остановить обновление <a href="#ota-stop-ota" id="ota-stop-ota"></a>

```
curl -v --insecure -u admin@blynk.cc:admin https://localhost:9443/admin/ota/stop
```

### Как собрать прошивку <a href="#ota-how-to-make-firmware" id="ota-how-to-make-firmware"></a>

Для того, чтобы собрать прошивку в Arduino IDE - зайдите в меню: Скетч -> Экспорт бинарного файла.

*ВНИМАНИЕ:* ESP8266 сейчас принимает прошивку только через HTTP, а не HTTPS.

[^1]: !ВНИМАНИЕ! Обновить отправленную команду на обновление оборудования нельзя, пока не будет выполнена команда [остановки обновления](#ota-stop-ota)


---

# 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://wiki.blynk.su/blynk-legacy/rezhim-ota.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.
