Sous-module Monitoring GeoNature pour le contrôle / validation des photos de papillons de nuit (données EBMS / Indicia).
Arbre métier : site (piège) → visite (event) → photo (observation = 1 image)
Doc import EBMS détaillée : IMPORT_EBMS.md
- GeoNature + module Monitoring déjà installés
- Accès shell au compte applicatif (souvent
geonatureadmin) - PostgreSQL (
psql) - Python 3 +
psycopg2(dans le venv GeoNature ou système) - Un jeu de données GeoNature pour Thalera
- Une liste TaxHub des taxons concernés (pour le widget de correction)
- Compte API EBMS (
rnfrance+ secret) - CSV de correspondance taxons EBMS → Taxref (
ebms_rnfrance_taxons.csv)
# Exemple : dépôt dédié ou clone dans un dossier de protocoles
sudo mkdir -p /home/geonatureadmin/modules_monitoring
cd /home/geonatureadmin/modules_monitoring
git clone <URL_DU_REPO_THALERA> thalera
# ou : git pull si déjà présentCréer le lien symbolique attendu par Monitoring :
mkdir -p ~/geonature/backend/media/monitorings
ln -sfn /home/geonatureadmin/modules_monitoring/thalera \
~/geonature/backend/media/monitorings/thaleraLe nom du dossier lié doit être
thalera(=module_code).
source ~/geonature/backend/venv/bin/activate
geonature monitorings install thalera
# en mise à jour de config JSON déjà installée :
# geonature monitorings update thalera
sudo systemctl restart geonature
deactivateRéférence officielle :
Installation d'un sous-module
Dans GeoNature → Monitorings → Thalera → Éditer :
| Paramètre | Valeur |
|---|---|
| Jeu(x) de données | celui dédié Thalera |
| Liste des observateurs | liste UsersHub |
| Liste des taxons | liste TaxHub (correction new_cd_nom) |
| Afficher dans le menu latéral | oui (active_frontend) |
| Types de sites | type thalera (créé via nomenclature.json à l’install) |
Vérifier aussi en admin / droits :
- permission R (accès) + E (exports) sur le sous-module
- CRUD sites / visites / observations selon les validateurs
Noter l’id_dataset et un id_role (digitiser d’import) pour l’étape 4.
cd /home/geonatureadmin/modules_monitoring/thalera
cp import_ebms.env.example import_ebms.env
chmod 600 import_ebms.env
nano import_ebms.envRenseigner au minimum :
EBMS_USER=rnfrance
EBMS_SECRET='LE_SECRET_AVEC_DOLLAR' # guillemets simples obligatoires si source bash
GEONATURE_DB_DSN=postgresql://USER:PASS@localhost:5432/geonature2db
THALERA_ID_DATASET=<id_dataset>
THALERA_ID_DIGITISER=<id_role>
THALERA_TAXONS_CSV=/chemin/absolu/ebms_rnfrance_taxons.csv
THALERA_STATE_FILE=/home/geonatureadmin/modules_monitoring/thalera/.import_ebms_state.jsonDéposer le CSV taxons sur le serveur et adapter THALERA_TAXONS_CSV.
Installer la dépendance Python si besoin :
source ~/geonature/backend/venv/bin/activate
pip install psycopg2-binary
# ou utiliser /usr/bin/python3 si psycopg2 y est déjàNe pas faire
source import_ebms.envsans guillemets sur le secret : bash coupe au$.
Le scriptimport_ebms.pycharge le fichier lui-même (sans expansion shell).
Les scripts lisent GEONATURE_DB_DSN dans import_ebms.env (étape 4) :
cd /home/geonatureadmin/modules_monitoring/thalera
./for_install/install_trigger.sh
./for_install/install_export.sh
# équivalent psql direct :
# psql "$GEONATURE_DB_DSN" -f for_install/trigger_nb_observations_non_valide.sql
# psql "$GEONATURE_DB_DSN" -f exports/csv/export_csv.sqlCela installe :
- trigger
nb_observations_non_valide(visite + site) - vues d’export :
gn_monitoring.v_export_thalera_standard→ export photosgn_monitoring.v_export_thalera_recap_especes→ récap validation par espèce
cd /home/geonatureadmin/modules_monitoring/thalera
# Contrôle mapping
python3 import_ebms.py --show-mapping
# Test API sans écriture
python3 import_ebms.py --dry-run --limit 20
# Petit import réel
python3 import_ebms.py --limit 50
# Import complet (premier chargement ou reprise)
python3 import_ebms.py --fullVérifier ensuite dans l’UI : sites, visites, photos + médias, compteurs non validés, exports.
# Tous les soirs à 2h30
30 2 * * * cd /home/geonatureadmin/modules_monitoring/thalera && /usr/bin/python3 import_ebms.py >> /var/log/thalera_import_ebms.log 2>&1Créer le fichier de log et droits d’écriture pour l’utilisateur du cron :
sudo touch /var/log/thalera_import_ebms.log
sudo chown geonatureadmin:geonatureadmin /var/log/thalera_import_ebms.logL’état incrémental est dans .import_ebms_state.json (metadata.tracking).
--full reparcours tout en restant idempotent sur id_media_ebms (1 photo = 1 observation).
cd /home/geonatureadmin/modules_monitoring/thalera
git pull
source ~/geonature/backend/venv/bin/activate
geonature monitorings install thalera # ou update selon version Monitoring
sudo systemctl restart geonature
deactivate
./for_install/install_trigger.sh # si le SQL trigger a changé
./for_install/install_export.sh # si les vues d'export ont changécd /home/geonatureadmin/modules_monitoring/thalera
# le script lit GEONATURE_DB_DSN dans import_ebms.env
psql "$GEONATURE_DB_DSN" -f for_install/purge_import_ebms_test.sql
rm -f .import_ebms_state.json- Lien
media/monitorings/thaleraOK -
geonature monitorings install thaleraOK - Module configuré (JDD, listes, frontend actif)
- Permissions validateurs + export (E)
-
import_ebms.enven place (secret entre quotes) - CSV taxons présent
- Trigger installé
- Exports installés (2 boutons CSV visibles)
- Import test (
--limit) OK - Cron planifié + log
- Médias visibles sur une photo dans l’UI
| Symptôme | Cause fréquente |
|---|---|
| HTTP 401 Incorrect secret | Secret tronqué ($…) : remettre des '…' dans .env, unset EBMS_SECRET |
| Sites invisibles | Type de site thalera / cor_site_type / module non actif frontend |
| Photo sans Taxref | Nom absent du CSV → occurrence skippée (voir stderr) |
| Compteur non validé à 0 | Trigger non installé |
| Export 404 | Vue SQL absente → ./for_install/install_export.sh |