# Conexión de Streamlit

En este artículo, recorreremos el proceso de creación de un panel de control 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 del **Consulta IoT** paquete de documentación y, en concreto, cubre la conexión de Power BI a su almacén de datos. Si aún está decidiendo qué herramienta de BI utilizar, consulte la [Selección de herramientas de BI](/docs/analytics/es/iot-query/connection-setup/selecting-bi-tools.md) descripción general.
{% endhint %}

## Características del panel

* Mostrar el número total de objetos
* Visualizar estados de movimiento (en movimiento/detenido/aparcado)
* Visualizar los estados de conexión (activo/inactivo/sin conexión)
* 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. Clone el repositorio

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

### 2. Cree 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 instalada Python 3.8 o superior. Puede comprobar la versión con el comando `python --version`.
{% endhint %}

### 3. Instale las 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. Cree un archivo de configuración

Cree 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 de Lakehouse</th><th>Ubicación de 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 bases 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 a usted</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` 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
```

Después de iniciarlo, verá un mensaje similar a:

```
  Ya puede ver su aplicación de Streamlit en su navegador.

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

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

## Desarrollo de componentes personalizados

Si desea modificar el panel o crear nuevos componentes:

### 1. Modificación del 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 los cambios.

### 2. Añadir nuevas visualizaciones

Para añadir 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 añadir 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 depurar, use

```python
# Salida a la interfaz de Streamlit
st.write(f"Depuración: {your_variable}")

# Salida a la consola
print(f"Depuración de consola: {your_variable}")

# Salida de datos ampliada
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:** Compruebe 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 अनुमति 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í tiene algunos trucos que pueden ayudarle a solucionar problemas comunes:

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

```
st.write(f"Depuración: {your_variable}")
```

4. Errores de caché de Streamlit: detenga la aplicación y ejecútela con la `--clear_cache` marca:

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

## Próximos pasos

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

* Explore los esquemas de datos disponibles revisando la sección [Resumen del esquema](/docs/analytics/es/iot-query/schema-overview.md) para comprender mejor la estructura y las relaciones de los datos.
* Empiece con consultas sencillas centradas en entidades empresariales específicas antes de crear paneles complejos; consulte nuestras [consultas de ejemplo](/docs/analytics/es/example-queries.md) como referencia.

### **Soporte**

Si tiene preguntas técnicas o solicita acceso a la base de datos de demostración, póngase en contacto con: <support@squaregps.com>


---

# 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://navixy.com/docs/analytics/es/iot-query/connection-setup/selecting-bi-tools/connecting-streamlit.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.
