C Marqueurs du journal
Chaque étape du traitement écrit une ligne préfixée par un marqueur en majuscules. Pour diagnostiquer, la bonne méthode est de chercher le premier marqueur attendu qui manque : il désigne l'étape fautive, là où la liste des erreurs ne dit que le symptôme.
Sur la passerelle, le journal est le fichier
/overlay/log/messages. Garder
grep -a par précaution : selon ce que le journal contient à cet instant,
grep peut le prendre pour un binaire et ne répondre que « binary file
matches ». Ce n'est pas systématique, mais -a n'est jamais faux.
grep -a "IOBASE_" /overlay/log/messages | tail -20
ASYSTOM_SKIP_GENERIC — un capteur d'une autre marque ne va pas chez Asystom, c'est
voulu.
IOBASE_SKIP — la configuration de la balise est incomplète ; la passerelle préfère ne
pas envoyer.
DAP_REFRESH_SKIP_FRESH — le jeton est récent et volontairement épargné. C'est le
marqueur qu'on veut voir après un déploiement.
Réception radio
Ce que la passerelle entend des capteurs.
| Marqueur | Niveau | Signification | Émis par |
|---|---|---|---|
LORA_IN | normal | Une trame a été reçue d'un capteur. Le point de départ de tout le traitement. | on_lora_message |
Envoi vers IoBase
Le trajet d'une mesure jusqu'à la plateforme, et ce qui peut l'interrompre.
| Marqueur | Niveau | Signification | Émis par |
|---|---|---|---|
IOBASE_OUT | normal | Une mesure part. Le marqueur indique l'environnement visé, l'adresse et si un jeton est présent. | build_iobase_msg |
IOBASE_RESP | normal | La plateforme a répondu. Le code de réponse dit si elle a accepté. | handle_iobase_resp |
IOBASE_REFUS | problème | La plateforme a refusé le contenu. Le corps de la réponse donne le motif : le plus souvent un champ de configuration de la balise absent ou inconnu d'elle. | handle_iobase_resp |
IOBASE_FAIL | problème | L'envoi n'a pas abouti — plateforme injoignable, nom de domaine qui ne résout plus, réseau coupé. La mesure est perdue : il n'y a pas de file de rejeu. | log_flow_error |
IOBASE_SKIP | à surveiller | Rien n'a été envoyé, faute de configuration complète sur la balise. Le marqueur nomme les champs manquants. C'est volontaire : mieux vaut ne pas envoyer que d'essuyer un refus dont le motif serait à deviner. | build_iobase_msg |
IOBASE_ENV_FALLBACK | à surveiller | La balise vise le second environnement, qui n'est pas configuré. La mesure est repartie sur l'environnement principal plutôt que d'être perdue. | build_iobase_msg |
Envoi vers Asystom
La chaîne d'analyse vibratoire, en parallèle d'IoBase.
| Marqueur | Niveau | Signification | Émis par |
|---|---|---|---|
ASYSTOM_OUT | normal | Une trame part vers la plateforme Asystom. | build_asystom_msg |
ASYSTOM_RESP | normal | Asystom a répondu. | handle_asystom_resp |
ASYSTOM_FAIL | problème | L'envoi a échoué. La trame n'est pas rejouée. | log_flow_error |
ASYSTOM_SKIP_GENERIC | normal | Le capteur est déclaré d'une autre marque : la transmission vers Asystom est volontairement coupée. Ce n'est pas une anomalie — c'est le comportement attendu pour un capteur générique. | build_asystom_msg |
Commandes descendantes
Ce que la passerelle récupère d'Asystom et pousse vers les capteurs.
| Marqueur | Niveau | Signification | Émis par |
|---|---|---|---|
ASYSTOM_DL_POLL | normal | Interrogation périodique d'Asystom, toutes les 60 secondes. | build_asystom_dl_get |
ASYSTOM_DL_EMPTY | normal | Rien à pousser. C'est le cas de tous les jours. | parse_asystom_dl |
ASYSTOM_DL_DISPATCH | normal | Des commandes sont mises en file. Le marqueur donne leur nombre et les équipements concernés. | parse_asystom_dl |
ASYSTOM_DL_SKIP | à surveiller | Des équipements sont annoncés mais aucune charge utile exploitable — à distinguer d'une réponse vide. | parse_asystom_dl |
ASYSTOM_DL_KO | problème | Asystom a répondu autre chose qu'un succès. | parse_asystom_dl |
DL_QUEUED | normal | Un réglage est en attente d'envoi vers un capteur. | cockpit_downlink |
DL_SENT | normal | Le réglage est parti pendant la fenêtre d'écoute du capteur. | on_lora_message |
DL_ACKED | normal | Le capteur a accusé réception. | on_lora_message |
DL_CONFIRMED_OBS | normal | Le réglage est confirmé par observation : le rythme réel des trames correspond à la consigne. L'observation fait foi, pas la promesse. | on_lora_message |
DL_EXPIRED | à surveiller | Le réglage n'a pas été confirmé après plusieurs trames. Il est abandonné. | on_lora_message |
DL_CANCELLED | normal | Le réglage a été annulé depuis le cockpit. | cockpit_downlink |
Authentification IoBase
Le cycle des jetons. Les marqueurs portent l'environnement concerné.
| Marqueur | Niveau | Signification | Émis par |
|---|---|---|---|
DAP_REGISTER_OUT | normal | Demande d'enrôlement envoyée. | build_dap_register |
DAP_REGISTER_OK | normal | Enrôlement accepté. Un administrateur de la plateforme doit maintenant valider l'équipement. | handle_dap_resp |
DAP_REGISTER_KO | problème | L'enrôlement a échoué. | handle_dap_resp |
DAP_REGISTER_SKIP | à surveiller | Enrôlement non tenté : identifiants absents. | build_dap_register |
DAP_REGISTER_COOLDOWN | à surveiller | Enrôlement non rejoué : le précédent est trop récent. Chaque tentative exige une validation humaine côté plateforme. | build_dap_register |
DAP_TOKEN_OUT | normal | Demande de jeton envoyée. | build_dap_token |
DAP_TOKEN_OK | normal | Jeton obtenu. | handle_dap_resp |
DAP_TOKEN_KO | problème | Demande de jeton refusée. Un code 425 signifie que l'équipement attend encore sa validation côté plateforme. | handle_dap_resp |
DAP_TOKEN_SKIP | à surveiller | Demande non tentée : identifiants manquants, ou un renouvellement est déjà en cours. | build_dap_token |
DAP_TOKEN_NO_TOKEN | problème | Réponse acceptée mais sans jeton dedans. | handle_dap_resp |
DAP_REFRESH_OUT | normal | Renouvellement du jeton lancé. | build_dap_refresh |
DAP_REFRESH_OK | normal | Jeton renouvelé et persisté. | handle_dap_resp |
DAP_REFRESH_KO | problème | Le renouvellement a échoué. Une reprise automatique s'arme. | handle_dap_resp |
DAP_REFRESH_FAIL | problème | Échec réseau pendant le renouvellement. | log_flow_error |
DAP_REFRESH_NO_TOKEN | problème | Réponse acceptée mais sans jeton dedans. | handle_dap_resp |
DAP_REFRESH_SKIP | à surveiller | Renouvellement non tenté : identifiants ou jeton de renouvellement absents. Normal sur un environnement non configuré. | build_dap_refresh |
DAP_REFRESH_SKIP_FRESH | normal | Marqueur à connaître avant tout déploiement. Le jeton a moins de six heures : le redémarrage ne le consomme pas. C'est ce qu'on veut voir après un déploiement. | restore_dap_state |
DAP_ROUTE_TOKEN_POLL | normal | Un enrôlement est en cours : le déclencheur part sur la demande de jeton plutôt que sur le renouvellement. | dap_cron_router |
DAP_AUTO_TOKEN_RETRY_ARMED | à surveiller | Après un renouvellement échoué, une nouvelle demande de jeton est armée — elle réutilise le code d'appareil existant, sans intervention externe. | handle_dap_resp |
DAP_AUTO_REENROLL_ESCALATE | problème | La reprise automatique a échoué à son tour. Un nouvel enrôlement est nécessaire, avec validation par un administrateur de la plateforme : compter un délai externe. | handle_dap_resp |
DAP_MUTEX_RESET | normal | Le verrou de renouvellement est libéré. | reset_mutex_fn |
DAP_MUTEX_FORCE_RESET | à surveiller | Un verrou resté bloqué plus de trente secondes a été forcé. Isolé, sans gravité ; répété, cela signale des renouvellements qui n'aboutissent pas. | build_dap_refresh |
DAP_RESTORE_OK | normal | L'état d'authentification a été rechargé au démarrage. Un message par environnement. | restore_dap_state |
DAP_RESTORE_SKIP | normal | Aucun état à recharger — fichier absent ou vide. Normal sur un environnement pas encore enrôlé. | restore_dap_state |
DAP_PERSIST | normal | L'état d'authentification a été écrit sur la passerelle. | persist_dap |
COPY_DAP_STATE | normal | Un état d'authentification a été restauré manuellement. Le marqueur nomme le fichier visé. | set dst filename |
RETRY_ON_401 | à surveiller | Un envoi a été refusé pour authentification : un renouvellement immédiat est déclenché. La trame concernée est perdue, les suivantes passent. | trigger_refresh_on_401 |
WAN_BACK_UP | normal | La liaison est revenue : un renouvellement préventif est déclenché pour ne pas repartir avec un jeton périmé. | handle_cg_metrics |
Message de santé
Le compte rendu que la passerelle envoie à IoBase, toutes les heures et à chaque trame reçue : il porte son temps de fonctionnement, l'état de sa liaison et ses compteurs.
| Marqueur | Niveau | Signification | Émis par |
|---|---|---|---|
HEALTH_SKIP_NO_HOST | normal | Aucune plateforme configurée : l'état de santé n'est pas envoyé. Attendu sur une passerelle neuve, anormal ailleurs. | build_health_msg |
HEALTH_OUT | normal | Un message de santé part. Le marqueur indique ce qui l'a déclenché — l'échéance horaire, ou une trame reçue. | build_health_msg |
HEALTH_RESP | normal | La plateforme a répondu au message de santé. | handle_health_resp |
Cockpit
Ce qui se passe quand quelqu'un utilise l'interface.
| Marqueur | Niveau | Signification | Émis par |
|---|---|---|---|
COCKPIT_AUTH_INIT | normal | Les comptes du cockpit sont initialisés au démarrage. | cockpit_auth_init |
COCKPIT_LOGIN_OK | normal | Connexion réussie. | cockpit_login |
COCKPIT_LOGIN_FAIL | à surveiller | Connexion refusée. Répété, cela mérite un regard. | cockpit_login |
META_WRITE | normal | La configuration des balises a été enregistrée depuis le cockpit. | post_meta |
META_PARSE | normal | La configuration des balises a été relue en mémoire. | parse_meta |
META_SYNC_ACK | normal | La configuration a été synchronisée après un accusé de réception. | persist_meta_on_ack |
GLOBALS_APPLY | normal | Les variables saisies au cockpit ont été appliquées. | apply_globals |
GLOBALS_WRITE | normal | Les variables saisies ont été enregistrées sur la passerelle. | merge_globals |
BALISE_ADD_REQ | normal | Un ajout de capteur est demandé. Il va redéployer le flux et redémarrer toutes les chaînes. | post_balise |
Persistance
Ce que la passerelle écrit pour survivre à un redémarrage.
| Marqueur | Niveau | Signification | Émis par |
|---|---|---|---|
BALISES_PERSIST | normal | L'état des balises a été écrit. | persist_balises |
BALISES_RESTORE_OK | normal | L'état des balises a été rechargé au démarrage. | restore_balises |
BALISES_RESTORE_SKIP | normal | Aucun état de balise à recharger. | restore_balises |
UPLINK_STATS_PERSIST | normal | Les compteurs horaires ont été écrits. | persist_uplink_stats |
UPLINK_STATS_RESTORE_OK | normal | Les compteurs horaires ont été rechargés : les graphiques repartent avec leur historique. | restore_uplink_stats |
UPLINK_STATS_RESTORE_SKIP | normal | Aucun compteur à recharger — les graphiques repartent de zéro et se remplissent au fil des trames. | restore_uplink_stats |
LIFE_RESTORE | normal | Le compteur de vie a été rechargé. | life_restore |
AUDIT_ROTATE | normal | Rotation du journal des trames : le fichier qui vient d'atteindre 15 jours est supprimé. | audit_rotate |
Passerelle et liaison
L'état du matériel et de la connexion cellulaire.
| Marqueur | Niveau | Signification | Émis par |
|---|---|---|---|
STARTUP_INIT | normal | Le flux a démarré et posé sa configuration initiale. | startup_init |
CG_LOGIN_OUT | normal | Connexion à l'interface d'administration de la passerelle, pour lire ses métriques. | build_cg_login |
CG_LOGIN_OK | normal | Connexion réussie. | handle_cg_login |
CG_LOGIN_KO | problème | Connexion refusée : vérifier le mot de passe administrateur. | handle_cg_login |
CG_LOGIN_NOCOOKIE | problème | Connexion acceptée mais sans session utilisable. | handle_cg_login |
CG_METRICS_OUT | normal | Relevé des métriques de la passerelle. | build_cg_metrics |
CG_METRICS_INTERNET | normal | État de la connexion Internet relevé. | handle_cg_metrics |
CG_METRICS_DIAG | normal | Diagnostic de l'interface cellulaire relevé — puissance du signal, technologie, opérateur. | handle_cg_metrics |
CG_METRICS_SIM | normal | État de la carte SIM relevé. | handle_cg_metrics |
CG_METRICS_AUTH | à surveiller | Le relevé a été refusé : la session d'administration a expiré. | handle_cg_metrics |
CG_METRICS_KO | problème | Le relevé a échoué. | handle_cg_metrics |
FLOW_ERROR | problème | Erreur remontée par une requête sortante. Le marqueur nomme la source et le motif — EAI_NONAME désigne un nom de domaine qui ne résout plus, ECONNREFUSED un service qui refuse la connexion. | log_flow_error |
Déclaration d'un capteur
La passerelle réécrit son propre flux pour se déclarer un capteur.
| Marqueur | Niveau | Signification | Émis par |
|---|---|---|---|
SD_LOGIN_OUT | normal | Connexion à l'interface d'administration pour la déclaration. | sd_login_req |
SD_BACKUP | normal | Sauvegarde du flux avant réécriture. | sd_backup |
SD_DEPLOY_OUT | normal | Le flux réécrit est envoyé. Toutes les chaînes vont redémarrer. | sd_post_prep |
SD_DEPLOY_RESP | normal | Réponse au redéploiement. | sd_done |
SD_ABORT | problème | La déclaration a été interrompue. Le flux en service n'est pas modifié. | sd_backup, sd_cookie_getflows |
Interface du cockpit
L'installation des fichiers de l'interface sur la passerelle.
| Marqueur | Niveau | Signification | Émis par |
|---|---|---|---|
WWW_INSTALL | normal | Un fichier de l'interface a été installé. | install app.js, install balises_meta.json, install index.html, install style.css |
WWW_INSTALL_SKIP | normal | Fichier absent du répertoire de dépôt : rien à installer. Normal quand on ne met à jour qu'une partie des fichiers. | install app.js, install balises_meta.json, install index.html, install style.css |
Supervision externe
Les signaux envoyés vers l'extérieur pour qu'on sache, de loin, que la passerelle vit.
| Marqueur | Niveau | Signification | Émis par |
|---|---|---|---|
SUPERVISION_PING_OUT | normal | Signal de vie vers une sonde externe. Le chemin existe mais son déclencheur est débranché : ce marqueur ne doit pas apparaître. | build_supervision_ping |
HEARTBEAT_OUT | normal | Battement périodique. Le chemin existe mais son déclencheur est débranché : ce marqueur ne doit pas apparaître. | build_heartbeat |