B Variables globales

Les 80 variables 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.
Ce qui se change sans redéploiement

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.

VariableRôleÉcrite parLue par
iobase_namemodifiable au cockpitNom 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 cockpitAdresse de l'API IoBase. L'URL finale est <hôte>/v1/payloads.startup_initbuild_health_msg, build_iobase_msg, cockpit_globals, cockpit_health, startup_init
health_urlDestination 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 cockpitAdresse du service d'authentification (DAP / Indasuite) qui délivre et renouvelle le jeton.restore_dap_statebuild_dap_refresh, build_dap_register, build_dap_token, cockpit_globals, cockpit_health, handle_dap_resp, startup_init
dap_client_idmodifiable au cockpitIdentifiant de la passerelle auprès de cette destination, obtenu à l'enrôlement.restore_dap_statebuild_dap_refresh, build_dap_register, build_dap_token, cockpit_globals, handle_dap_resp, restore_dap_state
dap_api_keymodifiable au cockpitsecretClé d'API de cette destination. Secret : jamais renvoyée en clair par l'API du cockpit.restore_dap_statebuild_dap_refresh, build_dap_register, build_dap_token, cockpit_globals, handle_dap_resp
iobase_optionsmodifiable au cockpitChamp options ajouté au corps du message IoBase. Vide sauf consigne.—build_iobase_msg, startup_init
iobase_tokenJeton d'accès en cours. Produit par l'enrôlement, jamais saisi.handle_dap_resp, restore_dap_statebuild_health_msg, build_iobase_msg, cockpit_health, handle_dap_resp
iobase_refresh_tokenJeton de renouvellement, à usage unique. Produit par l'enrôlement, jamais saisi.handle_dap_resp, restore_dap_statebuild_dap_refresh, handle_dap_resp
dap_device_codeCode d'appareil issu de l'enrôlement, réutilisable pour un nouveau /token.handle_dap_resp, restore_dap_statebuild_dap_token, handle_dap_resp
dap_token_tsHorodatage du dernier jeton obtenu, base du calcul d'ancienneté.handle_dap_respcockpit_health
dap_enroll_pendingUn enrôlement est en cours : le déclencheur part sur /token plutôt que /refresh.handle_dap_resp, restore_dap_statecockpit_health, handle_dap_resp
dap_needs_reenrollLe 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_respbuild_dap_register, cockpit_health, handle_dap_resp
dap_refreshingVerrou du renouvellement. Le jeton de renouvellement étant à usage unique, deux appels simultanés en perdraient un.log_flow_error, reset_mutex_fn, startup_initcockpit_health, post_balise
dap_last_refreshRésultat du dernier renouvellement, affiché au tableau de bord.handle_dap_resp, log_flow_errorcockpit_health
dap_register_last_tryHorodatage 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_registerbuild_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é.

VariableRôleÉcrite parLue par
iobase_name_bmodifiable au cockpitNom lisible du second environnement.—cockpit_globals, cockpit_health
iobase_host_bmodifiable au cockpitAdresse de l'API IoBase du second environnement. Vide = second environnement inexistant.—build_iobase_msg, cockpit_globals, cockpit_health
dap_host_bmodifiable au cockpitService d'authentification du second environnement.—cockpit_globals
dap_client_id_bmodifiable au cockpitIdentifiant de la passerelle auprès du second environnement.—cockpit_globals
dap_api_key_bmodifiable au cockpitsecretClé d'API du second environnement. Secret.—cockpit_globals
iobase_token_bJeton d'accès du second environnement.—build_iobase_msg, cockpit_health
iobase_refresh_token_bJeton de renouvellement du second environnement, à usage unique.——
dap_refreshing_bVerrou de renouvellement propre au second environnement.——
dap_enroll_pending_bEnrô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.

VariableRôleÉcrite parLue par
asystom_urlmodifiable au cockpitAdresse de la plateforme.—build_asystom_dl_get, build_asystom_msg, cockpit_globals, startup_init
asystom_networkmodifiable au cockpitIdentifiant réseau déclaré auprès d'Asystom.startup_initbuild_asystom_msg, cockpit_globals
asystom_clientmodifiable au cockpitIdentifiant client déclaré auprès d'Asystom.—build_asystom_dl_get, build_asystom_msg, cockpit_globals, startup_init
asystom_auth_b64modifiable au cockpitsecretIdentifiants d'accès encodés. Secret.startup_initbuild_asystom_dl_get, build_asystom_msg, cockpit_globals
asystom_lastRésultat du dernier envoi, affiché au tableau de bord.handle_asystom_resp, log_flow_errorcockpit_health
last_asystom_ok_tsHorodatage du dernier envoi accepté.handle_asystom_respbuild_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.

VariableRôleÉcrite parLue par
balises_metaConfiguration par balise : nom, cadence attendue, site, source de données, modèle, métriques, type et environnement de destination.on_lora_message, parse_metabuild_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_balisescockpit_balises, cockpit_downlink, cockpit_health, on_lora_message, persist_balises, restore_balises
balises_dirtyUne écriture est en attente : évite de réécrire le fichier toutes les deux minutes sans raison.cockpit_downlink, on_lora_message, persist_balisespersist_balises
meta_dirtyIdem pour la configuration des balises.on_lora_message, persist_meta_on_ackpersist_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.

VariableRôleÉcrite parLue par
lora_uplinks_countNombre de trames reçues depuis le démarrage.on_lora_messagebuild_health_msg, cockpit_health, on_lora_message
last_lora_tsHorodatage de la dernière trame, toutes balises confondues.—build_health_msg, cockpit_health, on_lora_message
last_lora_deveuiIdentifiant de la dernière balise entendue.—cockpit_health, on_lora_message
last_lora_rssiPuissance reçue de la dernière trame, en dBm.—on_lora_message
last_lora_snrRapport signal/bruit de la dernière trame, en dB.—on_lora_message
lora_raw_eventsLes vingt derniers événements radio bruts, pour diagnostic.on_lora_messagecockpit_health, on_lora_message
uplink_hourlyCompteurs par heure et par balise : nombre de trames, minimum, maximum et somme des mesures radio. Alimente les graphiques.on_lora_message, restore_uplink_statscockpit_balises, on_lora_message, persist_uplink_stats, restore_uplink_stats
uplink_stats_dirtyUne écriture des statistiques est en attente.on_lora_message, persist_uplink_statspersist_uplink_stats
life_counterCompteur de vie, incrémenté chaque seconde : prouve que le flux tourne.life_restore, life_tickbuild_health_msg, build_heartbeat, life_tick
start_timeHorodatage 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.

VariableRôleÉcrite parLue par
iobase_lastRésultat du dernier envoi vers IoBase, code et motif de refus compris.handle_iobase_resp, log_flow_errorcockpit_health
last_iobase_ok_tsHorodatage du dernier envoi accepté.handle_iobase_respbuild_health_msg, cockpit_health
iobase_skip_countNombre d'envois abandonnés faute de configuration de balise complète.build_iobase_msgbuild_iobase_msg
iobase_last_skipDé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.

VariableRôleÉcrite parLue par
cockpit_usersComptes et rôles, posés au démarrage.cockpit_auth_initcockpit_login
cockpit_sessionsSessions ouvertes, expirées au bout de huit heures.cockpit_auth_initcockpit_auth_init, cockpit_balises, cockpit_downlink, cockpit_globals, cockpit_health, cockpit_login, ct meta, post_balise, post_globals_stash, post_meta, whoami_session
tok_seqCompteur servant à fabriquer un jeton de session distinct à chaque connexion.cockpit_logincockpit_login
globals_override_cacheValeurs saisies au cockpit, telles que persistées. Elles priment sur la copie du fichier d'état d'authentification.apply_globals, merge_globalsmerge_globals, restore_dap_state
pending_globalsValeurs en attente d'écriture, le temps de la validation.merge_globals, post_globals_stashmerge_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.

VariableRôleÉcrite parLue par
cloudgate_device_namemodifiable au cockpitNom de la passerelle, envoyé en en-tête X-CloudGate-Id.restore_dap_state, startup_initbuild_health_msg, build_heartbeat, build_iobase_msg, cockpit_globals, startup_init
cg_admin_userCompte d'administration de la passerelle, utilisé en interne.startup_initbuild_cg_login, sd_login_req, startup_init
cg_admin_passsecretMot de passe correspondant. Secret.startup_initbuild_cg_login, cockpit_globals, sd_login_req
cg_session_cookieSession ouverte sur l'interface d'administration, pour lire les métriques.handle_cg_login, handle_cg_metricsbuild_cg_metrics
gsm_operatorOpérateur mobile courant.handle_cg_metricsbuild_health_msg
gsm_rssiPuissance du signal cellulaire.handle_cg_metricsbuild_health_msg
gsm_signal_qualityQualité du signal cellulaire.handle_cg_metricsbuild_health_msg
gsm_technologyTechnologie d'accès (LTE, 3G…).handle_cg_metricsbuild_health_msg
gsm_rfbandBande de fréquence utilisée.handle_cg_metricsbuild_health_msg
sim_statusÉtat de la carte SIM.handle_cg_metricsbuild_health_msg
modem_modelModèle du modem.handle_cg_metricsbuild_health_msg
modem_manufFabricant du modem.handle_cg_metrics—
modem_fwVersion du micrologiciel du modem.handle_cg_metrics—
wan_ifaceInterface portant la liaison.handle_cg_metrics—
wan_connectedLiaison établie ou non.handle_cg_metricshandle_cg_metrics
wan_connection_statusÉtat détaillé de la liaison.handle_cg_metricshandle_cg_metrics
last_metrics_tsHorodatage du dernier relevé.handle_cg_metrics—
cg_metrics_idxIndex de rotation des relevés.build_cg_metricsbuild_cg_metrics

Mécanique interne

Variables de fonctionnement, sans intérêt en exploitation. Documentées pour qui lit le flux.

VariableRôleÉcrite parLue par
sd_inflightUne déclaration de balise est en cours auprès de la passerelle.post_balise, sd_backup, sd_cookie_getflows, sd_post_preppost_balise
sd_deviceBalise en cours de déclaration.post_balisesd_backup
sd_bodyCorps de la requête de déclaration.sd_backup, sd_post_prepsd_post_prep
sd_cookieSession utilisée pour la déclaration.sd_cookie_getflowssd_post_prep
sd_node_idIdentifiant du node cible de la déclaration.sd_backupsd_post_prep
sd_seqNuméro de séquence de la déclaration.sd_backupsd_backup
sd_last_deveuiDernière balise déclarée.post_balisepost_balise
sd_last_tsHorodatage de la dernière déclaration.post_balisepost_balise