From 122763a4e5cf0e968f3687cd30e5c134a22bbd25 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 23 May 2025 17:43:45 +0200 Subject: [PATCH] update --- html/admin.html | 175 ++++++++++++++++++++++++++++++++++++++++++- sqlite/set_config.py | 9 ++- 2 files changed, 180 insertions(+), 4 deletions(-) diff --git a/html/admin.html b/html/admin.html index 8a769f5..0a19ef7 100755 --- a/html/admin.html +++ b/html/admin.html @@ -248,7 +248,34 @@ - + + + + @@ -706,7 +733,7 @@ function add_sondeEnveaContainer() { $('#advanced_options').append('
Sondes Envea

Plouf

'); } else { // Clear existing content if container exists - $('#sondes_envea_div').html('Sondes Envea'); + $('#sondes_envea_div').html('Sondes Envea '); $('#envea_table').html(''+ ''+ '' + @@ -738,7 +765,7 @@ function add_sondeEnveaContainer() { + id="${sondeId}_coefficient" onchange="updateSondeCoefficientWithConfirm(${sonde.id}, this.value, this)"> `; @@ -936,6 +963,23 @@ function updateSondePort(id, port) { }); } +function updateSondeCoefficientWithConfirm(id, coefficient, inputElement) { + // Store the previous value in case user cancels + const previousValue = inputElement.getAttribute('data-previous-value') || inputElement.defaultValue; + + // Show confirmation dialog + const confirmed = confirm(`Are you sure you want to change the coefficient to ${coefficient}?\n\nThis will affect sensor calibration and data accuracy.`); + + if (confirmed) { + // Store the new value as previous for next time + inputElement.setAttribute('data-previous-value', coefficient); + updateSondeCoefficient(id, coefficient); + } else { + // Revert to previous value + inputElement.value = previousValue; + } +} + function updateSondeCoefficient(id, coefficient) { console.log(`Updating sonde ${id} coefficient to: ${coefficient}`); const toastLiveExample = document.getElementById('liveToast'); @@ -1242,6 +1286,131 @@ function toggleService(serviceName, enable) { }); } +/* + _____ ____ _ _ _ + | ____|_ ____ _____ __ _ | _ \ ___| |_ ___ ___| |_(_) ___ _ __ + | _| | '_ \ \ / / _ \/ _` | | | | |/ _ \ __/ _ \/ __| __| |/ _ \| '_ \ + | |___| | | \ V / __/ (_| | | |_| | __/ || __/ (__| |_| | (_) | | | | + |_____|_| |_|\_/ \___|\__,_| |____/ \___|\__\___|\___|\__|_|\___/|_| |_| + +*/ + +function detectEnveaSondes() { + console.log("Opening Envea detection modal"); + const modal = new bootstrap.Modal(document.getElementById('enveaDetectionModal')); + modal.show(); + + // Reset modal content + document.getElementById('detectionProgress').style.display = 'none'; + document.getElementById('detectionResults').innerHTML = '

Click "Start Detection" to scan for connected Envea devices.

'; + document.getElementById('startDetectionBtn').style.display = 'inline-block'; +} + +function startEnveaDetection() { + console.log("Starting Envea device detection"); + + // Show progress spinner + document.getElementById('detectionProgress').style.display = 'block'; + document.getElementById('detectionResults').innerHTML = ''; + document.getElementById('startDetectionBtn').style.display = 'none'; + + // Test the three ports: ttyAMA3, ttyAMA4, ttyAMA5 + const ports = ['ttyAMA3', 'ttyAMA4', 'ttyAMA5']; + let completedTests = 0; + let results = []; + + ports.forEach(function(port, index) { + $.ajax({ + url: `launcher.php?type=detect_envea_device&port=${port}`, + dataType: 'json', + method: 'GET', + cache: false, + timeout: 10000, // 10 second timeout per port + success: function(response) { + console.log(`Detection result for ${port}:`, response); + + results[index] = { + port: port, + success: response.success, + data: response.data || '', + error: response.error || '', + detected: response.detected || false, + device_info: response.device_info || '' + }; + + completedTests++; + if (completedTests === ports.length) { + displayDetectionResults(results); + } + }, + error: function(xhr, status, error) { + console.error(`Detection failed for ${port}:`, error); + + results[index] = { + port: port, + success: false, + data: '', + error: `Request failed: ${error}`, + detected: false, + device_info: '' + }; + + completedTests++; + if (completedTests === ports.length) { + displayDetectionResults(results); + } + } + }); + }); +} + +function displayDetectionResults(results) { + console.log("Displaying detection results:", results); + + // Hide progress spinner + document.getElementById('detectionProgress').style.display = 'none'; + + let htmlContent = '
Detection Results:
'; + htmlContent += '
'; + htmlContent += '
SoftwareHardware (PCB)
'; + htmlContent += ''; + htmlContent += ''; + + results.forEach(function(result) { + const statusBadge = result.detected ? + 'Device Detected' : + result.success ? + 'No Device' : + 'Error'; + + const deviceInfo = result.device_info || (result.detected ? 'Envea Device' : 'None'); + const rawData = result.data ? result.data.substring(0, 50) + (result.data.length > 50 ? '...' : '') : 'No data'; + + htmlContent += ` + + + + + `; + + if (result.error) { + htmlContent += ``; + } + }); + + htmlContent += '
PortStatusDevice InfoRaw Data
${result.port}${statusBadge}${deviceInfo}${rawData}
Error: ${result.error}
'; + + // Add summary + const detectedCount = results.filter(r => r.detected).length; + htmlContent += `
+ Summary: ${detectedCount} device(s) detected out of ${results.length} ports tested. +
`; + + document.getElementById('detectionResults').innerHTML = htmlContent; + document.getElementById('startDetectionBtn').style.display = 'inline-block'; + document.getElementById('startDetectionBtn').textContent = 'Scan Again'; +} + diff --git a/sqlite/set_config.py b/sqlite/set_config.py index 235e173..0570a3f 100644 --- a/sqlite/set_config.py +++ b/sqlite/set_config.py @@ -71,9 +71,16 @@ if deleted_count > 0: print(f"Deleted {deleted_count} duplicate envea sonde entries") # Insert envea sondes (only if they don't already exist) +# Attention pour le H2S il y a plusieurs sondes +# H2S 1ppm -> coef 4 +# H2S 20ppm -> coef 1 +# H2S 200ppm -> coef 10 + envea_sondes = [ - (False, "ttyAMA4", "h2s", 4), + (False, "ttyAMA4", "h2s", 4), #H2S (False, "ttyAMA3", "no2", 1), + (False, "ttyAMA3", "nh3", 100), + (False, "ttyAMA3", "so2", 4), (False, "ttyAMA2", "o3", 1) ]