B Globals reference
Toutes les variables global.* du canvas LuvitRED, qui les écrit, qui les lit, leur valeur par défaut
Identité
| Variable | Type | Default | Set par | Lu par |
cloudgate_device_name | string | cloudgate-terega-01 | startup_init | build_dap_register, build_dap_token, build_dap_refresh, build_iobase_msg, build_health_msg |
start_time | epoch | os.time() au boot | startup_init (avec or = persisté en RAM) | build_health_msg (uptime calc) |
Heartbeat & LoRa
| Variable | Type | Default | Set par | Lu par |
life_counter | integer 0-32000 | 0 | life_tick (++1/s, reset à 32000), life_restore (au boot) | build_health_msg |
lora_uplinks_count | integer | 0 | on_lora_message (++1/uplink) | build_health_msg |
last_lora_ts | epoch | 0 | on_lora_message | build_health_msg (lora_status calc) |
last_lora_deveui | string | — | on_lora_message | (non utilisé pour l'instant) |
last_lora_rssi / last_lora_snr | number | — | on_lora_message | (non utilisé pour l'instant) |
IoBase & DAP
| Variable | Type | Default | Set par | Lu par |
iobase_host | string | 'TODO_IOBASE_HOST' | startup_init (à override par Terega) | build_iobase_msg, build_health_msg |
dap_host | string | 'TODO_DAP_HOST' | startup_init (à override par Terega) | build_dap_register, build_dap_token, build_dap_refresh |
iobase_token | string | '' | handle_dap_resp (sur token/refresh OK), restore_dap_state (au boot) | build_iobase_msg, build_health_msg (Bearer) |
iobase_refresh_token | string | '' | handle_dap_resp, restore_dap_state | build_dap_refresh |
dap_device_code | string | '' | handle_dap_resp (sur register OK), restore_dap_state | build_dap_token |
dap_refreshing | boolean | false | build_dap_token, build_dap_refresh (set true), handle_dap_resp (reset false) | build_dap_token, build_dap_refresh (mutex check) |
dap_token_ts | epoch | 0 | handle_dap_resp | (observabilité only) |
last_iobase_ok_ts | epoch | 0 | handle_iobase_resp (sur 200) | build_health_msg |
IoBase body fields (per spec PDF v1.0)
| Variable | Type | Default | À fournir Terega |
iobase_equipment_model | string | 'asystom_sentinel' | OK |
iobase_site | string | 'TODO_SITE' | OUI (ex: vandellans) |
iobase_datasource | string | 'TODO_DATASOURCE' | OUI (ex: transportation) |
iobase_metrics_default | JSON array string | '[]' | OUI (ex: '["50001m_iot_pit002"]') |
iobase_options | string | '' | NON (champ optionnel spec) |
Asystom Advisor (Basic Auth)
| Variable | Type | Default | Set par | Lu par |
asystom_url | string | 'TODO_ASYSTOM_URL' | startup_init (à override Patrick Duc) | build_asystom_msg, build_asystom_dl_get |
asystom_auth_b64 | string base64 | 'TODO_BASE64_BASIC_AUTH' | startup_init (à override Patrick Duc) | build_asystom_msg, build_asystom_dl_get |
asystom_network | string | 'cloudgate-terega-01' | startup_init | build_asystom_msg (header X-Network) |
asystom_client | string | 'TODO_CLIENT' | startup_init (à override Asystom) | build_asystom_msg (body), build_asystom_dl_get (query param) |
last_asystom_ok_ts | epoch | 0 | handle_asystom_resp (sur 2xx) | build_health_msg |
CG admin / GSM metrics
| Variable | Type | Default | Set par | Lu par |
cg_admin_user / cg_admin_pass | string | 'admin' / hardcoded fallback | startup_init | build_cg_login |
cg_session_cookie | string | nil | handle_cg_login (extrait Set-Cookie) | build_cg_metrics |
gsm_rssi | number (dBm) | nil | handle_cg_metrics (kind=diag_wwan0) | build_health_msg |
gsm_signal_quality | number | nil | handle_cg_metrics | build_health_msg |
gsm_operator | string | nil | handle_cg_metrics | build_health_msg |
gsm_technology | string | nil | handle_cg_metrics | build_health_msg |
gsm_rfband | string | nil | handle_cg_metrics | build_health_msg |
modem_model / modem_manuf / modem_fw | string | nil | handle_cg_metrics | build_health_msg |
wan_connected | boolean | nil | handle_cg_metrics (kind=internet) | handle_cg_metrics (transition false→true → trigger refresh DAP) |
wan_connection_status / wan_iface | number / string | nil | handle_cg_metrics | (observabilité) |
last_metrics_ts | epoch | 0 | handle_cg_metrics | (observabilité) |
cg_metrics_idx | integer | 0 | build_cg_metrics (rotation des endpoints) | build_cg_metrics |
Set globals manuellement (à la console Lua ou via inject)
Méthode rapide pour pivoter vers la prod après test mock — créer un inject + function nodes :
-- Function node "set_prod_globals"
global.iobase_host = 'iobase.terega.fr'
global.dap_host = 'dap.indaba.io'
global.iobase_site = 'vandellans'
global.iobase_datasource = 'transportation'
global.iobase_metrics_default = '["50001m_iot_pit002","50001m_iot_tt002"]'
global.asystom_url = 'https://advisor.asystom.cloud'
global.asystom_auth_b64 = '<base64-from-patrick>'
global.asystom_client = 'terega'
p({tag='PROD_GLOBALS_SET'})
return msg
Wire : inject (manuel) → set_prod_globals. Tirer une fois après deploy. Les valeurs sont en RAM jusqu'au prochain reboot ou redeploy de fn_startup_init qui les ré-applique avec les or.
Persistance des globals
Les globals sont en RAM (sauf ceux explicitement persistés flash :
life_counter,
iobase_token,
iobase_refresh_token,
dap_device_code). Au reboot CG, les autres globals sont reset au default de
fn_startup_init.
Mettre à jour directement le code de
fn_startup_init pour les valeurs prod afin qu'elles survivent un reboot.