# Conexión a Streamlit

En este artículo, recorreremos el proceso de crear un panel usando Streamlit. Para hacerlo más ilustrativo, crearemos un panel que se conecta a la base de datos analítica y supervisa el estado en tiempo real de los vehículos.

{% hint style="info" %}
Esta guía forma parte de la **Consulta de IoT** suite de documentación y cubre específicamente la conexión de Power BI a su almacén de datos. Si aún está decidiendo qué herramienta de BI usar, consulte la [Seleccionar herramientas de BI](https://www.navixy.com/docs/analytics/es/iot-query/connection-setup/selecting-bi-tools) visión general.
{% endhint %}

## Funciones del panel

* Mostrar número total de objetos
* Visualizar estados de movimiento (en movimiento/detenido/estacionado)
* Visualizar estados de conexión (activo/inactivo/desconectado)
* Tabla detallada con el estado actual de todos los vehículos
* Filtrado por tipo de vehículo, grupo, estado de movimiento y estado de conexión
* Actualización automática de datos cada 5 minutos
* Alternar entre temas claro y oscuro

## Requisitos técnicos

* Python 3.8+
* Acceso a Internet para la conexión a la base de datos
* Mínimo 2 GB de RAM

## Instalación y configuración

### 1. Clonar el repositorio

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

### 2. Crear un entorno virtual

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

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

{% hint style="danger" %}
Asegúrese de tener Python 3.8 o superior instalado. Puede comprobar la versión con el comando `python --version`.
{% endhint %}

### 3. Instalar dependencias

Después de activar el entorno virtual, instale todas las bibliotecas necesarias:

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

## Conexión a la base de datos

### 1. Crear un archivo de configuración

Crear un `.env` archivo en el directorio raíz del proyecto:

```
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
```

#### Referencia de parámetros de conexión

<table><thead><tr><th width="188.81817626953125">Parámetro Lakehouse</th><th>Ubicación de la configuración de Streamlit</th><th>Notas</th></tr></thead><tbody><tr><td><strong>Host</strong></td><td><code>DB_HOST</code> en <code>.env</code> archivo</td><td>La dirección del servidor de base de datos proporcionada en su correo electrónico de bienvenida</td></tr><tr><td><strong>Puerto</strong></td><td><code>DB_PORT</code> en <code>.env</code> archivo</td><td>El valor predeterminado es 5432 para PostgreSQL</td></tr><tr><td><strong>Nombre de la base de datos</strong></td><td><code>DB_NAME</code> en <code>.env</code> archivo</td><td>El nombre de base de datos asignado</td></tr><tr><td><strong>Nombre de usuario</strong></td><td><code>DB_USER</code> en <code>.env</code> archivo</td><td>Su nombre de usuario de la base de datos</td></tr><tr><td><strong>Contraseña</strong></td><td><code>DB_PASS</code> en <code>.env</code> archivo</td><td>Su contraseña segura de la base de datos</td></tr><tr><td><strong>Modo SSL</strong></td><td>Cadena de conexión en el código Python</td><td>Establecer en <strong>require</strong> en la cadena de conexión</td></tr><tr><td><strong>Esquema</strong></td><td><code>DB_SCHEMA</code> en <code>.env</code> archivo</td><td>Especifique el esquema (<strong>raw_business_data</strong> o <strong>raw_telematics_data</strong>)</td></tr></tbody></table>

### 2. Obtención de credenciales

Solicite credenciales para conectarse a la base de datos de demostración contactando al administrador.

{% hint style="info" %}
La `.env` el archivo no debe incluirse en el control de versiones (GitHub) para garantizar la seguridad de las credenciales. El `.gitignore` archivo ya está configurado para excluir este archivo.
{% endhint %}

## Ejecución del panel

Después de configurar la conexión a la base de datos, inicie el panel con el comando:

```
streamlit run moving_status_dashboard.py
```

Tras el lanzamiento, verá un mensaje similar a:

```
  Ahora puede ver su aplicación Streamlit en su navegador.

  URL local: http://localhost:8501
  URL de red: http://192.168.1.5:8501
```

Abra la URL indicada en su navegador. El panel estará disponible en <http://localhost:8501> (o en la URL de red si desea abrirlo desde otro dispositivo en la red).

## Desarrollo de componentes personalizados

Si desea modificar el panel o crear nuevos componentes:

### 1. Modificar el panel existente

Streamlit recarga automáticamente la aplicación cuando cambia el código fuente. Simplemente edite el `moving_status_dashboard.py` archivo y guarde sus cambios.

### 2. Agregar nuevas visualizaciones

Para agregar nuevos gráficos y diagramas, utilice bibliotecas:

* Plotly: `import plotly.express as px` o `import plotly.graph_objects as go`
* Visualizaciones integradas de Streamlit: `st.bar_chart()`, `st.line_chart()`, etc.

Ejemplo de agregar un nuevo gráfico:

```python
import plotly.express as px

# Obtener datos de la base de datos
df = ... # su consulta a la base de datos

# Crear gráfico
fig = px.pie(df, values='count', names='status', title='Vehicle Statuses')
st.plotly_chart(fig, use_container_width=True)
```

### 3. Depuración

Para la depuración, use

```python
# Salida en la interfaz de Streamlit
st.write(f"Debug: {your_variable}")

# Salida en la consola
print(f"Console debug: {your_variable}")

# Salida de datos extendida
st.json(data_dict)
st.dataframe(pandas_dataframe)
```

## Solución de problemas

### Problemas de conexión a la base de datos

* **Error de conexión:** Verifique la corrección de las credenciales en el `.env` archivo y la disponibilidad de la base de datos
* **Error de SSL:** Asegúrese de que su IP esté en la lista de permitidos para el acceso a la base de datos
* **Errores de tiempo de espera:** Compruebe la estabilidad de su conexión a Internet y la configuración del firewall

### Problemas de dependencias

**Error al instalar psycopg2-binary:**

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

**Conflictos de dependencias:**

* Cree un nuevo entorno virtual
* Instale las dependencias una por una, comenzando por streamlit

### Otros problemas

Aquí hay algunos trucos que pueden ayudarle a solucionar problemas comunes:

1. Actualizar dependencias: `pip install -r requirements.txt --upgrade`
2. Comprobar compatibilidad de Python: `python --version` (debe ser 3.8+)
3. Al cambiar el código, incluya mensajes de depuración:

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

4. Errores de caché de Streamlit: detenga la aplicación y ejecute con `--clear_cache` indicador:

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

## Próximos pasos

Después de conectar con éxito Power BI a su instancia Private Telematics Lakehouse, le recomendamos que:

* Explore los esquemas de datos disponibles revisando el [Descripción del esquema](https://www.navixy.com/docs/analytics/es/iot-query/schema-overview) para comprender mejor la estructura de los datos y las relaciones.
* Comience con consultas simples centradas en entidades comerciales específicas antes de construir paneles complejos: consulte nuestras [consultas de ejemplo](https://www.navixy.com/docs/analytics/es/example-queries) para referencia.

### **Soporte**

Para preguntas técnicas o solicitudes de acceso a la base de datos de demostración, comuníquese con: <support@squaregps.com>
