B Variables globales
global.* du flux LuvitRED : rôle, qui les écrit, qui les lit.
Page vérifiée contre le flux en service le 2026-09-23.Les variables marquées modifiable au cockpit se saisissent
dans l'onglet Globals du cockpit, avec le rôle admin. Elles sont
persistées et rechargées au démarrage. Toutes les autres sont produites par le flux : les
modifier n'aurait pas de sens, ou serait écrasé au redémarrage.
Une valeur saisie prime sur la copie conservée dans le fichier d'état d'authentification. Vider le champ rend la main à ce fichier. Les jetons, eux, ne sont jamais figés par une saisie : les geler empêcherait leur restauration au redémarrage.
Destination des mesures — environnement principal
Où partent les mesures des balises, et comment la passerelle s'y authentifie. Toutes ces valeurs se saisissent dans le cockpit (onglet Globals, rôle admin) : les changer ne demande aucun redéploiement du flux.
| Variable | Rôle | Écrite par | Lue par |
|---|---|---|---|
iobase_namemodifiable au cockpit | Nom lisible de cette destination, affiché dans le choix d'une balise. Sans lui, l'opérateur ne lit qu'une lettre. | — | cockpit_globals, cockpit_health |
iobase_hostmodifiable au cockpit | Adresse de l'API IoBase. L'URL finale est <hôte>/v1/payloads. | startup_init | build_health_msg, build_iobase_msg, cockpit_globals, cockpit_health, startup_init |
health_url | Destination de l'état de santé, si elle diffère de la plateforme des mesures. Vide, l'état part sur <iobase_host>/gateway/health ; sans hôte du tout, il n'est pas envoyé. | — | build_health_msg |
dap_hostmodifiable au cockpit | Adresse du service d'authentification (DAP / Indasuite) qui délivre et renouvelle le jeton. | restore_dap_state | build_dap_refresh, build_dap_register, build_dap_token, cockpit_globals, cockpit_health, handle_dap_resp, startup_init |
dap_client_idmodifiable au cockpit | Identifiant de la passerelle auprès de cette destination, obtenu à l'enrôlement. | restore_dap_state | build_dap_refresh, build_dap_register, build_dap_token, cockpit_globals, handle_dap_resp, restore_dap_state |
dap_api_keymodifiable au cockpitsecret | Clé d'API de cette destination. Secret : jamais renvoyée en clair par l'API du cockpit. | restore_dap_state | build_dap_refresh, build_dap_register, build_dap_token, cockpit_globals, handle_dap_resp |
iobase_optionsmodifiable au cockpit | Champ options ajouté au corps du message IoBase. Vide sauf consigne. | — | build_iobase_msg, startup_init |
iobase_token | Jeton d'accès en cours. Produit par l'enrôlement, jamais saisi. | handle_dap_resp, restore_dap_state | build_health_msg, build_iobase_msg, cockpit_health, handle_dap_resp |
iobase_refresh_token | Jeton de renouvellement, à usage unique. Produit par l'enrôlement, jamais saisi. | handle_dap_resp, restore_dap_state | build_dap_refresh, handle_dap_resp |
dap_device_code | Code d'appareil issu de l'enrôlement, réutilisable pour un nouveau /token. | handle_dap_resp, restore_dap_state | build_dap_token, handle_dap_resp |
dap_token_ts | Horodatage du dernier jeton obtenu, base du calcul d'ancienneté. | handle_dap_resp | cockpit_health |
dap_enroll_pending | Un enrôlement est en cours : le déclencheur part sur /token plutôt que /refresh. | handle_dap_resp, restore_dap_state | cockpit_health, handle_dap_resp |
dap_needs_reenroll | Le renouvellement et le poll ont échoué : un nouvel enrôlement, validé par un administrateur côté plateforme, est nécessaire. | build_dap_register, handle_dap_resp | build_dap_register, cockpit_health, handle_dap_resp |
dap_refreshing | Verrou du renouvellement. Le jeton de renouvellement étant à usage unique, deux appels simultanés en perdraient un. | log_flow_error, reset_mutex_fn, startup_init | cockpit_health, post_balise |
dap_last_refresh | Résultat du dernier renouvellement, affiché au tableau de bord. | handle_dap_resp, log_flow_error | cockpit_health |
dap_register_last_try | Horodatage de la dernière tentative d'enrôlement. Empêche de rejouer un /register en boucle : chacun exige une validation par un administrateur côté plateforme. | build_dap_register | build_dap_register |
Destination des mesures — second environnement
Mêmes clés, suffixées _b. La chaîne reste inerte tant que iobase_host_b est vide : une balise pointée sur ce second environnement repart alors sur le principal, en le signalant par IOBASE_ENV_FALLBACK. Les deux environnements ont leur propre authentification, leur propre verrou et leur propre fichier d'état — rien n'est partagé.
| Variable | Rôle | Écrite par | Lue par |
|---|---|---|---|
iobase_name_bmodifiable au cockpit | Nom lisible du second environnement. | — | cockpit_globals, cockpit_health |
iobase_host_bmodifiable au cockpit | Adresse de l'API IoBase du second environnement. Vide = second environnement inexistant. | — | build_iobase_msg, cockpit_globals, cockpit_health |
dap_host_bmodifiable au cockpit | Service d'authentification du second environnement. | — | cockpit_globals |
dap_client_id_bmodifiable au cockpit | Identifiant de la passerelle auprès du second environnement. | — | cockpit_globals |
dap_api_key_bmodifiable au cockpitsecret | Clé d'API du second environnement. Secret. | — | cockpit_globals |
iobase_token_b | Jeton d'accès du second environnement. | — | build_iobase_msg, cockpit_health |
iobase_refresh_token_b | Jeton de renouvellement du second environnement, à usage unique. | — | — |
dap_refreshing_b | Verrou de renouvellement propre au second environnement. | — | — |
dap_enroll_pending_b | Enrôlement en cours sur le second environnement. | — | — |
Plateforme Asystom
Analyse vibratoire : les trames brutes y sont transmises en parallèle d'IoBase. Les capteurs déclarés generic en sont exclus.
| Variable | Rôle | Écrite par | Lue par |
|---|---|---|---|
asystom_urlmodifiable au cockpit | Adresse de la plateforme. | — | build_asystom_dl_get, build_asystom_msg, cockpit_globals, startup_init |
asystom_networkmodifiable au cockpit | Identifiant réseau déclaré auprès d'Asystom. | startup_init | build_asystom_msg, cockpit_globals |
asystom_clientmodifiable au cockpit | Identifiant client déclaré auprès d'Asystom. | — | build_asystom_dl_get, build_asystom_msg, cockpit_globals, startup_init |
asystom_auth_b64modifiable au cockpitsecret | Identifiants d'accès encodés. Secret. | startup_init | build_asystom_dl_get, build_asystom_msg, cockpit_globals |
asystom_last | Résultat du dernier envoi, affiché au tableau de bord. | handle_asystom_resp, log_flow_error | cockpit_health |
last_asystom_ok_ts | Horodatage du dernier envoi accepté. | handle_asystom_resp | build_health_msg, cockpit_health |
Balises
Configuration et état de chaque balise. La configuration vit dans balises_meta.json, éditable depuis le cockpit ; l'état de service dans balises_state.json, écrit par la passerelle.
| Variable | Rôle | Écrite par | Lue par |
|---|---|---|---|
balises_meta | Configuration par balise : nom, cadence attendue, site, source de données, modèle, métriques, type et environnement de destination. | on_lora_message, parse_meta | build_asystom_msg, build_iobase_msg, cockpit_downlink, on_lora_message, parse_meta, persist_meta_on_ack, post_balise |
balises_state | État de service : dernière trame, compteurs, qualité radio, réglage en cours. | cockpit_downlink, on_lora_message, restore_balises | cockpit_balises, cockpit_downlink, cockpit_health, on_lora_message, persist_balises, restore_balises |
balises_dirty | Une écriture est en attente : évite de réécrire le fichier toutes les deux minutes sans raison. | cockpit_downlink, on_lora_message, persist_balises | persist_balises |
meta_dirty | Idem pour la configuration des balises. | on_lora_message, persist_meta_on_ack | persist_meta_on_ack |
Réception radio et statistiques
Ce que la passerelle a entendu. Les compteurs par heure alimentent les graphiques du tableau de bord : ils sont conservés 24 heures glissantes, dans leur propre fichier.
| Variable | Rôle | Écrite par | Lue par |
|---|---|---|---|
lora_uplinks_count | Nombre de trames reçues depuis le démarrage. | on_lora_message | build_health_msg, cockpit_health, on_lora_message |
last_lora_ts | Horodatage de la dernière trame, toutes balises confondues. | — | build_health_msg, cockpit_health, on_lora_message |
last_lora_deveui | Identifiant de la dernière balise entendue. | — | cockpit_health, on_lora_message |
last_lora_rssi | Puissance reçue de la dernière trame, en dBm. | — | on_lora_message |
last_lora_snr | Rapport signal/bruit de la dernière trame, en dB. | — | on_lora_message |
lora_raw_events | Les vingt derniers événements radio bruts, pour diagnostic. | on_lora_message | cockpit_health, on_lora_message |
uplink_hourly | Compteurs par heure et par balise : nombre de trames, minimum, maximum et somme des mesures radio. Alimente les graphiques. | on_lora_message, restore_uplink_stats | cockpit_balises, on_lora_message, persist_uplink_stats, restore_uplink_stats |
uplink_stats_dirty | Une écriture des statistiques est en attente. | on_lora_message, persist_uplink_stats | persist_uplink_stats |
life_counter | Compteur de vie, incrémenté chaque seconde : prouve que le flux tourne. | life_restore, life_tick | build_health_msg, build_heartbeat, life_tick |
start_time | Horodatage du démarrage du flux. | — | build_health_msg, build_heartbeat, startup_init |
Santé des envois
Ce que deviennent les mesures une fois parties. Une connexion valide ne garantit pas que la plateforme accepte les envois : ces variables distinguent les deux.
| Variable | Rôle | Écrite par | Lue par |
|---|---|---|---|
iobase_last | Résultat du dernier envoi vers IoBase, code et motif de refus compris. | handle_iobase_resp, log_flow_error | cockpit_health |
last_iobase_ok_ts | Horodatage du dernier envoi accepté. | handle_iobase_resp | build_health_msg, cockpit_health |
iobase_skip_count | Nombre d'envois abandonnés faute de configuration de balise complète. | build_iobase_msg | build_iobase_msg |
iobase_last_skip | Détail du dernier abandon : quelle balise, quels champs manquants. | build_iobase_msg | — |
Cockpit embarqué
L'interface web servie par la passerelle elle-même. Deux rôles : operateur en lecture, admin pour l'édition.
| Variable | Rôle | Écrite par | Lue par |
|---|---|---|---|
cockpit_users | Comptes et rôles, posés au démarrage. | cockpit_auth_init | cockpit_login |
cockpit_sessions | Sessions ouvertes, expirées au bout de huit heures. | cockpit_auth_init | cockpit_auth_init, cockpit_balises, cockpit_downlink, cockpit_globals, cockpit_health, cockpit_login, ct meta, post_balise, post_globals_stash, post_meta, whoami_session |
tok_seq | Compteur servant à fabriquer un jeton de session distinct à chaque connexion. | cockpit_login | cockpit_login |
globals_override_cache | Valeurs saisies au cockpit, telles que persistées. Elles priment sur la copie du fichier d'état d'authentification. | apply_globals, merge_globals | merge_globals, restore_dap_state |
pending_globals | Valeurs en attente d'écriture, le temps de la validation. | merge_globals, post_globals_stash | merge_globals |
Passerelle : identité, liaison, modem
Identité de la passerelle et métriques de sa liaison cellulaire, relevées périodiquement sur son interface d'administration. Elles accompagnent le message de santé envoyé à IoBase.
| Variable | Rôle | Écrite par | Lue par |
|---|---|---|---|
cloudgate_device_namemodifiable au cockpit | Nom de la passerelle, envoyé en en-tête X-CloudGate-Id. | restore_dap_state, startup_init | build_health_msg, build_heartbeat, build_iobase_msg, cockpit_globals, startup_init |
cg_admin_user | Compte d'administration de la passerelle, utilisé en interne. | startup_init | build_cg_login, sd_login_req, startup_init |
cg_admin_passsecret | Mot de passe correspondant. Secret. | startup_init | build_cg_login, cockpit_globals, sd_login_req |
cg_session_cookie | Session ouverte sur l'interface d'administration, pour lire les métriques. | handle_cg_login, handle_cg_metrics | build_cg_metrics |
gsm_operator | Opérateur mobile courant. | handle_cg_metrics | build_health_msg |
gsm_rssi | Puissance du signal cellulaire. | handle_cg_metrics | build_health_msg |
gsm_signal_quality | Qualité du signal cellulaire. | handle_cg_metrics | build_health_msg |
gsm_technology | Technologie d'accès (LTE, 3G…). | handle_cg_metrics | build_health_msg |
gsm_rfband | Bande de fréquence utilisée. | handle_cg_metrics | build_health_msg |
sim_status | État de la carte SIM. | handle_cg_metrics | build_health_msg |
modem_model | Modèle du modem. | handle_cg_metrics | build_health_msg |
modem_manuf | Fabricant du modem. | handle_cg_metrics | — |
modem_fw | Version du micrologiciel du modem. | handle_cg_metrics | — |
wan_iface | Interface portant la liaison. | handle_cg_metrics | — |
wan_connected | Liaison établie ou non. | handle_cg_metrics | handle_cg_metrics |
wan_connection_status | État détaillé de la liaison. | handle_cg_metrics | handle_cg_metrics |
last_metrics_ts | Horodatage du dernier relevé. | handle_cg_metrics | — |
cg_metrics_idx | Index de rotation des relevés. | build_cg_metrics | build_cg_metrics |
Mécanique interne
Variables de fonctionnement, sans intérêt en exploitation. Documentées pour qui lit le flux.
| Variable | Rôle | Écrite par | Lue par |
|---|---|---|---|
sd_inflight | Une déclaration de balise est en cours auprès de la passerelle. | post_balise, sd_backup, sd_cookie_getflows, sd_post_prep | post_balise |
sd_device | Balise en cours de déclaration. | post_balise | sd_backup |
sd_body | Corps de la requête de déclaration. | sd_backup, sd_post_prep | sd_post_prep |
sd_cookie | Session utilisée pour la déclaration. | sd_cookie_getflows | sd_post_prep |
sd_node_id | Identifiant du node cible de la déclaration. | sd_backup | sd_post_prep |
sd_seq | Numéro de séquence de la déclaration. | sd_backup | sd_backup |
sd_last_deveui | Dernière balise déclarée. | post_balise | post_balise |
sd_last_ts | Horodatage de la dernière déclaration. | post_balise | post_balise |