v1.6.3: Logs SARA en temps reel — auto-refresh + python3 -u unbuffered

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
PaulVua
2026-04-01 18:36:54 +02:00
parent 9f76e3b2de
commit c062263b24
4 changed files with 48 additions and 2 deletions

View File

@@ -1 +1 @@
1.6.2
1.6.3

View File

@@ -1,5 +1,22 @@
{
"versions": [
{
"version": "1.6.3",
"date": "2026-04-01",
"changes": {
"features": [
"Page logs: bouton Auto-refresh pour suivre les logs SARA en temps reel (polling 3s)"
],
"improvements": [
"Service SARA: ajout flag python3 -u (unbuffered) pour ecriture immediate des logs dans le fichier"
],
"fixes": [],
"compatibility": [
"Necessite re-execution de setup_services.sh pour activer le mode unbuffered (optionnel, pas d'impact si non fait)"
]
},
"notes": "Les logs SARA sont maintenant visibles en temps reel sur la page logs grace au mode unbuffered Python et au rafraichissement automatique. Aucun impact sur les anciennes installations qui ne relancent pas setup_services.sh."
},
{
"version": "1.6.2",
"date": "2026-03-27",

View File

@@ -58,6 +58,9 @@
<div class="card-header">
<span data-i18n="logs.saraLogs">Sara logs</span>
<button type="submit" class="btn btn-secondary btn-sm" id="refresh-master-log" data-i18n="logs.refresh">Refresh</button>
<button type="button" class="btn btn-sm" id="auto-refresh-toggle" onclick="toggleAutoRefresh()">
<span id="auto-refresh-icon"></span> Auto
</button>
<button type="submit" class="btn btn-secondary btn-sm" onclick="clear_loopLogs()" data-i18n="logs.clear">Clear</button>
<span id="script_running"></span>
@@ -274,6 +277,32 @@ function clear_loopLogs(){
});
}
// Auto-refresh for SARA logs
let autoRefreshInterval = null;
const AUTO_REFRESH_MS = 3000;
function toggleAutoRefresh() {
const btn = document.getElementById('auto-refresh-toggle');
const icon = document.getElementById('auto-refresh-icon');
if (autoRefreshInterval) {
clearInterval(autoRefreshInterval);
autoRefreshInterval = null;
icon.textContent = '▶';
btn.classList.remove('btn-success');
btn.classList.add('btn-secondary');
} else {
// Refresh immediately, then every N seconds
displayLogFile('../logs/sara_service.log', document.getElementById('card_loop_content'), true, 1000);
autoRefreshInterval = setInterval(() => {
displayLogFile('../logs/sara_service.log', document.getElementById('card_loop_content'), true, 1000);
}, AUTO_REFRESH_MS);
icon.textContent = '⏸';
btn.classList.remove('btn-secondary');
btn.classList.add('btn-success');
}
}
function getModem_busy_status() {
//console.log("Getting modem busy status");

View File

@@ -82,7 +82,7 @@ After=network.target
[Service]
Type=oneshot
ExecStart=/usr/bin/python3 /var/www/nebuleair_pro_4g/loop/SARA_send_data_v2.py
ExecStart=/usr/bin/python3 -u /var/www/nebuleair_pro_4g/loop/SARA_send_data_v2.py
User=root
WorkingDirectory=/var/www/nebuleair_pro_4g
StandardOutput=append:/var/www/nebuleair_pro_4g/logs/sara_service.log