# Подключение Streamlit

В этой статье мы пройдём процесс создания информационной панели с использованием Streamlit. Чтобы сделать пример более наглядным, мы создадим панель, которая подключается к аналитической базе данных и отслеживает состояние транспортных средств в режиме реального времени.

{% hint style="info" %}
Это руководство является частью **IoT Query** набора документации и специально охватывает подключение Power BI к вашему хранилищу данных. Если вы все еще решаете, какой инструмент BI использовать, обратитесь к [Выбор инструментов BI](https://www.navixy.com/docs/analytics/ru/iot-query/connection-setup/selecting-bi-tools) обзору.
{% endhint %}

## Функции панели

* Отображение общего количества объектов
* Визуализация статусов движения (в движении/остановлен/на парковке)
* Визуализация статусов подключения (активен/в простое/офлайн)
* Подробная таблица с текущим статусом всех транспортных средств
* Фильтрация по типу транспортного средства, группе, статусу движения и статусу подключения
* Автоматическое обновление данных каждые 5 минут
* Переключение между светлой и тёмной темами

## Технические требования

* Python 3.8+
* Доступ в Интернет для подключения к базе данных
* Минимум 2 ГБ ОЗУ

## Установка и настройка

### 1. Клонируйте репозиторий

```sh
git clone https://github.com/SquareGPS/bi-intergrations.git
```

### 2. Создайте виртуальное окружение

```
# Windows
python -m venv venv
venv\Scripts\activate

# Linux/macOS
python -m venv venv
source venv/bin/activate
```

{% hint style="danger" %}
Убедитесь, что у вас установлен Python 3.8 или выше. Вы можете проверить версию командой `python --version`.
{% endhint %}

### 3. Установите зависимости

После активации виртуального окружения установите все необходимые библиотеки:

```sh
pip install -r requirements.txt
```

## Подключение к базе данных

### 1. Создайте файл конфигурации

Создайте `.env` файл в корневой директории проекта:

```
DB_HOST=your_db_host
DB_NAME=your_db_name
DB_USER=your_db_user
DB_PASS=your_db_password
DB_PORT=5432
DB_SCHEMA=raw_business_data
```

#### Справочник параметров подключения

<table><thead><tr><th width="188.81817626953125">Параметр Lakehouse</th><th>Расположение настроек Streamlit</th><th>Примечания</th></tr></thead><tbody><tr><td><strong>Хост</strong></td><td><code>DB_HOST</code> в <code>.env</code> файле</td><td>Адрес сервера базы данных, указанный в вашем приветственном письме</td></tr><tr><td><strong>Порт</strong></td><td><code>DB_PORT</code> в <code>.env</code> файле</td><td>По умолчанию для PostgreSQL используется порт 5432</td></tr><tr><td><strong>Имя базы данных</strong></td><td><code>DB_NAME</code> в <code>.env</code> файле</td><td>Назначенное вам имя базы данных</td></tr><tr><td><strong>Имя пользователя</strong></td><td><code>DB_USER</code> в <code>.env</code> файле</td><td>Ваше имя пользователя базы данных</td></tr><tr><td><strong>Пароль</strong></td><td><code>DB_PASS</code> в <code>.env</code> файле</td><td>Ваш защищённый пароль базы данных</td></tr><tr><td><strong>Режим SSL</strong></td><td>Строка подключения в Python-коде</td><td>Установите в <strong>require</strong> в строке подключения</td></tr><tr><td><strong>Схема</strong></td><td><code>DB_SCHEMA</code> в <code>.env</code> файле</td><td>Укажите схему (<strong>raw_business_data</strong> или <strong>raw_telematics_data</strong>)</td></tr></tbody></table>

### 2. Получение учетных данных

Запросите учетные данные для подключения к демонстрационной базе данных, связавшись с администратором.

{% hint style="info" %}
Схема `.env` файл не должен попадать в систему контроля версий (GitHub) для обеспечения безопасности учетных данных. `.gitignore` файл уже настроен на исключение этого файла.
{% endhint %}

## Запуск панели

После настройки подключения к базе данных запустите панель командой:

```
streamlit run moving_status_dashboard.py
```

После запуска вы увидите сообщение, похожее на следующее:

```
  Теперь вы можете просмотреть своё приложение Streamlit в браузере.

  Локальный URL: http://localhost:8501
  Сетевой URL: http://192.168.1.5:8501
```

Откройте указанный URL в браузере. Панель будет доступна по адресу <http://localhost:8501> (или по сетевому URL, если вы хотите открыть её с другого устройства в сети).

## Разработка пользовательских компонентов

Если вы хотите изменить панель или создать новые компоненты:

### 1. Изменение существующей панели

Streamlit автоматически перезагружает приложение при изменении исходного кода. Просто отредактируйте файл `moving_status_dashboard.py` и сохраните изменения.

### 2. Добавление новых визуализаций

Чтобы добавить новые диаграммы и графики, используйте библиотеки:

* Plotly: `import plotly.express as px` или `import plotly.graph_objects as go`
* Встроенные визуализации Streamlit: `st.bar_chart()`, `st.line_chart()`, и т.д.

Пример добавления нового графика:

```python
import plotly.express as px

# Получить данные из базы данных
df = ... # ваш запрос к базе данных

# Создать график
fig = px.pie(df, values='count', names='status', title='Статусы транспортных средств')
st.plotly_chart(fig, use_container_width=True)
```

### 3. Отладка

Для отладки используйте

```python
# Вывод в интерфейс Streamlit
st.write(f"Debug: {your_variable}")

# Вывод в консоль
print(f"Console debug: {your_variable}")

# Расширенный вывод данных
st.json(data_dict)
st.dataframe(pandas_dataframe)
```

## Устранение неполадок

### Проблемы с подключением к базе данных

* **Ошибка подключения:** Проверьте корректность учетных данных в `.env` файле и доступность базы данных
* **Ошибка SSL:** Убедитесь, что ваш IP добавлен в allowlist для доступа к базе данных
* **Ошибки таймаута:** Проверьте стабильность интернет-соединения и настройки брандмауэра

### Проблемы с зависимостями

**Ошибка при установке psycopg2-binary:**

* Windows: `pip install pipwin && pipwin install psycopg2-binary`
* Linux: `sudo apt install python3-dev libpq-dev`
* macOS: `brew install postgresql`

**Конфликты зависимостей:**

* Создайте новое виртуальное окружение
* Устанавливайте зависимости по одной, начиная со streamlit

### Другие проблемы

Вот несколько трюков, которые могут помочь исправить распространённые проблемы:

1. Обновление зависимостей: `pip install -r requirements.txt --upgrade`
2. Проверьте совместимость Python: `python --version` (должен быть 3.8+)
3. При изменении кода добавляйте сообщения для отладки:

```
st.write(f"Debug: {your_variable}")
```

4. Ошибки кеша Streamlit: остановите приложение и запустите с `--clear_cache` флагом:

```
streamlit run moving_status_dashboard.py --clear_cache
```

## Дальнейшие шаги

После успешного подключения Power BI к вашей инстанции Private Telematics Lakehouse мы рекомендуем вам:

* Изучите доступные схемы данных, просмотрев [Обзор схемы](https://www.navixy.com/docs/analytics/ru/iot-query/schema-overview) чтобы лучше понять структуру данных и взаимосвязи.
* Начните с простых запросов, ориентированных на конкретные бизнес‑сущности, прежде чем создавать сложные панели — ознакомьтесь с нашим [примером запросов](https://www.navixy.com/docs/analytics/ru/example-queries) в качестве примера.

### **Поддержка**

По техническим вопросам или запросам доступа к демонстрационной базе данных, пожалуйста, свяжитесь: <support@squaregps.com>
