Fix GeoMap dashboard v3 - temperature_celsius + Geomap layer config

Fixes:
- Temperature field: temperature_c (wrong) -> temperature_celsius (correct)
- Geomap panel: added explicit location config with lat/lon field mapping
- Added PM2.5 timeseries panel
- Dashboard UID: geomap-test-v1
This commit is contained in:
Eric FELIXINE
2026-05-26 13:52:25 -04:00
parent 7643d88ffb
commit a7716102fd
6 changed files with 272 additions and 118 deletions

52
bemserver/Dockerfile Normal file
View File

@@ -0,0 +1,52 @@
# BEMServer - Building Energy Management Server
# Multi-component Dockerfile: core + api + ui + celery
# Based on Python 3.11 slim with TimescaleDB support
FROM python:3.11-slim AS base
# System dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc \
libpq-dev \
libffi-dev \
curl \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /opt/bemserver
# ---- Stage 1: Install bemserver-core ----
FROM base AS core
COPY bemserver/bemserver-core /tmp/bemserver-core
RUN pip install --no-cache-dir /tmp/bemserver-core
# ---- Stage 2: Install bemserver-api ----
FROM core AS api
COPY bemserver/bemserver-api /tmp/bemserver-api
RUN pip install --no-cache-dir /tmp/bemserver-api
# ---- Stage 3: Install bemserver-ui ----
FROM api AS ui
COPY bemserver/bemserver-ui /tmp/bemserver-ui
RUN pip install --no-cache-dir /tmp/bemserver-ui
# ---- Final stage ----
FROM ui AS final
# Create non-root user
RUN groupadd -r bemserver && useradd -r -g bemserver -d /opt/bemserver -s /sbin/nologin bemserver
# Create config directory
RUN mkdir -p /opt/bemserver/config /opt/bemserver/data \
&& chown -R bemserver:bemserver /opt/bemserver
# Copy entrypoint script
COPY bemserver/entrypoint.sh /opt/bemserver/entrypoint.sh
RUN chmod +x /opt/bemserver/entrypoint.sh
# Healthcheck
HEALTHCHECK --interval=30s --timeout=10s --retries=5 --start_period=60s \
CMD curl -f http://localhost:5000/healthz || exit 1
USER bemserver
ENTRYPOINT ["/opt/bemserver/entrypoint.sh"]

44
bemserver/entrypoint.sh Normal file
View File

@@ -0,0 +1,44 @@
#!/bin/bash
# BEMServer entrypoint - runs the specified component
set -e
COMPONENT=${BEMSERVER_COMPONENT:-api}
CONFIG_DIR="/opt/bemserver/config"
case "$COMPONENT" in
api)
echo "Starting BEMServer API on port 5000..."
exec flask --app bemserver_api.app create --config "${CONFIG_DIR}/api-settings.py"
;;
ui)
echo "Starting BEMServer UI on port 5001..."
exec flask --app bemserver_ui.app create --config "${CONFIG_DIR}/ui-settings.cfg"
;;
celery-worker)
echo "Starting BEMServer Celery worker..."
export BEMSERVER_CORE_SETTINGS_FILE="${CONFIG_DIR}/core-settings.py"
exec celery -A bemserver_core.celery_worker worker --loglevel=info
;;
celery-beat)
echo "Starting BEMServer Celery beat..."
export BEMSERVER_CORE_SETTINGS_FILE="${CONFIG_DIR}/core-settings.py"
exec celery -A bemserver_core.celery_worker beat --loglevel=info
;;
init-db)
echo "Initializing BEMServer database..."
export BEMSERVER_CORE_SETTINGS_FILE="${CONFIG_DIR}/core-settings.py"
bemserver_db_upgrade
echo "Database initialized."
;;
create-admin)
echo "Creating admin user..."
export BEMSERVER_CORE_SETTINGS_FILE="${CONFIG_DIR}/core-settings.py"
bemserver_create_user --name "${BEMSERVER_ADMIN_USER:-admin}" --email "${BEMSERVER_ADMIN_EMAIL:-admin@digitribe.fr}" --admin
echo "Admin user created."
;;
*)
echo "Unknown component: $COMPONENT"
echo "Valid components: api, ui, celery-worker, celery-beat, init-db, create-admin"
exit 1
;;
esac