You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/ru/1-getting-started/lessons/1-introduction-to-iot/virtual-device.md

245 lines
20 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "52b4de6144b2efdced7797a5339d6035",
"translation_date": "2025-08-26T23:36:34+00:00",
"source_file": "1-getting-started/lessons/1-introduction-to-iot/virtual-device.md",
"language_code": "ru"
}
-->
# Виртуальный одноплатный компьютер
Вместо покупки IoT-устройства вместе с датчиками и исполнительными механизмами, вы можете использовать свой компьютер для симуляции IoT-оборудования. Проект [CounterFit](https://github.com/CounterFit-IoT/CounterFit) позволяет запускать приложение локально, которое симулирует IoT-оборудование, такое как датчики и исполнительные механизмы, и получать доступ к этим компонентам из локального Python-кода, написанного так же, как если бы вы работали с Raspberry Pi и физическим оборудованием.
## Настройка
Чтобы использовать CounterFit, необходимо установить бесплатное программное обеспечение на ваш компьютер.
### Задача
Установите необходимое программное обеспечение.
1. Установите Python. Ознакомьтесь с [страницей загрузки Python](https://www.python.org/downloads/) для получения инструкций по установке последней версии Python.
1. Установите Visual Studio Code (VS Code). Это редактор, который вы будете использовать для написания кода виртуального устройства на Python. Ознакомьтесь с [документацией VS Code](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn) для получения инструкций по установке VS Code.
> 💁 Вы можете использовать любой IDE или редактор для Python, если у вас есть предпочтительный инструмент, но инструкции в уроках будут основаны на использовании VS Code.
1. Установите расширение Pylance для VS Code. Это расширение предоставляет поддержку языка Python в VS Code. Ознакомьтесь с [документацией расширения Pylance](https://marketplace.visualstudio.com/items?WT.mc_id=academic-17441-jabenn&itemName=ms-python.vscode-pylance) для получения инструкций по установке этого расширения.
Инструкции по установке и настройке приложения CounterFit будут предоставлены в соответствующем разделе задания, так как оно устанавливается для каждого проекта отдельно.
## Hello World
Традиционно при изучении нового языка программирования или технологии создается приложение "Hello World" — небольшое приложение, которое выводит текст вроде `"Hello World"`, чтобы убедиться, что все инструменты настроены правильно.
Приложение Hello World для виртуального IoT-оборудования поможет убедиться, что Python и Visual Studio Code установлены корректно. Оно также подключится к CounterFit для работы с виртуальными IoT-датчиками и исполнительными механизмами. Оборудование использоваться не будет, приложение просто подключится, чтобы доказать, что все работает.
Это приложение будет находиться в папке `nightlight` и будет использоваться с разным кодом в последующих частях задания для создания приложения ночника.
### Настройка виртуального окружения Python
Одной из мощных функций Python является возможность устанавливать [Pip-пакеты](https://pypi.org) — это пакеты кода, написанные другими разработчиками и опубликованные в Интернете. Вы можете установить Pip-пакет на свой компьютер одной командой, а затем использовать его в своем коде. Вы будете использовать Pip для установки пакета, который позволяет взаимодействовать с CounterFit.
По умолчанию, когда вы устанавливаете пакет, он становится доступным везде на вашем компьютере, что может привести к проблемам с версиями пакетов — например, одно приложение зависит от одной версии пакета, которая перестает работать после установки новой версии для другого приложения. Чтобы избежать этой проблемы, можно использовать [виртуальное окружение Python](https://docs.python.org/3/library/venv.html) — это копия Python в выделенной папке, и установленные через Pip пакеты будут доступны только в этой папке.
> 💁 Если вы используете Raspberry Pi, то вы не настраивали виртуальное окружение на этом устройстве для управления Pip-пакетами, вместо этого вы используете глобальные пакеты, так как пакеты Grove устанавливаются глобально с помощью установочного скрипта.
#### Задача — настройка виртуального окружения Python
Настройте виртуальное окружение Python и установите Pip-пакеты для CounterFit.
1. В терминале или командной строке выполните следующую команду в выбранной вами директории, чтобы создать и перейти в новую папку:
```sh
mkdir nightlight
cd nightlight
```
1. Затем выполните следующую команду, чтобы создать виртуальное окружение в папке `.venv`:
```sh
python3 -m venv .venv
```
> 💁 Необходимо явно вызвать `python3` для создания виртуального окружения, на случай если у вас установлены Python 2 и Python 3 (последняя версия). Если установлен Python 2, то вызов `python` будет использовать Python 2 вместо Python 3.
1. Активируйте виртуальное окружение:
* На Windows:
* Если вы используете Command Prompt или Command Prompt через Windows Terminal, выполните:
```cmd
.venv\Scripts\activate.bat
```
* Если вы используете PowerShell, выполните:
```powershell
.\.venv\Scripts\Activate.ps1
```
> Если вы получите ошибку о том, что выполнение скриптов отключено на этой системе, вам нужно включить выполнение скриптов, установив соответствующую политику выполнения. Для этого запустите PowerShell от имени администратора и выполните следующую команду:
```powershell
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
```
Подтвердите, введя `Y`. Затем перезапустите PowerShell и попробуйте снова.
Вы можете сбросить эту политику выполнения позже, если потребуется. Подробнее об этом можно прочитать на [странице о политиках выполнения на Microsoft Docs](https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_execution_policies?WT.mc_id=academic-17441-jabenn).
* На macOS или Linux выполните:
```cmd
source ./.venv/bin/activate
```
> 💁 Эти команды должны быть выполнены из той же директории, где вы создавали виртуальное окружение. Вам никогда не нужно переходить в папку `.venv`, всегда запускайте команду активации и любые команды для установки пакетов или выполнения кода из папки, где было создано виртуальное окружение.
1. После активации виртуального окружения команда `python` по умолчанию будет использовать версию Python, которая была использована для создания виртуального окружения. Выполните следующую команду, чтобы узнать версию:
```sh
python --version
```
В выводе должно быть указано:
```output
(.venv) ➜ nightlight python --version
Python 3.9.1
```
> 💁 Ваша версия Python может отличаться — главное, чтобы она была 3.6 или выше. Если нет, удалите эту папку, установите более новую версию Python и попробуйте снова.
1. Выполните следующие команды для установки Pip-пакетов для CounterFit. Эти пакеты включают основное приложение CounterFit, а также шимы для оборудования Grove. Эти шимы позволяют писать код так, как если бы вы программировали с использованием физических датчиков и исполнительных механизмов из экосистемы Grove, но подключенных к виртуальным IoT-устройствам.
```sh
pip install CounterFit
pip install counterfit-connection
pip install counterfit-shims-grove
```
Эти Pip-пакеты будут установлены только в виртуальном окружении и не будут доступны вне его.
### Написание кода
После настройки виртуального окружения Python вы можете написать код для приложения "Hello World".
#### Задача — написание кода
Создайте приложение на Python, которое выводит `"Hello World"` в консоль.
1. В терминале или командной строке выполните следующую команду внутри виртуального окружения, чтобы создать файл Python с именем `app.py`:
* На Windows выполните:
```cmd
type nul > app.py
```
* На macOS или Linux выполните:
```cmd
touch app.py
```
1. Откройте текущую папку в VS Code:
```sh
code .
```
> 💁 Если ваш терминал возвращает `command not found` на macOS, это означает, что VS Code не был добавлен в ваш PATH. Вы можете добавить VS Code в PATH, следуя инструкциям в [разделе о запуске из командной строки в документации VS Code](https://code.visualstudio.com/docs/setup/mac?WT.mc_id=academic-17441-jabenn#_launching-from-the-command-line) и затем выполнить команду. VS Code добавляется в PATH по умолчанию на Windows и Linux.
1. Когда VS Code запустится, он активирует виртуальное окружение Python. Выбранное виртуальное окружение будет отображаться в нижней строке состояния:
![VS Code показывает выбранное виртуальное окружение](../../../../../translated_images/vscode-virtual-env.8ba42e04c3d533cf677e16cbe5ed9a3b80f62c6964472dc84b6f940800f0909f.ru.png)
1. Если терминал VS Code уже запущен при старте VS Code, виртуальное окружение в нем не будет активировано. Самый простой способ — закрыть терминал, используя кнопку **Kill the active terminal instance**:
![Кнопка VS Code Kill the active terminal instance](../../../../../translated_images/vscode-kill-terminal.1cc4de7c6f25ee08f423f0ead714e61d069fac1eb2089e97b8a7bbcb3d45fe5e.ru.png)
Вы можете определить, активировано ли виртуальное окружение в терминале, по имени виртуального окружения, которое будет префиксом в приглашении терминала. Например, это может быть:
```sh
(.venv) ➜ nightlight
```
Если в приглашении нет `.venv` в качестве префикса, виртуальное окружение не активировано в терминале.
1. Запустите новый терминал VS Code, выбрав *Terminal -> New Terminal* или нажав `` CTRL+` ``. Новый терминал загрузит виртуальное окружение, и вызов активации появится в терминале. В приглашении также будет имя виртуального окружения (`.venv`):
```output
➜ nightlight source .venv/bin/activate
(.venv) ➜ nightlight
```
1. Откройте файл `app.py` в проводнике VS Code и добавьте следующий код:
```python
print('Hello World!')
```
Функция `print` выводит в консоль все, что передано ей в качестве аргумента.
1. В терминале VS Code выполните следующую команду, чтобы запустить ваше приложение на Python:
```sh
python app.py
```
В выводе будет:
```output
(.venv) ➜ nightlight python app.py
Hello World!
```
😀 Ваше приложение "Hello World" успешно запущено!
### Подключение "оборудования"
На втором этапе "Hello World" вы запустите приложение CounterFit и подключите к нему свой код. Это виртуальный эквивалент подключения IoT-оборудования к плате разработки.
#### Задача — подключение "оборудования"
1. В терминале VS Code запустите приложение CounterFit с помощью следующей команды:
```sh
counterfit
```
Приложение начнет работать и откроется в вашем веб-браузере:
![Приложение Counter Fit запущено в браузере](../../../../../translated_images/counterfit-first-run.433326358b669b31d0e99c3513cb01bfbb13724d162c99cdcc8f51ecf5f9c779.ru.png)
Оно будет отмечено как *Disconnected*, а светодиод в правом верхнем углу будет выключен.
1. Добавьте следующий код в начало файла `app.py`:
```python
from counterfit_connection import CounterFitConnection
CounterFitConnection.init('127.0.0.1', 5000)
```
Этот код импортирует класс `CounterFitConnection` из модуля `counterfit_connection`, который предоставляется пакетом `counterfit-connection`, установленным ранее. Затем он инициализирует подключение к приложению CounterFit, работающему на `127.0.0.1` — IP-адресу, который всегда можно использовать для доступа к вашему локальному компьютеру (часто называемому *localhost*), на порту 5000.
> 💁 Если у вас есть другие приложения, работающие на порту 5000, вы можете изменить это, обновив порт в коде и запустив CounterFit с помощью `CounterFit --port <port_number>`, заменив `<port_number>` на нужный порт.
1. Вам нужно запустить новый терминал VS Code, выбрав кнопку **Create a new integrated terminal**. Это связано с тем, что приложение CounterFit работает в текущем терминале.
![Кнопка VS Code Create a new integrated terminal](../../../../../translated_images/vscode-new-terminal.77db8fc0f9cd31824b0e49a201beafe4ae4616d6c7339992cb2819e789b3eff9.ru.png)
1. В новом терминале выполните файл `app.py`, как и раньше. Статус CounterFit изменится на **Connected**, и светодиод загорится.
![Counter Fit показывает статус Connected](../../../../../translated_images/counterfit-connected.ed30b46d8f79b0921f3fc70be10366e596a89dca3f80c2224a9d9fc98fccf884.ru.png)
> 💁 Вы можете найти этот код в папке [code/virtual-device](../../../../../1-getting-started/lessons/1-introduction-to-iot/code/virtual-device).
😀 Подключение к оборудованию прошло успешно!
---
**Отказ от ответственности**:
Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода.