Ce post fait un résumé du déroulement du sprint ODIN+ réalisé en septembre 2025, dans le cadre de l’ADT HoODINg

Introduction

ODIN+ est un framework pour implémenter des algorithmes de contrôle. L’ADT est portée par Olivier Bernard (équipe GREENOWL), en collaboration avec le Laboratoire Océanographique de Villefranche.

Le logiciel est développé depuis 2018, utilise des technologies Erlang, MQTT et Python pour le logiciel controllant le hardware et est piloté par une interface Wev développée en RubyOnRails/React. Il fait suite à ODIN, développé en C++/Corba au milieu des années 2000.

Rappel des objectifs du logiciel:

  • Implémenter des algorithmes sur des systèmes biologiques réels
  • Acquisition et gestion des données en-ligne/hors-ligne, gestion des actionneurs

Il est utilisé (et co-développé) par l’équipe MICROCOSME à l’Inria Grenoble, et est également utilisé par l’Inrae au LBE à Narbonne.

Objectifs de l’ADT arbitrée en 2025:

  1. Support pour l’intégration de nouvelles composantes matériel (en particulier les nouvelles générations d’automates)
  2. Correction des bugs les plus pénalisants
  3. Interactions avec des collègues développeurs INRAE pour interfacer ODIN+ à la base de données INRAE OpenSILEX (futur: Machine Learning).
  4. Échange de connaissances avec les collègues de l’EP Microcosme à Grenoble (futur: gestion des ressources partagées)

Resources

Ce sprint s’est déroulé du 22 septembre 14h au 27 septembre 2025 en mode AMDT. Les personnes impliquées étaient:

  • Nicolas Niclausse
  • Jean-Luc Szpyrka (3 jours)
  • Thibaud Kloczko (2 jours)
  • Côme Le Breton
  • Alexis Gobé
  • Julien Wintz
  • Erwan Demairy

Objectifs du sprint

Le principal objectif du sprint était de traiter le point 2. Le second objectif était de recueilir les besoins pour l’intégration OpenSILEX

Tâches réalisées

Odin-monitor

Support Ubuntu 24

Tous les composants sont maintenant compatibles ubuntu 24 (dernière LTS, en arm64 et x86_64). Le monitor utilise maintenant ruby 3.2, ruby on rails 6.1.7, shakapacker (en remplacement de webpacker, non maintenu), nodejs 18.

Le logiciel est maintenant compatible Raspberry Pi >=4.

Authentification

  • Correction de la case à cocher « Remember me » lors de la connexion pour mémorisation des sessions utilisateur.

Système de logs

  • Refonte complète de la page de logs; elle est maintenant incorporée dans une page System Tools qui permet également d’afficher le contenu des tables SQL et de monitorer le trafic MQTT. De plus la page de log supporte maintenant la pagination et la recherche, avec la possibilité de télécharger le fichier complet.

Page Diagnostic

  • Meilleure gestion des timeouts quand un device ne répond plus, limitant les blocages.

Calibration

  • Correction de l’affichage du combobox lors de la modification d’un calibration (fin du champ trompeur).
  • Impossible désormais d’autoriser plusieurs calibrations pour le même capteur/actuateur.
  • Sauvegarde des calibrations fonctionnelle et fiabilisée.
  • Ajout d’export/import par lot pour la page de calibrations.

Gestion des devices

  • Dans la configuration, blocage de l’ajout de deux devices utilisant le même groupe et label.

Campagnes

  • La liste des utilisateurs se met à jour automatiquement après ajout d’un membre à une campagne.

Synoptique

  • Visualisation possible sous forme de carte avec ajout de marqueurs.
  • Récupération en direct de la dernière valeur en base de données.

Alertes

  • Correction d’un bug d’affichage colonne.
  • Ajout de filtres avancés par type et niveau d’alerte.
  • Recherche possible dans toutes les alertes en base, pas seulement celles affichées.
  • Nouvelle pagination serveur, navigation facilitée.
  • Affichage enrichi des messages JSON.
  • Design responsive amélioré.

Tooltips et graphiques

  • Les tooltips d’actionneurs affichent désormais des textes compréhensibles (fin du “[Object object]”).
  • Limitation du nombre de décimales dans les tooltips de graphiques.
  • Correction du problème de suppression de graphes erronés, plus besoin de rafraîchir.
  • Correction de l’affichage du nom d’algorithme et de l’initialisation ECharts sur le dashboard.
  • Correction de l’affichage des graphes affichant l’historique des données

Configuration

  • Import de ressources partagées corrigés.
  • Ajout de la suppression par lots de l’historique des configurations.
  • La page de configuration permet maintenant de désactiver un device (resp. sensor/ actuator)

Diagnostics et amélioration générale

  • Tous les problèmes identifiés lors du diagnostic sont résolus.
  • Plusieurs petites améliorations issues de propositions diverses et du debug.

Envoi de mails

  • Ajout du support sendmail local dans l’image Docker de développement (pixi.ubuntu24.dockerfile). L’envoi se fait via smtp.inria.fr, nécessitant le lancement manuel du service postfix à la première connexion du conteneur. Testé uniquement sous macOS.

Odin-data-manager

Ajout de la publication des versions Odin+ via MQTT

  • Nouvelle fonctionnalité : la gestion de la version de tous les packages Odin est dorénavant diffusée automatiquement sur un topic MQTT dédié (control/version).
  • Le message publié inclut: la version du data manager, la liste des packages Odin+ installés et un timestamp d’émission.
  • La commande pour obtenir la liste de paquets utilise dpkg-query. L’émission suit le format JSON.

Odin-device-manager

Support du flag active pour les devices / sensors /actuators

  • Si ce flag est positionné à false, le device (resp. sensor/actuator) est ignoré par le device manager

OpenSILEX

Réunion avec l’Inrae et Olivier Bernard. l’Inrae nous a transmit les scripts python utilisés pour alimenter OpenSILEX avec les données ODIN+. Il est convenu d’organiser une prochaine réunion pour préciser les besoins.

Liste complète des merge requests

Un accès au repository du projet (https://gitlab.inria.fr/odin/) est nécessaire pour consulter ces MR

Corrections de bugs

Nouvelles fonctionnalités

Démo

Suite du projet

Releases

  • Release 2.0.0 compatible ubuntu 18 ( et ubuntu 24 sauf pour le monitor) sans les dévelopements du sprint.
  • Release 2.1.x (pour odin-monitor, odin-data-manager et odin-device-manager) compatible ubuntu 24 (x86_64 et arm64)

OpenSILEX

  • À revoir au 1er semestre, après avoir reçu des docs/specs techniques

Gestion matérielle

  • Tester l’interconnection avec des nouveaux matériels acheté au LOV (avec l’aide de Nicolas Chleq ?)