Enhance: Implement Phase 4 Device Heartbeat and Room Refresh
- Fully implemented run_device_heartbeat with OS/Network telemetry. - Added refresh_location_config to keep room metadata synchronized. - Finalized background loop initialization in onMount. - Integrated telemetry gathered via the Electron get_device_info bridge.
This commit is contained in:
@@ -122,6 +122,65 @@
|
|||||||
is_syncing = false;
|
is_syncing = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Device Heartbeat & Telemetry
|
||||||
|
* Gathers OS info and updates the device record in the cloud.
|
||||||
|
*/
|
||||||
|
async function run_device_heartbeat() {
|
||||||
|
const device_id = $ae_loc.native_device?.event_device_id || $ae_loc.native_device?.id;
|
||||||
|
if (!device_id) return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const info = await native.get_device_info();
|
||||||
|
if (!info) return;
|
||||||
|
|
||||||
|
const update_payload = {
|
||||||
|
heartbeat: new Date().toISOString(),
|
||||||
|
info_hostname: info.hostname,
|
||||||
|
info_ip_list: info.ip_addresses.join(', '),
|
||||||
|
meta_json: {
|
||||||
|
platform: info.platform,
|
||||||
|
release: info.release,
|
||||||
|
arch: info.arch,
|
||||||
|
cpus: info.cpus,
|
||||||
|
total_mem: Math.round(info.total_mem / (1024 * 1024)) + 'MB',
|
||||||
|
free_mem: Math.round(info.free_mem / (1024 * 1024)) + 'MB'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
await events_func.update_ae_obj__event_device({
|
||||||
|
api_cfg: $ae_api,
|
||||||
|
event_device_id: device_id,
|
||||||
|
data_kv: update_payload,
|
||||||
|
log_lvl: 0
|
||||||
|
});
|
||||||
|
|
||||||
|
if (log_lvl > 1) console.log('Sync: Device heartbeat SUCCESS.');
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Sync: Device heartbeat FAILED:', err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Location Config Refresh
|
||||||
|
* Ensures we have latest room settings.
|
||||||
|
*/
|
||||||
|
async function refresh_location_config() {
|
||||||
|
const location_id = $events_slct.event_location_id;
|
||||||
|
if (!location_id) return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
await events_func.load_ae_obj_id__event_location({
|
||||||
|
api_cfg: $ae_api,
|
||||||
|
event_location_id: location_id,
|
||||||
|
try_cache: true,
|
||||||
|
log_lvl: 0
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Sync: Location refresh FAILED:', err);
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- Monitor Overlay (Hidden by default, triggered by config modal or secret gesture) -->
|
<!-- Monitor Overlay (Hidden by default, triggered by config modal or secret gesture) -->
|
||||||
|
|||||||
Reference in New Issue
Block a user